Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Multiple Kernel Options #805

Merged
merged 2 commits into from
Aug 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions boards/kgpe-d16/kgpe-d16.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Configuration for a kgpe-d16 running non-Qubes
export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_COREBOOT_CONFIG=config/coreboot-kgpe-d16.config
CONFIG_LINUX_CONFIG=config/linux-kgpe-d16.config
Expand Down
1 change: 1 addition & 0 deletions boards/librem13v2/librem13v2.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ CONFIG_COREBOOT_CONFIG=config/coreboot-librem13v2.config

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_CRYPTSETUP=y
CONFIG_FLASHROM=y
Expand Down
1 change: 1 addition & 0 deletions boards/librem13v4/librem13v4.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ CONFIG_COREBOOT_CONFIG=config/coreboot-librem13v4.config

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_CRYPTSETUP=y
CONFIG_FLASHROM=y
Expand Down
1 change: 1 addition & 0 deletions boards/librem15v3/librem15v3.config
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ CONFIG_COREBOOT_CONFIG=config/coreboot-librem15v3.config

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_CRYPTSETUP=y
CONFIG_FLASHROM=y
Expand Down
1 change: 1 addition & 0 deletions boards/librem15v4/librem15v4.config
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ CONFIG_COREBOOT_CONFIG=config/coreboot-librem15v4.config

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_CRYPTSETUP=y
CONFIG_FLASHROM=y
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_COREBOOT_CONFIG=config/coreboot-qemu-fbwhiptail.config
CONFIG_LINUX_CONFIG=config/linux-qemu.config
Expand Down
1 change: 1 addition & 0 deletions boards/qemu-coreboot/qemu-coreboot.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
# will just drop into the recovery shell.
export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_COREBOOT_CONFIG=config/coreboot-qemu.config
CONFIG_LINUX_CONFIG=config/linux-qemu.config
Expand Down
2 changes: 2 additions & 0 deletions boards/qemu-linuxboot/qemu-linuxboot.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Configuration for emulating LinuxBoot+Heads with qemu
#
export CONFIG_LINUXBOOT=y
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_LINUXBOOT_BOARD=qemu
CONFIG_LINUX_CONFIG=config/linux-linuxboot.config

Expand Down
2 changes: 2 additions & 0 deletions boards/r630/r630.config
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ CONFIG_LINUXBOOT=y
CONFIG_LINUXBOOT_ROM=blobs/r630-1.3.6.rom
CONFIG_LINUX_CONFIG=config/linux-linuxboot.config

export CONFIG_LINUX_VERSION=4.14.62

#CONFIG_CRYPTSETUP=y
CONFIG_FLASHROM=y
#CONFIG_GPG=y
Expand Down
2 changes: 2 additions & 0 deletions boards/s2600wf/s2600wf.config
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ CONFIG_LINUXBOOT=y
CONFIG_LINUXBOOT_ROM=blobs/s2600wf.rom
CONFIG_LINUX_CONFIG=config/linux-linuxboot.config

export CONFIG_LINUX_VERSION=4.14.62

#CONFIG_CRYPTSETUP=y
#CONFIG_FLASHROM=y
CONFIG_FLASHTOOLS=y
Expand Down
1 change: 1 addition & 0 deletions boards/t420/t420.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Configuration for a T420 running Qubes and other OS, T420 is identical to X230 on the Linux Side of things.
export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_COREBOOT_CONFIG=config/coreboot-t420.config
CONFIG_LINUX_CONFIG=config/linux-x230.config
Expand Down
1 change: 1 addition & 0 deletions boards/t430-flash/t430-flash.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ BOARD=t430.flash

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_FLASHROM=y
CONFIG_FLASHTOOLS=y
Expand Down
1 change: 1 addition & 0 deletions boards/t430/t430.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Configuration for a t430 running Qubes and other OSes
export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_COREBOOT_CONFIG=config/coreboot-t430.config
CONFIG_LINUX_CONFIG=config/linux-x230.config
Expand Down
2 changes: 2 additions & 0 deletions boards/tioga/tioga.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ CONFIG_LINUXBOOT=y
CONFIG_LINUXBOOT_ROM=blobs/tioga.rom
CONFIG_LINUX_CONFIG=config/linux-linuxboot.config

