Message ID | 20190917152544.11216-1-aneesh.kumar@linux.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] libnvdimm/region: Initialize bad block for volatile namespaces | expand |
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()?
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
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)
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) {
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(-)