On Sat, Mar 09, 2013 at 10:44:31PM -0800, Yinghai Lu wrote: > Current acpi tables in initrd is limited to 10, that is too small. > 64 should be good enough as we have 35 sigs and could have several > SSDT. > > Two problems in current code prevent us from increasing limit: > 1. that cpio file info array is put in stack, as every element is 32 > bytes, could run out of stack if we have that array size to 64. > We can move it out from stack, and make it as global and put it in > __initdata section. > 2. early_ioremap only can remap 256k one time. Current code is mapping > 10 tables one time. If we increase that limit, whole size could be > more than 256k, early_ioremap will fail with that. > We can map table one by one during copying, instead of mapping > all them one time. > > -v2: According to tj, split it out to separated patch, also > rename array name to acpi_initrd_files. > > Signed-off-by: Yinghai <yinghai@xxxxxxxxxx> > Cc: Rafael J. Wysocki <rjw@xxxxxxx> > Cc: linux-acpi@xxxxxxxxxxxxxxx Acked-by: Tejun Heo <tj@xxxxxxxxxx> > @@ -648,14 +647,14 @@ void __init acpi_initrd_override(void *data, size_t size) > memblock_reserve(acpi_tables_addr, acpi_tables_addr + all_tables_size); > arch_reserve_mem_area(acpi_tables_addr, all_tables_size); > > - p = early_ioremap(acpi_tables_addr, all_tables_size); > - It'd be nice to have a brief comment here explaining why we're mapping each table separately. > for (no = 0; no < table_nr; no++) { > - memcpy(p + total_offset, early_initrd_files[no].data, > - early_initrd_files[no].size); > - total_offset += early_initrd_files[no].size; > + phys_addr_t size = acpi_initrd_files[no].size; > + > + p = early_ioremap(acpi_tables_addr + total_offset, size); > + memcpy(p, acpi_initrd_files[no].data, size); > + early_iounmap(p, size); > + total_offset += size; > } > - early_iounmap(p, all_tables_size); Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html