Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 21468
b: refs/heads/master
c: e7a0453
h: refs/heads/master
v: v3
  • Loading branch information
David S. Miller committed Mar 20, 2006
1 parent d301fd6 commit af68c89
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: db33f9bc09aaf68db7866374f9219c676787b4a2
refs/heads/master: e7a0453ef82c1433a35ab82d874296fff68f3639
22 changes: 16 additions & 6 deletions trunk/arch/sparc64/kernel/pci_sun4v.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ static void *pci_4v_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr
first_page = __get_free_pages(GFP_ATOMIC, order);
if (first_page == 0UL)
return NULL;

memset((char *)first_page, 0, PAGE_SIZE << order);

pcp = pdev->sysdata;
Expand Down Expand Up @@ -805,11 +806,11 @@ static void pbm_register_toplevel_resources(struct pci_controller_info *p,
&pbm->mem_space);
}

static void probe_existing_entries(struct pci_pbm_info *pbm,
struct pci_iommu *iommu)
static unsigned long probe_existing_entries(struct pci_pbm_info *pbm,
struct pci_iommu *iommu)
{
struct pci_iommu_arena *arena = &iommu->arena;
unsigned long i;
unsigned long i, cnt = 0;
u32 devhandle;

devhandle = pbm->devhandle;
Expand All @@ -819,9 +820,13 @@ static void probe_existing_entries(struct pci_pbm_info *pbm,
ret = pci_sun4v_iommu_getmap(devhandle,
HV_PCI_TSBID(0, i),
&io_attrs, &ra);
if (ret == HV_EOK)
if (ret == HV_EOK) {
cnt++;
__set_bit(i, arena->map);
}
}

return cnt;
}

static void pci_sun4v_iommu_init(struct pci_pbm_info *pbm)
Expand Down Expand Up @@ -853,14 +858,16 @@ static void pci_sun4v_iommu_init(struct pci_pbm_info *pbm)

case 0x80000000:
dma_mask |= 0x7fffffff;
tsbsize = 128;
tsbsize = 256;
break;

default:
prom_printf("PCI-SUN4V: strange virtual-dma size.\n");
prom_halt();
};

tsbsize *= (8 * 1024);

num_tsb_entries = tsbsize / sizeof(iopte_t);

dma_offset = vdma[0];
Expand All @@ -882,7 +889,10 @@ static void pci_sun4v_iommu_init(struct pci_pbm_info *pbm)
memset(iommu->arena.map, 0, sz);
iommu->arena.limit = num_tsb_entries;

probe_existing_entries(pbm, iommu);
sz = probe_existing_entries(pbm, iommu);

printk("%s: TSB entries [%lu], existing mapings [%lu]\n",
pbm->name, num_tsb_entries, sz);
}

static void pci_sun4v_get_bus_range(struct pci_pbm_info *pbm)
Expand Down

0 comments on commit af68c89

Please sign in to comment.