Skip to contentSkip to conversation

FAILED: patch "[PATCH] mm/memory_hotplug: fix unpaired mem_hotplug_begin/done" failed to apply to 4.19-stable tree

PATCH [email protected] 2 participants 3 messages Aug 19, 2020 – Aug 20, 2020

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 4.19-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 <[email protected]>.

thanks,

greg k-h

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

From b4223a510e2ab1bf0f971d50af7c1431014b25ad Mon Sep 17 00:00:00 2001
From: Jia He <[email protected]>
Date: Tue, 11 Aug 2020 18:32:20 -0700
Subject: [PATCH] mm/memory_hotplug: fix unpaired mem_hotplug_begin/done

When check_memblock_offlined_cb() returns failed rc(e.g. the memblock is online at that time), mem_hotplug_begin/done is unpaired in such case.

Therefore a warning:

 Call Trace:
  percpu_up_write+0x33/0x40
  try_remove_memory+0x66/0x120
  ? _cond_resched+0x19/0x30
  remove_memory+0x2b/0x40
  dev_dax_kmem_remove+0x36/0x72 [kmem]
  device_release_driver_internal+0xf0/0x1c0
  device_release_driver+0x12/0x20
  bus_remove_device+0xe1/0x150
  device_del+0x17b/0x3e0
  unregister_dev_dax+0x29/0x60
  devm_action_release+0x15/0x20
  release_nodes+0x19a/0x1e0
  devres_release_all+0x3f/0x50
  device_release_driver_internal+0x100/0x1c0
  driver_detach+0x4c/0x8f
  bus_remove_driver+0x5c/0xd0
  driver_unregister+0x31/0x50
  dax_pmem_exit+0x10/0xfe0 [dax_pmem]
Fixes f1037ec0cc8a ("mm/memory_hotplug: fix remove_memory() lockdep splat")
Cc <[email protected]> [5.6+]
Cc Andy Lutomirski <[email protected]>
Cc Baoquan He <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc Catalin Marinas <[email protected]>
Cc Chuhong Yuan <[email protected]>
Cc Dave Hansen <[email protected]>
Cc Dave Jiang <[email protected]>
Cc Fenghua Yu <[email protected]>
Cc "H. Peter Anvin" <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Jonathan Cameron <[email protected]>
Cc Kaly Xin <[email protected]>
Cc Logan Gunthorpe <[email protected]>
Cc Masahiro Yamada <[email protected]>
Cc Mike Rapoport <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Rich Felker <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Tony Luck <[email protected]>
Cc Vishal Verma <[email protected]>
Cc Will Deacon <[email protected]>
Cc Yoshinori Sato <[email protected]>
mm/memory_hotplug.c +2 -3
index 6289a909ea36..ce3d858319bd 100644
@@ -1757,7 +1757,7 @@ static int __ref try_remove_memory(int nid, u64 start, u64 size)
 	 */
 	rc = walk_memory_blocks(start, size, NULL, check_memblock_offlined_cb);
 	if (rc)
-		goto done;
+		return rc;
 
 	/* remove memmap entry */
 	firmware_map_remove(start, start + size, "System RAM");
@@ -1781,9 +1781,8 @@ static int __ref try_remove_memory(int nid, u64 start, u64 size)
 
 	try_offline_node(nid);
 
-done:
 	mem_hotplug_done();
