mirror of https://gitee.com/openkylin/linux.git
[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>
This commit is contained in:
parent
cf7c712c11
commit
d75fc8bbcc
|
@ -208,7 +208,7 @@ _sparc_ioremap(struct resource *res, u32 bus, u32 pa, int sz)
|
|||
pa &= PAGE_MASK;
|
||||
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)
|
|||
res->name = sdev->prom_name;
|
||||
}
|
||||
|
||||
return (void *)res->start;
|
||||
return (void *)(unsigned long)res->start;
|
||||
|
||||
err_noiommu:
|
||||
release_resource(res);
|
||||
|
|
|
@ -98,31 +98,34 @@ extern struct resource * ____request_resource(struct resource *root, struct reso
|
|||
extern int release_resource(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,
|
||||
unsigned long size,
|
||||
unsigned long min, unsigned long max,
|
||||
unsigned long align,
|
||||
resource_size_t size, resource_size_t min,
|
||||
resource_size_t max, resource_size_t align,
|
||||
void (*alignf)(void *, struct resource *,
|
||||
unsigned long, unsigned long),
|
||||
resource_size_t, resource_size_t),
|
||||
void *alignf_data);
|
||||
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);
|
||||
|
||||
/* Convenience shorthand with allocation */
|
||||
#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 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 */
|
||||
#define release_region(start,n) __release_region(&ioport_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))
|
||||
|
||||
extern int __check_region(struct resource *, unsigned long, unsigned long);
|
||||
extern void __release_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 *, 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);
|
||||
}
|
||||
|
|
|
@ -151,8 +151,8 @@ __initcall(ioresources_init);
|
|||
/* Return the conflict entry if you can't request it */
|
||||
static struct resource * __request_resource(struct resource *root, struct resource *new)
|
||||
{
|
||||
unsigned long start = new->start;
|
||||
unsigned long end = new->end;
|
||||
resource_size_t start = new->start;
|
||||
resource_size_t end = new->end;
|
||||
struct resource *tmp, **p;
|
||||
|
||||
if (end < start)
|
||||
|
@ -236,11 +236,10 @@ EXPORT_SYMBOL(release_resource);
|
|||
* Find empty slot in the resource tree given range and alignment.
|
||||
*/
|
||||
static int find_resource(struct resource *root, struct resource *new,
|
||||
unsigned long size,
|
||||
unsigned long min, unsigned long max,
|
||||
unsigned long align,
|
||||
resource_size_t size, resource_size_t min,
|
||||
resource_size_t max, resource_size_t align,
|
||||
void (*alignf)(void *, struct resource *,
|
||||
unsigned long, unsigned long),
|
||||
resource_size_t, resource_size_t),
|
||||
void *alignf_data)
|
||||
{
|
||||
struct resource *this = root->child;
|
||||
|
@ -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.
|
||||
*/
|
||||
int allocate_resource(struct resource *root, struct resource *new,
|
||||
unsigned long size,
|
||||
unsigned long min, unsigned long max,
|
||||
unsigned long align,
|
||||
resource_size_t size, resource_size_t min,
|
||||
resource_size_t max, resource_size_t align,
|
||||
void (*alignf)(void *, struct resource *,
|
||||
unsigned long, unsigned long),
|
||||
resource_size_t, resource_size_t),
|
||||
void *alignf_data)
|
||||
{
|
||||
int err;
|
||||
|
@ -378,10 +376,10 @@ EXPORT_SYMBOL(insert_resource);
|
|||
* arguments. Returns -EBUSY if it can't fit. Existing children of
|
||||
* 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;
|
||||
unsigned long end = start + size - 1;
|
||||
resource_size_t end = start + size - 1;
|
||||
int result = -EBUSY;
|
||||
|
||||
write_lock(&resource_lock);
|
||||
|
@ -428,7 +426,9 @@ EXPORT_SYMBOL(adjust_resource);
|
|||
*
|
||||
* 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);
|
||||
|
||||
|
@ -464,7 +464,8 @@ struct resource * __request_region(struct resource *parent, unsigned long start,
|
|||
|
||||
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;
|
||||
|
||||
|
@ -479,10 +480,11 @@ int __check_region(struct resource *parent, unsigned long start, unsigned long n
|
|||
|
||||
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;
|
||||
unsigned long end;
|
||||
resource_size_t end;
|
||||
|
||||
p = &parent->child;
|
||||
end = start + n - 1;
|
||||
|
|
Loading…
Reference in New Issue