From 7c198e9c22b4e40b320349103eb022a3e7e23b86 Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Sat, 5 Nov 2022 18:58:22 +0100 Subject: kernel 6.0.7 --- SOURCES/Patchlist.changelog | 6 + SOURCES/linux-surface.patch | 748 ++++++----------------------------------- SOURCES/patch-6.0-redhat.patch | 166 ++++++++- SPECS/kernel.spec | 22 +- 4 files changed, 278 insertions(+), 664 deletions(-) diff --git a/SOURCES/Patchlist.changelog b/SOURCES/Patchlist.changelog index da68ac2..a204a65 100644 --- a/SOURCES/Patchlist.changelog +++ b/SOURCES/Patchlist.changelog @@ -1,3 +1,9 @@ +"https://gitlab.com/cki-project/kernel-ark/-/commit"/bf2bceedcc5d66c041165b4db6aea032fd7f4b5c + bf2bceedcc5d66c041165b4db6aea032fd7f4b5c drm/simpledrm: Only advertise formats that are supported + +"https://gitlab.com/cki-project/kernel-ark/-/commit"/7ab8e0d8b46b7f768e37f8ff39ccae2ecc897396 + 7ab8e0d8b46b7f768e37f8ff39ccae2ecc897396 disable enum64 BTF in fedora rawhide + "https://gitlab.com/cki-project/kernel-ark/-/commit"/3f98e8c4ff4856388d73a2dd727241fc05dc717f 3f98e8c4ff4856388d73a2dd727241fc05dc717f drm/vc4: hdmi: Fix HSM clock too low on Pi4 diff --git a/SOURCES/linux-surface.patch b/SOURCES/linux-surface.patch index 64a1d73..9eeb84b 100644 --- a/SOURCES/linux-surface.patch +++ b/SOURCES/linux-surface.patch @@ -1,4 +1,4 @@ -From cf081f3ccc47f650f1fa8c2f0a35bacf5b177766 Mon Sep 17 00:00:00 2001 +From 3c97e0f82689012bd51bc01db291fb06fbc94750 Mon Sep 17 00:00:00 2001 From: Tsuchiya Yuto Date: Sun, 18 Oct 2020 16:42:44 +0900 Subject: [PATCH] (surface3-oemb) add DMI matches for Surface 3 with broken DMI @@ -97,411 +97,9 @@ index 6beb00858c33..d82d77387a0a 100644 }; -- -2.38.0 +2.38.1 -From 7877f4ebb43da4625e635c5f1ce491422a50a05a Mon Sep 17 00:00:00 2001 -From: Tsuchiya Yuto -Date: Tue, 29 Sep 2020 17:32:22 +0900 -Subject: [PATCH] mwifiex: pcie: add reset_wsid quirk for Surface 3 - -This commit adds reset_wsid quirk and uses this quirk for Surface 3 on -card reset. - -To reset mwifiex on Surface 3, it seems that calling the _DSM method -exists in \_SB.WSID [1] device is required. - -On Surface 3, calling the _DSM method removes/re-probes the card by -itself. So, need to place the reset function before performing FLR and -skip performing any other reset-related works. - -Note that Surface Pro 3 also has the WSID device [2], but it seems to need -more work. This commit only supports Surface 3 yet. - -[1] https://github.com/linux-surface/acpidumps/blob/05cba925f3a515f222acb5b3551a032ddde958fe/surface_3/dsdt.dsl#L11947-L12011 -[2] https://github.com/linux-surface/acpidumps/blob/05cba925f3a515f222acb5b3551a032ddde958fe/surface_pro_3/dsdt.dsl#L12164-L12216 - -Signed-off-by: Tsuchiya Yuto -Patchset: mwifiex ---- - drivers/net/wireless/marvell/mwifiex/pcie.c | 10 +++ - .../wireless/marvell/mwifiex/pcie_quirks.c | 83 +++++++++++++++++++ - .../wireless/marvell/mwifiex/pcie_quirks.h | 6 ++ - 3 files changed, 99 insertions(+) - -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c -index f7f9277602a5..56ae323ca3b5 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie.c -+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c -@@ -2981,6 +2981,16 @@ static void mwifiex_pcie_card_reset_work(struct mwifiex_adapter *adapter) - { - struct pcie_service_card *card = adapter->card; - -+ /* On Surface 3, reset_wsid method removes then re-probes card by -+ * itself. So, need to place it here and skip performing any other -+ * reset-related works. -+ */ -+ if (card->quirks & QUIRK_FW_RST_WSID_S3) { -+ mwifiex_pcie_reset_wsid_quirk(card->dev); -+ /* skip performing any other reset-related works */ -+ return; -+ } -+ - /* We can't afford to wait here; remove() might be waiting on us. If we - * can't grab the device lock, maybe we'll get another chance later. - */ -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -index dd6d21f1dbfd..2175358dc65d 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -+++ b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -@@ -1,10 +1,21 @@ - // SPDX-License-Identifier: GPL-2.0-only - // NXP Wireless LAN device driver: PCIE and platform specific quirks - -+#include - #include - - #include "pcie_quirks.h" - -+/* For reset_wsid quirk */ -+#define ACPI_WSID_PATH "\\_SB.WSID" -+#define WSID_REV 0x0 -+#define WSID_FUNC_WIFI_PWR_OFF 0x1 -+#define WSID_FUNC_WIFI_PWR_ON 0x2 -+/* WSID _DSM UUID: "534ea3bf-fcc2-4e7a-908f-a13978f0c7ef" */ -+static const guid_t wsid_dsm_guid = -+ GUID_INIT(0x534ea3bf, 0xfcc2, 0x4e7a, -+ 0x90, 0x8f, 0xa1, 0x39, 0x78, 0xf0, 0xc7, 0xef); -+ - /* quirk table based on DMI matching */ - static const struct dmi_system_id mwifiex_quirk_table[] = { - { -@@ -73,6 +84,14 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - }, - .driver_data = (void *)QUIRK_FW_RST_D3COLD, - }, -+ { -+ .ident = "Surface 3", -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface 3"), -+ }, -+ .driver_data = (void *)QUIRK_FW_RST_WSID_S3, -+ }, - {} - }; - -@@ -89,6 +108,9 @@ void mwifiex_initialize_quirks(struct pcie_service_card *card) - dev_info(&pdev->dev, "no quirks enabled\n"); - if (card->quirks & QUIRK_FW_RST_D3COLD) - dev_info(&pdev->dev, "quirk reset_d3cold enabled\n"); -+ if (card->quirks & QUIRK_FW_RST_WSID_S3) -+ dev_info(&pdev->dev, -+ "quirk reset_wsid for Surface 3 enabled\n"); - } - - static void mwifiex_pcie_set_power_d3cold(struct pci_dev *pdev) -@@ -145,3 +167,64 @@ int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev) - - return 0; - } -+ -+int mwifiex_pcie_reset_wsid_quirk(struct pci_dev *pdev) -+{ -+ acpi_handle handle; -+ union acpi_object *obj; -+ acpi_status status; -+ -+ dev_info(&pdev->dev, "Using reset_wsid quirk to perform FW reset\n"); -+ -+ status = acpi_get_handle(NULL, ACPI_WSID_PATH, &handle); -+ if (ACPI_FAILURE(status)) { -+ dev_err(&pdev->dev, "No ACPI handle for path %s\n", -+ ACPI_WSID_PATH); -+ return -ENODEV; -+ } -+ -+ if (!acpi_has_method(handle, "_DSM")) { -+ dev_err(&pdev->dev, "_DSM method not found\n"); -+ return -ENODEV; -+ } -+ -+ if (!acpi_check_dsm(handle, &wsid_dsm_guid, -+ WSID_REV, WSID_FUNC_WIFI_PWR_OFF)) { -+ dev_err(&pdev->dev, -+ "_DSM method doesn't support wifi power off func\n"); -+ return -ENODEV; -+ } -+ -+ if (!acpi_check_dsm(handle, &wsid_dsm_guid, -+ WSID_REV, WSID_FUNC_WIFI_PWR_ON)) { -+ dev_err(&pdev->dev, -+ "_DSM method doesn't support wifi power on func\n"); -+ return -ENODEV; -+ } -+ -+ /* card will be removed immediately after this call on Surface 3 */ -+ dev_info(&pdev->dev, "turning wifi off...\n"); -+ obj = acpi_evaluate_dsm(handle, &wsid_dsm_guid, -+ WSID_REV, WSID_FUNC_WIFI_PWR_OFF, -+ NULL); -+ if (!obj) { -+ dev_err(&pdev->dev, -+ "device _DSM execution failed for turning wifi off\n"); -+ return -EIO; -+ } -+ ACPI_FREE(obj); -+ -+ /* card will be re-probed immediately after this call on Surface 3 */ -+ dev_info(&pdev->dev, "turning wifi on...\n"); -+ obj = acpi_evaluate_dsm(handle, &wsid_dsm_guid, -+ WSID_REV, WSID_FUNC_WIFI_PWR_ON, -+ NULL); -+ if (!obj) { -+ dev_err(&pdev->dev, -+ "device _DSM execution failed for turning wifi on\n"); -+ return -EIO; -+ } -+ ACPI_FREE(obj); -+ -+ return 0; -+} -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h -index d6ff964aec5b..40c95ab24bd7 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h -+++ b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h -@@ -5,5 +5,11 @@ - - #define QUIRK_FW_RST_D3COLD BIT(0) - -+/* Surface 3 and Surface Pro 3 have the same _DSM method but need to -+ * be handled differently. Currently, only S3 is supported. -+ */ -+#define QUIRK_FW_RST_WSID_S3 BIT(1) -+ - void mwifiex_initialize_quirks(struct pcie_service_card *card); - int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev); -+int mwifiex_pcie_reset_wsid_quirk(struct pci_dev *pdev); --- -2.38.0 - -From a752cce0b4ff03b78c53f4f9889a707bf706f9bc Mon Sep 17 00:00:00 2001 -From: Tsuchiya Yuto -Date: Wed, 30 Sep 2020 18:08:24 +0900 -Subject: [PATCH] mwifiex: pcie: (OEMB) add quirk for Surface 3 with broken DMI - table - -(made referring to http://git.osdn.net/view?p=android-x86/kernel.git;a=commitdiff;h=18e2e857c57633b25b3b4120f212224a108cd883) - -On some Surface 3, the DMI table gets corrupted for unknown reasons -and breaks existing DMI matching used for device-specific quirks. - -This commit adds the (broken) DMI info for the affected Surface 3. - -On affected systems, DMI info will look like this: - $ grep . /sys/devices/virtual/dmi/id/{bios_vendor,board_name,board_vendor,\ - chassis_vendor,product_name,sys_vendor} - /sys/devices/virtual/dmi/id/bios_vendor:American Megatrends Inc. - /sys/devices/virtual/dmi/id/board_name:OEMB - /sys/devices/virtual/dmi/id/board_vendor:OEMB - /sys/devices/virtual/dmi/id/chassis_vendor:OEMB - /sys/devices/virtual/dmi/id/product_name:OEMB - /sys/devices/virtual/dmi/id/sys_vendor:OEMB - -Expected: - $ grep . /sys/devices/virtual/dmi/id/{bios_vendor,board_name,board_vendor,\ - chassis_vendor,product_name,sys_vendor} - /sys/devices/virtual/dmi/id/bios_vendor:American Megatrends Inc. - /sys/devices/virtual/dmi/id/board_name:Surface 3 - /sys/devices/virtual/dmi/id/board_vendor:Microsoft Corporation - /sys/devices/virtual/dmi/id/chassis_vendor:Microsoft Corporation - /sys/devices/virtual/dmi/id/product_name:Surface 3 - /sys/devices/virtual/dmi/id/sys_vendor:Microsoft Corporation - -Signed-off-by: Tsuchiya Yuto -Patchset: mwifiex ---- - drivers/net/wireless/marvell/mwifiex/pcie_quirks.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -index 2175358dc65d..aec48547a88a 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -+++ b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -@@ -92,6 +92,15 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - }, - .driver_data = (void *)QUIRK_FW_RST_WSID_S3, - }, -+ { -+ .ident = "Surface 3", -+ .matches = { -+ DMI_EXACT_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."), -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "OEMB"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "OEMB"), -+ }, -+ .driver_data = (void *)QUIRK_FW_RST_WSID_S3, -+ }, - {} - }; - --- -2.38.0 - -From e651da0b596b34da881f2eddb924a36cb31f8ec0 Mon Sep 17 00:00:00 2001 -From: Tsuchiya Yuto -Date: Sun, 4 Oct 2020 00:11:49 +0900 -Subject: [PATCH] mwifiex: pcie: disable bridge_d3 for Surface gen4+ - -Currently, mwifiex fw will crash after suspend on recent kernel series. -On Windows, it seems that the root port of wifi will never enter D3 state -(stay on D0 state). And on Linux, disabling the D3 state for the -bridge fixes fw crashing after suspend. - -This commit disables the D3 state of root port on driver initialization -and fixes fw crashing after suspend. - -Signed-off-by: Tsuchiya Yuto -Patchset: mwifiex ---- - drivers/net/wireless/marvell/mwifiex/pcie.c | 7 +++++ - .../wireless/marvell/mwifiex/pcie_quirks.c | 27 +++++++++++++------ - .../wireless/marvell/mwifiex/pcie_quirks.h | 1 + - 3 files changed, 27 insertions(+), 8 deletions(-) - -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c -index 56ae323ca3b5..3b9a1d97f16e 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie.c -+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c -@@ -368,6 +368,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, - const struct pci_device_id *ent) - { - struct pcie_service_card *card; -+ struct pci_dev *parent_pdev = pci_upstream_bridge(pdev); - int ret; - - pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", -@@ -409,6 +410,12 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, - return -1; - } - -+ /* disable bridge_d3 for Surface gen4+ devices to fix fw crashing -+ * after suspend -+ */ -+ if (card->quirks & QUIRK_NO_BRIDGE_D3) -+ parent_pdev->bridge_d3 = false; -+ - return 0; - } - -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -index aec48547a88a..842980db998f 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -+++ b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -@@ -24,7 +24,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Pro 4"), - }, -- .driver_data = (void *)QUIRK_FW_RST_D3COLD, -+ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -+ QUIRK_NO_BRIDGE_D3), - }, - { - .ident = "Surface Pro 5", -@@ -33,7 +34,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), - DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "Surface_Pro_1796"), - }, -- .driver_data = (void *)QUIRK_FW_RST_D3COLD, -+ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -+ QUIRK_NO_BRIDGE_D3), - }, - { - .ident = "Surface Pro 5 (LTE)", -@@ -42,7 +44,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), - DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "Surface_Pro_1807"), - }, -- .driver_data = (void *)QUIRK_FW_RST_D3COLD, -+ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -+ QUIRK_NO_BRIDGE_D3), - }, - { - .ident = "Surface Pro 6", -@@ -50,7 +53,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Pro 6"), - }, -- .driver_data = (void *)QUIRK_FW_RST_D3COLD, -+ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -+ QUIRK_NO_BRIDGE_D3), - }, - { - .ident = "Surface Book 1", -@@ -58,7 +62,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Book"), - }, -- .driver_data = (void *)QUIRK_FW_RST_D3COLD, -+ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -+ QUIRK_NO_BRIDGE_D3), - }, - { - .ident = "Surface Book 2", -@@ -66,7 +71,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Book 2"), - }, -- .driver_data = (void *)QUIRK_FW_RST_D3COLD, -+ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -+ QUIRK_NO_BRIDGE_D3), - }, - { - .ident = "Surface Laptop 1", -@@ -74,7 +80,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Laptop"), - }, -- .driver_data = (void *)QUIRK_FW_RST_D3COLD, -+ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -+ QUIRK_NO_BRIDGE_D3), - }, - { - .ident = "Surface Laptop 2", -@@ -82,7 +89,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Laptop 2"), - }, -- .driver_data = (void *)QUIRK_FW_RST_D3COLD, -+ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -+ QUIRK_NO_BRIDGE_D3), - }, - { - .ident = "Surface 3", -@@ -120,6 +128,9 @@ void mwifiex_initialize_quirks(struct pcie_service_card *card) - if (card->quirks & QUIRK_FW_RST_WSID_S3) - dev_info(&pdev->dev, - "quirk reset_wsid for Surface 3 enabled\n"); -+ if (card->quirks & QUIRK_NO_BRIDGE_D3) -+ dev_info(&pdev->dev, -+ "quirk no_brigde_d3 enabled\n"); - } - - static void mwifiex_pcie_set_power_d3cold(struct pci_dev *pdev) -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h -index 40c95ab24bd7..0162eee0ee3c 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h -+++ b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h -@@ -9,6 +9,7 @@ - * be handled differently. Currently, only S3 is supported. - */ - #define QUIRK_FW_RST_WSID_S3 BIT(1) -+#define QUIRK_NO_BRIDGE_D3 BIT(2) - - void mwifiex_initialize_quirks(struct pcie_service_card *card); - int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev); --- -2.38.0 - -From 3bcb56b5f40e4b16ca8eab0b4548008982c93264 Mon Sep 17 00:00:00 2001 +From e8c9d38dd90a1d2141ee5b36faf122155051a508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 3 Nov 2020 13:28:04 +0100 Subject: [PATCH] mwifiex: Add quirk resetting the PCI bridge on MS Surface @@ -535,10 +133,10 @@ Patchset: mwifiex 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c -index 3b9a1d97f16e..f2ced269b543 100644 +index f7f9277602a5..3aeff40179cf 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c -@@ -1769,9 +1769,21 @@ mwifiex_pcie_send_boot_cmd(struct mwifiex_adapter *adapter, struct sk_buff *skb) +@@ -1762,9 +1762,21 @@ mwifiex_pcie_send_boot_cmd(struct mwifiex_adapter *adapter, struct sk_buff *skb) static int mwifiex_pcie_init_fw_port(struct mwifiex_adapter *adapter) { struct pcie_service_card *card = adapter->card; @@ -561,114 +159,114 @@ index 3b9a1d97f16e..f2ced269b543 100644 if (mwifiex_write_reg(adapter, reg->rx_rdptr, card->rxbd_rdptr | tx_wrap)) { diff --git a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -index 842980db998f..dd914393ffcb 100644 +index dd6d21f1dbfd..f46b06f8d643 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.c -@@ -25,7 +25,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { +@@ -13,7 +13,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Pro 4"), }, - .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -- QUIRK_NO_BRIDGE_D3), -+ QUIRK_NO_BRIDGE_D3 | +- .driver_data = (void *)QUIRK_FW_RST_D3COLD, ++ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | + QUIRK_DO_FLR_ON_BRIDGE), }, { .ident = "Surface Pro 5", -@@ -35,7 +36,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { +@@ -22,7 +23,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "Surface_Pro_1796"), }, - .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -- QUIRK_NO_BRIDGE_D3), -+ QUIRK_NO_BRIDGE_D3 | +- .driver_data = (void *)QUIRK_FW_RST_D3COLD, ++ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | + QUIRK_DO_FLR_ON_BRIDGE), }, { .ident = "Surface Pro 5 (LTE)", -@@ -45,7 +47,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { +@@ -31,7 +33,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "Surface_Pro_1807"), }, - .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -- QUIRK_NO_BRIDGE_D3), -+ QUIRK_NO_BRIDGE_D3 | +- .driver_data = (void *)QUIRK_FW_RST_D3COLD, ++ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | + QUIRK_DO_FLR_ON_BRIDGE), }, { .ident = "Surface Pro 6", -@@ -54,7 +57,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { +@@ -39,7 +42,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Pro 6"), }, - .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -- QUIRK_NO_BRIDGE_D3), -+ QUIRK_NO_BRIDGE_D3 | +- .driver_data = (void *)QUIRK_FW_RST_D3COLD, ++ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | + QUIRK_DO_FLR_ON_BRIDGE), }, { .ident = "Surface Book 1", -@@ -63,7 +67,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { +@@ -47,7 +51,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Book"), }, - .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -- QUIRK_NO_BRIDGE_D3), -+ QUIRK_NO_BRIDGE_D3 | +- .driver_data = (void *)QUIRK_FW_RST_D3COLD, ++ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | + QUIRK_DO_FLR_ON_BRIDGE), }, { .ident = "Surface Book 2", -@@ -72,7 +77,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { +@@ -55,7 +60,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Book 2"), }, - .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -- QUIRK_NO_BRIDGE_D3), -+ QUIRK_NO_BRIDGE_D3 | +- .driver_data = (void *)QUIRK_FW_RST_D3COLD, ++ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | + QUIRK_DO_FLR_ON_BRIDGE), }, { .ident = "Surface Laptop 1", -@@ -81,7 +87,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { +@@ -63,7 +69,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Laptop"), }, - .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -- QUIRK_NO_BRIDGE_D3), -+ QUIRK_NO_BRIDGE_D3 | +- .driver_data = (void *)QUIRK_FW_RST_D3COLD, ++ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | + QUIRK_DO_FLR_ON_BRIDGE), }, { .ident = "Surface Laptop 2", -@@ -90,7 +97,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { +@@ -71,7 +78,8 @@ static const struct dmi_system_id mwifiex_quirk_table[] = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Surface Laptop 2"), }, - .driver_data = (void *)(QUIRK_FW_RST_D3COLD | -- QUIRK_NO_BRIDGE_D3), -+ QUIRK_NO_BRIDGE_D3 | +- .driver_data = (void *)QUIRK_FW_RST_D3COLD, ++ .driver_data = (void *)(QUIRK_FW_RST_D3COLD | + QUIRK_DO_FLR_ON_BRIDGE), }, - { - .ident = "Surface 3", -@@ -131,6 +139,8 @@ void mwifiex_initialize_quirks(struct pcie_service_card *card) - if (card->quirks & QUIRK_NO_BRIDGE_D3) - dev_info(&pdev->dev, - "quirk no_brigde_d3 enabled\n"); + {} + }; +@@ -89,6 +97,8 @@ void mwifiex_initialize_quirks(struct pcie_service_card *card) + dev_info(&pdev->dev, "no quirks enabled\n"); + if (card->quirks & QUIRK_FW_RST_D3COLD) + dev_info(&pdev->dev, "quirk reset_d3cold enabled\n"); + if (card->quirks & QUIRK_DO_FLR_ON_BRIDGE) + dev_info(&pdev->dev, "quirk do_flr_on_bridge enabled\n"); } static void mwifiex_pcie_set_power_d3cold(struct pci_dev *pdev) diff --git a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h -index 0162eee0ee3c..1b7c1e63ac5d 100644 +index d6ff964aec5b..5d30ae39d65e 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h +++ b/drivers/net/wireless/marvell/mwifiex/pcie_quirks.h -@@ -10,6 +10,7 @@ - */ - #define QUIRK_FW_RST_WSID_S3 BIT(1) - #define QUIRK_NO_BRIDGE_D3 BIT(2) -+#define QUIRK_DO_FLR_ON_BRIDGE BIT(3) +@@ -4,6 +4,7 @@ + #include "pcie.h" + + #define QUIRK_FW_RST_D3COLD BIT(0) ++#define QUIRK_DO_FLR_ON_BRIDGE BIT(1) void mwifiex_initialize_quirks(struct pcie_service_card *card); int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev); -- -2.38.0 +2.38.1 -From 01adfefa9e7c14a7e77be36d3c5374d252b5de24 Mon Sep 17 00:00:00 2001 +From 1a5210524194ca0bd4330828ca98e1ecdc02d72f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Thu, 25 Mar 2021 11:33:02 +0100 Subject: [PATCH] Bluetooth: btusb: Lower passive lescan interval on Marvell @@ -744,66 +342,9 @@ index 1bb46cbff0fa..8aa8db5d4cde 100644 (id->driver_info & BTUSB_MEDIATEK)) { hdev->setup = btusb_mtk_setup; -- -2.38.0 - -From c2ed6cb8f8ff11bb1571797542ae1f863024d2b1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= -Date: Tue, 10 Nov 2020 12:49:56 +0100 -Subject: [PATCH] mwifiex: Use non-posted PCI register writes - -On the 88W8897 card it's very important the TX ring write pointer is -updated correctly to its new value before setting the TX ready -interrupt, otherwise the firmware appears to crash (probably because -it's trying to DMA-read from the wrong place). - -Since PCI uses "posted writes" when writing to a register, it's not -guaranteed that a write will happen immediately. That means the pointer -might be outdated when setting the TX ready interrupt, leading to -firmware crashes especially when ASPM L1 and L1 substates are enabled -(because of the higher link latency, the write will probably take -longer). - -So fix those firmware crashes by always forcing non-posted writes. We do -that by simply reading back the register after writing it, just as a lot -of other drivers do. +2.38.1 -There are two reproducers that are fixed with this patch: - -1) During rx/tx traffic and with ASPM L1 substates enabled (the enabled -substates are platform dependent), the firmware crashes and eventually a -command timeout appears in the logs. That crash is fixed by using a -non-posted write in mwifiex_pcie_send_data(). - -2) When sending lots of commands to the card, waking it up from sleep in -very quick intervals, the firmware eventually crashes. That crash -appears to be fixed by some other non-posted write included here. - -Patchset: mwifiex ---- - drivers/net/wireless/marvell/mwifiex/pcie.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c -index f2ced269b543..68f827d34b76 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie.c -+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c -@@ -226,6 +226,12 @@ static int mwifiex_write_reg(struct mwifiex_adapter *adapter, int reg, u32 data) - - iowrite32(data, card->pci_mmap1 + reg); - -+ /* Do a read-back, which makes the write non-posted, ensuring the -+ * completion before returning. -+ * The firmware of the 88W8897 card is buggy and this avoids crashes. -+ */ -+ ioread32(card->pci_mmap1 + reg); -+ - return 0; - } - --- -2.38.0 - -From 850913cd3d364fa006bbc63167ee8a044ac10444 Mon Sep 17 00:00:00 2001 +From abff062e2f35a8e58053f248fc4dd8b808a93749 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sat, 27 Feb 2021 00:45:52 +0100 Subject: [PATCH] ath10k: Add module parameters to override board files @@ -922,9 +463,9 @@ index d1ac64026cb3..5c883a12d9f8 100644 ret = firmware_request_nowarn(&fw, filename, ar->dev); ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot fw request '%s': %d\n", -- -2.38.0 +2.38.1 -From d6c7ff8753ac6460d826d755f1f3e6386105004e Mon Sep 17 00:00:00 2001 +From 5687662d0c5880de172f5cd6667034a2197e772a Mon Sep 17 00:00:00 2001 From: Dorian Stoll Date: Thu, 30 Jul 2020 13:21:53 +0200 Subject: [PATCH] misc: mei: Add missing IPTS device IDs @@ -960,9 +501,9 @@ index 5435604327a7..1165ee4f5928 100644 {MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH15_CFG)}, -- -2.38.0 +2.38.1 -From 19a643df0c2269755fe50e53f2bda8bbf02382d4 Mon Sep 17 00:00:00 2001 +From a09de6da693be52da43fe35fc7ff76269f162237 Mon Sep 17 00:00:00 2001 From: Dorian Stoll Date: Thu, 6 Aug 2020 11:20:41 +0200 Subject: [PATCH] misc: Add support for Intel Precise Touch & Stylus @@ -2428,9 +1969,9 @@ index 000000000000..53fb86a88f97 + +#endif /* _IPTS_UAPI_H_ */ -- -2.38.0 +2.38.1 -From 3f3b7b3bf8c60a9212c0cc2c2cf31d9ca763e1cd Mon Sep 17 00:00:00 2001 +From 730820b1dbfd732a51653bbe789a84c0669575ad Mon Sep 17 00:00:00 2001 From: Liban Hannan Date: Tue, 12 Apr 2022 23:31:12 +0100 Subject: [PATCH] iommu: ipts: use IOMMU passthrough mode for IPTS @@ -2452,7 +1993,7 @@ Patchset: ipts 1 file changed, 24 insertions(+) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c -index 31bc50e538a3..d8ecca292f93 100644 +index ecc0b05b2796..4c895b5f7e2d 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -37,6 +37,8 @@ @@ -2479,7 +2020,7 @@ index 31bc50e538a3..d8ecca292f93 100644 const struct iommu_ops intel_iommu_ops; -@@ -2602,6 +2606,9 @@ static int device_def_domain_type(struct device *dev) +@@ -2603,6 +2607,9 @@ static int device_def_domain_type(struct device *dev) if ((iommu_identity_mapping & IDENTMAP_GFX) && IS_GFX_DEVICE(pdev)) return IOMMU_DOMAIN_IDENTITY; @@ -2489,7 +2030,7 @@ index 31bc50e538a3..d8ecca292f93 100644 } return 0; -@@ -2991,6 +2998,9 @@ static int __init init_dmars(void) +@@ -2992,6 +2999,9 @@ static int __init init_dmars(void) if (!dmar_map_gfx) iommu_identity_mapping |= IDENTMAP_GFX; @@ -2499,7 +2040,7 @@ index 31bc50e538a3..d8ecca292f93 100644 check_tylersburg_isoch(); ret = si_domain_init(hw_pass_through); -@@ -4788,6 +4798,17 @@ static void quirk_iommu_igfx(struct pci_dev *dev) +@@ -4793,6 +4803,17 @@ static void quirk_iommu_igfx(struct pci_dev *dev) dmar_map_gfx = 0; } @@ -2517,7 +2058,7 @@ index 31bc50e538a3..d8ecca292f93 100644 /* G4x/GM45 integrated gfx dmar support is totally busted. */ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_igfx); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e00, quirk_iommu_igfx); -@@ -4823,6 +4844,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx); +@@ -4828,6 +4849,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x163A, quirk_iommu_igfx); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x163D, quirk_iommu_igfx); @@ -2528,9 +2069,9 @@ index 31bc50e538a3..d8ecca292f93 100644 { if (risky_device(dev)) -- -2.38.0 +2.38.1 -From aea7c2d43bb6419f5abc89441fa6dddea59b414c Mon Sep 17 00:00:00 2001 +From 8696c6504d1ee31bca940d8fd1dddb5fdaaf00e6 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sat, 25 Jul 2020 17:19:53 +0200 Subject: [PATCH] i2c: acpi: Implement RawBytes read access @@ -2640,9 +2181,9 @@ index 08b561f0709d..d7c397bce0f0 100644 dev_warn(&adapter->dev, "protocol 0x%02x not supported for client 0x%02x\n", accessor_type, client->addr); -- -2.38.0 +2.38.1 -From 6f7f7ad9af793bcb4b60564b5a5da353b0690960 Mon Sep 17 00:00:00 2001 +From 7e4238440be15bc04cfd8d127367a209e0940022 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sat, 13 Feb 2021 16:41:18 +0100 Subject: [PATCH] platform/surface: Add driver for Surface Book 1 dGPU switch @@ -2863,9 +2404,9 @@ index 000000000000..8b816ed8f35c +MODULE_DESCRIPTION("Discrete GPU Power-Switch for Surface Book 1"); +MODULE_LICENSE("GPL"); -- -2.38.0 +2.38.1 -From 5cf259bfcbbe641c70ad6c5eea62ebc1e6e07bd9 Mon Sep 17 00:00:00 2001 +From 8991bf274ff740a7450f836ede983fe78831c106 Mon Sep 17 00:00:00 2001 From: Sachi King Date: Tue, 5 Oct 2021 00:05:09 +1100 Subject: [PATCH] Input: soc_button_array - support AMD variant Surface devices @@ -2940,9 +2481,9 @@ index 480476121c01..36e1bf7b7a01 100644 /* -- -2.38.0 +2.38.1 -From 1bdc0fbcda34412b4a4bf0372d4cf776c7ca43a3 Mon Sep 17 00:00:00 2001 +From 135725875006c05db9b8b4d2a9fb2762dce97234 Mon Sep 17 00:00:00 2001 From: Sachi King Date: Tue, 5 Oct 2021 00:22:57 +1100 Subject: [PATCH] platform/surface: surfacepro3_button: don't load on amd @@ -3012,9 +2553,9 @@ index 242fb690dcaf..30eea54dbb47 100644 -- -2.38.0 +2.38.1 -From 1ffe7e9746dba16ca1936198703166d8c27e1649 Mon Sep 17 00:00:00 2001 +From 57fa94c5a26bf24cdb99b9f7135b156f379ba742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Thu, 5 Nov 2020 13:09:45 +0100 Subject: [PATCH] hid/multitouch: Turn off Type Cover keyboard backlight when @@ -3245,9 +2786,9 @@ index 91a4d3fc30e0..458537bf4a8e 100644 { .driver_data = MT_CLS_GOOGLE, HID_DEVICE(HID_BUS_ANY, HID_GROUP_ANY, USB_VENDOR_ID_GOOGLE, -- -2.38.0 +2.38.1 -From 7f0b06e3e5b7df1ddcb954906f651f727f10717d Mon Sep 17 00:00:00 2001 +From b2b83714f120894994c701f2ccaddcbceab37b7c Mon Sep 17 00:00:00 2001 From: PJungkamp Date: Fri, 25 Feb 2022 12:04:25 +0100 Subject: [PATCH] hid/multitouch: Add support for surface pro type cover tablet @@ -3545,9 +3086,9 @@ index 458537bf4a8e..3d7d002a662f 100644 unregister_pm_notifier(&td->pm_notifier); del_timer_sync(&td->release_timer); -- -2.38.0 +2.38.1 -From f7a93cc0fd6be37a77b98c2abc57211d8269730e Mon Sep 17 00:00:00 2001 +From 1da322aaee27fbeb57d1c5ae4c9815e61c13a2ee Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 10 Oct 2021 20:56:57 +0200 Subject: [PATCH] ACPI: delay enumeration of devices with a _DEP pointing to an @@ -3621,9 +3162,9 @@ index 42cec8120f18..72d0e599120f 100644 * Do not enumerate devices with enumeration_by_parent flag set as * they will be enumerated by their respective parents. -- -2.38.0 +2.38.1 -From e53ff4336793833ca7475d11409cf61203370f05 Mon Sep 17 00:00:00 2001 +From a01e3c26872c6fd5872fbaacbc28b049666ceefc Mon Sep 17 00:00:00 2001 From: zouxiaoh Date: Fri, 25 Jun 2021 08:52:59 +0800 Subject: [PATCH] iommu: intel-ipu: use IOMMU passthrough mode for Intel IPUs @@ -3649,7 +3190,7 @@ Patchset: cameras 1 file changed, 30 insertions(+) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c -index d8ecca292f93..e3b37a19b6bc 100644 +index 4c895b5f7e2d..f68f031dee46 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -37,6 +37,12 @@ @@ -3680,7 +3221,7 @@ index d8ecca292f93..e3b37a19b6bc 100644 #define IDENTMAP_IPTS 16 const struct iommu_ops intel_iommu_ops; -@@ -2607,6 +2615,9 @@ static int device_def_domain_type(struct device *dev) +@@ -2608,6 +2616,9 @@ static int device_def_domain_type(struct device *dev) if ((iommu_identity_mapping & IDENTMAP_GFX) && IS_GFX_DEVICE(pdev)) return IOMMU_DOMAIN_IDENTITY; @@ -3690,7 +3231,7 @@ index d8ecca292f93..e3b37a19b6bc 100644 if ((iommu_identity_mapping & IDENTMAP_IPTS) && IS_IPTS(pdev)) return IOMMU_DOMAIN_IDENTITY; } -@@ -2998,6 +3009,9 @@ static int __init init_dmars(void) +@@ -2999,6 +3010,9 @@ static int __init init_dmars(void) if (!dmar_map_gfx) iommu_identity_mapping |= IDENTMAP_GFX; @@ -3700,7 +3241,7 @@ index d8ecca292f93..e3b37a19b6bc 100644 if (!dmar_map_ipts) iommu_identity_mapping |= IDENTMAP_IPTS; -@@ -4798,6 +4812,18 @@ static void quirk_iommu_igfx(struct pci_dev *dev) +@@ -4803,6 +4817,18 @@ static void quirk_iommu_igfx(struct pci_dev *dev) dmar_map_gfx = 0; } @@ -3719,7 +3260,7 @@ index d8ecca292f93..e3b37a19b6bc 100644 static void quirk_iommu_ipts(struct pci_dev *dev) { if (!IS_IPTS(dev)) -@@ -4809,6 +4835,7 @@ static void quirk_iommu_ipts(struct pci_dev *dev) +@@ -4814,6 +4840,7 @@ static void quirk_iommu_ipts(struct pci_dev *dev) pci_info(dev, "Passthrough IOMMU for IPTS\n"); dmar_map_ipts = 0; } @@ -3727,7 +3268,7 @@ index d8ecca292f93..e3b37a19b6bc 100644 /* G4x/GM45 integrated gfx dmar support is totally busted. */ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_igfx); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e00, quirk_iommu_igfx); -@@ -4844,6 +4871,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx); +@@ -4849,6 +4876,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x163A, quirk_iommu_igfx); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x163D, quirk_iommu_igfx); @@ -3738,9 +3279,9 @@ index d8ecca292f93..e3b37a19b6bc 100644 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9D3E, quirk_iommu_ipts); -- -2.38.0 +2.38.1 -From 62a30b7c7a3c825600efe1a70f6c670a655ea5e2 Mon Sep 17 00:00:00 2001 +From b230cd2a5edce8159650e62d0d9d08f747cad31c Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sun, 10 Oct 2021 20:57:02 +0200 Subject: [PATCH] platform/x86: int3472: Enable I2c daisy chain @@ -3775,9 +3316,9 @@ index 22f61b47f9e5..e1de1ff40bba 100644 return 0; -- -2.38.0 +2.38.1 -From 16fff23e17f0a0bde5e484e2aaba0940aff63ce1 Mon Sep 17 00:00:00 2001 +From 93168a83c8861680db54dde07dfcb10d42c1e9c7 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Thu, 28 Oct 2021 21:55:16 +0100 Subject: [PATCH] media: i2c: Add driver for DW9719 VCM @@ -4281,9 +3822,9 @@ index 000000000000..8451c75b696b +MODULE_DESCRIPTION("DW9719 VCM Driver"); +MODULE_LICENSE("GPL"); -- -2.38.0 +2.38.1 -From ed77e610029cf5cdcbed647670d963a8ade49d10 Mon Sep 17 00:00:00 2001 +From 88c4b8f25be8353c1c57dbdcb925b209e02ac49d Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 4 May 2022 23:21:45 +0100 Subject: [PATCH] media: ipu3-cio2: Move functionality from .complete() to @@ -4396,9 +3937,9 @@ index a3fe547b7fce..5648f29ced7b 100644 static int cio2_parse_firmware(struct cio2_device *cio2) -- -2.38.0 +2.38.1 -From bac377c1e75c9aea4f7fcee09db02c7c0be1e40d Mon Sep 17 00:00:00 2001 +From 7a735d80c21df58382d2c3d33748f867bf05fd67 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Thu, 2 Jun 2022 22:15:56 +0100 Subject: [PATCH] media: ipu3-cio2: Re-add .complete() to ipu3-cio2 @@ -4439,9 +3980,9 @@ index 5648f29ced7b..957a30cd369d 100644 static int cio2_parse_firmware(struct cio2_device *cio2) -- -2.38.0 +2.38.1 -From 2cdd92525b8a27fd8c8edf6cb1e1c5d3cb233b92 Mon Sep 17 00:00:00 2001 +From 9e13a833faa1b5e7110a8ef939fd628d16cbfef4 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Fri, 15 Jul 2022 23:48:00 +0200 Subject: [PATCH] drivers/media/i2c: Fix DW9719 dependencies @@ -4468,90 +4009,9 @@ index 98d081efeef7..c67966cafe10 100644 select VIDEO_V4L2_SUBDEV_API select V4L2_ASYNC -- -2.38.0 - -From a3051d35806d33fe6fb31040ff6c0a1f81a31e37 Mon Sep 17 00:00:00 2001 -From: Sakari Ailus -Date: Thu, 25 Aug 2022 21:36:37 +0300 -Subject: [PATCH] ipu3-imgu: Fix NULL pointer dereference in active selection - access - -What the IMGU driver did was that it first acquired the pointers to active -and try V4L2 subdev state, and only then figured out which one to use. - -The problem with that approach and a later patch (see Fixes: tag) is that -as sd_state argument to v4l2_subdev_get_try_crop() et al is NULL, there is -now an attempt to dereference that. - -Fix this. - -Also rewrap lines a little. - -Fixes: 0d346d2a6f54 ("media: v4l2-subdev: add subdev-wide state struct") -Cc: stable@vger.kernel.org # for v5.14 and later -Signed-off-by: Sakari Ailus -Reviewed-by: Bingbu Cao -Patchset: cameras ---- - drivers/staging/media/ipu3/ipu3-v4l2.c | 31 ++++++++++++-------------- - 1 file changed, 14 insertions(+), 17 deletions(-) - -diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c -index d1c539cefba8..2234bb8d48b3 100644 ---- a/drivers/staging/media/ipu3/ipu3-v4l2.c -+++ b/drivers/staging/media/ipu3/ipu3-v4l2.c -@@ -192,33 +192,30 @@ static int imgu_subdev_get_selection(struct v4l2_subdev *sd, - struct v4l2_subdev_state *sd_state, - struct v4l2_subdev_selection *sel) - { -- struct v4l2_rect *try_sel, *r; -- struct imgu_v4l2_subdev *imgu_sd = container_of(sd, -- struct imgu_v4l2_subdev, -- subdev); -+ struct imgu_v4l2_subdev *imgu_sd = -+ container_of(sd, struct imgu_v4l2_subdev, subdev); - - if (sel->pad != IMGU_NODE_IN) - return -EINVAL; - - switch (sel->target) { - case V4L2_SEL_TGT_CROP: -- try_sel = v4l2_subdev_get_try_crop(sd, sd_state, sel->pad); -- r = &imgu_sd->rect.eff; -- break; -+ if (sel->which == V4L2_SUBDEV_FORMAT_TRY) -+ sel->r = *v4l2_subdev_get_try_crop(sd, sd_state, -+ sel->pad); -+ else -+ sel->r = imgu_sd->rect.eff; -+ return 0; - case V4L2_SEL_TGT_COMPOSE: -- try_sel = v4l2_subdev_get_try_compose(sd, sd_state, sel->pad); -- r = &imgu_sd->rect.bds; -- break; -+ if (sel->which == V4L2_SUBDEV_FORMAT_TRY) -+ sel->r = *v4l2_subdev_get_try_compose(sd, sd_state, -+ sel->pad); -+ else -+ sel->r = imgu_sd->rect.bds; -+ return 0; - default: - return -EINVAL; - } -- -- if (sel->which == V4L2_SUBDEV_FORMAT_TRY) -- sel->r = *try_sel; -- else -- sel->r = *r; -- -- return 0; - } - - static int imgu_subdev_set_selection(struct v4l2_subdev *sd, --- -2.38.0 +2.38.1 -From 07342c91ee73cfa7e1d25cecd6aa4e0b5961659b Mon Sep 17 00:00:00 2001 +From 6036672bab4a63b554485dca3b743df8047b9ac3 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Wed, 7 Sep 2022 15:38:08 +0200 Subject: [PATCH] ipu3-imgu: Fix NULL pointer dereference in @@ -4680,9 +4140,9 @@ index 2234bb8d48b3..490ba0eb249b 100644 } -- -2.38.0 +2.38.1 -From 7f05ef4c0b13280490b8ec2e57b2c030e4f52be3 Mon Sep 17 00:00:00 2001 +From 6ebcbcebe441381c19768044c655735725139c99 Mon Sep 17 00:00:00 2001 From: Sachi King Date: Sat, 29 May 2021 17:47:38 +1000 Subject: [PATCH] ACPI: Add quirk for Surface Laptop 4 AMD missing irq 7 @@ -4747,9 +4207,9 @@ index 907cc98b1938..0116d27b29ea 100644 mp_config_acpi_legacy_irqs(); -- -2.38.0 +2.38.1 -From c9cb2f9530fa98146ae22dc43e0bed4d317c0808 Mon Sep 17 00:00:00 2001 +From a2037d0d5c58bd7973ad372c7788fc31fa2f9b72 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Thu, 3 Jun 2021 14:04:26 +0200 Subject: [PATCH] ACPI: Add AMD 13" Surface Laptop 4 model to irq 7 override @@ -4789,5 +4249,5 @@ index 0116d27b29ea..af102c6f8e5b 100644 }; -- -2.38.0 +2.38.1 diff --git a/SOURCES/patch-6.0-redhat.patch b/SOURCES/patch-6.0-redhat.patch index b1ab036..d780947 100644 --- a/SOURCES/patch-6.0-redhat.patch +++ b/SOURCES/patch-6.0-redhat.patch @@ -15,7 +15,8 @@ drivers/firmware/efi/efi.c | 124 +++++++++++++++------ drivers/firmware/efi/secureboot.c | 38 +++++++ drivers/firmware/sysfb.c | 18 ++- - drivers/gpu/drm/vc4/vc4_hdmi.c | 46 +++++++- + drivers/gpu/drm/tiny/simpledrm.c | 65 +++++++++-- + drivers/gpu/drm/vc4/vc4_hdmi.c | 39 ++++++- drivers/gpu/drm/vc4/vc4_hdmi.h | 1 + drivers/hid/hid-rmi.c | 64 ----------- drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 ++++ @@ -34,16 +35,17 @@ init/Kconfig | 2 +- kernel/module/signing.c | 9 +- net/ipv4/fib_semantics.c | 8 +- + scripts/pahole-flags.sh | 3 + scripts/tags.sh | 2 + security/integrity/platform_certs/load_uefi.c | 6 +- security/lockdown/Kconfig | 13 +++ security/lockdown/lockdown.c | 1 + security/security.c | 6 + tools/testing/selftests/net/fib_nexthops.sh | 5 + - 42 files changed, 555 insertions(+), 192 deletions(-) + 44 files changed, 609 insertions(+), 199 deletions(-) diff --git a/Makefile b/Makefile -index 62a7398c8d06..a4d699f4c09d 100644 +index c2144a4bb2ef..4e8ae58e2ec1 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,10 @@ $(if $(filter __%, $(MAKECMDGOALS)), \ @@ -597,8 +599,110 @@ index 1f276f108cc9..7039ad9bdf7f 100644 pd = sysfb_create_simplefb(si, &mode); if (!IS_ERR(pd)) goto unlock_mutex; +diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c +index 5422363690e7..a5b500811892 100644 +--- a/drivers/gpu/drm/tiny/simpledrm.c ++++ b/drivers/gpu/drm/tiny/simpledrm.c +@@ -569,20 +569,44 @@ static int simpledrm_device_init_mm(struct simpledrm_device *sdev) + */ + + /* +- * Support all formats of simplefb and maybe more; in order +- * of preference. The display's update function will do any ++ * Support the subset of formats that we have conversion helpers for, ++ * in order of preference. The display's update function will do any + * conversion necessary. + * + * TODO: Add blit helpers for remaining formats and uncomment + * constants. + */ +-static const uint32_t simpledrm_default_formats[] = { ++ ++/* ++ * Supported conversions to RGB565 and RGB888: ++ * from [AX]RGB8888 ++ */ ++static const uint32_t simpledrm_primary_plane_formats_base[] = { ++ DRM_FORMAT_XRGB8888, ++ DRM_FORMAT_ARGB8888, ++}; ++ ++/* ++ * Supported conversions to [AX]RGB8888: ++ * A/X variants (no-op) ++ * from RGB565 ++ * from RGB888 ++ */ ++static const uint32_t simpledrm_primary_plane_formats_xrgb8888[] = { + DRM_FORMAT_XRGB8888, + DRM_FORMAT_ARGB8888, ++ DRM_FORMAT_RGB888, + DRM_FORMAT_RGB565, + //DRM_FORMAT_XRGB1555, + //DRM_FORMAT_ARGB1555, +- DRM_FORMAT_RGB888, ++}; ++ ++/* ++ * Supported conversions to [AX]RGB2101010: ++ * A/X variants (no-op) ++ * from [AX]RGB8888 ++ */ ++static const uint32_t simpledrm_primary_plane_formats_xrgb2101010[] = { + DRM_FORMAT_XRGB2101010, + DRM_FORMAT_ARGB2101010, + }; +@@ -744,7 +768,8 @@ static const uint32_t *simpledrm_device_formats(struct simpledrm_device *sdev, + size_t *nformats_out) + { + struct drm_device *dev = &sdev->dev; +- size_t i; ++ const uint32_t *conv_formats; ++ size_t i, conv_nformats; + + if (sdev->nformats) + goto out; /* don't rebuild list on recurring calls */ +@@ -753,11 +778,35 @@ static const uint32_t *simpledrm_device_formats(struct simpledrm_device *sdev, + sdev->formats[0] = sdev->format->format; + sdev->nformats = 1; + ++ switch (sdev->format->format) { ++ case DRM_FORMAT_RGB565: ++ case DRM_FORMAT_RGB888: ++ conv_formats = simpledrm_primary_plane_formats_base; ++ conv_nformats = ARRAY_SIZE(simpledrm_primary_plane_formats_base); ++ break; ++ case DRM_FORMAT_XRGB8888: ++ case DRM_FORMAT_ARGB8888: ++ conv_formats = simpledrm_primary_plane_formats_xrgb8888; ++ conv_nformats = ARRAY_SIZE(simpledrm_primary_plane_formats_xrgb8888); ++ break; ++ case DRM_FORMAT_XRGB2101010: ++ case DRM_FORMAT_ARGB2101010: ++ conv_formats = simpledrm_primary_plane_formats_xrgb2101010; ++ conv_nformats = ARRAY_SIZE(simpledrm_primary_plane_formats_xrgb2101010); ++ break; ++ default: ++ conv_formats = NULL; ++ conv_nformats = 0; ++ drm_warn(dev, "Format conversion helpers required to add extra formats.\n"); ++ break; ++ } ++ ++ + /* default formats go second */ +- for (i = 0; i < ARRAY_SIZE(simpledrm_default_formats); ++i) { +- if (simpledrm_default_formats[i] == sdev->format->format) ++ for (i = 0; i < conv_nformats; ++i) { ++ if (conv_formats[i] == sdev->format->format) + continue; /* native format already went first */ +- sdev->formats[sdev->nformats] = simpledrm_default_formats[i]; ++ sdev->formats[sdev->nformats] = conv_formats[i]; + sdev->nformats++; + } + diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c -index 1e5f68704d7d..4e5bba0822a5 100644 +index 780a19a75c3f..281f01e8cbca 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -2712,9 +2712,16 @@ static int vc4_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) @@ -640,20 +744,15 @@ index 1e5f68704d7d..4e5bba0822a5 100644 return 0; } -@@ -2869,12 +2882,37 @@ static int vc4_hdmi_runtime_resume(struct device *dev) +@@ -2869,6 +2882,7 @@ static int vc4_hdmi_runtime_resume(struct device *dev) struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); unsigned long __maybe_unused flags; u32 __maybe_unused value; + unsigned long rate; int ret; -- ret = clk_prepare_enable(vc4_hdmi->hsm_clock); -+ /* -+ * The HSM clock is in the HDMI power domain, so we need to set -+ * its frequency while the power domain is active so that it -+ * keeps its rate. -+ */ -+ ret = clk_set_min_rate(vc4_hdmi->hsm_rpm_clock, HSM_MIN_CLOCK_FREQ); + /* +@@ -2884,6 +2898,25 @@ static int vc4_hdmi_runtime_resume(struct device *dev) if (ret) return ret; @@ -679,7 +778,7 @@ index 1e5f68704d7d..4e5bba0822a5 100644 if (vc4_hdmi->variant->reset) vc4_hdmi->variant->reset(vc4_hdmi); -@@ -2896,6 +2934,10 @@ static int vc4_hdmi_runtime_resume(struct device *dev) +@@ -2905,6 +2938,10 @@ static int vc4_hdmi_runtime_resume(struct device *dev) #endif return 0; @@ -1086,7 +1185,7 @@ index 3a808146b50f..c1a3f3057921 100644 * Changes the default domain of an iommu group that has *only* one device * diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c -index 59e4b188fc71..9c6bfc02e6a1 100644 +index ed47c256dbd2..2af613f7353f 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -250,6 +250,9 @@ static void nvme_delete_ctrl_sync(struct nvme_ctrl *ctrl) @@ -1465,6 +1564,18 @@ index 2dc97583d279..e9a7f70a54df 100644 nh = fib_info_nh(fi, 0); if (cfg->fc_encap) { if (fib_encap_match(net, cfg->fc_encap_type, +diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh +index 0d99ef17e4a5..81c8e082ec57 100755 +--- a/scripts/pahole-flags.sh ++++ b/scripts/pahole-flags.sh +@@ -20,4 +20,7 @@ if [ "${pahole_ver}" -ge "122" ]; then + extra_paholeopt="${extra_paholeopt} -j" + fi + ++# temporary workaround to disable enum64 ++extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64" ++ + echo ${extra_paholeopt} diff --git a/scripts/tags.sh b/scripts/tags.sh index e137cf15aae9..2ed2341f7967 100755 --- a/scripts/tags.sh @@ -1571,3 +1682,30 @@ index d5a0dd548989..ee5e98204d3d 100755 } ipv4_grp_fcnal() +From 90c4bd0059367922f88768784bfb7c5ec1bc846c Mon Sep 17 00:00:00 2001 +From: "Justin M. Forbes" +Date: Thu, 3 Nov 2022 11:34:03 -0500 +Subject: [PATCH] Revert "disable enum64 BTF in fedora rawhide" + +This option is not supported by older pahole versions. + +This reverts commit 7ab8e0d8b46b7f768e37f8ff39ccae2ecc897396. +--- + scripts/pahole-flags.sh | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh +index 81c8e082ec57..0d99ef17e4a5 100755 +--- a/scripts/pahole-flags.sh ++++ b/scripts/pahole-flags.sh +@@ -20,7 +20,4 @@ if [ "${pahole_ver}" -ge "122" ]; then + extra_paholeopt="${extra_paholeopt} -j" + fi + +-# temporary workaround to disable enum64 +-extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64" +- + echo ${extra_paholeopt} +-- +2.37.3 + diff --git a/SPECS/kernel.spec b/SPECS/kernel.spec index dfb30e3..a2e3712 100755 --- a/SPECS/kernel.spec +++ b/SPECS/kernel.spec @@ -122,17 +122,17 @@ Summary: The Linux kernel # the --with-release option overrides this setting.) %define debugbuildsenabled 1 %define buildid .fsync -%define specversion 6.0.5 +%define specversion 6.0.7 %define patchversion 6.0 %define pkgrelease 200 %define kversion 6 -%define tarfile_release 6.0.5 +%define tarfile_release 6.0.7 # This is needed to do merge window version magic %define patchlevel 0 # This allows pkg_release to have configurable %%{?dist} tag %define specrelease 201%{?buildid}%{?dist} # This defines the kabi tarball version -%define kabiversion 6.0.5 +%define kabiversion 6.0.7 # If this variable is set to 1, a bpf selftests build failure will cause a # fatal kernel package build error @@ -3219,10 +3219,20 @@ fi # # %changelog -* Fri Oct 28 2022 Jan Drögehoff - 6.0.5-201.fsync -- kernel-fsync v6.0.5 +* Sat Nov 05 2022 Jan Drögehoff - 6.0.7-201.fsync +- kernel-fsync v6.0.7 -* Wed Oct 26 2022 Justin M. Forbes [6.0.5-200] +* Thu Nov 03 2022 Justin M. Forbes [6.0.7-0] +- Add revert patch for BTF workaround (Justin M. Forbes) +- Linux v6.0.7 + +* Tue Nov 01 2022 Justin M. Forbes [6.0.6-0] +- drm/simpledrm: Only advertise formats that are supported (Justin M. Forbes) +- disable enum64 BTF in fedora rawhide (Jiri Olsa) +- Update patch for 6.0 (Justin M. Forbes) +- Linux v6.0.6 + +* Wed Oct 26 2022 Justin M. Forbes [6.0.5-0] - Add release targets for stable rebase (Justin M. Forbes) - Linux v6.0.5 -- cgit v1.2.3