sys/i386/xen/mp_machdep.c:

sys/i386/xen/mptable.c:
	Set PCPU apic_id and acpi_id fields in a fasion compatible with
	both UP and SMP configurations.

Suggested by:	jhb
Submitted by:	Roger Pau Monné
Sponsored by:	Citrix Systems R&D
Reviewed by:	gibbs
Approved by:	re (blanket Xen)
MFC after:	2 weeks
This commit is contained in:
gibbs 2013-09-20 04:35:09 +00:00
parent 88a4d0f31a
commit 45812e0f97
2 changed files with 9 additions and 3 deletions

View File

@ -251,9 +251,6 @@ cpu_add(u_int apic_id, char boot_cpu)
if (bootverbose)
printf("SMP: Added CPU %d (%s)\n", apic_id, boot_cpu ? "BSP" :
"AP");
/* Set the ACPI id (it is needed by VCPU operations) */
pcpu_find(apic_id)->pc_acpi_id = apic_id;
}
void
@ -786,6 +783,13 @@ start_all_aps(void)
dpcpu_init((void *)kmem_malloc(kernel_arena, DPCPU_SIZE,
M_WAITOK | M_ZERO), bootAP);
pc->pc_apic_id = cpu_apic_ids[bootAP];
/*
* The i386 PV port uses the apic_id as vCPU id, but the
* PVHVM port needs to use the acpi_id, so set it for PV
* also in order to work with shared devices between PV
* and PVHVM.
*/
pc->pc_acpi_id = cpu_apic_ids[bootAP];
pc->pc_prvspace = pc;
pc->pc_curthread = 0;

View File

@ -87,6 +87,8 @@ static int
mptable_setup_local(void)
{
PCPU_SET(apic_id, 0);
PCPU_SET(acpi_id, 0);
return (0);
}