mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-18 20:47:55 +00:00
modules/linux: Add support for building against Linux 5.10.5. All patches besides 0000-efi_bds.patch
port cleanly. As a result of 0000-efi_bds.patch
missing, it is strongly encouraged that no linuxboot boards use Linux 5.10.5 until a proper review has been done.
This commit is contained in:
parent
6bc40d7a70
commit
194edf5424
@ -9,6 +9,14 @@ linux_hash := 9c4ebf21fe949f80fbcfbbd6e7fe181040d325e89475e230ab53ef01f9d55605
|
||||
else ifeq "$(CONFIG_LINUX_VERSION)" "5.4.69"
|
||||
linux_version := 5.4.69
|
||||
linux_hash := a8b31d716b397303a183e42ad525ff2871024a43e3ea530d0fdf73b7f9d27da7
|
||||
#
|
||||
# linuxboot systems should *NOT* use 5.10.5 until a proper review has
|
||||
# been done. This is because `0000-efi_bds.patch` did not cleanly port
|
||||
# from 5.4.69 to 5.10.5 which directly affects linuxboot systems.
|
||||
#
|
||||
else ifeq "$(CONFIG_LINUX_VERSION)" "5.10.5"
|
||||
linux_version := 5.10.5
|
||||
linux_hash := 3991a9e16a187d78d5f414d89236ae5d7f404a69e60c4c42a9d262ee19612ef4
|
||||
else
|
||||
$(error "$(BOARD): does not specify linux kernel version under CONFIG_LINUX_VERSION")
|
||||
endif
|
||||
|
32
patches/linux-5.10.5/0001-fake-acpi.patch
Normal file
32
patches/linux-5.10.5/0001-fake-acpi.patch
Normal file
@ -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
patches/linux-5.10.5/0002-nmi-squelch.patch
Normal file
20
patches/linux-5.10.5/0002-nmi-squelch.patch
Normal file
@ -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
patches/linux-5.10.5/0003-fake-trampoline.patch
Normal file
28
patches/linux-5.10.5/0003-fake-trampoline.patch
Normal file
@ -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
patches/linux-5.10.5/0010-winterfell-ahci.patch
Normal file
18
patches/linux-5.10.5/0010-winterfell-ahci.patch
Normal file
@ -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 */
|
Loading…
Reference in New Issue
Block a user