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/processor.c | |
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/processor.c')
-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 |