From: Sasha Levin Date: Sat, 28 Dec 2024 14:19:52 +0000 (-0500) Subject: Fixes for 5.10 X-Git-Tag: v6.1.123~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a83f9fce357b600c78c284354f901327cc833fb2;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.10 Signed-off-by: Sasha Levin --- diff --git a/queue-5.10/alsa-hda-conexant-fix-z60mr100-startup-pop-issue.patch b/queue-5.10/alsa-hda-conexant-fix-z60mr100-startup-pop-issue.patch new file mode 100644 index 00000000000..0dafaadb1f7 --- /dev/null +++ b/queue-5.10/alsa-hda-conexant-fix-z60mr100-startup-pop-issue.patch @@ -0,0 +1,100 @@ +From b1bc9799d23beeb40a4d0f567d7b17e04b8dc367 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 29 Nov 2024 09:44:41 +0800 +Subject: ALSA: hda/conexant: fix Z60MR100 startup pop issue + +From: bo liu + +[ Upstream commit 947c4012f8f03a8bb946beb6e5294d5e32817d67 ] + +When Z60MR100 startup, speaker will output a pop. To fix this issue, +we mute codec by init verbs in bios when system startup, and set GPIO +to low to unmute codec in codec driver when it loaded . + +[ white space fixes and compile warning fix by tiwai ] + +Signed-off-by: bo liu +Link: https://patch.msgid.link/20241129014441.437205-1-bo.liu@senarytech.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_conexant.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c +index 30025716164a..40853b26a1c3 100644 +--- a/sound/pci/hda/patch_conexant.c ++++ b/sound/pci/hda/patch_conexant.c +@@ -238,6 +238,7 @@ enum { + CXT_FIXUP_HP_MIC_NO_PRESENCE, + CXT_PINCFG_SWS_JS201D, + CXT_PINCFG_TOP_SPEAKER, ++ CXT_FIXUP_HP_A_U, + }; + + /* for hda_fixup_thinkpad_acpi() */ +@@ -705,6 +706,18 @@ static void cxt_setup_mute_led(struct hda_codec *codec, + } + } + ++static void cxt_setup_gpio_unmute(struct hda_codec *codec, ++ unsigned int gpio_mute_mask) ++{ ++ if (gpio_mute_mask) { ++ // set gpio data to 0. ++ snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA, 0); ++ snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_MASK, gpio_mute_mask); ++ snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DIRECTION, gpio_mute_mask); ++ snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_STICKY_MASK, 0); ++ } ++} ++ + static void cxt_fixup_mute_led_gpio(struct hda_codec *codec, + const struct hda_fixup *fix, int action) + { +@@ -719,6 +732,15 @@ static void cxt_fixup_hp_zbook_mute_led(struct hda_codec *codec, + cxt_setup_mute_led(codec, 0x10, 0x20); + } + ++static void cxt_fixup_hp_a_u(struct hda_codec *codec, ++ const struct hda_fixup *fix, int action) ++{ ++ // Init vers in BIOS mute the spk/hp by set gpio high to avoid pop noise, ++ // so need to unmute once by clearing the gpio data when runs into the system. ++ if (action == HDA_FIXUP_ACT_INIT) ++ cxt_setup_gpio_unmute(codec, 0x2); ++} ++ + /* ThinkPad X200 & co with cxt5051 */ + static const struct hda_pintbl cxt_pincfg_lenovo_x200[] = { + { 0x16, 0x042140ff }, /* HP (seq# overridden) */ +@@ -943,6 +965,10 @@ static const struct hda_fixup cxt_fixups[] = { + .type = HDA_FIXUP_FUNC, + .v.func = cxt_fixup_sirius_top_speaker, + }, ++ [CXT_FIXUP_HP_A_U] = { ++ .type = HDA_FIXUP_FUNC, ++ .v.func = cxt_fixup_hp_a_u, ++ }, + }; + + static const struct snd_pci_quirk cxt5045_fixups[] = { +@@ -1017,6 +1043,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = { + SND_PCI_QUIRK(0x103c, 0x8457, "HP Z2 G4 mini", CXT_FIXUP_HP_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x103c, 0x8458, "HP Z2 G4 mini premium", CXT_FIXUP_HP_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1043, 0x138d, "Asus", CXT_FIXUP_HEADPHONE_MIC_PIN), ++ SND_PCI_QUIRK(0x14f1, 0x0252, "MBX-Z60MR100", CXT_FIXUP_HP_A_U), + SND_PCI_QUIRK(0x14f1, 0x0265, "SWS JS201D", CXT_PINCFG_SWS_JS201D), + SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT_FIXUP_OLPC_XO), + SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410), +@@ -1062,6 +1089,7 @@ static const struct hda_model_fixup cxt5066_fixup_models[] = { + { .id = CXT_PINCFG_LENOVO_NOTEBOOK, .name = "lenovo-20149" }, + { .id = CXT_PINCFG_SWS_JS201D, .name = "sws-js201d" }, + { .id = CXT_PINCFG_TOP_SPEAKER, .name = "sirius-top-speaker" }, ++ { .id = CXT_FIXUP_HP_A_U, .name = "HP-U-support" }, + {} + }; + +-- +2.39.5 + diff --git a/queue-5.10/platform-x86-asus-nb-wmi-ignore-unknown-event-0xcf.patch b/queue-5.10/platform-x86-asus-nb-wmi-ignore-unknown-event-0xcf.patch new file mode 100644 index 00000000000..ff3fb858379 --- /dev/null +++ b/queue-5.10/platform-x86-asus-nb-wmi-ignore-unknown-event-0xcf.patch @@ -0,0 +1,70 @@ +From bf9d4adccc489ee89f30c06610064d1bf142f613 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 23 Nov 2024 23:47:00 +0100 +Subject: platform/x86: asus-nb-wmi: Ignore unknown event 0xCF +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Armin Wolf + +[ Upstream commit e9fba20c29e27dc99e55e1c550573a114561bf8c ] + +On the Asus X541UAK an unknown event 0xCF is emited when the charger +is plugged in. This is caused by the following AML code: + + If (ACPS ()) + { + ACPF = One + Local0 = 0x58 + If (ATKP) + { + ^^^^ATKD.IANE (0xCF) + } + } + Else + { + ACPF = Zero + Local0 = 0x57 + } + + Notify (AC0, 0x80) // Status Change + If (ATKP) + { + ^^^^ATKD.IANE (Local0) + } + + Sleep (0x64) + PNOT () + Sleep (0x0A) + NBAT (0x80) + +Ignore the 0xCF event to silence the unknown event warning. + +Reported-by: Pau Espin Pedrol +Closes: https://lore.kernel.org/platform-driver-x86/54d4860b-ec9c-4992-acf6-db3f90388293@espeweb.net +Signed-off-by: Armin Wolf +Reviewed-by: Hans de Goede +Link: https://lore.kernel.org/r/20241123224700.18530-1-W_Armin@gmx.de +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/asus-nb-wmi.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c +index 49505939352a..224c1f1c271b 100644 +--- a/drivers/platform/x86/asus-nb-wmi.c ++++ b/drivers/platform/x86/asus-nb-wmi.c +@@ -574,6 +574,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = { + { KE_KEY, 0xC4, { KEY_KBDILLUMUP } }, + { KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } }, + { KE_IGNORE, 0xC6, }, /* Ambient Light Sensor notification */ ++ { KE_IGNORE, 0xCF, }, /* AC mode */ + { KE_KEY, 0xFA, { KEY_PROG2 } }, /* Lid flip action */ + { KE_KEY, 0xBD, { KEY_PROG2 } }, /* Lid flip action on ROG xflow laptops */ + { KE_END, 0}, +-- +2.39.5 + diff --git a/queue-5.10/regmap-use-correct-format-specifier-for-logging-rang.patch b/queue-5.10/regmap-use-correct-format-specifier-for-logging-rang.patch new file mode 100644 index 00000000000..4082ce8bc9b --- /dev/null +++ b/queue-5.10/regmap-use-correct-format-specifier-for-logging-rang.patch @@ -0,0 +1,43 @@ +From 809c5036516a8146b51f4701b8731545173601e8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 27 Nov 2024 13:35:06 +0000 +Subject: regmap: Use correct format specifier for logging range errors + +From: Mark Brown + +[ Upstream commit 3f1aa0c533d9dd8a835caf9a6824449c463ee7e2 ] + +The register addresses are unsigned ints so we should use %u not %d to +log them. + +Signed-off-by: Mark Brown +Link: https://patch.msgid.link/20241127-regmap-test-high-addr-v1-1-74a48a9e0dc5@kernel.org +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + drivers/base/regmap/regmap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c +index ccf002c536fb..fb463d19a70a 100644 +--- a/drivers/base/regmap/regmap.c ++++ b/drivers/base/regmap/regmap.c +@@ -1115,13 +1115,13 @@ struct regmap *__regmap_init(struct device *dev, + + /* Sanity check */ + if (range_cfg->range_max < range_cfg->range_min) { +- dev_err(map->dev, "Invalid range %d: %d < %d\n", i, ++ dev_err(map->dev, "Invalid range %d: %u < %u\n", i, + range_cfg->range_max, range_cfg->range_min); + goto err_range; + } + + if (range_cfg->range_max > map->max_register) { +- dev_err(map->dev, "Invalid range %d: %d > %d\n", i, ++ dev_err(map->dev, "Invalid range %d: %u > %u\n", i, + range_cfg->range_max, map->max_register); + goto err_range; + } +-- +2.39.5 + diff --git a/queue-5.10/scsi-megaraid_sas-fix-for-a-potential-deadlock.patch b/queue-5.10/scsi-megaraid_sas-fix-for-a-potential-deadlock.patch new file mode 100644 index 00000000000..d8e9d2f6452 --- /dev/null +++ b/queue-5.10/scsi-megaraid_sas-fix-for-a-potential-deadlock.patch @@ -0,0 +1,48 @@ +From a106ce54528bce252d2d2ed1f12f5c26d9f020e1 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 23 Sep 2024 19:48:33 +0200 +Subject: scsi: megaraid_sas: Fix for a potential deadlock + +From: Tomas Henzl + +[ Upstream commit 50740f4dc78b41dec7c8e39772619d5ba841ddd7 ] + +This fixes a 'possible circular locking dependency detected' warning + CPU0 CPU1 + ---- ---- + lock(&instance->reset_mutex); + lock(&shost->scan_mutex); + lock(&instance->reset_mutex); + lock(&shost->scan_mutex); + +Fix this by temporarily releasing the reset_mutex. + +Signed-off-by: Tomas Henzl +Link: https://lore.kernel.org/r/20240923174833.45345-1-thenzl@redhat.com +Acked-by: Chandrakanth Patil +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/megaraid/megaraid_sas_base.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c +index 365279d7c982..d709d261d0ad 100644 +--- a/drivers/scsi/megaraid/megaraid_sas_base.c ++++ b/drivers/scsi/megaraid/megaraid_sas_base.c +@@ -8868,8 +8868,11 @@ megasas_aen_polling(struct work_struct *work) + (ld_target_id / MEGASAS_MAX_DEV_PER_CHANNEL), + (ld_target_id - MEGASAS_MAX_DEV_PER_CHANNEL), + 0); +- if (sdev1) ++ if (sdev1) { ++ mutex_unlock(&instance->reset_mutex); + megasas_remove_scsi_device(sdev1); ++ mutex_lock(&instance->reset_mutex); ++ } + + event_type = SCAN_VD_CHANNEL; + break; +-- +2.39.5 + diff --git a/queue-5.10/scsi-mpt3sas-diag-reset-when-doorbell-in-use-bit-is-.patch b/queue-5.10/scsi-mpt3sas-diag-reset-when-doorbell-in-use-bit-is-.patch new file mode 100644 index 00000000000..75552c2eb3d --- /dev/null +++ b/queue-5.10/scsi-mpt3sas-diag-reset-when-doorbell-in-use-bit-is-.patch @@ -0,0 +1,53 @@ +From f968fb8f99b1176fb0cacec8972c971cc4592168 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 10 Nov 2024 23:03:40 +0530 +Subject: scsi: mpt3sas: Diag-Reset when Doorbell-In-Use bit is set during + driver load time + +From: Ranjan Kumar + +[ Upstream commit 3f5eb062e8aa335643181c480e6c590c6cedfd22 ] + +Issue a Diag-Reset when the "Doorbell-In-Use" bit is set during the +driver load/initialization. + +Signed-off-by: Ranjan Kumar +Link: https://lore.kernel.org/r/20241110173341.11595-2-ranjan.kumar@broadcom.com +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/mpt3sas/mpt3sas_base.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c +index 53528711dac1..768635de93da 100644 +--- a/drivers/scsi/mpt3sas/mpt3sas_base.c ++++ b/drivers/scsi/mpt3sas/mpt3sas_base.c +@@ -6008,11 +6008,12 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes, + int i; + u8 failed; + __le32 *mfp; ++ int ret_val; + + /* make sure doorbell is not in use */ + if ((ioc->base_readl_ext_retry(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) { + ioc_err(ioc, "doorbell is in use (line=%d)\n", __LINE__); +- return -EFAULT; ++ goto doorbell_diag_reset; + } + + /* clear pending doorbell interrupts from previous state changes */ +@@ -6102,6 +6103,10 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes, + le32_to_cpu(mfp[i])); + } + return 0; ++ ++doorbell_diag_reset: ++ ret_val = _base_diag_reset(ioc); ++ return ret_val; + } + + /** +-- +2.39.5 + diff --git a/queue-5.10/scsi-qla1280-fix-hw-revision-numbering-for-isp1020-1.patch b/queue-5.10/scsi-qla1280-fix-hw-revision-numbering-for-isp1020-1.patch new file mode 100644 index 00000000000..d6874c6de26 --- /dev/null +++ b/queue-5.10/scsi-qla1280-fix-hw-revision-numbering-for-isp1020-1.patch @@ -0,0 +1,49 @@ +From 72ac3f7e1607f89b69e5627e1e2a53137d6c58ea Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 13 Nov 2024 23:51:49 +0100 +Subject: scsi: qla1280: Fix hw revision numbering for ISP1020/1040 + +From: Magnus Lindholm + +[ Upstream commit c064de86d2a3909222d5996c5047f64c7a8f791b ] + +Fix the hardware revision numbering for Qlogic ISP1020/1040 boards. HWMASK +suggests that the revision number only needs four bits, this is consistent +with how NetBSD does things in their ISP driver. Verified on a IPS1040B +which is seen as rev 5 not as BIT_4. + +Signed-off-by: Magnus Lindholm +Link: https://lore.kernel.org/r/20241113225636.2276-1-linmag7@gmail.com +Reviewed-by: Christoph Hellwig +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/qla1280.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/drivers/scsi/qla1280.h b/drivers/scsi/qla1280.h +index e7820b5bca38..c0a9251b2bed 100644 +--- a/drivers/scsi/qla1280.h ++++ b/drivers/scsi/qla1280.h +@@ -117,12 +117,12 @@ struct device_reg { + uint16_t id_h; /* ID high */ + uint16_t cfg_0; /* Configuration 0 */ + #define ISP_CFG0_HWMSK 0x000f /* Hardware revision mask */ +-#define ISP_CFG0_1020 BIT_0 /* ISP1020 */ +-#define ISP_CFG0_1020A BIT_1 /* ISP1020A */ +-#define ISP_CFG0_1040 BIT_2 /* ISP1040 */ +-#define ISP_CFG0_1040A BIT_3 /* ISP1040A */ +-#define ISP_CFG0_1040B BIT_4 /* ISP1040B */ +-#define ISP_CFG0_1040C BIT_5 /* ISP1040C */ ++#define ISP_CFG0_1020 1 /* ISP1020 */ ++#define ISP_CFG0_1020A 2 /* ISP1020A */ ++#define ISP_CFG0_1040 3 /* ISP1040 */ ++#define ISP_CFG0_1040A 4 /* ISP1040A */ ++#define ISP_CFG0_1040B 5 /* ISP1040B */ ++#define ISP_CFG0_1040C 6 /* ISP1040C */ + uint16_t cfg_1; /* Configuration 1 */ + #define ISP_CFG1_F128 BIT_6 /* 128-byte FIFO threshold */ + #define ISP_CFG1_F64 BIT_4|BIT_5 /* 128-byte FIFO threshold */ +-- +2.39.5 + diff --git a/queue-5.10/scsi-storvsc-do-not-flag-maintenance_in-return-of-sr.patch b/queue-5.10/scsi-storvsc-do-not-flag-maintenance_in-return-of-sr.patch new file mode 100644 index 00000000000..5174cb9b310 --- /dev/null +++ b/queue-5.10/scsi-storvsc-do-not-flag-maintenance_in-return-of-sr.patch @@ -0,0 +1,72 @@ +From cbfced476773add300b2f8607dd3e51f1177f42d Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 27 Nov 2024 13:13:24 -0500 +Subject: scsi: storvsc: Do not flag MAINTENANCE_IN return of + SRB_STATUS_DATA_OVERRUN as an error + +From: Cathy Avery + +[ Upstream commit b1aee7f034615b6824d2c70ddb37ef9fc23493b7 ] + +This partially reverts commit 812fe6420a6e ("scsi: storvsc: Handle +additional SRB status values"). + +HyperV does not support MAINTENANCE_IN resulting in FC passthrough +returning the SRB_STATUS_DATA_OVERRUN value. Now that +SRB_STATUS_DATA_OVERRUN is treated as an error, multipath ALUA paths go +into a faulty state as multipath ALUA submits RTPG commands via +MAINTENANCE_IN. + +[ 3.215560] hv_storvsc 1d69d403-9692-4460-89f9-a8cbcc0f94f3: +tag#230 cmd 0xa3 status: scsi 0x0 srb 0x12 hv 0xc0000001 +[ 3.215572] scsi 1:0:0:32: alua: rtpg failed, result 458752 + +Make MAINTENANCE_IN return success to avoid the error path as is +currently done with INQUIRY and MODE_SENSE. + +Suggested-by: Michael Kelley +Signed-off-by: Cathy Avery +Link: https://lore.kernel.org/r/20241127181324.3318443-1-cavery@redhat.com +Reviewed-by: Michael Kelley +Reviewed-by: Ewan D. Milne +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/storvsc_drv.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c +index 37ad5f525647..7dc916ce0c3c 100644 +--- a/drivers/scsi/storvsc_drv.c ++++ b/drivers/scsi/storvsc_drv.c +@@ -155,6 +155,8 @@ static int sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE; + */ + static int vmstor_proto_version; + ++static bool hv_dev_is_fc(struct hv_device *hv_dev); ++ + #define STORVSC_LOGGING_NONE 0 + #define STORVSC_LOGGING_ERROR 1 + #define STORVSC_LOGGING_WARN 2 +@@ -1153,6 +1155,7 @@ static void storvsc_on_io_completion(struct storvsc_device *stor_device, + * not correctly handle: + * INQUIRY command with page code parameter set to 0x80 + * MODE_SENSE command with cmd[2] == 0x1c ++ * MAINTENANCE_IN is not supported by HyperV FC passthrough + * + * Setup srb and scsi status so this won't be fatal. + * We do this so we can distinguish truly fatal failues +@@ -1160,7 +1163,9 @@ static void storvsc_on_io_completion(struct storvsc_device *stor_device, + */ + + if ((stor_pkt->vm_srb.cdb[0] == INQUIRY) || +- (stor_pkt->vm_srb.cdb[0] == MODE_SENSE)) { ++ (stor_pkt->vm_srb.cdb[0] == MODE_SENSE) || ++ (stor_pkt->vm_srb.cdb[0] == MAINTENANCE_IN && ++ hv_dev_is_fc(device))) { + vstor_packet->vm_srb.scsi_status = 0; + vstor_packet->vm_srb.srb_status = SRB_STATUS_SUCCESS; + } +-- +2.39.5 + diff --git a/queue-5.10/series b/queue-5.10/series index 05a9967a1f3..f43659329d9 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -55,3 +55,13 @@ phy-core-fix-that-api-devm_phy_destroy-fails-to-destroy-the-phy.patch dmaengine-mv_xor-fix-child-node-refcount-handling-in-early-exit.patch dmaengine-at_xdmac-avoid-null_prt_deref-in-at_xdmac_prep_dma_memset.patch mtd-rawnand-fix-double-free-in-atmel_pmecc_create_user.patch +tracing-kprobe-make-trace_kprobe-s-module-callback-c.patch +watchdog-it87_wdt-add-pwrgd-enable-quirk-for-qotom-q.patch +scsi-qla1280-fix-hw-revision-numbering-for-isp1020-1.patch +scsi-megaraid_sas-fix-for-a-potential-deadlock.patch +alsa-hda-conexant-fix-z60mr100-startup-pop-issue.patch +regmap-use-correct-format-specifier-for-logging-rang.patch +platform-x86-asus-nb-wmi-ignore-unknown-event-0xcf.patch +scsi-mpt3sas-diag-reset-when-doorbell-in-use-bit-is-.patch +scsi-storvsc-do-not-flag-maintenance_in-return-of-sr.patch +virtio-blk-don-t-keep-queue-frozen-during-system-sus.patch diff --git a/queue-5.10/tracing-kprobe-make-trace_kprobe-s-module-callback-c.patch b/queue-5.10/tracing-kprobe-make-trace_kprobe-s-module-callback-c.patch new file mode 100644 index 00000000000..3e3a44bb222 --- /dev/null +++ b/queue-5.10/tracing-kprobe-make-trace_kprobe-s-module-callback-c.patch @@ -0,0 +1,41 @@ +From 81dec7571a435d2492e0a987207d5686b53ed3aa Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 11 Dec 2024 09:10:55 +0900 +Subject: tracing/kprobe: Make trace_kprobe's module callback called after + jump_label update + +From: Masami Hiramatsu (Google) + +[ Upstream commit d685d55dfc86b1a4bdcec77c3c1f8a83f181264e ] + +Make sure the trace_kprobe's module notifer callback function is called +after jump_label's callback is called. Since the trace_kprobe's callback +eventually checks jump_label address during registering new kprobe on +the loading module, jump_label must be updated before this registration +happens. + +Link: https://lore.kernel.org/all/173387585556.995044.3157941002975446119.stgit@devnote2/ + +Fixes: 614243181050 ("tracing/kprobes: Support module init function probing") +Signed-off-by: Masami Hiramatsu (Google) +Signed-off-by: Sasha Levin +--- + kernel/trace/trace_kprobe.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c +index 164779c6d133..646109d389e9 100644 +--- a/kernel/trace/trace_kprobe.c ++++ b/kernel/trace/trace_kprobe.c +@@ -704,7 +704,7 @@ static int trace_kprobe_module_callback(struct notifier_block *nb, + + static struct notifier_block trace_kprobe_module_nb = { + .notifier_call = trace_kprobe_module_callback, +- .priority = 1 /* Invoked after kprobe module callback */ ++ .priority = 2 /* Invoked after kprobe and jump_label module callback */ + }; + + /* Convert certain expected symbols into '_' when generating event names */ +-- +2.39.5 + diff --git a/queue-5.10/virtio-blk-don-t-keep-queue-frozen-during-system-sus.patch b/queue-5.10/virtio-blk-don-t-keep-queue-frozen-during-system-sus.patch new file mode 100644 index 00000000000..ef442f4a918 --- /dev/null +++ b/queue-5.10/virtio-blk-don-t-keep-queue-frozen-during-system-sus.patch @@ -0,0 +1,72 @@ +From 75b47dcd09d1576be59360027b7f0309cb546d52 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 12 Nov 2024 20:58:21 +0800 +Subject: virtio-blk: don't keep queue frozen during system suspend + +From: Ming Lei + +[ Upstream commit 7678abee0867e6b7fb89aa40f6e9f575f755fb37 ] + +Commit 4ce6e2db00de ("virtio-blk: Ensure no requests in virtqueues before +deleting vqs.") replaces queue quiesce with queue freeze in virtio-blk's +PM callbacks. And the motivation is to drain inflight IOs before suspending. + +block layer's queue freeze looks very handy, but it is also easy to cause +deadlock, such as, any attempt to call into bio_queue_enter() may run into +deadlock if the queue is frozen in current context. There are all kinds +of ->suspend() called in suspend context, so keeping queue frozen in the +whole suspend context isn't one good idea. And Marek reported lockdep +warning[1] caused by virtio-blk's freeze queue in virtblk_freeze(). + +[1] https://lore.kernel.org/linux-block/ca16370e-d646-4eee-b9cc-87277c89c43c@samsung.com/ + +Given the motivation is to drain in-flight IOs, it can be done by calling +freeze & unfreeze, meantime restore to previous behavior by keeping queue +quiesced during suspend. + +Cc: Yi Sun +Cc: Michael S. Tsirkin +Cc: Jason Wang +Cc: Stefan Hajnoczi +Cc: virtualization@lists.linux.dev +Reported-by: Marek Szyprowski +Signed-off-by: Ming Lei +Acked-by: Stefan Hajnoczi +Link: https://lore.kernel.org/r/20241112125821.1475793-1-ming.lei@redhat.com +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + drivers/block/virtio_blk.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c +index 7eae3f373233..28ea9b511fd0 100644 +--- a/drivers/block/virtio_blk.c ++++ b/drivers/block/virtio_blk.c +@@ -951,9 +951,12 @@ static void virtblk_remove(struct virtio_device *vdev) + static int virtblk_freeze(struct virtio_device *vdev) + { + struct virtio_blk *vblk = vdev->priv; ++ struct request_queue *q = vblk->disk->queue; + + /* Ensure no requests in virtqueues before deleting vqs. */ +- blk_mq_freeze_queue(vblk->disk->queue); ++ blk_mq_freeze_queue(q); ++ blk_mq_quiesce_queue_nowait(q); ++ blk_mq_unfreeze_queue(q); + + /* Ensure we don't receive any more interrupts */ + vdev->config->reset(vdev); +@@ -977,8 +980,8 @@ static int virtblk_restore(struct virtio_device *vdev) + return ret; + + virtio_device_ready(vdev); ++ blk_mq_unquiesce_queue(vblk->disk->queue); + +- blk_mq_unfreeze_queue(vblk->disk->queue); + return 0; + } + #endif +-- +2.39.5 + diff --git a/queue-5.10/watchdog-it87_wdt-add-pwrgd-enable-quirk-for-qotom-q.patch b/queue-5.10/watchdog-it87_wdt-add-pwrgd-enable-quirk-for-qotom-q.patch new file mode 100644 index 00000000000..aba6e4ccbf8 --- /dev/null +++ b/queue-5.10/watchdog-it87_wdt-add-pwrgd-enable-quirk-for-qotom-q.patch @@ -0,0 +1,121 @@ +From 8fb458d0f992fa202ef451ba59cfab00ca52dda1 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 25 Oct 2024 00:34:40 -0600 +Subject: watchdog: it87_wdt: add PWRGD enable quirk for Qotom QCML04 + +From: James Hilliard + +[ Upstream commit 43439076383a7611300334d1357c0f8883f40816 ] + +For the watchdog timer to work properly on the QCML04 board we need to +set PWRGD enable in the Environment Controller Configuration Registers +Special Configuration Register 1 when it is not already set, this may +be the case when the watchdog is not enabled from within the BIOS. + +Signed-off-by: James Hilliard +Reviewed-by: Guenter Roeck +Link: https://lore.kernel.org/r/20241025063441.3494837-1-james.hilliard1@gmail.com +Signed-off-by: Guenter Roeck +Signed-off-by: Wim Van Sebroeck +Signed-off-by: Sasha Levin +--- + drivers/watchdog/it87_wdt.c | 39 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +diff --git a/drivers/watchdog/it87_wdt.c b/drivers/watchdog/it87_wdt.c +index 6340ca058f89..da9e24e4a8b6 100644 +--- a/drivers/watchdog/it87_wdt.c ++++ b/drivers/watchdog/it87_wdt.c +@@ -20,6 +20,8 @@ + + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + ++#include ++#include + #include + #include + #include +@@ -40,6 +42,7 @@ + #define VAL 0x2f + + /* Logical device Numbers LDN */ ++#define EC 0x04 + #define GPIO 0x07 + + /* Configuration Registers and Functions */ +@@ -71,6 +74,12 @@ + #define IT8784_ID 0x8784 + #define IT8786_ID 0x8786 + ++/* Environment Controller Configuration Registers LDN=0x04 */ ++#define SCR1 0xfa ++ ++/* Environment Controller Bits SCR1 */ ++#define WDT_PWRGD 0x20 ++ + /* GPIO Configuration Registers LDN=0x07 */ + #define WDTCTRL 0x71 + #define WDTCFG 0x72 +@@ -241,6 +250,21 @@ static int wdt_set_timeout(struct watchdog_device *wdd, unsigned int t) + return ret; + } + ++enum { ++ IT87_WDT_OUTPUT_THROUGH_PWRGD = BIT(0), ++}; ++ ++static const struct dmi_system_id it87_quirks[] = { ++ { ++ /* Qotom Q30900P (IT8786) */ ++ .matches = { ++ DMI_EXACT_MATCH(DMI_BOARD_NAME, "QCML04"), ++ }, ++ .driver_data = (void *)IT87_WDT_OUTPUT_THROUGH_PWRGD, ++ }, ++ {} ++}; ++ + static const struct watchdog_info ident = { + .options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING, + .firmware_version = 1, +@@ -262,8 +286,10 @@ static struct watchdog_device wdt_dev = { + + static int __init it87_wdt_init(void) + { ++ const struct dmi_system_id *dmi_id; + u8 chip_rev; + u8 ctrl; ++ int quirks = 0; + int rc; + + rc = superio_enter(); +@@ -274,6 +300,10 @@ static int __init it87_wdt_init(void) + chip_rev = superio_inb(CHIPREV) & 0x0f; + superio_exit(); + ++ dmi_id = dmi_first_match(it87_quirks); ++ if (dmi_id) ++ quirks = (long)dmi_id->driver_data; ++ + switch (chip_type) { + case IT8702_ID: + max_units = 255; +@@ -334,6 +364,15 @@ static int __init it87_wdt_init(void) + superio_outb(0x00, WDTCTRL); + } + ++ if (quirks & IT87_WDT_OUTPUT_THROUGH_PWRGD) { ++ superio_select(EC); ++ ctrl = superio_inb(SCR1); ++ if (!(ctrl & WDT_PWRGD)) { ++ ctrl |= WDT_PWRGD; ++ superio_outb(ctrl, SCR1); ++ } ++ } ++ + superio_exit(); + + if (timeout < 1 || timeout > max_units * 60) { +-- +2.39.5 +