Re: [patch] reduce stack usage of sanitize_e820_map

Benjamin LaHaise
2002-08-17T19:31:58Z

On Sat, Aug 17, 2002 at 03:17:04PM -0400, Benjamin LaHaise wrote:
> Nope. static conflicts with __initdata. If namespace pollution is a
> concern, just prefix them with e820_.

Erm, foot-in-mouth. I'd tried adding __initdata within the function,
which conflicts with the auto attribute. Making it static within the
function and adding __initdata works here and has the same effect on
stack usage. Linus, could you apply this? Thanks.

-ben

--- foo-v2.5.31/arch/i386/kernel/setup.c Sat Aug 17 15:31:33 2002
+++ test-v2.5.31/arch/i386/kernel/setup.c Sat Aug 17 15:28:33 2002
@@ -275,17 +275,16 @@
* replaces the original e820 map with a new one, removing overlaps.
*
*/
-struct change_member {
- struct e820entry *pbios; /* pointer to original bios entry */
- unsigned long long addr; /* address for this change point */
-};
-struct change_member change_point_list[2*E820MAX] __initdata;
-struct change_member *change_point[2*E820MAX] __initdata;
-struct e820entry *overlap_list[E820MAX] __initdata;
-struct e820entry new_bios[E820MAX] __initdata;
-
static int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map)
{
+ struct change_member {
+ struct e820entry *pbios; /* pointer to original bios entry */
+ unsigned long long addr; /* address for this change point */
+ };
+ static struct change_member change_point_list[2*E820MAX] __initdata;
+ static struct change_member *change_point[2*E820MAX] __initdata;
+ static struct e820entry *overlap_list[E820MAX] __initdata;
+ static struct e820entry new_bios[E820MAX] __initdata;
struct change_member *change_tmp;
unsigned long current_type, last_type;
unsigned long long last_addr;