Linux-NVDIMM Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2] libnvdimm/region: Initialize bad block for volatile namespaces
@ 2019-09-17 15:25 Aneesh Kumar K.V
  2019-09-18 22:35 ` Dan Williams
  0 siblings, 1 reply; 4+ messages in thread
From: Aneesh Kumar K.V @ 2019-09-17 15:25 UTC (permalink / raw)
  To: dan.j.williams; +Cc: Aneesh Kumar K.V, linux-nvdimm

We do check for a bad block during namespace init and that use
region bad block list. We need to initialize the bad block
for volatile regions for this to work. We also observe a lockdep
warning as below because the lock is not initialized correctly
since we skip bad block init for volatile regions.

 INFO: trying to register non-static key.
 the code is fine but needs lockdep annotation.
 turning off the locking correctness validator.
 CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.3.0-rc1-15699-g3dee241c937e #149
 Call Trace:
 [c0000000f95cb250] [c00000000147dd84] dump_stack+0xe8/0x164 (unreliable)
 [c0000000f95cb2a0] [c00000000022ccd8] register_lock_class+0x308/0xa60
 [c0000000f95cb3a0] [c000000000229cc0] __lock_acquire+0x170/0x1ff0
 [c0000000f95cb4c0] [c00000000022c740] lock_acquire+0x220/0x270
 [c0000000f95cb580] [c000000000a93230] badblocks_check+0xc0/0x290
 [c0000000f95cb5f0] [c000000000d97540] nd_pfn_validate+0x5c0/0x7f0
 [c0000000f95cb6d0] [c000000000d98300] nd_dax_probe+0xd0/0x1f0
 [c0000000f95cb760] [c000000000d9b66c] nd_pmem_probe+0x10c/0x160
 [c0000000f95cb790] [c000000000d7f5ec] nvdimm_bus_probe+0x10c/0x240
 [c0000000f95cb820] [c000000000d0f844] really_probe+0x254/0x4e0
 [c0000000f95cb8b0] [c000000000d0fdfc] driver_probe_device+0x16c/0x1e0
 [c0000000f95cb930] [c000000000d10238] device_driver_attach+0x68/0xa0
 [c0000000f95cb970] [c000000000d1040c] __driver_attach+0x19c/0x1c0
 [c0000000f95cb9f0] [c000000000d0c4c4] bus_for_each_dev+0x94/0x130
 [c0000000f95cba50] [c000000000d0f014] driver_attach+0x34/0x50
 [c0000000f95cba70] [c000000000d0e208] bus_add_driver+0x178/0x2f0
 [c0000000f95cbb00] [c000000000d117c8] driver_register+0x108/0x170
 [c0000000f95cbb70] [c000000000d7edb0] __nd_driver_register+0xe0/0x100
 [c0000000f95cbbd0] [c000000001a6baa4] nd_pmem_driver_init+0x34/0x48
 [c0000000f95cbbf0] [c0000000000106f4] do_one_initcall+0x1d4/0x4b0
 [c0000000f95cbcd0] [c0000000019f499c] kernel_init_freeable+0x544/0x65c
 [c0000000f95cbdb0] [c000000000010d6c] kernel_init+0x2c/0x180
 [c0000000f95cbe20] [c00000000000b954] ret_from_kernel_thread+0x5c/0x68

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
Changes from V1:
* update commit subject

 drivers/nvdimm/region.c      | 4 ++--
 drivers/nvdimm/region_devs.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/nvdimm/region.c b/drivers/nvdimm/region.c
index 37bf8719a2a4..0f6978e72e7c 100644
--- a/drivers/nvdimm/region.c
+++ b/drivers/nvdimm/region.c
@@ -34,7 +34,7 @@ static int nd_region_probe(struct device *dev)
 	if (rc)
 		return rc;
 
-	if (is_nd_pmem(&nd_region->dev)) {
+	if (is_memory(&nd_region->dev)) {
 		struct resource ndr_res;
 
 		if (devm_init_badblocks(dev, &nd_region->bb))
@@ -123,7 +123,7 @@ static void nd_region_notify(struct device *dev, enum nvdimm_event event)
 		struct nd_region *nd_region = to_nd_region(dev);
 		struct resource res;
 
-		if (is_nd_pmem(&nd_region->dev)) {
+		if (is_memory(&nd_region->dev)) {
 			res.start = nd_region->ndr_start;
 			res.end = nd_region->ndr_start +
 				nd_region->ndr_size - 1;
diff --git a/drivers/nvdimm/region_devs.c b/drivers/nvdimm/region_devs.c
index 9550202aa7be..f462b1354ab5 100644
--- a/drivers/nvdimm/region_devs.c
+++ b/drivers/nvdimm/region_devs.c
@@ -632,7 +632,7 @@ static umode_t region_visible(struct kobject *kobj, struct attribute *a, int n)
 	if (!is_memory(dev) && a == &dev_attr_dax_seed.attr)
 		return 0;
 
-	if (!is_nd_pmem(dev) && a == &dev_attr_badblocks.attr)
+	if (!is_memory(dev) && a == &dev_attr_badblocks.attr)
 		return 0;
 
 	if (a == &dev_attr_resource.attr) {
-- 
2.21.0

_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] libnvdimm/region: Initialize bad block for volatile namespaces
  2019-09-17 15:25 [PATCH v2] libnvdimm/region: Initialize bad block for volatile namespaces Aneesh Kumar K.V
@ 2019-09-18 22:35 ` Dan Williams
  2019-09-19  3:49   ` Aneesh Kumar K.V
  0 siblings, 1 reply; 4+ messages in thread
From: Dan Williams @ 2019-09-18 22:35 UTC (permalink / raw)
  To: Aneesh Kumar K.V; +Cc: linux-nvdimm

On Tue, Sep 17, 2019 at 8:25 AM Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> wrote:
>
> We do check for a bad block during namespace init and that use
> region bad block list. We need to initialize the bad block
> for volatile regions for this to work. We also observe a lockdep
> warning as below because the lock is not initialized correctly
> since we skip bad block init for volatile regions.
>
>  INFO: trying to register non-static key.
>  the code is fine but needs lockdep annotation.
>  turning off the locking correctness validator.
>  CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.3.0-rc1-15699-g3dee241c937e #149
>  Call Trace:
>  [c0000000f95cb250] [c00000000147dd84] dump_stack+0xe8/0x164 (unreliable)
>  [c0000000f95cb2a0] [c00000000022ccd8] register_lock_class+0x308/0xa60
>  [c0000000f95cb3a0] [c000000000229cc0] __lock_acquire+0x170/0x1ff0
>  [c0000000f95cb4c0] [c00000000022c740] lock_acquire+0x220/0x270
>  [c0000000f95cb580] [c000000000a93230] badblocks_check+0xc0/0x290
>  [c0000000f95cb5f0] [c000000000d97540] nd_pfn_validate+0x5c0/0x7f0
>  [c0000000f95cb6d0] [c000000000d98300] nd_dax_probe+0xd0/0x1f0
>  [c0000000f95cb760] [c000000000d9b66c] nd_pmem_probe+0x10c/0x160
>  [c0000000f95cb790] [c000000000d7f5ec] nvdimm_bus_probe+0x10c/0x240
>  [c0000000f95cb820] [c000000000d0f844] really_probe+0x254/0x4e0
>  [c0000000f95cb8b0] [c000000000d0fdfc] driver_probe_device+0x16c/0x1e0
>  [c0000000f95cb930] [c000000000d10238] device_driver_attach+0x68/0xa0
>  [c0000000f95cb970] [c000000000d1040c] __driver_attach+0x19c/0x1c0
>  [c0000000f95cb9f0] [c000000000d0c4c4] bus_for_each_dev+0x94/0x130
>  [c0000000f95cba50] [c000000000d0f014] driver_attach+0x34/0x50
>  [c0000000f95cba70] [c000000000d0e208] bus_add_driver+0x178/0x2f0
>  [c0000000f95cbb00] [c000000000d117c8] driver_register+0x108/0x170
>  [c0000000f95cbb70] [c000000000d7edb0] __nd_driver_register+0xe0/0x100
>  [c0000000f95cbbd0] [c000000001a6baa4] nd_pmem_driver_init+0x34/0x48
>  [c0000000f95cbbf0] [c0000000000106f4] do_one_initcall+0x1d4/0x4b0
>  [c0000000f95cbcd0] [c0000000019f499c] kernel_init_freeable+0x544/0x65c
>  [c0000000f95cbdb0] [c000000000010d6c] kernel_init+0x2c/0x180
>  [c0000000f95cbe20] [c00000000000b954] ret_from_kernel_thread+0x5c/0x68
>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
> ---
> Changes from V1:
> * update commit subject

What about the is_nd_pmem() call in nvdimm_clear_badblocks_region()?
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] libnvdimm/region: Initialize bad block for volatile namespaces
  2019-09-18 22:35 ` Dan Williams
