Messages in this thread | | | From | Marc-André Lureau <> | Date | Wed, 28 Feb 2018 15:22:51 +0100 | Subject | Re: [PATCH] fw_cfg: avoid unused function warning |
| |
Hi
On Wed, Feb 28, 2018 at 2:33 PM, Arnd Bergmann <arnd@arndb.de> wrote: > The newly introduced fw_cfg_dma_transfer() function is unused when > CONFIG_CRASH_CORE is disabled: > > drivers/firmware/qemu_fw_cfg.c:89:16: error: 'fw_cfg_dma_transfer' defined but not used [-Werror=unused-function] > static ssize_t fw_cfg_dma_transfer(void *address, u32 length, u32 control) > > This moves it into the #ifdef section that hides its caller to avoid the > warning. > > Fixes: 47e78bfb5426 ("fw_cfg: write vmcoreinfo details") > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
I don't know from which tree you found this, I suppose from mst/linux-next (which btw, I don't know which version got partially applied).
This is a regression in v13, because dma read is last patch now, as RFC. Fixed in upcoming v16.
thanks
> --- > drivers/firmware/qemu_fw_cfg.c | 60 +++++++++++++++++++++--------------------- > 1 file changed, 30 insertions(+), 30 deletions(-) > > diff --git a/drivers/firmware/qemu_fw_cfg.c b/drivers/firmware/qemu_fw_cfg.c > index 3015e77aebca..f002bb40519b 100644 > --- a/drivers/firmware/qemu_fw_cfg.c > +++ b/drivers/firmware/qemu_fw_cfg.c > @@ -66,6 +66,36 @@ static void fw_cfg_sel_endianness(u16 key) > iowrite16(key, fw_cfg_reg_ctrl); > } > > +/* read chunk of given fw_cfg blob (caller responsible for sanity-check) */ > +static ssize_t fw_cfg_read_blob(u16 key, > + void *buf, loff_t pos, size_t count) > +{ > + u32 glk = -1U; > + acpi_status status; > + > + /* If we have ACPI, ensure mutual exclusion against any potential > + * device access by the firmware, e.g. via AML methods: > + */ > + status = acpi_acquire_global_lock(ACPI_WAIT_FOREVER, &glk); > + if (ACPI_FAILURE(status) && status != AE_NOT_CONFIGURED) { > + /* Should never get here */ > + WARN(1, "fw_cfg_read_blob: Failed to lock ACPI!\n"); > + memset(buf, 0, count); > + return -EINVAL; > + } > + > + mutex_lock(&fw_cfg_dev_lock); > + fw_cfg_sel_endianness(key); > + while (pos-- > 0) > + ioread8(fw_cfg_reg_data); > + ioread8_rep(fw_cfg_reg_data, buf, count); > + mutex_unlock(&fw_cfg_dev_lock); > + > + acpi_release_global_lock(glk); > + return count; > +} > + > +#ifdef CONFIG_CRASH_CORE > static inline bool fw_cfg_dma_enabled(void) > { > return (fw_cfg_rev & FW_CFG_VERSION_DMA) && fw_cfg_reg_dma; > @@ -124,36 +154,6 @@ static ssize_t fw_cfg_dma_transfer(void *address, u32 length, u32 control) > return ret; > } > > -/* read chunk of given fw_cfg blob (caller responsible for sanity-check) */ > -static ssize_t fw_cfg_read_blob(u16 key, > - void *buf, loff_t pos, size_t count) > -{ > - u32 glk = -1U; > - acpi_status status; > - > - /* If we have ACPI, ensure mutual exclusion against any potential > - * device access by the firmware, e.g. via AML methods: > - */ > - status = acpi_acquire_global_lock(ACPI_WAIT_FOREVER, &glk); > - if (ACPI_FAILURE(status) && status != AE_NOT_CONFIGURED) { > - /* Should never get here */ > - WARN(1, "fw_cfg_read_blob: Failed to lock ACPI!\n"); > - memset(buf, 0, count); > - return -EINVAL; > - } > - > - mutex_lock(&fw_cfg_dev_lock); > - fw_cfg_sel_endianness(key); > - while (pos-- > 0) > - ioread8(fw_cfg_reg_data); > - ioread8_rep(fw_cfg_reg_data, buf, count); > - mutex_unlock(&fw_cfg_dev_lock); > - > - acpi_release_global_lock(glk); > - return count; > -} > - > -#ifdef CONFIG_CRASH_CORE > /* write chunk of given fw_cfg blob (caller responsible for sanity-check) */ > static ssize_t fw_cfg_write_blob(u16 key, > void *buf, loff_t pos, size_t count) > -- > 2.9.0 >
| |