Re: [PATCH] iommu/vt-d:Add support for ACPI device in RMRR

From: kernel test robot
Date: Fri Jul 31 2020 - 05:07:22 EST


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 <lkp@xxxxxxxxx>

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@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip