fix bug in ACPI based CPU hotplug
PATCH 1/1 fix bug in ACPI based CPU hotplug
Hi,
I found a bug in ACPI based CPU hotplug code. Because of this bug, ACPI based CPU hotplug will always fail if NR_CPUS is equal to or more than 255.
Thanks,
Kenji Kaneshige
This patch fixes a serious bug in ACPI based CPU hotplug code. Because of this bug, ACPI based CPU hotplug will always fail if NR_CPUS is equal to or more than 255.
--- drivers/acpi/processor_core.c | 11 +++++------ 1 files changed, 5 insertions(+), 6 deletions(-)
drivers/acpi/processor_core.c +5 -6
@@ -382,7 +382,7 @@/* Use the acpiid in MADT to map cpus in case of SMP */ #ifndef CONFIG_SMP -#define convert_acpiid_to_cpu (acpi_id) (0xff) +#define convert_acpiid_to_cpu (acpi_id) (-1)#else #ifdef CONFIG_IA64
@@ -395,7 +395,7 @@#define ARCH_BAD_APICID (0xff)#endif -static u8 convert_acpiid_to_cpu (u8 acpi_id) +static int convert_acpiid_to_cpu (u8 acpi_id) {u16 apic_id;int i;
@@ -421,7 +421,7 @@acpi_status status =0 ;union acpi_object object = {0 };struct acpi_buffer buffer = {sizeof (union acpi_object ), &object }; -u8 cpu_index; +int cpu_index;static int cpu0_initialized;ACPI_FUNCTION_TRACE ("acpi_processor_get_info" );
@@ -466,8 +466,7 @@ cpu_index =convert_acpiid_to_cpu (pr->acpi_id);/* Handle UP system running SMP kernel, with no LAPIC in MADT */ -if (!cpu0_initialized && (cpu_index ==0xff ) && - (num_online_cpus () ==1 )) { +if (!cpu0_initialized && (cpu_index <0 ) && (num_online_cpus () ==1 )) { cpu_index =0 ; }
@@ -480,7 +479,7 @@* less than the max # of CPUs. They should be ignored _iff * they are physically not present. */ -if (cpu_index >=NR_CPUS ) { +if (cpu_index <0 ) {if (ACPI_FAILURE (acpi_processor_hotadd_init (pr->handle, &pr->id))) { ACPI_ERROR((AE_INFO,
Quoted 4 lines · Kenji Kaneshige
This patch fixes a serious bug in ACPI based CPU hotplug code. Because
of this bug, ACPI based CPU hotplug will always fail ifNR_CPUSis equal to or more than 255.
Looks rather similar to ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.16-rc5/2.6.16-rc5-mm3/broken-out/acpi-signedness-fix-2.patch ;)
I think they're functionally equivalent - the only difference is the ==-1 versus <0 comparisons.
Quoted 7 lines · Andrew Morton
Quoted 3 lines · Kenji Kaneshige
This patch fixes a serious bug in ACPI based CPU hotplug code. Because of this bug, ACPI based CPU hotplug will always fail if
NR_CPUSis equal to or more than 255.
Quoted 8 lines
Looks rather similar to ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.16-rc5/2.6.16-rc5-mm3/broken-out/acpi-signedness-fix-2.patch ;)
I think they're functionally equivalent - the only difference is the ==-1 versus <0 comparisons.
Oh, I didn't noticed it.
Sorry for the noise.
Thanks,
Kenji Kaneshige