* [PATCH] ACPI: nfit: return -ENODEV if fail to find NFIT at startup @ 2018-08-03 9:39 Ocean He [not found] ` <1533289198-11400-1-git-send-email-oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Ocean He @ 2018-08-03 9:39 UTC (permalink / raw) To: dan.j.williams-ral2JQCrhuEAvxtiuMwx3w, ross.zwisler-VuQAYsv1563Yd54FQh9/CA, vishal.l.verma-ral2JQCrhuEAvxtiuMwx3w, dave.jiang-ral2JQCrhuEAvxtiuMwx3w, rjw-LthD3rsA81gm4RdzfppkhA, lenb-DgEjT+Ai2ygdnm+yROfE0A Cc: linux-acpi-u79uwXL29TY76Z2rM5mHXA, Ocean He, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw From: Ocean He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> In the beginning of acpi_nfit_add, if fail to find NFIT table then should return -ENODEV, instead of 0. Signed-off-by: Ocean He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> --- drivers/acpi/nfit/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c index 7c47900..1790d7c 100644 --- a/drivers/acpi/nfit/core.c +++ b/drivers/acpi/nfit/core.c @@ -3355,7 +3355,7 @@ static int acpi_nfit_add(struct acpi_device *adev) if (ACPI_FAILURE(status)) { /* This is ok, we could have an nvdimm hotplugged later */ dev_dbg(dev, "failed to find NFIT at startup\n"); - return 0; + return -ENODEV; } rc = devm_add_action_or_reset(dev, acpi_nfit_put_table, tbl); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <1533289198-11400-1-git-send-email-oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH] ACPI: nfit: return -ENODEV if fail to find NFIT at startup [not found] ` <1533289198-11400-1-git-send-email-oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2018-08-03 9:43 ` Johannes Thumshirn 2018-08-03 17:11 ` Verma, Vishal L 1 sibling, 0 replies; 5+ messages in thread From: Johannes Thumshirn @ 2018-08-03 9:43 UTC (permalink / raw) To: Ocean He Cc: Ocean He, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw, rjw-LthD3rsA81gm4RdzfppkhA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-acpi-u79uwXL29TY76Z2rM5mHXA, lenb-DgEjT+Ai2ygdnm+yROfE0A Looks good, Reviewed-by: Johannes Thumshirn <jthumshirn-l3A5Bk7waGM@public.gmane.org> -- Johannes Thumshirn Storage jthumshirn-l3A5Bk7waGM@public.gmane.org +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ACPI: nfit: return -ENODEV if fail to find NFIT at startup [not found] ` <1533289198-11400-1-git-send-email-oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2018-08-03 9:43 ` Johannes Thumshirn @ 2018-08-03 17:11 ` Verma, Vishal L [not found] ` <1533316299.8557.71.camel-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 1 sibling, 1 reply; 5+ messages in thread From: Verma, Vishal L @ 2018-08-03 17:11 UTC (permalink / raw) To: Williams, Dan J, ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Jiang, Dave, lenb-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org Cc: linux-acpi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org On Fri, 2018-08-03 at 05:39 -0400, Ocean He wrote: > From: Ocean He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> > > In the beginning of acpi_nfit_add, if fail to find NFIT table then > should > return -ENODEV, instead of 0. > > Signed-off-by: Ocean He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> > --- > drivers/acpi/nfit/core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c > index 7c47900..1790d7c 100644 > --- a/drivers/acpi/nfit/core.c > +++ b/drivers/acpi/nfit/core.c > @@ -3355,7 +3355,7 @@ static int acpi_nfit_add(struct acpi_device > *adev) > if (ACPI_FAILURE(status)) { > /* This is ok, we could have an nvdimm hotplugged > later */ > dev_dbg(dev, "failed to find NFIT at startup\n"); > - return 0; > + return -ENODEV; Hm, the comment directly above this says this is ok.. Has this caused any problems in practice? > } > > rc = devm_add_action_or_reset(dev, acpi_nfit_put_table, > tbl); ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <1533316299.8557.71.camel-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>]
* RE: [External] Re: [PATCH] ACPI: nfit: return -ENODEV if fail to find NFIT at startup [not found] ` <1533316299.8557.71.camel-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> @ 2018-08-06 7:15 ` Ocean HY1 He [not found] ` <HK0PR03MB3170E6D5D62D14B02F39FAE089200-7SfLTKn9UgQizmvzqrKYQ682SN/2zMuYvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Ocean HY1 He @ 2018-08-06 7:15 UTC (permalink / raw) To: Verma, Vishal L, Williams, Dan J, ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Jiang, Dave, lenb-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org Cc: linux-acpi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org > -----Original Message----- > From: Verma, Vishal L <vishal.l.verma-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> > Sent: Saturday, August 04, 2018 1:12 AM > To: Williams, Dan J <dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>; ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org; > oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; Jiang, Dave <dave.jiang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>; lenb-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org; > rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org > Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org; linux- > acpi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; Ocean HY1 He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> > Subject: [External] Re: [PATCH] ACPI: nfit: return -ENODEV if fail to find NFIT at > startup > > > On Fri, 2018-08-03 at 05:39 -0400, Ocean He wrote: > > From: Ocean He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> > > > > In the beginning of acpi_nfit_add, if fail to find NFIT table then > > should > > return -ENODEV, instead of 0. > > > > Signed-off-by: Ocean He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> > > --- > > drivers/acpi/nfit/core.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c > > index 7c47900..1790d7c 100644 > > --- a/drivers/acpi/nfit/core.c > > +++ b/drivers/acpi/nfit/core.c > > @@ -3355,7 +3355,7 @@ static int acpi_nfit_add(struct acpi_device > > *adev) > > if (ACPI_FAILURE(status)) { > > /* This is ok, we could have an nvdimm hotplugged > > later */ > > dev_dbg(dev, "failed to find NFIT at startup\n"); > > - return 0; > > + return -ENODEV; > > Hm, the comment directly above this says this is ok.. > Has this caused any problems in practice? > Thanks for your comments. After going through related codes and some test, I am now thinking it's right to keep "return 0" if NFIT not found at boot time. Per chapter 9.20.2 NVDIMM Root Device in ACPI 6.2 spec: The NVDIMM root device is represented by an ACPI namespace device with a _HID of "ACPI0012". This device allows the OS to trigger enumeration of NVDIMMs through NFIT at boot time and re-enumeration at root level via the _FIT method during runtime. The acpi_nfit_driver is registered to ACPI bus to support "ACPI0012". The acpi_nfit_driver.acpi_nfit_add is used to enumerate NVDIMMs through NFIT at boot time; The acpi_nfit_driver.acpi_nfit_notify is used to enumerate NVDIMMs during runtime. In my Lenovo ThinkSystem SR630 which support NVDIMMs, If I remove all NVDIMMs, the NFIT table is gone after system boot up. If keep "return 0" in acpi_nfit_add, then acpi_nfit_driver would still be attached to "ACPI0012". Once a NVDIMM is hotplugged into system during runtime, then acpi_nfit_driver.acpi_nfit_notify can be called to enumerate NVDIMMs (I could not do hotplug test because firmware doesn't support). Otherwise, "return -ENODEV" would block NVDIMM enumeration during runtime. How do you think to adjust annotation as following? diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c index 7c47900..1673161 100644 --- a/drivers/acpi/nfit/core.c +++ b/drivers/acpi/nfit/core.c @@ -3353,7 +3353,13 @@ static int acpi_nfit_add(struct acpi_device *adev) status = acpi_get_table(ACPI_SIG_NFIT, 0, &tbl); if (ACPI_FAILURE(status)) { - /* This is ok, we could have an nvdimm hotplugged later */ + /* The NVDIMM root device allows OS to trigger enumeration of + * NVDIMMs through NFIT at boot time and re-enumeration at + * root level via the _FIT method during runtime. + * This is ok to return 0 here, we could have an nvdimm + * hotplugged later and evaluate _FIT method which returns + * data in the format of a series of NFIT Structures. + */ dev_dbg(dev, "failed to find NFIT at startup\n"); return 0; } Ocean. > > } > > > > rc = devm_add_action_or_reset(dev, acpi_nfit_put_table, > > tbl); ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <HK0PR03MB3170E6D5D62D14B02F39FAE089200-7SfLTKn9UgQizmvzqrKYQ682SN/2zMuYvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>]
* Re: [External] Re: [PATCH] ACPI: nfit: return -ENODEV if fail to find NFIT at startup [not found] ` <HK0PR03MB3170E6D5D62D14B02F39FAE089200-7SfLTKn9UgQizmvzqrKYQ682SN/2zMuYvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> @ 2018-08-06 17:18 ` Verma, Vishal L 0 siblings, 0 replies; 5+ messages in thread From: Verma, Vishal L @ 2018-08-06 17:18 UTC (permalink / raw) To: Williams, Dan J, ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Jiang, Dave, lenb-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org, rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org Cc: linux-acpi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org On Mon, 2018-08-06 at 07:15 +0000, Ocean HY1 He wrote: > > -----Original Message----- > > From: Verma, Vishal L <vishal.l.verma-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> > > Sent: Saturday, August 04, 2018 1:12 AM > > To: Williams, Dan J <dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>; ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org; > > oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; Jiang, Dave <dave.jiang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>; lenb-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org; > > rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org > > Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org; linux- > > acpi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; Ocean HY1 He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> > > Subject: [External] Re: [PATCH] ACPI: nfit: return -ENODEV if fail to find NFIT at > > startup > > > > > > On Fri, 2018-08-03 at 05:39 -0400, Ocean He wrote: > > > From: Ocean He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> > > > > > > In the beginning of acpi_nfit_add, if fail to find NFIT table then > > > should > > > return -ENODEV, instead of 0. > > > > > > Signed-off-by: Ocean He <hehy1-6jq1YtArVR3QT0dZR+AlfA@public.gmane.org> > > > --- > > > drivers/acpi/nfit/core.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c > > > index 7c47900..1790d7c 100644 > > > --- a/drivers/acpi/nfit/core.c > > > +++ b/drivers/acpi/nfit/core.c > > > @@ -3355,7 +3355,7 @@ static int acpi_nfit_add(struct acpi_device > > > *adev) > > > if (ACPI_FAILURE(status)) { > > > /* This is ok, we could have an nvdimm hotplugged > > > later */ > > > dev_dbg(dev, "failed to find NFIT at startup\n"); > > > - return 0; > > > + return -ENODEV; > > > > Hm, the comment directly above this says this is ok.. > > Has this caused any problems in practice? > > > > Thanks for your comments. After going through related codes and some test, I am > now thinking it's right to keep "return 0" if NFIT not found at boot time. > > Per chapter 9.20.2 NVDIMM Root Device in ACPI 6.2 spec: > The NVDIMM root device is represented by an ACPI namespace device with a _HID > of "ACPI0012". This device allows the OS to trigger enumeration of NVDIMMs > through NFIT at boot time and re-enumeration at root level via the _FIT method > during runtime. > > The acpi_nfit_driver is registered to ACPI bus to support "ACPI0012". > The acpi_nfit_driver.acpi_nfit_add is used to enumerate NVDIMMs through NFIT > at boot time; The acpi_nfit_driver.acpi_nfit_notify is used to enumerate > NVDIMMs during runtime. > > In my Lenovo ThinkSystem SR630 which support NVDIMMs, If I remove > all NVDIMMs, the NFIT table is gone after system boot up. If keep "return 0" > in acpi_nfit_add, then acpi_nfit_driver would still be attached to "ACPI0012". > Once a NVDIMM is hotplugged into system during runtime, then > acpi_nfit_driver.acpi_nfit_notify can be called to enumerate NVDIMMs (I could > not do hotplug test because firmware doesn't support). > Otherwise, "return -ENODEV" would block NVDIMM enumeration during runtime. > > How do you think to adjust annotation as following? > > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c > index 7c47900..1673161 100644 > --- a/drivers/acpi/nfit/core.c > +++ b/drivers/acpi/nfit/core.c > @@ -3353,7 +3353,13 @@ static int acpi_nfit_add(struct acpi_device *adev) > > status = acpi_get_table(ACPI_SIG_NFIT, 0, &tbl); > if (ACPI_FAILURE(status)) { > - /* This is ok, we could have an nvdimm hotplugged later */ > + /* The NVDIMM root device allows OS to trigger enumeration of > + * NVDIMMs through NFIT at boot time and re-enumeration at > + * root level via the _FIT method during runtime. > + * This is ok to return 0 here, we could have an nvdimm > + * hotplugged later and evaluate _FIT method which returns > + * data in the format of a series of NFIT Structures. > + */ > dev_dbg(dev, "failed to find NFIT at startup\n"); > return 0; > } Yes, this sounds reasonable to me. Thanks, -Vishal > > Ocean. > > > > } > > > > > > rc = devm_add_action_or_reset(dev, acpi_nfit_put_table, > > > tbl); ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-08-06 17:18 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-08-03 9:39 [PATCH] ACPI: nfit: return -ENODEV if fail to find NFIT at startup Ocean He [not found] ` <1533289198-11400-1-git-send-email-oceanhehy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2018-08-03 9:43 ` Johannes Thumshirn 2018-08-03 17:11 ` Verma, Vishal L [not found] ` <1533316299.8557.71.camel-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2018-08-06 7:15 ` [External] " Ocean HY1 He [not found] ` <HK0PR03MB3170E6D5D62D14B02F39FAE089200-7SfLTKn9UgQizmvzqrKYQ682SN/2zMuYvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2018-08-06 17:18 ` Verma, Vishal L
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).