export CONFIG_LINUX_VERSION=4.14.62

# If you want to build with the go-based u-root instead of Heads
CONFIG_UROOT ?= n

Expand Down
2 changes: 2 additions & 0 deletions boards/winterfell/winterfell.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ CONFIG_LINUXBOOT=y
CONFIG_LINUXBOOT_ROM=blobs/winterfell.rom
CONFIG_LINUX_CONFIG=config/linux-linuxboot.config

export CONFIG_LINUX_VERSION=4.14.62

# If you want to build with the go-based u-root instead of Heads
CONFIG_UROOT ?= y

Expand Down
1 change: 1 addition & 0 deletions boards/x220/x220.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Configuration for a x220 running Qubes and other OS, X220 is identical to X230 on the Linux Side of things.
export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_COREBOOT_CONFIG=config/coreboot-x220.config
CONFIG_LINUX_CONFIG=config/linux-x230.config
Expand Down
1 change: 1 addition & 0 deletions boards/x230-flash/x230-flash.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ BOARD=x230.flash

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_FLASHROM=y
#CONFIG_GPG=y
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# running Qubes and other OSes
export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_COREBOOT_CONFIG=config/coreboot-x230-hotp-verification.config
CONFIG_LINUX_CONFIG=config/linux-x230.config
Expand Down
1 change: 1 addition & 0 deletions boards/x230/x230.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Configuration for a x230 running Qubes and other OSes
export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=4.8.1
export CONFIG_LINUX_VERSION=4.14.62

CONFIG_COREBOOT_CONFIG=config/coreboot-x230.config
CONFIG_LINUX_CONFIG=config/linux-x230.config
Expand Down
15 changes: 9 additions & 6 deletions modules/linux
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
modules-y += linux

ifeq "$(CONFIG_LINUX_VERSION)" "4.14.62"
linux_version := 4.14.62
linux_hash := 51ca4d7e8ee156dc0f19bc7768915cfae41dbb0b4f251e4fa8b178c5674c22ab
else ifeq "$(CONFIG_LINUX_VERSION)" "4.19.139"
linux_version := 4.19.139
linux_hash := 9c4ebf21fe949f80fbcfbbd6e7fe181040d325e89475e230ab53ef01f9d55605
else
$(error "$(BOARD): does not specify linux kernel version under CONFIG_LINUX_VERSION")
endif

linux_base_dir := linux-$(linux_version)

# TODO: fixup the patch process
Expand All @@ -15,12 +24,6 @@ linux_dir := $(linux_base_dir)/$(notdir $(basename $(linux_kconfig)))
linux_tar := linux-$(linux_version).tar.xz
linux_url := https://cdn.kernel.org/pub/linux/kernel/v4.x/$(linux_tar)

linux-4.9.38_hash := 76d789d87dd51d2fd58c095727171984fa4a992f5e25b9e3eb1e5fd5cd129074
linux-4.9.80_hash := 9e2e83ccc0afc3f23340ed5e58a35d8c6300a7c58aa98ca913848de41226477b
linux-4.14.62_hash := 51ca4d7e8ee156dc0f19bc7768915cfae41dbb0b4f251e4fa8b178c5674c22ab

linux_hash := $(linux-$(linux_version)_hash)

# Ensure that touching the config file will force a reconfig/rebuild
$(build)/$(linux_dir)/.configured: $(linux_kconfig)

Expand Down
54 changes: 54 additions & 0 deletions patches/linux-4.19.139/0000-efi_bds.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
diff -u --recursive ../../clean/linux-4.14.62/arch/x86/boot/compressed/eboot.c linux-4.14.62/arch/x86/boot/compressed/eboot.c
--- ../../clean/linux-4.14.62/arch/x86/boot/compressed/eboot.c 2018-08-09 06:16:40.000000000 -0400
+++ linux-4.14.62/arch/x86/boot/compressed/eboot.c 2018-08-09 10:13:11.801000000 -0400
@@ -630,8 +630,8 @@
u16 *s2;
u8 *s1;
int i;
- unsigned long ramdisk_addr;
- unsigned long ramdisk_size;
+ unsigned long ramdisk_addr = 0;
+ unsigned long ramdisk_size = 0;

efi_early = c;
sys_table = (efi_system_table_t *)(unsigned long)efi_early->table;
@@ -686,9 +686,6 @@
/* Fill in upper bits of command line address, NOP on 32 bit */
boot_params->ext_cmd_line_ptr = (u64)(unsigned long)cmdline_ptr >> 32;

- hdr->ramdisk_image = 0;
- hdr->ramdisk_size = 0;
-
/* Clear APM BIOS info */
memset(bi, 0, sizeof(*bi));

@@ -712,10 +709,16 @@

if (status != EFI_SUCCESS)
goto fail2;
- hdr->ramdisk_image = ramdisk_addr & 0xffffffff;
- hdr->ramdisk_size = ramdisk_size & 0xffffffff;
- boot_params->ext_ramdisk_image = (u64)ramdisk_addr >> 32;
- boot_params->ext_ramdisk_size = (u64)ramdisk_size >> 32;
+
+ // don't overwrite the bzImage or loader provided ramdisk pointer
+ // unless the kernel command line specified a different one.
+ if (ramdisk_addr != 0)
+ {
+ hdr->ramdisk_image = ramdisk_addr & 0xffffffff;
+ hdr->ramdisk_size = ramdisk_size & 0xffffffff;
+ boot_params->ext_ramdisk_image = (u64)ramdisk_addr >> 32;
+ boot_params->ext_ramdisk_size = (u64)ramdisk_size >> 32;
+ }

return boot_params;
fail2:
--- clean/linux-4.14.62/arch/x86/boot/compressed/early_serial_console.c 2018-08-09 12:16:40.000000000 +0200
+++ linux-4.14.62/arch/x86/boot/compressed/early_serial_console.c 2018-09-28 11:59:36.824015244 +0200
@@ -1,5 +1,5 @@
#include "misc.h"

-int early_serial_base;
+int early_serial_base = 0x3f8;

#include "../early_serial_console.c"
32 changes: 32 additions & 0 deletions patches/linux-4.19.139/0001-fake-acpi.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
diff --recursive -u ./clean/linux-4.9.80/drivers/acpi/acpica/evxfevnt.c linux-4.9.80/drivers/acpi/acpica/evxfevnt.c
--- ./clean/linux-4.9.80/drivers/acpi/acpica/evxfevnt.c 2018-02-03 11:05:43.000000000 -0500
+++ linux-4.9.80/drivers/acpi/acpica/evxfevnt.c 2018-02-07 15:51:28.786502597 -0500
@@ -111,6 +111,8 @@
}

ACPI_ERROR((AE_INFO, "Hardware did not enter ACPI mode"));
+printk("%s:%d faking ACPI mode\n", __func__, __LINE__);
+ return_ACPI_STATUS(AE_OK);
return_ACPI_STATUS(AE_NO_HARDWARE_RESPONSE);
}

diff --recursive -u ./clean/linux-4.9.80/drivers/acpi/acpica/hwacpi.c linux-4.9.80/drivers/acpi/acpica/hwacpi.c
--- ./clean/linux-4.9.80/drivers/acpi/acpica/hwacpi.c 2018-02-03 11:05:43.000000000 -0500
+++ linux-4.9.80/drivers/acpi/acpica/hwacpi.c 2018-02-07 15:51:35.126557868 -0500
@@ -168,12 +168,16 @@

status = acpi_read_bit_register(ACPI_BITREG_SCI_ENABLE, &value);
if (ACPI_FAILURE(status)) {
+printk("%s:%d faking ACPI mode\n", __func__, __LINE__);
+ return_UINT32(ACPI_SYS_MODE_ACPI);
return_UINT32(ACPI_SYS_MODE_LEGACY);
}