@ 2019-09-19  3:49   ` Aneesh Kumar K.V
  2019-09-19  6:39     ` Dan Williams
  0 siblings, 1 reply; 4+ messages in thread
From: Aneesh Kumar K.V @ 2019-09-19  3:49 UTC (permalink / raw)
  To: Dan Williams; +Cc: linux-nvdimm

On 9/19/19 4:05 AM, Dan Williams wrote:
> On Tue, Sep 17, 2019 at 8:25 AM Aneesh Kumar K.V
> <aneesh.kumar@linux.ibm.com> wrote:
>>
>> We do check for a bad block during namespace init and that use
>> region bad block list. We need to initialize the bad block
>> for volatile regions for this to work. We also observe a lockdep
>> warning as below because the lock is not initialized correctly
>> since we skip bad block init for volatile regions.
>>
>>   INFO: trying to register non-static key.
>>   the code is fine but needs lockdep annotation.
>>   turning off the locking correctness validator.
>>   CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.3.0-rc1-15699-g3dee241c937e #149
>>   Call Trace:
>>   [c0000000f95cb250] [c00000000147dd84] dump_stack+0xe8/0x164 (unreliable)
>>   [c0000000f95cb2a0] [c00000000022ccd8] register_lock_class+0x308/0xa60
>>   [c0000000f95cb3a0] [c000000000229cc0] __lock_acquire+0x170/0x1ff0
>>   [c0000000f95cb4c0] [c00000000022c740] lock_acquire+0x220/0x270
>>   [c0000000f95cb580] [c000000000a93230] badblocks_check+0xc0/0x290
>>   [c0000000f95cb5f0] [c000000000d97540] nd_pfn_validate+0x5c0/0x7f0
>>   [c0000000f95cb6d0] [c000000000d98300] nd_dax_probe+0xd0/0x1f0
>>   [c0000000f95cb760] [c000000000d9b66c] nd_pmem_probe+0x10c/0x160
>>   [c0000000f95cb790] [c000000000d7f5ec] nvdimm_bus_probe+0x10c/0x240
>>   [c0000000f95cb820] [c000000000d0f844] really_probe+0x254/0x4e0
>>   [c0000000f95cb8b0] [c000000000d0fdfc] driver_probe_device+0x16c/0x1e0
>>   [c0000000f95cb930] [c000000000d10238] device_driver_attach+0x68/0xa0
>>   [c0000000f95cb970] [c000000000d1040c] __driver_attach+0x19c/0x1c0
>>   [c0000000f95cb9f0] [c000000000d0c4c4] bus_for_each_dev+0x94/0x130
>>   [c0000000f95cba50] [c000000000d0f014] driver_attach+0x34/0x50
>>   [c0000000f95cba70] [c000000000d0e208] bus_add_driver+0x178/0x2f0
>>   [c0000000f95cbb00] [c000000000d117c8] driver_register+0x108/0x170
>>   [c0000000f95cbb70] [c000000000d7edb0] __nd_driver_register+0xe0/0x100
>>   [c0000000f95cbbd0] [c000000001a6baa4] nd_pmem_driver_init+0x34/0x48
>>   [c0000000f95cbbf0] [c0000000000106f4] do_one_initcall+0x1d4/0x4b0
>>   [c0000000f95cbcd0] [c0000000019f499c] kernel_init_freeable+0x544/0x65c
>>   [c0000000f95cbdb0] [c000000000010d6c] kernel_init+0x2c/0x180
>>   [c0000000f95cbe20] [c00000000000b954] ret_from_kernel_thread+0x5c/0x68
>>
>> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
>> ---
>> Changes from V1:
>> * update commit subject
> 
> What about the is_nd_pmem() call in nvdimm_clear_badblocks_region()?
> 

