Message ID | 20240122102157.22761-3-brgl@bgdev.pl |
---|---|
State | New |
Headers | show |
Series | arm64: qcom: add and enable SHM Bridge support | expand |
Hi Bartosz, kernel test robot noticed the following build errors: [auto build test ERROR on linus/master] [also build test ERROR on krzk-dt/for-next v6.8-rc2 next-20240202] [cannot apply to arm64/for-next/core] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Bartosz-Golaszewski/firmware-qcom-add-a-dedicated-TrustZone-buffer-allocator/20240122-182633 base: linus/master patch link: https://lore.kernel.org/r/20240122102157.22761-3-brgl%40bgdev.pl patch subject: [RESEND PATCH v6 02/12] firmware: qcom: scm: enable the TZ mem allocator config: i386-buildonly-randconfig-004-20240202 (https://download.01.org/0day-ci/archive/20240203/202402030101.nxmgLcAB-lkp@intel.com/config) compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240203/202402030101.nxmgLcAB-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202402030101.nxmgLcAB-lkp@intel.com/ All errors (new ones prefixed by >>): >> ld.lld: error: undefined symbol: gen_pool_create >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a -- >> ld.lld: error: undefined symbol: gen_pool_best_fit >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a -- >> ld.lld: error: undefined symbol: gen_pool_set_algo >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a -- >> ld.lld: error: undefined symbol: gen_pool_add_owner >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a -- >> ld.lld: error: undefined symbol: gen_pool_destroy >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_free) in archive vmlinux.a -- >> ld.lld: error: undefined symbol: gen_pool_alloc_algo_owner >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_alloc) in archive vmlinux.a -- >> ld.lld: error: undefined symbol: gen_pool_virt_to_phys >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_alloc) in archive vmlinux.a -- >> ld.lld: error: undefined symbol: gen_pool_free_owner >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_alloc) in archive vmlinux.a >>> referenced by qcom_tzmem.c >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_free) in archive vmlinux.a
On Fri, 2 Feb 2024 at 19:02, kernel test robot <lkp@intel.com> wrote: > > Hi Bartosz, > > kernel test robot noticed the following build errors: > > [auto build test ERROR on linus/master] > [also build test ERROR on krzk-dt/for-next v6.8-rc2 next-20240202] > [cannot apply to arm64/for-next/core] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch#_base_tree_information] > > url: https://github.com/intel-lab-lkp/linux/commits/Bartosz-Golaszewski/firmware-qcom-add-a-dedicated-TrustZone-buffer-allocator/20240122-182633 > base: linus/master > patch link: https://lore.kernel.org/r/20240122102157.22761-3-brgl%40bgdev.pl > patch subject: [RESEND PATCH v6 02/12] firmware: qcom: scm: enable the TZ mem allocator > config: i386-buildonly-randconfig-004-20240202 (https://download.01.org/0day-ci/archive/20240203/202402030101.nxmgLcAB-lkp@intel.com/config) > compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18) > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240203/202402030101.nxmgLcAB-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202402030101.nxmgLcAB-lkp@intel.com/ > > All errors (new ones prefixed by >>): > > >> ld.lld: error: undefined symbol: gen_pool_create > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a > -- > >> ld.lld: error: undefined symbol: gen_pool_best_fit > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a > -- > >> ld.lld: error: undefined symbol: gen_pool_set_algo > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a > -- > >> ld.lld: error: undefined symbol: gen_pool_add_owner > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a > -- > >> ld.lld: error: undefined symbol: gen_pool_destroy > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_new) in archive vmlinux.a > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_pool_free) in archive vmlinux.a > -- > >> ld.lld: error: undefined symbol: gen_pool_alloc_algo_owner > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_alloc) in archive vmlinux.a > -- > >> ld.lld: error: undefined symbol: gen_pool_virt_to_phys > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_alloc) in archive vmlinux.a > -- > >> ld.lld: error: undefined symbol: gen_pool_free_owner > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_alloc) in archive vmlinux.a > >>> referenced by qcom_tzmem.c > >>> drivers/firmware/qcom/qcom_tzmem.o:(qcom_tzmem_free) in archive vmlinux.a > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki Huh, strange that it took so long to report it. Seems like QCOM_TZMEM needs to select GENERIC_ALLOCATOR in Kconfig. Bart
diff --git a/drivers/firmware/qcom/Kconfig b/drivers/firmware/qcom/Kconfig index b80269a28224..237da40de832 100644 --- a/drivers/firmware/qcom/Kconfig +++ b/drivers/firmware/qcom/Kconfig @@ -7,6 +7,7 @@ menu "Qualcomm firmware drivers" config QCOM_SCM + select QCOM_TZMEM tristate config QCOM_TZMEM diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c index 520de9b5633a..0d4c028be0c1 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -8,8 +8,10 @@ #include <linux/completion.h> #include <linux/cpumask.h> #include <linux/dma-mapping.h> +#include <linux/err.h> #include <linux/export.h> #include <linux/firmware/qcom/qcom_scm.h> +#include <linux/firmware/qcom/qcom_tzmem.h> #include <linux/init.h> #include <linux/interconnect.h> #include <linux/interrupt.h> @@ -20,9 +22,11 @@ #include <linux/of_platform.h> #include <linux/platform_device.h> #include <linux/reset-controller.h> +#include <linux/sizes.h> #include <linux/types.h> #include "qcom_scm.h" +#include "qcom_tzmem.h" static bool download_mode = IS_ENABLED(CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT); module_param(download_mode, bool, 0); @@ -41,6 +45,8 @@ struct qcom_scm { int scm_vote_count; u64 dload_mode_addr; + + struct qcom_tzmem_pool *mempool; }; struct qcom_scm_current_perm_info { @@ -1887,6 +1893,16 @@ static int qcom_scm_probe(struct platform_device *pdev) if (of_property_read_bool(pdev->dev.of_node, "qcom,sdi-enabled")) qcom_scm_disable_sdi(); + ret = qcom_tzmem_enable(__scm->dev); + if (ret) + return dev_err_probe(__scm->dev, ret, + "Failed to enable the TrustZone memory allocator\n"); + + __scm->mempool = devm_qcom_tzmem_pool_new(__scm->dev, SZ_256K); + if (IS_ERR(__scm->mempool)) + return dev_err_probe(__scm->dev, PTR_ERR(__scm->mempool), + "Failed to create the SCM memory pool\n"); + /* * Initialize the QSEECOM interface. *