# HG changeset patch # User cegger # Date 1351163719 -7200 NetBSD development diff -r 609b3467a42f -r 7abb25095de0 config/NetBSD.mk --- a/config/NetBSD.mk +++ b/config/NetBSD.mk @@ -12,6 +12,7 @@ else XEN_LOCK_DIR = $(PREFIX)/var/lib endif -WGET = ftp +WGET = ftp -o +CONFIG_SYSTEM_LIBAIO = n PYTHON=python2.7 diff -r 609b3467a42f -r 7abb25095de0 config/StdGNU.mk --- a/config/StdGNU.mk +++ b/config/StdGNU.mk @@ -22,7 +22,7 @@ MSGMERGE = msgmerge # Allow git to be wrappered in the environment GIT ?= git -WGET ?= wget -c +WGET ?= wget -c -O INSTALL = install INSTALL_DIR = $(INSTALL) -d -m0755 -p diff -r 609b3467a42f -r 7abb25095de0 tools/Makefile --- a/tools/Makefile +++ b/tools/Makefile @@ -190,6 +190,7 @@ subdir-all-qemu-xen-dir: qemu-xen-dir-fi fi; \ cd qemu-xen-dir; \ $$source/configure --enable-xen --target-list=i386-softmmu \ + --prefix=$(PREFIX) \ --source-path=$$source \ --extra-cflags="-I$(XEN_ROOT)/tools/include \ -I$(XEN_ROOT)/tools/libxc \ diff -r 609b3467a42f -r 7abb25095de0 tools/firmware/etherboot/Makefile --- a/tools/firmware/etherboot/Makefile +++ b/tools/firmware/etherboot/Makefile @@ -28,7 +28,7 @@ all: $(ROMS) $(MAKE) -C $D/src bin/$(*F).rom $T: - if ! wget -O _$T $(IPXE_TARBALL_URL); then \ + if ! $(WGET) _$T $(IPXE_TARBALL_URL); then \ $(GIT) clone $(IPXE_GIT_URL) $D.git; \ (cd $D.git && $(GIT) archive --format=tar --prefix=$D/ \ $(IPXE_GIT_TAG) | gzip >../_$T); \ diff -r 609b3467a42f -r 7abb25095de0 tools/include/xen-sys/NetBSD/privcmd.h --- a/tools/include/xen-sys/NetBSD/privcmd.h +++ b/tools/include/xen-sys/NetBSD/privcmd.h @@ -58,6 +58,14 @@ typedef struct privcmd_mmapbatch { unsigned long *arr; /* array of mfns - top nibble set on err */ } privcmd_mmapbatch_t; +typedef struct privcmd_mmapbatch_v2 { + unsigned int num; /* number of pages to populate */ + domid_t dom; /* target domain */ + uint64_t addr; /* virtual address */ + const unsigned long *arr; /* array of mfns */ + int *err; /* array of error codes */ +} privcmd_mmapbatch_v2_t; + typedef struct privcmd_blkmsg { unsigned long op; @@ -94,6 +102,8 @@ typedef struct privcmd_blkmsg */ #define IOCTL_PRIVCMD_INITDOMAIN_EVTCHN \ _IOR('P', 5, int) +#define IOCTL_PRIVCMD_MMAPBATCH_V2 \ + _IOW('P', 6, privcmd_mmapbatch_v2_t) /* Interface to /dev/xenevt */ /* EVTCHN_RESET: Clear and reinit the event buffer. Clear error condition. */ diff -r 609b3467a42f -r 7abb25095de0 tools/libxc/xc_cpuid_x86.c --- a/tools/libxc/xc_cpuid_x86.c +++ b/tools/libxc/xc_cpuid_x86.c @@ -324,7 +324,6 @@ static void xc_cpuid_hvm_policy( bitmaskof(X86_FEATURE_XSAVE)) : 0)); regs[2] |= (bitmaskof(X86_FEATURE_HYPERVISOR) | - bitmaskof(X86_FEATURE_TSC_DEADLINE) | bitmaskof(X86_FEATURE_X2APIC)); regs[3] &= (bitmaskof(X86_FEATURE_FPU) | diff -r 609b3467a42f -r 7abb25095de0 tools/libxl/libxl_cpuid.c --- a/tools/libxl/libxl_cpuid.c +++ b/tools/libxl/libxl_cpuid.c @@ -179,11 +179,14 @@ int libxl_cpuid_parse_config(libxl_cpuid {"nc", 0x80000008, NA, CPUID_REG_ECX, 0, 8}, {"svm_npt", 0x8000000a, NA, CPUID_REG_EDX, 0, 1}, {"svm_lbrv", 0x8000000a, NA, CPUID_REG_EDX, 1, 1}, + {"svm_svml", 0x8000000a, NA, CPUID_REG_EDX, 2, 1}, {"svm_nrips", 0x8000000a, NA, CPUID_REG_EDX, 3, 1}, {"svm_tscrate", 0x8000000a, NA, CPUID_REG_EDX, 4, 1}, {"svm_vmcbclean",0x8000000a, NA, CPUID_REG_EDX, 5, 1}, + {"svm_flushasid",0x8000000a, NA, CPUID_REG_EDX, 6, 1}, {"svm_decode", 0x8000000a, NA, CPUID_REG_EDX, 7, 1}, {"svm_pausefilt",0x8000000a, NA, CPUID_REG_EDX, 10, 1}, + {"svm_pausethld",0x8000000a, NA, CPUID_REG_EDX, 11, 1}, {NULL, 0, NA, CPUID_REG_INV, 0, 0} }; diff -r 609b3467a42f -r 7abb25095de0 xen/arch/x86/hvm/svm/asid.c --- a/xen/arch/x86/hvm/svm/asid.c +++ b/xen/arch/x86/hvm/svm/asid.c @@ -43,10 +43,17 @@ void svm_asid_handle_vmrun(void) { struct vcpu *curr = current; struct vmcb_struct *vmcb = curr->arch.hvm_svm.vmcb; - struct hvm_vcpu_asid *p_asid = - nestedhvm_vcpu_in_guestmode(curr) - ? &vcpu_nestedhvm(curr).nv_n2asid : &curr->arch.hvm_vcpu.n1asid; - bool_t need_flush = hvm_asid_handle_vmenter(p_asid); + struct hvm_vcpu_asid *p_asid; + bool_t vcpu_guestmode; + bool_t need_flush; + + vcpu_guestmode = (nestedhvm_enabled(curr->domain) && + nestedhvm_vcpu_in_guestmode(curr)); + + p_asid = vcpu_guestmode ? + &vcpu_nestedhvm(curr).nv_n2asid : &curr->arch.hvm_vcpu.n1asid; + + need_flush = hvm_asid_handle_vmenter(p_asid); /* ASID 0 indicates that ASIDs are disabled. */ if ( p_asid->asid == 0 ) diff -r 609b3467a42f -r 7abb25095de0 xen/arch/x86/hvm/svm/nestedsvm.c --- a/xen/arch/x86/hvm/svm/nestedsvm.c +++ b/xen/arch/x86/hvm/svm/nestedsvm.c @@ -477,6 +477,10 @@ static int nsvm_vmcb_prepare4vmrun(struc /* TLB control */ n2vmcb->tlb_control = ns_vmcb->tlb_control; + if (!cpu_has_svm_flushasid && n2vmcb->tlb_control > 0x1) { + hvm_asid_flush_vcpu_asid(&nv->nv_n2asid); + n2vmcb->tlb_control = 0; + } /* Virtual Interrupts */ if (!vcleanbit_set(tpr)) { diff -r 609b3467a42f -r 7abb25095de0 xen/arch/x86/hvm/vlapic.c --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -738,6 +738,7 @@ static int vlapic_reg_write(struct vcpu if ( val == 0 ) { destroy_periodic_time(&vlapic->pt); + vlapic->hw.tdt_msr = 0; break; } @@ -1061,7 +1062,7 @@ bool_t is_vlapic_lvtpc_enabled(struct vl !(vlapic_get_reg(vlapic, APIC_LVTPC) & APIC_LVT_MASKED)); } -/* Reset the VLPAIC back to its power-on/reset state. */ +/* Reset the VLAPIC back to its power-on/reset state. */ void vlapic_reset(struct vlapic *vlapic) { struct vcpu *v = vlapic_vcpu(vlapic); @@ -1093,6 +1094,7 @@ void vlapic_reset(struct vlapic *vlapic) vlapic->hw.disabled |= VLAPIC_SW_DISABLED; destroy_periodic_time(&vlapic->pt); + vlapic->hw.tdt_msr = 0; } /* rearm the actimer if needed, after a HVM restore */ diff -r 609b3467a42f -r 7abb25095de0 xen/include/asm-x86/hvm/svm/svm.h --- a/xen/include/asm-x86/hvm/svm/svm.h +++ b/xen/include/asm-x86/hvm/svm/svm.h @@ -86,6 +86,7 @@ extern u32 svm_feature_flags; #define cpu_has_svm_svml cpu_has_svm_feature(SVM_FEATURE_SVML) #define cpu_has_svm_nrips cpu_has_svm_feature(SVM_FEATURE_NRIPS) #define cpu_has_svm_cleanbits cpu_has_svm_feature(SVM_FEATURE_VMCBCLEAN) +#define cpu_has_svm_flushasid cpu_has_svm_feature(SVM_FEATURE_FLUSHBYASID) #define cpu_has_svm_decode cpu_has_svm_feature(SVM_FEATURE_DECODEASSISTS) #define cpu_has_pause_filter cpu_has_svm_feature(SVM_FEATURE_PAUSEFILTER) #define cpu_has_tsc_ratio cpu_has_svm_feature(SVM_FEATURE_TSCRATEMSR)