From: H Hartley Sweeten on 2 Mar 2010 16:50 This fixes up the worst of the sparse issues in the allocator code. 1) include allocator.h for exported function prototypes 2) fix the return type for allocator_free_dma 3) fix the 2nd parameter type for allocator_allocate_dma 4) make all the local variables static 5) change the "remapped" variable in allocator_init to a void __iomem * Signed-off-by: H Hartley Sweeten <hsweeten(a)visionengravers.com> Cc: Greg Kroah-Hartman <greg(a)kroah.com> Cc: Scott Smedley <ss(a)aao.gov.au> --- I'm not sure how to handle the strcpy/strcmp using "remapped". It is setup with ioremap and released with iounmap so it should be a void __iomem *. But, using that in strcpy/strcmp results in a "cast removes address space of expression" sparse warning. diff --git a/drivers/staging/dt3155/allocator.c b/drivers/staging/dt3155/allocator.c index c74234c..53c5069 100644 --- a/drivers/staging/dt3155/allocator.c +++ b/drivers/staging/dt3155/allocator.c @@ -58,6 +58,8 @@ #include <asm/page.h> +#include "allocator.h" + /*#define ALL_DEBUG*/ #define ALL_MSG "allocator: " @@ -83,9 +85,9 @@ /*#define PDEBUGG(fmt, args...) printk( KERN_DEBUG ALL_MSG fmt, ## args)*/ -int allocator_himem = 1; /* 0 = probe, pos. = megs, neg. = disable */ -int allocator_step = 1; /* This is the step size in MB */ -int allocator_probe = 1; /* This is a flag -- 1=probe, 0=don't probe */ +static int allocator_himem = 1; /* 0 = probe, pos. = megs, neg. = disable */ +static int allocator_step = 1; /* This is the step size in MB */ +static int allocator_probe = 1; /* This is a flag -- 1=probe, 0=don't probe */ static unsigned long allocator_buffer; /* physical address */ static unsigned long allocator_buffer_size; /* kilobytes */ @@ -101,7 +103,7 @@ struct allocator_struct { struct allocator_struct *next; }; -struct allocator_struct *allocator_list; +static struct allocator_struct *allocator_list; #ifdef ALL_DEBUG @@ -124,7 +126,7 @@ static int dump_list(void) * be used straight ahead for DMA, but needs remapping for program use). */ -unsigned long allocator_allocate_dma(unsigned long kilobytes, int prio) +unsigned long allocator_allocate_dma(unsigned long kilobytes, gfp_t flags) { struct allocator_struct *ptr = allocator_list, *newptr; unsigned long bytes = kilobytes << 10; @@ -147,7 +149,7 @@ unsigned long allocator_allocate_dma(unsigned long kilobytes, int prio) PDEBUG("alloc failed\n"); return 0; /* end of list */ } - newptr = kmalloc(sizeof(struct allocator_struct), prio); + newptr = kmalloc(sizeof(struct allocator_struct), flags); if (!newptr) return 0; @@ -198,7 +200,7 @@ int allocator_free_dma(unsigned long address) int allocator_init(u32 *allocator_max) { /* check how much free memory is there */ - void *remapped; + void __iomem *remapped; unsigned long max; unsigned long trial_size = allocator_himem<<20; unsigned long last_trial = 0; @@ -227,7 +229,7 @@ int allocator_init(u32 *allocator_max) if (strcmp((char *)(remapped)+i, test_string)) break; } - iounmap((void *)remapped); + iounmap(remapped); schedule(); last_trial = trial_size; if (i == trial_size) diff --git a/drivers/staging/dt3155/allocator.h b/drivers/staging/dt3155/allocator.h index bdf3268..425b70f 100644 --- a/drivers/staging/dt3155/allocator.h +++ b/drivers/staging/dt3155/allocator.h @@ -22,7 +22,7 @@ * */ -void allocator_free_dma(unsigned long address); -unsigned long allocator_allocate_dma(unsigned long kilobytes, int priority); +int allocator_free_dma(unsigned long address); +unsigned long allocator_allocate_dma(unsigned long kilobytes, gfp_t flags); int allocator_init(u32 *); void allocator_cleanup(void); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|
Pages: 1 Prev: mmc: at91_mci: use DMA buffer for read Next: audit: Protect find_task_by_vpid() with RCU. |