aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2012-03-01 19:58:34 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2012-03-01 19:58:34 +0000
commit831ce4cb3d9dbbf5cfcdb6956004479d52ce6c4d (patch)
treec681791d9aa316edfa305bde95f3cea4802aee56
parent4304af4a28a85b72beb5a6a7d8f99fe1502175dc (diff)
downloadsrc-831ce4cb3d9dbbf5cfcdb6956004479d52ce6c4d.tar.gz
src-831ce4cb3d9dbbf5cfcdb6956004479d52ce6c4d.zip
- 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
Notes
Notes: svn path=/head/; revision=232356
-rw-r--r--sys/arm/arm/busdma_machdep.c10
-rw-r--r--sys/ia64/ia64/busdma_machdep.c6
-rw-r--r--sys/kern/kern_malloc.c2
-rw-r--r--sys/mips/mips/busdma_machdep.c10
-rw-r--r--sys/powerpc/powerpc/busdma_machdep.c4
-rw-r--r--sys/powerpc/powerpc/iommu_if.m2
-rw-r--r--sys/powerpc/ps3/ps3bus.c4
-rw-r--r--sys/sparc64/include/bus_dma.h2
-rw-r--r--sys/sparc64/sparc64/bus_machdep.c2
-rw-r--r--sys/sys/bus_dma.h2
-rw-r--r--sys/sys/malloc.h2
-rw-r--r--sys/x86/x86/busdma_machdep.c4
12 files changed, 25 insertions, 25 deletions
diff --git a/sys/arm/arm/busdma_machdep.c b/sys/arm/arm/busdma_machdep.c
index cf8dd513f75c..dbb929a23149 100644
--- a/sys/arm/arm/busdma_machdep.c
+++ b/sys/arm/arm/busdma_machdep.c
@@ -68,7 +68,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;
@@ -332,7 +332,7 @@ _busdma_free_dmamap(bus_dmamap_t map)
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,
@@ -378,12 +378,12 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
* Take into account any restrictions imposed by our parent tag
*/
if (parent != NULL) {
- newtag->lowaddr = min(parent->lowaddr, newtag->lowaddr);
- newtag->highaddr = max(parent->highaddr, newtag->highaddr);
+ newtag->lowaddr = MIN(parent->lowaddr, newtag->lowaddr);
+ newtag->highaddr = MAX(parent->highaddr, newtag->highaddr);
if (newtag->boundary == 0)
newtag->boundary = parent->boundary;
else if (parent->boundary != 0)
- newtag->boundary = min(parent->boundary,
+ newtag->boundary = MIN(parent->boundary,
newtag->boundary);
if ((newtag->filter != NULL) ||
((parent->flags & BUS_DMA_COULD_BOUNCE) != 0))
diff --git a/sys/ia64/ia64/busdma_machdep.c b/sys/ia64/ia64/busdma_machdep.c
index c78ba7186d1c..d504e89677de 100644
--- a/sys/ia64/ia64/busdma_machdep.c
+++ b/sys/ia64/ia64/busdma_machdep.c
@@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$");
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;
@@ -139,7 +139,7 @@ static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr,
static __inline int
run_filter(bus_dma_tag_t dmat, bus_addr_t paddr, bus_size_t len)
{
- bus_size_t bndy;
+ bus_addr_t bndy;
int retval;
retval = 0;
@@ -199,7 +199,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 highaddr,
+ 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,
void *lockfuncarg, bus_dma_tag_t *dmat)
diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c
index e0196971c956..c1b6f56fed20 100644
--- a/sys/kern/kern_malloc.c
+++ b/sys/kern/kern_malloc.c
@@ -418,7 +418,7 @@ malloc_type_freed(struct malloc_type *mtp, unsigned long size)
void *
contigmalloc(unsigned long size, struct malloc_type *type, int flags,
vm_paddr_t low, vm_paddr_t high, unsigned long alignment,
- unsigned long boundary)
+ vm_paddr_t boundary)
{
void *ret;
diff --git a/sys/mips/mips/busdma_machdep.c b/sys/mips/mips/busdma_machdep.c
index cd95677a5a84..8e0317d50186 100644
--- a/sys/mips/mips/busdma_machdep.c
+++ b/sys/mips/mips/busdma_machdep.c
@@ -67,7 +67,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;
@@ -310,7 +310,7 @@ _busdma_free_dmamap(bus_dmamap_t map)
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,
@@ -356,13 +356,13 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
* Take into account any restrictions imposed by our parent tag
*/
if (parent != NULL) {
- newtag->lowaddr = min(parent->lowaddr, newtag->lowaddr);
- newtag->highaddr = max(parent->highaddr, newtag->highaddr);
+ newtag->lowaddr = MIN(parent->lowaddr, newtag->lowaddr);
+ newtag->highaddr = MAX(parent->highaddr, newtag->highaddr);
if (newtag->boundary == 0)
newtag->boundary = parent->boundary;
else if (parent->boundary != 0)
newtag->boundary =
- min(parent->boundary, newtag->boundary);
+ MIN(parent->boundary, newtag->boundary);
if ((newtag->filter != NULL) ||
((parent->flags & BUS_DMA_COULD_BOUNCE) != 0))
newtag->flags |= BUS_DMA_COULD_BOUNCE;
diff --git a/sys/powerpc/powerpc/busdma_machdep.c b/sys/powerpc/powerpc/busdma_machdep.c
index 7f9f8ec7a374..2063b1dfbb9a 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 dec70e3df0f4..d37155ee41a8 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 4c6ed76b1846..65e11534f509 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;
diff --git a/sys/sparc64/include/bus_dma.h b/sys/sparc64/include/bus_dma.h
index 9e069df9874e..5f981a7c1abf 100644
--- a/sys/sparc64/include/bus_dma.h
+++ b/sys/sparc64/include/bus_dma.h
@@ -103,7 +103,7 @@ struct bus_dma_tag {
void *dt_cookie; /* cookie used in the guts */
bus_dma_tag_t dt_parent;
bus_size_t dt_alignment;
- bus_size_t dt_boundary;
+ bus_addr_t dt_boundary;
bus_addr_t dt_lowaddr;
bus_addr_t dt_highaddr;
bus_dma_filter_t *dt_filter;
diff --git a/sys/sparc64/sparc64/bus_machdep.c b/sys/sparc64/sparc64/bus_machdep.c
index 4667e443b280..31d28b275067 100644
--- a/sys/sparc64/sparc64/bus_machdep.c
+++ b/sys/sparc64/sparc64/bus_machdep.c
@@ -185,7 +185,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 highaddr,
+ 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,
void *lockfuncarg, bus_dma_tag_t *dmat)
diff --git a/sys/sys/bus_dma.h b/sys/sys/bus_dma.h
index 0dad32673beb..915d0658fea6 100644
--- a/sys/sys/bus_dma.h
+++ b/sys/sys/bus_dma.h
@@ -169,7 +169,7 @@ void busdma_lock_mutex(void *arg, bus_dma_lock_op_t op);
*/
/* XXX Should probably allow specification of alignment */
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 *filtfunc,
void *filtfuncarg, bus_size_t maxsize, int nsegments,
bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc,
diff --git a/sys/sys/malloc.h b/sys/sys/malloc.h
index a6450b3a5caf..b0e1805ed815 100644
--- a/sys/sys/malloc.h
+++ b/sys/sys/malloc.h
@@ -171,7 +171,7 @@ typedef void malloc_type_list_func_t(struct malloc_type *, void *);
void contigfree(void *addr, unsigned long size, struct malloc_type *type);
void *contigmalloc(unsigned long size, struct malloc_type *type, int flags,
vm_paddr_t low, vm_paddr_t high, unsigned long alignment,
- unsigned long boundary) __malloc_like;
+ vm_paddr_t boundary) __malloc_like;
void free(void *addr, struct malloc_type *type);
void *malloc(unsigned long size, struct malloc_type *type, int flags) __malloc_like;
void malloc_init(void *);
diff --git a/sys/x86/x86/busdma_machdep.c b/sys/x86/x86/busdma_machdep.c
index 89e0e98be378..35daa40bc0a1 100644
--- a/sys/x86/x86/busdma_machdep.c
+++ b/sys/x86/x86/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;
@@ -218,7 +218,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,