From: kernel test robot <lkp@intel.com>
To: Linus Walleij <linus.walleij@linaro.org>,
Bjorn Helgaas <helgaas@kernel.org>
Cc: kbuild-all@lists.01.org, linux-pci@vger.kernel.org,
Arnd Bergmann <arnd@arndb.de>, Imre Kaloz <kaloz@openwrt.org>,
Krzysztof Halasa <khalasa@piap.pl>,
Zoltan HERPAI <wigyori@uid0.hu>,
Raylynn Knight <rayknight@me.com>,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH 4/4] PCI: ixp4xx: Add a new driver for IXP4xx
Date: Tue, 4 May 2021 08:40:09 +0800 [thread overview]
Message-ID: <202105040826.wt7TL4cM-lkp@intel.com> (raw)
In-Reply-To: <20210503211649.4109334-5-linus.walleij@linaro.org>
[-- Attachment #1: Type: text/plain, Size: 8774 bytes --]
Hi Linus,
I love your patch! Yet something to improve:
[auto build test ERROR on soc/for-next]
[also build test ERROR on pci/next block/for-next linus/master v5.12 next-20210503]
[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]
url: https://github.com/0day-ci/linux/commits/Linus-Walleij/IXP4xx-PCI-rework/20210504-051847
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.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://github.com/0day-ci/linux/commit/f3c7dd73e6c1b358e1f61a4b3a186ce5b336deaf
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Linus-Walleij/IXP4xx-PCI-rework/20210504-051847
git checkout f3c7dd73e6c1b358e1f61a4b3a186ce5b336deaf
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/pci/controller/pci-ixp4xx.c: In function 'ixp4xx_pci_abort_handler':
>> drivers/pci/controller/pci-ixp4xx.c:513:7: error: 'struct pt_regs' has no member named 'ARM_pc'
513 | regs->ARM_pc += 4;
| ^~
drivers/pci/controller/pci-ixp4xx.c: In function 'ixp4xx_pci_probe':
>> drivers/pci/controller/pci-ixp4xx.c:566:2: error: implicit declaration of function 'hook_fault_code' [-Werror=implicit-function-declaration]
566 | hook_fault_code(16+6, ixp4xx_pci_abort_handler, SIGBUS, 0,
| ^~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for FRAME_POINTER
Depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
Selected by
- FAULT_INJECTION_STACKTRACE_FILTER && FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT && !X86_64 && !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
vim +513 drivers/pci/controller/pci-ixp4xx.c
481
482 static int ixp4xx_pci_abort_handler(unsigned long addr, unsigned int fsr,
483 struct pt_regs *regs)
484 {
485 struct ixp4xx_pci *p = ixp4xx_pci_abort_singleton;
486 u32 isr, status;
487 int ret;
488
489 isr = __raw_readl(p->base + IXP4XX_PCI_ISR);
490 ret = ixp4xx_crp_read_config(p, PCI_STATUS, 2, &status);
491 if (ret) {
492 dev_err(p->dev, "unable to read abort status\n");
493 return -EINVAL;
494 }
495
496 dev_err(p->dev,
497 "PCI: abort_handler addr = %#lx, isr = %#x, status = %#x\n",
498 addr, isr, status);
499
500 /* Make sure the Master Abort bit is reset */
501 __raw_writel(IXP4XX_PCI_ISR_PFE, p->base + IXP4XX_PCI_ISR);
502 status |= PCI_STATUS_REC_MASTER_ABORT;
503 ret = ixp4xx_crp_write_config(p, PCI_STATUS, 2, status);
504 if (ret)
505 dev_err(p->dev, "unable to clear abort status bit\n");
506
507 /*
508 * If it was an imprecise abort, then we need to correct the
509 * return address to be _after_ the instruction.
510 */
511 if (fsr & (1 << 10)) {
512 dev_err(p->dev, "imprecise abort\n");
> 513 regs->ARM_pc += 4;
514 }
515
516 return 0;
517 }
518
519 static int ixp4xx_pci_probe(struct platform_device *pdev)
520 {
521 struct device *dev = &pdev->dev;
522 struct device_node *np = dev->of_node;
523 struct ixp4xx_pci *p;
524 struct pci_host_bridge *host;
525 int ret;
526 u32 val;
527 phys_addr_t addr;
528 u32 basereg[4] = {
529 PCI_BASE_ADDRESS_0,
530 PCI_BASE_ADDRESS_1,
531 PCI_BASE_ADDRESS_2,
532 PCI_BASE_ADDRESS_3,
533 };
534 int i;
535
536 host = devm_pci_alloc_host_bridge(dev, sizeof(*p));
537 if (!host)
538 return -ENOMEM;
539
540 host->ops = &ixp4xx_pci_ops;
541 p = pci_host_bridge_priv(host);
542 host->sysdata = p;
543 p->dev = dev;
544 raw_spin_lock_init(&p->lock);
545
546 /*
547 * Set up quirk for erratic behaviour in the 42x variant
548 * when accessing config space.
549 */
550 if (of_device_is_compatible(np, "intel,ixp42x-pci")) {
551 p->errata_hammer = true;
552 dev_info(dev, "activate hammering errata\n");
553 }
554
555 p->base = devm_platform_ioremap_resource(pdev, 0);
556 if (IS_ERR(p->base))
557 return PTR_ERR(p->base);
558
559 val = __raw_readl(p->base + IXP4XX_PCI_CSR);
560 p->host_mode = !!(val & IXP4XX_PCI_CSR_HOST);
561 dev_info(dev, "controller is in %s mode\n",
562 p->host_mode ? "host" : "option");
563
564 /* Hook in our fault handler for PCI errors */
565 ixp4xx_pci_abort_singleton = p;
> 566 hook_fault_code(16+6, ixp4xx_pci_abort_handler, SIGBUS, 0,
567 "imprecise external abort");
568
569 ret = ixp4xx_pci_parse_map_ranges(p);
570 if (ret)
571 return ret;
572
573 ret = ixp4xx_pci_parse_map_dma_ranges(p);
574 if (ret)
575 return ret;
576
577 /* This is only configured in host mode */
578 if (p->host_mode) {
579 addr = __pa(PAGE_OFFSET);
580 /* This is a noop (0x00) but explains what is going on */
581 addr |= PCI_BASE_ADDRESS_SPACE_MEMORY;
582
583 for (i = 0; i < 4; i++) {
584 /* Write this directly into the config space */
585 ret = ixp4xx_crp_write_config(p, basereg[i], 4, addr);
586 if (ret)
587 dev_err(dev, "failed to set up PCI_BASE_ADDRESS_%d\n", i);
588 else
589 dev_info(dev, "set PCI_BASE_ADDR_%d to %pa\n", i, &addr);
590 addr += SZ_16M;
591 }
592
593 /*
594 * Enable CSR window at 64 MiB to allow PCI masters to continue
595 * prefetching past the 64 MiB boundary, if all AHB to PCI windows
596 * are consecutive.
597 */
598 ret = ixp4xx_crp_write_config(p, PCI_BASE_ADDRESS_4, 4, addr);
599 if (ret)
600 dev_err(dev, "failed to set up PCI_BASE_ADDRESS_4\n");
601 else
602 dev_info(dev, "set PCI_BASE_ADDR_4 to %pa\n", &addr);
603
604 /*
605 * Put the IO memory at the very end of physical memory at
606 * 0xfffffc00. This is when the PCI is trying to access IO
607 * memory over AHB.
608 */
609 addr = 0xfffffc00;
610 addr |= PCI_BASE_ADDRESS_SPACE_IO;
611 ret = ixp4xx_crp_write_config(p, PCI_BASE_ADDRESS_5, 4, addr);
612 if (ret)
613 dev_err(dev, "failed to set up PCI_BASE_ADDRESS_5\n");
614 else
615 dev_info(dev, "set PCI_BASE_ADDR_5 to %pa\n", &addr);
616
617 /*
618 * Retry timeout to 0x80
619 * Transfer ready timeout to 0xff
620 */
621 ret = ixp4xx_crp_write_config(p, IXP4XX_PCI_RTOTTO, 4,
622 0x000080ff);
623 if (ret)
624 dev_err(dev, "failed to set up TRDY limit\n");
625 else
626 dev_info(dev, "set TRDY limit to 0x80ff\n");
627 }
628
629 /* Clear interrupts */
630 val = IXP4XX_PCI_ISR_PSE | IXP4XX_PCI_ISR_PFE | IXP4XX_PCI_ISR_PPE | IXP4XX_PCI_ISR_AHBE;
631 __raw_writel(val, p->base + IXP4XX_PCI_ISR);
632
633 /*
634 * Set Initialize Complete in PCI Control Register: allow IXP4XX to
635 * respond to PCI configuration cycles. Specify that the AHB bus is
636 * operating in big endian mode. Set up byte lane swapping between
637 * little-endian PCI and the big-endian AHB bus.
638 */
639 val = IXP4XX_PCI_CSR_IC | IXP4XX_PCI_CSR_ABE;
640 #ifdef __ARMEB__
641 val |= (IXP4XX_PCI_CSR_PDS | IXP4XX_PCI_CSR_ADS);
642 #endif
643 __raw_writel(val, p->base + IXP4XX_PCI_CSR);
644
645
646 ret = ixp4xx_crp_write_config(p, PCI_COMMAND, 2, PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY);
647 if (ret)
648 dev_err(dev, "unable to initialize master and command memory\n");
649 else
650 dev_info(dev, "initialized as master\n");
651
652 ret = pci_scan_root_bus_bridge(host);
653 if (ret) {
654 dev_err(dev, "failed to scan host: %d\n", ret);
655 return ret;
656 }
657
658 p->bus = host->bus;
659
660 pci_bus_assign_resources(p->bus);
661 pci_bus_add_devices(p->bus);
662
663 return 0;
664 }
665
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 63879 bytes --]
next prev parent reply other threads:[~2021-05-04 0:40 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-03 21:16 [PATCH 0/4] IXP4xx PCI rework Linus Walleij
2021-05-03 21:16 ` [PATCH 1/4] ARM/ixp4xx: Move the UART and exp bus virtbases Linus Walleij
2021-05-04 7:38 ` Arnd Bergmann
2021-05-03 21:16 ` [PATCH 2/4] ARM/ixp4xx: Make NEED_MACH_IO_H optional Linus Walleij
2021-05-03 21:16 ` [PATCH 3/4] PCI: ixp4xx: Add device tree bindings for IXP4xx Linus Walleij
2021-05-04 12:54 ` Arnd Bergmann
2021-05-09 21:31 ` Linus Walleij
2021-05-06 20:24 ` Rob Herring
2021-05-03 21:16 ` [PATCH 4/4] PCI: ixp4xx: Add a new driver " Linus Walleij
2021-05-04 0:40 ` kernel test robot [this message]
2021-05-04 7:12 ` Arnd Bergmann
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=202105040826.wt7TL4cM-lkp@intel.com \
--to=lkp@intel.com \
--cc=arnd@arndb.de \
--cc=helgaas@kernel.org \
--cc=kaloz@openwrt.org \
--cc=kbuild-all@lists.01.org \
--cc=khalasa@piap.pl \
--cc=linus.walleij@linaro.org \
--cc=linux-pci@vger.kernel.org \
--cc=rayknight@me.com \
--cc=wigyori@uid0.hu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).