diff options
| author | Kyle McMartin <kyle@mcmartin.ca> | 2009-06-23 13:10:03 -0400 |
|---|---|---|
| committer | Kyle McMartin <kyle@mcmartin.ca> | 2009-07-02 23:34:11 -0400 |
| commit | 64a0cdb026666cd9911fa045b863fb1f0f255dd8 (patch) | |
| tree | f2830143e34a995ad9fcbbad1541778353a47d72 /arch/parisc/kernel | |
| parent | 20dbc9f724e02c26e30d89cf50e7ce259ab46da4 (diff) | |
parisc: processor.c, fix bloated stack frame
The pa_pdc_cell struct can be kmalloc'd, so do that instead.
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
Diffstat (limited to 'arch/parisc/kernel')
| -rw-r--r-- | arch/parisc/kernel/processor.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c index 1ca69a808e38..c8fb61ed32f4 100644 --- a/arch/parisc/kernel/processor.c +++ b/arch/parisc/kernel/processor.c | |||
| @@ -120,22 +120,28 @@ static int __cpuinit processor_probe(struct parisc_device *dev) | |||
| 120 | if (is_pdc_pat()) { | 120 | if (is_pdc_pat()) { |
| 121 | ulong status; | 121 | ulong status; |
| 122 | unsigned long bytecnt; | 122 | unsigned long bytecnt; |
| 123 | pdc_pat_cell_mod_maddr_block_t pa_pdc_cell; | 123 | pdc_pat_cell_mod_maddr_block_t *pa_pdc_cell; |
| 124 | #undef USE_PAT_CPUID | 124 | #undef USE_PAT_CPUID |
| 125 | #ifdef USE_PAT_CPUID | 125 | #ifdef USE_PAT_CPUID |
| 126 | struct pdc_pat_cpu_num cpu_info; | 126 | struct pdc_pat_cpu_num cpu_info; |
| 127 | #endif | 127 | #endif |
| 128 | 128 | ||
| 129 | pa_pdc_cell = kmalloc(sizeof (*pa_pdc_cell), GFP_KERNEL); | ||
| 130 | if (!pa_pdc_cell) | ||
| 131 | panic("couldn't allocate memory for PDC_PAT_CELL!"); | ||
| 132 | |||
| 129 | status = pdc_pat_cell_module(&bytecnt, dev->pcell_loc, | 133 | status = pdc_pat_cell_module(&bytecnt, dev->pcell_loc, |
| 130 | dev->mod_index, PA_VIEW, &pa_pdc_cell); | 134 | dev->mod_index, PA_VIEW, pa_pdc_cell); |
| 131 | 135 | ||
| 132 | BUG_ON(PDC_OK != status); | 136 | BUG_ON(PDC_OK != status); |
| 133 | 137 | ||
| 134 | /* verify it's the same as what do_pat_inventory() found */ | 138 | /* verify it's the same as what do_pat_inventory() found */ |
| 135 | BUG_ON(dev->mod_info != pa_pdc_cell.mod_info); | 139 | BUG_ON(dev->mod_info != pa_pdc_cell->mod_info); |
| 136 | BUG_ON(dev->pmod_loc != pa_pdc_cell.mod_location); | 140 | BUG_ON(dev->pmod_loc != pa_pdc_cell->mod_location); |
| 141 | |||
| 142 | txn_addr = pa_pdc_cell->mod[0]; /* id_eid for IO sapic */ | ||
| 137 | 143 | ||
| 138 | txn_addr = pa_pdc_cell.mod[0]; /* id_eid for IO sapic */ | 144 | kfree(pa_pdc_cell); |
| 139 | 145 | ||
| 140 | #ifdef USE_PAT_CPUID | 146 | #ifdef USE_PAT_CPUID |
| 141 | /* We need contiguous numbers for cpuid. Firmware's notion | 147 | /* We need contiguous numbers for cpuid. Firmware's notion |
