Re: FAILED: patch "[PATCH] ACPI / processor: move try_offline_node() after" failed to apply to 3.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Rafael and Greg,

3.10-stable tree does not neeed the patch.

I thought that a bug related with the patch was introduced by commit cecdb19
"ACPI / scan: Change the implementation of acpi_bus_trim()". But it is wrong.
The bug was introcuded by commit ac212b69 "ACPI / processor: Use common hotplug
infrastructure" becase the commit moved try_offline_node() before
acpi_unmap_lsapic(). And the commit is not merged into linux-3.10-stable tree.

I apologize to you for giving a wrong information.

Thanks,
Yasuaki Ishimatsu

(2013/08/12 13:08), gregkh@xxxxxxxxxxxxxxxxxxx wrote:

The patch below does not apply to the 3.10-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@xxxxxxxxxxxxxxx>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

 From 1e385f6f97b8ab39e16a0956a1951e19a9376bab Mon Sep 17 00:00:00 2001
From: Yasuaki Ishimatsu <isimatu.yasuaki@xxxxxxxxxxxxxx>
Date: Tue, 6 Aug 2013 19:11:11 +0900
Subject: [PATCH] ACPI / processor: move try_offline_node() after
  acpi_unmap_lsapic()

try_offline_node() checks that all CPUs associated with the given
node have been removed by using cpu_present_bits.  If all cpus
related to that node have been removed, try_offline_node() clears
the node information.

However, try_offline_node() called from acpi_processor_remove() never
clears the node information.  For disabling cpu_present_bits,
acpi_unmap_lsapic() needs be called.  Yet, acpi_unmap_lsapic() is
called after try_offline_node() has run.  So when try_offline_node()
runs, the CPU's cpu_present_bits is always set.

Fix the issue by moving try_offline_node() after acpi_unmap_lsapic().

The problem fixed here was uncovered by commit cecdb19 "ACPI / scan:
Change the implementation of acpi_bus_trim()".

[rjw: Changelog]
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@xxxxxxxxxxxxxx>
Acked-by: Toshi Kani <toshi.kani@xxxxxx>
Cc: 3.9+ <stable@xxxxxxxxxxxxxxx> # 3.9+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>

diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
index fd6c51c..5a74a9c 100644
--- a/drivers/acpi/acpi_processor.c
+++ b/drivers/acpi/acpi_processor.c
@@ -451,7 +451,6 @@ static void acpi_processor_remove(struct acpi_device *device)
  	/* Clean up. */
  	per_cpu(processor_device_array, pr->id) = NULL;
  	per_cpu(processors, pr->id) = NULL;
-	try_offline_node(cpu_to_node(pr->id));

  	/* Remove the CPU. */
  	get_online_cpus();
@@ -459,6 +458,8 @@ static void acpi_processor_remove(struct acpi_device *device)
  	acpi_unmap_lsapic(pr->id);
  	put_online_cpus();

+	try_offline_node(cpu_to_node(pr->id));
+
   out:
  	free_cpumask_var(pr->throttling.shared_cpu_map);
  	kfree(pr);



--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]