Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d56d1aa authored by Kyle McMartin's avatar Kyle McMartin
Browse files

parisc: inventory.c, fix bloated stack frame



The pa_pdc_cell struct can be kmalloc'd, so do that
instead.

Signed-off-by: default avatarKyle McMartin <kyle@mcmartin.ca>
parent 64a0cdb0
Loading
Loading
Loading
Loading
+24 −17
Original line number Diff line number Diff line
@@ -170,23 +170,27 @@ static void __init pagezero_memconfig(void)
static int __init 
pat_query_module(ulong pcell_loc, ulong mod_index)
{
	pdc_pat_cell_mod_maddr_block_t pa_pdc_cell;
	pdc_pat_cell_mod_maddr_block_t *pa_pdc_cell;
	unsigned long bytecnt;
	unsigned long temp;	/* 64-bit scratch value */
	long status;		/* PDC return value status */
	struct parisc_device *dev;

	pa_pdc_cell = kmalloc(sizeof (*pa_pdc_cell), GFP_KERNEL);
	if (!pa_pdc_cell)
		panic("couldn't allocate memory for PDC_PAT_CELL!");

	/* return cell module (PA or Processor view) */
	status = pdc_pat_cell_module(&bytecnt, pcell_loc, mod_index,
				     PA_VIEW, &pa_pdc_cell);
				     PA_VIEW, pa_pdc_cell);

	if (status != PDC_OK) {
		/* no more cell modules or error */
		return status;
	}

	temp = pa_pdc_cell.cba;
	dev = alloc_pa_dev(PAT_GET_CBA(temp), &pa_pdc_cell.mod_path);
	temp = pa_pdc_cell->cba;
	dev = alloc_pa_dev(PAT_GET_CBA(temp), &(pa_pdc_cell->mod_path));
	if (!dev) {
		return PDC_OK;
	}
@@ -203,8 +207,8 @@ pat_query_module(ulong pcell_loc, ulong mod_index)

	/* save generic info returned from the call */
	/* REVISIT: who is the consumer of this? not sure yet... */
	dev->mod_info = pa_pdc_cell.mod_info;	/* pass to PAT_GET_ENTITY() */
	dev->pmod_loc = pa_pdc_cell.mod_location;
	dev->mod_info = pa_pdc_cell->mod_info;	/* pass to PAT_GET_ENTITY() */
	dev->pmod_loc = pa_pdc_cell->mod_location;

	register_parisc_device(dev);	/* advertise device */

@@ -216,14 +220,14 @@ pat_query_module(ulong pcell_loc, ulong mod_index)

	case PAT_ENTITY_PROC:
		printk(KERN_DEBUG "PAT_ENTITY_PROC: id_eid 0x%lx\n",
			pa_pdc_cell.mod[0]);
			pa_pdc_cell->mod[0]);
		break;

	case PAT_ENTITY_MEM:
		printk(KERN_DEBUG 
			"PAT_ENTITY_MEM: amount 0x%lx min_gni_base 0x%lx min_gni_len 0x%lx\n",
			pa_pdc_cell.mod[0], pa_pdc_cell.mod[1], 
			pa_pdc_cell.mod[2]);
			pa_pdc_cell->mod[0], pa_pdc_cell->mod[1],
			pa_pdc_cell->mod[2]);
		break;
	case PAT_ENTITY_CA:
		printk(KERN_DEBUG "PAT_ENTITY_CA: %ld\n", pcell_loc);
@@ -243,23 +247,26 @@ pat_query_module(ulong pcell_loc, ulong mod_index)
 print_ranges:
		pdc_pat_cell_module(&bytecnt, pcell_loc, mod_index,
				    IO_VIEW, &io_pdc_cell);
		printk(KERN_DEBUG "ranges %ld\n", pa_pdc_cell.mod[1]);
		for (i = 0; i < pa_pdc_cell.mod[1]; i++) {
		printk(KERN_DEBUG "ranges %ld\n", pa_pdc_cell->mod[1]);
		for (i = 0; i < pa_pdc_cell->mod[1]; i++) {
			printk(KERN_DEBUG 
				"  PA_VIEW %ld: 0x%016lx 0x%016lx 0x%016lx\n", 
				i, pa_pdc_cell.mod[2 + i * 3],	/* type */
				pa_pdc_cell.mod[3 + i * 3],	/* start */
				pa_pdc_cell.mod[4 + i * 3]);	/* finish (ie end) */
				i, pa_pdc_cell->mod[2 + i * 3],	/* type */
				pa_pdc_cell->mod[3 + i * 3],	/* start */
				pa_pdc_cell->mod[4 + i * 3]);	/* finish (ie end) */
			printk(KERN_DEBUG 
				"  IO_VIEW %ld: 0x%016lx 0x%016lx 0x%016lx\n", 
				i, io_pdc_cell.mod[2 + i * 3],	/* type */
				io_pdc_cell.mod[3 + i * 3],	/* start */
				io_pdc_cell.mod[4 + i * 3]);	/* finish (ie end) */
				i, io_pdc_cell->mod[2 + i * 3],	/* type */
				io_pdc_cell->mod[3 + i * 3],	/* start */
				io_pdc_cell->mod[4 + i * 3]);	/* finish (ie end) */
		}
		printk(KERN_DEBUG "\n");
		break;
	}
#endif /* DEBUG_PAT */

	kfree(pa_pdc_cell);

	return PDC_OK;
}