aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorKyle McMartin <kyle@mcmartin.ca>2009-06-23 13:10:03 -0400
committerKyle McMartin <kyle@mcmartin.ca>2009-07-02 23:34:11 -0400
commit64a0cdb026666cd9911fa045b863fb1f0f255dd8 (patch)
treef2830143e34a995ad9fcbbad1541778353a47d72 /arch
parent20dbc9f724e02c26e30d89cf50e7ce259ab46da4 (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')
-rw-r--r--arch/parisc/kernel/processor.c16
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