All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Yang Li <yang.lee@linux.alibaba.com>
Cc: oe-kbuild-all@lists.linux.dev,
	Linux Memory Management List <linux-mm@kvack.org>,
	Herbert Xu <herbert@gondor.apana.org.au>
Subject: [linux-next:master 2408/3406] drivers/crypto/ccree/cc_driver.c:354: undefined reference to `devm_platform_get_and_ioremap_resource'
Date: Thu, 16 Mar 2023 15:30:30 +0800	[thread overview]
Message-ID: <202303161507.ZUkKisp2-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   6f72958a49f68553f2b6ff713e8c8e51a34c1e1e
commit: 0c70bc9dedd441b7dc0efc7426d2f5adbdd1b8e4 [2408/3406] crypto: ccree - Use devm_platform_get_and_ioremap_resource()
config: s390-randconfig-r016-20230312 (https://download.01.org/0day-ci/archive/20230316/202303161507.ZUkKisp2-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=0c70bc9dedd441b7dc0efc7426d2f5adbdd1b8e4
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout 0c70bc9dedd441b7dc0efc7426d2f5adbdd1b8e4
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=s390 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303161507.ZUkKisp2-lkp@intel.com/

All errors (new ones prefixed by >>):

   s390-linux-ld: kernel/dma/coherent.o: in function `dma_init_coherent_memory':
   kernel/dma/coherent.c:48: undefined reference to `memremap'
   s390-linux-ld: kernel/dma/coherent.c:71: undefined reference to `memunmap'
   s390-linux-ld: kernel/dma/coherent.o: in function `_dma_release_coherent_memory':
   kernel/dma/coherent.c:82: undefined reference to `memunmap'
   s390-linux-ld: kernel/dma/coherent.c:82: undefined reference to `memunmap'
   s390-linux-ld: drivers/irqchip/irq-al-fic.o: in function `al_fic_init_dt':
   drivers/irqchip/irq-al-fic.c:252: undefined reference to `of_iomap'
   s390-linux-ld: drivers/irqchip/irq-al-fic.c:282: undefined reference to `iounmap'
   s390-linux-ld: drivers/char/xillybus/xillybus_of.o: in function `xilly_drv_probe':
   drivers/char/xillybus/xillybus_of.c:50: undefined reference to `devm_platform_ioremap_resource'
   s390-linux-ld: drivers/misc/open-dice.o: in function `open_dice_wipe':
   drivers/misc/open-dice.c:48: undefined reference to `devm_memremap'
   s390-linux-ld: drivers/misc/open-dice.c:56: undefined reference to `devm_memunmap'
   s390-linux-ld: drivers/crypto/ccree/cc_driver.o: in function `init_cc_resources':
>> drivers/crypto/ccree/cc_driver.c:354: undefined reference to `devm_platform_get_and_ioremap_resource'
   s390-linux-ld: drivers/crypto/ccree/cc_debugfs.o: in function `cc_debugfs_init':
   drivers/crypto/ccree/cc_debugfs.c:80: undefined reference to `debugfs_create_regset32'
   s390-linux-ld: drivers/crypto/ccree/cc_debugfs.c:100: undefined reference to `debugfs_create_regset32'


