[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86: Reserve 32 bits for each of acpiid and apicid in new phys_id vcpu hypercall.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1205189517 0 # Node ID f33328217eee1a66bf2a874ff1a42b62c21e42bc # Parent 59b8768d0d0d3bf2125c33adafbd1256e75e2755 x86: Reserve 32 bits for each of acpiid and apicid in new phys_id vcpu hypercall. Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> --- xen/arch/x86/domain.c | 5 +++-- xen/include/public/vcpu.h | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff -r 59b8768d0d0d -r f33328217eee xen/arch/x86/domain.c --- a/xen/arch/x86/domain.c Wed Mar 05 11:18:25 2008 +0000 +++ b/xen/arch/x86/domain.c Mon Mar 10 22:51:57 2008 +0000 @@ -961,8 +961,9 @@ arch_do_vcpu_op( if ( !v->domain->is_pinned ) break; - cpu_id.phys_id = (x86_cpu_to_apicid[v->vcpu_id] | - (acpi_get_processor_id(v->vcpu_id) << 8)); + cpu_id.phys_id = + (uint64_t)x86_cpu_to_apicid[v->vcpu_id] | + ((uint64_t)acpi_get_processor_id(v->vcpu_id) << 32); rc = -EFAULT; if ( copy_to_guest(arg, &cpu_id, 1) ) diff -r 59b8768d0d0d -r f33328217eee xen/include/public/vcpu.h --- a/xen/include/public/vcpu.h Wed Mar 05 11:18:25 2008 +0000 +++ b/xen/include/public/vcpu.h Mon Mar 10 22:51:57 2008 +0000 @@ -185,8 +185,8 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_register_vc /* * Get the physical ID information for a pinned vcpu's underlying physical * processor. The physical ID informmation is architecture-specific. - * On x86: id[7:0]=apic_id, id[15:8]=acpi_id, id[63:16]=mbz, - * and an unavailable identifier is returned as 0xff. + * On x86: id[31:0]=apic_id, id[63:32]=acpi_id, and all values 0xff and + * greater are reserved. * This command returns -EINVAL if it is not a valid operation for this VCPU. */ #define VCPUOP_get_physid 12 /* arg == vcpu_get_physid_t */ @@ -195,8 +195,10 @@ struct vcpu_get_physid { }; typedef struct vcpu_get_physid vcpu_get_physid_t; DEFINE_XEN_GUEST_HANDLE(vcpu_get_physid_t); -#define xen_vcpu_physid_to_x86_apicid(physid) ((uint8_t)((physid)>>0)) -#define xen_vcpu_physid_to_x86_acpiid(physid) ((uint8_t)((physid)>>8)) +#define xen_vcpu_physid_to_x86_apicid(physid) \ + ((((uint32_t)(physid)) >= 0xff) ? 0xff : ((uint8_t)(physid))) +#define xen_vcpu_physid_to_x86_acpiid(physid) \ + ((((uint32_t)((physid)>>32)) >= 0xff) ? 0xff : ((uint8_t)((physid)>>32))) #endif /* __XEN_PUBLIC_VCPU_H__ */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |