2023-05-16 20:18:26

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH 1/3] acpi: nfit: add declaration in a local header

From: Arnd Bergmann <[email protected]>

The nfit_intel_shutdown_status() function has a __weak defintion
in nfit.c and an override in acpi_nfit_test.c for testing
purposes. This works without an extern declaration, but causes
a W=1 build warning:

drivers/acpi/nfit/core.c:1717:13: error: no previous prototype for 'nfit_intel_shutdown_status' [-Werror=missing-prototypes]

Add a declaration in a header that gets included from both
sides to shut up the warning and ensure that the prototypes
actually match.

Signed-off-by: Arnd Bergmann <[email protected]>
---
drivers/acpi/nfit/nfit.h | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/acpi/nfit/nfit.h b/drivers/acpi/nfit/nfit.h
index 6023ad61831a..573bc0de2990 100644
--- a/drivers/acpi/nfit/nfit.h
+++ b/drivers/acpi/nfit/nfit.h
@@ -347,4 +347,6 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
void acpi_nfit_desc_init(struct acpi_nfit_desc *acpi_desc, struct device *dev);
bool intel_fwa_supported(struct nvdimm_bus *nvdimm_bus);
extern struct device_attribute dev_attr_firmware_activate_noidle;
+void nfit_intel_shutdown_status(struct nfit_mem *nfit_mem);
+
#endif /* __NFIT_H__ */
--
2.39.2



2023-05-16 20:22:11

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH 3/3] libnvdimm: mark 'security_show' static again

From: Arnd Bergmann <[email protected]>

The security_show() function was made global and __weak at some
point to allow overriding it. The override was removed later, but
it remains global, which causes a warning about the missing
declaration:

drivers/nvdimm/dimm_devs.c:352:9: error: no previous prototype for 'security_show'

This is also not an appropriate name for a global symbol in the
kernel, so just make it static again.

Fixes: 15a8348707ff ("libnvdimm: Introduce CONFIG_NVDIMM_SECURITY_TEST flag")
Signed-off-by: Arnd Bergmann <[email protected]>
---
drivers/nvdimm/dimm_devs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nvdimm/dimm_devs.c b/drivers/nvdimm/dimm_devs.c
index 957f7c3d17ba..10c3cb6a574a 100644
--- a/drivers/nvdimm/dimm_devs.c
+++ b/drivers/nvdimm/dimm_devs.c
@@ -349,7 +349,7 @@ static ssize_t available_slots_show(struct device *dev,
}
static DEVICE_ATTR_RO(available_slots);

-ssize_t security_show(struct device *dev,
+static ssize_t security_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct nvdimm *nvdimm = to_nvdimm(dev);
--
2.39.2


2023-05-16 20:25:55

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH 2/3] testing: nvdimm: add missing prototypes for wrapped functions

From: Arnd Bergmann <[email protected]>

The nvdimm test wraps a number of API functions, but these functions
don't have a prototype in a header because they are all called
by a different name:

