Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -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)
		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);
+13 −10
Original line number Original line Diff line number Diff line
@@ -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);
}
}
+18 −16
Original line number Original line Diff line number Diff line
@@ -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);
 * 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,
 * 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);
 * 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);
 *
 *
 * 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,


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


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;