[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [for-4.7 2/5] xen/arm: acpi: The boot CPU does not always match the first entry in the MADT
On 2016/4/7 18:59, Julien Grall wrote: > Since the ACPI 6.0 errata document [1], the first entry in the MADT > does not have to correspond to the boot CPU. > > Introduce a new variable to know if a MADT entry matching the boot CPU > is found. Furthermore, it's not necessary to check if the MPIDR is > duplicated for the boot CPU. So the rest of the function can be skipped. > > [1] 1380 Unnecessary restrictions to FW vendors in ordering of GIC structures > in MADT > > Signed-off-by: Julien Grall <julien.grall@xxxxxxx> Reviewed-by: Shannon Zhao <shannon.zhao@xxxxxxxxxx> > --- > xen/arch/arm/acpi/boot.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/xen/arch/arm/acpi/boot.c b/xen/arch/arm/acpi/boot.c > index 859aa86..2a71660 100644 > --- a/xen/arch/arm/acpi/boot.c > +++ b/xen/arch/arm/acpi/boot.c > @@ -37,7 +37,8 @@ > #include <asm/setup.h> > > /* Processors with enabled flag and sane MPIDR */ > -static unsigned int enabled_cpus; > +static unsigned int enabled_cpus = 1; > +static bool __initdata bootcpu_valid; > > /* total number of cpus in this system */ > static unsigned int __initdata total_cpus; > @@ -71,10 +72,15 @@ acpi_map_gic_cpu_interface(struct > acpi_madt_generic_interrupt *processor) > } > > /* Check if GICC structure of boot CPU is available in the MADT */ > - if ( (enabled_cpus == 0) && (cpu_logical_map(0) != mpidr) ) > + if ( cpu_logical_map(0) == mpidr ) > { > - printk("Firmware bug, invalid CPU MPIDR for cpu0: 0x%"PRIx64" in > MADT\n", > - mpidr); > + if ( bootcpu_valid ) > + { > + printk("Firmware bug, duplicate boot CPU MPIDR: 0x%"PRIx64" in > MADT\n", > + mpidr); > + return; > + } > + bootcpu_valid = true; > return; > } > > -- Shannon _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |