Message ID | 1501853664-10752-1-git-send-email-yamada.masahiro@socionext.com |
---|---|
State | New |
Headers | show |
On Fri, Aug 4, 2017 at 3:34 PM, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > Include mmci_qcom_dml.h from mmci_qcom_dml.c to fix the following > sparse warnings: > > CHECK drivers/mmc/host/mmci_qcom_dml.c > drivers/mmc/host/mmci_qcom_dml.c:57:6: warning: symbol 'dml_start_xfer' was not declared. Should it be static? > drivers/mmc/host/mmci_qcom_dml.c:122:5: warning: symbol 'dml_hw_init' was not declared. Should it be static? > > Fixing them causes redefintion of dml_start_xfer error, revealing another > problem in the header. #ifdef CONFIG_MMC_QCOM_DML is wrong because this > driver is tristate. (CONFIG_MMC_QCOM_DML_MODULE is defined when it is > built as a module) > > Since dml_hw_init() is called from mmci.c, IS_REACHABLE() is needed to > cater to all the combinations. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> I think this is still not a good solution, it will just turn a link error into an unusable system at runtime when the DML code is a loadable module but not used. Also, the symbols are not exported, so it won't work when both are built as modules. How about linking the DML code into the mmci module and making that Kconfig option a 'bool'? Another small problem I found is the use of writel_relaxed() that might be unsafe here and is not explained anywhere. Finally, I can't find any record of the 9cb15142d0e3 ("mmc: mmci: Add qcom dml support to the driver.") patch in the archives of the relevant mailing lists I'm subscribed to (linux-mmc, linux-kernel or linux-arm-kernel). Was it posted there recently? Was Russell on Cc on the patch? The only record I find using google is for the patch from 2014, in https://patchwork.kernel.org/patch/4638221/ Ulf said he queued the patch for linux-3.18. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Arnd, 2017-08-05 7:10 GMT+09:00 Arnd Bergmann <arnd@arndb.de>: > On Fri, Aug 4, 2017 at 3:34 PM, Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: >> Include mmci_qcom_dml.h from mmci_qcom_dml.c to fix the following >> sparse warnings: >> >> CHECK drivers/mmc/host/mmci_qcom_dml.c >> drivers/mmc/host/mmci_qcom_dml.c:57:6: warning: symbol 'dml_start_xfer' was not declared. Should it be static? >> drivers/mmc/host/mmci_qcom_dml.c:122:5: warning: symbol 'dml_hw_init' was not declared. Should it be static? >> >> Fixing them causes redefintion of dml_start_xfer error, revealing another >> problem in the header. #ifdef CONFIG_MMC_QCOM_DML is wrong because this >> driver is tristate. (CONFIG_MMC_QCOM_DML_MODULE is defined when it is >> built as a module) >> >> Since dml_hw_init() is called from mmci.c, IS_REACHABLE() is needed to >> cater to all the combinations. >> >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > > I think this is still not a good solution, it will just turn a link error into > an unusable system at runtime when the DML code is a loadable module > but not used. Also, the symbols are not exported, so it won't work when both > are built as modules. > How about linking the DML code into the mmci module and making that > Kconfig option a 'bool'? You are right. My patch does not solve the root of the problem. It turned out not so trivial as I had first expected. I'd like somebody else to take care of it because I am not familiar with this driver. (My first motivation was clean-up sparse reports, and I thought it was easy to fix it, but it was not.) -- Best Regards Masahiro Yamada -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, Aug 6, 2017 at 4:58 AM, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > 2017-08-05 7:10 GMT+09:00 Arnd Bergmann <arnd@arndb.de>: >> On Fri, Aug 4, 2017 at 3:34 PM, Masahiro Yamada >> <yamada.masahiro@socionext.com> wrote: >>> Include mmci_qcom_dml.h from mmci_qcom_dml.c to fix the following >>> sparse warnings: >>> >>> CHECK drivers/mmc/host/mmci_qcom_dml.c >>> drivers/mmc/host/mmci_qcom_dml.c:57:6: warning: symbol 'dml_start_xfer' was not declared. Should it be static? >>> drivers/mmc/host/mmci_qcom_dml.c:122:5: warning: symbol 'dml_hw_init' was not declared. Should it be static? >>> >>> Fixing them causes redefintion of dml_start_xfer error, revealing another >>> problem in the header. #ifdef CONFIG_MMC_QCOM_DML is wrong because this >>> driver is tristate. (CONFIG_MMC_QCOM_DML_MODULE is defined when it is >>> built as a module) >>> >>> Since dml_hw_init() is called from mmci.c, IS_REACHABLE() is needed to >>> cater to all the combinations. >>> >>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> >> >> I think this is still not a good solution, it will just turn a link error into >> an unusable system at runtime when the DML code is a loadable module >> but not used. Also, the symbols are not exported, so it won't work when both >> are built as modules. >> How about linking the DML code into the mmci module and making that >> Kconfig option a 'bool'? > > > You are right. > My patch does not solve the root of the problem. > > It turned out not so trivial as I had first expected. > > I'd like somebody else to take care of it > because I am not familiar with this driver. Maybe it's best if Ulf just reverts the broken commit, and then we start over with reviewing the patch properly. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 6 August 2017 at 11:32, Arnd Bergmann <arnd@arndb.de> wrote: > On Sun, Aug 6, 2017 at 4:58 AM, Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: >> 2017-08-05 7:10 GMT+09:00 Arnd Bergmann <arnd@arndb.de>: >>> On Fri, Aug 4, 2017 at 3:34 PM, Masahiro Yamada >>> <yamada.masahiro@socionext.com> wrote: >>>> Include mmci_qcom_dml.h from mmci_qcom_dml.c to fix the following >>>> sparse warnings: >>>> >>>> CHECK drivers/mmc/host/mmci_qcom_dml.c >>>> drivers/mmc/host/mmci_qcom_dml.c:57:6: warning: symbol 'dml_start_xfer' was not declared. Should it be static? >>>> drivers/mmc/host/mmci_qcom_dml.c:122:5: warning: symbol 'dml_hw_init' was not declared. Should it be static? >>>> >>>> Fixing them causes redefintion of dml_start_xfer error, revealing another >>>> problem in the header. #ifdef CONFIG_MMC_QCOM_DML is wrong because this >>>> driver is tristate. (CONFIG_MMC_QCOM_DML_MODULE is defined when it is >>>> built as a module) >>>> >>>> Since dml_hw_init() is called from mmci.c, IS_REACHABLE() is needed to >>>> cater to all the combinations. >>>> >>>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> >>> >>> I think this is still not a good solution, it will just turn a link error into >>> an unusable system at runtime when the DML code is a loadable module >>> but not used. Also, the symbols are not exported, so it won't work when both >>> are built as modules. >>> How about linking the DML code into the mmci module and making that >>> Kconfig option a 'bool'? >> >> >> You are right. >> My patch does not solve the root of the problem. >> >> It turned out not so trivial as I had first expected. >> >> I'd like somebody else to take care of it >> because I am not familiar with this driver. > > Maybe it's best if Ulf just reverts the broken commit, and then we start > over with reviewing the patch properly. The broken commit is reverted, however I will just drop both the bad commit and its revert next time I rebase my next branch. Kind regards Uffe -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 04/08/17 23:10, Arnd Bergmann wrote: > How about linking the DML code into the mmci module and making that > Kconfig option a 'bool'? Yes, I think making this bool and exporting the two symbols should fix this. It does not make sense to make dml helpers a module anyway. If it sounds okay, I can send a proper patch to fix this. ------------------------>cut<----------------------------------- { @@ -175,3 +176,4 @@ int dml_hw_init(struct mmci_host *host, struct device_node *np) return 0; ------------------------>cut<----------------------------------- thanks, srini -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmldiff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig index 5755b69..3345384 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -15,7 +15,7 @@ config MMC_ARMMMCI If unsure, say N. config MMC_QCOM_DML - tristate "Qualcomm Data Mover for SD Card Controller" + bool "Qualcomm Data Mover for SD Card Controller" depends on MMC_ARMMMCI && QCOM_BAM_DMA default y help diff --git a/drivers/mmc/host/mmci_qcom_dml.c b/drivers/mmc/host/mmci_qcom_dml.c index 00750c9..e7d9c74 100644 --- a/drivers/mmc/host/mmci_qcom_dml.c +++ b/drivers/mmc/host/mmci_qcom_dml.c @@ -97,6 +97,7 @@ void dml_start_xfer(struct mmci_host *host, struct mmc_data *data) /* make sure the dml is configured before dma is triggered */ wmb(); } +EXPORT_SYMBOL_GPL(dml_start_xfer); static int of_get_dml_pipe_index(struct device_node *np, const char *name)
Hi Masahiro, [auto build test ERROR on linus/master] [also build test ERROR on v4.13-rc3 next-20170804] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Masahiro-Yamada/mmc-mmci_qcom_dml-include-mmci_qcom_dml-h-and-fix-ifdef/20170805-173714 config: arm-allmodconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm All errors (new ones prefixed by >>): >> ERROR: "dml_hw_init" [drivers/mmc/host/mmci.ko] undefined! >> ERROR: "dml_start_xfer" [drivers/mmc/host/mmci.ko] undefined! --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/mmc/host/mmci_qcom_dml.c b/drivers/mmc/host/mmci_qcom_dml.c index 00750c9d3514..95de699853d2 100644 --- a/drivers/mmc/host/mmci_qcom_dml.c +++ b/drivers/mmc/host/mmci_qcom_dml.c @@ -18,6 +18,7 @@ #include <linux/mmc/host.h> #include <linux/mmc/card.h> #include "mmci.h" +#include "mmci_qcom_dml.h" /* Registers */ #define DML_CONFIG 0x00 diff --git a/drivers/mmc/host/mmci_qcom_dml.h b/drivers/mmc/host/mmci_qcom_dml.h index 6e405d09d534..d5e88f102ba3 100644 --- a/drivers/mmc/host/mmci_qcom_dml.h +++ b/drivers/mmc/host/mmci_qcom_dml.h @@ -15,7 +15,7 @@ #ifndef __MMC_QCOM_DML_H__ #define __MMC_QCOM_DML_H__ -#ifdef CONFIG_MMC_QCOM_DML +#if IS_REACHABLE(CONFIG_MMC_QCOM_DML) int dml_hw_init(struct mmci_host *host, struct device_node *np); void dml_start_xfer(struct mmci_host *host, struct mmc_data *data); #else
Include mmci_qcom_dml.h from mmci_qcom_dml.c to fix the following sparse warnings: CHECK drivers/mmc/host/mmci_qcom_dml.c drivers/mmc/host/mmci_qcom_dml.c:57:6: warning: symbol 'dml_start_xfer' was not declared. Should it be static? drivers/mmc/host/mmci_qcom_dml.c:122:5: warning: symbol 'dml_hw_init' was not declared. Should it be static? Fixing them causes redefintion of dml_start_xfer error, revealing another problem in the header. #ifdef CONFIG_MMC_QCOM_DML is wrong because this driver is tristate. (CONFIG_MMC_QCOM_DML_MODULE is defined when it is built as a module) Since dml_hw_init() is called from mmci.c, IS_REACHABLE() is needed to cater to all the combinations. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- Changes in v2: - Fix error reported by kbuild test robot (this patch is intended to replace commit 64f0aacb in linux-mmc/fixes drivers/mmc/host/mmci_qcom_dml.c | 1 + drivers/mmc/host/mmci_qcom_dml.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html