CC: kbuild-all(a)lists.01.org In-Reply-To: <20200609130303.26974-3-joro@8bytes.org> References: <20200609130303.26974-3-joro@8bytes.org> TO: Joerg Roedel TO: Joerg Roedel CC: David Woodhouse CC: Lu Baolu CC: Suravee Suthikulpanit CC: Jerry Snitselaar CC: Qian Cai CC: iommu(a)lists.linux-foundation.org CC: linux-kernel(a)vger.kernel.org Hi Joerg, I love your patch! Perhaps something to improve: [auto build test WARNING on iommu/next] [also build test WARNING on linus/master next-20200609] [cannot apply to v5.7] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Joerg-Roedel/iommu-Move-Intel-and-AMD-drivers-into-their-own-subdirectory/20200609-210928 base: https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git next :::::: branch date: 7 hours ago :::::: commit date: 7 hours ago config: x86_64-randconfig-m001-20200607 (attached as .config) compiler: gcc-9 (Debian 9.3.0-13) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/iommu/intel/dmar.c:1506 dmar_disable_qi() warn: this loop depends on readl() succeeding drivers/iommu/intel/dmar.c:1506 dmar_disable_qi() warn: this loop depends on readl() succeeding drivers/iommu/intel/dmar.c:1872 dmar_fault() warn: this loop depends on readl() succeeding # https://github.com/0day-ci/linux/commit/041c469cc1967ad678c6b5acfbf76f4238fa5796 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 041c469cc1967ad678c6b5acfbf76f4238fa5796 vim +1506 drivers/iommu/intel/dmar.c 61a06a16e36d83 drivers/iommu/dmar.c Jacob Pan 2020-05-16 1476 eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1477 /* eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1478 * Disable Queued Invalidation interface. eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1479 */ eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1480 void dmar_disable_qi(struct intel_iommu *iommu) eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1481 { eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1482 unsigned long flags; eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1483 u32 sts; eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1484 cycles_t start_time = get_cycles(); eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1485 eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1486 if (!ecap_qis(iommu->ecap)) eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1487 return; eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1488 1f5b3c3fd2d73d drivers/iommu/dmar.c Thomas Gleixner 2011-07-19 1489 raw_spin_lock_irqsave(&iommu->register_lock, flags); eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1490 fda3bec12d0979 drivers/iommu/dmar.c CQ Tang 2016-01-13 1491 sts = readl(iommu->reg + DMAR_GSTS_REG); eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1492 if (!(sts & DMA_GSTS_QIES)) eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1493 goto end; eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1494 eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1495 /* eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1496 * Give a chance to HW to complete the pending invalidation requests. eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1497 */ eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1498 while ((readl(iommu->reg + DMAR_IQT_REG) != eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1499 readl(iommu->reg + DMAR_IQH_REG)) && eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1500 (DMAR_OPERATION_TIMEOUT > (get_cycles() - start_time))) eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1501 cpu_relax(); eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1502 eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1503 iommu->gcmd &= ~DMA_GCMD_QIE; eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1504 writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG); eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1505 eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 @1506 IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, readl, eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1507 !(sts & DMA_GSTS_QIES), sts); eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1508 end: 1f5b3c3fd2d73d drivers/iommu/dmar.c Thomas Gleixner 2011-07-19 1509 raw_spin_unlock_irqrestore(&iommu->register_lock, flags); eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1510 } eba67e5da6e971 drivers/pci/dmar.c Suresh Siddha 2009-03-16 1511 :::::: The code at line 1506 was first introduced by commit :::::: eba67e5da6e971993b2899d2cdf459ce77d3dbc5 x86, dmar: routines for disabling queued invalidation and intr remapping :::::: TO: Suresh Siddha :::::: CC: H. Peter Anvin --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org