kernel-5.11.7-9
* Wed Mar 17 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.11.7-9] - Disable weak-modules again rhbz 1828455 (Justin M. Forbes) - More config updates for gcc-plugin turn off (Justin M. Forbes) - fedora: the PCH_CAN driver is x86-32 only (Peter Robinson) - common: disable legacy CAN device support (Peter Robinson) - common: Enable Microchip MCP251x/MCP251xFD CAN controllers (Peter Robinson) - common: Bosch MCAN support for Intel Elkhart Lake (Peter Robinson) - common: enable CAN_PEAK_PCIEFD PCI-E driver (Peter Robinson) - common: disable CAN_PEAK_PCIEC PCAN-ExpressCard (Peter Robinson) - common: enable common CAN layer 2 protocols (Peter Robinson) - ark: disable CAN_LEDS option (Peter Robinson) Resolves: rhbz# Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
parent
8cb9b8957f
commit
2d7cbaa6f9
|
@ -1,71 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 27 Feb 2018 00:21:23 -0500
|
||||
Subject: [PATCH] ACPI: APEI: arm64: Ignore broken HPE moonshot APEI support
|
||||
|
||||
Message-id: <20180227002123.21608-1-ahs3@redhat.com>
|
||||
Patchwork-id: 206052
|
||||
O-Subject: [RHEL8 BZ1518076 PATCH] ACPI: APEI: arm64: Ignore broken HPE moonshot APEI support
|
||||
Bugzilla: 1518076
|
||||
RH-Acked-by: Mark Salter <msalter@redhat.com>
|
||||
RH-Acked-by: Jeremy McNicoll <jmcnicol@redhat.com>
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1518076
|
||||
Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=15417197
|
||||
Tested: compile-only; several other patches are required for full booting
|
||||
QE has tested limited boot (see comment#12 of BZ)
|
||||
|
||||
This is a re-post of a RHEL-ALT-7.5 patch specific to aarch64 moonshots
|
||||
that we use in beaker. It is required for these machines to boot.
|
||||
|
||||
commit 8a663a264863efedf8bb4a9d76ac603920fdd739
|
||||
Author: Robert Richter <rrichter@redhat.com>
|
||||
Date: Wed Aug 16 19:49:30 2017 -0400
|
||||
|
||||
[acpi] APEI: arm64: Ignore broken HPE moonshot APEI support
|
||||
|
||||
From: Mark Salter <msalter@redhat.com>
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1344237
|
||||
Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=13768971
|
||||
Tested: Booted on moonshot with patched 4.11.0-20 kernel
|
||||
Upstream: RHEL-only
|
||||
|
||||
The aarch64 HP moonshot platforms we have in beaker and elsewhere have
|
||||
a firmware bug which causes a spurious fatal memory error via APEI at
|
||||
boot time. This platform is no longer supported and no further firmware
|
||||
updates are expected. This is a downstream-only hack to avoid the problem
|
||||
by bailing out of HEST table probing if we detect a moonshot HEST table.
|
||||
|
||||
Signed-off-by: Mark Salter <msalter@redhat.com>
|
||||
Signed-off-by: Robert Richter <rrichter@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
---
|
||||
drivers/acpi/apei/hest.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
|
||||
index 6e980fe16772..37bc003e7a83 100644
|
||||
--- a/drivers/acpi/apei/hest.c
|
||||
+++ b/drivers/acpi/apei/hest.c
|
||||
@@ -88,6 +88,14 @@ int apei_hest_parse(apei_hest_func_t func, void *data)
|
||||
if (hest_disable || !hest_tab)
|
||||
return -EINVAL;
|
||||
|
||||
+#ifdef CONFIG_ARM64
|
||||
+ /* Ignore broken firmware */
|
||||
+ if (!strncmp(hest_tab->header.oem_id, "HPE ", 6) &&
|
||||
+ !strncmp(hest_tab->header.oem_table_id, "ProLiant", 8) &&
|
||||
+ MIDR_IMPLEMENTOR(read_cpuid_id()) == ARM_CPU_IMP_APM)
|
||||
+ return -EINVAL;
|
||||
+#endif
|
||||
+
|
||||
hest_hdr = (struct acpi_hest_header *)(hest_tab + 1);
|
||||
for (i = 0; i < hest_tab->error_source_count; i++) {
|
||||
len = hest_esrc_len(hest_hdr);
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Salter <msalter@redhat.com>
|
||||
Date: Thu, 10 May 2018 17:38:43 -0400
|
||||
Subject: [PATCH] ACPI / irq: Workaround firmware issue on X-Gene based m400
|
||||
|
||||
Message-id: <20180510173844.29580-3-msalter@redhat.com>
|
||||
Patchwork-id: 214383
|
||||
O-Subject: [RHEL-8 BZ1519554 2/3] ACPI / irq: Workaround firmware issue on X-Gene based m400
|
||||
Bugzilla: 1519554
|
||||
RH-Acked-by: Al Stone <astone@redhat.com>
|
||||
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1519554
|
||||
Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16144520
|
||||
|
||||
The ACPI firmware on the xgene-based m400 platorms erroneously
|
||||
describes its UART interrupt as ACPI_PRODUCER rather than
|
||||
ACPI_CONSUMER. This leads to the UART driver being unable to
|
||||
find its interrupt and the kernel unable find a console.
|
||||
Work around this by avoiding the producer/consumer check
|
||||
for X-Gene UARTs.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Mark Salter <msalter@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
---
|
||||
drivers/acpi/irq.c | 17 +++++++++++++++--
|
||||
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/acpi/irq.c b/drivers/acpi/irq.c
|
||||
index e209081d644b..7484bcf59a1b 100644
|
||||
--- a/drivers/acpi/irq.c
|
||||
+++ b/drivers/acpi/irq.c
|
||||
@@ -126,6 +126,7 @@ struct acpi_irq_parse_one_ctx {
|
||||
unsigned int index;
|
||||
unsigned long *res_flags;
|
||||
struct irq_fwspec *fwspec;
|
||||
+ bool skip_producer_check;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -197,7 +198,8 @@ static acpi_status acpi_irq_parse_one_cb(struct acpi_resource *ares,
|
||||
return AE_CTRL_TERMINATE;
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
eirq = &ares->data.extended_irq;
|
||||
- if (eirq->producer_consumer == ACPI_PRODUCER)
|
||||
+ if (!ctx->skip_producer_check &&
|
||||
+ eirq->producer_consumer == ACPI_PRODUCER)
|
||||
return AE_OK;
|
||||
if (ctx->index >= eirq->interrupt_count) {
|
||||
ctx->index -= eirq->interrupt_count;
|
||||
@@ -232,8 +234,19 @@ static acpi_status acpi_irq_parse_one_cb(struct acpi_resource *ares,
|
||||
static int acpi_irq_parse_one(acpi_handle handle, unsigned int index,
|
||||
struct irq_fwspec *fwspec, unsigned long *flags)
|
||||
{
|
||||
- struct acpi_irq_parse_one_ctx ctx = { -EINVAL, index, flags, fwspec };
|
||||
+ struct acpi_irq_parse_one_ctx ctx = { -EINVAL, index, flags, fwspec, false };
|
||||
|
||||
+ /*
|
||||
+ * Firmware on arm64-based HPE m400 platform incorrectly marks
|
||||
+ * its UART interrupt as ACPI_PRODUCER rather than ACPI_CONSUMER.
|
||||
+ * Don't do the producer/consumer check for that device.
|
||||
+ */
|
||||
+ if (IS_ENABLED(CONFIG_ARM64)) {
|
||||
+ struct acpi_device *adev = acpi_bus_get_acpi_device(handle);
|
||||
+
|
||||
+ if (adev && !strcmp(acpi_device_hid(adev), "APMC0D08"))
|
||||
+ ctx.skip_producer_check = true;
|
||||
+ }
|
||||
acpi_walk_resources(handle, METHOD_NAME__CRS, acpi_irq_parse_one_cb, &ctx);
|
||||
return ctx.rc;
|
||||
}
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||
Date: Mon, 30 Sep 2019 14:59:25 +0900
|
||||
Subject: [PATCH] ARM: fix __get_user_check() in case uaccess_* calls are not
|
||||
inlined
|
||||
|
||||
KernelCI reports that bcm2835_defconfig is no longer booting since
|
||||
commit ac7c3e4ff401 ("compiler: enable CONFIG_OPTIMIZE_INLINING
|
||||
forcibly"):
|
||||
|
||||
https://lkml.org/lkml/2019/9/26/825
|
||||
|
||||
I also received a regression report from Nicolas Saenz Julienne:
|
||||
|
||||
https://lkml.org/lkml/2019/9/27/263
|
||||
|
||||
This problem has cropped up on arch/arm/config/bcm2835_defconfig
|
||||
because it enables CONFIG_CC_OPTIMIZE_FOR_SIZE. The compiler tends
|
||||
to prefer not inlining functions with -Os. I was able to reproduce
|
||||
it with other boards and defconfig files by manually enabling
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE.
|
||||
|
||||
The __get_user_check() specifically uses r0, r1, r2 registers.
|
||||
So, uaccess_save_and_enable() and uaccess_restore() must be inlined
|
||||
in order to avoid those registers being overwritten in the callees.
|
||||
|
||||
Prior to commit 9012d011660e ("compiler: allow all arches to enable
|
||||
CONFIG_OPTIMIZE_INLINING"), the 'inline' marker was always enough for
|
||||
inlining functions, except on x86.
|
||||
|
||||
Since that commit, all architectures can enable CONFIG_OPTIMIZE_INLINING.
|
||||
So, __always_inline is now the only guaranteed way of forcible inlining.
|
||||
|
||||
I want to keep as much compiler's freedom as possible about the inlining
|
||||
decision. So, I changed the function call order instead of adding
|
||||
__always_inline around.
|
||||
|
||||
Call uaccess_save_and_enable() before assigning the __p ("r0"), and
|
||||
uaccess_restore() after evacuating the __e ("r0").
|
||||
|
||||
Fixes: 9012d011660e ("compiler: allow all arches to enable CONFIG_OPTIMIZE_INLINING")
|
||||
Reported-by: "kernelci.org bot" <bot@kernelci.org>
|
||||
Reported-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
||||
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||
Acked-by: Arnd Bergmann <arnd@arndb.de>
|
||||
Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
||||
Tested-by: Fabrizio Castro <fabrizio.castro@bp.renesas.com>
|
||||
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
|
||||
---
|
||||
arch/arm/include/asm/uaccess.h | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
|
||||
index b5fdd30252f8..d43ceaa78269 100644
|
||||
--- a/arch/arm/include/asm/uaccess.h
|
||||
+++ b/arch/arm/include/asm/uaccess.h
|
||||
@@ -195,11 +195,12 @@ extern int __get_user_64t_4(void *);
|
||||
#define __get_user_check(x, p) \
|
||||
({ \
|
||||
unsigned long __limit = current_thread_info()->addr_limit - 1; \
|
||||
+ unsigned int __ua_flags = uaccess_save_and_enable(); \
|
||||
register typeof(*(p)) __user *__p asm("r0") = (p); \
|
||||
register __inttype(x) __r2 asm("r2"); \
|
||||
register unsigned long __l asm("r1") = __limit; \
|
||||
register int __e asm("r0"); \
|
||||
- unsigned int __ua_flags = uaccess_save_and_enable(); \
|
||||
+ unsigned int __err; \
|
||||
switch (sizeof(*(__p))) { \
|
||||
case 1: \
|
||||
if (sizeof((x)) >= 8) \
|
||||
@@ -227,9 +228,10 @@ extern int __get_user_64t_4(void *);
|
||||
break; \
|
||||
default: __e = __get_user_bad(); break; \
|
||||
} \
|
||||
- uaccess_restore(__ua_flags); \
|
||||
+ __err = __e; \
|
||||
x = (typeof(*(p))) __r2; \
|
||||
- __e; \
|
||||
+ uaccess_restore(__ua_flags); \
|
||||
+ __err; \
|
||||
})
|
||||
|
||||
#define get_user(x, p) \
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Thu, 3 May 2012 20:27:11 +0100
|
||||
Subject: [PATCH] ARM: tegra: usb no reset
|
||||
|
||||
Patch for disconnect issues with storage attached to a
|
||||
tegra-ehci controller
|
||||
---
|
||||
drivers/usb/core/hub.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
|
||||
index 052d5accfe9b..fac58cf619da 100644
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -5517,6 +5517,13 @@ static void hub_event(struct work_struct *work)
|
||||
(u16) hub->change_bits[0],
|
||||
(u16) hub->event_bits[0]);
|
||||
|
||||
+ /* Don't disconnect USB-SATA on TrimSlice */
|
||||
+ if (strcmp(dev_name(hdev->bus->controller), "tegra-ehci.0") == 0) {
|
||||
+ if ((hdev->state == 7) && (hub->change_bits[0] == 0) &&
|
||||
+ (hub->event_bits[0] == 0x2))
|
||||
+ hub->event_bits[0] = 0;
|
||||
+ }
|
||||
+
|
||||
/* Lock the device, then check to see if we were
|
||||
* disconnected while waiting for the lock to succeed. */
|
||||
usb_lock_device(hdev);
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,185 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 2 Oct 2017 18:22:13 -0400
|
||||
Subject: [PATCH] Add efi_status_to_str() and rework efi_status_to_err().
|
||||
|
||||
This adds efi_status_to_str() for use when printing efi_status_t
|
||||
messages, and reworks efi_status_to_err() so that the two use a common
|
||||
list of errors.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
drivers/firmware/efi/efi.c | 124 +++++++++++++++++++++++++++----------
|
||||
include/linux/efi.h | 3 +
|
||||
2 files changed, 96 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
|
||||
index fdd1db025dbf..8ef7d1df09dd 100644
|
||||
--- a/drivers/firmware/efi/efi.c
|
||||
+++ b/drivers/firmware/efi/efi.c
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <linux/ucs2_string.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/security.h>
|
||||
+#include <linux/bsearch.h>
|
||||
|
||||
#include <asm/early_ioremap.h>
|
||||
|
||||
@@ -831,40 +832,101 @@ int efi_mem_type(unsigned long phys_addr)
|
||||
}
|
||||
#endif
|
||||
|
||||
+struct efi_error_code {
|
||||
+ efi_status_t status;
|
||||
+ int errno;
|
||||
+ const char *description;
|
||||
+};
|
||||
+
|
||||
+static const struct efi_error_code efi_error_codes[] = {
|
||||
+ { EFI_SUCCESS, 0, "Success"},
|
||||
+#if 0
|
||||
+ { EFI_LOAD_ERROR, -EPICK_AN_ERRNO, "Load Error"},
|
||||
+#endif
|
||||
+ { EFI_INVALID_PARAMETER, -EINVAL, "Invalid Parameter"},
|
||||
+ { EFI_UNSUPPORTED, -ENOSYS, "Unsupported"},
|
||||
+ { EFI_BAD_BUFFER_SIZE, -ENOSPC, "Bad Buffer Size"},
|
||||
+ { EFI_BUFFER_TOO_SMALL, -ENOSPC, "Buffer Too Small"},
|
||||
+ { EFI_NOT_READY, -EAGAIN, "Not Ready"},
|
||||
+ { EFI_DEVICE_ERROR, -EIO, "Device Error"},
|
||||
+ { EFI_WRITE_PROTECTED, -EROFS, "Write Protected"},
|
||||
+ { EFI_OUT_OF_RESOURCES, -ENOMEM, "Out of Resources"},
|
||||
+#if 0
|
||||
+ { EFI_VOLUME_CORRUPTED, -EPICK_AN_ERRNO, "Volume Corrupt"},
|
||||
+ { EFI_VOLUME_FULL, -EPICK_AN_ERRNO, "Volume Full"},
|
||||
+ { EFI_NO_MEDIA, -EPICK_AN_ERRNO, "No Media"},
|
||||
+ { EFI_MEDIA_CHANGED, -EPICK_AN_ERRNO, "Media changed"},
|
||||
+#endif
|
||||
+ { EFI_NOT_FOUND, -ENOENT, "Not Found"},
|
||||
+#if 0
|
||||
+ { EFI_ACCESS_DENIED, -EPICK_AN_ERRNO, "Access Denied"},
|
||||
+ { EFI_NO_RESPONSE, -EPICK_AN_ERRNO, "No Response"},
|
||||
+ { EFI_NO_MAPPING, -EPICK_AN_ERRNO, "No mapping"},
|
||||
+ { EFI_TIMEOUT, -EPICK_AN_ERRNO, "Time out"},
|
||||
+ { EFI_NOT_STARTED, -EPICK_AN_ERRNO, "Not started"},
|
||||
+ { EFI_ALREADY_STARTED, -EPICK_AN_ERRNO, "Already started"},
|
||||
+#endif
|
||||
+ { EFI_ABORTED, -EINTR, "Aborted"},
|
||||
+#if 0
|
||||
+ { EFI_ICMP_ERROR, -EPICK_AN_ERRNO, "ICMP Error"},
|
||||
+ { EFI_TFTP_ERROR, -EPICK_AN_ERRNO, "TFTP Error"},
|
||||
+ { EFI_PROTOCOL_ERROR, -EPICK_AN_ERRNO, "Protocol Error"},
|
||||
+ { EFI_INCOMPATIBLE_VERSION, -EPICK_AN_ERRNO, "Incompatible Version"},
|
||||
+#endif
|
||||
+ { EFI_SECURITY_VIOLATION, -EACCES, "Security Policy Violation"},
|
||||
+#if 0
|
||||
+ { EFI_CRC_ERROR, -EPICK_AN_ERRNO, "CRC Error"},
|
||||
+ { EFI_END_OF_MEDIA, -EPICK_AN_ERRNO, "End of Media"},
|
||||
+ { EFI_END_OF_FILE, -EPICK_AN_ERRNO, "End of File"},
|
||||
+ { EFI_INVALID_LANGUAGE, -EPICK_AN_ERRNO, "Invalid Languages"},
|
||||
+ { EFI_COMPROMISED_DATA, -EPICK_AN_ERRNO, "Compromised Data"},
|
||||
+
|
||||
+ // warnings
|
||||
+ { EFI_WARN_UNKOWN_GLYPH, -EPICK_AN_ERRNO, "Warning Unknown Glyph"},
|
||||
+ { EFI_WARN_DELETE_FAILURE, -EPICK_AN_ERRNO, "Warning Delete Failure"},
|
||||
+ { EFI_WARN_WRITE_FAILURE, -EPICK_AN_ERRNO, "Warning Write Failure"},
|
||||
+ { EFI_WARN_BUFFER_TOO_SMALL, -EPICK_AN_ERRNO, "Warning Buffer Too Small"},
|
||||
+#endif
|
||||
+};
|
||||
+
|
||||
+static int
|
||||
+efi_status_cmp_bsearch(const void *key, const void *item)
|
||||
+{
|
||||
+ u64 status = (u64)(uintptr_t)key;
|
||||
+ struct efi_error_code *code = (struct efi_error_code *)item;
|
||||
+
|
||||
+ if (status < code->status)
|
||||
+ return -1;
|
||||
+ if (status > code->status)
|
||||
+ return 1;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
int efi_status_to_err(efi_status_t status)
|
||||
{
|
||||
- int err;
|
||||
-
|
||||
- switch (status) {
|
||||
- case EFI_SUCCESS:
|
||||
- err = 0;
|
||||
- break;
|
||||
- case EFI_INVALID_PARAMETER:
|
||||
- err = -EINVAL;
|
||||
- break;
|
||||
- case EFI_OUT_OF_RESOURCES:
|
||||
- err = -ENOSPC;
|
||||
- break;
|
||||
- case EFI_DEVICE_ERROR:
|
||||
- err = -EIO;
|
||||
- break;
|
||||
- case EFI_WRITE_PROTECTED:
|
||||
- err = -EROFS;
|
||||
- break;
|
||||
- case EFI_SECURITY_VIOLATION:
|
||||
- err = -EACCES;
|
||||
- break;
|
||||
- case EFI_NOT_FOUND:
|
||||
- err = -ENOENT;
|
||||
- break;
|
||||
- case EFI_ABORTED:
|
||||
- err = -EINTR;
|
||||
- break;
|
||||
- default:
|
||||
- err = -EINVAL;
|
||||
- }
|
||||
+ struct efi_error_code *found;
|
||||
+ size_t num = sizeof(efi_error_codes) / sizeof(struct efi_error_code);
|
||||
|
||||
- return err;
|
||||
+ found = bsearch((void *)(uintptr_t)status, efi_error_codes,
|
||||
+ sizeof(struct efi_error_code), num,
|
||||
+ efi_status_cmp_bsearch);
|
||||
+ if (!found)
|
||||
+ return -EINVAL;
|
||||
+ return found->errno;
|
||||
+}
|
||||
+
|
||||
+const char *
|
||||
+efi_status_to_str(efi_status_t status)
|
||||
+{
|
||||
+ struct efi_error_code *found;
|
||||
+ size_t num = sizeof(efi_error_codes) / sizeof(struct efi_error_code);
|
||||
+
|
||||
+ found = bsearch((void *)(uintptr_t)status, efi_error_codes,
|
||||
+ sizeof(struct efi_error_code), num,
|
||||
+ efi_status_cmp_bsearch);
|
||||
+ if (!found)
|
||||
+ return "Unknown error code";
|
||||
+ return found->description;
|
||||
}
|
||||
|
||||
static DEFINE_SPINLOCK(efi_mem_reserve_persistent_lock);
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index 73db1ae04cef..92aa4697f558 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -43,6 +43,8 @@
|
||||
#define EFI_ABORTED (21 | (1UL << (BITS_PER_LONG-1)))
|
||||
#define EFI_SECURITY_VIOLATION (26 | (1UL << (BITS_PER_LONG-1)))
|
||||
|
||||
+#define EFI_IS_ERROR(x) ((x) & (1UL << (BITS_PER_LONG-1)))
|
||||
+
|
||||
typedef unsigned long efi_status_t;
|
||||
typedef u8 efi_bool_t;
|
||||
typedef u16 efi_char16_t; /* UNICODE character */
|
||||
@@ -832,6 +834,7 @@ static inline bool efi_rt_services_supported(unsigned int mask)
|
||||
#endif
|
||||
|
||||
extern int efi_status_to_err(efi_status_t status);
|
||||
+extern const char *efi_status_to_str(efi_status_t status);
|
||||
|
||||
/*
|
||||
* Variable Attributes
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Wed, 26 Feb 2020 13:38:40 -0500
|
||||
Subject: [PATCH] Add option of 13 for FORCE_MAX_ZONEORDER
|
||||
|
||||
This is a hack, but it's what the other distros currently use
|
||||
for aarch64 with 4K pages so we'll do the same while upstream
|
||||
decides what the best outcome is (which isn't this).
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
[Add a dependency on RHEL_DIFFERENCES]
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
arch/arm64/Kconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
|
||||
index 74c5325108c0..5aa22996be8c 100644
|
||||
--- a/arch/arm64/Kconfig
|
||||
+++ b/arch/arm64/Kconfig
|
||||
@@ -1133,6 +1133,7 @@ config XEN
|
||||
config FORCE_MAX_ZONEORDER
|
||||
int
|
||||
default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
|
||||
+ default "13" if (ARCH_THUNDER && !ARM64_64K_PAGES && !RHEL_DIFFERENCES)
|
||||
default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
|
||||
default "11"
|
||||
help
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Laura Abbott <labbott@redhat.com>
|
||||
Date: Wed, 23 Jan 2019 14:36:37 +0100
|
||||
Subject: [PATCH] Drop that for now
|
||||
|
||||
---
|
||||
Makefile | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index b70997f7ddf9..680d906eee35 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -496,6 +496,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \
|
||||
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
|
||||
-Werror=implicit-function-declaration -Werror=implicit-int \
|
||||
-Werror=return-type -Wno-format-security \
|
||||
+ -Wno-address-of-packed-member \
|
||||
-std=gnu89
|
||||
KBUILD_CPPFLAGS := -D__KERNEL__
|
||||
KBUILD_AFLAGS_KERNEL :=
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,330 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Date: Mon, 3 Apr 2017 18:18:21 +0200
|
||||
Subject: [PATCH] Input: rmi4 - remove the need for artificial IRQ in case of
|
||||
HID
|
||||
|
||||
The IRQ from rmi4 may interfere with the one we currently use on i2c-hid.
|
||||
Given that there is already a need for an external API from rmi4 to
|
||||
forward the attention data, we can, in this particular case rely on a
|
||||
separate workqueue to prevent cursor jumps.
|
||||
|
||||
Reported-by: Cameron Gutman <aicommander@gmail.com>
|
||||
Reported-by: Thorsten Leemhuis <linux@leemhuis.info>
|
||||
Reported-by: Jason Ekstrand <jason@jlekstrand.net>
|
||||
Tested-by: Andrew Duggan <aduggan@synaptics.com>
|
||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Signed-off-by: Lyude <lyude@redhat.com>
|
||||
---
|
||||
drivers/hid/hid-rmi.c | 64 -----------------
|
||||
drivers/input/rmi4/rmi_driver.c | 124 +++++++++++++++++++-------------
|
||||
include/linux/rmi.h | 1 +
|
||||
3 files changed, 75 insertions(+), 114 deletions(-)
|
||||
|
||||
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
|
||||
index 8cffa84c9650..6c4e3675601a 100644
|
||||
--- a/drivers/hid/hid-rmi.c
|
||||
+++ b/drivers/hid/hid-rmi.c
|
||||
@@ -322,19 +322,12 @@ static int rmi_input_event(struct hid_device *hdev, u8 *data, int size)
|
||||
{
|
||||
struct rmi_data *hdata = hid_get_drvdata(hdev);
|
||||
struct rmi_device *rmi_dev = hdata->xport.rmi_dev;
|
||||
- unsigned long flags;
|
||||
|
||||
if (!(test_bit(RMI_STARTED, &hdata->flags)))
|
||||
return 0;
|
||||
|
||||
- local_irq_save(flags);
|
||||
-
|
||||
rmi_set_attn_data(rmi_dev, data[1], &data[2], size - 2);
|
||||
|
||||
- generic_handle_irq(hdata->rmi_irq);
|
||||
-
|
||||
- local_irq_restore(flags);
|
||||
-
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -592,56 +585,6 @@ static const struct rmi_transport_ops hid_rmi_ops = {
|
||||
.reset = rmi_hid_reset,
|
||||
};
|
||||
|
||||
-static void rmi_irq_teardown(void *data)
|
||||
-{
|
||||
- struct rmi_data *hdata = data;
|
||||
- struct irq_domain *domain = hdata->domain;
|
||||
-
|
||||
- if (!domain)
|
||||
- return;
|
||||
-
|
||||
- irq_dispose_mapping(irq_find_mapping(domain, 0));
|
||||
-
|
||||
- irq_domain_remove(domain);
|
||||
- hdata->domain = NULL;
|
||||
- hdata->rmi_irq = 0;
|
||||
-}
|
||||
-
|
||||
-static int rmi_irq_map(struct irq_domain *h, unsigned int virq,
|
||||
- irq_hw_number_t hw_irq_num)
|
||||
-{
|
||||
- irq_set_chip_and_handler(virq, &dummy_irq_chip, handle_simple_irq);
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static const struct irq_domain_ops rmi_irq_ops = {
|
||||
- .map = rmi_irq_map,
|
||||
-};
|
||||
-
|
||||
-static int rmi_setup_irq_domain(struct hid_device *hdev)
|
||||
-{
|
||||
- struct rmi_data *hdata = hid_get_drvdata(hdev);
|
||||
- int ret;
|
||||
-
|
||||
- hdata->domain = irq_domain_create_linear(hdev->dev.fwnode, 1,
|
||||
- &rmi_irq_ops, hdata);
|
||||
- if (!hdata->domain)
|
||||
- return -ENOMEM;
|
||||
-
|
||||
- ret = devm_add_action_or_reset(&hdev->dev, &rmi_irq_teardown, hdata);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- hdata->rmi_irq = irq_create_mapping(hdata->domain, 0);
|
||||
- if (hdata->rmi_irq <= 0) {
|
||||
- hid_err(hdev, "Can't allocate an IRQ\n");
|
||||
- return hdata->rmi_irq < 0 ? hdata->rmi_irq : -ENXIO;
|
||||
- }
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
{
|
||||
struct rmi_data *data = NULL;
|
||||
@@ -714,18 +657,11 @@ static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
|
||||
mutex_init(&data->page_mutex);
|
||||
|
||||
- ret = rmi_setup_irq_domain(hdev);
|
||||
- if (ret) {
|
||||
- hid_err(hdev, "failed to allocate IRQ domain\n");
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
if (data->device_flags & RMI_DEVICE_HAS_PHYS_BUTTONS)
|
||||
rmi_hid_pdata.gpio_data.disable = true;
|
||||
|
||||
data->xport.dev = hdev->dev.parent;
|
||||
data->xport.pdata = rmi_hid_pdata;
|
||||
- data->xport.pdata.irq = data->rmi_irq;
|
||||
data->xport.proto_name = "hid";
|
||||
data->xport.ops = &hid_rmi_ops;
|
||||
|
||||
diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
|
||||
index 258d5fe3d395..f7298e3dc8f3 100644
|
||||
--- a/drivers/input/rmi4/rmi_driver.c
|
||||
+++ b/drivers/input/rmi4/rmi_driver.c
|
||||
@@ -182,34 +182,47 @@ void rmi_set_attn_data(struct rmi_device *rmi_dev, unsigned long irq_status,
|
||||
attn_data.data = fifo_data;
|
||||
|
||||
kfifo_put(&drvdata->attn_fifo, attn_data);
|
||||
+
|
||||
+ schedule_work(&drvdata->attn_work);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rmi_set_attn_data);
|
||||
|
||||
-static irqreturn_t rmi_irq_fn(int irq, void *dev_id)
|
||||
+static void attn_callback(struct work_struct *work)
|
||||
{
|
||||
- struct rmi_device *rmi_dev = dev_id;
|
||||
- struct rmi_driver_data *drvdata = dev_get_drvdata(&rmi_dev->dev);
|
||||
+ struct rmi_driver_data *drvdata = container_of(work,
|
||||
+ struct rmi_driver_data,
|
||||
+ attn_work);
|
||||
struct rmi4_attn_data attn_data = {0};
|
||||
int ret, count;
|
||||
|
||||
count = kfifo_get(&drvdata->attn_fifo, &attn_data);
|
||||
- if (count) {
|
||||
- *(drvdata->irq_status) = attn_data.irq_status;
|
||||
- drvdata->attn_data = attn_data;
|
||||
- }
|
||||
+ if (!count)
|
||||
+ return;
|
||||
|
||||
- ret = rmi_process_interrupt_requests(rmi_dev);
|
||||
+ *(drvdata->irq_status) = attn_data.irq_status;
|
||||
+ drvdata->attn_data = attn_data;
|
||||
+
|
||||
+ ret = rmi_process_interrupt_requests(drvdata->rmi_dev);
|
||||
if (ret)
|
||||
- rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev,
|
||||
+ rmi_dbg(RMI_DEBUG_CORE, &drvdata->rmi_dev->dev,
|
||||
"Failed to process interrupt request: %d\n", ret);
|
||||
|
||||
- if (count) {
|
||||
- kfree(attn_data.data);
|
||||
- drvdata->attn_data.data = NULL;
|
||||
- }
|
||||
+ kfree(attn_data.data);
|
||||
+ drvdata->attn_data.data = NULL;
|
||||
|
||||
if (!kfifo_is_empty(&drvdata->attn_fifo))
|
||||
- return rmi_irq_fn(irq, dev_id);
|
||||
+ schedule_work(&drvdata->attn_work);
|
||||
+}
|
||||
+
|
||||
+static irqreturn_t rmi_irq_fn(int irq, void *dev_id)
|
||||
+{
|
||||
+ struct rmi_device *rmi_dev = dev_id;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = rmi_process_interrupt_requests(rmi_dev);
|
||||
+ if (ret)
|
||||
+ rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev,
|
||||
+ "Failed to process interrupt request: %d\n", ret);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -217,7 +230,6 @@ static irqreturn_t rmi_irq_fn(int irq, void *dev_id)
|
||||
static int rmi_irq_init(struct rmi_device *rmi_dev)
|
||||
{
|
||||
struct rmi_device_platform_data *pdata = rmi_get_platform_data(rmi_dev);
|
||||
- struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);
|
||||
int irq_flags = irq_get_trigger_type(pdata->irq);
|
||||
int ret;
|
||||
|
||||
@@ -235,8 +247,6 @@ static int rmi_irq_init(struct rmi_device *rmi_dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
- data->enabled = true;
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -886,23 +896,27 @@ void rmi_enable_irq(struct rmi_device *rmi_dev, bool clear_wake)
|
||||
if (data->enabled)
|
||||
goto out;
|
||||
|
||||
- enable_irq(irq);
|
||||
- data->enabled = true;
|
||||
- if (clear_wake && device_may_wakeup(rmi_dev->xport->dev)) {
|
||||
- retval = disable_irq_wake(irq);
|
||||
- if (retval)
|
||||
- dev_warn(&rmi_dev->dev,
|
||||
- "Failed to disable irq for wake: %d\n",
|
||||
- retval);
|
||||
- }
|
||||
+ if (irq) {
|
||||
+ enable_irq(irq);
|
||||
+ data->enabled = true;
|
||||
+ if (clear_wake && device_may_wakeup(rmi_dev->xport->dev)) {
|
||||
+ retval = disable_irq_wake(irq);
|
||||
+ if (retval)
|
||||
+ dev_warn(&rmi_dev->dev,
|
||||
+ "Failed to disable irq for wake: %d\n",
|
||||
+ retval);
|
||||
+ }
|
||||
|
||||
- /*
|
||||
- * Call rmi_process_interrupt_requests() after enabling irq,
|
||||
- * otherwise we may lose interrupt on edge-triggered systems.
|
||||
- */
|
||||
- irq_flags = irq_get_trigger_type(pdata->irq);
|
||||
- if (irq_flags & IRQ_TYPE_EDGE_BOTH)
|
||||
- rmi_process_interrupt_requests(rmi_dev);
|
||||
+ /*
|
||||
+ * Call rmi_process_interrupt_requests() after enabling irq,
|
||||
+ * otherwise we may lose interrupt on edge-triggered systems.
|
||||
+ */
|
||||
+ irq_flags = irq_get_trigger_type(pdata->irq);
|
||||
+ if (irq_flags & IRQ_TYPE_EDGE_BOTH)
|
||||
+ rmi_process_interrupt_requests(rmi_dev);
|
||||
+ } else {
|
||||
+ data->enabled = true;
|
||||
+ }
|
||||
|
||||
out:
|
||||
mutex_unlock(&data->enabled_mutex);
|
||||
@@ -922,20 +936,22 @@ void rmi_disable_irq(struct rmi_device *rmi_dev, bool enable_wake)
|
||||
goto out;
|
||||
|
||||
data->enabled = false;
|
||||
- disable_irq(irq);
|
||||
- if (enable_wake && device_may_wakeup(rmi_dev->xport->dev)) {
|
||||
- retval = enable_irq_wake(irq);
|
||||
- if (retval)
|
||||
- dev_warn(&rmi_dev->dev,
|
||||
- "Failed to enable irq for wake: %d\n",
|
||||
- retval);
|
||||
- }
|
||||
-
|
||||
- /* make sure the fifo is clean */
|
||||
- while (!kfifo_is_empty(&data->attn_fifo)) {
|
||||
- count = kfifo_get(&data->attn_fifo, &attn_data);
|
||||
- if (count)
|
||||
- kfree(attn_data.data);
|
||||
+ if (irq) {
|
||||
+ disable_irq(irq);
|
||||
+ if (enable_wake && device_may_wakeup(rmi_dev->xport->dev)) {
|
||||
+ retval = enable_irq_wake(irq);
|
||||
+ if (retval)
|
||||
+ dev_warn(&rmi_dev->dev,
|
||||
+ "Failed to enable irq for wake: %d\n",
|
||||
+ retval);
|
||||
+ }
|
||||
+ } else {
|
||||
+ /* make sure the fifo is clean */
|
||||
+ while (!kfifo_is_empty(&data->attn_fifo)) {
|
||||
+ count = kfifo_get(&data->attn_fifo, &attn_data);
|
||||
+ if (count)
|
||||
+ kfree(attn_data.data);
|
||||
+ }
|
||||
}
|
||||
|
||||
out:
|
||||
@@ -981,6 +997,8 @@ static int rmi_driver_remove(struct device *dev)
|
||||
irq_domain_remove(data->irqdomain);
|
||||
data->irqdomain = NULL;
|
||||
|
||||
+ cancel_work_sync(&data->attn_work);
|
||||
+
|
||||
rmi_f34_remove_sysfs(rmi_dev);
|
||||
rmi_free_function_list(rmi_dev);
|
||||
|
||||
@@ -1219,9 +1237,15 @@ static int rmi_driver_probe(struct device *dev)
|
||||
}
|
||||
}
|
||||
|
||||
- retval = rmi_irq_init(rmi_dev);
|
||||
- if (retval < 0)
|
||||
- goto err_destroy_functions;
|
||||
+ if (pdata->irq) {
|
||||
+ retval = rmi_irq_init(rmi_dev);
|
||||
+ if (retval < 0)
|
||||
+ goto err_destroy_functions;
|
||||
+ }
|
||||
+
|
||||
+ data->enabled = true;
|
||||
+
|
||||
+ INIT_WORK(&data->attn_work, attn_callback);
|
||||
|
||||
if (data->f01_container->dev.driver) {
|
||||
/* Driver already bound, so enable ATTN now. */
|
||||
diff --git a/include/linux/rmi.h b/include/linux/rmi.h
|
||||
index 8ed37f93f3c8..d7ad35a15acb 100644
|
||||
--- a/include/linux/rmi.h
|
||||
+++ b/include/linux/rmi.h
|
||||
@@ -363,6 +363,7 @@ struct rmi_driver_data {
|
||||
|
||||
struct rmi4_attn_data attn_data;
|
||||
DECLARE_KFIFO(attn_fifo, struct rmi4_attn_data, 16);
|
||||
+ struct work_struct attn_work;
|
||||
};
|
||||
|
||||
int rmi_register_transport_device(struct rmi_transport_dev *xport);
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Holmes <robeholmes@gmail.com>
|
||||
Date: Tue, 23 Apr 2019 07:39:29 +0000
|
||||
Subject: [PATCH] KEYS: Make use of platform keyring for module signature
|
||||
verify
|
||||
|
||||
This patch completes commit 278311e417be ("kexec, KEYS: Make use of
|
||||
platform keyring for signature verify") which, while adding the
|
||||
platform keyring for bzImage verification, neglected to also add
|
||||
this keyring for module verification.
|
||||
|
||||
As such, kernel modules signed with keys from the MokList variable
|
||||
were not successfully verified.
|
||||
|
||||
Signed-off-by: Robert Holmes <robeholmes@gmail.com>
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
kernel/module_signing.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/module_signing.c b/kernel/module_signing.c
|
||||
index 9d9fc678c91d..84ad75a53c83 100644
|
||||
--- a/kernel/module_signing.c
|
||||
+++ b/kernel/module_signing.c
|
||||
@@ -38,8 +38,15 @@ int mod_verify_sig(const void *mod, struct load_info *info)
|
||||
modlen -= sig_len + sizeof(ms);
|
||||
info->len = modlen;
|
||||
|
||||
- return verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,
|
||||
+ ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,
|
||||
VERIFY_USE_SECONDARY_KEYRING,
|
||||
VERIFYING_MODULE_SIGNATURE,
|
||||
NULL, NULL);
|
||||
+ if (ret == -ENOKEY && IS_ENABLED(CONFIG_INTEGRITY_PLATFORM_KEYRING)) {
|
||||
+ ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,
|
||||
+ VERIFY_USE_PLATFORM_KEYRING,
|
||||
+ VERIFYING_MODULE_SIGNATURE,
|
||||
+ NULL, NULL);
|
||||
+ }
|
||||
+ return ret;
|
||||
}
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 2 Oct 2017 18:18:30 -0400
|
||||
Subject: [PATCH] Make get_cert_list() use efi_status_to_str() to print error
|
||||
messages.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
security/integrity/platform_certs/load_uefi.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c
|
||||
index 253fb9a7fc98..8c95b68d86d4 100644
|
||||
--- a/security/integrity/platform_certs/load_uefi.c
|
||||
+++ b/security/integrity/platform_certs/load_uefi.c
|
||||
@@ -46,7 +46,8 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
||||
return NULL;
|
||||
|
||||
if (*status != EFI_BUFFER_TOO_SMALL) {
|
||||
- pr_err("Couldn't get size: 0x%lx\n", *status);
|
||||
+ pr_err("Couldn't get size: %s (0x%lx)\n",
|
||||
+ efi_status_to_str(*status), *status);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -57,7 +58,8 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
||||
*status = efi.get_variable(name, guid, NULL, &lsize, db);
|
||||
if (*status != EFI_SUCCESS) {
|
||||
kfree(db);
|
||||
- pr_err("Error reading db var: 0x%lx\n", *status);
|
||||
+ pr_err("Error reading db var: %s (0x%lx)\n",
|
||||
+ efi_status_to_str(*status), *status);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,241 +0,0 @@
|
|||
From ec7b5bf1cc1444d9ad13bcef0f0f8d48ff9c0203 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Sat, 19 Dec 2020 14:10:40 +0000
|
||||
Subject: [PATCH] PCI: Add MCFG quirks for Tegra194 host controllers
|
||||
|
||||
The PCIe controller in Tegra194 SoC is not completely ECAM-compliant.
|
||||
With the current hardware design limitations in place, ECAM can be enabled
|
||||
only for one controller (C5 controller to be precise) with bus numbers
|
||||
starting from 160 instead of 0. A different approach is taken to avoid this
|
||||
abnormal way of enabling ECAM for just one controller but to enable
|
||||
configuration space access for all the other controllers. In this approach,
|
||||
ops are added through MCFG quirk mechanism which access the configuration
|
||||
spaces by dynamically programming iATU (internal AddressTranslation Unit)
|
||||
to generate respective configuration accesses just like the way it is
|
||||
done in DesignWare core sub-system.
|
||||
|
||||
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
|
||||
Acked-by: Thierry Reding <treding@nvidia.com>
|
||||
[ Updated by jonathanh@nvidia.com only permit building the Tegra194
|
||||
PCIe driver into the kernel and not as a module ]
|
||||
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
drivers/acpi/pci_mcfg.c | 7 ++
|
||||
drivers/pci/controller/dwc/Kconfig | 10 +-
|
||||
drivers/pci/controller/dwc/Makefile | 2 +-
|
||||
drivers/pci/controller/dwc/pcie-tegra194.c | 102 +++++++++++++++++++++
|
||||
include/linux/pci-ecam.h | 1 +
|
||||
5 files changed, 117 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
|
||||
index 95f23acd5b80..53cab975f612 100644
|
||||
--- a/drivers/acpi/pci_mcfg.c
|
||||
+++ b/drivers/acpi/pci_mcfg.c
|
||||
@@ -116,6 +116,13 @@ static struct mcfg_fixup mcfg_quirks[] = {
|
||||
THUNDER_ECAM_QUIRK(2, 12),
|
||||
THUNDER_ECAM_QUIRK(2, 13),
|
||||
|
||||
+ { "NVIDIA", "TEGRA194", 1, 0, MCFG_BUS_ANY, &tegra194_pcie_ops},
|
||||
+ { "NVIDIA", "TEGRA194", 1, 1, MCFG_BUS_ANY, &tegra194_pcie_ops},
|
||||
+ { "NVIDIA", "TEGRA194", 1, 2, MCFG_BUS_ANY, &tegra194_pcie_ops},
|
||||
+ { "NVIDIA", "TEGRA194", 1, 3, MCFG_BUS_ANY, &tegra194_pcie_ops},
|
||||
+ { "NVIDIA", "TEGRA194", 1, 4, MCFG_BUS_ANY, &tegra194_pcie_ops},
|
||||
+ { "NVIDIA", "TEGRA194", 1, 5, MCFG_BUS_ANY, &tegra194_pcie_ops},
|
||||
+
|
||||
#define XGENE_V1_ECAM_MCFG(rev, seg) \
|
||||
{"APM ", "XGENE ", rev, seg, MCFG_BUS_ANY, \
|
||||
&xgene_v1_pcie_ecam_ops }
|
||||
diff --git a/drivers/pci/controller/dwc/Kconfig b/drivers/pci/controller/dwc/Kconfig
|
||||
index bc049865f8e0..c5d40951a6ad 100644
|
||||
--- a/drivers/pci/controller/dwc/Kconfig
|
||||
+++ b/drivers/pci/controller/dwc/Kconfig
|
||||
@@ -248,25 +248,27 @@ config PCI_MESON
|
||||
implement the driver.
|
||||
|
||||
config PCIE_TEGRA194
|
||||
- tristate
|
||||
+ bool
|
||||
|
||||
config PCIE_TEGRA194_HOST
|
||||
- tristate "NVIDIA Tegra194 (and later) PCIe controller - Host Mode"
|
||||
+ bool "NVIDIA Tegra194 (and later) PCIe controller - Host Mode"
|
||||
depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
|
||||
depends on PCI_MSI_IRQ_DOMAIN
|
||||
select PCIE_DW_HOST
|
||||
select PHY_TEGRA194_P2U
|
||||
select PCIE_TEGRA194
|
||||
+ default y if ARCH_TEGRA_194_SOC
|
||||
help
|
||||
Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
|
||||
work in host mode. There are two instances of PCIe controllers in
|
||||
Tegra194. This controller can work either as EP or RC. In order to
|
||||
enable host-specific features PCIE_TEGRA194_HOST must be selected and
|
||||
in order to enable device-specific features PCIE_TEGRA194_EP must be
|
||||
- selected. This uses the DesignWare core.
|
||||
+ selected. This uses the DesignWare core. ACPI platforms with Tegra194
|
||||
+ don't need to enable this.
|
||||
|
||||
config PCIE_TEGRA194_EP
|
||||
- tristate "NVIDIA Tegra194 (and later) PCIe controller - Endpoint Mode"
|
||||
+ bool "NVIDIA Tegra194 (and later) PCIe controller - Endpoint Mode"
|
||||
depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
|
||||
depends on PCI_ENDPOINT
|
||||
select PCIE_DW_EP
|
||||
diff --git a/drivers/pci/controller/dwc/Makefile b/drivers/pci/controller/dwc/Makefile
|
||||
index a751553fa0db..dbb981876556 100644
|
||||
--- a/drivers/pci/controller/dwc/Makefile
|
||||
+++ b/drivers/pci/controller/dwc/Makefile
|
||||
@@ -17,7 +17,6 @@ obj-$(CONFIG_PCIE_INTEL_GW) += pcie-intel-gw.o
|
||||
obj-$(CONFIG_PCIE_KIRIN) += pcie-kirin.o
|
||||
obj-$(CONFIG_PCIE_HISI_STB) += pcie-histb.o
|
||||
obj-$(CONFIG_PCI_MESON) += pci-meson.o
|
||||
-obj-$(CONFIG_PCIE_TEGRA194) += pcie-tegra194.o
|
||||
obj-$(CONFIG_PCIE_UNIPHIER) += pcie-uniphier.o
|
||||
obj-$(CONFIG_PCIE_UNIPHIER_EP) += pcie-uniphier-ep.o
|
||||
|
||||
@@ -34,4 +33,5 @@ obj-$(CONFIG_PCIE_UNIPHIER_EP) += pcie-uniphier-ep.o
|
||||
ifdef CONFIG_PCI
|
||||
obj-$(CONFIG_ARM64) += pcie-al.o
|
||||
obj-$(CONFIG_ARM64) += pcie-hisi.o
|
||||
+obj-$(CONFIG_ARM64) += pcie-tegra194.o
|
||||
endif
|
||||
diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c
|
||||
index f920e7efe118..87c7929db727 100644
|
||||
--- a/drivers/pci/controller/dwc/pcie-tegra194.c
|
||||
+++ b/drivers/pci/controller/dwc/pcie-tegra194.c
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
+#include <linux/pci-acpi.h>
|
||||
+#include <linux/pci-ecam.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include <linux/platform_device.h>
|
||||
@@ -311,6 +313,103 @@ struct tegra_pcie_dw_of_data {
|
||||
enum dw_pcie_device_mode mode;
|
||||
};
|
||||
|
||||
+#if defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS)
|
||||
+struct tegra194_pcie_acpi {
|
||||
+ void __iomem *config_base;
|
||||
+ void __iomem *iatu_base;
|
||||
+ void __iomem *dbi_base;
|
||||
+};
|
||||
+
|
||||
+static int tegra194_acpi_init(struct pci_config_window *cfg)
|
||||
+{
|
||||
+ struct device *dev = cfg->parent;
|
||||
+ struct tegra194_pcie_acpi *pcie;
|
||||
+
|
||||
+ pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
|
||||
+ if (!pcie)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ pcie->config_base = cfg->win;
|
||||
+ pcie->iatu_base = cfg->win + SZ_256K;
|
||||
+ pcie->dbi_base = cfg->win + SZ_512K;
|
||||
+ cfg->priv = pcie;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static inline void atu_reg_write(struct tegra194_pcie_acpi *pcie, int index,
|
||||
+ u32 val, u32 reg)
|
||||
+{
|
||||
+ u32 offset = PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(index);
|
||||
+
|
||||
+ writel(val, pcie->iatu_base + offset + reg);
|
||||
+}
|
||||
+
|
||||
+static void program_outbound_atu(struct tegra194_pcie_acpi *pcie, int index,
|
||||
+ int type, u64 cpu_addr, u64 pci_addr, u64 size)
|
||||
+{
|
||||
+ atu_reg_write(pcie, index, lower_32_bits(cpu_addr),
|
||||
+ PCIE_ATU_LOWER_BASE);
|
||||
+ atu_reg_write(pcie, index, upper_32_bits(cpu_addr),
|
||||
+ PCIE_ATU_UPPER_BASE);
|
||||
+ atu_reg_write(pcie, index, lower_32_bits(pci_addr),
|
||||
+ PCIE_ATU_LOWER_TARGET);
|
||||
+ atu_reg_write(pcie, index, lower_32_bits(cpu_addr + size - 1),
|
||||
+ PCIE_ATU_LIMIT);
|
||||
+ atu_reg_write(pcie, index, upper_32_bits(pci_addr),
|
||||
+ PCIE_ATU_UPPER_TARGET);
|
||||
+ atu_reg_write(pcie, index, type, PCIE_ATU_CR1);
|
||||
+ atu_reg_write(pcie, index, PCIE_ATU_ENABLE, PCIE_ATU_CR2);
|
||||
+}
|
||||
+
|
||||
+static void __iomem *tegra194_map_bus(struct pci_bus *bus,
|
||||
+ unsigned int devfn, int where)
|
||||
+{
|
||||
+ struct pci_config_window *cfg = bus->sysdata;
|
||||
+ struct tegra194_pcie_acpi *pcie = cfg->priv;
|
||||
+ u32 busdev;
|
||||
+ int type;
|
||||
+
|
||||
+ if (bus->number < cfg->busr.start || bus->number > cfg->busr.end)
|
||||
+ return NULL;
|
||||
+
|
||||
+ if (bus->number == cfg->busr.start) {
|
||||
+ if (PCI_SLOT(devfn) == 0)
|
||||
+ return pcie->dbi_base + where;
|
||||
+ else
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ busdev = PCIE_ATU_BUS(bus->number) | PCIE_ATU_DEV(PCI_SLOT(devfn)) |
|
||||
+ PCIE_ATU_FUNC(PCI_FUNC(devfn));
|
||||
+
|
||||
+ if (bus->parent->number == cfg->busr.start) {
|
||||
+ if (PCI_SLOT(devfn) == 0)
|
||||
+ type = PCIE_ATU_TYPE_CFG0;
|
||||
+ else
|
||||
+ return NULL;
|
||||
+ } else {
|
||||
+ type = PCIE_ATU_TYPE_CFG1;
|
||||
+ }
|
||||
+
|
||||
+ program_outbound_atu(pcie, PCIE_ATU_REGION_INDEX0, type,
|
||||
+ cfg->res.start, busdev, SZ_256K);
|
||||
+ return (void __iomem *)(pcie->config_base + where);
|
||||
+}
|
||||
+
|
||||
+const struct pci_ecam_ops tegra194_pcie_ops = {
|
||||
+ .bus_shift = 20,
|
||||
+ .init = tegra194_acpi_init,
|
||||
+ .pci_ops = {
|
||||
+ .map_bus = tegra194_map_bus,
|
||||
+ .read = pci_generic_config_read,
|
||||
+ .write = pci_generic_config_write,
|
||||
+ }
|
||||
+};
|
||||
+#endif /* defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS) */
|
||||
+
|
||||
+#ifdef CONFIG_PCIE_TEGRA194
|
||||
+
|
||||
static inline struct tegra_pcie_dw *to_tegra_pcie(struct dw_pcie *pci)
|
||||
{
|
||||
return container_of(pci, struct tegra_pcie_dw, pci);
|
||||
@@ -2339,3 +2438,6 @@ MODULE_DEVICE_TABLE(of, tegra_pcie_dw_of_match);
|
||||
MODULE_AUTHOR("Vidya Sagar <vidyas@nvidia.com>");
|
||||
MODULE_DESCRIPTION("NVIDIA PCIe host controller driver");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
+
|
||||
+#endif /* CONFIG_PCIE_TEGRA194 */
|
||||
+
|
||||
diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h
|
||||
index 033ce74f02e8..ccbf3c38c6e6 100644
|
||||
--- a/include/linux/pci-ecam.h
|
||||
+++ b/include/linux/pci-ecam.h
|
||||
@@ -58,6 +58,7 @@ extern const struct pci_ecam_ops pci_thunder_ecam_ops; /* Cavium ThunderX 1.x */
|
||||
extern const struct pci_ecam_ops xgene_v1_pcie_ecam_ops; /* APM X-Gene PCIe v1 */
|
||||
extern const struct pci_ecam_ops xgene_v2_pcie_ecam_ops; /* APM X-Gene PCIe v2.x */
|
||||
extern const struct pci_ecam_ops al_pcie_ops; /* Amazon Annapurna Labs PCIe */
|
||||
+extern const struct pci_ecam_ops tegra194_pcie_ops; /* Tegra194 PCIe */
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_PCI_HOST_COMMON)
|
||||
--
|
||||
2.29.2
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Richter <rrichter@redhat.com>
|
||||
Date: Thu, 7 Jun 2018 22:59:32 -0400
|
||||
Subject: [PATCH] Vulcan: AHCI PCI bar fix for Broadcom Vulcan early silicon
|
||||
|
||||
Message-id: <1528412373-19128-2-git-send-email-rrichter@redhat.com>
|
||||
Patchwork-id: 220950
|
||||
O-Subject: [RHEL-8.0 BZ 1563590 v2 1/2] PCI: Vulcan: AHCI PCI bar fix for Broadcom Vulcan early silicon
|
||||
Bugzilla: 1563590
|
||||
RH-Acked-by: Dean Nelson <dnelson@redhat.com>
|
||||
RH-Acked-by: Mark Langsdorf <mlangsdo@redhat.com>
|
||||
RH-Acked-by: Mark Salter <msalter@redhat.com>
|
||||
|
||||
From: Ashok Kumar Sekar <asekar@redhat.com>
|
||||
|
||||
PCI BAR 5 is not setup correctly for the on-board AHCI
|
||||
controller on Broadcom's Vulcan processor. Added a quirk to fix BAR 5
|
||||
by using BAR 4's resources which are populated correctly but NOT used
|
||||
by the AHCI controller actually.
|
||||
|
||||
RHEL-only:
|
||||
|
||||
Both patches are in RHEL-7.6 also. Inclusion of the patches into RHEL-8
|
||||
was discussed. Since there are partners with Ax system configurations it
|
||||
was decided to carry them in RHEL8 too. See:
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1563590#c1
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Ashok Kumar Sekar <asekar@redhat.com>
|
||||
Signed-off-by: Jayachandran C <jchandra@broadcom.com>
|
||||
Signed-off-by: Robert Richter <rrichter@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
---
|
||||
drivers/pci/quirks.c | 24 ++++++++++++++++++++++++
|
||||
1 file changed, 24 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||
index bdf9b52567e0..1e98e20b7cc2 100644
|
||||
--- a/drivers/pci/quirks.c
|
||||
+++ b/drivers/pci/quirks.c
|
||||
@@ -4196,6 +4196,30 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9000,
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9084,
|
||||
quirk_bridge_cavm_thrx2_pcie_root);
|
||||
|
||||
+/*
|
||||
+ * PCI BAR 5 is not setup correctly for the on-board AHCI controller
|
||||
+ * on Broadcom's Vulcan processor. Added a quirk to fix BAR 5 by
|
||||
+ * using BAR 4's resources which are populated correctly and NOT
|
||||
+ * actually used by the AHCI controller.
|
||||
+ */
|
||||
+static void quirk_fix_vulcan_ahci_bars(struct pci_dev *dev)
|
||||
+{
|
||||
+ struct resource *r = &dev->resource[4];
|
||||
+
|
||||
+ if (!(r->flags & IORESOURCE_MEM) || (r->start == 0))
|
||||
+ return;
|
||||
+
|
||||
+ /* Set BAR5 resource to BAR4 */
|
||||
+ dev->resource[5] = *r;
|
||||
+
|
||||
+ /* Update BAR5 in pci config space */
|
||||
+ pci_write_config_dword(dev, PCI_BASE_ADDRESS_5, r->start);
|
||||
+
|
||||
+ /* Clear BAR4's resource */
|
||||
+ memset(r, 0, sizeof(*r));
|
||||
+}
|
||||
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9027, quirk_fix_vulcan_ahci_bars);
|
||||
+
|
||||
/*
|
||||
* Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero)
|
||||
* class code. Fix it.
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: "Justin M. Forbes" <jforbes@fedoraproject.org>
|
||||
Date: Thu, 30 Jul 2020 10:26:11 -0500
|
||||
Subject: [PATCH] Work around for gcc bug
|
||||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96377
|
||||
|
||||
Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
---
|
||||
crypto/aegis128-neon-inner.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/crypto/aegis128-neon-inner.c b/crypto/aegis128-neon-inner.c
|
||||
index 2a660ac1bc3a..fa87ff6a2a71 100644
|
||||
--- a/crypto/aegis128-neon-inner.c
|
||||
+++ b/crypto/aegis128-neon-inner.c
|
||||
@@ -148,8 +148,8 @@ void crypto_aegis128_init_neon(void *state, const void *key, const void *iv)
|
||||
kiv,
|
||||
vld1q_u8(const1),
|
||||
vld1q_u8(const0),
|
||||
- k ^ vld1q_u8(const0),
|
||||
- k ^ vld1q_u8(const1),
|
||||
+ (uint8x16_t) (k ^ vld1q_u8(const0)),
|
||||
+ (uint8x16_t) (k ^ vld1q_u8(const1)),
|
||||
}};
|
||||
int i;
|
||||
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Salter <msalter@redhat.com>
|
||||
Date: Thu, 10 May 2018 17:38:44 -0400
|
||||
Subject: [PATCH] aarch64: acpi scan: Fix regression related to X-Gene UARTs
|
||||
|
||||
Message-id: <20180510173844.29580-4-msalter@redhat.com>
|
||||
Patchwork-id: 214381
|
||||
O-Subject: [RHEL-8 BZ1519554 3/3] aarch64: acpi scan: Fix regression related to X-Gene UARTs
|
||||
Bugzilla: 1519554
|
||||
RH-Acked-by: Al Stone <astone@redhat.com>
|
||||
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1519554
|
||||
Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16144520
|
||||
|
||||
Commit e361d1f85855 ("ACPI / scan: Fix enumeration for special UART
|
||||
devices") caused a regression with some X-Gene based platforms (Mustang
|
||||
and M400) with invalid DSDT. The DSDT makes it appear that the UART
|
||||
device is also a slave device attached to itself. With the above commit
|
||||
the UART won't be enumerated by ACPI scan (slave serial devices shouldn't
|
||||
be). So check for X-Gene UART device and skip slace device check on it.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Mark Salter <msalter@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
---
|
||||
drivers/acpi/scan.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
|
||||
index 2142f1554761..f5fdf6f3650c 100644
|
||||
--- a/drivers/acpi/scan.c
|
||||
+++ b/drivers/acpi/scan.c
|
||||
@@ -1574,6 +1574,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
|
||||
if (!acpi_match_device_ids(device, i2c_multi_instantiate_ids))
|
||||
return false;
|
||||
|
||||
+ /*
|
||||
+ * Firmware on some arm64 X-Gene platforms will make the UART
|
||||
+ * device appear as both a UART and a slave of that UART. Just
|
||||
+ * bail out here for X-Gene UARTs.
|
||||
+ */
|
||||
+ if (IS_ENABLED(CONFIG_ARM64) &&
|
||||
+ !strcmp(acpi_device_hid(device), "APMC0D08"))
|
||||
+ return false;
|
||||
+
|
||||
INIT_LIST_HEAD(&resource_list);
|
||||
acpi_dev_get_resources(device, &resource_list,
|
||||
acpi_check_serial_bus_slave,
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Richter <rrichter@redhat.com>
|
||||
Date: Thu, 7 Jun 2018 22:59:33 -0400
|
||||
Subject: [PATCH] ahci: thunderx2: Fix for errata that affects stop engine
|
||||
|
||||
Message-id: <1528412373-19128-3-git-send-email-rrichter@redhat.com>
|
||||
Patchwork-id: 220952
|
||||
O-Subject: [RHEL-8.0 BZ 1563590 v2 2/2] ahci: thunderx2: Fix for errata that affects stop engine
|
||||
Bugzilla: 1563590
|
||||
RH-Acked-by: Dean Nelson <dnelson@redhat.com>
|
||||
RH-Acked-by: Mark Langsdorf <mlangsdo@redhat.com>
|
||||
RH-Acked-by: Mark Salter <msalter@redhat.com>
|
||||
|
||||
From: Jayachandran C <jnair@caviumnetworks.com>
|
||||
|
||||
Apply workaround for this errata:
|
||||
Synopsis: Resetting PxCMD.ST may hang the SATA device
|
||||
|
||||
Description: An internal ping-pong buffer state is not reset
|
||||
correctly for an PxCMD.ST=0 command for a SATA channel. This
|
||||
may cause the SATA interface to hang when a PxCMD.ST=0 command
|
||||
is received.
|
||||
|
||||
Workaround: A SATA_BIU_CORE_ENABLE.sw_init_bsi must be asserted
|
||||
by the driver whenever the PxCMD.ST needs to be de-asserted. This
|
||||
will reset both the ports. So, it may not always work in a 2
|
||||
channel SATA system.
|
||||
|
||||
Resolution: Fix in B0.
|
||||
|
||||
Add the code to ahci_stop_engine() to do this. It is not easy to
|
||||
stop the other "port" since it is associated with a different AHCI
|
||||
interface. Please note that with this fix, SATA reset does not
|
||||
hang any more, but it can cause failures on the other interface
|
||||
if that is in active use.
|
||||
|
||||
Unfortunately, we have nothing other the the CPU ID to check if the
|
||||
SATA block has this issue.
|
||||
|
||||
RHEL-only:
|
||||
|
||||
Both patches are in RHEL-7.6 also. Inclusion of the patches into RHEL-8
|
||||
was discussed. Since there are partners with Ax system configurations it
|
||||
was decided to carry them in RHEL8 too. See:
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1563590#c1
|
||||
|
||||
[v3 with new delays]
|
||||
Signed-off-by: Jayachandran C <jnair@caviumnetworks.com>
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Robert Richter <rrichter@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
---
|
||||
drivers/ata/libahci.c | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
|
||||
index ea5bf5f4cbed..71c55cae27ac 100644
|
||||
--- a/drivers/ata/libahci.c
|
||||
+++ b/drivers/ata/libahci.c
|
||||
@@ -666,6 +666,24 @@ int ahci_stop_engine(struct ata_port *ap)
|
||||
tmp &= ~PORT_CMD_START;
|
||||
writel(tmp, port_mmio + PORT_CMD);
|
||||
|
||||
+#ifdef CONFIG_ARM64
|
||||
+ /* Rev Ax of Cavium CN99XX needs a hack for port stop */
|
||||
+ if (dev_is_pci(ap->host->dev) &&
|
||||
+ to_pci_dev(ap->host->dev)->vendor == 0x14e4 &&
|
||||
+ to_pci_dev(ap->host->dev)->device == 0x9027 &&
|
||||
+ midr_is_cpu_model_range(read_cpuid_id(),
|
||||
+ MIDR_CPU_MODEL(ARM_CPU_IMP_BRCM, BRCM_CPU_PART_VULCAN),
|
||||
+ MIDR_CPU_VAR_REV(0, 0),
|
||||
+ MIDR_CPU_VAR_REV(0, MIDR_REVISION_MASK))) {
|
||||
+ tmp = readl(hpriv->mmio + 0x8000);
|
||||
+ udelay(100);
|
||||
+ writel(tmp | (1 << 26), hpriv->mmio + 0x8000);
|
||||
+ udelay(100);
|
||||
+ writel(tmp & ~(1 << 26), hpriv->mmio + 0x8000);
|
||||
+ dev_warn(ap->host->dev, "CN99XX SATA reset workaround applied\n");
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* wait for engine to stop. This could be as long as 500 msec */
|
||||
tmp = ata_wait_register(ap, port_mmio + PORT_CMD,
|
||||
PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500);
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Cline <jcline@redhat.com>
|
||||
Date: Tue, 1 Oct 2019 15:51:23 +0000
|
||||
Subject: [PATCH] arm: aarch64: Drop the EXPERT setting from ARM64_FORCE_52BIT
|
||||
|
||||
Message-id: <20191001181256.22935-1-jcline@redhat.com>
|
||||
Patchwork-id: 275498
|
||||
O-Subject: [ARK INTERNAL PATCH] [ARK INTERNAL PATCH] [redhat] Add patch
|
||||
to drop the EXPERT setting from ARM64_FORCE_52BIT
|
||||
Bugzilla:
|
||||
RH-Acked-by: Laura Abbott <labbott@redhat.com>
|
||||
|
||||
We don't turn on EXPERT as there are few settings we actually want to
|
||||
mess with. Remove the dependency for ARM64_FORCE_52BIT as we do want
|
||||
that on in debug builds to help find 52-bit bugs.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
arch/arm64/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
|
||||
index e11b4ea06127..74c5325108c0 100644
|
||||
--- a/arch/arm64/Kconfig
|
||||
+++ b/arch/arm64/Kconfig
|
||||
@@ -861,7 +861,7 @@ endchoice
|
||||
|
||||
config ARM64_FORCE_52BIT
|
||||
bool "Force 52-bit virtual addresses for userspace"
|
||||
- depends on ARM64_VA_BITS_52 && EXPERT
|
||||
+ depends on ARM64_VA_BITS_52
|
||||
help
|
||||
For systems with 52-bit userspace VAs enabled, the kernel will attempt
|
||||
to maintain compatibility with older software by providing 48-bit VAs
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jon Masters <jcm@redhat.com>
|
||||
Date: Thu, 18 Jul 2019 15:47:26 -0400
|
||||
Subject: [PATCH] arm: make CONFIG_HIGHPTE optional without CONFIG_EXPERT
|
||||
|
||||
We will use this to force CONFIG_HIGHPTE off on LPAE for now
|
||||
|
||||
Signed-off-by: Jon Masters <jcm@redhat.com>
|
||||
---
|
||||
arch/arm/Kconfig | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||
index e00d94b16658..4db48405b23a 100644
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1514,9 +1514,9 @@ config HIGHMEM
|
||||
If unsure, say n.
|
||||
|
||||
config HIGHPTE
|
||||
- bool "Allocate 2nd-level pagetables from highmem" if EXPERT
|
||||
+ bool "Allocate 2nd-level pagetables from highmem"
|
||||
depends on HIGHMEM
|
||||
- default y
|
||||
+ default n
|
||||
help
|
||||
The VM uses one page of physical memory for each page table.
|
||||
For systems with a lot of processes, this can use a lot of
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
From 6e318871fac5533bd4dd82677b08ba7be17df55b Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Tue, 12 Jan 2021 23:14:09 +0000
|
||||
Subject: [PATCH] brcm: rpi4: fix usb numeration
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
drivers/pci/controller/pcie-brcmstb.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
|
||||
index 9c3d2982248d..78ed98e9b099 100644
|
||||
--- a/drivers/pci/controller/pcie-brcmstb.c
|
||||
+++ b/drivers/pci/controller/pcie-brcmstb.c
|
||||
@@ -869,6 +869,7 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
|
||||
|
||||
/* Reset the bridge */
|
||||
pcie->bridge_sw_init_set(pcie, 1);
|
||||
+ pcie->perst_set(pcie, 1);
|
||||
usleep_range(100, 200);
|
||||
|
||||
/* Take the bridge out of reset */
|
||||
--
|
||||
2.29.2
|
||||
|
|
@ -1,423 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Icenowy Zheng <icenowy@aosc.io>
|
||||
Date: Mon, 16 Mar 2020 21:35:01 +0800
|
||||
Subject: [PATCH] drm: panel: add Xingbangda XBD599 panel
|
||||
|
||||
Xingbangda XBD599 is a 5.99" 720x1440 MIPI-DSI IPS LCD panel made by
|
||||
Xingbangda, which is used on PinePhone final assembled phones.
|
||||
|
||||
Add support for it.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
---
|
||||
drivers/gpu/drm/panel/Kconfig | 9 +
|
||||
drivers/gpu/drm/panel/Makefile | 1 +
|
||||
.../gpu/drm/panel/panel-xingbangda-xbd599.c | 366 ++++++++++++++++++
|
||||
3 files changed, 376 insertions(+)
|
||||
create mode 100644 drivers/gpu/drm/panel/panel-xingbangda-xbd599.c
|
||||
|
||||
diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
|
||||
index de2f2a452be5..3ce658de416b 100644
|
||||
--- a/drivers/gpu/drm/panel/Kconfig
|
||||
+++ b/drivers/gpu/drm/panel/Kconfig
|
||||
@@ -462,6 +462,15 @@ config DRM_PANEL_VISIONOX_RM69299
|
||||
Say Y here if you want to enable support for Visionox
|
||||
RM69299 DSI Video Mode panel.
|
||||
|
||||
+config DRM_PANEL_XINGBANGDA_XBD599
|
||||
+ tristate "Xingbangda XBD599 panel"
|
||||
+ depends on OF
|
||||
+ depends on DRM_MIPI_DSI
|
||||
+ depends on BACKLIGHT_CLASS_DEVICE
|
||||
+ help
|
||||
+ Say Y here if you want to enable support for the Xingbangda XBD599
|
||||
+ MIPI DSI Video Mode panel.
|
||||
+
|
||||
config DRM_PANEL_XINPENG_XPP055C272
|
||||
tristate "Xinpeng XPP055C272 panel driver"
|
||||
depends on OF
|
||||
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
|
||||
index e45ceac6286f..bd10617430ec 100644
|
||||
--- a/drivers/gpu/drm/panel/Makefile
|
||||
+++ b/drivers/gpu/drm/panel/Makefile
|
||||
@@ -49,4 +49,5 @@ obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o
|
||||
obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o
|
||||
obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o
|
||||
obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o
|
||||
+obj-$(CONFIG_DRM_PANEL_XINGBANGDA_XBD599) += panel-xingbangda-xbd599.o
|
||||
obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o
|
||||
diff --git a/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c b/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c
|
||||
new file mode 100644
|
||||
index 000000000000..b483f96ee1db
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c
|
||||
@@ -0,0 +1,366 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Xingbangda XBD599 MIPI-DSI panel driver
|
||||
+ *
|
||||
+ * Copyright (C) 2019-2020 Icenowy Zheng <icenowy@aosc.io>
|
||||
+ *
|
||||
+ * Based on panel-rocktech-jh057n00900.c, which is:
|
||||
+ * Copyright (C) Purism SPC 2019
|
||||
+ */
|
||||
+
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/gpio/consumer.h>
|
||||
+#include <linux/mod_devicetable.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of_device.h>
|
||||
+#include <linux/regulator/consumer.h>
|
||||
+
|
||||
+#include <drm/drm_mipi_dsi.h>
|
||||
+#include <drm/drm_modes.h>
|
||||
+#include <drm/drm_panel.h>
|
||||
+#include <drm/drm_print.h>
|
||||
+
|
||||
+/* Manufacturer specific Commands send via DSI */
|
||||
+#define ST7703_CMD_ALL_PIXEL_OFF 0x22
|
||||
+#define ST7703_CMD_ALL_PIXEL_ON 0x23
|
||||
+#define ST7703_CMD_SETDISP 0xB2
|
||||
+#define ST7703_CMD_SETRGBIF 0xB3
|
||||
+#define ST7703_CMD_SETCYC 0xB4
|
||||
+#define ST7703_CMD_SETBGP 0xB5
|
||||
+#define ST7703_CMD_SETVCOM 0xB6
|
||||
+#define ST7703_CMD_SETOTP 0xB7
|
||||
+#define ST7703_CMD_SETPOWER_EXT 0xB8
|
||||
+#define ST7703_CMD_SETEXTC 0xB9
|
||||
+#define ST7703_CMD_SETMIPI 0xBA
|
||||
+#define ST7703_CMD_SETVDC 0xBC
|
||||
+#define ST7703_CMD_SETSCR 0xC0
|
||||
+#define ST7703_CMD_SETPOWER 0xC1
|
||||
+#define ST7703_CMD_UNK_C6 0xC6
|
||||
+#define ST7703_CMD_SETPANEL 0xCC
|
||||
+#define ST7703_CMD_SETGAMMA 0xE0
|
||||
+#define ST7703_CMD_SETEQ 0xE3
|
||||
+#define ST7703_CMD_SETGIP1 0xE9
|
||||
+#define ST7703_CMD_SETGIP2 0xEA
|
||||
+
|
||||
+static const char * const regulator_names[] = {
|
||||
+ "iovcc",
|
||||
+ "vcc",
|
||||
+};
|
||||
+
|
||||
+struct xbd599 {
|
||||
+ struct device *dev;
|
||||
+ struct drm_panel panel;
|
||||
+ struct gpio_desc *reset_gpio;
|
||||
+ struct regulator_bulk_data supplies[ARRAY_SIZE(regulator_names)];
|
||||
+ bool prepared;
|
||||
+};
|
||||
+
|
||||
+static inline struct xbd599 *panel_to_xbd599(struct drm_panel *panel)
|
||||
+{
|
||||
+ return container_of(panel, struct xbd599, panel);
|
||||
+}
|
||||
+
|
||||
+#define dsi_dcs_write_seq(dsi, cmd, seq...) do { \
|
||||
+ static const u8 d[] = { seq }; \
|
||||
+ int ret; \
|
||||
+ ret = mipi_dsi_dcs_write(dsi, cmd, d, ARRAY_SIZE(d)); \
|
||||
+ if (ret < 0) \
|
||||
+ return ret; \
|
||||
+ } while (0)
|
||||
+
|
||||
+static int xbd599_init_sequence(struct xbd599 *ctx)
|
||||
+{
|
||||
+ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev);
|
||||
+ struct device *dev = ctx->dev;
|
||||
+ int ret;
|
||||
+
|
||||
+ /*
|
||||
+ * Init sequence was supplied by the panel vendor.
|
||||
+ */
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETEXTC,
|
||||
+ 0xF1, 0x12, 0x83);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETMIPI,
|
||||
+ 0x33, 0x81, 0x05, 0xF9, 0x0E, 0x0E, 0x20, 0x00,
|
||||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25,
|
||||
+ 0x00, 0x91, 0x0a, 0x00, 0x00, 0x02, 0x4F, 0x11,
|
||||
+ 0x00, 0x00, 0x37);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER_EXT,
|
||||
+ 0x25, 0x22, 0x20, 0x03);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETRGBIF,
|
||||
+ 0x10, 0x10, 0x05, 0x05, 0x03, 0xFF, 0x00, 0x00,
|
||||
+ 0x00, 0x00);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETSCR,
|
||||
+ 0x73, 0x73, 0x50, 0x50, 0x00, 0xC0, 0x08, 0x70,
|
||||
+ 0x00);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETVDC, 0x4E);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPANEL, 0x0B);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETCYC, 0x80);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETDISP, 0xF0, 0x12, 0xF0);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETEQ,
|
||||
+ 0x00, 0x00, 0x0B, 0x0B, 0x10, 0x10, 0x00, 0x00,
|
||||
+ 0x00, 0x00, 0xFF, 0x00, 0xC0, 0x10);
|
||||
+ dsi_dcs_write_seq(dsi, 0xC6, 0x01, 0x00, 0xFF, 0xFF, 0x00);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER,
|
||||
+ 0x74, 0x00, 0x32, 0x32, 0x77, 0xF1, 0xFF, 0xFF,
|
||||
+ 0xCC, 0xCC, 0x77, 0x77);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETBGP, 0x07, 0x07);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETVCOM, 0x2C, 0x2C);
|
||||
+ dsi_dcs_write_seq(dsi, 0xBF, 0x02, 0x11, 0x00);
|
||||
+
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP1,
|
||||
+ 0x82, 0x10, 0x06, 0x05, 0xA2, 0x0A, 0xA5, 0x12,
|
||||
+ 0x31, 0x23, 0x37, 0x83, 0x04, 0xBC, 0x27, 0x38,
|
||||
+ 0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00,
|
||||
+ 0x03, 0x00, 0x00, 0x00, 0x75, 0x75, 0x31, 0x88,
|
||||
+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x13, 0x88, 0x64,
|
||||
+ 0x64, 0x20, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
+ 0x02, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP2,
|
||||
+ 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x02, 0x88,
|
||||
+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x64, 0x88, 0x13,
|
||||
+ 0x57, 0x13, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
+ 0x75, 0x88, 0x23, 0x14, 0x00, 0x00, 0x02, 0x00,
|
||||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0A,
|
||||
+ 0xA5, 0x00, 0x00, 0x00, 0x00);
|
||||
+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGAMMA,
|
||||
+ 0x00, 0x09, 0x0D, 0x23, 0x27, 0x3C, 0x41, 0x35,
|
||||
+ 0x07, 0x0D, 0x0E, 0x12, 0x13, 0x10, 0x12, 0x12,
|
||||
+ 0x18, 0x00, 0x09, 0x0D, 0x23, 0x27, 0x3C, 0x41,
|
||||
+ 0x35, 0x07, 0x0D, 0x0E, 0x12, 0x13, 0x10, 0x12,
|
||||
+ 0x12, 0x18);
|
||||
+ msleep(20);
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_exit_sleep_mode(dsi);
|
||||
+ if (ret < 0) {
|
||||
+ DRM_DEV_ERROR(dev, "Failed to exit sleep mode\n");
|
||||
+ return ret;
|
||||
+ }
|
||||
+ msleep(250);
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_set_display_on(dsi);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ msleep(50);
|
||||
+
|
||||
+ DRM_DEV_DEBUG_DRIVER(dev, "Panel init sequence done\n");
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int xbd599_prepare(struct drm_panel *panel)
|
||||
+{
|
||||
+ struct xbd599 *ctx = panel_to_xbd599(panel);
|
||||
+ int ret;
|
||||
+
|
||||
+ if (ctx->prepared)
|
||||
+ return 0;
|
||||
+
|
||||
+ ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ DRM_DEV_DEBUG_DRIVER(ctx->dev, "Resetting the panel\n");
|
||||
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
|
||||
+ usleep_range(20, 40);
|
||||
+ gpiod_set_value_cansleep(ctx->reset_gpio, 0);
|
||||
+ msleep(20);
|
||||
+
|
||||
+ ctx->prepared = true;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int xbd599_enable(struct drm_panel *panel)
|
||||
+{
|
||||
+ struct xbd599 *ctx = panel_to_xbd599(panel);
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = xbd599_init_sequence(ctx);
|
||||
+ if (ret < 0) {
|
||||
+ DRM_DEV_ERROR(ctx->dev, "Panel init sequence failed: %d\n",
|
||||
+ ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int xbd599_disable(struct drm_panel *panel)
|
||||
+{
|
||||
+ struct xbd599 *ctx = panel_to_xbd599(panel);
|
||||
+ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev);
|
||||
+
|
||||
+ return mipi_dsi_dcs_set_display_off(dsi);
|
||||
+}
|
||||
+
|
||||
+static int xbd599_unprepare(struct drm_panel *panel)
|
||||
+{
|
||||
+ struct xbd599 *ctx = panel_to_xbd599(panel);
|
||||
+
|
||||
+ if (!ctx->prepared)
|
||||
+ return 0;
|
||||
+
|
||||
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
|
||||
+ regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
|
||||
+ ctx->prepared = false;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct drm_display_mode xbd599_default_mode = {
|
||||
+ .hdisplay = 720,
|
||||
+ .hsync_start = 720 + 40,
|
||||
+ .hsync_end = 720 + 40 + 40,
|
||||
+ .htotal = 720 + 40 + 40 + 40,
|
||||
+ .vdisplay = 1440,
|
||||
+ .vsync_start = 1440 + 18,
|
||||
+ .vsync_end = 1440 + 18 + 10,
|
||||
+ .vtotal = 1440 + 18 + 10 + 17,
|
||||
+ .vrefresh = 60,
|
||||
+ .clock = 69000,
|
||||
+ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
|
||||
+
|
||||
+ .width_mm = 68,
|
||||
+ .height_mm = 136,
|
||||
+ .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
|
||||
+};
|
||||
+
|
||||
+static int xbd599_get_modes(struct drm_panel *panel,
|
||||
+ struct drm_connector *connector)
|
||||
+{
|
||||
+ struct xbd599 *ctx = panel_to_xbd599(panel);
|
||||
+ struct drm_display_mode *mode;
|
||||
+
|
||||
+ mode = drm_mode_duplicate(connector->dev, &xbd599_default_mode);
|
||||
+ if (!mode) {
|
||||
+ DRM_DEV_ERROR(ctx->dev, "Failed to add mode\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ drm_mode_set_name(mode);
|
||||
+
|
||||
+ mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
|
||||
+ connector->display_info.width_mm = mode->width_mm;
|
||||
+ connector->display_info.height_mm = mode->height_mm;
|
||||
+ drm_mode_probed_add(connector, mode);
|
||||
+
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static const struct drm_panel_funcs xbd599_drm_funcs = {
|
||||
+ .prepare = xbd599_prepare,
|
||||
+ .enable = xbd599_enable,
|
||||
+ .disable = xbd599_disable,
|
||||
+ .unprepare = xbd599_unprepare,
|
||||
+ .get_modes = xbd599_get_modes,
|
||||
+};
|
||||
+
|
||||
+static int xbd599_probe(struct mipi_dsi_device *dsi)
|
||||
+{
|
||||
+ struct device *dev = &dsi->dev;
|
||||
+ struct xbd599 *ctx;
|
||||
+ int i, ret;
|
||||
+
|
||||
+ ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
|
||||
+ if (!ctx)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(ctx->supplies); i++)
|
||||
+ ctx->supplies[i].supply = regulator_names[i];
|
||||
+
|
||||
+ ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies),
|
||||
+ ctx->supplies);
|
||||
+ if (ret < 0) {
|
||||
+ DRM_DEV_ERROR(&dsi->dev, "cannot get regulators\n");
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
|
||||
+ if (IS_ERR(ctx->reset_gpio)) {
|
||||
+ DRM_DEV_ERROR(dev, "cannot get reset gpio\n");
|
||||
+ return PTR_ERR(ctx->reset_gpio);
|
||||
+ }
|
||||
+
|
||||
+ mipi_dsi_set_drvdata(dsi, ctx);
|
||||
+
|
||||
+ ctx->dev = dev;
|
||||
+
|
||||
+ dsi->lanes = 4;
|
||||
+ dsi->format = MIPI_DSI_FMT_RGB888;
|
||||
+ dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE;
|
||||
+
|
||||
+ drm_panel_init(&ctx->panel, &dsi->dev, &xbd599_drm_funcs,
|
||||
+ DRM_MODE_CONNECTOR_DSI);
|
||||
+
|
||||
+ ret = drm_panel_of_backlight(&ctx->panel);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ drm_panel_add(&ctx->panel);
|
||||
+
|
||||
+ ret = mipi_dsi_attach(dsi);
|
||||
+ if (ret < 0) {
|
||||
+ DRM_DEV_ERROR(dev, "mipi_dsi_attach failed. Is host ready?\n");
|
||||
+ drm_panel_remove(&ctx->panel);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ DRM_DEV_INFO(dev, "%ux%u@%u %ubpp dsi %udl - ready\n",
|
||||
+ xbd599_default_mode.hdisplay,
|
||||
+ xbd599_default_mode.vdisplay,
|
||||
+ xbd599_default_mode.vrefresh,
|
||||
+ mipi_dsi_pixel_format_to_bpp(dsi->format), dsi->lanes);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void xbd599_shutdown(struct mipi_dsi_device *dsi)
|
||||
+{
|
||||
+ struct xbd599 *ctx = mipi_dsi_get_drvdata(dsi);
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = drm_panel_unprepare(&ctx->panel);
|
||||
+ if (ret < 0)
|
||||
+ DRM_DEV_ERROR(&dsi->dev, "Failed to unprepare panel: %d\n",
|
||||
+ ret);
|
||||
+}
|
||||
+
|
||||
+static int xbd599_remove(struct mipi_dsi_device *dsi)
|
||||
+{
|
||||
+ struct xbd599 *ctx = mipi_dsi_get_drvdata(dsi);
|
||||
+ int ret;
|
||||
+
|
||||
+ xbd599_shutdown(dsi);
|
||||
+
|
||||
+ ret = mipi_dsi_detach(dsi);
|
||||
+ if (ret < 0)
|
||||
+ DRM_DEV_ERROR(&dsi->dev, "Failed to detach from DSI host: %d\n",
|
||||
+ ret);
|
||||
+
|
||||
+ drm_panel_remove(&ctx->panel);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id xbd599_of_match[] = {
|
||||
+ { .compatible = "xingbangda,xbd599", },
|
||||
+ { /* sentinel */ }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, xbd599_of_match);
|
||||
+
|
||||
+static struct mipi_dsi_driver xbd599_driver = {
|
||||
+ .probe = xbd599_probe,
|
||||
+ .remove = xbd599_remove,
|
||||
+ .shutdown = xbd599_shutdown,
|
||||
+ .driver = {
|
||||
+ .name = "panel-xingbangda-xbd599",
|
||||
+ .of_match_table = xbd599_of_match,
|
||||
+ },
|
||||
+};
|
||||
+module_mipi_dsi_driver(xbd599_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Icenowy Zheng <icenowy@aosc.io>");
|
||||
+MODULE_DESCRIPTION("DRM driver for Xingbangda XBD599 MIPI DSI panel");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Icenowy Zheng <icenowy@aosc.io>
|
||||
Date: Mon, 16 Mar 2020 21:35:02 +0800
|
||||
Subject: [PATCH] drm/sun4i: sun6i_mipi_dsi: fix horizontal timing calculation
|
||||
|
||||
The max() function call in horizontal timing calculation shouldn't pad a
|
||||
length already subtracted with overhead to overhead, instead it should
|
||||
only prevent the set timing to underflow.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
---
|
||||
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
|
||||
index aa67cb037e9d..52e009dc632b 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
|
||||
@@ -556,7 +556,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
|
||||
*/
|
||||
#define HSA_PACKET_OVERHEAD 10
|
||||
hsa = max((unsigned int)HSA_PACKET_OVERHEAD,
|
||||
- (mode->hsync_end - mode->hsync_start) * Bpp - HSA_PACKET_OVERHEAD);
|
||||
+ (mode->hsync_end - mode->hsync_start) * Bpp) - HSA_PACKET_OVERHEAD;
|
||||
|
||||
/*
|
||||
* The backporch is set using a blanking packet (4
|
||||
@@ -565,7 +565,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
|
||||
*/
|
||||
#define HBP_PACKET_OVERHEAD 6
|
||||
hbp = max((unsigned int)HBP_PACKET_OVERHEAD,
|
||||
- (mode->htotal - mode->hsync_end) * Bpp - HBP_PACKET_OVERHEAD);
|
||||
+ (mode->htotal - mode->hsync_end) * Bpp) - HBP_PACKET_OVERHEAD;
|
||||
|
||||
/*
|
||||
* The frontporch is set using a sync event (4 bytes)
|
||||
@@ -575,7 +575,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
|
||||
*/
|
||||
#define HFP_PACKET_OVERHEAD 16
|
||||
hfp = max((unsigned int)HFP_PACKET_OVERHEAD,
|
||||
- (mode->hsync_start - mode->hdisplay) * Bpp - HFP_PACKET_OVERHEAD);
|
||||
+ (mode->hsync_start - mode->hdisplay) * Bpp) - HFP_PACKET_OVERHEAD;
|
||||
|
||||
/*
|
||||
* The blanking is set using a sync event (4 bytes)
|
||||
@@ -584,8 +584,8 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
|
||||
*/
|
||||
#define HBLK_PACKET_OVERHEAD 10
|
||||
hblk = max((unsigned int)HBLK_PACKET_OVERHEAD,
|
||||
- (mode->htotal - (mode->hsync_end - mode->hsync_start)) * Bpp -
|
||||
- HBLK_PACKET_OVERHEAD);
|
||||
+ (mode->htotal - (mode->hsync_end - mode->hsync_start)) * Bpp) -
|
||||
+ HBLK_PACKET_OVERHEAD;
|
||||
|
||||
/*
|
||||
* And I'm not entirely sure what vblk is about. The driver in
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Icenowy Zheng <icenowy@aosc.io>
|
||||
Date: Mon, 16 Mar 2020 21:35:00 +0800
|
||||
Subject: [PATCH] dt-bindings: panel: add binding for Xingbangda XBD599 panel
|
||||
|
||||
Xingbangda XBD599 is a 5.99" 720x1440 MIPI-DSI LCD panel.
|
||||
|
||||
Add its device tree binding.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
---
|
||||
.../display/panel/xingbangda,xbd599.yaml | 50 +++++++++++++++++++
|
||||
1 file changed, 50 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml b/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml
|
||||
new file mode 100644
|
||||
index 000000000000..b27bcf11198f
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml
|
||||
@@ -0,0 +1,50 @@
|
||||
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
+%YAML 1.2
|
||||
+---
|
||||
+$id: http://devicetree.org/schemas/display/panel/xingbangda,xbd599.yaml#
|
||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
+
|
||||
+title: Xingbangda XBD599 5.99in MIPI-DSI LCD panel
|
||||
+
|
||||
+maintainers:
|
||||
+ - Icenowy Zheng <icenowy@aosc.io>
|
||||
+
|
||||
+allOf:
|
||||
+ - $ref: panel-common.yaml#
|
||||
+
|
||||
+properties:
|
||||
+ compatible:
|
||||
+ const: xingbangda,xbd599
|
||||
+ reg: true
|
||||
+ backlight: true
|
||||
+ reset-gpios: true
|
||||
+ vcc-supply:
|
||||
+ description: regulator that supplies the VCC voltage
|
||||
+ iovcc-supply:
|
||||
+ description: regulator that supplies the IOVCC voltage
|
||||
+
|
||||
+required:
|
||||
+ - compatible
|
||||
+ - reg
|
||||
+ - backlight
|
||||
+ - vcc-supply
|
||||
+ - iovcc-supply
|
||||
+
|
||||
+additionalProperties: false
|
||||
+
|
||||
+examples:
|
||||
+ - |
|
||||
+ dsi {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ panel@0 {
|
||||
+ compatible = "xingbangda,xbd599";
|
||||
+ reg = <0>;
|
||||
+ backlight = <&backlight>;
|
||||
+ iovcc-supply = <®_dldo2>;
|
||||
+ vcc-supply = <®_ldo_io0>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+...
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,161 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: David Howells <dhowells@redhat.com>
|
||||
Date: Tue, 27 Feb 2018 10:04:55 +0000
|
||||
Subject: [PATCH] efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode
|
||||
|
||||
UEFI machines can be booted in Secure Boot mode. Add an EFI_SECURE_BOOT
|
||||
flag that can be passed to efi_enabled() to find out whether secure boot is
|
||||
enabled.
|
||||
|
||||
Move the switch-statement in x86's setup_arch() that inteprets the
|
||||
secure_boot boot parameter to generic code and set the bit there.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
Signed-off-by: David Howells <dhowells@redhat.com>
|
||||
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
cc: linux-efi@vger.kernel.org
|
||||
[Rebased for context; efi_is_table_address was moved to arch/x86]
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
arch/x86/kernel/setup.c | 14 +-----------
|
||||
drivers/firmware/efi/Makefile | 1 +
|
||||
drivers/firmware/efi/secureboot.c | 38 +++++++++++++++++++++++++++++++
|
||||
include/linux/efi.h | 18 ++++++++++-----
|
||||
4 files changed, 52 insertions(+), 19 deletions(-)
|
||||
create mode 100644 drivers/firmware/efi/secureboot.c
|
||||
|
||||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
|
||||
index 112efbef3414..c9de4b36ca51 100644
|
||||
--- a/arch/x86/kernel/setup.c
|
||||
+++ b/arch/x86/kernel/setup.c
|
||||
@@ -1255,19 +1255,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
/* Allocate bigger log buffer */
|
||||
setup_log_buf(1);
|
||||
|
||||
- if (efi_enabled(EFI_BOOT)) {
|
||||
- switch (boot_params.secure_boot) {
|
||||
- case efi_secureboot_mode_disabled:
|
||||
- pr_info("Secure boot disabled\n");
|
||||
- break;
|
||||
- case efi_secureboot_mode_enabled:
|
||||
- pr_info("Secure boot enabled\n");
|
||||
- break;
|
||||
- default:
|
||||
- pr_info("Secure boot could not be determined\n");
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
+ efi_set_secure_boot(boot_params.secure_boot);
|
||||
|
||||
reserve_initrd();
|
||||
|
||||
diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile
|
||||
index 7a216984552b..f0ef02d733af 100644
|
||||
--- a/drivers/firmware/efi/Makefile
|
||||
+++ b/drivers/firmware/efi/Makefile
|
||||
@@ -25,6 +25,7 @@ obj-$(CONFIG_EFI_FAKE_MEMMAP) += fake_map.o
|
||||
obj-$(CONFIG_EFI_BOOTLOADER_CONTROL) += efibc.o
|
||||
obj-$(CONFIG_EFI_TEST) += test/
|
||||
obj-$(CONFIG_EFI_DEV_PATH_PARSER) += dev-path-parser.o
|
||||
+obj-$(CONFIG_EFI) += secureboot.o
|
||||
obj-$(CONFIG_APPLE_PROPERTIES) += apple-properties.o
|
||||
obj-$(CONFIG_EFI_RCI2_TABLE) += rci2-table.o
|
||||
obj-$(CONFIG_EFI_EMBEDDED_FIRMWARE) += embedded-firmware.o
|
||||
diff --git a/drivers/firmware/efi/secureboot.c b/drivers/firmware/efi/secureboot.c
|
||||
new file mode 100644
|
||||
index 000000000000..de0a3714a5d4
|
||||
--- /dev/null
|
||||
+++ b/drivers/firmware/efi/secureboot.c
|
||||
@@ -0,0 +1,38 @@
|
||||
+/* Core kernel secure boot support.
|
||||
+ *
|
||||
+ * Copyright (C) 2017 Red Hat, Inc. All Rights Reserved.
|
||||
+ * Written by David Howells (dhowells@redhat.com)
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public Licence
|
||||
+ * as published by the Free Software Foundation; either version
|
||||
+ * 2 of the Licence, or (at your option) any later version.
|
||||
+ */
|
||||
+
|
||||
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+#include <linux/efi.h>
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/printk.h>
|
||||
+
|
||||
+/*
|
||||
+ * Decide what to do when UEFI secure boot mode is enabled.
|
||||
+ */
|
||||
+void __init efi_set_secure_boot(enum efi_secureboot_mode mode)
|
||||
+{
|
||||
+ if (efi_enabled(EFI_BOOT)) {
|
||||
+ switch (mode) {
|
||||
+ case efi_secureboot_mode_disabled:
|
||||
+ pr_info("Secure boot disabled\n");
|
||||
+ break;
|
||||
+ case efi_secureboot_mode_enabled:
|
||||
+ set_bit(EFI_SECURE_BOOT, &efi.flags);
|
||||
+ pr_info("Secure boot enabled\n");
|
||||
+ break;
|
||||
+ default:
|
||||
+ pr_warn("Secure boot could not be determined (mode %u)\n",
|
||||
+ mode);
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index 92aa4697f558..1cdc5d8b6ac3 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -785,6 +785,14 @@ extern int __init efi_setup_pcdp_console(char *);
|
||||
#define EFI_MEM_ATTR 10 /* Did firmware publish an EFI_MEMORY_ATTRIBUTES table? */
|
||||
#define EFI_MEM_NO_SOFT_RESERVE 11 /* Is the kernel configured to ignore soft reservations? */
|
||||
#define EFI_PRESERVE_BS_REGIONS 12 /* Are EFI boot-services memory segments available? */
|
||||
+#define EFI_SECURE_BOOT 13 /* Are we in Secure Boot mode? */
|
||||
+
|
||||
+enum efi_secureboot_mode {
|
||||
+ efi_secureboot_mode_unset,
|
||||
+ efi_secureboot_mode_unknown,
|
||||
+ efi_secureboot_mode_disabled,
|
||||
+ efi_secureboot_mode_enabled,
|
||||
+};
|
||||
|
||||
#ifdef CONFIG_EFI
|
||||
/*
|
||||
@@ -796,6 +804,8 @@ static inline bool efi_enabled(int feature)
|
||||
}
|
||||
extern void efi_reboot(enum reboot_mode reboot_mode, const char *__unused);
|
||||
|
||||
+extern void __init efi_set_secure_boot(enum efi_secureboot_mode mode);
|
||||
+
|
||||
bool __pure __efi_soft_reserve_enabled(void);
|
||||
|
||||
static inline bool __pure efi_soft_reserve_enabled(void)
|
||||
@@ -822,6 +832,8 @@ efi_capsule_pending(int *reset_type)
|
||||
return false;
|
||||
}
|
||||
|
||||
+static inline void efi_set_secure_boot(enum efi_secureboot_mode mode) {}
|
||||
+
|
||||
static inline bool efi_soft_reserve_enabled(void)
|
||||
{
|
||||
return false;
|
||||
@@ -1094,12 +1106,6 @@ static inline bool efi_runtime_disabled(void) { return true; }
|
||||
extern void efi_call_virt_check_flags(unsigned long flags, const char *call);
|
||||
extern unsigned long efi_call_virt_save_flags(void);
|
||||
|
||||
-enum efi_secureboot_mode {
|
||||
- efi_secureboot_mode_unset,
|
||||
- efi_secureboot_mode_unknown,
|
||||
- efi_secureboot_mode_disabled,
|
||||
- efi_secureboot_mode_enabled,
|
||||
-};
|
||||
enum efi_secureboot_mode efi_get_secureboot(void);
|
||||
|
||||
#ifdef CONFIG_RESET_ATTACK_MITIGATION
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: David Howells <dhowells@redhat.com>
|
||||
Date: Mon, 30 Sep 2019 21:28:16 +0000
|
||||
Subject: [PATCH] efi: Lock down the kernel if booted in secure boot mode
|
||||
|
||||
UEFI Secure Boot provides a mechanism for ensuring that the firmware
|
||||
will only load signed bootloaders and kernels. Certain use cases may
|
||||
also require that all kernel modules also be signed. Add a
|
||||
configuration option that to lock down the kernel - which includes
|
||||
requiring validly signed modules - if the kernel is secure-booted.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: David Howells <dhowells@redhat.com>
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
arch/x86/kernel/setup.c | 8 ++++++++
|
||||
security/lockdown/Kconfig | 13 +++++++++++++
|
||||
2 files changed, 21 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
|
||||
index c9de4b36ca51..a1a012702915 100644
|
||||
--- a/arch/x86/kernel/setup.c
|
||||
+++ b/arch/x86/kernel/setup.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/sfi.h>
|
||||
#include <linux/hugetlb.h>
|
||||
#include <linux/tboot.h>
|
||||
+#include <linux/security.h>
|
||||
#include <linux/usb/xhci-dbgp.h>
|
||||
#include <linux/static_call.h>
|
||||
#include <linux/swiotlb.h>
|
||||
@@ -1104,6 +1105,13 @@ void __init setup_arch(char **cmdline_p)
|
||||
if (efi_enabled(EFI_BOOT))
|
||||
efi_init();
|
||||
|
||||
+ efi_set_secure_boot(boot_params.secure_boot);
|
||||
+
|
||||
+#ifdef CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT
|
||||
+ if (efi_enabled(EFI_SECURE_BOOT))
|
||||
+ security_lock_kernel_down("EFI Secure Boot mode", LOCKDOWN_INTEGRITY_MAX);
|
||||
+#endif
|
||||
+
|
||||
dmi_setup();
|
||||
|
||||
/*
|
||||
diff --git a/security/lockdown/Kconfig b/security/lockdown/Kconfig
|
||||
index e84ddf484010..d0501353a4b9 100644
|
||||
--- a/security/lockdown/Kconfig
|
||||
+++ b/security/lockdown/Kconfig
|
||||
@@ -16,6 +16,19 @@ config SECURITY_LOCKDOWN_LSM_EARLY
|
||||
subsystem is fully initialised. If enabled, lockdown will
|
||||
unconditionally be called before any other LSMs.
|
||||
|
||||
+config LOCK_DOWN_IN_EFI_SECURE_BOOT
|
||||
+ bool "Lock down the kernel in EFI Secure Boot mode"
|
||||
+ default n
|
||||
+ depends on EFI && SECURITY_LOCKDOWN_LSM_EARLY
|
||||
+ help
|
||||
+ UEFI Secure Boot provides a mechanism for ensuring that the firmware
|
||||
+ will only load signed bootloaders and kernels. Secure boot mode may
|
||||
+ be determined from EFI variables provided by the system firmware if
|
||||
+ not indicated by the boot parameters.
|
||||
+
|
||||
+ Enabling this option results in kernel lockdown being triggered if
|
||||
+ EFI Secure Boot is set.
|
||||
+
|
||||
choice
|
||||
prompt "Kernel default lockdown mode"
|
||||
default LOCK_DOWN_KERNEL_FORCE_NONE
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Laura Abbott <labbott@redhat.com>
|
||||
Date: Mon, 20 May 2019 22:21:02 -0400
|
||||
Subject: [PATCH] iommu/arm-smmu: workaround DMA mode issues
|
||||
|
||||
Message-id: <20190520222102.19488-1-labbott@redhat.com>
|
||||
Patchwork-id: 259215
|
||||
O-Subject: [ARK INTERNAL PATCH] iommu/arm-smmu: workaround DMA mode issues
|
||||
Bugzilla:
|
||||
RH-Acked-by: Mark Langsdorf <mlangsdo@redhat.com>
|
||||
RH-Acked-by: Mark Salter <msalter@redhat.com>
|
||||
|
||||
From: Mark Salter <msalter@redhat.com>
|
||||
|
||||
Rebased for v5.2-rc1
|
||||
|
||||
Bugzilla: 1652259
|
||||
Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=19244562
|
||||
Upstream status: RHEL only.
|
||||
|
||||
rhel8 commit 65feb1ed0ec9a088a63a90d46c0f7563ac96ad0f
|
||||
Author: Mark Salter <msalter@redhat.com>
|
||||
Date: Wed Nov 21 17:15:59 2018 +0100
|
||||
|
||||
[iommu] iommu/arm-smmu: workaround DMA mode issues
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1624077
|
||||
Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=18112820
|
||||
Testing: Verified iommu.passthrough=1 no longer needed on gigabyte platforms.
|
||||
Upstream Status: RHEL-only
|
||||
|
||||
In RHEL_ALT 7.5 we carried a RHEL-only patch which forced the arm smmuv2
|
||||
into bypass mode due to performance issues on CN88xx. This was intended
|
||||
to be a temporary hack until the issues were resolved. Another vendor
|
||||
had issues with the iommu in bypass mode so we reverted the RHEL-only
|
||||
patch so that iommu is in DMA mode by default (upstream default).
|
||||
|
||||
It turns on that there are remaining SMMU DMA mode issues on Gigabyte
|
||||
platformws with CN88xx cpus. The problem manifests itself by pcie
|
||||
card drivers failing to initialize the cards when SMMU is in DMA mode.
|
||||
The root cause has not been determined yet, but looks likely to be
|
||||
a hw or firmware issue. This patch forces bypass mode for Gigabyte
|
||||
platforms. CN88xx isn't officially supported in RHEL but we have a
|
||||
lot of them being used internally for testing, so I think we want
|
||||
this to support that use case in RHEL8.
|
||||
|
||||
Signed-off-by: Mark Salter <msalter@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
|
||||
Acked-by: Mark Salter <msalter@redhat.com>
|
||||
Acked-by: Donald Dutile <ddutile@redhat.com>
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Laura Abbott <labbott@redhat.com>
|
||||
---
|
||||
drivers/iommu/iommu.c | 22 ++++++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
|
||||
index 609bd25bf154..c701912b13ab 100644
|
||||
--- a/drivers/iommu/iommu.c
|
||||
+++ b/drivers/iommu/iommu.c
|
||||
@@ -7,6 +7,7 @@
|
||||
#define pr_fmt(fmt) "iommu: " fmt
|
||||
|
||||
#include <linux/device.h>
|
||||
+#include <linux/dmi.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/bug.h>
|
||||
#include <linux/types.h>
|
||||
@@ -2849,3 +2850,24 @@ int iommu_sva_get_pasid(struct iommu_sva *handle)
|
||||
return ops->sva_get_pasid(handle);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_sva_get_pasid);
|
||||
+
|
||||
+#ifdef CONFIG_ARM64
|
||||
+static int __init iommu_quirks(void)
|
||||
+{
|
||||
+ const char *vendor, *name;
|
||||
+
|
||||
+ vendor = dmi_get_system_info(DMI_SYS_VENDOR);
|
||||
+ name = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||
+
|
||||
+ if (vendor &&
|
||||
+ (strncmp(vendor, "GIGABYTE", 8) == 0 && name &&
|
||||
+ (strncmp(name, "R120", 4) == 0 ||
|
||||
+ strncmp(name, "R270", 4) == 0))) {
|
||||
+ pr_warn("Gigabyte %s detected, force iommu passthrough mode", name);
|
||||
+ iommu_def_domain_type = IOMMU_DOMAIN_IDENTITY;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+arch_initcall(iommu_quirks);
|
||||
+#endif
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Laura Abbott <labbott@redhat.com>
|
||||
Date: Sun, 10 Feb 2019 01:27:54 +0000
|
||||
Subject: [PATCH] ipmi: do not configure ipmi for HPE m400
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1670017
|
||||
Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=20147017
|
||||
|
||||
Commit 913a89f009d9 ("ipmi: Don't initialize anything in the core until
|
||||
something uses it") added new locking which broke context.
|
||||
|
||||
Message-id: <20180713142210.15700-1-tcamuso@redhat.com>
|
||||
Patchwork-id: 224899
|
||||
O-Subject: [RHEL8 BZ 1583537 1/1] ipmi: do not configure ipmi for HPE m400
|
||||
Bugzilla: 1583537
|
||||
RH-Acked-by: Dean Nelson <dnelson@redhat.com>
|
||||
RH-Acked-by: Al Stone <ahs3@redhat.com>
|
||||
RH-Acked-by: Mark Salter <msalter@redhat.com>
|
||||
|
||||
bugzilla:https://bugzilla.redhat.com/show_bug.cgi?id=1583537
|
||||
brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=17150528
|
||||
|
||||
RHEL-only
|
||||
|
||||
The ARM-based HPE m400 reports host-side ipmi as residing in intel
|
||||
port-io space, which does not exist in ARM processors. Therefore, when
|
||||
running on an m400, host-side ipmi configuration code must simply return
|
||||
zero without trying to configure the host-side ipmi.
|
||||
|
||||
This patch prevents panic on boot by averting attempts to configure
|
||||
host-side ipmi on this platform.
|
||||
|
||||
Though HPE m400 is not certified with RHEL, and HPE has relegated it to
|
||||
EOL status, the platform is still used extensively in ARM development
|
||||
and test for RHEL.
|
||||
|
||||
Testing:
|
||||
Boot without blacklisting ipmi and check to see that no ipmi modules
|
||||
are loaded.
|
||||
|
||||
Signed-off-by: Tony Camuso <tcamuso@redhat.com>
|
||||
|
||||
cc: Prarit Bhargava <prarit@redhat.com>
|
||||
cc: Brendan Conoboy <blc@redhat.com>
|
||||
cc: Jeff Bastian <jbastian@redhat.com>
|
||||
cc: Scott Herold <sherold@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Laura Abbott <labbott@redhat.com>
|
||||
Acked-by: Tony Camuso <tcamuso@redhat.com>
|
||||
Acked-by: Dean Nelson <dnelson@redhat.com>
|
||||
Acked-by: Jarod Wilson <jarod@redhat.com>
|
||||
Acked-by: Mark Salter <msalter@redhat.com>
|
||||
---
|
||||
drivers/char/ipmi/ipmi_dmi.c | 15 +++++++++++++++
|
||||
drivers/char/ipmi/ipmi_msghandler.c | 16 +++++++++++++++-
|
||||
2 files changed, 30 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c
|
||||
index bbf7029e224b..cf7faa970dd6 100644
|
||||
--- a/drivers/char/ipmi/ipmi_dmi.c
|
||||
+++ b/drivers/char/ipmi/ipmi_dmi.c
|
||||
@@ -215,6 +215,21 @@ static int __init scan_for_dmi_ipmi(void)
|
||||
{
|
||||
const struct dmi_device *dev = NULL;
|
||||
|
||||
+#ifdef CONFIG_ARM64
|
||||
+ /* RHEL-only
|
||||
+ * If this is ARM-based HPE m400, return now, because that platform
|
||||
+ * reports the host-side ipmi address as intel port-io space, which
|
||||
+ * does not exist in the ARM architecture.
|
||||
+ */
|
||||
+ const char *dmistr = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||
+
|
||||
+ if (dmistr && (strcmp("ProLiant m400 Server", dmistr) == 0)) {
|
||||
+ pr_debug("%s does not support host ipmi\n", dmistr);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ /* END RHEL-only */
|
||||
+#endif
|
||||
+
|
||||
while ((dev = dmi_find_device(DMI_DEV_TYPE_IPMI, NULL, dev)))
|
||||
dmi_decode_ipmi((const struct dmi_header *) dev->device_data);
|
||||
|
||||
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
|
||||
index 737c0b6b24ea..7901e780323b 100644
|
||||
--- a/drivers/char/ipmi/ipmi_msghandler.c
|
||||
+++ b/drivers/char/ipmi/ipmi_msghandler.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <linux/nospec.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/delay.h>
|
||||
+#include <linux/dmi.h>
|
||||
|
||||
#define IPMI_DRIVER_VERSION "39.2"
|
||||
|
||||
@@ -5153,8 +5154,21 @@ static int __init ipmi_init_msghandler_mod(void)
|
||||
{
|
||||
int rv;
|
||||
|
||||
- pr_info("version " IPMI_DRIVER_VERSION "\n");
|
||||
+#ifdef CONFIG_ARM64
|
||||
+ /* RHEL-only
|
||||
+ * If this is ARM-based HPE m400, return now, because that platform
|
||||
+ * reports the host-side ipmi address as intel port-io space, which
|
||||
+ * does not exist in the ARM architecture.
|
||||
+ */
|
||||
+ const char *dmistr = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||
|
||||
+ if (dmistr && (strcmp("ProLiant m400 Server", dmistr) == 0)) {
|
||||
+ pr_debug("%s does not support host ipmi\n", dmistr);
|
||||
+ return -ENOSYS;
|
||||
+ }
|
||||
+ /* END RHEL-only */
|
||||
+#endif
|
||||
+ pr_info("version " IPMI_DRIVER_VERSION "\n");
|
||||
mutex_lock(&ipmi_interfaces_mutex);
|
||||
rv = ipmi_register_driver();
|
||||
mutex_unlock(&ipmi_interfaces_mutex);
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,189 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Cline <jcline@redhat.com>
|
||||
Date: Tue, 23 Jul 2019 15:24:30 +0000
|
||||
Subject: [PATCH] kdump: add support for crashkernel=auto
|
||||
|
||||
Rebased for v5.3-rc1 because the documentation has moved.
|
||||
|
||||
Message-id: <20180604013831.574215750@redhat.com>
|
||||
Patchwork-id: 8166
|
||||
O-Subject: [kernel team] [PATCH RHEL8.0 V2 2/2] kdump: add support for crashkernel=auto
|
||||
Bugzilla: 1507353
|
||||
RH-Acked-by: Don Zickus <dzickus@redhat.com>
|
||||
RH-Acked-by: Baoquan He <bhe@redhat.com>
|
||||
RH-Acked-by: Pingfan Liu <piliu@redhat.com>
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1507353
|
||||
Build: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16534135
|
||||
Tested: ppc64le, x86_64 with several memory sizes.
|
||||
kdump qe tested 160M on various x86 machines in lab.
|
||||
|
||||
We continue to provide crashkernel=auto like we did in RHEL6
|
||||
and RHEL7, this will simplify the kdump deployment for common
|
||||
use cases that kdump just works with the auto reserved values.
|
||||
But this is still a best effort estimation, we can not know the
|
||||
exact memory requirement because it depends on a lot of different
|
||||
factors.
|
||||
|
||||
The implementation of crashkernel=auto is simplified as a wrapper
|
||||
to use below kernel cmdline:
|
||||
x86_64: crashkernel=1G-64G:160M,64G-1T:256M,1T-:512M
|
||||
s390x: crashkernel=4G-64G:160M,64G-1T:256M,1T-:512M
|
||||
arm64: crashkernel=2G-:512M
|
||||
ppc64: crashkernel=2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G
|
||||
|
||||
The difference between this way and the old implementation in
|
||||
RHEL6/7 is we do not scale the crash reserved memory size according
|
||||
to system memory size anymore.
|
||||
|
||||
Latest effort to move upstream is below thread:
|
||||
https://lkml.org/lkml/2018/5/20/262
|
||||
But unfortunately it is still unlikely to be accepted, thus we
|
||||
will still use a RHEL only patch in RHEL8.
|
||||
|
||||
Copied old patch description about the history reason see below:
|
||||
'''
|
||||
Non-upstream explanations:
|
||||
Besides "crashkenrel=X@Y" format, upstream also has advanced
|
||||
"crashkernel=range1:size1[,range2:size2,...][@offset]", and
|
||||
"crashkernel=X,high{low}" formats, but they need more careful
|
||||
manual configuration, and have different values for different
|
||||
architectures.
|
||||
|
||||
Most of the distributions use the standard "crashkernel=X@Y"
|
||||
upstream format, and use crashkernel range format for advanced
|
||||
scenarios, heavily relying on the user's involvement.
|
||||
|
||||
While "crashkernel=auto" is redhat's special feature, it exists
|
||||
and has been used as the default boot cmdline since 2008 rhel6.
|
||||
It does not require users to figure out how many crash memory
|
||||
size for their systems, also has been proved to be able to work
|
||||
pretty well for common scenarios.
|
||||
|
||||
"crashkernel=auto" was tested/based on rhel-related products, as
|
||||
we have stable kernel configurations which means more or less
|
||||
stable memory consumption. In 2014 we tried to post them again to
|
||||
upstream but NACKed by people because they think it's not general
|
||||
and unnecessary, users can specify their own values or do that by
|
||||
scripts. However our customers insist on having it added to rhel.
|
||||
|
||||
Also see one previous discussion related to this backport to Pegas:
|
||||
On 10/17/2016 at 10:15 PM, Don Zickus wrote:
|
||||
> On Fri, Oct 14, 2016 at 10:57:41AM +0800, Dave Young wrote:
|
||||
>> Don, agree with you we should evaluate them instead of just inherit
|
||||
>> them blindly. Below is what I think about kdump auto memory:
|
||||
>> There are two issues for crashkernel=auto in upstream:
|
||||
>> 1) It will be seen as a policy which should not go to kernel
|
||||
>> 2) It is hard to get a good number for the crash reserved size,
|
||||
>> considering various different kernel config options one can setups.
|
||||
>> In RHEL we are easier because our supported Kconfig is limited.
|
||||
>> I digged the upstream mail archive, but I'm not sure I got all the
|
||||
>> information, at least Michael Ellerman was objecting the series for
|
||||
>> 1).
|
||||
> Yes, I know. Vivek and I have argued about this for years. :-)
|
||||
>
|
||||
> I had hoped all the changes internally to the makedumpfile would allow
|
||||
> the memory configuration to stabilize at a number like 192M or 128M and
|
||||
> only in the rare cases extend beyond that.
|
||||
>
|
||||
> So I always treated that as a temporary hack until things were better.
|
||||
> With the hope of every new RHEL release we get smarter and better. :-)
|
||||
> Ideally it would be great if we could get the number down to 64M for most
|
||||
> cases and just turn it on in Fedora. Maybe someday.... ;-)
|
||||
>
|
||||
> We can have this conversation when the patch gets reposted/refreshed
|
||||
> for upstream on rhkl?
|
||||
>
|
||||
> Cheers,
|
||||
> Don
|
||||
|
||||
We had proposed to drop the historic crashkernel=auto code and move
|
||||
to use crashkernel=range:size format and pass them in anaconda.
|
||||
|
||||
The initial reason is crashkernel=range:size works just fine because
|
||||
we do not need complex algorithm to scale crashkernel reserved size
|
||||
any more. The old linear scaling is mainly for old makedumpfile
|
||||
requirements, now it is not necessary.
|
||||
|
||||
But With the new approach, backward compatibility is potentially at risk.
|
||||
For e.g. let's consider the following cases:
|
||||
1) When we upgrade from an older distribution like rhel-alt-7.4(which
|
||||
uses crashkernel=auto) to rhel-alt-7.5 (which uses the crashkernel=xY
|
||||
format)
|
||||
In this case we can use anaconda scripts for checking
|
||||
'crashkernel=auto' in kernel spec and update to the new
|
||||
'crashkernel=range:size' format.
|
||||
2) When we upgrade from rhel-alt-7.5(which uses crashkernel=xY format)
|
||||
to rhel-alt-7.6(which uses crashkernel=xY format), but the x and/or Y
|
||||
values are changed in rhel-alt-7.6.
|
||||
For example from crashkernel=2G-:160M to crashkernel=2G-:192M, then we have
|
||||
no way to determine if the X and/or Y values were distribution
|
||||
provided or user specified ones.
|
||||
Since it is recommended to give precedence to user-specified values,
|
||||
so we cannot do an upgrade in such a case."
|
||||
|
||||
Thus turn back to resolve it in kernel, and add a simpler version
|
||||
which just hacks to use the range:size style in code, and make
|
||||
rhel-only code easily to maintain.
|
||||
'''
|
||||
|
||||
Signed-off-by: Dave Young <dyoung@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
Documentation/admin-guide/kdump/kdump.rst | 11 +++++++++++
|
||||
kernel/crash_core.c | 14 ++++++++++++++
|
||||
2 files changed, 25 insertions(+)
|
||||
|
||||
diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst
|
||||
index 2da65fef2a1c..d53a524f80f0 100644
|
||||
--- a/Documentation/admin-guide/kdump/kdump.rst
|
||||
+++ b/Documentation/admin-guide/kdump/kdump.rst
|
||||
@@ -285,6 +285,17 @@ This would mean:
|
||||
2) if the RAM size is between 512M and 2G (exclusive), then reserve 64M
|
||||
3) if the RAM size is larger than 2G, then reserve 128M
|
||||
|
||||
+Or you can use crashkernel=auto if you have enough memory. The threshold
|
||||
+is 2G on x86_64, arm64, ppc64 and ppc64le. The threshold is 4G for s390x.
|
||||
+If your system memory is less than the threshold crashkernel=auto will not
|
||||
+reserve memory.
|
||||
+
|
||||
+The automatically reserved memory size varies based on architecture.
|
||||
+The size changes according to system memory size like below:
|
||||
+ x86_64: 1G-64G:160M,64G-1T:256M,1T-:512M
|
||||
+ s390x: 4G-64G:160M,64G-1T:256M,1T-:512M
|
||||
+ arm64: 2G-:512M
|
||||
+ ppc64: 2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G
|
||||
|
||||
|
||||
Boot into System Kernel
|
||||
diff --git a/kernel/crash_core.c b/kernel/crash_core.c
|
||||
index e4dfe2a05a31..8c6f59932247 100644
|
||||
--- a/kernel/crash_core.c
|
||||
+++ b/kernel/crash_core.c
|
||||
@@ -258,6 +258,20 @@ static int __init __parse_crashkernel(char *cmdline,
|
||||
if (suffix)
|
||||
return parse_crashkernel_suffix(ck_cmdline, crash_size,
|
||||
suffix);
|
||||
+
|
||||
+ if (strncmp(ck_cmdline, "auto", 4) == 0) {
|
||||
+#ifdef CONFIG_X86_64
|
||||
+ ck_cmdline = "1G-64G:160M,64G-1T:256M,1T-:512M";
|
||||
+#elif defined(CONFIG_S390)
|
||||
+ ck_cmdline = "4G-64G:160M,64G-1T:256M,1T-:512M";
|
||||
+#elif defined(CONFIG_ARM64)
|
||||
+ ck_cmdline = "2G-:512M";
|
||||
+#elif defined(CONFIG_PPC64)
|
||||
+ ck_cmdline = "2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G";
|
||||
+#endif
|
||||
+ pr_info("Using crashkernel=auto, the size choosed is a best effort estimation.\n");
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* if the commandline contains a ':', then that's the extended
|
||||
* syntax -- if not, it must be the classic syntax
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Young <dyoung@redhat.com>
|
||||
Date: Tue, 12 Jun 2018 00:54:22 -0400
|
||||
Subject: [PATCH] kdump: fix a grammar issue in a kernel message
|
||||
|
||||
Message-id: <20180612005422.GA2568@dhcp-128-65.nay.redhat.com>
|
||||
Patchwork-id: 8201
|
||||
O-Subject: [kernel team] [RHEL8.0 PATCH V2] kdump: fix a grammar issue in a kernel message
|
||||
Bugzilla: 1507353
|
||||
RH-Acked-by: Myron Stowe <mstowe@redhat.com>
|
||||
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
||||
RH-Acked-by: Jiri Benc <jbenc@redhat.com>
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1507353
|
||||
Upstream Status: RHEL-only as crashkernel=auto is not accepted in upstream
|
||||
Build: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16661950
|
||||
Test: verified on a kvm guest
|
||||
|
||||
s/choosed/chosen
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Dave Young <dyoung@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
---
|
||||
kernel/crash_core.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/crash_core.c b/kernel/crash_core.c
|
||||
index 8c6f59932247..598d8324f51a 100644
|
||||
--- a/kernel/crash_core.c
|
||||
+++ b/kernel/crash_core.c
|
||||
@@ -269,7 +269,7 @@ static int __init __parse_crashkernel(char *cmdline,
|
||||
#elif defined(CONFIG_PPC64)
|
||||
ck_cmdline = "2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G";
|
||||
#endif
|
||||
- pr_info("Using crashkernel=auto, the size choosed is a best effort estimation.\n");
|
||||
+ pr_info("Using crashkernel=auto, the size chosen is a best effort estimation.\n");
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Young <dyoung@redhat.com>
|
||||
Date: Mon, 4 Jun 2018 01:38:25 -0400
|
||||
Subject: [PATCH] kdump: round up the total memory size to 128M for crashkernel
|
||||
reservation
|
||||
|
||||
Message-id: <20180604013831.523644967@redhat.com>
|
||||
Patchwork-id: 8165
|
||||
O-Subject: [kernel team] [PATCH RHEL8.0 V2 1/2] kdump: round up the total memory size to 128M for crashkernel reservation
|
||||
Bugzilla: 1507353
|
||||
RH-Acked-by: Don Zickus <dzickus@redhat.com>
|
||||
RH-Acked-by: Baoquan He <bhe@redhat.com>
|
||||
RH-Acked-by: Pingfan Liu <piliu@redhat.com>
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1507353
|
||||
Build: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16534135
|
||||
Tested: ppc64le, x86_64 with several memory sizes.
|
||||
|
||||
The total memory size we get in kernel is usually slightly less than 2G with
|
||||
2G memory module machine. The main reason is bios/firmware reserve some area
|
||||
it will not export all memory as usable to Linux.
|
||||
|
||||
2G memory X86 kvm guest test result of the total_mem value:
|
||||
UEFI boot with ovmf: 0x7ef10000
|
||||
Legacy boot kvm guest: 0x7ff7cc00
|
||||
This is also a problem on arm64 UEFI booted system according to my test.
|
||||
|
||||
Thus for example crashkernel=1G-2G:128M, if we have a 1G memory
|
||||
machine, we get total size 1023M from firmware then it will not fall
|
||||
into 1G-2G thus no memory reserved. User will never know that, it is
|
||||
hard to let user to know the exact total value we get in kernel
|
||||
|
||||
An option is to use dmi/smbios to get physical memory size, but it's not
|
||||
reliable as well. According to Prarit hardware vendors sometimes screw this up.
|
||||
Thus round up total size to 128M to workaround this problem.
|
||||
|
||||
Posted below patch in upstream, but no response yet:
|
||||
http://lists.infradead.org/pipermail/kexec/2018-April/020568.html
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Dave Young <dyoung@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
---
|
||||
kernel/crash_core.c | 14 ++++++++++++--
|
||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kernel/crash_core.c b/kernel/crash_core.c
|
||||
index 18175687133a..e4dfe2a05a31 100644
|
||||
--- a/kernel/crash_core.c
|
||||
+++ b/kernel/crash_core.c
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <linux/crash_core.h>
|
||||
#include <linux/utsname.h>
|
||||
#include <linux/vmalloc.h>
|
||||
+#include <linux/sizes.h>
|
||||
|
||||
#include <asm/page.h>
|
||||
#include <asm/sections.h>
|
||||
@@ -39,6 +40,15 @@ static int __init parse_crashkernel_mem(char *cmdline,
|
||||
unsigned long long *crash_base)
|
||||
{
|
||||
char *cur = cmdline, *tmp;
|
||||
+ unsigned long long total_mem = system_ram;
|
||||
+
|
||||
+ /*
|
||||
+ * Firmware sometimes reserves some memory regions for it's own use.
|
||||
+ * so we get less than actual system memory size.
|
||||
+ * Workaround this by round up the total size to 128M which is
|
||||
+ * enough for most test cases.
|
||||
+ */
|
||||
+ total_mem = roundup(total_mem, SZ_128M);
|
||||
|
||||
/* for each entry of the comma-separated list */
|
||||
do {
|
||||
@@ -83,13 +93,13 @@ static int __init parse_crashkernel_mem(char *cmdline,
|
||||
return -EINVAL;
|
||||
}
|
||||
cur = tmp;
|
||||
- if (size >= system_ram) {
|
||||
+ if (size >= total_mem) {
|
||||
pr_warn("crashkernel: invalid size\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* match ? */
|
||||
- if (system_ram >= start && system_ram < end) {
|
||||
+ if (total_mem >= start && total_mem < end) {
|
||||
*crash_size = size;
|
||||
break;
|
||||
}
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Murphy Zhou <jencce.kernel@gmail.com>
|
||||
Date: Sun, 29 Sep 2019 17:56:59 +0800
|
||||
Subject: [PATCH] mm/kmemleak: skip late_init if not skip disable
|
||||
|
||||
Now if DEFAULT_OFF set to y, kmemleak_init will start the cleanup_work
|
||||
workqueue. Then late_init call will set kmemleak_initialized to 1, the
|
||||
cleaup workqueue will try to do cleanup, triggering:
|
||||
|
||||
[24.738773] ==================================================================
|
||||
[24.742784] BUG: KASAN: global-out-of-bounds in __kmemleak_do_cleanup+0x166/0x180
|
||||
[24.744144] Key type ._fscrypt registered
|
||||
[24.745680] Read of size 8 at addr ffffffff88746c90 by task kworker/3:1/171
|
||||
[24.745687]
|
||||
[24.745697] CPU: 3 PID: 171 Comm: kworker/3:1 Not tainted 5.3.0-v5.3-12475-gcbafe18 #1
|
||||
[24.745701] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
|
||||
[24.745710] Workqueue: events kmemleak_do_cleanup
|
||||
[24.745717] Call Trace:
|
||||
[24.745736] dump_stack+0x7c/0xc0
|
||||
[24.745755] print_address_description.constprop.4+0x1f/0x300
|
||||
[24.751562] Key type .fscrypt registered
|
||||
[24.754370] __kasan_report.cold.8+0x76/0xb2
|
||||
[24.754388] ? __kmemleak_do_cleanup+0x166/0x180
|
||||
[24.754407] kasan_report+0xe/0x20
|
||||
[24.778543] __kmemleak_do_cleanup+0x166/0x180
|
||||
[24.780795] process_one_work+0x919/0x17d0
|
||||
[24.782929] ? pwq_dec_nr_in_flight+0x320/0x320
|
||||
[24.785092] worker_thread+0x87/0xb40
|
||||
[24.786948] ? __kthread_parkme+0xc3/0x190
|
||||
[24.789217] ? process_one_work+0x17d0/0x17d0
|
||||
[24.791414] kthread+0x333/0x3f0
|
||||
[24.793031] ? kthread_create_worker_on_cpu+0xc0/0xc0
|
||||
[24.795473] ret_from_fork+0x3a/0x50
|
||||
[24.797303]
|
||||
[24.798091] The buggy address belongs to the variable:
|
||||
[24.800634] mem_pool_free_count+0x10/0x40
|
||||
[24.802656]
|
||||
[24.803434] Memory state around the buggy address:
|
||||
[24.805793] ffffffff88746b80: 04 fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
|
||||
[24.809177] ffffffff88746c00: 00 fa fa fa fa fa fa fa 00 00 fa fa fa fa fa fa
|
||||
[24.812407] >ffffffff88746c80: 04 fa fa fa fa fa fa fa 00 00 fa fa fa fa fa fa
|
||||
[24.815638] ^
|
||||
[24.817372] ffffffff88746d00: 00 00 fa fa fa fa fa fa 00 00 00 00 00 00 00 00
|
||||
[24.820740] ffffffff88746d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
[24.824021] ==================================================================
|
||||
|
||||
Fixes: c5665868183f ("mm: kmemleak: use the memory pool for early allocations")
|
||||
Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com>
|
||||
---
|
||||
mm/kmemleak.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
|
||||
index e362dc3d2028..0c3dfb8eef67 100644
|
||||
--- a/mm/kmemleak.c
|
||||
+++ b/mm/kmemleak.c
|
||||
@@ -1958,6 +1958,11 @@ void __init kmemleak_init(void)
|
||||
*/
|
||||
static int __init kmemleak_late_init(void)
|
||||
{
|
||||
+ if (!kmemleak_skip_disable) {
|
||||
+ kmemleak_disable();
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
kmemleak_initialized = 1;
|
||||
|
||||
debugfs_create_file("kmemleak", 0644, NULL, NULL, &kmemleak_fops);
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Cline <jcline@redhat.com>
|
||||
Date: Wed, 30 Oct 2019 14:37:49 +0000
|
||||
Subject: [PATCH] s390: Lock down the kernel when the IPL secure flag is set
|
||||
|
||||
Automatically lock down the kernel to LOCKDOWN_CONFIDENTIALITY_MAX if
|
||||
the IPL secure flag is set.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Suggested-by: Philipp Rudo <prudo@redhat.com>
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
arch/s390/include/asm/ipl.h | 1 +
|
||||
arch/s390/kernel/ipl.c | 5 +++++
|
||||
arch/s390/kernel/setup.c | 4 ++++
|
||||
3 files changed, 10 insertions(+)
|
||||
|
||||
diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h
|
||||
index 7d5cfdda5277..be66ee5d0437 100644
|
||||
--- a/arch/s390/include/asm/ipl.h
|
||||
+++ b/arch/s390/include/asm/ipl.h
|
||||
@@ -120,6 +120,7 @@ int ipl_report_add_component(struct ipl_report *report, struct kexec_buf *kbuf,
|
||||
unsigned char flags, unsigned short cert);
|
||||
int ipl_report_add_certificate(struct ipl_report *report, void *key,
|
||||
unsigned long addr, unsigned long len);
|
||||
+bool ipl_get_secureboot(void);
|
||||
|
||||
/*
|
||||
* DIAG 308 support
|
||||
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
|
||||
index 90a2a17239b0..be3b72c53656 100644
|
||||
--- a/arch/s390/kernel/ipl.c
|
||||
+++ b/arch/s390/kernel/ipl.c
|
||||
@@ -2110,3 +2110,8 @@ int ipl_report_free(struct ipl_report *report)
|
||||
}
|
||||
|
||||
#endif
|
||||
+
|
||||
+bool ipl_get_secureboot(void)
|
||||
+{
|
||||
+ return !!ipl_secure_flag;
|
||||
+}
|
||||
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
|
||||
index e600f6953d7c..4264e01824b3 100644
|
||||
--- a/arch/s390/kernel/setup.c
|
||||
+++ b/arch/s390/kernel/setup.c
|
||||
@@ -49,6 +49,7 @@
|
||||
#include <linux/memory.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/start_kernel.h>
|
||||
+#include <linux/security.h>
|
||||
|
||||
#include <asm/boot_data.h>
|
||||
#include <asm/ipl.h>
|
||||
@@ -1085,6 +1086,9 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
||||
log_component_list();
|
||||
|
||||
+ if (ipl_get_secureboot())
|
||||
+ security_lock_kernel_down("Secure IPL mode", LOCKDOWN_INTEGRITY_MAX);
|
||||
+
|
||||
/* Have one command line that is parsed and saved in /proc/cmdline */
|
||||
/* boot_command_line has been already set up in early.c */
|
||||
*cmdline_p = boot_command_line;
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Don Brace <dbrace@redhat.com>
|
||||
Date: Mon, 16 Jul 2018 19:20:41 -0400
|
||||
Subject: [PATCH] scsi: smartpqi: add inspur advantech ids
|
||||
|
||||
Message-id: <1531768843-2544-4-git-send-email-dbrace@redhat.com>
|
||||
Patchwork-id: 224988
|
||||
O-Subject: [RHEL 8.0 e-stor V2 PATCH 3/5] scsi: smartpqi: add inspur advantech ids
|
||||
Bugzilla: 1503736
|
||||
RH-Acked-by: Ewan Milne <emilne@redhat.com>
|
||||
RH-Acked-by: Tomas Henzl <thenzl@redhat.com>
|
||||
|
||||
From: Kevin Barnett <kevin.barnett@microsemi.com>
|
||||
|
||||
Add support for these new device IDs:
|
||||
|
||||
Advantech MIC-8312BridgeB
|
||||
INSPUR PM8204-2GB
|
||||
INSPUR PM8204-4GB
|
||||
INSPUR PM8222-SHBA
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
|
||||
Signed-off-by: Kevin Barnett <kevin.barnett@microsemi.com>
|
||||
Signed-off-by: Don Brace <don.brace@microsemi.com>
|
||||
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
(cherry picked from commit 9f8d05fa98442de78d1ab30235b0cc656ed7aff0)
|
||||
Signed-off-by: Don Brace <dbrace@redhat.com>
|
||||
Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
|
||||
---
|
||||
drivers/scsi/smartpqi/smartpqi_init.c | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
|
||||
index bd38c8cea56e..477eb841d4e5 100644
|
||||
--- a/drivers/scsi/smartpqi/smartpqi_init.c
|
||||
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
|
||||
@@ -8251,6 +8251,18 @@ static const struct pci_device_id pqi_pci_id_table[] = {
|
||||
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
|
||||
0x19e5, 0xd22c)
|
||||
},
|
||||
+ {
|
||||
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
|
||||
+ 0x1bd4, 0x004a)
|
||||
+ },
|
||||
+ {
|
||||
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
|
||||
+ 0x1bd4, 0x004b)
|
||||
+ },
|
||||
+ {
|
||||
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
|
||||
+ 0x1bd4, 0x004c)
|
||||
+ },
|
||||
{
|
||||
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
|
||||
PCI_VENDOR_ID_ADAPTEC2, 0x0110)
|
||||
@@ -8387,6 +8399,10 @@ static const struct pci_device_id pqi_pci_id_table[] = {
|
||||
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
|
||||
PCI_VENDOR_ID_ADVANTECH, 0x8312)
|
||||
},
|
||||
+ {
|
||||
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
|
||||
+ PCI_VENDOR_ID_ADVANTECH, 0x8312)
|
||||
+ },
|
||||
{
|
||||
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
|
||||
PCI_VENDOR_ID_DELL, 0x1fe0)
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Cline <jcline@redhat.com>
|
||||
Date: Mon, 30 Sep 2019 21:22:47 +0000
|
||||
Subject: [PATCH] security: lockdown: expose a hook to lock the kernel down
|
||||
|
||||
In order to automatically lock down kernels running on UEFI machines
|
||||
booted in Secure Boot mode, expose the lock_kernel_down() hook.
|
||||
|
||||
Upstream Status: RHEL only
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
include/linux/lsm_hook_defs.h | 2 ++
|
||||
include/linux/lsm_hooks.h | 6 ++++++
|
||||
include/linux/security.h | 5 +++++
|
||||
security/lockdown/lockdown.c | 1 +
|
||||
security/security.c | 6 ++++++
|
||||
5 files changed, 20 insertions(+)
|
||||
|
||||
diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
|
||||
index 2a8c74d99015..0d3129588b78 100644
|
||||
--- a/include/linux/lsm_hook_defs.h
|
||||
+++ b/include/linux/lsm_hook_defs.h
|
||||
@@ -383,6 +383,8 @@ LSM_HOOK(void, LSM_RET_VOID, bpf_prog_free_security, struct bpf_prog_aux *aux)
|
||||
#endif /* CONFIG_BPF_SYSCALL */
|
||||
|
||||
LSM_HOOK(int, 0, locked_down, enum lockdown_reason what)
|
||||
+LSM_HOOK(int, 0, lock_kernel_down, const char *where, enum lockdown_reason level)
|
||||
+
|
||||
|
||||
#ifdef CONFIG_PERF_EVENTS
|
||||
LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type)
|
||||
diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h
|
||||
index 9e2e3e63719d..317660f68b4f 100644
|
||||
--- a/include/linux/lsm_hooks.h
|
||||
+++ b/include/linux/lsm_hooks.h
|
||||
@@ -1507,6 +1507,12 @@
|
||||
*
|
||||
* @what: kernel feature being accessed
|
||||
*
|
||||
+ * @lock_kernel_down
|
||||
+ * Put the kernel into lock-down mode.
|
||||
+ *
|
||||
+ * @where: Where the lock-down is originating from (e.g. command line option)
|
||||
+ * @level: The lock-down level (can only increase)
|
||||
+ *
|
||||
* Security hooks for perf events
|
||||
*
|
||||
* @perf_event_open:
|
||||
diff --git a/include/linux/security.h b/include/linux/security.h
|
||||
index 0a0a03b36a3b..26869f44416b 100644
|
||||
--- a/include/linux/security.h
|
||||
+++ b/include/linux/security.h
|
||||
@@ -451,6 +451,7 @@ int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen);
|
||||
int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen);
|
||||
int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen);
|
||||
int security_locked_down(enum lockdown_reason what);
|
||||
+int security_lock_kernel_down(const char *where, enum lockdown_reason level);
|
||||
#else /* CONFIG_SECURITY */
|
||||
|
||||
static inline int call_blocking_lsm_notifier(enum lsm_event event, void *data)
|
||||
@@ -1291,6 +1292,10 @@ static inline int security_locked_down(enum lockdown_reason what)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
+static inline int security_lock_kernel_down(const char *where, enum lockdown_reason level)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
#endif /* CONFIG_SECURITY */
|
||||
|
||||
#if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE)
|
||||
diff --git a/security/lockdown/lockdown.c b/security/lockdown/lockdown.c
|
||||
index 87cbdc64d272..18555cf18da7 100644
|
||||
--- a/security/lockdown/lockdown.c
|
||||
+++ b/security/lockdown/lockdown.c
|
||||
@@ -73,6 +73,7 @@ static int lockdown_is_locked_down(enum lockdown_reason what)
|
||||
|
||||
static struct security_hook_list lockdown_hooks[] __lsm_ro_after_init = {
|
||||
LSM_HOOK_INIT(locked_down, lockdown_is_locked_down),
|
||||
+ LSM_HOOK_INIT(lock_kernel_down, lock_kernel_down),
|
||||
};
|
||||
|
||||
static int __init lockdown_lsm_init(void)
|
||||
diff --git a/security/security.c b/security/security.c
|
||||
index 70a7ad357bc6..23e16e773bc2 100644
|
||||
--- a/security/security.c
|
||||
+++ b/security/security.c
|
||||
@@ -2516,6 +2516,12 @@ int security_locked_down(enum lockdown_reason what)
|
||||
}
|
||||
EXPORT_SYMBOL(security_locked_down);
|
||||
|
||||
+int security_lock_kernel_down(const char *where, enum lockdown_reason level)
|
||||
+{
|
||||
+ return call_int_hook(lock_kernel_down, 0, where, level);
|
||||
+}
|
||||
+EXPORT_SYMBOL(security_lock_kernel_down);
|
||||
+
|
||||
#ifdef CONFIG_PERF_EVENTS
|
||||
int security_perf_event_open(struct perf_event_attr *attr, int type)
|
||||
{
|
||||
--
|
||||
2.28.0
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From bb421e23b49e39c117a31f7c07df83cddd0d96dc Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Mon, 26 Oct 2020 17:01:57 +0000
|
||||
Subject: [PATCH 1/2] update phy on pine64 a64 devices
|
||||
|
||||
---
|
||||
arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 2 +-
|
||||
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||
index 2165f238af13..9741fb5caa6f 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||
@@ -81,7 +81,7 @@ &ehci1 {
|
||||
&emac {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rmii_pins>;
|
||||
- phy-mode = "rmii";
|
||||
+ phy-mode = "rmii-txid";
|
||||
phy-handle = <&ext_rmii_phy1>;
|
||||
phy-supply = <®_dc1sw>;
|
||||
status = "okay";
|
||||
--
|
||||
2.28.0
|
||||
|
50
Makefile
50
Makefile
|
@ -1,50 +0,0 @@
|
|||
# Makefile for source rpm: kernel
|
||||
SPECFILE := kernel.spec
|
||||
|
||||
# we only check the .sign signatures
|
||||
UPSTREAM_CHECKS = sign
|
||||
|
||||
.PHONY: help
|
||||
help:
|
||||
%:
|
||||
@echo "Try fedpkg $@ or something like that"
|
||||
@exit 1
|
||||
|
||||
prep: config-files
|
||||
fedpkg -v prep
|
||||
|
||||
noarch:
|
||||
fedpkg -v local --arch=noarch
|
||||
|
||||
# 'make local' also needs to build the noarch firmware package
|
||||
local:
|
||||
fedpkg -v local
|
||||
|
||||
extremedebug:
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_PAGEALLOC is not set/CONFIG_DEBUG_PAGEALLOC=y/' config-nodebug
|
||||
|
||||
config-files:
|
||||
@./build_configs.sh
|
||||
|
||||
debug:
|
||||
@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
|
||||
@rpmdev-bumpspec -c "Reenable debugging options." kernel.spec
|
||||
|
||||
release:
|
||||
@perl -pi -e 's/^%define debugbuildsenabled 0/%define debugbuildsenabled 1/' kernel.spec
|
||||
@rpmdev-bumpspec -c "Disable debugging options." kernel.spec
|
||||
|
||||
nodebuginfo:
|
||||
@perl -pi -e 's/^%define with_debuginfo %\{\?_without_debuginfo: 0\} %\{\?\!_without_debuginfo: 1\}/%define with_debuginfo %\{\?_without_debuginfo: 0\} %\{\?\!_without_debuginfo: 0\}/' kernel.spec
|
||||
|
||||
nodebug: release
|
||||
@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
|
||||
|
||||
ifeq ($(MAKECMDGOALS),me a sandwich)
|
||||
.PHONY: me a sandwich
|
||||
me a:
|
||||
@:
|
||||
|
||||
sandwich:
|
||||
@[ `id -u` -ne 0 ] && echo "What? Make it yourself." || echo Okay.
|
||||
endif
|
|
@ -12,7 +12,7 @@ RHEL_MINOR = 99
|
|||
#
|
||||
# Use this spot to avoid future merge conflicts.
|
||||
# Do not trim this comment.
|
||||
RHEL_RELEASE = 1
|
||||
RHEL_RELEASE = 9
|
||||
|
||||
#
|
||||
# Early y+1 numbering
|
||||
|
|
98
Patchlist
98
Patchlist
|
@ -1,98 +0,0 @@
|
|||
0001-initial-commit-Add-Red-Hat-variables-in-the-top-leve.patch
|
||||
0001-Pull-the-RHEL-version-defines-out-of-the-Makefile.patch
|
||||
0001-Introduce-CONFIG_RH_DISABLE_DEPRECATED.patch
|
||||
0001-Add-Red-Hat-tainting.patch
|
||||
0001-ACPI-APEI-arm64-Ignore-broken-HPE-moonshot-APEI-supp.patch
|
||||
0001-modules-add-rhelversion-MODULE_INFO-tag.patch
|
||||
0001-ACPI-irq-Workaround-firmware-issue-on-X-Gene-based-m.patch
|
||||
0001-aarch64-acpi-scan-Fix-regression-related-to-X-Gene-U.patch
|
||||
0001-acpi-prefer-booting-with-ACPI-over-DTS.patch
|
||||
0001-kdump-round-up-the-total-memory-size-to-128M-for-cra.patch
|
||||
0001-kdump-add-support-for-crashkernel-auto.patch
|
||||
0001-put-RHEL-info-into-generated-headers.patch
|
||||
0001-tags.sh-Ignore-redhat-rpm.patch
|
||||
0001-kdump-fix-a-grammar-issue-in-a-kernel-message.patch
|
||||
0001-add-Red-Hat-specific-taint-flags.patch
|
||||
0001-bpf-set-unprivileged_bpf_disabled-to-1-by-default-ad.patch
|
||||
0001-bpf-Add-tech-preview-taint-for-syscall.patch
|
||||
0001-Vulcan-AHCI-PCI-bar-fix-for-Broadcom-Vulcan-early-si.patch
|
||||
0001-ahci-thunderx2-Fix-for-errata-that-affects-stop-engi.patch
|
||||
0001-add-pci_hw_vendor_status.patch
|
||||
0001-kABI-Add-generic-kABI-macros-to-use-for-kABI-workaro.patch
|
||||
0001-ice-mark-driver-as-tech-preview.patch
|
||||
0001-scsi-smartpqi-add-inspur-advantech-ids.patch
|
||||
0001-IB-rxe-Mark-Soft-RoCE-Transport-driver-as-tech-previ.patch
|
||||
0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch
|
||||
0001-rh_kabi-introduce-RH_KABI_EXCLUDE.patch
|
||||
0001-iommu-arm-smmu-workaround-DMA-mode-issues.patch
|
||||
0001-arm-aarch64-Drop-the-EXPERT-setting-from-ARM64_FORCE.patch
|
||||
0001-Add-support-for-deprecating-processors.patch
|
||||
0001-Add-efi_status_to_str-and-rework-efi_status_to_err.patch
|
||||
0001-Make-get_cert_list-use-efi_status_to_str-to-print-er.patch
|
||||
0001-security-lockdown-expose-a-hook-to-lock-the-kernel-d.patch
|
||||
0001-efi-Add-an-EFI_SECURE_BOOT-flag-to-indicate-secure-b.patch
|
||||
0001-efi-Lock-down-the-kernel-if-booted-in-secure-boot-mo.patch
|
||||
0001-s390-Lock-down-the-kernel-when-the-IPL-secure-flag-i.patch
|
||||
0001-Add-option-of-13-for-FORCE_MAX_ZONEORDER.patch
|
||||
0001-Rename-RH_DISABLE_DEPRECATED-to-RHEL_DIFFERENCES.patch
|
||||
0001-kernel-add-SUPPORT_REMOVED-kernel-taint.patch
|
||||
0001-mpt-remove-certain-deprecated-pci-ids.patch
|
||||
0001-megaraid_sas-remove-deprecated-pci-ids.patch
|
||||
0001-aacraid-Remove-depreciated-device-and-vendor-PCI-id-.patch
|
||||
0001-qla4xxx-Remove-deprecated-PCI-IDs-from-RHEL-8.patch
|
||||
0001-hpsa-remove-old-cciss-based-smartarray-pci-ids.patch
|
||||
0001-mptspi-Taint-kernel-if-mptspi-is-loaded.patch
|
||||
0001-be2iscsi-remove-unsupported-device-IDs.patch
|
||||
0001-qla2xxx-Remove-PCI-IDs-of-deprecated-adapter.patch
|
||||
0001-mptspi-pci-id-table-changes.patch
|
||||
0001-mptsas-Taint-kernel-if-mptsas-is-loaded.patch
|
||||
0001-mptsas-pci-id-table-changes.patch
|
||||
0001-Removing-Obsolete-hba-pci-ids-from-rhel8.patch
|
||||
0001-redhat-rh_kabi-Add-macros-to-size-and-extend-structs.patch
|
||||
0001-redhat-rh_kabi-Fix-RH_KABI_SET_SIZE-to-use-dereferen.patch
|
||||
0001-redhat-rh_kabi-Indirect-EXTEND-macros-so-nesting-of-.patch
|
||||
0001-redhat-rh_kabi-introduce-RH_KABI_EXTEND_WITH_SIZE.patch
|
||||
0001-redhat-rh_kabi-add-a-comment-with-warning-about-RH_K.patch
|
||||
0001-redhat-rh_kabi-deduplication-friendly-structs.patch
|
||||
0001-arm-make-CONFIG_HIGHPTE-optional-without-CONFIG_EXPE.patch
|
||||
0001-ARM-tegra-usb-no-reset.patch
|
||||
0001-dt-bindings-Add-doc-for-Pine64-Pinebook-Pro.patch
|
||||
0001-Input-rmi4-remove-the-need-for-artificial-IRQ-in-cas.patch
|
||||
0001-Drop-that-for-now.patch
|
||||
0001-KEYS-Make-use-of-platform-keyring-for-module-signatu.patch
|
||||
0001-mm-kmemleak-skip-late_init-if-not-skip-disable.patch
|
||||
0001-ARM-fix-__get_user_check-in-case-uaccess_-calls-are-.patch
|
||||
0001-dt-bindings-panel-add-binding-for-Xingbangda-XBD599-.patch
|
||||
0001-drm-panel-add-Xingbangda-XBD599-panel.patch
|
||||
0001-drm-sun4i-sun6i_mipi_dsi-fix-horizontal-timing-calcu.patch
|
||||
0001-arm64-allwinner-dts-a64-add-LCD-related-device-nodes.patch
|
||||
0001-e1000e-bump-up-timeout-to-wait-when-ME-un-configure-.patch
|
||||
0001-x86-Fix-compile-issues-with-rh_check_supported.patch
|
||||
0001-virt-vbox-Rename-guest_caps-struct-members-to-set_gu.patch
|
||||
0001-virt-vbox-Add-vbg_set_host_capabilities-helper-funct.patch
|
||||
0001-virt-vbox-Add-support-for-the-new-VBG_IOCTL_ACQUIRE_.patch
|
||||
0001-virt-vbox-Add-a-few-new-vmmdev-request-types-to-the-.patch
|
||||
0001-virt-vbox-Log-unknown-ioctl-requests-as-error.patch
|
||||
0001-PCI-tegra-Revert-raw_violation_fixup-for-tegra124.patch
|
||||
0001-redhat-Replace-hardware.redhat.com-link-in-Unsupport.patch
|
||||
0001-arch-x86-Remove-vendor-specific-CPU-ID-checks.patch
|
||||
0001-Revert-dt-bindings-Add-doc-for-Pine64-Pinebook-Pro.patch
|
||||
0001-Fixes-acpi-prefer-booting-with-ACPI-over-DTS-to-be-R.patch
|
||||
0001-selinux-allow-reading-labels-before-policy-is-loaded.patch
|
||||
0001-Revert-dt-bindings-panel-add-binding-for-Xingbangda-.patch
|
||||
0001-Revert-drm-panel-add-Xingbangda-XBD599-panel.patch
|
||||
0001-Revert-drm-sun4i-sun6i_mipi_dsi-fix-horizontal-timin.patch
|
||||
0001-Revert-arm64-allwinner-dts-a64-add-LCD-related-devic.patch
|
||||
0001-dt-bindings-vendor-prefixes-Add-Xingbangda.patch
|
||||
0001-dt-bindings-panel-Convert-rocktech-jh057n00900-to-ya.patch
|
||||
0001-dt-bindings-panel-Add-compatible-for-Xingbangda-XBD5.patch
|
||||
0001-drm-panel-rocktech-jh057n00900-Rename-the-driver-to-.patch
|
||||
0001-drm-panel-st7703-Rename-functions-from-jh057n-prefix.patch
|
||||
0001-drm-panel-st7703-Prepare-for-supporting-multiple-pan.patch
|
||||
0001-drm-panel-st7703-Move-code-specific-to-jh057n-closer.patch
|
||||
0001-drm-panel-st7703-Move-generic-part-of-init-sequence-.patch
|
||||
0001-drm-panel-st7703-Add-support-for-Xingbangda-XBD599.patch
|
||||
0001-drm-panel-st7703-Enter-sleep-after-display-off.patch
|
||||
0001-drm-panel-st7703-Assert-reset-prior-to-powering-down.patch
|
||||
0001-arm64-dts-sun50i-a64-pinephone-Enable-LCD-support-on.patch
|
||||
0001-arm64-dts-sun50i-a64-pinephone-Add-touchscreen-suppo.patch
|
|
@ -0,0 +1,156 @@
|
|||
https://gitlab.com/cki-project/kernel-ark/-/commit/58465cf2c68ab118fb14070d90d2c72c15709e50
|
||||
58465cf2c68ab118fb14070d90d2c72c15709e50 mmc: sdhci-iproc: Add ACPI bindings for the rpi
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0ed90b02259e5e6a4d6d1ef4618ea2938a5383ed
|
||||
0ed90b02259e5e6a4d6d1ef4618ea2938a5383ed ACPI: platform: Hide ACPI_PLATFORM_PROFILE option
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/8fabe1899259fce8bec528e7c36b22867e84f547
|
||||
8fabe1899259fce8bec528e7c36b22867e84f547 platform/x86: ideapad-laptop: DYTC Platform profile support
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/bd0cb76666c540268fda8911799069d85cc8b6fa
|
||||
bd0cb76666c540268fda8911799069d85cc8b6fa platform/x86: thinkpad_acpi: Replace ifdef CONFIG_ACPI_PLATFORM_PROFILE with depends on
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d4def5bc5c57ea761797ced20d50e9322a4b0597
|
||||
d4def5bc5c57ea761797ced20d50e9322a4b0597 platform/x86: thinkpad_acpi: Add platform profile support
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e9bdc7e8eecf0a07ca166a3c7e619ce98e14d786
|
||||
e9bdc7e8eecf0a07ca166a3c7e619ce98e14d786 platform/x86: thinkpad_acpi: fixed warning and incorporated review comments
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0ac5c5db661092df3444a98526c9fee2e58e5697
|
||||
0ac5c5db661092df3444a98526c9fee2e58e5697 platform/x86: thinkpad_acpi: Don't register keyboard_lang unnecessarily
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/9dbc769d65b3540573c34fa822c31f0b668095d1
|
||||
9dbc769d65b3540573c34fa822c31f0b668095d1 platform/x86: thinkpad_acpi: set keyboard language
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d4e0484e1a9651d54ad67e4bbdab97697d2265c5
|
||||
d4e0484e1a9651d54ad67e4bbdab97697d2265c5 ACPI: platform-profile: Fix possible deadlock in platform_profile_remove()
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/feb7c6157833a89e6d3ab1c730f272c5d8e744de
|
||||
feb7c6157833a89e6d3ab1c730f272c5d8e744de ACPI: platform-profile: Introduce object pointers to callbacks
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/912d1c4c2dd3618d75e4f58508bb2453a9619dfa
|
||||
912d1c4c2dd3618d75e4f58508bb2453a9619dfa ACPI: platform-profile: Drop const qualifier for cur_profile
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/8debbcb68fe7e68b93d7b213c143d77df7d400eb
|
||||
8debbcb68fe7e68b93d7b213c143d77df7d400eb ACPI: platform: Add platform profile support
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0a97b0469ac6126fb9a58cfc25f15c57fa4a6405
|
||||
0a97b0469ac6126fb9a58cfc25f15c57fa4a6405 Documentation: Add documentation for new platform_profile sysfs attribute
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/8c183d2a65857c77f4cf84cc9821b9b8cc45cfd7
|
||||
8c183d2a65857c77f4cf84cc9821b9b8cc45cfd7 PCI: Add MCFG quirks for Tegra194 host controllers
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/89525aa6ba3154ad25b133ed683c7701d915a464
|
||||
89525aa6ba3154ad25b133ed683c7701d915a464 Revert "PCI: Add MCFG quirks for Tegra194 host controllers"
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6f4d37a3597e3ab80a62a6ab62883151d256de40
|
||||
6f4d37a3597e3ab80a62a6ab62883151d256de40 arm64: dts: rockchip: disable USB type-c DisplayPort
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/2e70d4b9f02113eaa2d4435f6532922e6484762f
|
||||
2e70d4b9f02113eaa2d4435f6532922e6484762f PCI: Add MCFG quirks for Tegra194 host controllers
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/70615d7e6a262babe4367446e8e2ac398924b014
|
||||
70615d7e6a262babe4367446e8e2ac398924b014 brcm: rpi4: fix usb numeration
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/371887659b615d8d586eec7f3abe5ac02cb7b9e8
|
||||
371887659b615d8d586eec7f3abe5ac02cb7b9e8 drm/i915/gt: Correct surface base address for renderclear
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/904e376792c00bfd12e5843e1f7bc3f181561dd9
|
||||
904e376792c00bfd12e5843e1f7bc3f181561dd9 drm/i915/gt: Flush before changing register state
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/40f01725589329b66717e54b052f3460050c76dd
|
||||
40f01725589329b66717e54b052f3460050c76dd drm/i915/gt: One more flush for Baytrail clear residuals
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/4c24519305eb3cb3eb471582e5c89fa40edf3ea0
|
||||
4c24519305eb3cb3eb471582e5c89fa40edf3ea0 Bluetooth: btusb: Some Qualcomm Bluetooth adapters stop working
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0e8e061312fb6d6dd01edea28b852bd652797246
|
||||
0e8e061312fb6d6dd01edea28b852bd652797246 ALSA: hda: intel-dsp-config: Add SND_INTEL_BYT_PREFER_SOF Kconfig option
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/92c9f3c91b47edbbd3b50d10393a43c54a4881fb
|
||||
92c9f3c91b47edbbd3b50d10393a43c54a4881fb drm/sun4i: sun6i_mipi_dsi: fix horizontal timing calculation
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/15551bd785a681808b2404163d44f6e34f3d61cf
|
||||
15551bd785a681808b2404163d44f6e34f3d61cf drm: panel: add Xingbangda XBD599 panel
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/740bb3c90870b37aa0facbb0017b653094e04220
|
||||
740bb3c90870b37aa0facbb0017b653094e04220 dt-bindings: panel: add binding for Xingbangda XBD599 panel
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/0c5558c7b1e4e913f21c24d5f3d0ccf9f0bf48b2
|
||||
0c5558c7b1e4e913f21c24d5f3d0ccf9f0bf48b2 ARM: fix __get_user_check() in case uaccess_* calls are not inlined
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c4eab489e6b076cd16907a19ccc0bbbee06d87d3
|
||||
c4eab489e6b076cd16907a19ccc0bbbee06d87d3 mm/kmemleak: skip late_init if not skip disable
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/20142ac708d45555ca342fea39bebbeb6979ce5a
|
||||
20142ac708d45555ca342fea39bebbeb6979ce5a KEYS: Make use of platform keyring for module signature verify
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6dbff498818cceede6a35829a4fb2b9eb019c70b
|
||||
6dbff498818cceede6a35829a4fb2b9eb019c70b Drop that for now
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d026e4a9a6cddb5c1cf7b5a3668f5662fdcee884
|
||||
d026e4a9a6cddb5c1cf7b5a3668f5662fdcee884 Input: rmi4 - remove the need for artificial IRQ in case of HID
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/7962cb5280fdf3a32eacae0ca2c3dca6c625d1f7
|
||||
7962cb5280fdf3a32eacae0ca2c3dca6c625d1f7 ARM: tegra: usb no reset
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d33c62a3487b612a4c61f4c318de2790ed9730af
|
||||
d33c62a3487b612a4c61f4c318de2790ed9730af arm: make CONFIG_HIGHPTE optional without CONFIG_EXPERT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e1cf2fedb995fbe267c4c3e00dc1bf439c59c748
|
||||
e1cf2fedb995fbe267c4c3e00dc1bf439c59c748 Add option of 13 for FORCE_MAX_ZONEORDER
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/aef981fe45fd22aa25962217f8f0c6fe7399a013
|
||||
aef981fe45fd22aa25962217f8f0c6fe7399a013 s390: Lock down the kernel when the IPL secure flag is set
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5e328adcf76fe5a01251b68f7361dc162b798efa
|
||||
5e328adcf76fe5a01251b68f7361dc162b798efa efi: Lock down the kernel if booted in secure boot mode
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/14b65c6595b6cb977582cd18b9586d0dee9d48fb
|
||||
14b65c6595b6cb977582cd18b9586d0dee9d48fb efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/344f56463c3613302558a981b807ca1423f3fb1b
|
||||
344f56463c3613302558a981b807ca1423f3fb1b security: lockdown: expose a hook to lock the kernel down
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/162c5d7fe16619f513e02bf9c909c90a2b68d6cf
|
||||
162c5d7fe16619f513e02bf9c909c90a2b68d6cf Make get_cert_list() use efi_status_to_str() to print error messages.
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/ba6745aad7bdf8cdf6bd239177d98ab2188e3216
|
||||
ba6745aad7bdf8cdf6bd239177d98ab2188e3216 Add efi_status_to_str() and rework efi_status_to_err().
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/53184be3d07b89bb8c47c6d822ec846165bdc2da
|
||||
53184be3d07b89bb8c47c6d822ec846165bdc2da arm: aarch64: Drop the EXPERT setting from ARM64_FORCE_52BIT
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e9da8fd1cc5b476c78d27c892955c9ea94f56b43
|
||||
e9da8fd1cc5b476c78d27c892955c9ea94f56b43 iommu/arm-smmu: workaround DMA mode issues
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/75aa23a8bc9d803e628ce0d3948d720ce01b4590
|
||||
75aa23a8bc9d803e628ce0d3948d720ce01b4590 ipmi: do not configure ipmi for HPE m400
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/50d5eae7a889ea97a1bd945a8316262da3122eed
|
||||
50d5eae7a889ea97a1bd945a8316262da3122eed scsi: smartpqi: add inspur advantech ids
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/6954a34dc04198619a23a7b7a7a1840ac59a30f2
|
||||
6954a34dc04198619a23a7b7a7a1840ac59a30f2 ahci: thunderx2: Fix for errata that affects stop engine
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/3cb304dc7a698408c39f9eba892c0dfbeb65b4d7
|
||||
3cb304dc7a698408c39f9eba892c0dfbeb65b4d7 Vulcan: AHCI PCI bar fix for Broadcom Vulcan early silicon
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/4849bd8037b2d1b8257c75032990cff84e55d5b5
|
||||
4849bd8037b2d1b8257c75032990cff84e55d5b5 kdump: fix a grammar issue in a kernel message
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/22660c3525b20da79b65c8e98f4476d56d19ffd6
|
||||
22660c3525b20da79b65c8e98f4476d56d19ffd6 kdump: add support for crashkernel=auto
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/646ba5eeb64390f10940610fc387004847ef1ba3
|
||||
646ba5eeb64390f10940610fc387004847ef1ba3 kdump: round up the total memory size to 128M for crashkernel reservation
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/67556e7dad64a05b0089fe4a7cebed3bc07f0109
|
||||
67556e7dad64a05b0089fe4a7cebed3bc07f0109 aarch64: acpi scan: Fix regression related to X-Gene UARTs
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/02d2367674501ed8855a0aecccd27d302904f453
|
||||
02d2367674501ed8855a0aecccd27d302904f453 ACPI / irq: Workaround firmware issue on X-Gene based m400
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/bbe1d08ab7d6a28fa64d0c0ac6ec0f9149bea478
|
||||
bbe1d08ab7d6a28fa64d0c0ac6ec0f9149bea478 ACPI: APEI: arm64: Ignore broken HPE moonshot APEI support
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
From 358afb8b746d4a7ebaeeeaab7a1523895a8572c2 Mon Sep 17 00:00:00 2001
|
||||
From: Maxime Ripard <maxime@cerno.tech>
|
||||
Date: Thu, 29 Oct 2020 14:40:18 +0100
|
||||
Subject: ARM: dts: rpi-4: disable wifi frequencies
|
||||
|
||||
The RPi4 WiFi chip and HDMI outputs have some frequency overlap with
|
||||
crosstalk around 2.4GHz. Let's mark it as such so we can use some evasive
|
||||
maneuvers.
|
||||
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
||||
Link: https://lore.kernel.org/r/20201029134018.1948636-3-maxime@cerno.tech
|
||||
---
|
||||
arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
|
||||
index 09a1182c29363..403bacf986ebb 100644
|
||||
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
|
||||
@@ -181,12 +181,14 @@
|
||||
&hdmi0 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
+ wifi-2.4ghz-coexistence;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
+ wifi-2.4ghz-coexistence;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
--
|
||||
cgit 1.2.3-1.el7
|
|
@ -1,64 +0,0 @@
|
|||
From b86516452cfd94321900abe7c8ac843c146a8c53 Mon Sep 17 00:00:00 2001
|
||||
From: "H. Nikolaus Schaller" <hns@goldelico.com>
|
||||
Date: Sat, 3 Oct 2020 16:10:01 +0200
|
||||
Subject: ARM: dts: pandaboard es: add bluetooth uart for HCI
|
||||
|
||||
The wl271 bluetooth uart is connected to uart2.
|
||||
Setup a serdev uart child and separate bluetooth and uart2 pinmux
|
||||
from wl12xx pinmux to better group the pins and muxes.
|
||||
|
||||
Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
|
||||
Signed-off-by: Tony Lindgren <tony@atomide.com>
|
||||
---
|
||||
arch/arm/boot/dts/omap4-panda-es.dts | 32 ++++++++++++++++++++++++++++++++
|
||||
1 file changed, 32 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/omap4-panda-es.dts b/arch/arm/boot/dts/omap4-panda-es.dts
|
||||
index 6afa8fd7c412d..7c6886cd738f0 100644
|
||||
--- a/arch/arm/boot/dts/omap4-panda-es.dts
|
||||
+++ b/arch/arm/boot/dts/omap4-panda-es.dts
|
||||
@@ -49,6 +49,22 @@
|
||||
OMAP4_IOPAD(0x0fc, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio_113 */
|
||||
>;
|
||||
};
|
||||
+
|
||||
+ bt_pins: pinmux_bt_pins {
|
||||
+ pinctrl-single,pins = <
|
||||
+ OMAP4_IOPAD(0x06c, PIN_OUTPUT | MUX_MODE3) /* gpmc_a22.gpio_46 - BTEN */
|
||||
+ OMAP4_IOPAD(0x072, PIN_OUTPUT_PULLUP | MUX_MODE3) /* gpmc_a25.gpio_49 - BTWAKEUP */
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ uart2_pins: pinmux_uart2_pins {
|
||||
+ pinctrl-single,pins = <
|
||||
+ OMAP4_IOPAD(0x118, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_cts.uart2_cts - HCI */
|
||||
+ OMAP4_IOPAD(0x11a, PIN_OUTPUT | MUX_MODE0) /* uart2_rts.uart2_rts */
|
||||
+ OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_rx.uart2_rx */
|
||||
+ OMAP4_IOPAD(0x11e, PIN_OUTPUT | MUX_MODE0) /* uart2_tx.uart2_tx */
|
||||
+ >;
|
||||
+ };
|
||||
};
|
||||
|
||||
&led_wkgpio_pins {
|
||||
@@ -80,3 +96,19 @@
|
||||
&gpio1_target {
|
||||
ti,no-reset-on-init;
|
||||
};
|
||||
+
|
||||
+&wl12xx_gpio {
|
||||
+ pinctrl-single,pins = <
|
||||
+ OMAP4_IOPAD(0x066, PIN_OUTPUT | MUX_MODE3) /* gpmc_a19.gpio_43 */
|
||||
+ OMAP4_IOPAD(0x070, PIN_OUTPUT_PULLUP | MUX_MODE3) /* gpmc_a24.gpio_48 */
|
||||
+ >;
|
||||
+};
|
||||
+
|
||||
+&uart2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart2_pins &bt_pins>;
|
||||
+ bluetooth: tiwi {
|
||||
+ compatible = "ti,wl1271-st";
|
||||
+ enable-gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>; /* GPIO_46 */
|
||||
+ };
|
||||
+};
|
||||
--
|
||||
cgit 1.2.3-1.el7
|
|
@ -1,168 +0,0 @@
|
|||
From patchwork Thu Sep 24 06:30:43 2020
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Jian-Hong Pan <jhp@endlessos.org>
|
||||
X-Patchwork-Id: 11796255
|
||||
Return-Path:
|
||||
<SRS0=xrLY=DB=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org>
|
||||
Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org
|
||||
[172.30.200.123])
|
||||
by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7652892C
|
||||
for <patchwork-linux-arm@patchwork.kernel.org>;
|
||||
Thu, 24 Sep 2020 06:35:46 +0000 (UTC)
|
||||
Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by mail.kernel.org (Postfix) with ESMTPS id 446A02067B
|
||||
for <patchwork-linux-arm@patchwork.kernel.org>;
|
||||
Thu, 24 Sep 2020 06:35:46 +0000 (UTC)
|
||||
Authentication-Results: mail.kernel.org;
|
||||
dkim=pass (2048-bit key) header.d=lists.infradead.org
|
||||
header.i=@lists.infradead.org header.b="Ewe+VItP";
|
||||
dkim=fail reason="signature verification failed" (2048-bit key)
|
||||
header.d=endlessos-org.20150623.gappssmtp.com
|
||||
header.i=@endlessos-org.20150623.gappssmtp.com header.b="CNwT7A48"
|
||||
DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 446A02067B
|
||||
Authentication-Results: mail.kernel.org;
|
||||
dmarc=none (p=none dis=none) header.from=endlessos.org
|
||||
Authentication-Results: mail.kernel.org;
|
||||
spf=none
|
||||
smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org
|
||||
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
|
||||
d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding:
|
||||
Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive:
|
||||
List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From:
|
||||
Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender
|
||||
:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner;
|
||||
bh=chkjbj+LzntWzzQJLh/rXGTFqeExn4dgG2O97gwtks0=; b=Ewe+VItPNb0cS0qCak0A3gLOeX
|
||||
bcpHL7ZaEhLIPRz8yVoIAmkgeWa7i/Di2PJYMylsX4RKDFgyUL1h7ZX4z+1ttbXbvrB+18WV8oIJT
|
||||
T1eJhGvQryqOaiLYK3c7IDdlJWp7pG4L4hTz/aKyJwesEIRAbBwiWZCG1bzOo55Z02w3hpnC7yJCC
|
||||
+9chtonwVExWOlHsIWPQMLY4ONWVnB9wjCfIYhNWkB+6ZsfXKyqox9jQW/L8FXbF7ggXiAr5h5eUQ
|
||||
ltSVML0uS0EbGETdS66lseFR0udqSyCw8xV9xg2VE8WwRWWwdR8TIqN+9IrMwPEdw08pCKhaTHPQV
|
||||
2jHNXI5Q==;
|
||||
Received: from localhost ([::1] helo=merlin.infradead.org)
|
||||
by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux))
|
||||
id 1kLKqt-0002qa-Il; Thu, 24 Sep 2020 06:35:35 +0000
|
||||
Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443])
|
||||
by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux))
|
||||
id 1kLKqp-0002pK-Dt
|
||||
for linux-arm-kernel@lists.infradead.org; Thu, 24 Sep 2020 06:35:32 +0000
|
||||
Received: by mail-pf1-x443.google.com with SMTP id z18so1296203pfg.0
|
||||
for <linux-arm-kernel@lists.infradead.org>;
|
||||
Wed, 23 Sep 2020 23:35:30 -0700 (PDT)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=endlessos-org.20150623.gappssmtp.com; s=20150623;
|
||||
h=from:to:cc:subject:date:message-id:mime-version
|
||||
:content-transfer-encoding;
|
||||
bh=cMk5EkO4+a7or+6O9dGbx3RFLRF/gjrDA61H05E6FkU=;
|
||||
b=CNwT7A48Bv2tL3cgjhSN+QqVUZyOE4oH0z/QPxXWxHlfvRHPpqeNrgMWakuntfufGc
|
||||
6KUk9TcIO4PkswHtuWMCf8r0mqTH7vFuT/bBhZeuy+TzYNKUXRoJdaXK4dG2kfEf6gk9
|
||||
Rs+I9bobAz5kV/oNMpcu35ByBl0v2BMQslpfYGtbn+BM6zjiNUEgodgm/4r34wcvNwjn
|
||||
2UZSNR3oyiG2TOzi14qu9qp3NluDDlwqlAsjDtGiwA1n+eCdk+t0tAvQNAGekqGpvOW0
|
||||
AfujOjW5OyTXMvkODohRmQk5rm5/k6ztAB9NzO9IKQlmmQAsxA4HMGEoPuDQUbYpeg8O
|
||||
Orjg==
|
||||
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=1e100.net; s=20161025;
|
||||
h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version
|
||||
:content-transfer-encoding;
|
||||
bh=cMk5EkO4+a7or+6O9dGbx3RFLRF/gjrDA61H05E6FkU=;
|
||||
b=IbmaG6cS3n+4zMcqlr0vhRIs13DTbZLUxntFaAUm+Dr4d2PmTeUro/RBbNG7913CRF
|
||||
RvUGF5q0E1FCUitInA5paQ554T4SBLC0vtYBR/2syd688HgW9vgZj9Z/Ml8lMwDc1YOX
|
||||
unIRkI0POHYdi3iSJgcGMQGttr4yga1xJte9Nl0wyz99hs+7hkq1t6u+i0ce5Rk0BIOe
|
||||
vrpXNo2Z3Ky3N8/C1JYi7LRz5s/YyH8F2h87bJHKq0LZjIrAdsex+TquSHI6Oo+JTP2o
|
||||
JNq+2N3VH8cXh4EAThKdRYt2uRSYPmMt5zB6aZ7TdmN/KRrUunUTv3azQ7WYPZ2pb87P
|
||||
/Jtw==
|
||||
X-Gm-Message-State: AOAM532LDC+KonHJFYIJ9EWedqQtA5dzYXv+YV8vaedi0MNndgtXMKqj
|
||||
25xaRucf+K4XN3v7IvjkRUWonA==
|
||||
X-Google-Smtp-Source:
|
||||
ABdhPJxRtZ216lgi7xyFj9DVfZBzPvh8X3PV8a9E299xrYCeK5YYgipOFzUGlybGn6AWVn8DDIuoiw==
|
||||
X-Received: by 2002:a62:5b85:0:b029:142:2501:34e1 with SMTP id
|
||||
p127-20020a625b850000b0290142250134e1mr3072236pfb.58.1600929329001;
|
||||
Wed, 23 Sep 2020 23:35:29 -0700 (PDT)
|
||||
Received: from starnight.localdomain (123-204-46-122.static.seed.net.tw.
|
||||
[123.204.46.122])
|
||||
by smtp.googlemail.com with ESMTPSA id f4sm1691321pgk.19.2020.09.23.23.35.23
|
||||
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
|
||||
Wed, 23 Sep 2020 23:35:28 -0700 (PDT)
|
||||
From: Jian-Hong Pan <jhp@endlessos.org>
|
||||
To: Rob Herring <robh+dt@kernel.org>, Heiko Stuebner <heiko@sntech.de>,
|
||||
Soeren Moch <smoch@web.de>, Tobias Schramm <t.schramm@manjaro.org>,
|
||||
Johan Jonker <jbx6244@gmail.com>,
|
||||
Katsuhiro Suzuki <katsuhiro@katsuster.net>,
|
||||
Hugh Cole-Baker <sigmaris@gmail.com>, Robin Murphy <robin.murphy@arm.com>
|
||||
Subject: [PATCH] arm64: dts: rockchip: disable USB type-c DisplayPort
|
||||
Date: Thu, 24 Sep 2020 14:30:43 +0800
|
||||
Message-Id: <20200924063042.41545-1-jhp@endlessos.org>
|
||||
X-Mailer: git-send-email 2.28.0
|
||||
MIME-Version: 1.0
|
||||
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
|
||||
X-CRM114-CacheID: sfid-20200924_023531_484980_A8C102E9
|
||||
X-CRM114-Status: GOOD ( 15.78 )
|
||||
X-Spam-Score: 0.0 (/)
|
||||
X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary:
|
||||
Content analysis details: (0.0 points)
|
||||
pts rule name description
|
||||
---- ----------------------
|
||||
--------------------------------------------------
|
||||
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
|
||||
no trust [2607:f8b0:4864:20:0:0:0:443 listed in]
|
||||
[list.dnswl.org]
|
||||
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
|
||||
-0.0 SPF_PASS SPF: sender matches SPF record
|
||||
-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
|
||||
0.1 DKIM_SIGNED Message has a DKIM or DK signature,
|
||||
not necessarily
|
||||
valid
|
||||
X-BeenThere: linux-arm-kernel@lists.infradead.org
|
||||
X-Mailman-Version: 2.1.29
|
||||
Precedence: list
|
||||
List-Id: <linux-arm-kernel.lists.infradead.org>
|
||||
List-Unsubscribe:
|
||||
<http://lists.infradead.org/mailman/options/linux-arm-kernel>,
|
||||
<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
|
||||
List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
|
||||
List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
|
||||
List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
|
||||
List-Subscribe:
|
||||
<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
|
||||
<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
|
||||
Cc: devicetree@vger.kernel.org, Jian-Hong Pan <jhp@endlessos.org>,
|
||||
linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org,
|
||||
linux@endlessm.com, linux-arm-kernel@lists.infradead.org
|
||||
Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
|
||||
Errors-To:
|
||||
linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org
|
||||
|
||||
The cdn-dp sub driver probes the device failed on PINEBOOK Pro.
|
||||
|
||||
kernel: cdn-dp fec00000.dp: [drm:cdn_dp_probe [rockchipdrm]] *ERROR* missing extcon or phy
|
||||
kernel: cdn-dp: probe of fec00000.dp failed with error -22
|
||||
|
||||
Then, the device halts all of the DRM related device jobs. For example,
|
||||
the operations: vop_component_ops, vop_component_ops and
|
||||
rockchip_dp_component_ops cannot be bound to corresponding devices. So,
|
||||
Xorg cannot find the correct DRM device.
|
||||
|
||||
The USB type-C DisplayPort does not work for now. So, disable the
|
||||
DisplayPort node until the type-C phy work has been done.
|
||||
|
||||
Link: https://patchwork.kernel.org/patch/11794141/#23639877
|
||||
Signed-off-by: Jian-Hong Pan <jhp@endlessos.org>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
|
||||
index 06d48338c836..d624c595c533 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
|
||||
@@ -380,7 +380,7 @@ mains_charger: dc-charger {
|
||||
};
|
||||
|
||||
&cdn_dp {
|
||||
- status = "okay";
|
||||
+ status = "disabled";
|
||||
};
|
||||
|
||||
&cpu_b0 {
|
|
@ -1 +0,0 @@
|
|||
configs/build_configs.sh
|
|
@ -1,159 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# This script merges together the hierarchy of CONFIG_* files under generic
|
||||
# and debug to form the necessary $PACKAGE_NAME<version>-<arch>-<variant>.config
|
||||
# files for building RHEL kernels, based on the contents of a control file
|
||||
|
||||
PACKAGE_NAME="${1:-kernel}" # defines the package name used
|
||||
KVERREL="${2:-}"
|
||||
SUBARCH="${3:-}" # defines a specific arch
|
||||
SCRIPT="$(readlink -f $0)"
|
||||
OUTPUT_DIR="$PWD"
|
||||
SCRIPT_DIR="$(dirname $SCRIPT)"
|
||||
|
||||
LANG=en_US.UTF-8
|
||||
|
||||
# to handle this script being a symlink
|
||||
cd $SCRIPT_DIR
|
||||
|
||||
set errexit
|
||||
set nounset
|
||||
|
||||
cleanup()
|
||||
{
|
||||
rm -f config-*
|
||||
}
|
||||
|
||||
die()
|
||||
{
|
||||
echo "$1"
|
||||
cleanup
|
||||
exit 1
|
||||
}
|
||||
|
||||
function combine_config_layer()
|
||||
{
|
||||
dir=$1
|
||||
file="config-$(echo $dir | sed -e 's|/|-|g')"
|
||||
|
||||
if [ $(ls $dir/ | grep -c "^CONFIG_") -eq 0 ]; then
|
||||
touch $file
|
||||
return
|
||||
fi
|
||||
|
||||
cat $dir/CONFIG_* > $file
|
||||
}
|
||||
|
||||
function merge_configs()
|
||||
{
|
||||
archvar=$1
|
||||
arch=$(echo "$archvar" | cut -f1 -d"-")
|
||||
configs=$2
|
||||
order=$3
|
||||
flavor=$4
|
||||
|
||||
name=$OUTPUT_DIR/$PACKAGE_NAME-$archvar-$flavor.config
|
||||
echo -n "Building $name ... "
|
||||
touch config-merging config-merged
|
||||
|
||||
# apply based on order
|
||||
skip_if_missing=""
|
||||
for o in $order
|
||||
do
|
||||
for config in $(echo $configs | sed -e 's/:/ /g')
|
||||
do
|
||||
cfile="config-$o-$config"
|
||||
|
||||
test -n "$skip_if_missing" && test ! -e $cfile && continue
|
||||
|
||||
perl merge.pl $cfile config-merging > config-merged
|
||||
if [ ! $? -eq 0 ]; then
|
||||
die "Failed to merge $cfile"
|
||||
fi
|
||||
mv config-merged config-merging
|
||||
done
|
||||
|
||||
# first configs in $order is baseline, all files should be
|
||||
# there. second pass is overrides and can be missing.
|
||||
skip_if_missing="1"
|
||||
done
|
||||
if [ "x$arch" == "xaarch64" ]; then
|
||||
echo "# arm64" > $name
|
||||
elif [ "x$arch" == "xppc64le" ]; then
|
||||
echo "# powerpc" > $name
|
||||
elif [ "x$arch" == "xs390x" ]; then
|
||||
echo "# s390" > $name
|
||||
elif [ "x$arch" == "xarmv7hl" ]; then
|
||||
echo "# arm" > $name
|
||||
elif [ "x$arch" == "xi686" ]; then
|
||||
echo "# i386" > $name
|
||||
else
|
||||
echo "# $arch" > $name
|
||||
fi
|
||||
sort config-merging >> $name
|
||||
rm -f config-merged config-merging
|
||||
echo "done"
|
||||
}
|
||||
|
||||
function build_flavor()
|
||||
{
|
||||
flavor=$1
|
||||
control_file="priority".$flavor
|
||||
while read line
|
||||
do
|
||||
if [ $(echo "$line" | grep -c "^#") -ne 0 ]; then
|
||||
continue
|
||||
elif [ $(echo "$line" | grep -c "^$") -ne 0 ]; then
|
||||
continue
|
||||
elif [ $(echo "$line" | grep -c "^EMPTY") -ne 0 ]; then
|
||||
empty=$(echo "$line" | cut -f2 -d"=")
|
||||
for a in $empty
|
||||
do
|
||||
echo "# EMPTY" > $OUTPUT_DIR/$PACKAGE_NAME-$a-$flavor.config
|
||||
|
||||
done
|
||||
elif [ $(echo "$line" | grep -c "^ORDER") -ne 0 ]; then
|
||||
order=$(echo "$line" | cut -f2 -d"=")
|
||||
for o in $order
|
||||
do
|
||||
glist=$(find $o -type d)
|
||||
for d in $glist
|
||||
do
|
||||
combine_config_layer $d
|
||||
done
|
||||
done
|
||||
else
|
||||
arch=$(echo "$line" | cut -f1 -d"=")
|
||||
configs=$(echo "$line" | cut -f2 -d"=")
|
||||
|
||||
if [ -n "$SUBARCH" ]; then
|
||||
case $arch in
|
||||
$SUBARCH*)
|
||||
;;
|
||||
*)
|
||||
continue
|
||||
esac
|
||||
fi
|
||||
|
||||
merge_configs $arch $configs "$order" $flavor
|
||||
fi
|
||||
done < $control_file
|
||||
}
|
||||
|
||||
while read line
|
||||
do
|
||||
build_flavor $line
|
||||
done < flavors
|
||||
|
||||
# A passed in kernel version implies copy to final location
|
||||
# otherwise defer to another script
|
||||
if test -n "$KVERREL"
|
||||
then
|
||||
for i in kernel-*.config
|
||||
do
|
||||
NEW="$(echo $i | sed "s/$PACKAGE_NAME-$SUBARCH/$PACKAGE_NAME-$KVERREL-$SUBARCH/")"
|
||||
mv $i $NEW
|
||||
done
|
||||
fi
|
||||
|
||||
cleanup
|
|
@ -1 +0,0 @@
|
|||
CONFIG_ACPI_DEBUG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_ARM_PTDUMP_DEBUGFS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_ATH_DEBUG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_B43LEGACY_DEBUG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_B43_DEBUG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_BLK_DEV_NULL_BLK_FAULT_INJECTION=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_BPF_KPROBE_OVERRIDE=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_BTRFS_ASSERT=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_CAN_DEBUG_DEVICES=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_CARL9170_DEBUGFS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_CEPH_LIB_PRETTYDEBUG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_ATOMIC_SLEEP=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_CREDENTIALS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_KMEMLEAK=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_KMEMLEAK_MEM_POOL_SIZE=4096
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_LOCK_ALLOC=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_MISC=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_MUTEXES=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_NOTIFIERS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_OBJECTS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_OBJECTS_FREE=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_OBJECTS_TIMERS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_OBJECTS_WORK=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_PERF_USE_VMALLOC=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_PER_CPU_MAPS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_RT_MUTEXES=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_RWSEMS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_SG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_SPINLOCK=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_STACK_USAGE=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_VM_PGFLAGS=y
|
|
@ -1,24 +0,0 @@
|
|||
# CONFIG_DEBUG_VM_PGTABLE:
|
||||
#
|
||||
# This option provides a debug method which can be used to test
|
||||
# architecture page table helper functions on various platforms in
|
||||
# verifying if they comply with expected generic MM semantics. This
|
||||
# will help architecture code in making sure that any changes or
|
||||
# new additions of these helpers still conform to expected
|
||||
# semantics of the generic MM. Platforms will have to opt in for
|
||||
# this through ARCH_HAS_DEBUG_VM_PGTABLE.
|
||||
#
|
||||
# If unsure, say N.
|
||||
#
|
||||
# Symbol: DEBUG_VM_PGTABLE [=y]
|
||||
# Type : bool
|
||||
# Defined at lib/Kconfig.debug:702
|
||||
# Prompt: Debug arch page table for semantics compliance
|
||||
# Depends on: MMU [=y] && ARCH_HAS_DEBUG_VM_PGTABLE [=y]
|
||||
# Location:
|
||||
# -> Kernel hacking
|
||||
# -> Memory Debugging
|
||||
#
|
||||
#
|
||||
#
|
||||
CONFIG_DEBUG_VM_PGTABLE=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DETECT_HUNG_TASK=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DMADEVICES_DEBUG=y
|
|
@ -1 +0,0 @@
|
|||
# CONFIG_DMADEVICES_VDEBUG is not set
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DMA_API_DEBUG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_DRBD_FAULT_INJECTION=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_EFI_PGT_DUMP=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_EXT4_DEBUG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAILSLAB=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAIL_FUNCTION=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAIL_IO_TIMEOUT=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAIL_MAKE_REQUEST=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAIL_MMC_REQUEST=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAIL_PAGE_ALLOC=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAULT_INJECTION=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAULT_INJECTION_DEBUG_FS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_IOMMU_DEBUGFS=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_IWLWIFI_DEVICE_TRACING=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_JBD2_DEBUG=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_KASAN_VMALLOC=y
|
|
@ -1 +0,0 @@
|
|||
CONFIG_KDB_DEFAULT_ENABLE=0x0
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue