[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.