diff options
author | jhb <jhb@FreeBSD.org> | 2012-03-01 19:58:34 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2012-03-01 19:58:34 +0000 |
commit | 5013ab31bdd0c853bd73031dd2246844cd9f9cfe (patch) | |
tree | c681791d9aa316edfa305bde95f3cea4802aee56 /sys/powerpc | |
parent | fbe3c228aa921805fe715fd6cd18c7f02d936815 (diff) | |
download | FreeBSD-src-5013ab31bdd0c853bd73031dd2246844cd9f9cfe.zip FreeBSD-src-5013ab31bdd0c853bd73031dd2246844cd9f9cfe.tar.gz |
- Change contigmalloc() to use the vm_paddr_t type instead of an unsigned
long for specifying a boundary constraint.
- Change bus_dma tags to use bus_addr_t instead of bus_size_t for boundary
constraints.
These allow boundary constraints to be fully expressed for cases where
sizeof(bus_addr_t) != sizeof(bus_size_t). Specifically, it allows a
driver to properly specify a 4GB boundary in a PAE kernel.
Note that this cannot be safely MFC'd without a lot of compat shims due
to KBI changes, so I do not intend to merge it.
Reviewed by: scottl
Diffstat (limited to 'sys/powerpc')
-rw-r--r-- | sys/powerpc/powerpc/busdma_machdep.c | 4 | ||||
-rw-r--r-- | sys/powerpc/powerpc/iommu_if.m | 2 | ||||
-rw-r--r-- | sys/powerpc/ps3/ps3bus.c | 4 |
3 files changed, 5 insertions, 5 deletions
diff --git a/sys/powerpc/powerpc/busdma_machdep.c b/sys/powerpc/powerpc/busdma_machdep.c index 7f9f8ec..2063b1d 100644 --- a/sys/powerpc/powerpc/busdma_machdep.c +++ b/sys/powerpc/powerpc/busdma_machdep.c @@ -63,7 +63,7 @@ struct bounce_zone; struct bus_dma_tag { bus_dma_tag_t parent; bus_size_t alignment; - bus_size_t boundary; + bus_addr_t boundary; bus_addr_t lowaddr; bus_addr_t highaddr; bus_dma_filter_t *filter; @@ -219,7 +219,7 @@ dflt_lock(void *arg, bus_dma_lock_op_t op) */ int bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, - bus_size_t boundary, bus_addr_t lowaddr, + bus_addr_t boundary, bus_addr_t lowaddr, bus_addr_t highaddr, bus_dma_filter_t *filter, void *filterarg, bus_size_t maxsize, int nsegments, bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc, diff --git a/sys/powerpc/powerpc/iommu_if.m b/sys/powerpc/powerpc/iommu_if.m index dec70e3..d37155e 100644 --- a/sys/powerpc/powerpc/iommu_if.m +++ b/sys/powerpc/powerpc/iommu_if.m @@ -41,7 +41,7 @@ METHOD int map { bus_addr_t lowaddr; bus_addr_t highaddr; bus_size_t alignment; - bus_size_t boundary; + bus_addr_t boundary; void *cookie; }; diff --git a/sys/powerpc/ps3/ps3bus.c b/sys/powerpc/ps3/ps3bus.c index 4c6ed76..65e1153 100644 --- a/sys/powerpc/ps3/ps3bus.c +++ b/sys/powerpc/ps3/ps3bus.c @@ -64,7 +64,7 @@ static int ps3bus_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *res); static bus_dma_tag_t ps3bus_get_dma_tag(device_t dev, device_t child); static int ps3_iommu_map(device_t dev, bus_dma_segment_t *segs, int *nsegs, bus_addr_t min, bus_addr_t max, bus_size_t alignment, - bus_size_t boundary, void *cookie); + bus_addr_t boundary, void *cookie); static int ps3_iommu_unmap(device_t dev, bus_dma_segment_t *segs, int nsegs, void *cookie); static int ps3_gettime(device_t dev, struct timespec *ts); @@ -697,7 +697,7 @@ fail: static int ps3_iommu_map(device_t dev, bus_dma_segment_t *segs, int *nsegs, - bus_addr_t min, bus_addr_t max, bus_size_t alignment, bus_size_t boundary, + bus_addr_t min, bus_addr_t max, bus_size_t alignment, bus_addr_t boundary, void *cookie) { struct ps3bus_devinfo *dinfo = cookie; |