Pull pv_ops-xen into release branch
此提交包含在:
@@ -112,5 +112,23 @@ clean-files += $(objtree)/include/asm-ia64/nr-irqs.h
|
||||
ASM_PARAVIRT_OBJS = ivt.o entry.o
|
||||
define paravirtualized_native
|
||||
AFLAGS_$(1) += -D__IA64_ASM_PARAVIRTUALIZED_NATIVE
|
||||
AFLAGS_pvchk-sed-$(1) += -D__IA64_ASM_PARAVIRTUALIZED_PVCHECK
|
||||
extra-y += pvchk-$(1)
|
||||
endef
|
||||
$(foreach obj,$(ASM_PARAVIRT_OBJS),$(eval $(call paravirtualized_native,$(obj))))
|
||||
|
||||
#
|
||||
# Checker for paravirtualizations of privileged operations.
|
||||
#
|
||||
quiet_cmd_pv_check_sed = PVCHK $@
|
||||
define cmd_pv_check_sed
|
||||
sed -f $(srctree)/arch/$(SRCARCH)/scripts/pvcheck.sed $< > $@
|
||||
endef
|
||||
|
||||
$(obj)/pvchk-sed-%.s: $(src)/%.S $(srctree)/arch/$(SRCARCH)/scripts/pvcheck.sed FORCE
|
||||
$(call if_changed_dep,as_s_S)
|
||||
$(obj)/pvchk-%.s: $(obj)/pvchk-sed-%.s FORCE
|
||||
$(call if_changed,pv_check_sed)
|
||||
$(obj)/pvchk-%.o: $(obj)/pvchk-%.s FORCE
|
||||
$(call if_changed,as_o_S)
|
||||
.PRECIOUS: $(obj)/pvchk-sed-%.s $(obj)/pvchk-%.s $(obj)/pvchk-%.o
|
||||
|
@@ -52,6 +52,7 @@
|
||||
#include <asm/numa.h>
|
||||
#include <asm/sal.h>
|
||||
#include <asm/cyclone.h>
|
||||
#include <asm/xen/hypervisor.h>
|
||||
|
||||
#define BAD_MADT_ENTRY(entry, end) ( \
|
||||
(!entry) || (unsigned long)entry + sizeof(*entry) > end || \
|
||||
@@ -121,6 +122,8 @@ acpi_get_sysname(void)
|
||||
return "uv";
|
||||
else
|
||||
return "sn2";
|
||||
} else if (xen_pv_domain() && !strcmp(hdr->oem_id, "XEN")) {
|
||||
return "xen";
|
||||
}
|
||||
|
||||
return "dig";
|
||||
@@ -137,6 +140,8 @@ acpi_get_sysname(void)
|
||||
return "uv";
|
||||
# elif defined (CONFIG_IA64_DIG)
|
||||
return "dig";
|
||||
# elif defined (CONFIG_IA64_XEN_GUEST)
|
||||
return "xen";
|
||||
# else
|
||||
# error Unknown platform. Fix acpi.c.
|
||||
# endif
|
||||
|
@@ -16,6 +16,9 @@
|
||||
#include <asm/sigcontext.h>
|
||||
#include <asm/mca.h>
|
||||
|
||||
#include <asm/xen/interface.h>
|
||||
#include <asm/xen/hypervisor.h>
|
||||
|
||||
#include "../kernel/sigframe.h"
|
||||
#include "../kernel/fsyscall_gtod_data.h"
|
||||
|
||||
@@ -286,4 +289,32 @@ void foo(void)
|
||||
offsetof (struct itc_jitter_data_t, itc_jitter));
|
||||
DEFINE(IA64_ITC_LASTCYCLE_OFFSET,
|
||||
offsetof (struct itc_jitter_data_t, itc_lastcycle));
|
||||
|
||||
#ifdef CONFIG_XEN
|
||||
BLANK();
|
||||
|
||||
DEFINE(XEN_NATIVE_ASM, XEN_NATIVE);
|
||||
DEFINE(XEN_PV_DOMAIN_ASM, XEN_PV_DOMAIN);
|
||||
|
||||
#define DEFINE_MAPPED_REG_OFS(sym, field) \
|
||||
DEFINE(sym, (XMAPPEDREGS_OFS + offsetof(struct mapped_regs, field)))
|
||||
|
||||
DEFINE_MAPPED_REG_OFS(XSI_PSR_I_ADDR_OFS, interrupt_mask_addr);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_IPSR_OFS, ipsr);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_IIP_OFS, iip);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_IFS_OFS, ifs);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_PRECOVER_IFS_OFS, precover_ifs);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_ISR_OFS, isr);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_IFA_OFS, ifa);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_IIPA_OFS, iipa);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_IIM_OFS, iim);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_IHA_OFS, iha);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_ITIR_OFS, itir);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_PSR_IC_OFS, interrupt_collection_enabled);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_BANKNUM_OFS, banknum);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_BANK0_R16_OFS, bank0_regs[0]);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_BANK1_R16_OFS, bank1_regs[0]);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_B0NATS_OFS, vbnat);
|
||||
DEFINE_MAPPED_REG_OFS(XSI_B1NATS_OFS, vnat);
|
||||
#endif /* CONFIG_XEN */
|
||||
}
|
||||
|
@@ -580,7 +580,7 @@ ENTRY(dirty_bit)
|
||||
mov b0=r29 // restore b0
|
||||
;;
|
||||
st8 [r17]=r18 // store back updated PTE
|
||||
itc.d r18 // install updated PTE
|
||||
ITC_D(p0, r18, r16) // install updated PTE
|
||||
#endif
|
||||
mov pr=r31,-1 // restore pr
|
||||
RFI
|
||||
@@ -646,7 +646,7 @@ ENTRY(iaccess_bit)
|
||||
mov b0=r29 // restore b0
|
||||
;;
|
||||
st8 [r17]=r18 // store back updated PTE
|
||||
itc.i r18 // install updated PTE
|
||||
ITC_I(p0, r18, r16) // install updated PTE
|
||||
#endif /* !CONFIG_SMP */
|
||||
mov pr=r31,-1
|
||||
RFI
|
||||
@@ -698,7 +698,7 @@ ENTRY(daccess_bit)
|
||||
or r18=_PAGE_A,r18 // set the accessed bit
|
||||
;;
|
||||
st8 [r17]=r18 // store back updated PTE
|
||||
itc.d r18 // install updated PTE
|
||||
ITC_D(p0, r18, r16) // install updated PTE
|
||||
#endif
|
||||
mov b0=r29 // restore b0
|
||||
mov pr=r31,-1
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include <linux/kbuild.h>
|
||||
#include <linux/threads.h>
|
||||
#include <asm/native/irq.h>
|
||||
#include <asm/xen/irq.h>
|
||||
|
||||
void foo(void)
|
||||
{
|
||||
|
@@ -332,7 +332,7 @@ ia64_native_iosapic_write(char __iomem *iosapic, unsigned int reg, u32 val)
|
||||
|
||||
struct pv_iosapic_ops pv_iosapic_ops = {
|
||||
.pcat_compat_init = ia64_native_iosapic_pcat_compat_init,
|
||||
.get_irq_chip = ia64_native_iosapic_get_irq_chip,
|
||||
.__get_irq_chip = ia64_native_iosapic_get_irq_chip,
|
||||
|
||||
.__read = ia64_native_iosapic_read,
|
||||
.__write = ia64_native_iosapic_write,
|
||||
|
@@ -20,7 +20,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __IA64_ASM_PARAVIRTUALIZED_XEN
|
||||
#ifdef __IA64_ASM_PARAVIRTUALIZED_PVCHECK
|
||||
#include <asm/native/pvchk_inst.h>
|
||||
#elif defined(__IA64_ASM_PARAVIRTUALIZED_XEN)
|
||||
#include <asm/xen/inst.h>
|
||||
#include <asm/xen/minstate.h>
|
||||
#else
|
||||
|
@@ -242,7 +242,6 @@ default_idle (void)
|
||||
/* We don't actually take CPU down, just spin without interrupts. */
|
||||
static inline void play_dead(void)
|
||||
{
|
||||
extern void ia64_cpu_local_tick (void);
|
||||
unsigned int this_cpu = smp_processor_id();
|
||||
|
||||
/* Ack it */
|
||||
|
新增問題並參考
封鎖使用者