-	return rc;
+	return 0;
 }
 
 /**
#1 lore raw

Hi Greg,
If anybody wants to backport it to stable tree, there are 2 pre-condition for this commit ("[PATCH] mm/memory_hotplug: fix unpaired mem_hotplug_begin/done")

1. eca499ab3 ("mm/hotplug: make remove_memory() interface usable") applied in v5.2, it disabled the BUG() when check_memblock_offlined_cb() failed.
2. f1037ec0c ("mm/memory_hotplug: fix remove_memory() lockdep splat") in v5.5, it introduced the unpair but depends on eca499ab3

I checked https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/mm/memory_hotplug.c?h=linux-4.19.y#n1913.
Looks like stable tree v4.19 hasn't applied eca499ab3 but applied f1037ec0c.
Hence I don't think v4.19 needs this patch.

--
Cheers,
Justin (Jia He)

Quoted 117 lines

-----Original Message-----
From: [email protected] <[email protected]>
Sent: Wednesday, August 19, 2020 8:29 PM
To: Justin He <[email protected]>; [email protected]; Kaly Xin <[email protected]>; [email protected]; [email protected]; [email protected]; Catalin Marinas <[email protected]>; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Cc: [email protected]
Subject: FAILED: patch "[PATCH] mm/memory_hotplug: fix unpaired mem_hotplug_begin/done" failed to apply to 4.19-stable tree

The patch below does not apply to the 4.19-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 <[email protected]>.

thanks,

greg k-h

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

From b4223a510e2ab1bf0f971d50af7c1431014b25ad Mon Sep 17 00:00:00 2001
From: Jia He <[email protected]>
Date: Tue, 11 Aug 2020 18:32:20 -0700
Subject: [PATCH] mm/memory_hotplug: fix unpaired mem_hotplug_begin/done

When check_memblock_offlined_cb() returns failed rc(e.g. the memblock is online at that time), mem_hotplug_begin/done is unpaired in such case.

Therefore a warning:

 Call Trace:
  percpu_up_write+0x33/0x40
  try_remove_memory+0x66/0x120
  ? _cond_resched+0x19/0x30
  remove_memory+0x2b/0x40
  dev_dax_kmem_remove+0x36/0x72 [kmem]
  device_release_driver_internal+0xf0/0x1c0
  device_release_driver+0x12/0x20
  bus_remove_device+0xe1/0x150
  device_del+0x17b/0x3e0
  unregister_dev_dax+0x29/0x60
  devm_action_release+0x15/0x20
  release_nodes+0x19a/0x1e0
  devres_release_all+0x3f/0x50
  device_release_driver_internal+0x100/0x1c0
  driver_detach+0x4c/0x8f
  bus_remove_driver+0x5c/0xd0
  driver_unregister+0x31/0x50
  dax_pmem_exit+0x10/0xfe0 [dax_pmem]
Fixes f1037ec0cc8a ("mm/memory_hotplug: fix remove_memory() lockdep

splat")

Cc Andy Lutomirski <[email protected]>
Cc Baoquan He <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc Catalin Marinas <[email protected]>
Cc Chuhong Yuan <[email protected]>
Cc Dave Hansen <[email protected]>
Cc Dave Jiang <[email protected]>
Cc Fenghua Yu <[email protected]>
Cc "H. Peter Anvin" <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Jonathan Cameron <[email protected]>
Cc Kaly Xin <[email protected]>
Cc Logan Gunthorpe <[email protected]>
Cc Masahiro Yamada <[email protected]>
Cc Mike Rapoport <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Rich Felker <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Tony Luck <[email protected]>
Cc Vishal Verma <[email protected]>
Cc Will Deacon <[email protected]>
Cc Yoshinori Sato <[email protected]>
mm/memory_hotplug.c +1 -1
index 6289a909ea36..ce3d858319bd 100644
@@ -1757,7 +1757,7 @@ static int __ref try_remove_memory(int nid, u64
 start, u64 size)
  */
 rc = walk_memory_blocks(start, size, NULL,
 check_memblock_offlined_cb);
 if (rc)
-goto done;
+return rc;
 

/* remove memmap entry */ firmware_map_remove(start, start + size, "System RAM");

mm/memory_hotplug.c +1 -2
@@ -1781,9 +1781,8 @@ static int __ref try_remove_memory(int nid, u64
 start, u64 size)
 
 try_offline_node(nid);
 
-done:
 mem_hotplug_done();
-return rc;
+return 0;
 }
 
Quoted 1 line

/**

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

author maintainer
#2 lore raw
Quoted 4 lines · Justin He

Hi Greg,
If anybody wants to backport it to stable tree, there are 2 pre-condition for this commit ("[PATCH] mm/memory_hotplug: fix unpaired mem_hotplug_begin/done")

Quoted 8 lines

1. eca499ab3 ("mm/hotplug: make remove_memory() interface usable") applied in v5.2, it disabled the BUG() when check_memblock_offlined_cb() failed.
2. f1037ec0c ("mm/memory_hotplug: fix remove_memory() lockdep splat") in v5.5, it introduced the unpair but depends on eca499ab3

I checked https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/mm/memory_hotplug.c?h=linux-4.19.y#n1913.
Looks like stable tree v4.19 hasn't applied eca499ab3 but applied f1037ec0c.
Hence I don't think v4.19 needs this patch.

Thanks, I'll just leave this out of 4.19.y for now then.

greg k-h