[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Workings/effectiveness of the xen-acpi-processor driver
On 05/03/2012 11:46 AM, Konrad Rzeszutek Wilk wrote: On Thu, May 03, 2012 at 04:47:46PM +0200, Stefan Bader wrote:On 03.05.2012 14:58, Stefan Bader wrote:So this shoudl solve the problem for the bootup processor.-boris+ }; + int ret = 0; + + /* Shouldn't need this as APIC is turned off for PV, and we only + * get called on the bootup processor. But just in case. */ + if (!xen_initial_domain() || smp_processor_id()) + return 0; + + if (reg == APIC_LVR) + return 0x10; + + if (reg != APIC_ID) + return 0; + + ret = HYPERVISOR_dom0_op(&op); + if (ret) + return 0; + + return op.u.pcpu_info.apic_id; return (op.u.pcpu_info.apic_id << 24); indeed fixes the problem. -boris } static void xen_apic_write(u32 reg, u32 val)I added debugging to all exit paths that could return 0 (which is what the boot_cpu_physical_apicid is set to with that patch. Which would only leave the case of the HV call returning the wrong value somehow...Hmmm, so xen_apic_read is still correct... [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] xxx xen_apic_read(20) [ 0.000000] xxx xen_apic_read -> 10 [ 0.000000] boot_cpu_physical_apicid = 0 [ 0.000000] xxx xen_apic_read(30) [ 0.000000] +- apic version = 10 there seems to be a slightly strange tweak (at least for me) in read_apic_id... static inline unsigned int read_apic_id(void) { unsigned int reg; reg = apic_read(APIC_ID); // calls apic->read(reg) return apic->get_apic_id(reg);Duh!! Let me spin out a new patch that will do this.}_______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |