Alexey Kardashevskiy <aik@xxxxxxxxx> writes: > On 19/12/2018 10:35, Michael Ellerman wrote: >> Alexey Kardashevskiy <aik@xxxxxxxxx> writes: >> >>> diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c >>> index b86a6e0..1168b185 100644 >>> --- a/arch/powerpc/platforms/powernv/pci-ioda.c >>> +++ b/arch/powerpc/platforms/powernv/pci-ioda.c >>> @@ -2735,12 +2733,68 @@ static struct iommu_table_group_ops pnv_pci_ioda2_npu_ops = { >>> .release_ownership = pnv_ioda2_release_ownership, >>> }; >>> >>> +static void pnv_ioda_setup_bus_iommu_group_add_devices(struct pnv_ioda_pe *pe, >>> + struct pci_bus *bus) >>> +{ >>> + struct pci_dev *dev; >>> + >>> + list_for_each_entry(dev, &bus->devices, bus_list) { >>> + iommu_add_device(&pe->table_group, &dev->dev); >>> + >>> + if ((pe->flags & PNV_IODA_PE_BUS_ALL) && dev->subordinate) >>> + pnv_ioda_setup_bus_iommu_group_add_devices(pe, >>> + dev->subordinate); >>> + } >>> +} >>> + >>> +static void pnv_ioda_setup_bus_iommu_group(struct pnv_ioda_pe *pe) >>> +{ >>> + if (!pnv_pci_ioda_pe_dma_weight(pe)) >>> + return; >>> + >>> + iommu_register_group(&pe->table_group, pe->phb->hose->global_number, >>> + pe->pe_number); >>> + >>> + /* >>> + * set_iommu_table_base(&pe->pdev->dev, tbl) should have been called >>> + * by now >>> + */ >>> + if (pe->flags & PNV_IODA_PE_DEV) >>> + iommu_add_device(&pe->table_group, &pe->pdev->dev); >>> + else if (pe->flags & (PNV_IODA_PE_BUS | PNV_IODA_PE_BUS_ALL)) >>> + pnv_ioda_setup_bus_iommu_group_add_devices(pe, pe->pbus); >>> +} >>> + >> >> This breaks skiroot_defconfig with: >> >> arch/powerpc/platforms/powernv/pci-ioda.c:2731:13: error: 'pnv_ioda_setup_bus_iommu_group' defined but not used [-Werror=unused-function] >> >> http://kisskb.ellerman.id.au/kisskb/buildresult/13623033/ > > > How do you enable these warnings? I do not get them no matter what I do. Just build skiroot_defconfig ? Or turn off CONFIG_SPAPR_TCE_IOMMU, CONFIG_IOMMU_SUPPORT, CONFIG_IOMMU_API etc. cheers