diff options
Diffstat (limited to 'arch/sparc64/kernel/pci_sun4v.c')
-rw-r--r-- | arch/sparc64/kernel/pci_sun4v.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c index b63b2834133f..b275c7df0186 100644 --- a/arch/sparc64/kernel/pci_sun4v.c +++ b/arch/sparc64/kernel/pci_sun4v.c | |||
@@ -988,8 +988,13 @@ static unsigned long probe_existing_entries(struct pci_pbm_info *pbm, | |||
988 | HV_PCI_TSBID(0, i), | 988 | HV_PCI_TSBID(0, i), |
989 | &io_attrs, &ra); | 989 | &io_attrs, &ra); |
990 | if (ret == HV_EOK) { | 990 | if (ret == HV_EOK) { |
991 | cnt++; | 991 | if (page_in_phys_avail(ra)) { |
992 | __set_bit(i, arena->map); | 992 | pci_sun4v_iommu_demap(devhandle, |
993 | HV_PCI_TSBID(0, i), 1); | ||
994 | } else { | ||
995 | cnt++; | ||
996 | __set_bit(i, arena->map); | ||
997 | } | ||
993 | } | 998 | } |
994 | } | 999 | } |
995 | 1000 | ||
@@ -1062,9 +1067,9 @@ static void pci_sun4v_iommu_init(struct pci_pbm_info *pbm) | |||
1062 | iommu->arena.limit = num_tsb_entries; | 1067 | iommu->arena.limit = num_tsb_entries; |
1063 | 1068 | ||
1064 | sz = probe_existing_entries(pbm, iommu); | 1069 | sz = probe_existing_entries(pbm, iommu); |
1065 | 1070 | if (sz) | |
1066 | printk("%s: TSB entries [%lu], existing mapings [%lu]\n", | 1071 | printk("%s: Imported %lu TSB entries from OBP\n", |
1067 | pbm->name, num_tsb_entries, sz); | 1072 | pbm->name, sz); |
1068 | } | 1073 | } |
1069 | 1074 | ||
1070 | static void pci_sun4v_get_bus_range(struct pci_pbm_info *pbm) | 1075 | static void pci_sun4v_get_bus_range(struct pci_pbm_info *pbm) |