Hi, that is indeed the weirdest thing I've heard in a while :)
I just tried it on the computer that fails, but I'm testing this with
OpenBSD on a USB stick and when it detects a CD and I don't actually
boot from it, it just boots from the harddrive instead. (Not from the
USB which is next in the boot-order)
I will try to find time tomorrow, and install it on a harddive and try
this trick again.

FWIW I got a tip off-list about putting some debug info in
/usr/src/sys/arch/i386/stand/libsa/memprobe.c to try to figure out
where it stops, and it seems to be this chunk of code at line 75:

                __asm __volatile(DOINT(0x15) "; setc %b1"
                    : "=a" (sig), "=d" (rc), "=b" (off)
                    : "0" (0xE820), "1" (0x534d4150), "b" (off),
                      "c" (sizeof(*mp)), "D" (((u_int)mp) & 0xF)
                    : "cc", "memory");

I just put a printf() before and after this code and it prints the one
before it and then it just freezes.
(See diff below. This gives the output
        probing: pc0 pci mem[Debug1Debug2
)

I don't know if this is helpful at all, but if someone have a diff
they want me to test or something I'll be happy to recompile boot
again and test it here.
Or maybe the bios is so badly broken that the "real fix" for this
would be in the form of a bios-update from HP?
I'll look for that too.

Thanks!


--- memprobe99.c~       Mon Jun 21 19:41:34 2010
+++ memprobe.c  Mon Jun 21 19:43:08 2010
@@ -68,17 +68,17 @@
 bios_E820(bios_memmap_t *mp)
 {
        int rc, off = 0, sig, gotcha = 0;
-
+       printf("Debug1");
        do {
                BIOS_regs.biosr_es = ((u_int)(mp) >> 4);
-
+               printf("Debug2");
                __asm __volatile(DOINT(0x15) "; setc %b1"
                    : "=a" (sig), "=d" (rc), "=b" (off)
                    : "0" (0xE820), "1" (0x534d4150), "b" (off),
                      "c" (sizeof(*mp)), "D" (((u_int)mp) & 0xF)
                    : "cc", "memory");
                off = BIOS_regs.biosr_bx;
-
+               printf("Debug3");
                if (rc & 0xff || sig != 0x534d4150)
                        break;
                gotcha++;


On Mon, Jun 21, 2010 at 1:22 AM, Marco Peereboom <sl...@peereboom.us> wrote:
> On Sun, Jun 20, 2010 at 12:41:01PM -0500, Todd Alan Smith wrote:
>> On Sun, Jun 20, 2010 at 7:55 AM, Marco Peereboom <sl...@peereboom.us>
wrote:
>> > This is most likely a bios issue and I hoped my little trick helped you
>> > past the bios boot part.
>>
>> Yeah, me too. I guess I'll have to look for a BIOS update, though I'm
>> not very optimistic that one exists.
>>
>> By the way, I don't understand why your trick would work in any
>> situation. I didn't think anything persists beyond a reboot. I am
>> really puzzled that it works in some situations. Weird.
>
> The cd boot trick moves memory around enough.  You don't want to know
> how bios is written and this is one of those examples that proves how
> bad it really is.
>
>>
>> > HP/compaq really know how to be incompatible.
>>
>> Yeah, no doubt.

Reply via email to