Hi FelixCuioc, Thank you for the patch! Yet something to improve: [auto build test ERROR on iommu/next] [also build test ERROR on linux/master linus/master v5.8-rc7 next-20200730] [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/FelixCuioc/iommu-vt-d-Add-support-for-ACPI-device-in-RMRR/20200728-182409 base: https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git next config: x86_64-randconfig-a014-20200731 (attached as .config) compiler: gcc-9 (Debian 9.3.0-14) 9.3.0 reproduce (this is a W=1 build): # save the attached .config to linux build tree make W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): ld: drivers/iommu/intel/dmar.o: in function `dmar_acpi_bus_add_dev': >> drivers/iommu/intel/dmar.c:745: undefined reference to `dmar_rmrr_add_acpi_dev' vim +745 drivers/iommu/intel/dmar.c 670 671 struct dmar_drhd_unit * 672 dmar_find_matched_drhd_unit(struct pci_dev *dev) 673 { 674 struct dmar_drhd_unit *dmaru; 675 struct acpi_dmar_hardware_unit *drhd; 676 677 dev = pci_physfn(dev); 678 679 rcu_read_lock(); 680 for_each_drhd_unit(dmaru) { 681 drhd = container_of(dmaru->hdr, 682 struct acpi_dmar_hardware_unit, 683 header); 684 685 if (dmaru->include_all && 686 drhd->segment == pci_domain_nr(dev->bus)) 687 goto out; 688 689 if (dmar_pci_device_match(dmaru->devices, 690 dmaru->devices_cnt, dev)) 691 goto out; 692 } 693 dmaru = NULL; 694 out: 695 rcu_read_unlock(); 696 697 return dmaru; 698 } 699 int dmar_acpi_insert_dev_scope(u8 device_number, 700 struct acpi_device *adev, 701 void *start, void *end, 702 struct dmar_dev_scope *devices, 703 int devices_cnt) 704 { 705 struct acpi_dmar_device_scope *scope; 706 struct device *tmp; 707 int i; 708 struct acpi_dmar_pci_path *path; 709 710 for (; start < end; start += scope->length) { 711 scope = start; 712 if (scope->entry_type != ACPI_DMAR_SCOPE_TYPE_NAMESPACE) 713 continue; 714 if (scope->enumeration_id != device_number) 715 continue; 716 path = (void *)(scope + 1); 717 for_each_dev_scope(devices, devices_cnt, i, tmp) 718 if (tmp == NULL) { 719 devices[i].bus = scope->bus; 720 devices[i].devfn = PCI_DEVFN(path->device, path->function); 721 rcu_assign_pointer(devices[i].dev, 722 get_device(&adev->dev)); 723 return 1; 724 } 725 WARN_ON(i >= devices_cnt); 726 } 727 return 0; 728 } 729 static int dmar_acpi_bus_add_dev(u8 device_number, struct acpi_device *adev) 730 { 731 struct dmar_drhd_unit *dmaru; 732 struct acpi_dmar_hardware_unit *drhd; 733 int ret = 0; 734 735 for_each_drhd_unit(dmaru) { 736 drhd = container_of(dmaru->hdr, 737 struct acpi_dmar_hardware_unit, 738 header); 739 ret = dmar_acpi_insert_dev_scope(device_number, adev, (void *)(drhd+1), 740 ((void *)drhd)+drhd->header.length, 741 dmaru->devices, dmaru->devices_cnt); 742 if (ret) 743 break; 744 } > 745 ret = dmar_rmrr_add_acpi_dev(device_number, adev); 746 747 return ret; 748 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org