Re: INITRD/RAMDISK/SYSLINUX booting fails with new kernel (vs2.2series)

From: Michael Peddemors (michael@wizard.ca)
Date: Tue Aug 22 2000 - 17:46:16 EST


On Tue, 22 Aug 2000, you wrote:

Sigh, been working on this all day today.. decided to track this down once
and for all...
Stripped a bunch of printk out so I could see what was flashing by all the
time and changed the vidmode....(I thought it was just the RAM map <sheepish
grin>)
Sure enough.. There is something important there....
initrd extends beyond end of memory (0x01ff932d > 0x01d80000)
I put in a printk and get back LOADER_TYPE=49 INITRD_START=3276800

Hmmm.. That looks real wrong... Is it a fault with trying to prink
LOADER_TYPE as a %d or is it really seeing 49

Strange why this (2.4 vs 2.2) kernel works different tho.. Something MUST
have changed.

So that puts me back to where I started, looking at:
/* LOADER_TYPE is setup from empty_zero_page as PARAM+ 0x210 in
i386/kernel/setup.c */
/* INITRD_START is setup from empty_zero_page as PARAM+ 0x218 in
i386/kernel/setup.c */

#ifdef CONFIG_BLK_DEV_INITRD
        if (LOADER_TYPE && INITRD_START) {
 printk("LOADER_TYPE and INITRD_START valid, %d %d
\n",LOADER_TYPE,INITRD_START);

                if (INITRD_START + INITRD_SIZE <= (max_low_pfn <<
PAGE_SHIFT)) { reserve_bootmem(INITRD_START,
INITRD_SIZE);
                        initrd_start =
                                INITRD_START ? INITRD_START + PAGE_OFFSET : 0;
                        initrd_end = initrd_start+INITRD_SIZE;
                }
                else {
                        printk("initrd extends beyond end of memory "
                            "(0x%08lx > 0x%08lx)\ndisabling initrd\n",
                            INITRD_START + INITRD_SIZE,
                            max_low_pfn << PAGE_SHIFT);
                        initrd_start = 0;
                }
        }
#endif
<OLDER KERNEL>
#ifdef CONFIG_BLK_DEV_INITRD
        if (LOADER_TYPE) {
                initrd_start = INITRD_START ? INITRD_START + PAGE_OFFSET : 0;
                initrd_end = initrd_start+INITRD_SIZE;
                if (initrd_end > memory_end) {
                        printk("initrd extends beyond end of memory "
                            "(0x%08lx > 0x%08lx)\ndisabling initrd\n",
                            initrd_end,memory_end);
                        initrd_start = 0;
                }
        }
#endif

-- 
--------------------------------------------------------
Michael Peddemors - Senior Consultant
Unix Administration - WebSite Hosting
Network Services - Programming
Wizard Internet Services http://www.wizard.ca
Linux Support Specialist - http://www.linuxmagic.com
--------------------------------------------------------
(604) 589-0037 Beautiful British Columbia, Canada
--------------------------------------------------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Aug 23 2000 - 21:00:08 EST