diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-12 19:09:23 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-27 12:23:59 -0400 |
commit | d75fc8bbccf7c019994bcfd6255d5b56335ed21d (patch) | |
tree | 51eee480485d640e2b7b1efd9e98eadb683fadcd | |
parent | cf7c712c11fb881842534efe98a07f36f1c86c65 (diff) |
[PATCH] 64bit resource: change resource core to use resource_size_t
Based on a patch series originally from Vivek Goyal <vgoyal@in.ibm.com>
Cc: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | arch/sparc/kernel/ioport.c | 4 | ||||
-rw-r--r-- | include/linux/ioport.h | 23 | ||||
-rw-r--r-- | kernel/resource.c | 34 |
3 files changed, 33 insertions, 28 deletions
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index 99d716b9507a..79d177149fdb 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c | |||
@@ -208,7 +208,7 @@ _sparc_ioremap(struct resource *res, u32 bus, u32 pa, int sz) | |||
208 | pa &= PAGE_MASK; | 208 | pa &= PAGE_MASK; |
209 | sparc_mapiorange(bus, pa, res->start, res->end - res->start + 1); | 209 | sparc_mapiorange(bus, pa, res->start, res->end - res->start + 1); |
210 | 210 | ||
211 | return (void __iomem *) (res->start + offset); | 211 | return (void __iomem *)(unsigned long)(res->start + offset); |
212 | } | 212 | } |
213 | 213 | ||
214 | /* | 214 | /* |
@@ -325,7 +325,7 @@ void *sbus_alloc_consistent(struct sbus_dev *sdev, long len, u32 *dma_addrp) | |||
325 | res->name = sdev->prom_name; | 325 | res->name = sdev->prom_name; |
326 | } | 326 | } |
327 | 327 | ||
328 | return (void *)res->start; | 328 | return (void *)(unsigned long)res->start; |
329 | 329 | ||
330 | err_noiommu: | 330 | err_noiommu: |
331 | release_resource(res); | 331 | release_resource(res); |
diff --git a/include/linux/ioport.h b/include/linux/ioport.h index 535bd9585897..d4895236b7e9 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h | |||
@@ -98,31 +98,34 @@ extern struct resource * ____request_resource(struct resource *root, struct reso | |||
98 | extern int release_resource(struct resource *new); | 98 | extern int release_resource(struct resource *new); |
99 | extern __deprecated_for_modules int insert_resource(struct resource *parent, struct resource *new); | 99 | extern __deprecated_for_modules int insert_resource(struct resource *parent, struct resource *new); |
100 | extern int allocate_resource(struct resource *root, struct resource *new, | 100 | extern int allocate_resource(struct resource *root, struct resource *new, |
101 | unsigned long size, | 101 | resource_size_t size, resource_size_t min, |
102 | unsigned long min, unsigned long max, | 102 | resource_size_t max, resource_size_t align, |
103 | unsigned long align, | ||
104 | void (*alignf)(void *, struct resource *, | 103 | void (*alignf)(void *, struct resource *, |
105 | unsigned long, unsigned long), | 104 | resource_size_t, resource_size_t), |
106 | void *alignf_data); | 105 | void *alignf_data); |
107 | int adjust_resource(struct resource *res, unsigned long start, | 106 | int adjust_resource(struct resource *res, resource_size_t start, |
108 | unsigned long size); | 107 | resource_size_t size); |
109 | 108 | ||
110 | /* Convenience shorthand with allocation */ | 109 | /* Convenience shorthand with allocation */ |
111 | #define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name)) | 110 | #define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name)) |
112 | #define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name)) | 111 | #define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name)) |
113 | #define rename_region(region, newname) do { (region)->name = (newname); } while (0) | 112 | #define rename_region(region, newname) do { (region)->name = (newname); } while (0) |
114 | 113 | ||
115 | extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name); | 114 | extern struct resource * __request_region(struct resource *, |
115 | resource_size_t start, | ||
116 | resource_size_t n, const char *name); | ||
116 | 117 | ||
117 | /* Compatibility cruft */ | 118 | /* Compatibility cruft */ |
118 | #define release_region(start,n) __release_region(&ioport_resource, (start), (n)) | 119 | #define release_region(start,n) __release_region(&ioport_resource, (start), (n)) |
119 | #define check_mem_region(start,n) __check_region(&iomem_resource, (start), (n)) | 120 | #define check_mem_region(start,n) __check_region(&iomem_resource, (start), (n)) |
120 | #define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n)) | 121 | #define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n)) |
121 | 122 | ||
122 | extern int __check_region(struct resource *, unsigned long, unsigned long); | 123 | extern int __check_region(struct resource *, resource_size_t, resource_size_t); |
123 | extern void __release_region(struct resource *, unsigned long, unsigned long); | 124 | extern void __release_region(struct resource *, resource_size_t, |
125 | resource_size_t); | ||
124 | 126 | ||
125 | static inline int __deprecated check_region(unsigned long s, unsigned long n) | 127 | static inline int __deprecated check_region(resource_size_t s, |
128 | resource_size_t n) | ||
126 | { | 129 | { |
127 | return __check_region(&ioport_resource, s, n); | 130 | return __check_region(&ioport_resource, s, n); |
128 | } | 131 | } |
diff --git a/kernel/resource.c b/kernel/resource.c index ea5f7811a408..54835c02ab37 100644 --- a/kernel/resource.c +++ b/kernel/resource.c | |||
@@ -151,8 +151,8 @@ __initcall(ioresources_init); | |||
151 | /* Return the conflict entry if you can't request it */ | 151 | /* Return the conflict entry if you can't request it */ |
152 | static struct resource * __request_resource(struct resource *root, struct resource *new) | 152 | static struct resource * __request_resource(struct resource *root, struct resource *new) |
153 | { | 153 | { |
154 | unsigned long start = new->start; | 154 | resource_size_t start = new->start; |
155 | unsigned long end = new->end; | 155 | resource_size_t end = new->end; |
156 | struct resource *tmp, **p; | 156 | struct resource *tmp, **p; |
157 | 157 | ||
158 | if (end < start) | 158 | if (end < start) |
@@ -236,11 +236,10 @@ EXPORT_SYMBOL(release_resource); | |||
236 | * Find empty slot in the resource tree given range and alignment. | 236 | * Find empty slot in the resource tree given range and alignment. |
237 | */ | 237 | */ |
238 | static int find_resource(struct resource *root, struct resource *new, | 238 | static int find_resource(struct resource *root, struct resource *new, |
239 | unsigned long size, | 239 | resource_size_t size, resource_size_t min, |
240 | unsigned long min, unsigned long max, | 240 | resource_size_t max, resource_size_t align, |
241 | unsigned long align, | ||
242 | void (*alignf)(void *, struct resource *, | 241 | void (*alignf)(void *, struct resource *, |
243 | unsigned long, unsigned long), | 242 | resource_size_t, resource_size_t), |
244 | void *alignf_data) | 243 | void *alignf_data) |
245 | { | 244 | { |
246 | struct resource *this = root->child; | 245 | struct resource *this = root->child; |
@@ -282,11 +281,10 @@ static int find_resource(struct resource *root, struct resource *new, | |||
282 | * Allocate empty slot in the resource tree given range and alignment. | 281 | * Allocate empty slot in the resource tree given range and alignment. |
283 | */ | 282 | */ |
284 | int allocate_resource(struct resource *root, struct resource *new, | 283 | int allocate_resource(struct resource *root, struct resource *new, |
285 | unsigned long size, | 284 | resource_size_t size, resource_size_t min, |
286 | unsigned long min, unsigned long max, | 285 | resource_size_t max, resource_size_t align, |
287 | unsigned long align, | ||
288 | void (*alignf)(void *, struct resource *, | 286 | void (*alignf)(void *, struct resource *, |
289 | unsigned long, unsigned long), | 287 | resource_size_t, resource_size_t), |
290 | void *alignf_data) | 288 | void *alignf_data) |
291 | { | 289 | { |
292 | int err; | 290 | int err; |
@@ -378,10 +376,10 @@ EXPORT_SYMBOL(insert_resource); | |||
378 | * arguments. Returns -EBUSY if it can't fit. Existing children of | 376 | * arguments. Returns -EBUSY if it can't fit. Existing children of |
379 | * the resource are assumed to be immutable. | 377 | * the resource are assumed to be immutable. |
380 | */ | 378 | */ |
381 | int adjust_resource(struct resource *res, unsigned long start, unsigned long size) | 379 | int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size) |
382 | { | 380 | { |
383 | struct resource *tmp, *parent = res->parent; | 381 | struct resource *tmp, *parent = res->parent; |
384 | unsigned long end = start + size - 1; | 382 | resource_size_t end = start + size - 1; |
385 | int result = -EBUSY; | 383 | int result = -EBUSY; |
386 | 384 | ||
387 | write_lock(&resource_lock); | 385 | write_lock(&resource_lock); |
@@ -428,7 +426,9 @@ EXPORT_SYMBOL(adjust_resource); | |||
428 | * | 426 | * |
429 | * Release-region releases a matching busy region. | 427 | * Release-region releases a matching busy region. |
430 | */ | 428 | */ |
431 | struct resource * __request_region(struct resource *parent, unsigned long start, unsigned long n, const char *name) | 429 | struct resource * __request_region(struct resource *parent, |
430 | resource_size_t start, resource_size_t n, | ||
431 | const char *name) | ||
432 | { | 432 | { |
433 | struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL); | 433 | struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL); |
434 | 434 | ||
@@ -464,7 +464,8 @@ struct resource * __request_region(struct resource *parent, unsigned long start, | |||
464 | 464 | ||
465 | EXPORT_SYMBOL(__request_region); | 465 | EXPORT_SYMBOL(__request_region); |
466 | 466 | ||
467 | int __check_region(struct resource *parent, unsigned long start, unsigned long n) | 467 | int __check_region(struct resource *parent, resource_size_t start, |
468 | resource_size_t n) | ||
468 | { | 469 | { |
469 | struct resource * res; | 470 | struct resource * res; |
470 | 471 | ||
@@ -479,10 +480,11 @@ int __check_region(struct resource *parent, unsigned long start, unsigned long n | |||
479 | 480 | ||
480 | EXPORT_SYMBOL(__check_region); | 481 | EXPORT_SYMBOL(__check_region); |
481 | 482 | ||
482 | void __release_region(struct resource *parent, unsigned long start, unsigned long n) | 483 | void __release_region(struct resource *parent, resource_size_t start, |
484 | resource_size_t n) | ||
483 | { | 485 | { |
484 | struct resource **p; | 486 | struct resource **p; |
485 | unsigned long end; | 487 | resource_size_t end; |
486 | 488 | ||
487 | p = &parent->child; | 489 | p = &parent->child; |
488 | end = start + n - 1; | 490 | end = start + n - 1; |