Commit e957f608 authored by Grant Grundler's avatar Grant Grundler Committed by Kyle McMartin

parisc: Fix gcc 4.4 warning in lba_pci.c

gcc 4.4 warns about:
drivers/parisc/lba_pci.c: In function 'lba_pat_resources':
drivers/parisc/lba_pci.c:1099: warning: the frame size of 8280 bytes is larger than 4096 bytes

The problem is we declare two large structures on the stack. They don't need
to be on the stack since they are only used during LBA initialization (which
is serialized). Moving to be "static".
Signed-off-by: default avatarGrant Grundler <grundler@parisc-linux.org>
Signed-off-by: default avatarKyle McMartin <kyle@mcmartin.ca>
parent ebc30a0f
...@@ -980,28 +980,38 @@ static void ...@@ -980,28 +980,38 @@ static void
lba_pat_resources(struct parisc_device *pa_dev, struct lba_device *lba_dev) lba_pat_resources(struct parisc_device *pa_dev, struct lba_device *lba_dev)
{ {
unsigned long bytecnt; unsigned long bytecnt;
pdc_pat_cell_mod_maddr_block_t pa_pdc_cell; /* PA_VIEW */
pdc_pat_cell_mod_maddr_block_t io_pdc_cell; /* IO_VIEW */
long io_count; long io_count;
long status; /* PDC return status */ long status; /* PDC return status */
long pa_count; long pa_count;
pdc_pat_cell_mod_maddr_block_t *pa_pdc_cell; /* PA_VIEW */
pdc_pat_cell_mod_maddr_block_t *io_pdc_cell; /* IO_VIEW */
int i; int i;
pa_pdc_cell = kzalloc(sizeof(pdc_pat_cell_mod_maddr_block_t), GFP_KERNEL);
if (!pa_pdc_cell)
return;
io_pdc_cell = kzalloc(sizeof(pdc_pat_cell_mod_maddr_block_t), GFP_KERNEL);
if (!pa_pdc_cell) {
kfree(pa_pdc_cell);
return;
}
/* return cell module (IO view) */ /* return cell module (IO view) */
status = pdc_pat_cell_module(&bytecnt, pa_dev->pcell_loc, pa_dev->mod_index, status = pdc_pat_cell_module(&bytecnt, pa_dev->pcell_loc, pa_dev->mod_index,
PA_VIEW, & pa_pdc_cell); PA_VIEW, pa_pdc_cell);
pa_count = pa_pdc_cell.mod[1]; pa_count = pa_pdc_cell->mod[1];
status |= pdc_pat_cell_module(&bytecnt, pa_dev->pcell_loc, pa_dev->mod_index, status |= pdc_pat_cell_module(&bytecnt, pa_dev->pcell_loc, pa_dev->mod_index,
IO_VIEW, &io_pdc_cell); IO_VIEW, io_pdc_cell);
io_count = io_pdc_cell.mod[1]; io_count = io_pdc_cell->mod[1];
/* We've already done this once for device discovery...*/ /* We've already done this once for device discovery...*/
if (status != PDC_OK) { if (status != PDC_OK) {
panic("pdc_pat_cell_module() call failed for LBA!\n"); panic("pdc_pat_cell_module() call failed for LBA!\n");
} }
if (PAT_GET_ENTITY(pa_pdc_cell.mod_info) != PAT_ENTITY_LBA) { if (PAT_GET_ENTITY(pa_pdc_cell->mod_info) != PAT_ENTITY_LBA) {
panic("pdc_pat_cell_module() entity returned != PAT_ENTITY_LBA!\n"); panic("pdc_pat_cell_module() entity returned != PAT_ENTITY_LBA!\n");
} }
...@@ -1016,8 +1026,8 @@ lba_pat_resources(struct parisc_device *pa_dev, struct lba_device *lba_dev) ...@@ -1016,8 +1026,8 @@ lba_pat_resources(struct parisc_device *pa_dev, struct lba_device *lba_dev)
} *p, *io; } *p, *io;
struct resource *r; struct resource *r;
p = (void *) &(pa_pdc_cell.mod[2+i*3]); p = (void *) &(pa_pdc_cell->mod[2+i*3]);
io = (void *) &(io_pdc_cell.mod[2+i*3]); io = (void *) &(io_pdc_cell->mod[2+i*3]);
/* Convert the PAT range data to PCI "struct resource" */ /* Convert the PAT range data to PCI "struct resource" */
switch(p->type & 0xff) { switch(p->type & 0xff) {
...@@ -1096,6 +1106,9 @@ lba_pat_resources(struct parisc_device *pa_dev, struct lba_device *lba_dev) ...@@ -1096,6 +1106,9 @@ lba_pat_resources(struct parisc_device *pa_dev, struct lba_device *lba_dev)
break; break;
} }
} }
kfree(pa_pdc_cell);
kfree(io_pdc_cell);
} }
#else #else
/* keep compiler from complaining about missing declarations */ /* keep compiler from complaining about missing declarations */
......
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