- bnc#836239 - SLES 11 SP3 Xen security patch does not
automatically update UEFI boot binary xen.spec - Upstream patches from Jan 51d5334e-x86-mm-Ensure-useful-progress-in-alloc_l2_table.patch 51dd155c-adjust-x86-EFI-build.patch 51e63d80-x86-cpuidle-Change-logging-for-unknown-APIC-IDs.patch 51e6540d-x86-don-t-use-destroy_xen_mappings-for-vunmap.patch 51e7963f-x86-time-Update-wallclock-in-shared-info-when-altering-domain-time-offset.patch 51ffd577-fix-off-by-one-mistakes-in-vm_alloc.patch 51ffd5fd-x86-refine-FPU-selector-handling-code-for-XSAVEOPT.patch 520114bb-Nested-VMX-Flush-TLBs-and-Caches-if-paging-mode-changed.patch 520a5504-VMX-add-boot-parameter-to-enable-disable-APIC-v-dynamically.patch 520a24f6-x86-AMD-Fix-nested-svm-crash-due-to-assertion-in-__virt_to_maddr.patch 520a2570-x86-AMD-Inject-GP-instead-of-UD-when-unable-to-map-vmcb.patch 520b4b60-VT-d-protect-against-bogus-information-coming-from-BIOS.patch 520b4bda-x86-MTRR-fix-range-check-in-mtrr_add_page.patch 520cb8b6-x86-time-fix-check-for-negative-time-in-__update_vcpu_system_time.patch 520d417d-xen-Add-stdbool.h-workaround-for-BSD.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=266
This commit is contained in:
parent
eb43d7473d
commit
73291eb01a
@ -0,0 +1,30 @@
|
|||||||
|
# Commit d3a55d7d9bb518efe08143d050deff9f4ee80ec1
|
||||||
|
# Date 2013-07-04 10:33:18 +0200
|
||||||
|
# Author Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86/mm: Ensure useful progress in alloc_l2_table()
|
||||||
|
|
||||||
|
While debugging the issue which turned out to be XSA-58, a printk in this loop
|
||||||
|
showed that it was quite easy to never make useful progress, because of
|
||||||
|
consistently failing the preemption check.
|
||||||
|
|
||||||
|
One single l2 entry is a reasonable amount of work to do, even if an action is
|
||||||
|
pending, and also assures forwards progress across repeat continuations.
|
||||||
|
|
||||||
|
Tweak the continuation criteria to fail on the first iteration of the loop.
|
||||||
|
|
||||||
|
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/mm.c
|
||||||
|
+++ b/xen/arch/x86/mm.c
|
||||||
|
@@ -1278,7 +1278,8 @@ static int alloc_l2_table(struct page_in
|
||||||
|
|
||||||
|
for ( i = page->nr_validated_ptes; i < L2_PAGETABLE_ENTRIES; i++ )
|
||||||
|
{
|
||||||
|
- if ( preemptible && i && hypercall_preempt_check() )
|
||||||
|
+ if ( preemptible && i > page->nr_validated_ptes
|
||||||
|
+ && hypercall_preempt_check() )
|
||||||
|
{
|
||||||
|
page->nr_validated_ptes = i;
|
||||||
|
rc = -EAGAIN;
|
27
51dd155c-adjust-x86-EFI-build.patch
Normal file
27
51dd155c-adjust-x86-EFI-build.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Commit 5656b93d215d7c5160790ea87758625ba1de16b1
|
||||||
|
# Date 2013-07-10 10:03:40 +0200
|
||||||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
adjust x86 EFI build
|
||||||
|
|
||||||
|
While the rule to generate .init.o files from .o ones already correctly
|
||||||
|
included $(extra-y), the setting of the necessary compiler flag didn't
|
||||||
|
have the same. With some yet to be posted patch this resulted in build
|
||||||
|
breakage because of the compiler deciding not to inline a few functions
|
||||||
|
(which then results in .text not being empty as required for these
|
||||||
|
object files).
|
||||||
|
|
||||||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/Rules.mk
|
||||||
|
+++ b/xen/Rules.mk
|
||||||
|
@@ -101,7 +101,7 @@ obj-y := $(patsubst %/,%/built-in.o,$
|
||||||
|
|
||||||
|
subdir-all := $(subdir-y) $(subdir-n)
|
||||||
|
|
||||||
|
-$(filter %.init.o,$(obj-y) $(obj-bin-y)): CFLAGS += -DINIT_SECTIONS_ONLY
|
||||||
|
+$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS += -DINIT_SECTIONS_ONLY
|
||||||
|
|
||||||
|
$(obj-$(coverage)): CFLAGS += -fprofile-arcs -ftest-coverage -DTEST_COVERAGE
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
# Commit 85047d9e4f4afeb73bca1e98f705a2f4f1d51c03
|
||||||
|
# Date 2013-07-17 08:45:20 +0200
|
||||||
|
# Author Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86/cpuidle: Change logging for unknown APIC IDs
|
||||||
|
|
||||||
|
Dom0 uses this hypercall to pass ACPI information to Xen. It is not very
|
||||||
|
uncommon for more cpus to be listed in the ACPI tables than are present on the
|
||||||
|
system, particularly on systems with a common BIOS for a 2 and 4 socket server
|
||||||
|
varients.
|
||||||
|
|
||||||
|
As Dom0 does not control the number of entries in the ACPI tables, and is
|
||||||
|
required to pass everything it finds to Xen, change the logging.
|
||||||
|
|
||||||
|
There is now an single unconditional warning for the first unknown ID, and
|
||||||
|
further warnings if "cpuinfo" is requested by the user on the command line.
|
||||||
|
|
||||||
|
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/acpi/cpu_idle.c
|
||||||
|
+++ b/xen/arch/x86/acpi/cpu_idle.c
|
||||||
|
@@ -1031,7 +1031,10 @@ long set_cx_pminfo(uint32_t cpu, struct
|
||||||
|
cpu_id = get_cpu_id(cpu);
|
||||||
|
if ( cpu_id == -1 )
|
||||||
|
{
|
||||||
|
- printk(XENLOG_ERR "no cpu_id for acpi_id %d\n", cpu);
|
||||||
|
+ static bool_t warn_once = 1;
|
||||||
|
+ if ( warn_once || opt_cpu_info )
|
||||||
|
+ printk(XENLOG_WARNING "No CPU ID for APIC ID %#x\n", cpu);
|
||||||
|
+ warn_once = 0;
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/cpu/common.c
|
||||||
|
+++ b/xen/arch/x86/cpu/common.c
|
||||||
|
@@ -63,7 +63,7 @@ static struct cpu_dev default_cpu = {
|
||||||
|
};
|
||||||
|
static struct cpu_dev * this_cpu = &default_cpu;
|
||||||
|
|
||||||
|
-bool_t __cpuinitdata opt_cpu_info;
|
||||||
|
+bool_t opt_cpu_info;
|
||||||
|
boolean_param("cpuinfo", opt_cpu_info);
|
||||||
|
|
||||||
|
int __cpuinit get_model_name(struct cpuinfo_x86 *c)
|
41
51e6540d-x86-don-t-use-destroy_xen_mappings-for-vunmap.patch
Normal file
41
51e6540d-x86-don-t-use-destroy_xen_mappings-for-vunmap.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Commit 68caac7f6f4687241a24e804a9fca19aa26fe183
|
||||||
|
# Date 2013-07-17 10:21:33 +0200
|
||||||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86: don't use destroy_xen_mappings() for vunmap()
|
||||||
|
|
||||||
|
Its attempt to tear down intermediate page table levels may race with
|
||||||
|
map_pages_to_xen() establishing them, and now that
|
||||||
|
map_domain_page_global() is backed by vmap() this teardown is also
|
||||||
|
wasteful (as it's very likely to need the same address space populated
|
||||||
|
again within foreseeable time).
|
||||||
|
|
||||||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/common/vmap.c
|
||||||
|
+++ b/xen/common/vmap.c
|
||||||
|
@@ -196,9 +196,13 @@ void *vmap(const unsigned long *mfn, uns
|
||||||
|
|
||||||
|
void vunmap(const void *va)
|
||||||
|
{
|
||||||
|
+#ifndef _PAGE_NONE
|
||||||
|
unsigned long addr = (unsigned long)va;
|
||||||
|
|
||||||
|
destroy_xen_mappings(addr, addr + PAGE_SIZE * vm_size(va));
|
||||||
|
+#else /* Avoid tearing down intermediate page tables. */
|
||||||
|
+ map_pages_to_xen((unsigned long)va, 0, vm_size(va), _PAGE_NONE);
|
||||||
|
+#endif
|
||||||
|
vm_free(va);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
--- a/xen/include/asm-x86/page.h
|
||||||
|
+++ b/xen/include/asm-x86/page.h
|
||||||
|
@@ -288,6 +288,7 @@ extern l1_pgentry_t l1_identmap[L1_PAGET
|
||||||
|
void paging_init(void);
|
||||||
|
#endif /* !defined(__ASSEMBLY__) */
|
||||||
|
|
||||||
|
+#define _PAGE_NONE _AC(0x000,U)
|
||||||
|
#define _PAGE_PRESENT _AC(0x001,U)
|
||||||
|
#define _PAGE_RW _AC(0x002,U)
|
||||||
|
#define _PAGE_USER _AC(0x004,U)
|
@ -0,0 +1,24 @@
|
|||||||
|
# Commit 915a59f25c5eddd86bc2cae6389d0ed2ab87e69e
|
||||||
|
# Date 2013-07-18 09:16:15 +0200
|
||||||
|
# Author Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86/time: Update wallclock in shared info when altering domain time offset
|
||||||
|
|
||||||
|
domain_set_time_offset() udpates d->time_offset_seconds, but does not correct
|
||||||
|
the wallclock in the shared info, meaning that it is incorrect until the next
|
||||||
|
XENPF_settime hypercall from dom0 which resynchronises the wallclock for all
|
||||||
|
domains.
|
||||||
|
|
||||||
|
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/time.c
|
||||||
|
+++ b/xen/arch/x86/time.c
|
||||||
|
@@ -931,6 +931,7 @@ void domain_set_time_offset(struct domai
|
||||||
|
d->time_offset_seconds = time_offset_seconds;
|
||||||
|
if ( is_hvm_domain(d) )
|
||||||
|
rtc_update_clock(d);
|
||||||
|
+ update_domain_wallclock_time(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_frequency_change(u64 freq)
|
62
51ffd577-fix-off-by-one-mistakes-in-vm_alloc.patch
Normal file
62
51ffd577-fix-off-by-one-mistakes-in-vm_alloc.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# Commit b0e55bd49725c7c0183eb18670997b9e5930adac
|
||||||
|
# Date 2013-08-05 18:40:23 +0200
|
||||||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
fix off-by-one mistakes in vm_alloc()
|
||||||
|
|
||||||
|
Also add another pair of assertions to catch eventual further cases of
|
||||||
|
incorrect accounting.
|
||||||
|
|
||||||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Reviewed-by Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/common/vmap.c
|
||||||
|
+++ b/xen/common/vmap.c
|
||||||
|
@@ -57,8 +57,8 @@ void *vm_alloc(unsigned int nr, unsigned
|
||||||
|
{
|
||||||
|
struct page_info *pg;
|
||||||
|
|
||||||
|
- ASSERT(!test_bit(vm_low, vm_bitmap));
|
||||||
|
- for ( start = vm_low; ; )
|
||||||
|
+ ASSERT(vm_low == vm_top || !test_bit(vm_low, vm_bitmap));
|
||||||
|
+ for ( start = vm_low; start < vm_top; )
|
||||||
|
{
|
||||||
|
bit = find_next_bit(vm_bitmap, vm_top, start + 1);
|
||||||
|
if ( bit > vm_top )
|
||||||
|
@@ -68,12 +68,18 @@ void *vm_alloc(unsigned int nr, unsigned
|
||||||
|
* corresponding page a guard one.
|
||||||
|
*/
|
||||||
|
start = (start + align) & ~(align - 1);
|
||||||
|
- if ( start + nr <= bit )
|
||||||
|
- break;
|
||||||
|
- start = bit < vm_top ?
|
||||||
|
- find_next_zero_bit(vm_bitmap, vm_top, bit + 1) : bit;
|
||||||
|
- if ( start >= vm_top )
|
||||||
|
- break;
|
||||||
|
+ if ( bit < vm_top )
|
||||||
|
+ {
|
||||||
|
+ if ( start + nr < bit )
|
||||||
|
+ break;
|
||||||
|
+ start = find_next_zero_bit(vm_bitmap, vm_top, bit + 1);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ if ( start + nr <= bit )
|
||||||
|
+ break;
|
||||||
|
+ start = bit;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( start < vm_top )
|
||||||
|
@@ -115,6 +121,10 @@ void *vm_alloc(unsigned int nr, unsigned
|
||||||
|
|
||||||
|
for ( bit = start; bit < start + nr; ++bit )
|
||||||
|
__set_bit(bit, vm_bitmap);
|
||||||
|
+ if ( bit < vm_top )
|
||||||
|
+ ASSERT(!test_bit(bit, vm_bitmap));
|
||||||
|
+ else
|
||||||
|
+ ASSERT(bit == vm_top);
|
||||||
|
if ( start <= vm_low + 2 )
|
||||||
|
vm_low = bit;
|
||||||
|
spin_unlock(&vm_lock);
|
@ -0,0 +1,60 @@
|
|||||||
|
# Commit c58d9f2f4844c2ce8859a8d0f26a54cd058eb51f
|
||||||
|
# Date 2013-08-05 18:42:37 +0200
|
||||||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86: refine FPU selector handling code for XSAVEOPT
|
||||||
|
|
||||||
|
Some extra tweaks are necessary to deal with the situation of XSAVEOPT
|
||||||
|
not writing the FPU portion of the save image (due to it detecting that
|
||||||
|
the register state did not get modified since the last XRSTOR).
|
||||||
|
|
||||||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Tested-by: Ben Guthro <ben.guthro@gmail.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/xstate.c
|
||||||
|
+++ b/xen/arch/x86/xstate.c
|
||||||
|
@@ -71,10 +71,28 @@ void xsave(struct vcpu *v, uint64_t mask
|
||||||
|
|
||||||
|
if ( word_size <= 0 || !is_pv_32bit_vcpu(v) )
|
||||||
|
{
|
||||||
|
+ typeof(ptr->fpu_sse.fip.sel) fcs = ptr->fpu_sse.fip.sel;
|
||||||
|
+ typeof(ptr->fpu_sse.fdp.sel) fds = ptr->fpu_sse.fdp.sel;
|
||||||
|
+
|
||||||
|
if ( cpu_has_xsaveopt )
|
||||||
|
+ {
|
||||||
|
+ /*
|
||||||
|
+ * xsaveopt may not write the FPU portion even when the respective
|
||||||
|
+ * mask bit is set. For the check further down to work we hence
|
||||||
|
+ * need to put the save image back into the state that it was in
|
||||||
|
+ * right after the previous xsaveopt.
|
||||||
|
+ */
|
||||||
|
+ if ( word_size > 0 &&
|
||||||
|
+ (ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] == 4 ||
|
||||||
|
+ ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] == 2) )
|
||||||
|
+ {
|
||||||
|
+ ptr->fpu_sse.fip.sel = 0;
|
||||||
|
+ ptr->fpu_sse.fdp.sel = 0;
|
||||||
|
+ }
|
||||||
|
asm volatile ( ".byte 0x48,0x0f,0xae,0x37"
|
||||||
|
: "=m" (*ptr)
|
||||||
|
: "a" (lmask), "d" (hmask), "D" (ptr) );
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
asm volatile ( ".byte 0x48,0x0f,0xae,0x27"
|
||||||
|
: "=m" (*ptr)
|
||||||
|
@@ -87,7 +105,14 @@ void xsave(struct vcpu *v, uint64_t mask
|
||||||
|
*/
|
||||||
|
(!(ptr->fpu_sse.fsw & 0x0080) &&
|
||||||
|
boot_cpu_data.x86_vendor == X86_VENDOR_AMD) )
|
||||||
|
+ {
|
||||||
|
+ if ( cpu_has_xsaveopt && word_size > 0 )
|
||||||
|
+ {
|
||||||
|
+ ptr->fpu_sse.fip.sel = fcs;
|
||||||
|
+ ptr->fpu_sse.fdp.sel = fds;
|
||||||
|
+ }
|
||||||
|
return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if ( word_size > 0 &&
|
||||||
|
!((ptr->fpu_sse.fip.addr | ptr->fpu_sse.fdp.addr) >> 32) )
|
@ -0,0 +1,23 @@
|
|||||||
|
# Commit e1ab5c77b44b7bd835a2c032fa4963b36545fdb3
|
||||||
|
# Date 2013-08-06 17:22:35 +0200
|
||||||
|
# Author Yang Zhang <yang.z.zhang@Intel.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
Nested VMX: Flush TLBs and Caches if paging mode changed
|
||||||
|
|
||||||
|
According to SDM, if paging mode is changed, then whole TLBs and caches will
|
||||||
|
be flushed. This is missed in nested handle logic. Also this fixed the issue
|
||||||
|
that 64 bits windows cannot boot up on top of L1 kvm.
|
||||||
|
|
||||||
|
Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/mm/paging.c
|
||||||
|
+++ b/xen/arch/x86/mm/paging.c
|
||||||
|
@@ -709,6 +709,7 @@ void paging_update_nestedmode(struct vcp
|
||||||
|
else
|
||||||
|
/* TODO: shadow-on-shadow */
|
||||||
|
v->arch.paging.nestedmode = NULL;
|
||||||
|
+ hvm_asid_flush_vcpu(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void paging_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn,
|
@ -0,0 +1,138 @@
|
|||||||
|
# Commit 85fc517ec3055e8e8d9c9e36e15a81e630237252
|
||||||
|
# Date 2013-08-13 14:22:14 +0200
|
||||||
|
# Author Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86/AMD: Fix nested svm crash due to assertion in __virt_to_maddr
|
||||||
|
|
||||||
|
Fix assertion in __virt_to_maddr when starting nested SVM guest
|
||||||
|
in debug mode. Investigation has shown that svm_vmsave/svm_vmload
|
||||||
|
make use of __pa() with invalid address.
|
||||||
|
|
||||||
|
Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
|
||||||
|
Reviewed-by: Tim Deegan <tim@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/hvm/svm/svm.c
|
||||||
|
+++ b/xen/arch/x86/hvm/svm/svm.c
|
||||||
|
@@ -1792,6 +1792,32 @@ svm_vmexit_do_vmrun(struct cpu_user_regs
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static struct page_info *
|
||||||
|
+nsvm_get_nvmcb_page(struct vcpu *v, uint64_t vmcbaddr)
|
||||||
|
+{
|
||||||
|
+ p2m_type_t p2mt;
|
||||||
|
+ struct page_info *page;
|
||||||
|
+ struct nestedvcpu *nv = &vcpu_nestedhvm(v);
|
||||||
|
+
|
||||||
|
+ if ( !nestedsvm_vmcb_map(v, vmcbaddr) )
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ /* Need to translate L1-GPA to MPA */
|
||||||
|
+ page = get_page_from_gfn(v->domain,
|
||||||
|
+ nv->nv_vvmcxaddr >> PAGE_SHIFT,
|
||||||
|
+ &p2mt, P2M_ALLOC | P2M_UNSHARE);
|
||||||
|
+ if ( !page )
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ if ( !p2m_is_ram(p2mt) || p2m_is_readonly(p2mt) )
|
||||||
|
+ {
|
||||||
|
+ put_page(page);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return page;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
svm_vmexit_do_vmload(struct vmcb_struct *vmcb,
|
||||||
|
struct cpu_user_regs *regs,
|
||||||
|
@@ -1799,7 +1825,7 @@ svm_vmexit_do_vmload(struct vmcb_struct
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
unsigned int inst_len;
|
||||||
|
- struct nestedvcpu *nv = &vcpu_nestedhvm(v);
|
||||||
|
+ struct page_info *page;
|
||||||
|
|
||||||
|
if ( (inst_len = __get_instruction_length(v, INSTR_VMLOAD)) == 0 )
|
||||||
|
return;
|
||||||
|
@@ -1810,13 +1836,18 @@ svm_vmexit_do_vmload(struct vmcb_struct
|
||||||
|
goto inject;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!nestedsvm_vmcb_map(v, vmcbaddr)) {
|
||||||
|
- gdprintk(XENLOG_ERR, "VMLOAD: mapping vmcb failed, injecting #UD\n");
|
||||||
|
+ page = nsvm_get_nvmcb_page(v, vmcbaddr);
|
||||||
|
+ if ( !page )
|
||||||
|
+ {
|
||||||
|
+ gdprintk(XENLOG_ERR,
|
||||||
|
+ "VMLOAD: mapping failed, injecting #UD\n");
|
||||||
|
ret = TRAP_invalid_op;
|
||||||
|
goto inject;
|
||||||
|
}
|
||||||
|
|
||||||
|
- svm_vmload(nv->nv_vvmcx);
|
||||||
|
+ svm_vmload_pa(page_to_maddr(page));
|
||||||
|
+ put_page(page);
|
||||||
|
+
|
||||||
|
/* State in L1 VMCB is stale now */
|
||||||
|
v->arch.hvm_svm.vmcb_in_sync = 0;
|
||||||
|
|
||||||
|
@@ -1835,7 +1866,7 @@ svm_vmexit_do_vmsave(struct vmcb_struct
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
unsigned int inst_len;
|
||||||
|
- struct nestedvcpu *nv = &vcpu_nestedhvm(v);
|
||||||
|
+ struct page_info *page;
|
||||||
|
|
||||||
|
if ( (inst_len = __get_instruction_length(v, INSTR_VMSAVE)) == 0 )
|
||||||
|
return;
|
||||||
|
@@ -1846,14 +1877,17 @@ svm_vmexit_do_vmsave(struct vmcb_struct
|
||||||
|
goto inject;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!nestedsvm_vmcb_map(v, vmcbaddr)) {
|
||||||
|
- gdprintk(XENLOG_ERR, "VMSAVE: mapping vmcb failed, injecting #UD\n");
|
||||||
|
+ page = nsvm_get_nvmcb_page(v, vmcbaddr);
|
||||||
|
+ if ( !page )
|
||||||
|
+ {
|
||||||
|
+ gdprintk(XENLOG_ERR,
|
||||||
|
+ "VMSAVE: mapping vmcb failed, injecting #UD\n");
|
||||||
|
ret = TRAP_invalid_op;
|
||||||
|
goto inject;
|
||||||
|
}
|
||||||
|
|
||||||
|
- svm_vmsave(nv->nv_vvmcx);
|
||||||
|
-
|
||||||
|
+ svm_vmsave_pa(page_to_maddr(page));
|
||||||
|
+ put_page(page);
|
||||||
|
__update_guest_eip(regs, inst_len);
|
||||||
|
return;
|
||||||
|
|
||||||
|
--- a/xen/include/asm-x86/hvm/svm/svm.h
|
||||||
|
+++ b/xen/include/asm-x86/hvm/svm/svm.h
|
||||||
|
@@ -41,18 +41,21 @@
|
||||||
|
#define SVM_REG_R14 (14)
|
||||||
|
#define SVM_REG_R15 (15)
|
||||||
|
|
||||||
|
-static inline void svm_vmload(void *vmcb)
|
||||||
|
+#define svm_vmload(x) svm_vmload_pa(__pa(x))
|
||||||
|
+#define svm_vmsave(x) svm_vmsave_pa(__pa(x))
|
||||||
|
+
|
||||||
|
+static inline void svm_vmload_pa(paddr_t vmcb)
|
||||||
|
{
|
||||||
|
asm volatile (
|
||||||
|
".byte 0x0f,0x01,0xda" /* vmload */
|
||||||
|
- : : "a" (__pa(vmcb)) : "memory" );
|
||||||
|
+ : : "a" (vmcb) : "memory" );
|
||||||
|
}
|
||||||
|
|
||||||
|
-static inline void svm_vmsave(void *vmcb)
|
||||||
|
+static inline void svm_vmsave_pa(paddr_t vmcb)
|
||||||
|
{
|
||||||
|
asm volatile (
|
||||||
|
".byte 0x0f,0x01,0xdb" /* vmsave */
|
||||||
|
- : : "a" (__pa(vmcb)) : "memory" );
|
||||||
|
+ : : "a" (vmcb) : "memory" );
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void svm_invlpga(unsigned long vaddr, uint32_t asid)
|
@ -0,0 +1,91 @@
|
|||||||
|
# Commit 910daaf5aaa837624099c0fc5c373bea7202ff43
|
||||||
|
# Date 2013-08-13 14:24:16 +0200
|
||||||
|
# Author Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86/AMD: Inject #GP instead of #UD when unable to map vmcb
|
||||||
|
|
||||||
|
According to AMD Programmer's Manual vol2, vmrun, vmsave and vmload
|
||||||
|
should inject #GP instead of #UD when unable to access memory
|
||||||
|
location for vmcb. Also, the code should make sure that L1 guest
|
||||||
|
EFER.SVME is not zero. Otherwise, #UD should be injected.
|
||||||
|
|
||||||
|
Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
|
||||||
|
Reviewed-by: Tim Deegan <tim@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/hvm/svm/svm.c
|
||||||
|
+++ b/xen/arch/x86/hvm/svm/svm.c
|
||||||
|
@@ -1776,15 +1776,17 @@ static void
|
||||||
|
svm_vmexit_do_vmrun(struct cpu_user_regs *regs,
|
||||||
|
struct vcpu *v, uint64_t vmcbaddr)
|
||||||
|
{
|
||||||
|
- if (!nestedhvm_enabled(v->domain)) {
|
||||||
|
+ if ( !nsvm_efer_svm_enabled(v) )
|
||||||
|
+ {
|
||||||
|
gdprintk(XENLOG_ERR, "VMRUN: nestedhvm disabled, injecting #UD\n");
|
||||||
|
hvm_inject_hw_exception(TRAP_invalid_op, HVM_DELIVER_NO_ERROR_CODE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!nestedsvm_vmcb_map(v, vmcbaddr)) {
|
||||||
|
- gdprintk(XENLOG_ERR, "VMRUN: mapping vmcb failed, injecting #UD\n");
|
||||||
|
- hvm_inject_hw_exception(TRAP_invalid_op, HVM_DELIVER_NO_ERROR_CODE);
|
||||||
|
+ if ( !nestedsvm_vmcb_map(v, vmcbaddr) )
|
||||||
|
+ {
|
||||||
|
+ gdprintk(XENLOG_ERR, "VMRUN: mapping vmcb failed, injecting #GP\n");
|
||||||
|
+ hvm_inject_hw_exception(TRAP_gp_fault, HVM_DELIVER_NO_ERROR_CODE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1830,7 +1832,8 @@ svm_vmexit_do_vmload(struct vmcb_struct
|
||||||
|
if ( (inst_len = __get_instruction_length(v, INSTR_VMLOAD)) == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
- if (!nestedhvm_enabled(v->domain)) {
|
||||||
|
+ if ( !nsvm_efer_svm_enabled(v) )
|
||||||
|
+ {
|
||||||
|
gdprintk(XENLOG_ERR, "VMLOAD: nestedhvm disabled, injecting #UD\n");
|
||||||
|
ret = TRAP_invalid_op;
|
||||||
|
goto inject;
|
||||||
|
@@ -1840,8 +1843,8 @@ svm_vmexit_do_vmload(struct vmcb_struct
|
||||||
|
if ( !page )
|
||||||
|
{
|
||||||
|
gdprintk(XENLOG_ERR,
|
||||||
|
- "VMLOAD: mapping failed, injecting #UD\n");
|
||||||
|
- ret = TRAP_invalid_op;
|
||||||
|
+ "VMLOAD: mapping failed, injecting #GP\n");
|
||||||
|
+ ret = TRAP_gp_fault;
|
||||||
|
goto inject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1871,7 +1874,8 @@ svm_vmexit_do_vmsave(struct vmcb_struct
|
||||||
|
if ( (inst_len = __get_instruction_length(v, INSTR_VMSAVE)) == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
- if (!nestedhvm_enabled(v->domain)) {
|
||||||
|
+ if ( !nsvm_efer_svm_enabled(v) )
|
||||||
|
+ {
|
||||||
|
gdprintk(XENLOG_ERR, "VMSAVE: nestedhvm disabled, injecting #UD\n");
|
||||||
|
ret = TRAP_invalid_op;
|
||||||
|
goto inject;
|
||||||
|
@@ -1881,8 +1885,8 @@ svm_vmexit_do_vmsave(struct vmcb_struct
|
||||||
|
if ( !page )
|
||||||
|
{
|
||||||
|
gdprintk(XENLOG_ERR,
|
||||||
|
- "VMSAVE: mapping vmcb failed, injecting #UD\n");
|
||||||
|
- ret = TRAP_invalid_op;
|
||||||
|
+ "VMSAVE: mapping vmcb failed, injecting #GP\n");
|
||||||
|
+ ret = TRAP_gp_fault;
|
||||||
|
goto inject;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- a/xen/include/asm-x86/hvm/svm/nestedsvm.h
|
||||||
|
+++ b/xen/include/asm-x86/hvm/svm/nestedsvm.h
|
||||||
|
@@ -94,7 +94,7 @@ struct nestedsvm {
|
||||||
|
#define vcpu_nestedsvm(v) (vcpu_nestedhvm(v).u.nsvm)
|
||||||
|
|
||||||
|
/* True when l1 guest enabled SVM in EFER */
|
||||||
|
-#define hvm_svm_enabled(v) \
|
||||||
|
+#define nsvm_efer_svm_enabled(v) \
|
||||||
|
(!!((v)->arch.hvm_vcpu.guest_efer & EFER_SVME))
|
||||||
|
|
||||||
|
int nestedsvm_vmcb_map(struct vcpu *v, uint64_t vmcbaddr);
|
@ -0,0 +1,38 @@
|
|||||||
|
# Commit 0c006b41a283a0a569c863d44abde5aa5750ae01
|
||||||
|
# Date 2013-08-13 17:47:16 +0200
|
||||||
|
# Author Yang Zhang <yang.z.zhang@Intel.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
VMX: add boot parameter to enable/disable APIC-v dynamically
|
||||||
|
|
||||||
|
Add a boot parameter to enable/disable the APIC-v dynamically. APIC-v is
|
||||||
|
enabled by default. User can use apicv=0 to disable it.
|
||||||
|
|
||||||
|
Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/hvm/vmx/vmcs.c
|
||||||
|
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
|
||||||
|
@@ -46,6 +46,9 @@ boolean_param("vpid", opt_vpid_enabled);
|
||||||
|
static bool_t __read_mostly opt_unrestricted_guest_enabled = 1;
|
||||||
|
boolean_param("unrestricted_guest", opt_unrestricted_guest_enabled);
|
||||||
|
|
||||||
|
+static bool_t __read_mostly opt_apicv_enabled = 1;
|
||||||
|
+boolean_param("apicv", opt_apicv_enabled);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* These two parameters are used to config the controls for Pause-Loop Exiting:
|
||||||
|
* ple_gap: upper bound on the amount of time between two successive
|
||||||
|
@@ -196,12 +199,12 @@ static int vmx_init_vmcs_config(void)
|
||||||
|
* "APIC Register Virtualization" and "Virtual Interrupt Delivery"
|
||||||
|
* can be set only when "use TPR shadow" is set
|
||||||
|
*/
|
||||||
|
- if ( _vmx_cpu_based_exec_control & CPU_BASED_TPR_SHADOW )
|
||||||
|
+ if ( (_vmx_cpu_based_exec_control & CPU_BASED_TPR_SHADOW) &&
|
||||||
|
+ opt_apicv_enabled )
|
||||||
|
opt |= SECONDARY_EXEC_APIC_REGISTER_VIRT |
|
||||||
|
SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY |
|
||||||
|
SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE;
|
||||||
|
|
||||||
|
-
|
||||||
|
_vmx_secondary_exec_control = adjust_vmx_controls(
|
||||||
|
"Secondary Exec Control", min, opt,
|
||||||
|
MSR_IA32_VMX_PROCBASED_CTLS2, &mismatch);
|
@ -0,0 +1,41 @@
|
|||||||
|
# Commit e8e8b030ecf916fea19639f0b6a446c1c9dbe174
|
||||||
|
# Date 2013-08-14 11:18:24 +0200
|
||||||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
VT-d: protect against bogus information coming from BIOS
|
||||||
|
|
||||||
|
Add checks similar to those done by Linux: The DRHD address must not
|
||||||
|
be all zeros or all ones (Linux only checks for zero), and capabilities
|
||||||
|
as well as extended capabilities must not be all ones.
|
||||||
|
|
||||||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Reviewed-by: Ben Guthro <benjamin.guthro@citrix.com>
|
||||||
|
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
Tested-by: Ben Guthro <benjamin.guthro@citrix.com>
|
||||||
|
Acked by: Yang Zhang <yang.z.zhang@intel.com>
|
||||||
|
Acked-by: Xiantao Zhang <xiantao.zhang@intel.com>
|
||||||
|
|
||||||
|
--- a/xen/drivers/passthrough/vtd/dmar.c
|
||||||
|
+++ b/xen/drivers/passthrough/vtd/dmar.c
|
||||||
|
@@ -447,6 +447,9 @@ acpi_parse_one_drhd(struct acpi_dmar_hea
|
||||||
|
if ( (ret = acpi_dmar_check_length(header, sizeof(*drhd))) != 0 )
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
+ if ( !drhd->address || !(drhd->address + 1) )
|
||||||
|
+ return -ENODEV;
|
||||||
|
+
|
||||||
|
dmaru = xzalloc(struct acpi_drhd_unit);
|
||||||
|
if ( !dmaru )
|
||||||
|
return -ENOMEM;
|
||||||
|
--- a/xen/drivers/passthrough/vtd/iommu.c
|
||||||
|
+++ b/xen/drivers/passthrough/vtd/iommu.c
|
||||||
|
@@ -1159,6 +1159,9 @@ int __init iommu_alloc(struct acpi_drhd_
|
||||||
|
dprintk(VTDPREFIX,
|
||||||
|
"cap = %"PRIx64" ecap = %"PRIx64"\n", iommu->cap, iommu->ecap);
|
||||||
|
}
|
||||||
|
+ if ( !(iommu->cap + 1) || !(iommu->ecap + 1) )
|
||||||
|
+ return -ENODEV;
|
||||||
|
+
|
||||||
|
if ( cap_fault_reg_offset(iommu->cap) +
|
||||||
|
cap_num_fault_regs(iommu->cap) * PRIMARY_FAULT_REG_LEN >= PAGE_SIZE ||
|
||||||
|
ecap_iotlb_offset(iommu->ecap) >= PAGE_SIZE )
|
24
520b4bda-x86-MTRR-fix-range-check-in-mtrr_add_page.patch
Normal file
24
520b4bda-x86-MTRR-fix-range-check-in-mtrr_add_page.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Commit f67af6d5803b6a015e30cb490a94f9547cb0437c
|
||||||
|
# Date 2013-08-14 11:20:26 +0200
|
||||||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86/MTRR: fix range check in mtrr_add_page()
|
||||||
|
|
||||||
|
Extracted from Yinghai Lu's Linux commit d5c78673 ("x86: Fix /proc/mtrr
|
||||||
|
with base/size more than 44bits").
|
||||||
|
|
||||||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/cpu/mtrr/main.c
|
||||||
|
+++ b/xen/arch/x86/cpu/mtrr/main.c
|
||||||
|
@@ -340,7 +340,7 @@ int mtrr_add_page(unsigned long base, un
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (base & size_or_mask || size & size_or_mask) {
|
||||||
|
+ if ((base | (base + size - 1)) >> (paddr_bits - PAGE_SHIFT)) {
|
||||||
|
printk(KERN_WARNING "mtrr: base or size exceeds the MTRR width\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
# Commit ab7f9a793c78dfea81c037b34b0dd2db7070d8f8
|
||||||
|
# Date 2013-08-15 13:17:10 +0200
|
||||||
|
# Author Tim Deegan <tim@xen.org>
|
||||||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||||||
|
x86/time: fix check for negative time in __update_vcpu_system_time()
|
||||||
|
|
||||||
|
Clang points out that u64 stime variable is always >= 0.
|
||||||
|
|
||||||
|
Signed-off-by: Tim Deegan <tim@xen.org>
|
||||||
|
|
||||||
|
--- a/xen/arch/x86/time.c
|
||||||
|
+++ b/xen/arch/x86/time.c
|
||||||
|
@@ -817,7 +817,8 @@ static void __update_vcpu_system_time(st
|
||||||
|
|
||||||
|
if ( d->arch.vtsc )
|
||||||
|
{
|
||||||
|
- u64 stime = t->stime_local_stamp;
|
||||||
|
+ s_time_t stime = t->stime_local_stamp;
|
||||||
|
+
|
||||||
|
if ( is_hvm_domain(d) )
|
||||||
|
{
|
||||||
|
struct pl_time *pl = &v->domain->arch.hvm_domain.pl_time;
|
61
520d417d-xen-Add-stdbool.h-workaround-for-BSD.patch
Normal file
61
520d417d-xen-Add-stdbool.h-workaround-for-BSD.patch
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# Commit 7b9685ca4ed2fd723600ce66eb20a6d0c115b6cb
|
||||||
|
# Date 2013-08-15 22:00:45 +0100
|
||||||
|
# Author Tim Deegan <tim@xen.org>
|
||||||
|
# Committer Tim Deegan <tim@xen.org>
|
||||||
|
xen: Add stdbool.h workaround for BSD.
|
||||||
|
|
||||||
|
On *BSD, stdbool.h lives in /usr/include, but we don't want to have
|
||||||
|
that on the search path in case we pick up any headers from the build
|
||||||
|
host's C libraries.
|
||||||
|
|
||||||
|
Copy the equivalent hack already in place for stdarg.h: on all
|
||||||
|
supported compilers the contents of stdbool.h are trivial, so just
|
||||||
|
supply the things we need in a xen/stdbool.h header.
|
||||||
|
|
||||||
|
Signed-off-by: Tim Deegan <tim@xen.org>
|
||||||
|
Reviewed-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Reviewed-by: Ian Campbell <ian.campbell@citrix.com>
|
||||||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||||||
|
Tested-by: Patrick Welche <prlw1@cam.ac.uk>
|
||||||
|
|
||||||
|
--- a/xen/include/xen/libelf.h
|
||||||
|
+++ b/xen/include/xen/libelf.h
|
||||||
|
@@ -29,8 +29,6 @@
|
||||||
|
#error define architectural endianness
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#include <stdbool.h>
|
||||||
|
-
|
||||||
|
typedef int elf_errorstatus; /* 0: ok; -ve (normally -1): error */
|
||||||
|
typedef int elf_negerrnoval; /* 0: ok; -EFOO: error */
|
||||||
|
|
||||||
|
@@ -39,11 +37,13 @@ typedef int elf_negerrnoval; /* 0: ok; -
|
||||||
|
#ifdef __XEN__
|
||||||
|
#include <public/elfnote.h>
|
||||||
|
#include <public/features.h>
|
||||||
|
+#include <xen/stdbool.h>
|
||||||
|
#else
|
||||||
|
#include <xen/elfnote.h>
|
||||||
|
#include <xen/features.h>
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
+#include <stdbool.h>
|
||||||
|
|
||||||
|
struct elf_binary;
|
||||||
|
typedef void elf_log_callback(struct elf_binary*, void *caller_data,
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/xen/include/xen/stdbool.h
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+#ifndef __XEN_STDBOOL_H__
|
||||||
|
+#define __XEN_STDBOOL_H__
|
||||||
|
+
|
||||||
|
+#if defined(__OpenBSD__) || defined(__NetBSD__)
|
||||||
|
+# define bool _Bool
|
||||||
|
+# define true 1
|
||||||
|
+# define false 0
|
||||||
|
+# define __bool_true_false_are_defined 1
|
||||||
|
+#else
|
||||||
|
+# include <stdbool.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#endif /* __XEN_STDBOOL_H__ */
|
27
xen.changes
27
xen.changes
@ -1,3 +1,30 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Aug 26 15:48:57 MDT 2013 - carnold@suse.com
|
||||||
|
|
||||||
|
- bnc#836239 - SLES 11 SP3 Xen security patch does not
|
||||||
|
automatically update UEFI boot binary
|
||||||
|
xen.spec
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 20 07:56:13 MDT 2013 - carnold@suse.com
|
||||||
|
|
||||||
|
- Upstream patches from Jan
|
||||||
|
51d5334e-x86-mm-Ensure-useful-progress-in-alloc_l2_table.patch
|
||||||
|
51dd155c-adjust-x86-EFI-build.patch
|
||||||
|
51e63d80-x86-cpuidle-Change-logging-for-unknown-APIC-IDs.patch
|
||||||
|
51e6540d-x86-don-t-use-destroy_xen_mappings-for-vunmap.patch
|
||||||
|
51e7963f-x86-time-Update-wallclock-in-shared-info-when-altering-domain-time-offset.patch
|
||||||
|
51ffd577-fix-off-by-one-mistakes-in-vm_alloc.patch
|
||||||
|
51ffd5fd-x86-refine-FPU-selector-handling-code-for-XSAVEOPT.patch
|
||||||
|
520114bb-Nested-VMX-Flush-TLBs-and-Caches-if-paging-mode-changed.patch
|
||||||
|
520a5504-VMX-add-boot-parameter-to-enable-disable-APIC-v-dynamically.patch
|
||||||
|
520a24f6-x86-AMD-Fix-nested-svm-crash-due-to-assertion-in-__virt_to_maddr.patch
|
||||||
|
520a2570-x86-AMD-Inject-GP-instead-of-UD-when-unable-to-map-vmcb.patch
|
||||||
|
520b4b60-VT-d-protect-against-bogus-information-coming-from-BIOS.patch
|
||||||
|
520b4bda-x86-MTRR-fix-range-check-in-mtrr_add_page.patch
|
||||||
|
520cb8b6-x86-time-fix-check-for-negative-time-in-__update_vcpu_system_time.patch
|
||||||
|
520d417d-xen-Add-stdbool.h-workaround-for-BSD.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Aug 16 14:54:53 MDT 2013 - carnold@suse.com
|
Fri Aug 16 14:54:53 MDT 2013 - carnold@suse.com
|
||||||
|
|
||||||
|
57
xen.spec
57
xen.spec
@ -15,6 +15,7 @@
|
|||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
Name: xen
|
Name: xen
|
||||||
ExclusiveArch: %ix86 x86_64 %arm aarch64
|
ExclusiveArch: %ix86 x86_64 %arm aarch64
|
||||||
%define xvers 4.3
|
%define xvers 4.3
|
||||||
@ -197,6 +198,21 @@ Patch1: 51d277a3-x86-don-t-pass-negative-time-to-gtime_to_gtsc-try-2.pat
|
|||||||
Patch2: 51d27807-iommu-amd-Fix-logic-for-clearing-the-IOMMU-interrupt-bits.patch
|
Patch2: 51d27807-iommu-amd-Fix-logic-for-clearing-the-IOMMU-interrupt-bits.patch
|
||||||
Patch3: 51d27841-iommu-amd-Workaround-for-erratum-787.patch
|
Patch3: 51d27841-iommu-amd-Workaround-for-erratum-787.patch
|
||||||
Patch4: 51daa074-Revert-hvmloader-always-include-HPET-table.patch
|
Patch4: 51daa074-Revert-hvmloader-always-include-HPET-table.patch
|
||||||
|
Patch5: 51d5334e-x86-mm-Ensure-useful-progress-in-alloc_l2_table.patch
|
||||||
|
Patch6: 51dd155c-adjust-x86-EFI-build.patch
|
||||||
|
Patch7: 51e63d80-x86-cpuidle-Change-logging-for-unknown-APIC-IDs.patch
|
||||||
|
Patch8: 51e6540d-x86-don-t-use-destroy_xen_mappings-for-vunmap.patch
|
||||||
|
Patch9: 51e7963f-x86-time-Update-wallclock-in-shared-info-when-altering-domain-time-offset.patch
|
||||||
|
Patch10: 51ffd577-fix-off-by-one-mistakes-in-vm_alloc.patch
|
||||||
|
Patch11: 51ffd5fd-x86-refine-FPU-selector-handling-code-for-XSAVEOPT.patch
|
||||||
|
Patch12: 520114bb-Nested-VMX-Flush-TLBs-and-Caches-if-paging-mode-changed.patch
|
||||||
|
Patch13: 520a5504-VMX-add-boot-parameter-to-enable-disable-APIC-v-dynamically.patch
|
||||||
|
Patch14: 520a24f6-x86-AMD-Fix-nested-svm-crash-due-to-assertion-in-__virt_to_maddr.patch
|
||||||
|
Patch15: 520a2570-x86-AMD-Inject-GP-instead-of-UD-when-unable-to-map-vmcb.patch
|
||||||
|
Patch16: 520b4b60-VT-d-protect-against-bogus-information-coming-from-BIOS.patch
|
||||||
|
Patch17: 520b4bda-x86-MTRR-fix-range-check-in-mtrr_add_page.patch
|
||||||
|
Patch18: 520cb8b6-x86-time-fix-check-for-negative-time-in-__update_vcpu_system_time.patch
|
||||||
|
Patch19: 520d417d-xen-Add-stdbool.h-workaround-for-BSD.patch
|
||||||
# Upstream qemu patches
|
# Upstream qemu patches
|
||||||
# Our patches
|
# Our patches
|
||||||
Patch301: xen-destdir.patch
|
Patch301: xen-destdir.patch
|
||||||
@ -490,6 +506,21 @@ Authors
|
|||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
|
%patch5 -p1
|
||||||
|
%patch6 -p1
|
||||||
|
%patch7 -p1
|
||||||
|
%patch8 -p1
|
||||||
|
%patch9 -p1
|
||||||
|
%patch10 -p1
|
||||||
|
%patch11 -p1
|
||||||
|
%patch12 -p1
|
||||||
|
%patch13 -p1
|
||||||
|
%patch14 -p1
|
||||||
|
%patch15 -p1
|
||||||
|
%patch16 -p1
|
||||||
|
%patch17 -p1
|
||||||
|
%patch18 -p1
|
||||||
|
%patch19 -p1
|
||||||
%patch301 -p1
|
%patch301 -p1
|
||||||
%patch302 -p1
|
%patch302 -p1
|
||||||
%patch303 -p1
|
%patch303 -p1
|
||||||
@ -884,12 +915,10 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
%endif
|
%endif
|
||||||
/usr/sbin/xenconsoled
|
/usr/sbin/xenconsoled
|
||||||
/usr/sbin/xencov
|
/usr/sbin/xencov
|
||||||
/usr/sbin/xen-destroy
|
|
||||||
%ifnarch %arm aarch64
|
%ifnarch %arm aarch64
|
||||||
/usr/sbin/xen-hptool
|
/usr/sbin/xen-hptool
|
||||||
/usr/sbin/xen-hvmcrash
|
/usr/sbin/xen-hvmcrash
|
||||||
/usr/sbin/xen-hvmctx
|
/usr/sbin/xen-hvmctx
|
||||||
/usr/sbin/xen-list
|
|
||||||
/usr/sbin/xenlockprof
|
/usr/sbin/xenlockprof
|
||||||
/usr/sbin/xen-lowmemd
|
/usr/sbin/xen-lowmemd
|
||||||
/usr/sbin/xenmon.py
|
/usr/sbin/xenmon.py
|
||||||
@ -905,7 +934,6 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
/usr/sbin/xentop
|
/usr/sbin/xentop
|
||||||
%ifnarch %arm aarch64
|
%ifnarch %arm aarch64
|
||||||
/usr/sbin/xentrace_setmask
|
/usr/sbin/xentrace_setmask
|
||||||
/usr/sbin/xen-vmresync
|
|
||||||
%endif
|
%endif
|
||||||
/usr/sbin/xenwatchdogd
|
/usr/sbin/xenwatchdogd
|
||||||
/usr/sbin/xsview
|
/usr/sbin/xsview
|
||||||
@ -926,7 +954,6 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
%dir /etc/xen/scripts
|
%dir /etc/xen/scripts
|
||||||
/etc/xen/scripts/blktap
|
/etc/xen/scripts/blktap
|
||||||
/etc/xen/scripts/block*
|
/etc/xen/scripts/block*
|
||||||
/etc/xen/scripts/domain-lock*
|
|
||||||
/etc/xen/scripts/external-device-migrate
|
/etc/xen/scripts/external-device-migrate
|
||||||
/etc/xen/scripts/hotplugpath.sh
|
/etc/xen/scripts/hotplugpath.sh
|
||||||
/etc/xen/scripts/locking.sh
|
/etc/xen/scripts/locking.sh
|
||||||
@ -935,10 +962,8 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
%ifnarch %arm aarch64
|
%ifnarch %arm aarch64
|
||||||
/etc/xen/scripts/qemu-ifup
|
/etc/xen/scripts/qemu-ifup
|
||||||
%endif
|
%endif
|
||||||
/etc/xen/scripts/set-lock
|
|
||||||
/etc/xen/scripts/vif2
|
/etc/xen/scripts/vif2
|
||||||
/etc/xen/scripts/vif-*
|
/etc/xen/scripts/vif-*
|
||||||
/etc/xen/scripts/vm-monitor
|
|
||||||
/etc/xen/scripts/vscsi
|
/etc/xen/scripts/vscsi
|
||||||
/etc/xen/scripts/xen-hotplug-*
|
/etc/xen/scripts/xen-hotplug-*
|
||||||
/etc/xen/scripts/xen-network-common.sh
|
/etc/xen/scripts/xen-network-common.sh
|
||||||
@ -1019,7 +1044,6 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
%{_defaultdocdir}/xen/boot.local.xenU
|
%{_defaultdocdir}/xen/boot.local.xenU
|
||||||
%{_defaultdocdir}/xen/boot.xen
|
%{_defaultdocdir}/xen/boot.xen
|
||||||
%{_defaultdocdir}/xen/misc
|
%{_defaultdocdir}/xen/misc
|
||||||
%{_mandir}/man1/xen-list.1.gz
|
|
||||||
%{_mandir}/man1/xentop.1.gz
|
%{_mandir}/man1/xentop.1.gz
|
||||||
%{_mandir}/man1/xentrace_format.1.gz
|
%{_mandir}/man1/xentrace_format.1.gz
|
||||||
%{_mandir}/man1/xl.1.gz
|
%{_mandir}/man1/xl.1.gz
|
||||||
@ -1039,6 +1063,9 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
/usr/sbin/xend
|
/usr/sbin/xend
|
||||||
/usr/sbin/xen-bugtool
|
/usr/sbin/xen-bugtool
|
||||||
/usr/sbin/xen-python-path
|
/usr/sbin/xen-python-path
|
||||||
|
/usr/sbin/xen-list
|
||||||
|
/usr/sbin/xen-destroy
|
||||||
|
/usr/sbin/xen-vmresync
|
||||||
%dir /var/lib/xen/xend-db
|
%dir /var/lib/xen/xend-db
|
||||||
%dir /var/lib/xen/xend-db/domain
|
%dir /var/lib/xen/xend-db/domain
|
||||||
%dir /var/lib/xen/xend-db/migrate
|
%dir /var/lib/xen/xend-db/migrate
|
||||||
@ -1059,6 +1086,9 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
%config(noreplace) /etc/xen/*.xml
|
%config(noreplace) /etc/xen/*.xml
|
||||||
%ifnarch %arm aarch64
|
%ifnarch %arm aarch64
|
||||||
/etc/xen/scripts/xend-relocation.sh
|
/etc/xen/scripts/xend-relocation.sh
|
||||||
|
/etc/xen/scripts/domain-lock*
|
||||||
|
/etc/xen/scripts/vm-monitor
|
||||||
|
/etc/xen/scripts/set-lock
|
||||||
%{_libdir}/python%{pyver}/site-packages/xen/remus/*
|
%{_libdir}/python%{pyver}/site-packages/xen/remus/*
|
||||||
%{_libdir}/python%{pyver}/site-packages/xen/sv/*
|
%{_libdir}/python%{pyver}/site-packages/xen/sv/*
|
||||||
%{_libdir}/python%{pyver}/site-packages/xen/util/*
|
%{_libdir}/python%{pyver}/site-packages/xen/util/*
|
||||||
@ -1069,6 +1099,7 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
%{_mandir}/man1/xm.1.gz
|
%{_mandir}/man1/xm.1.gz
|
||||||
%{_mandir}/man5/xmdomain.cfg.5.gz
|
%{_mandir}/man5/xmdomain.cfg.5.gz
|
||||||
%{_mandir}/man5/xend-config.sxp.5.gz
|
%{_mandir}/man5/xend-config.sxp.5.gz
|
||||||
|
%{_mandir}/man1/xen-list.1.gz
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -1095,6 +1126,18 @@ rm -f $RPM_BUILD_ROOT/usr/libexec/qemu-bridge-helper
|
|||||||
|
|
||||||
%if %{?with_dom0_support}0
|
%if %{?with_dom0_support}0
|
||||||
|
|
||||||
|
%post
|
||||||
|
# EFI
|
||||||
|
if [ -d /boot/efi/efi/SuSE -a -e /usr/lib64/efi/xen-%{version}-%{release}.efi ]; then
|
||||||
|
cp /usr/lib64/efi/xen-%{version}-%{release}.efi /boot/efi/efi/SuSE/
|
||||||
|
fi
|
||||||
|
|
||||||
|
%postun
|
||||||
|
# EFI
|
||||||
|
if [ -e /boot/efi/efi/SuSE/xen-%{version}-%{release}.efi ]; then
|
||||||
|
rm /boot/efi/efi/SuSE/xen-%{version}-%{release}.efi
|
||||||
|
fi
|
||||||
|
|
||||||
%post tools
|
%post tools
|
||||||
%if %{?with_xend}0
|
%if %{?with_xend}0
|
||||||
%if %{?with_systemd}0
|
%if %{?with_systemd}0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user