[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4DB3118C.4030505@zytor.com>
Date: Sat, 23 Apr 2011 10:51:08 -0700
From: "H. Peter Anvin" <hpa@...or.com>
To: Thomas Meyer <thomas@...3r.de>
CC: Yuhong Bao <yuhongbao_386@...mail.com>, chris@...muel.org,
alan@...rguk.ukuu.org.uk, tglx@...utronix.de, mingo@...hat.com,
x86@...nel.org, linux-kernel@...r.kernel.org
Subject: Re: FW: 2.6.38.3 and 2.6.39-rc4 hangs after "Booting the kernel"
on quad Pentium Pro system
On 04/23/2011 06:52 AM, Thomas Meyer wrote:
>
> so your bios seems to report the size in AX/BX. the code in
> arch/x86/boot/memory.c move the return sizes from CX/DX into AX/BX, when
> CX or DX is not zero.
>
> Could you try to change the line:
>
> } else if (oreg.ax == 15*1024) {
> boot_params.alt_mem_k = (oreg.dx<< 6) + oreg.ax;
>
> to
> } else if (oreg.ax == 15*1024) {
> boot_params.alt_mem_k = (oreg.bx<< 6) + oreg.ax;
>
> That should fix your misdetection.
>
> The assembler code in arch/i386/boot/setup.S seemed to move AX/BX into
> CX/DX, when CX and(!) DX were zero. Then used CX/DX to calc the memory
> size.
>
> PS: gitk --follow arch/x86/boot/memory.c seems to react strangley...
>
Ah yes, this should have been bx; ax/bx and cx/dx forms pairs (unlike
the normal x86 convention of DX:AX and BX:CX forming pairs), and it
doesn't make sense to mix and match them.
-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists