Hi Chris, Thank you for the patch! Yet something to improve: [auto build test ERROR on drm-intel/for-linux-next] [cannot apply to v5.3-rc8 next-20190904] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Chris-Wilson/drm-i915-selftests-Take-runtime-wakeref-for-igt_ggtt_lowlevel/20190909-201355 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: x86_64-randconfig-a004-201936 (attached as .config) compiler: gcc-5 (Ubuntu 5.5.0-12ubuntu1) 5.5.0 20171010 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All error/warnings (new ones prefixed by >>): drivers/iommu/intel-iommu.c: In function 'domain_update_iommu_coherency': >> drivers/iommu/intel-iommu.c:622:2: error: implicit declaration of function 'for_each_active_iommu' [-Werror=implicit-function-declaration] for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c:622:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c: In function 'domain_update_iommu_snooping': drivers/iommu/intel-iommu.c:638:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c: In function 'domain_update_iommu_superpage': drivers/iommu/intel-iommu.c:663:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c: In function 'device_to_iommu': drivers/iommu/intel-iommu.c:781:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c:812:2: warning: label 'out' defined but not used [-Wunused-label] out: ^ drivers/iommu/intel-iommu.c:756:6: warning: unused variable 'i' [-Wunused-variable] int i; ^ drivers/iommu/intel-iommu.c:753:17: warning: unused variable 'tmp' [-Wunused-variable] struct device *tmp; ^ drivers/iommu/intel-iommu.c: In function 'si_domain_init': >> drivers/iommu/intel-iommu.c:2731:3: error: implicit declaration of function 'for_each_active_dev_scope' [-Werror=implicit-function-declaration] for_each_active_dev_scope(rmrr->devices, rmrr->devices_cnt, ^ drivers/iommu/intel-iommu.c:2732:16: error: expected ';' before '{' token i, dev) { ^ drivers/iommu/intel-iommu.c: In function 'device_has_rmrr': drivers/iommu/intel-iommu.c:2794:4: error: expected ';' before 'if' if (tmp == dev || ^ drivers/iommu/intel-iommu.c: In function 'init_dmars': >> drivers/iommu/intel-iommu.c:3157:2: error: implicit declaration of function 'for_each_drhd_unit' [-Werror=implicit-function-declaration] for_each_drhd_unit(drhd) { ^ drivers/iommu/intel-iommu.c:3157:27: error: expected ';' before '{' token for_each_drhd_unit(drhd) { ^ >> drivers/iommu/intel-iommu.c:3182:2: error: implicit declaration of function 'for_each_iommu' [-Werror=implicit-function-declaration] for_each_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c:3182:30: error: expected ';' before '{' token for_each_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c:3293:30: error: expected ';' before '{' token for_each_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c:3327:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c: In function 'get_private_domain_for_dev': drivers/iommu/intel-iommu.c:3391:18: error: expected ';' before '{' token i, i_dev) { ^ drivers/iommu/intel-iommu.c:3376:9: warning: unused variable 'ret' [-Wunused-variable] int i, ret; ^ In file included from arch/x86/include/asm/bug.h:83:0, from include/linux/bug.h:5, from include/linux/thread_info.h:12, from arch/x86/include/asm/preempt.h:7, from include/linux/preempt.h:78, from include/linux/spinlock.h:51, from include/linux/wait.h:9, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from include/linux/debugfs.h:15, from drivers/iommu/intel-iommu.c:18: drivers/iommu/intel-iommu.c: In function 'quirk_ioat_snb_local_iommu': drivers/iommu/intel-iommu.c:3827:35: error: dereferencing pointer to incomplete type 'struct dmar_drhd_unit' if (WARN_TAINT_ONCE(!drhd || drhd->reg_base_addr - vtbar != 0xa000, ^ include/asm-generic/bug.h:173:27: note: in definition of macro 'WARN_TAINT_ONCE' int __ret_warn_once = !!(condition); \ ^ drivers/iommu/intel-iommu.c: In function 'init_no_remapping_devices': drivers/iommu/intel-iommu.c:3840:27: error: expected ';' before '{' token for_each_drhd_unit(drhd) { ^ drivers/iommu/intel-iommu.c:3838:6: warning: unused variable 'i' [-Wunused-variable] int i; ^ drivers/iommu/intel-iommu.c:3837:17: warning: unused variable 'dev' [-Wunused-variable] struct device *dev; ^ drivers/iommu/intel-iommu.c: In function 'dmar_parse_one_rmrr': >> drivers/iommu/intel-iommu.c:4023:19: error: implicit declaration of function 'dmar_alloc_dev_scope' [-Werror=implicit-function-declaration] rmrru->devices = dmar_alloc_dev_scope((void *)(rmrr + 1), ^ drivers/iommu/intel-iommu.c:4023:17: warning: assignment makes pointer from integer without a cast [-Wint-conversion] rmrru->devices = dmar_alloc_dev_scope((void *)(rmrr + 1), ^ drivers/iommu/intel-iommu.c: In function 'dmar_parse_one_atsr': drivers/iommu/intel-iommu.c:4082:18: warning: assignment makes pointer from integer without a cast [-Wint-conversion] atsru->devices = dmar_alloc_dev_scope((void *)(atsr + 1), ^ drivers/iommu/intel-iommu.c: In function 'intel_iommu_free_atsr': >> drivers/iommu/intel-iommu.c:4098:2: error: implicit declaration of function 'dmar_free_dev_scope' [-Werror=implicit-function-declaration] dmar_free_dev_scope(&atsru->devices, &atsru->devices_cnt); ^ drivers/iommu/intel-iommu.c: In function 'dmar_check_one_atsr': drivers/iommu/intel-iommu.c:4133:4: error: expected ';' before 'return' return -EBUSY; ^ drivers/iommu/intel-iommu.c: In function 'dmar_find_matched_atsr_unit': >> drivers/iommu/intel-iommu.c:4288:3: error: implicit declaration of function 'for_each_dev_scope' [-Werror=implicit-function-declaration] for_each_dev_scope(atsru->devices, atsru->devices_cnt, i, tmp) ^ drivers/iommu/intel-iommu.c:4289:4: error: expected ';' before 'if' if (tmp == &bridge->dev) ^ drivers/iommu/intel-iommu.c: At top level: >> drivers/iommu/intel-iommu.c:4302:40: warning: 'struct dmar_pci_notify_info' declared inside parameter list int dmar_iommu_notify_scope_dev(struct dmar_pci_notify_info *info) ^ >> drivers/iommu/intel-iommu.c:4302:40: warning: its scope is only this definition or declaration, which is probably not what you want drivers/iommu/intel-iommu.c: In function 'dmar_iommu_notify_scope_dev': drivers/iommu/intel-iommu.c:4316:11: error: dereferencing pointer to incomplete type 'struct dmar_pci_notify_info' if (info->event == BUS_NOTIFY_ADD_DEVICE) { ^ >> drivers/iommu/intel-iommu.c:4317:10: error: implicit declaration of function 'dmar_insert_dev_scope' [-Werror=implicit-function-declaration] ret = dmar_insert_dev_scope(info, (void *)(rmrr + 1), ^ >> drivers/iommu/intel-iommu.c:4324:4: error: implicit declaration of function 'dmar_remove_dev_scope' [-Werror=implicit-function-declaration] dmar_remove_dev_scope(info, rmrr->segment, ^ drivers/iommu/intel-iommu.c: In function 'intel_iommu_memory_notifier': drivers/iommu/intel-iommu.c:4401:5: error: expected ';' before 'iommu_flush_iotlb_psi' iommu_flush_iotlb_psi(iommu, si_domain, ^ drivers/iommu/intel-iommu.c: In function 'intel_disable_iommus': drivers/iommu/intel-iommu.c:4455:3: error: expected ';' before 'iommu_disable_translation' iommu_disable_translation(iommu); ^ drivers/iommu/intel-iommu.c: In function 'probe_acpi_namespace_devices': drivers/iommu/intel-iommu.c:4587:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c:4585:9: warning: unused variable 'ret' [-Wunused-variable] int i, ret = 0; ^ drivers/iommu/intel-iommu.c:4585:6: warning: unused variable 'i' [-Wunused-variable] int i, ret = 0; ^ drivers/iommu/intel-iommu.c:4584:17: warning: unused variable 'dev' [-Wunused-variable] struct device *dev; ^ drivers/iommu/intel-iommu.c:4620:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ drivers/iommu/intel-iommu.c: In function 'intel_iommu_init': >> drivers/iommu/intel-iommu.c:4640:14: error: 'dmar_global_lock' undeclared (first use in this function) down_write(&dmar_global_lock); ^ drivers/iommu/intel-iommu.c:4640:14: note: each undeclared identifier is reported only once for each function it appears in >> drivers/iommu/intel-iommu.c:4641:6: error: implicit declaration of function 'dmar_table_init' [-Werror=implicit-function-declaration] if (dmar_table_init()) { ^ >> drivers/iommu/intel-iommu.c:4647:6: error: implicit declaration of function 'dmar_dev_scope_init' [-Werror=implicit-function-declaration] if (dmar_dev_scope_init() < 0) { ^ >> drivers/iommu/intel-iommu.c:4659:2: error: implicit declaration of function 'dmar_register_bus_notifier' [-Werror=implicit-function-declaration] dmar_register_bus_notifier(); ^ drivers/iommu/intel-iommu.c:4674:5: error: expected ';' before 'iommu_disable_protect_mem_regions' iommu_disable_protect_mem_regions(iommu); ^ drivers/iommu/intel-iommu.c:4719:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c:4739:30: error: expected ';' before '{' token for_each_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c: In function 'scalable_mode_support': drivers/iommu/intel-iommu.c:5214:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c: In function 'iommu_pasid_support': drivers/iommu/intel-iommu.c:5232:37: error: expected ';' before '{' token for_each_active_iommu(iommu, drhd) { ^ drivers/iommu/intel-iommu.c: In function 'intel_iommu_add_device': drivers/iommu/intel-iommu.c:5266:20: error: passing argument 1 of 'iommu_device_link' from incompatible pointer type [-Werror=incompatible-pointer-types] iommu_device_link(&iommu->iommu, dev); ^ In file included from drivers/iommu/intel-iommu.c:33:0: include/linux/iommu.h:846:19: note: expected 'struct device *' but argument is of type 'struct iommu_device *' static inline int iommu_device_link(struct device *dev, struct device *link) ^ >> drivers/iommu/intel-iommu.c:5271:10: error: implicit declaration of function 'iommu_group_get_for_dev' [-Werror=implicit-function-declaration] group = iommu_group_get_for_dev(dev); ^ drivers/iommu/intel-iommu.c:5271:8: warning: assignment makes pointer from integer without a cast [-Wint-conversion] group = iommu_group_get_for_dev(dev); ^ drivers/iommu/intel-iommu.c: In function 'intel_iommu_remove_device': drivers/iommu/intel-iommu.c:5321:22: error: passing argument 1 of 'iommu_device_unlink' from incompatible pointer type [-Werror=incompatible-pointer-types] iommu_device_unlink(&iommu->iommu, dev); ^ In file included from drivers/iommu/intel-iommu.c:33:0: include/linux/iommu.h:851:20: note: expected 'struct device *' but argument is of type 'struct iommu_device *' static inline void iommu_device_unlink(struct device *dev, struct device *link) ^ drivers/iommu/intel-iommu.c: In function 'intel_iommu_get_resv_regions': drivers/iommu/intel-iommu.c:5333:13: error: 'dmar_global_lock' undeclared (first use in this function) down_read(&dmar_global_lock); ^ drivers/iommu/intel-iommu.c:5336:18: error: expected ';' before '{' token i, i_dev) { ^ >> drivers/iommu/intel-iommu.c:5373:8: error: implicit declaration of function 'iommu_alloc_resv_region' [-Werror=implicit-function-declaration] reg = iommu_alloc_resv_region(IOAPIC_RANGE_START, ^ drivers/iommu/intel-iommu.c:5373:6: warning: assignment makes pointer from integer without a cast [-Wint-conversion] reg = iommu_alloc_resv_region(IOAPIC_RANGE_START, ^ drivers/iommu/intel-iommu.c:5327:6: warning: unused variable 'prot' [-Wunused-variable] int prot = DMA_PTE_READ | DMA_PTE_WRITE; ^ drivers/iommu/intel-iommu.c: At top level: >> drivers/iommu/intel-iommu.c:5610:2: error: unknown field 'capable' specified in initializer .capable = intel_iommu_capable, ^ drivers/iommu/intel-iommu.c:5610:14: warning: excess elements in struct initializer .capable = intel_iommu_capable, ^ drivers/iommu/intel-iommu.c:5610:14: note: (near initialization for 'intel_iommu_ops') >> drivers/iommu/intel-iommu.c:5611:2: error: unknown field 'domain_alloc' specified in initializer .domain_alloc = intel_iommu_domain_alloc, ^ drivers/iommu/intel-iommu.c:5611:19: warning: excess elements in struct initializer .domain_alloc = intel_iommu_domain_alloc, ^ drivers/iommu/intel-iommu.c:5611:19: note: (near initialization for 'intel_iommu_ops') >> drivers/iommu/intel-iommu.c:5612:2: error: unknown field 'domain_free' specified in initializer .domain_free = intel_iommu_domain_free, ^ drivers/iommu/intel-iommu.c:5612:18: warning: excess elements in struct initializer .domain_free = intel_iommu_domain_free, ^ drivers/iommu/intel-iommu.c:5612:18: note: (near initialization for 'intel_iommu_ops') vim +/for_each_active_iommu +622 drivers/iommu/intel-iommu.c 8c11e798eee2ce drivers/pci/intel-iommu.c Weidong Han 2008-12-08 600 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 601 static void domain_update_iommu_coherency(struct dmar_domain *domain) 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 602 { d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 603 struct dmar_drhd_unit *drhd; d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 604 struct intel_iommu *iommu; 2f119c7895af56 drivers/iommu/intel-iommu.c Quentin Lambert 2015-02-06 605 bool found = false; 2f119c7895af56 drivers/iommu/intel-iommu.c Quentin Lambert 2015-02-06 606 int i; 2e12bc29fc5a12 drivers/iommu/intel-iommu.c Alex Williamson 2011-11-11 607 d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 608 domain->iommu_coherency = 1; 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 609 29a27719abaa4d drivers/iommu/intel-iommu.c Joerg Roedel 2015-07-21 610 for_each_domain_iommu(i, domain) { 2f119c7895af56 drivers/iommu/intel-iommu.c Quentin Lambert 2015-02-06 611 found = true; 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 612 if (!ecap_coherent(g_iommus[i]->ecap)) { 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 613 domain->iommu_coherency = 0; 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 614 break; 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 615 } 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 616 } d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 617 if (found) d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 618 return; d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 619 d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 620 /* No hardware attached; use lowest common denominator */ d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 621 rcu_read_lock(); d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 @622 for_each_active_iommu(iommu, drhd) { d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 623 if (!ecap_coherent(iommu->ecap)) { d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 624 domain->iommu_coherency = 0; d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 625 break; d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 626 } d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 627 } d0501960874624 drivers/iommu/intel-iommu.c David Woodhouse 2014-03-11 628 rcu_read_unlock(); 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 629 } 8e604097ddc483 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 630 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 631 static int domain_update_iommu_snooping(struct intel_iommu *skip) 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 632 { 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 633 struct dmar_drhd_unit *drhd; 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 634 struct intel_iommu *iommu; 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 635 int ret = 1; 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 636 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 637 rcu_read_lock(); 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 638 for_each_active_iommu(iommu, drhd) { 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 639 if (iommu != skip) { 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 640 if (!ecap_sc_support(iommu->ecap)) { 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 641 ret = 0; 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 642 break; 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 643 } 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 644 } 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 645 } 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 646 rcu_read_unlock(); 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 647 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 648 return ret; 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 649 } 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 650 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 651 static int domain_update_iommu_superpage(struct intel_iommu *skip) 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 652 { 8140a95d228efb drivers/iommu/intel-iommu.c Allen Kay 2011-10-14 653 struct dmar_drhd_unit *drhd; 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 654 struct intel_iommu *iommu; 8140a95d228efb drivers/iommu/intel-iommu.c Allen Kay 2011-10-14 655 int mask = 0xf; 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 656 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 657 if (!intel_iommu_superpage) { 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 658 return 0; 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 659 } 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 660 8140a95d228efb drivers/iommu/intel-iommu.c Allen Kay 2011-10-14 661 /* set iommu_superpage to the smallest common denominator */ 0e242612d9cdb4 drivers/iommu/intel-iommu.c Jiang Liu 2014-02-19 662 rcu_read_lock(); 8140a95d228efb drivers/iommu/intel-iommu.c Allen Kay 2011-10-14 663 for_each_active_iommu(iommu, drhd) { 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 664 if (iommu != skip) { 8140a95d228efb drivers/iommu/intel-iommu.c Allen Kay 2011-10-14 665 mask &= cap_super_page_val(iommu->cap); 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 666 if (!mask) 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 667 break; 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 668 } 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 669 } 0e242612d9cdb4 drivers/iommu/intel-iommu.c Jiang Liu 2014-02-19 670 rcu_read_unlock(); 0e242612d9cdb4 drivers/iommu/intel-iommu.c Jiang Liu 2014-02-19 671 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 672 return fls(mask); 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 673 } 6dd9a7c73761a8 drivers/pci/intel-iommu.c Youquan Song 2011-05-25 674 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 675 /* Some capabilities may be different across iommus */ 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 676 static void domain_update_iommu_cap(struct dmar_domain *domain) 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 677 { 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 678 domain_update_iommu_coherency(domain); 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 679 domain->iommu_snooping = domain_update_iommu_snooping(NULL); 161f693460772e drivers/iommu/intel-iommu.c Jiang Liu 2014-07-11 680 domain->iommu_superpage = domain_update_iommu_superpage(NULL); 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 681 } 58c610bd1a3f50 drivers/pci/intel-iommu.c Sheng Yang 2009-03-18 682 26b86092c46503 drivers/iommu/intel-iommu.c Sohil Mehta 2018-09-11 683 struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus, 26b86092c46503 drivers/iommu/intel-iommu.c Sohil Mehta 2018-09-11 684 u8 devfn, int alloc) 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 685 { 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 686 struct root_entry *root = &iommu->root_entry[bus]; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 687 struct context_entry *context; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 688 u64 *entry; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 689 4df4eab168c1c4 drivers/iommu/intel-iommu.c Joerg Roedel 2015-08-25 690 entry = &root->lo; 765b6a98c1de3d drivers/iommu/intel-iommu.c Lu Baolu 2018-12-10 691 if (sm_supported(iommu)) { 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 692 if (devfn >= 0x80) { 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 693 devfn -= 0x80; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 694 entry = &root->hi; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 695 } 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 696 devfn *= 2; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 697 } 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 698 if (*entry & 1) 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 699 context = phys_to_virt(*entry & VTD_PAGE_MASK); 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 700 else { 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 701 unsigned long phy_addr; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 702 if (!alloc) 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 703 return NULL; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 704 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 705 context = alloc_pgtable_page(iommu->node); 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 706 if (!context) 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 707 return NULL; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 708 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 709 __iommu_flush_cache(iommu, (void *)context, CONTEXT_SIZE); 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 710 phy_addr = virt_to_phys((void *)context); 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 711 *entry = phy_addr | 1; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 712 __iommu_flush_cache(iommu, entry, sizeof(*entry)); 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 713 } 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 714 return &context[devfn]; 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 715 } 03ecc32c527496 drivers/iommu/intel-iommu.c David Woodhouse 2015-02-13 716 4ed6a540fab8ea drivers/iommu/intel-iommu.c David Woodhouse 2015-05-11 717 static int iommu_dummy(struct device *dev) 4ed6a540fab8ea drivers/iommu/intel-iommu.c David Woodhouse 2015-05-11 718 { 4ed6a540fab8ea drivers/iommu/intel-iommu.c David Woodhouse 2015-05-11 719 return dev->archdata.iommu == DUMMY_DEVICE_DOMAIN_INFO; 4ed6a540fab8ea drivers/iommu/intel-iommu.c David Woodhouse 2015-05-11 720 } 4ed6a540fab8ea drivers/iommu/intel-iommu.c David Woodhouse 2015-05-11 721 b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 722 /** b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 723 * is_downstream_to_pci_bridge - test if a device belongs to the PCI b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 724 * sub-hierarchy of a candidate PCI-PCI bridge b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 725 * @dev: candidate PCI device belonging to @bridge PCI sub-hierarchy b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 726 * @bridge: the candidate PCI-PCI bridge b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 727 * b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 728 * Return: true if @dev belongs to @bridge PCI sub-hierarchy, else false. b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 729 */ b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 730 static bool b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 731 is_downstream_to_pci_bridge(struct device *dev, struct device *bridge) b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 732 { b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 733 struct pci_dev *pdev, *pbridge; b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 734 b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 735 if (!dev_is_pci(dev) || !dev_is_pci(bridge)) b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 736 return false; b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 737 b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 738 pdev = to_pci_dev(dev); b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 739 pbridge = to_pci_dev(bridge); b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 740 b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 741 if (pbridge->subordinate && b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 742 pbridge->subordinate->number <= pdev->bus->number && b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 743 pbridge->subordinate->busn_res.end >= pdev->bus->number) b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 744 return true; b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 745 b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 746 return false; b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 747 } b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 748 156baca8d31e1a drivers/iommu/intel-iommu.c David Woodhouse 2014-03-09 749 static struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn) c7151a8dfefd11 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 750 { c7151a8dfefd11 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 751 struct dmar_drhd_unit *drhd = NULL; b683b230a244c3 drivers/iommu/intel-iommu.c Jiang Liu 2014-02-19 752 struct intel_iommu *iommu; 156baca8d31e1a drivers/iommu/intel-iommu.c David Woodhouse 2014-03-09 753 struct device *tmp; b9a7f9816483b1 drivers/iommu/intel-iommu.c Eric Auger 2019-06-03 754 struct pci_dev *pdev = NULL; aa4d066a2a8041 drivers/iommu/intel-iommu.c Yijing Wang 2014-05-26 755 u16 segment = 0; c7151a8dfefd11 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 @756 int i; c7151a8dfefd11 drivers/pci/intel-iommu.c Weidong Han 2008-12-08 757 4ed6a540fab8ea drivers/iommu/intel-iommu.c David Woodhouse 2015-05-11 758 if (iommu_dummy(dev)) 4ed6a540fab8ea drivers/iommu/intel-iommu.c David Woodhouse 2015-05-11 759 return NULL; 4ed6a540fab8ea drivers/iommu/intel-iommu.c David Woodhouse 2015-05-11 760 156baca8d31e1a drivers/iommu/intel-iommu.c David Woodhouse 2014-03-09 761 if (dev_is_pci(dev)) { 1c387188c60f53 drivers/iommu/intel-iommu.c Ashok Raj 2016-10-21 762 struct pci_dev *pf_pdev; 1c387188c60f53 drivers/iommu/intel-iommu.c Ashok Raj 2016-10-21 763 156baca8d31e1a drivers/iommu/intel-iommu.c David Woodhouse 2014-03-09 764 pdev = to_pci_dev(dev); 5823e330b58c52 drivers/iommu/intel-iommu.c Jon Derrick 2017-08-30 765 :::::: The code at line 622 was first introduced by commit :::::: d05019608746240d86a406fbf8d8c1fc71a87101 iommu/vt-d: Be less pessimistic about domain coherency where possible :::::: TO: David Woodhouse <dwmw2@xxxxxxxxxxxxx> :::::: CC: David Woodhouse <David.Woodhouse@xxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip
_______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx