Comment 79 for bug 8497

Revision history for this message
Ralph Corderoy (ralph-inputplus) wrote :

Colin, one has to boot with edd=on for this to be activated, as you say, and it's presumably defaults to off for good reason, "This option is experimental and is known to fail to boot on some obscure configurations." says drivers/firmware/Kconfig. However, I'd guess that grub only makes use of the MBR's four-byte Windows NT signature at offset 440 in the MBR which is published in /sys/.../int13_dev80/mbr_signature.

Since reading the MBR is done in arch/x86/boot/edd.c:read_mbr() by using INT 0x13 AX=0x201 (read legacy sector) it will work without doing any EDD-specific stuff which may stop booting on "some obscure configurations". If query_edd() in the same file didn't avoid reading the MBRs when (!do_edd && do_mbr) then the data could still be published by /sys for grub to use.

This would allow EDD to not be done by default, avoiding boot problems on some machines, but BIOS device 0x80's MBR's EDD ID would be available to grub on all machines without the user first having to suffer problems, then find out that the resolution is to add edd=on to the kernel's parameters.

What do you think? The current fix of insisting EDD be done before four bytes of the MBR can be published seems limiting and allows more users to be pestered by this issue in the future instead of them never knowing it existed.