Message ID | 20180508073852.16840-1-anders.roxell@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | i2c: i801: mark PM functions as __maybe_unused | expand |
Hi Anders, On Tue, 8 May 2018 09:38:52 +0200, Anders Roxell wrote: > With CONFIG_PM, we get a harmless build warning: > drivers/i2c/busses/i2c-i801.c:1723:12: warning: ‘i801_resume’ defined but not used [-Wunused-function] > static int i801_resume(struct device *dev) > ^~~~~~~~~~~ > drivers/i2c/busses/i2c-i801.c:1714:12: warning: ‘i801_suspend’ defined but not used [-Wunused-function] > static int i801_suspend(struct device *dev) > ^~~~~~~~~~~~ I have CONFIG_PM=y and I don't get this warning, even with W=1. Which gcc version are you using, which exact kernel version are you building, and what is the value of all the CONFIG_PM_* options? > This marks the affected functions as __maybe_unused. I'm not a big fan of __maybe_unused, at least not in this specific situation. We should be able to know exactly when these functions are needed, and only include them when this is the case. Building unused code just to discard it later (hopefully?) is a waste of CPU time. > > Fixes: a9c8088c7988 ("i2c: i801: Don't restore config registers on runtime PM") If SIMPLE_DEV_PM_OPS causes it but UNIVERSAL_DEV_PM_OPS did not, I suppose that what matters is CONFIG_PM_SLEEP. So maybe we can just replace "#ifdef CONFIG_PM" with "ifdef CONFIG_PM_SLEEP" in the code below? > Signed-off-by: Anders Roxell <anders.roxell@linaro.org> > --- > drivers/i2c/busses/i2c-i801.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c > index ed07f9002710..ff18c6ed2bec 100644 > --- a/drivers/i2c/busses/i2c-i801.c > +++ b/drivers/i2c/busses/i2c-i801.c > @@ -1711,7 +1711,7 @@ static void i801_shutdown(struct pci_dev *dev) > } > > #ifdef CONFIG_PM > -static int i801_suspend(struct device *dev) > +static int __maybe_unused i801_suspend(struct device *dev) > { > struct pci_dev *pci_dev = to_pci_dev(dev); > struct i801_priv *priv = pci_get_drvdata(pci_dev); > @@ -1720,7 +1720,7 @@ static int i801_suspend(struct device *dev) > return 0; > } > > -static int i801_resume(struct device *dev) > +static int __maybe_unused i801_resume(struct device *dev) > { > struct pci_dev *pci_dev = to_pci_dev(dev); > struct i801_priv *priv = pci_get_drvdata(pci_dev);
On Wed, 9 May 2018 19:00:55 +0200, Jean Delvare wrote: > If SIMPLE_DEV_PM_OPS causes it but UNIVERSAL_DEV_PM_OPS did not, I > suppose that what matters is CONFIG_PM_SLEEP. > > So maybe we can just replace "#ifdef CONFIG_PM" with "ifdef > CONFIG_PM_SLEEP" in the code below? It seems that drivers i2c-brcmstb, i2c-mpc, i2c-ocores, i2c-pnx, i2c-puv3, i2c-st, i2c-stu300 and i2c-mux-pca954x are doing exactly that already, so that must be a valid way to solve the problem. Will you send a new patch? Thanks,
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index ed07f9002710..ff18c6ed2bec 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c @@ -1711,7 +1711,7 @@ static void i801_shutdown(struct pci_dev *dev) } #ifdef CONFIG_PM -static int i801_suspend(struct device *dev) +static int __maybe_unused i801_suspend(struct device *dev) { struct pci_dev *pci_dev = to_pci_dev(dev); struct i801_priv *priv = pci_get_drvdata(pci_dev); @@ -1720,7 +1720,7 @@ static int i801_suspend(struct device *dev) return 0; } -static int i801_resume(struct device *dev) +static int __maybe_unused i801_resume(struct device *dev) { struct pci_dev *pci_dev = to_pci_dev(dev); struct i801_priv *priv = pci_get_drvdata(pci_dev);
With CONFIG_PM, we get a harmless build warning: drivers/i2c/busses/i2c-i801.c:1723:12: warning: ‘i801_resume’ defined but not used [-Wunused-function] static int i801_resume(struct device *dev) ^~~~~~~~~~~ drivers/i2c/busses/i2c-i801.c:1714:12: warning: ‘i801_suspend’ defined but not used [-Wunused-function] static int i801_suspend(struct device *dev) ^~~~~~~~~~~~ This marks the affected functions as __maybe_unused. Fixes: a9c8088c7988 ("i2c: i801: Don't restore config registers on runtime PM") Signed-off-by: Anders Roxell <anders.roxell@linaro.org> --- drivers/i2c/busses/i2c-i801.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)