All of lore.kernel.org
 help / color / mirror / Atom feed
* [pci:pci/virtualization 10/11] drivers//pci/quirks.c:3705:13: error: implicit declaration of function 'readq'; did you mean 'readl'?
@ 2018-08-09 19:19 kbuild test robot
  0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2018-08-09 19:19 UTC (permalink / raw)
  To: Alex Williamson; +Cc: kbuild-all, linux-pci, Bjorn Helgaas

[-- Attachment #1: Type: text/plain, Size: 3782 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/virtualization
head:   00b834ec962e4252846ccfd6f5dabf7c5c8f7297
commit: c66dd92b90ec97e2068cd8e3aa31f4f43a6e6c2b [10/11] PCI: Disable Samsung SM961/PM961 NVMe before FLR
config: i386-randconfig-x002-201831 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
        git checkout c66dd92b90ec97e2068cd8e3aa31f4f43a6e6c2b
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers//pci/quirks.c: In function 'nvme_disable_and_flr':
>> drivers//pci/quirks.c:3705:13: error: implicit declaration of function 'readq'; did you mean 'readl'? [-Werror=implicit-function-declaration]
      u64 cap = readq(bar + NVME_REG_CAP);
                ^~~~~
                readl
   cc1: some warnings being treated as errors

vim +3705 drivers//pci/quirks.c

  3667	
  3668	/*
  3669	 * The Samsung SM961/PM961 controller can sometimes enter a fatal state after
  3670	 * FLR where config space reads from the device return -1.  We seem to be
  3671	 * able to avoid this condition if we disable the NVMe controller prior to
  3672	 * FLR.  This quirk is generic for any NVMe class device requiring similar
  3673	 * assistance to quiesce the device prior to FLR.
  3674	 *
  3675	 * NVMe specification: https://nvmexpress.org/resources/specifications/
  3676	 * Revision 1.0e:
  3677	 *    Chapter 2: Required and optional PCI config registers
  3678	 *    Chapter 3: NVMe control registers
  3679	 *    Chapter 7.3: Reset behavior
  3680	 */
  3681	static int nvme_disable_and_flr(struct pci_dev *dev, int probe)
  3682	{
  3683		void __iomem *bar;
  3684		u16 cmd;
  3685		u32 cfg;
  3686	
  3687		if (dev->class != PCI_CLASS_STORAGE_EXPRESS ||
  3688		    !pcie_has_flr(dev) || !pci_resource_start(dev, 0))
  3689			return -ENOTTY;
  3690	
  3691		if (probe)
  3692			return 0;
  3693	
  3694		bar = pci_iomap(dev, 0, NVME_REG_CC + sizeof(cfg));
  3695		if (!bar)
  3696			return -ENOTTY;
  3697	
  3698		pci_read_config_word(dev, PCI_COMMAND, &cmd);
  3699		pci_write_config_word(dev, PCI_COMMAND, cmd | PCI_COMMAND_MEMORY);
  3700	
  3701		cfg = readl(bar + NVME_REG_CC);
  3702	
  3703		/* Disable controller if enabled */
  3704		if (cfg & NVME_CC_ENABLE) {
> 3705			u64 cap = readq(bar + NVME_REG_CAP);
  3706			unsigned long timeout;
  3707	
  3708			/*
  3709			 * Per nvme_disable_ctrl() skip shutdown notification as it
  3710			 * could complete commands to the admin queue.  We only intend
  3711			 * to quiesce the device before reset.
  3712			 */
  3713			cfg &= ~(NVME_CC_SHN_MASK | NVME_CC_ENABLE);
  3714	
  3715			writel(cfg, bar + NVME_REG_CC);
  3716	
  3717			/*
  3718			 * Some controllers require an additional delay here, see
  3719			 * NVME_QUIRK_DELAY_BEFORE_CHK_RDY.  None of those are yet
  3720			 * supported by this quirk.
  3721			 */
  3722	
  3723			/* Cap register provides max timeout in 500ms increments */
  3724			timeout = ((NVME_CAP_TIMEOUT(cap) + 1) * HZ / 2) + jiffies;
  3725	
  3726			for (;;) {
  3727				u32 status = readl(bar + NVME_REG_CSTS);
  3728	
  3729				/* Ready status becomes zero on disable complete */
  3730				if (!(status & NVME_CSTS_RDY))
  3731					break;
  3732	
  3733				msleep(100);
  3734	
  3735				if (time_after(jiffies, timeout)) {
  3736					pci_warn(dev, "Timeout waiting for NVMe ready status to clear after disable\n");
  3737					break;
  3738				}
  3739			}
  3740		}
  3741	
  3742		pci_iounmap(dev, bar);
  3743	
  3744		pcie_flr(dev);
  3745	
  3746		return 0;
  3747	}
  3748	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31514 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-08-09 19:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-09 19:19 [pci:pci/virtualization 10/11] drivers//pci/quirks.c:3705:13: error: implicit declaration of function 'readq'; did you mean 'readl'? kbuild test robot

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.