DO NOT MERGE

Reason: This is more of a dirty "hack" than anything else that even he said he needs to fix it in EDK2. He also said you can put this patch under payloads/external/SeaBIOS/patches/x.patch in his coreboot repo, since we both want to still use latest repos as much as we can, we can just do this instead. Plus, all the needed seabios patches for chromebooks only should go there anyways. 

On Sun, Feb 12, 2023 at 10:28 PM <christopherericlentocha@gmail.com> wrote:

tom Firmware

while using the SeaBios payload with MrChromebox's SMM variable
in coreboot. This is required even if we are booting off of a
USB, since it will give MMC errors in Linux and Windows 10
and 11 won't see it, though I didn't test 11, It would most
likely do it since all Linux versions I tried did the same.

Signed-off-by: Christopher Lentocha <christopherericlentocha@gmail.com>
---
src/boot.c | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/src/boot.c b/src/boot.c
index 1effd80..0844268 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -871,6 +871,18 @@ call_boot_entry(struct segoff_s bootsegip, u8 bootdrv)
// Set the magic number in ax and the boot drive in dl.
br.dl = bootdrv;
br.ax = 0xaa55;
+ // Fix Bay Trail Chromebook Bootup on MrChromebox's Custom Firmware
+ // while using the SeaBios payload with MrChromebox's SMM variable
+ // in coreboot. This is required even if we are booting off of a
+ // USB, since it will give MMC errors in Linux and Windows 10
+ // and 11 won't see it, though I didn't test 11, It would most
+ // likely do it since all Linux versions I tried did the same.
+ outb(0xcd, 0xb2);
+ // Don't Add the line above this comment to CBFS booting, because
+ // EDK2 as 2nd payload breaks, since its already being applied
+ // there too, and we should expect all CBFS payloads in ROM to do
+ // what we are doing here. The same bug is also in EDK2, so this
+ // line would need to be added in a similar way for EDK2 code.
farcall16(&br);
}

--
2.35.1


>
> on MrChromebox's Custom Firmware
>
> while using the SeaBios payload
>
> with MrChromebox's SMM variable in coreboot.
>
> This is required even if we are booting off of a USB,
>
> since it will give MMC errors in Linux and Windows 10
>
> won't see it.
>
> See comments and code in ./src/boot.c for more information.
>
> Signed-off-by: Christopher Lentocha <christopherericlentocha@gmail.com>
> ---
> src/boot.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/src/boot.c b/src/boot.c
> index 1effd80..8433f51 100644
> --- a/src/boot.c
> +++ b/src/boot.c
> @@ -871,6 +871,21 @@ call_boot_entry(struct segoff_s bootsegip, u8
> bootdrv)
> // Set the magic number in ax and the boot drive in dl.
> br.dl = bootdrv;
> br.ax = 0xaa55;
> + // Fix Bay Trail Chromebook Bootup
> + // on MrChromebox's Custom Firmware
> + // while using the SeaBios payload
> + // with MrChromebox's SMM variable in coreboot.
> + // This is required even if we are booting off of a USB,
> + // since it will give MMC errors in Linux and Windows 10
> + // won't see it.
> + outb(0xcd, 0xb2);
> + // Don't Add the line above this comment to CBFS booting,
> + // because EDK2 as 2nd payload breaks,
> + // since its already being applied there too,
> + // and we should expect all CBFS payloads in ROM to do
> + // what we are doing here.
> + // The same bug is also in EDK2, so this line would need to be
> + // added in a similar way for EDK2 code.
> farcall16(&br);
> }
>