drivers/nvdimm/../../tools/testing/nvdimm/test/iomap.c:74:15: error: no previous prototype for '__wrap_devm_ioremap' [-Werror=missing-prototypes]
74 | void __iomem *__wrap_devm_ioremap(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~
drivers/nvdimm/../../tools/testing/nvdimm/test/iomap.c:86:7: error: no previous prototype for '__wrap_devm_memremap' [-Werror=missing-prototypes]
86 | void *__wrap_devm_memremap(struct device *dev, resource_size_t offset,
| ^~~~~~~~~~~~~~~~~~~~
...

Add prototypes to avoid the warning.

Signed-off-by: Arnd Bergmann <[email protected]>
---
tools/testing/nvdimm/test/nfit_test.h | 29 +++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

diff --git a/tools/testing/nvdimm/test/nfit_test.h b/tools/testing/nvdimm/test/nfit_test.h
index b5f7a996c4d0..b00583d1eace 100644
--- a/tools/testing/nvdimm/test/nfit_test.h
+++ b/tools/testing/nvdimm/test/nfit_test.h
@@ -207,7 +207,36 @@ typedef struct nfit_test_resource *(*nfit_test_lookup_fn)(resource_size_t);
typedef union acpi_object *(*nfit_test_evaluate_dsm_fn)(acpi_handle handle,
const guid_t *guid, u64 rev, u64 func,
union acpi_object *argv4);
+void __iomem *__wrap_devm_ioremap(struct device *dev,
+ resource_size_t offset, unsigned long size);
+void *__wrap_devm_memremap(struct device *dev, resource_size_t offset,
+ size_t size, unsigned long flags);
+void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap);
+pfn_t __wrap_phys_to_pfn_t(phys_addr_t addr, unsigned long flags);
+void *__wrap_memremap(resource_size_t offset, size_t size,
+ unsigned long flags);
+void __wrap_devm_memunmap(struct device *dev, void *addr);
+void __iomem *__wrap_ioremap(resource_size_t offset, unsigned long size);
+void __iomem *__wrap_ioremap_wc(resource_size_t offset, unsigned long size);
void __wrap_iounmap(volatile void __iomem *addr);
+void __wrap_memunmap(void *addr);
+struct resource *__wrap___request_region(struct resource *parent,
+ resource_size_t start, resource_size_t n, const char *name,
+ int flags);
+int __wrap_insert_resource(struct resource *parent, struct resource *res);
+int __wrap_remove_resource(struct resource *res);
+struct resource *__wrap___devm_request_region(struct device *dev,
+ struct resource *parent, resource_size_t start,
+ resource_size_t n, const char *name);
+void __wrap___release_region(struct resource *parent, resource_size_t start,
+ resource_size_t n);
+void __wrap___devm_release_region(struct device *dev, struct resource *parent,
+ resource_size_t start, resource_size_t n);
+acpi_status __wrap_acpi_evaluate_object(acpi_handle handle, acpi_string path,
+ struct acpi_object_list *p, struct acpi_buffer *buf);
+union acpi_object * __wrap_acpi_evaluate_dsm(acpi_handle handle, const guid_t *guid,
+ u64 rev, u64 func, union acpi_object *argv4);
+
void nfit_test_setup(nfit_test_lookup_fn lookup,
nfit_test_evaluate_dsm_fn evaluate);
void nfit_test_teardown(void);
--
2.39.2


2023-05-22 15:24:11

by Dave Jiang

[permalink] [raw]
Subject: Re: [PATCH 1/3] acpi: nfit: add declaration in a local header



On 5/16/23 1:14 PM, Arnd Bergmann wrote:
> From: Arnd Bergmann <[email protected]>
>
> The nfit_intel_shutdown_status() function has a __weak defintion
> in nfit.c and an override in acpi_nfit_test.c for testing
> purposes. This works without an extern declaration, but causes
> a W=1 build warning:
>
> drivers/acpi/nfit/core.c:1717:13: error: no previous prototype for 'nfit_intel_shutdown_status' [-Werror=missing-prototypes]
>
> Add a declaration in a header that gets included from both
> sides to shut up the warning and ensure that the prototypes
> actually match.
>
> Signed-off-by: Arnd Bergmann <[email protected]>

Reviewed-by: Dave Jiang <[email protected]>

> ---
> drivers/acpi/nfit/nfit.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/acpi/nfit/nfit.h b/drivers/acpi/nfit/nfit.h
> index 6023ad61831a..573bc0de2990 100644
> --- a/drivers/acpi/nfit/nfit.h
> +++ b/drivers/acpi/nfit/nfit.h
> @@ -347,4 +347,6 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
> void acpi_nfit_desc_init(struct acpi_nfit_desc *acpi_desc, struct device *dev);
> bool intel_fwa_supported(struct nvdimm_bus *nvdimm_bus);
> extern struct device_attribute dev_attr_firmware_activate_noidle;
> +void nfit_intel_shutdown_status(struct nfit_mem *nfit_mem);
> +
> #endif /* __NFIT_H__ */

2023-05-22 15:30:31

by Dave Jiang

[permalink] [raw]
Subject: Re: [PATCH 3/3] libnvdimm: mark 'security_show' static again



On 5/16/23 1:14 PM, Arnd Bergmann wrote:
> From: Arnd Bergmann <[email protected]>
>
> The security_show() function was made global and __weak at some
> point to allow overriding it. The override was removed later, but
> it remains global, which causes a warning about the missing
> declaration:
>
> drivers/nvdimm/dimm_devs.c:352:9: error: no previous prototype for 'security_show'
>
> This is also not an appropriate name for a global symbol in the
> kernel, so just make it static again.
>
> Fixes: 15a8348707ff ("libnvdimm: Introduce CONFIG_NVDIMM_SECURITY_TEST flag")
> Signed-off-by: Arnd Bergmann <[email protected]>

Reviewed-by: Dave Jiang <[email protected]>
> ---
> drivers/nvdimm/dimm_devs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/nvdimm/dimm_devs.c b/drivers/nvdimm/dimm_devs.c
> index 957f7c3d17ba..10c3cb6a574a 100644
> --- a/drivers/nvdimm/dimm_devs.c
> +++ b/drivers/nvdimm/dimm_devs.c
> @@ -349,7 +349,7 @@ static ssize_t available_slots_show(struct device *dev,
> }
> static DEVICE_ATTR_RO(available_slots);
>
> -ssize_t security_show(struct device *dev,
> +static ssize_t security_show(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> struct nvdimm *nvdimm = to_nvdimm(dev);

2023-05-22 15:34:42

by Dave Jiang

[permalink] [raw]
Subject: Re: [PATCH 2/3] testing: nvdimm: add missing prototypes for wrapped functions



On 5/16/23 1:14 PM, Arnd Bergmann wrote:
> From: Arnd Bergmann <[email protected]>
>
> The nvdimm test wraps a number of API functions, but these functions
> don't have a prototype in a header because they are all called
> by a different name:
>
> drivers/nvdimm/../../tools/testing/nvdimm/test/iomap.c:74:15: error: no previous prototype for '__wrap_devm_ioremap' [-Werror=missing-prototypes]
> 74 | void __iomem *__wrap_devm_ioremap(struct device *dev,
> | ^~~~~~~~~~~~~~~~~~~
> drivers/nvdimm/../../tools/testing/nvdimm/test/iomap.c:86:7: error: no previous prototype for '__wrap_devm_memremap' [-Werror=missing-prototypes]
> 86 | void *__wrap_devm_memremap(struct device *dev, resource_size_t offset,
> | ^~~~~~~~~~~~~~~~~~~~
> ...
>
> Add prototypes to avoid the warning.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
Reviewed-by: Dave Jiang <[email protected]>

> ---
> tools/testing/nvdimm/test/nfit_test.h | 29 +++++++++++++++++++++++++++
> 1 file changed, 29 insertions(+)
>
> diff --git a/tools/testing/nvdimm/test/nfit_test.h b/tools/testing/nvdimm/test/nfit_test.h
> index b5f7a996c4d0..b00583d1eace 100644
> --- a/tools/testing/nvdimm/test/nfit_test.h
> +++ b/tools/testing/nvdimm/test/nfit_test.h
> @@ -207,7 +207,36 @@ typedef struct nfit_test_resource *(*nfit_test_lookup_fn)(resource_size_t);
> typedef union acpi_object *(*nfit_test_evaluate_dsm_fn)(acpi_handle handle,
> const guid_t *guid, u64 rev, u64 func,
> union acpi_object *argv4);
> +void __iomem *__wrap_devm_ioremap(struct device *dev,
> + resource_size_t offset, unsigned long size);
> +void *__wrap_devm_memremap(struct device *dev, resource_size_t offset,
> + size_t size, unsigned long flags);
> +void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap);
> +pfn_t __wrap_phys_to_pfn_t(phys_addr_t addr, unsigned long flags);
> +void *__wrap_memremap(resource_size_t offset, size_t size,
> + unsigned long flags);
> +void __wrap_devm_memunmap(struct device *dev, void *addr);
> +void __iomem *__wrap_ioremap(resource_size_t offset, unsigned long size);
> +void __iomem *__wrap_ioremap_wc(resource_size_t offset, unsigned long size);
> void __wrap_iounmap(volatile void __iomem *addr);
> +void __wrap_memunmap(void *addr);
> +struct resource *__wrap___request_region(struct resource *parent,
> + resource_size_t start, resource_size_t n, const char *name,
> + int flags);
> +int __wrap_insert_resource(struct resource *parent, struct resource *res);
> +int __wrap_remove_resource(struct resource *res);
> +struct resource *__wrap___devm_request_region(struct device *dev,
> + struct resource *parent, resource_size_t start,
> + resource_size_t n, const char *name);
> +void __wrap___release_region(struct resource *parent, resource_size_t start,
> + resource_size_t n);
> +void __wrap___devm_release_region(struct device *dev, struct resource *parent,
> + resource_size_t start, resource_size_t n);
> +acpi_status __wrap_acpi_evaluate_object(acpi_handle handle, acpi_string path,
> + struct acpi_object_list *p, struct acpi_buffer *buf);
> +union acpi_object * __wrap_acpi_evaluate_dsm(acpi_handle handle, const guid_t *guid,
> + u64 rev, u64 func, union acpi_object *argv4);
> +
> void nfit_test_setup(nfit_test_lookup_fn lookup,
> nfit_test_evaluate_dsm_fn evaluate);
> void nfit_test_teardown(void);

2023-06-05 17:26:59

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH 1/3] acpi: nfit: add declaration in a local header

On Mon, May 22, 2023 at 5:22 PM Dave Jiang <[email protected]> wrote:
>
>
>
> On 5/16/23 1:14 PM, Arnd Bergmann wrote:
> > From: Arnd Bergmann <[email protected]>
> >
> > The nfit_intel_shutdown_status() function has a __weak defintion
> > in nfit.c and an override in acpi_nfit_test.c for testing
> > purposes. This works without an extern declaration, but causes
> > a W=1 build warning:
> >
> > drivers/acpi/nfit/core.c:1717:13: error: no previous prototype for 'nfit_intel_shutdown_status' [-Werror=missing-prototypes]
> >
> > Add a declaration in a header that gets included from both
> > sides to shut up the warning and ensure that the prototypes
> > actually match.
> >
> > Signed-off-by: Arnd Bergmann <[email protected]>
>
> Reviewed-by: Dave Jiang <[email protected]>

Applied as 6.5 material, thanks!

> > ---
> > drivers/acpi/nfit/nfit.h | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/acpi/nfit/nfit.h b/drivers/acpi/nfit/nfit.h
> > index 6023ad61831a..573bc0de2990 100644
> > --- a/drivers/acpi/nfit/nfit.h
> > +++ b/drivers/acpi/nfit/nfit.h
> > @@ -347,4 +347,6 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
> > void acpi_nfit_desc_init(struct acpi_nfit_desc *acpi_desc, struct device *dev);
> > bool intel_fwa_supported(struct nvdimm_bus *nvdimm_bus);
> > extern struct device_attribute dev_attr_firmware_activate_noidle;
> > +void nfit_intel_shutdown_status(struct nfit_mem *nfit_mem);
> > +
> > #endif /* __NFIT_H__ */