Missed that. Yes that also needs an updatet. Will you be able to update 
that or you want me to send a V3?

-aneesh
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] libnvdimm/region: Initialize bad block for volatile namespaces
  2019-09-19  3:49   ` Aneesh Kumar K.V
@ 2019-09-19  6:39     ` Dan Williams
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Williams @ 2019-09-19  6:39 UTC (permalink / raw)
  To: Aneesh Kumar K . V; +Cc: linux-nvdimm

On Wed, Sep 18, 2019, 8:49 PM Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
wrote:

> On 9/19/19 4:05 AM, Dan Williams wrote:
> > On Tue, Sep 17, 2019 at 8:25 AM Aneesh Kumar K.V
> > <aneesh.kumar@linux.ibm.com> wrote:
> >>
> >> We do check for a bad block during namespace init and that use
> >> region bad block list. We need to initialize the bad block
> >> for volatile regions for this to work. We also observe a lockdep
> >> warning as below because the lock is not initialized correctly
> >> since we skip bad block init for volatile regions.
> >>
> >>   INFO: trying to register non-static key.
> >>   the code is fine but needs lockdep annotation.
> >>   turning off the locking correctness validator.
> >>   CPU: 2 PID: 1 Comm: swapper/0 Not tainted
> 5.3.0-rc1-15699-g3dee241c937e #149
> >>   Call Trace:
> >>   [c0000000f95cb250] [c00000000147dd84] dump_stack+0xe8/0x164
> (unreliable)
> >>   [c0000000f95cb2a0] [c00000000022ccd8] register_lock_class+0x308/0xa60
> >>   [c0000000f95cb3a0] [c000000000229cc0] __lock_acquire+0x170/0x1ff0
> >>   [c0000000f95cb4c0] [c00000000022c740] lock_acquire+0x220/0x270
> >>   [c0000000f95cb580] [c000000000a93230] badblocks_check+0xc0/0x290
> >>   [c0000000f95cb5f0] [c000000000d97540] nd_pfn_validate+0x5c0/0x7f0
> >>   [c0000000f95cb6d0] [c000000000d98300] nd_dax_probe+0xd0/0x1f0
> >>   [c0000000f95cb760] [c000000000d9b66c] nd_pmem_probe+0x10c/0x160
> >>   [c0000000f95cb790] [c000000000d7f5ec] nvdimm_bus_probe+0x10c/0x240
> >>   [c0000000f95cb820] [c000000000d0f844] really_probe+0x254/0x4e0
> >>   [c0000000f95cb8b0] [c000000000d0fdfc] driver_probe_device+0x16c/0x1e0
> >>   [c0000000f95cb930] [c000000000d10238] device_driver_attach+0x68/0xa0
> >>   [c0000000f95cb970] [c000000000d1040c] __driver_attach+0x19c/0x1c0
> >>   [c0000000f95cb9f0] [c000000000d0c4c4] bus_for_each_dev+0x94/0x130
> >>   [c0000000f95cba50] [c000000000d0f014] driver_attach+0x34/0x50
> >>   [c0000000f95cba70] [c000000000d0e208] bus_add_driver+0x178/0x2f0
> >>   [c0000000f95cbb00] [c000000000d117c8] driver_register+0x108/0x170
> >>   [c0000000f95cbb70] [c000000000d7edb0] __nd_driver_register+0xe0/0x100
> >>   [c0000000f95cbbd0] [c000000001a6baa4] nd_pmem_driver_init+0x34/0x48
> >>   [c0000000f95cbbf0] [c0000000000106f4] do_one_initcall+0x1d4/0x4b0
> >>   [c0000000f95cbcd0] [c0000000019f499c] kernel_init_freeable+0x544/0x65c
> >>   [c0000000f95cbdb0] [c000000000010d6c] kernel_init+0x2c/0x180
> >>   [c0000000f95cbe20] [c00000000000b954] ret_from_kernel_thread+0x5c/0x68
> >>
> >> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
> >> ---
> >> Changes from V1:
> >> * update commit subject
> >
> > What about the is_nd_pmem() call in nvdimm_clear_badblocks_region()?
> >
>
> Missed that. Yes that also needs an updatet. Will you be able to update
> that or you want me to send a V3?
>

v3 please so it will get superseded in patchwork, and can keep the
correlation between patchwork id and kernel commit.

(sent from my phone, forgive the HTML mail)
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-17 15:25 [PATCH v2] libnvdimm/region: Initialize bad block for volatile namespaces Aneesh Kumar K.V
2019-09-18 22:35 ` Dan Williams
2019-09-19  3:49   ` Aneesh Kumar K.V
2019-09-19  6:39     ` Dan Williams

Linux-NVDIMM Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-nvdimm/0 linux-nvdimm/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-nvdimm linux-nvdimm/ https://lore.kernel.org/linux-nvdimm \
		linux-nvdimm@lists.01.org
	public-inbox-index linux-nvdimm

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.01.lists.linux-nvdimm


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git