if (value) {
return_UINT32(ACPI_SYS_MODE_ACPI);
} else {
+//printk("%s:%d faking ACPI mode\n", __func__, __LINE__);
+// return_UINT32(ACPI_SYS_MODE_ACPI);
return_UINT32(ACPI_SYS_MODE_LEGACY);
}
}
20 changes: 20 additions & 0 deletions patches/linux-4.19.139/0002-nmi-squelch.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
diff --recursive -u ./clean/linux-4.9.80/arch/x86/kernel/nmi.c linux-4.9.80/arch/x86/kernel/nmi.c
--- ./clean/linux-4.9.80/arch/x86/kernel/nmi.c 2018-02-03 11:05:43.000000000 -0500
+++ linux-4.9.80/arch/x86/kernel/nmi.c 2018-02-07 18:56:10.475613884 -0500
@@ -303,6 +303,8 @@

__this_cpu_add(nmi_stats.unknown, 1);

+#if 0
+// qemu generates these for some reason
pr_emerg("Uhhuh. NMI received for unknown reason %02x on CPU %d.\n",
reason, smp_processor_id());

@@ -311,6 +313,7 @@
nmi_panic(regs, "NMI: Not continuing");

pr_emerg("Dazed and confused, but trying to continue\n");
+#endif
}
NOKPROBE_SYMBOL(unknown_nmi_error);

28 changes: 28 additions & 0 deletions patches/linux-4.19.139/0003-fake-trampoline.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
diff --recursive -u ./clean/linux-4.9.80/arch/x86/realmode/init.c linux-4.9.80/arch/x86/realmode/init.c
--- ./clean/linux-4.9.80/arch/x86/realmode/init.c 2018-02-03 11:05:43.000000000 -0500
+++ linux-4.9.80/arch/x86/realmode/init.c 2018-02-07 15:51:28.538500435 -0500
@@ -35,8 +35,8 @@
/* Has to be under 1M so we can execute real-mode AP code. */
mem = memblock_find_in_range(0, 1<<20, size, PAGE_SIZE);
if (!mem) {
- pr_info("No sub-1M memory is available for the trampoline\n");
- return;
+ mem = 0x4000;
+ pr_info("No sub-1M memory is available for the trampoline, guessing %p\n", mem);
}

memblock_reserve(mem, size);
@@ -138,7 +138,12 @@
static int __init init_real_mode(void)
{
if (!real_mode_header)
- panic("Real mode trampoline was not allocated");
+ {
+ // ignore for now
+ //panic("Real mode trampoline was not allocated");
+ pr_warn("Real mode trampoline was not allocated");
+ return 0;
+ }

setup_real_mode();
set_real_mode_permissions();
18 changes: 18 additions & 0 deletions patches/linux-4.19.139/0010-winterfell-ahci.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
diff --recursive -u ./clean/linux-4.9.80/drivers/ata/libahci.c linux-4.9.80/drivers/ata/libahci.c
--- ./clean/linux-4.9.80/drivers/ata/libahci.c 2018-02-03 11:05:43.000000000 -0500
+++ linux-4.9.80/drivers/ata/libahci.c 2018-02-07 18:02:32.526535910 -0500
@@ -537,8 +537,12 @@
}

/* fabricate port_map from cap.nr_ports for < AHCI 1.3 */
- if (!port_map && vers < 0x10300) {
- port_map = (1 << ahci_nr_ports(cap)) - 1;
+ if (!port_map) { // && vers < 0x10300) {
+ printk("%s: saved_port=%02x\n", __func__, hpriv->saved_port_map);
+ writel(0x1, mmio + HOST_PORTS_IMPL);
+ port_map = readl(mmio + HOST_PORTS_IMPL);
+
+ //port_map = (1 << ahci_nr_ports(cap)) - 1;
dev_warn(dev, "forcing PORTS_IMPL to 0x%x\n", port_map);

/* write the fixed up value to the PI register */