static void amd_iommu_flush_dte_all(struct amd_iommu *iommu)
 {
        u32 devid;
+       u16 last_bdf = iommu->pci_seg->last_bdf;
 
-       for (devid = 0; devid <= 0xffff; ++devid)
+       for (devid = 0; devid <= last_bdf; ++devid)
                iommu_flush_dte(iommu, devid);
 
        iommu_completion_wait(iommu);
 static void amd_iommu_flush_tlb_all(struct amd_iommu *iommu)
 {
        u32 dom_id;
+       u16 last_bdf = iommu->pci_seg->last_bdf;
 
-       for (dom_id = 0; dom_id <= 0xffff; ++dom_id) {
+       for (dom_id = 0; dom_id <= last_bdf; ++dom_id) {
                struct iommu_cmd cmd;
                build_inv_iommu_pages(&cmd, 0, CMD_INV_IOMMU_ALL_PAGES_ADDRESS,
                                      dom_id, 1);
 static void amd_iommu_flush_irt_all(struct amd_iommu *iommu)
 {
        u32 devid;
+       u16 last_bdf = iommu->pci_seg->last_bdf;
 
-       for (devid = 0; devid <= MAX_DEV_TABLE_ENTRIES; devid++)
+       for (devid = 0; devid <= last_bdf; devid++)
                iommu_flush_irt(iommu, devid);
 
        iommu_completion_wait(iommu);