vim +354 drivers/crypto/ccree/cc_driver.c

   306	
   307	static int init_cc_resources(struct platform_device *plat_dev)
   308	{
   309		struct resource *req_mem_cc_regs = NULL;
   310		struct cc_drvdata *new_drvdata;
   311		struct device *dev = &plat_dev->dev;
   312		struct device_node *np = dev->of_node;
   313		u32 val, hw_rev_pidr, sig_cidr;
   314		u64 dma_mask;
   315		const struct cc_hw_data *hw_rev;
   316		struct clk *clk;
   317		int irq;
   318		int rc = 0;
   319	
   320		new_drvdata = devm_kzalloc(dev, sizeof(*new_drvdata), GFP_KERNEL);
   321		if (!new_drvdata)
   322			return -ENOMEM;
   323	
   324		hw_rev = of_device_get_match_data(dev);
   325		new_drvdata->hw_rev_name = hw_rev->name;
   326		new_drvdata->hw_rev = hw_rev->rev;
   327		new_drvdata->std_bodies = hw_rev->std_bodies;
   328	
   329		if (hw_rev->rev >= CC_HW_REV_712) {
   330			new_drvdata->axim_mon_offset = CC_REG(AXIM_MON_COMP);
   331			new_drvdata->sig_offset = CC_REG(HOST_SIGNATURE_712);
   332			new_drvdata->ver_offset = CC_REG(HOST_VERSION_712);
   333		} else {
   334			new_drvdata->axim_mon_offset = CC_REG(AXIM_MON_COMP8);
   335			new_drvdata->sig_offset = CC_REG(HOST_SIGNATURE_630);
   336			new_drvdata->ver_offset = CC_REG(HOST_VERSION_630);
   337		}
   338	
   339		new_drvdata->comp_mask = CC_COMP_IRQ_MASK;
   340	
   341		platform_set_drvdata(plat_dev, new_drvdata);
   342		new_drvdata->plat_dev = plat_dev;
   343	
   344		clk = devm_clk_get_optional(dev, NULL);
   345		if (IS_ERR(clk))
   346			return dev_err_probe(dev, PTR_ERR(clk), "Error getting clock\n");
   347		new_drvdata->clk = clk;
   348	
   349		new_drvdata->coherent = of_dma_is_coherent(np);
   350	
   351		/* Get device resources */
   352		/* First CC registers space */
   353		/* Map registers space */
 > 354		new_drvdata->cc_base = devm_platform_get_and_ioremap_resource(plat_dev,
   355									      0, &req_mem_cc_regs);
   356		if (IS_ERR(new_drvdata->cc_base))
   357			return PTR_ERR(new_drvdata->cc_base);
   358	
   359		dev_dbg(dev, "Got MEM resource (%s): %pR\n", req_mem_cc_regs->name,
   360			req_mem_cc_regs);
   361		dev_dbg(dev, "CC registers mapped from %pa to 0x%p\n",
   362			&req_mem_cc_regs->start, new_drvdata->cc_base);
   363	
   364		/* Then IRQ */
   365		irq = platform_get_irq(plat_dev, 0);
   366		if (irq < 0)
   367			return irq;
   368	
   369		init_completion(&new_drvdata->hw_queue_avail);
   370	
   371		if (!dev->dma_mask)
   372			dev->dma_mask = &dev->coherent_dma_mask;
   373	
   374		dma_mask = DMA_BIT_MASK(DMA_BIT_MASK_LEN);
   375		rc = dma_set_coherent_mask(dev, dma_mask);
   376		if (rc) {
   377			dev_err(dev, "Failed in dma_set_coherent_mask, mask=%llx\n",
   378				dma_mask);
   379			return rc;
   380		}
   381	
   382		rc = clk_prepare_enable(new_drvdata->clk);
   383		if (rc) {
   384			dev_err(dev, "Failed to enable clock");
   385			return rc;
   386		}
   387	
   388		new_drvdata->sec_disabled = cc_sec_disable;
   389	
   390		pm_runtime_set_autosuspend_delay(dev, CC_SUSPEND_TIMEOUT);
   391		pm_runtime_use_autosuspend(dev);
   392		pm_runtime_set_active(dev);
   393		pm_runtime_enable(dev);
   394		rc = pm_runtime_get_sync(dev);
   395		if (rc < 0) {
   396			dev_err(dev, "pm_runtime_get_sync() failed: %d\n", rc);
   397			goto post_pm_err;
   398		}
   399	
   400		/* Wait for Cryptocell reset completion */
   401		if (!cc_wait_for_reset_completion(new_drvdata)) {
   402			dev_err(dev, "Cryptocell reset not completed");
   403		}
   404	
   405		if (hw_rev->rev <= CC_HW_REV_712) {
   406			/* Verify correct mapping */
   407			val = cc_ioread(new_drvdata, new_drvdata->sig_offset);
   408			if (val != hw_rev->sig) {
   409				dev_err(dev, "Invalid CC signature: SIGNATURE=0x%08X != expected=0x%08X\n",
   410					val, hw_rev->sig);
   411				rc = -EINVAL;
   412				goto post_pm_err;
   413			}
   414			sig_cidr = val;
   415			hw_rev_pidr = cc_ioread(new_drvdata, new_drvdata->ver_offset);
   416		} else {
   417			/* Verify correct mapping */
   418			val = cc_read_idr(new_drvdata, pidr_0124_offsets);
   419			if (val != hw_rev->pidr_0124) {
   420				dev_err(dev, "Invalid CC PIDR: PIDR0124=0x%08X != expected=0x%08X\n",
   421					val,  hw_rev->pidr_0124);
   422				rc = -EINVAL;
   423				goto post_pm_err;
   424			}
   425			hw_rev_pidr = val;
   426	
   427			val = cc_read_idr(new_drvdata, cidr_0123_offsets);
   428			if (val != hw_rev->cidr_0123) {
   429				dev_err(dev, "Invalid CC CIDR: CIDR0123=0x%08X != expected=0x%08X\n",
   430				val,  hw_rev->cidr_0123);
   431				rc = -EINVAL;
   432				goto post_pm_err;
   433			}
   434			sig_cidr = val;
   435	
   436			/* Check HW engine configuration */
   437			val = cc_ioread(new_drvdata, CC_REG(HOST_REMOVE_INPUT_PINS));
   438			switch (val) {
   439			case CC_PINS_FULL:
   440				/* This is fine */
   441				break;
   442			case CC_PINS_SLIM:
   443				if (new_drvdata->std_bodies & CC_STD_NIST) {
   444					dev_warn(dev, "703 mode forced due to HW configuration.\n");
   445					new_drvdata->std_bodies = CC_STD_OSCCA;
   446				}
   447				break;
   448			default:
   449				dev_err(dev, "Unsupported engines configuration.\n");
   450				rc = -EINVAL;
   451				goto post_pm_err;
   452			}
   453	
   454			/* Check security disable state */
   455			val = cc_ioread(new_drvdata, CC_REG(SECURITY_DISABLED));
   456			val &= CC_SECURITY_DISABLED_MASK;
   457			new_drvdata->sec_disabled |= !!val;
   458	
   459			if (!new_drvdata->sec_disabled) {
   460				new_drvdata->comp_mask |= CC_CPP_SM4_ABORT_MASK;
   461				if (new_drvdata->std_bodies & CC_STD_NIST)
   462					new_drvdata->comp_mask |= CC_CPP_AES_ABORT_MASK;
   463			}
   464		}
   465	
   466		if (new_drvdata->sec_disabled)
   467			dev_info(dev, "Security Disabled mode is in effect. Security functions disabled.\n");
   468	
   469		/* Display HW versions */
   470		dev_info(dev, "ARM CryptoCell %s Driver: HW version 0x%08X/0x%8X, Driver version %s\n",
   471			 hw_rev->name, hw_rev_pidr, sig_cidr, DRV_MODULE_VERSION);
   472		/* register the driver isr function */
   473		rc = devm_request_irq(dev, irq, cc_isr, IRQF_SHARED, "ccree",
   474				      new_drvdata);
   475		if (rc) {
   476			dev_err(dev, "Could not register to interrupt %d\n", irq);
   477			goto post_pm_err;
   478		}
   479		dev_dbg(dev, "Registered to IRQ: %d\n", irq);
   480	
   481		init_cc_cache_params(new_drvdata);
   482	
   483		rc = init_cc_regs(new_drvdata);
   484		if (rc) {
   485			dev_err(dev, "init_cc_regs failed\n");
   486			goto post_pm_err;
   487		}
   488	
   489		rc = cc_debugfs_init(new_drvdata);
   490		if (rc) {
   491			dev_err(dev, "Failed registering debugfs interface\n");
   492			goto post_regs_err;
   493		}
   494	
   495		rc = cc_fips_init(new_drvdata);
   496		if (rc) {
   497			dev_err(dev, "cc_fips_init failed 0x%x\n", rc);
   498			goto post_debugfs_err;
   499		}
   500		rc = cc_sram_mgr_init(new_drvdata);
   501		if (rc) {
   502			dev_err(dev, "cc_sram_mgr_init failed\n");
   503			goto post_fips_init_err;
   504		}
   505	
   506		new_drvdata->mlli_sram_addr =
   507			cc_sram_alloc(new_drvdata, MAX_MLLI_BUFF_SIZE);
   508		if (new_drvdata->mlli_sram_addr == NULL_SRAM_ADDR) {
   509			rc = -ENOMEM;
   510			goto post_fips_init_err;
   511		}
   512	
   513		rc = cc_req_mgr_init(new_drvdata);
   514		if (rc) {
   515			dev_err(dev, "cc_req_mgr_init failed\n");
   516			goto post_fips_init_err;
   517		}
   518	
   519		rc = cc_buffer_mgr_init(new_drvdata);
   520		if (rc) {
   521			dev_err(dev, "cc_buffer_mgr_init failed\n");
   522			goto post_req_mgr_err;
   523		}
   524	
   525		/* hash must be allocated first due to use of send_request_init()
   526		 * and dependency of AEAD on it
   527		 */
   528		rc = cc_hash_alloc(new_drvdata);
   529		if (rc) {
   530			dev_err(dev, "cc_hash_alloc failed\n");
   531			goto post_buf_mgr_err;
   532		}
   533	
   534		/* Allocate crypto algs */
   535		rc = cc_cipher_alloc(new_drvdata);
   536		if (rc) {
   537			dev_err(dev, "cc_cipher_alloc failed\n");
   538			goto post_hash_err;
   539		}
   540	
   541		rc = cc_aead_alloc(new_drvdata);
   542		if (rc) {
   543			dev_err(dev, "cc_aead_alloc failed\n");
   544			goto post_cipher_err;
   545		}
   546	
   547		/* If we got here and FIPS mode is enabled
   548		 * it means all FIPS test passed, so let TEE
   549		 * know we're good.
   550		 */
   551		cc_set_ree_fips_status(new_drvdata, true);
   552	
   553		pm_runtime_put(dev);
   554		return 0;
   555	
   556	post_cipher_err:
   557		cc_cipher_free(new_drvdata);
   558	post_hash_err:
   559		cc_hash_free(new_drvdata);
   560	post_buf_mgr_err:
   561		 cc_buffer_mgr_fini(new_drvdata);
   562	post_req_mgr_err:
   563		cc_req_mgr_fini(new_drvdata);
   564	post_fips_init_err:
   565		cc_fips_fini(new_drvdata);
   566	post_debugfs_err:
   567		cc_debugfs_fini(new_drvdata);
   568	post_regs_err:
   569		fini_cc_regs(new_drvdata);
   570	post_pm_err:
   571		pm_runtime_put_noidle(dev);
   572		pm_runtime_disable(dev);
   573		pm_runtime_set_suspended(dev);
   574		clk_disable_unprepare(new_drvdata->clk);
   575		return rc;
   576	}
   577	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

                 reply	other threads:[~2023-03-16  7:31 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202303161507.ZUkKisp2-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-mm@kvack.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=yang.lee@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.