Commit d75fc8bb authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

[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: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent cf7c712c
...@@ -208,7 +208,7 @@ _sparc_ioremap(struct resource *res, u32 bus, u32 pa, int sz) ...@@ -208,7 +208,7 @@ _sparc_ioremap(struct resource *res, u32 bus, u32 pa, int sz)
pa &= PAGE_MASK; pa &= PAGE_MASK;
sparc_mapiorange(bus, pa, res->start, res->end - res->start + 1); sparc_mapiorange(bus, pa, res->start, res->end - res->start + 1);
return (void __iomem *) (res->start + offset); return (void __iomem *)(unsigned long)(res->start + offset);
} }
/* /*
...@@ -325,7 +325,7 @@ void *sbus_alloc_consistent(struct sbus_dev *sdev, long len, u32 *dma_addrp) ...@@ -325,7 +325,7 @@ void *sbus_alloc_consistent(struct sbus_dev *sdev, long len, u32 *dma_addrp)
res->name = sdev->prom_name; res->name = sdev->prom_name;
} }
return (void *)res->start; return (void *)(unsigned long)res->start;
err_noiommu: err_noiommu:
release_resource(res); release_resource(res);
......
...@@ -98,31 +98,34 @@ extern struct resource * ____request_resource(struct resource *root, struct reso ...@@ -98,31 +98,34 @@ extern struct resource * ____request_resource(struct resource *root, struct reso
extern int release_resource(struct resource *new); extern int release_resource(struct resource *new);
extern __deprecated_for_modules int insert_resource(struct resource *parent, struct resource *new); extern __deprecated_for_modules int insert_resource(struct resource *parent, struct resource *new);
extern int allocate_resource(struct resource *root, struct resource *new, extern int allocate_resource(struct resource *root, struct resource *new,
unsigned long size, resource_size_t size, resource_size_t min,
unsigned long min, unsigned long max, resource_size_t max, resource_size_t align,
unsigned long align,
void (*alignf)(void *, struct resource *, void (*alignf)(void *, struct resource *,
unsigned long, unsigned long), resource_size_t, resource_size_t),
void *alignf_data); void *alignf_data);
int adjust_resource(struct resource *res, unsigned long start, int adjust_resource(struct resource *res, resource_size_t start,
unsigned long size); resource_size_t size);
/* Convenience shorthand with allocation */ /* Convenience shorthand with allocation */
#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name)) #define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name))
#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name)) #define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
#define rename_region(region, newname) do { (region)->name = (newname); } while (0) #define rename_region(region, newname) do { (region)->name = (newname); } while (0)
extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name); extern struct resource * __request_region(struct resource *,
resource_size_t start,
resource_size_t n, const char *name);
/* Compatibility cruft */ /* Compatibility cruft */
#define release_region(start,n) __release_region(&ioport_resource, (start), (n)) #define release_region(start,n) __release_region(&ioport_resource, (start), (n))
#define check_mem_region(start,n) __check_region(&iomem_resource, (start), (n)) #define check_mem_region(start,n) __check_region(&iomem_resource, (start), (n))
#define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n)) #define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n))
extern int __check_region(struct resource *, unsigned long, unsigned long); extern int __check_region(struct resource *, resource_size_t, resource_size_t);
extern void __release_region(struct resource *, unsigned long, unsigned long); extern void __release_region(struct resource *, resource_size_t,
resource_size_t);
static inline int __deprecated check_region(unsigned long s, unsigned long n) static inline int __deprecated check_region(resource_size_t s,
resource_size_t n)
{ {
return __check_region(&ioport_resource, s, n); return __check_region(&ioport_resource, s, n);
} }
......
...@@ -151,8 +151,8 @@ __initcall(ioresources_init); ...@@ -151,8 +151,8 @@ __initcall(ioresources_init);
/* Return the conflict entry if you can't request it */ /* Return the conflict entry if you can't request it */
static struct resource * __request_resource(struct resource *root, struct resource *new) static struct resource * __request_resource(struct resource *root, struct resource *new)
{ {
unsigned long start = new->start; resource_size_t start = new->start;
unsigned long end = new->end; resource_size_t end = new->end;
struct resource *tmp, **p; struct resource *tmp, **p;
if (end < start) if (end < start)
...@@ -236,11 +236,10 @@ EXPORT_SYMBOL(release_resource); ...@@ -236,11 +236,10 @@ EXPORT_SYMBOL(release_resource);
* Find empty slot in the resource tree given range and alignment. * Find empty slot in the resource tree given range and alignment.
*/ */
static int find_resource(struct resource *root, struct resource *new, static int find_resource(struct resource *root, struct resource *new,
unsigned long size, resource_size_t size, resource_size_t min,
unsigned long min, unsigned long max, resource_size_t max, resource_size_t align,
unsigned long align,
void (*alignf)(void *, struct resource *, void (*alignf)(void *, struct resource *,
unsigned long, unsigned long), resource_size_t, resource_size_t),
void *alignf_data) void *alignf_data)
{ {
struct resource *this = root->child; struct resource *this = root->child;
...@@ -282,11 +281,10 @@ static int find_resource(struct resource *root, struct resource *new, ...@@ -282,11 +281,10 @@ static int find_resource(struct resource *root, struct resource *new,
* Allocate empty slot in the resource tree given range and alignment. * Allocate empty slot in the resource tree given range and alignment.
*/ */
int allocate_resource(struct resource *root, struct resource *new, int allocate_resource(struct resource *root, struct resource *new,
unsigned long size, resource_size_t size, resource_size_t min,
unsigned long min, unsigned long max, resource_size_t max, resource_size_t align,
unsigned long align,
void (*alignf)(void *, struct resource *, void (*alignf)(void *, struct resource *,
unsigned long, unsigned long), resource_size_t, resource_size_t),
void *alignf_data) void *alignf_data)
{ {
int err; int err;
...@@ -378,10 +376,10 @@ EXPORT_SYMBOL(insert_resource); ...@@ -378,10 +376,10 @@ EXPORT_SYMBOL(insert_resource);
* arguments. Returns -EBUSY if it can't fit. Existing children of * arguments. Returns -EBUSY if it can't fit. Existing children of
* the resource are assumed to be immutable. * the resource are assumed to be immutable.
*/ */
int adjust_resource(struct resource *res, unsigned long start, unsigned long size) int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size)
{ {
struct resource *tmp, *parent = res->parent; struct resource *tmp, *parent = res->parent;
unsigned long end = start + size - 1; resource_size_t end = start + size - 1;
int result = -EBUSY; int result = -EBUSY;
write_lock(&resource_lock); write_lock(&resource_lock);
...@@ -428,7 +426,9 @@ EXPORT_SYMBOL(adjust_resource); ...@@ -428,7 +426,9 @@ EXPORT_SYMBOL(adjust_resource);
* *
* Release-region releases a matching busy region. * Release-region releases a matching busy region.
*/ */
struct resource * __request_region(struct resource *parent, unsigned long start, unsigned long n, const char *name) struct resource * __request_region(struct resource *parent,
resource_size_t start, resource_size_t n,
const char *name)
{ {
struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL); struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL);
...@@ -464,7 +464,8 @@ struct resource * __request_region(struct resource *parent, unsigned long start, ...@@ -464,7 +464,8 @@ struct resource * __request_region(struct resource *parent, unsigned long start,
EXPORT_SYMBOL(__request_region); EXPORT_SYMBOL(__request_region);
int __check_region(struct resource *parent, unsigned long start, unsigned long n) int __check_region(struct resource *parent, resource_size_t start,
resource_size_t n)
{ {
struct resource * res; struct resource * res;
...@@ -479,10 +480,11 @@ int __check_region(struct resource *parent, unsigned long start, unsigned long n ...@@ -479,10 +480,11 @@ int __check_region(struct resource *parent, unsigned long start, unsigned long n
EXPORT_SYMBOL(__check_region); EXPORT_SYMBOL(__check_region);
void __release_region(struct resource *parent, unsigned long start, unsigned long n) void __release_region(struct resource *parent, resource_size_t start,
resource_size_t n)
{ {
struct resource **p; struct resource **p;
unsigned long end; resource_size_t end;
p = &parent->child; p = &parent->child;
end = start + n - 1; end = start + n - 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment