6.12.39-rc1 review
Subsystems (6)
Greg Kroah-Hartman
maintainerPATCH 140/163 um: vector: Reduce stack usage in vector_eth_configure()
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tiwei Bie <[email protected]>
[ Upstream commit 2d65fc13be85c336c56af7077f08ccd3a3a15a4a ]
When compiling with clang (19.1.7), initializing *vp using a compound literal may result in excessive stack usage. Fix it by initializing the required fields of *vp individually.
Without this patch:
$ objdump -d arch/um/drivers/vector_kern.o | ./scripts/checkstack.pl x86_64 0 ... 0x0000000000000540 vector_eth_configure [vector_kern.o]:1472 ...
With this patch:
$ objdump -d arch/um/drivers/vector_kern.o | ./scripts/checkstack.pl x86_64 0 ... 0x0000000000000540 vector_eth_configure [vector_kern.o]:208 ...
--- arch/um/drivers/vector_kern.c | 42 +++++++++++------------------------ 1 file changed, 13 insertions(+), 29 deletions(-)
arch/um/drivers/vector_kern.c +13 -29
@@ -1592,35 +1592,19 @@ static void vector_eth_configure( device->dev = dev; - *vp = ((struct vector_private ) - { - .list =LIST_HEAD_INIT (vp->list), - .dev = dev, - .unit = n, - .options =get_transport_options (def), - .rx_irq =0 , - .tx_irq =0 , - .parsed = def, - .max_packet =get_mtu (def) +ETH_HEADER_OTHER , -/* TODO - we need to calculate headroom so that ip header -* is 16 byte aligned all the time -*/ - .headroom =get_headroom (def), - .form_header =NULL , - .verify_header =NULL , - .header_rxbuffer =NULL , - .header_txbuffer =NULL , - .header_size =0 , - .rx_header_size =0 , - .rexmit_scheduled = false, - .opened = false, - .transport_data =NULL , - .in_write_poll = false, - .coalesce =2 , - .req_size =get_req_size (def), - .in_error = false, - .bpf =NULL - }); +INIT_LIST_HEAD (&vp->list); + vp->dev = dev; + vp->unit = n; + vp->options =get_transport_options (def); + vp->parsed = def; + vp->max_packet =get_mtu (def) +ETH_HEADER_OTHER ; +/* +* TODO - we need to calculate headroom so that ip header +* is 16 byte aligned all the time +*/ + vp->headroom =get_headroom (def); + vp->coalesce =2 ; + vp->req_size =get_req_size (def); dev->features = dev->hw_features = (NETIF_F_SG |NETIF_F_FRAGLIST );INIT_WORK (&vp->reset_tx, vector_reset_tx);
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 141/163 ASoC: SOF: Intel: hda: Use devm_kstrdup() to avoid memleak.
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tamura Dai <[email protected]>
[ Upstream commit 6c038b58a2dc5a008c7e7a1297f5aaa4deaaaa7e ]
sof_pdata->tplg_filename can have address allocated by kstrdup() and can be overwritten. Memory leak was detected with kmemleak:
unreferenced object 0xffff88812391ff60 (size 16):
comm "kworker/4:1", pid 161, jiffies 4294802931
hex dump (first 16 bytes):
73 6f 66 2d 68 64 61 2d 67 65 6e 65 72 69 63 00 sof-hda-generic.
backtrace (crc 4bf1675c):
__kmalloc_node_track_caller_noprof+0x49c/0x6b0
kstrdup+0x46/0xc0
hda_machine_select.cold+0x1de/0x12cf [snd_sof_intel_hda_generic]
sof_init_environment+0x16f/0xb50 [snd_sof]
sof_probe_continue+0x45/0x7c0 [snd_sof]
sof_probe_work+0x1e/0x40 [snd_sof]
process_one_work+0x894/0x14b0
worker_thread+0x5e5/0xfb0
kthread+0x39d/0x760
ret_from_fork+0x31/0x70
ret_from_fork_asm+0x1a/0x30--- sound/soc/sof/intel/hda.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
sound/soc/sof/intel/hda.c +3 -3
@@ -1209,11 +1209,11 @@ static int check_tplg_quirk_mask(struct snd_soc_acpi_mach *mach)return 0 ; } -static char *remove_file_ext (const char *tplg_filename) +static char *remove_file_ext (struct device *dev,const char *tplg_filename) {char *filename, *tmp; - filename =kstrdup (tplg_filename,GFP_KERNEL ); + filename =devm_kstrdup (dev, tplg_filename,GFP_KERNEL );if (!filename)return NULL ;
@@ -1297,7 +1297,7 @@ struct snd_soc_acpi_mach *hda_machine_select(struct snd_sof_dev *sdev)*/ if (!sof_pdata->tplg_filename) {/* remove file extension if it exists */ - tplg_filename =remove_file_ext (mach->sof_tplg_filename); + tplg_filename =remove_file_ext (sdev->dev, mach->sof_tplg_filename);if (!tplg_filename)return NULL ;
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 142/163 ALSA: hda/realtek: Add mic-mute LED setup for ASUS UM5606
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
[ Upstream commit 41c66461cb2e8d3934a5395f27e572ebe63696b4 ]
ASUS UM5606* models use the quirk to set up the bass speakers, but it missed the mic-mute LED configuration. Other similar models have the AMD ACP dmic, and the mic-mute is set up for that, but those models don't have AMD ACP but rather built-in mics of Realtek codec, hence the Realtek driver should set it up, instead.
--- sound/pci/hda/patch_realtek.c | 1 + 1 file changed, 1 insertion(+)
sound/pci/hda/patch_realtek.c +1 -0
@@ -6611,6 +6611,7 @@ static void alc294_fixup_bass_speaker_15(struct hda_codec *codec,if (action ==HDA_FIXUP_ACT_PRE_PROBE ) {static const hda_nid_t conn[] = {0x02 ,0x03 };snd_hda_override_conn_list (codec,0x15 ,ARRAY_SIZE (conn), conn); +snd_hda_gen_add_micmute_led_cdev (codec,NULL ); } }
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 143/163 io_uring: make fallocate be hashed work
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fengnan Chang <[email protected]>
[ Upstream commit 88a80066af1617fab444776135d840467414beb6 ]
Like ftruncate and write, fallocate operations on the same file cannot be executed in parallel, so it is better to make fallocate be hashed work.
--- io_uring/opdef.c | 1 + 1 file changed, 1 insertion(+)
io_uring/opdef.c +1 -0
@@ -214,6 +214,7 @@ const struct io_issue_def io_issue_defs[] = { }, [IORING_OP_FALLOCATE] = { .needs_file = 1, + .hash_reg_file = 1, .prep = io_fallocate_prep, .issue = io_fallocate, },
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 144/163 ASoC: amd: yc: add quirk for Acer Nitro ANV15-41 internal mic
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuzuru10 <[email protected]>
[ Upstream commit 7186b81807b4a08f8bf834b6bdc72d6ed8ba1587 ]
This patch adds DMI-based quirk for the Acer Nitro ANV15-41, allowing the internal microphone to be detected correctly on machines with "RB" as board vendor.
--- sound/soc/amd/yc/acp6x-mach.c | 7 +++++++ 1 file changed, 7 insertions(+)
sound/soc/amd/yc/acp6x-mach.c +7 -0
@@ -346,6 +346,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "83Q3"), } }, + { + .driver_data = &acp6x_card, + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"RB" ), + DMI_MATCH(DMI_PRODUCT_NAME, "Nitro ANV15-41"), + } + }, { .driver_data = &acp6x_card, .matches = {
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 145/163 ALSA: hda/realtek - Enable mute LED on HP Pavilion Laptop 15-eg100
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yasmin Fitzgerald <[email protected]>
[ Upstream commit 68cc9d3c8e44afe90e43cbbd2960da15c2f31e23 ]
The HP Pavilion Laptop 15-eg100 has Realtek HDA codec ALC287. It needs the ALC287_FIXUP_HP_GPIO_LED quirk to enable the mute LED.
--- sound/pci/hda/patch_realtek.c | 1 + 1 file changed, 1 insertion(+)
sound/pci/hda/patch_realtek.c +1 -0
@@ -10655,6 +10655,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x103c ,0x8975 ,"HP EliteBook x360 840 Aero G9" ,ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED ),SND_PCI_QUIRK (0x103c ,0x897d ,"HP mt440 Mobile Thin Client U74" ,ALC236_FIXUP_HP_GPIO_LED ),SND_PCI_QUIRK (0x103c ,0x8981 ,"HP Elite Dragonfly G3" ,ALC245_FIXUP_CS35L41_SPI_4 ), +SND_PCI_QUIRK (0x103c ,0x898a ,"HP Pavilion 15-eg100" ,ALC287_FIXUP_HP_GPIO_LED ),SND_PCI_QUIRK (0x103c ,0x898e ,"HP EliteBook 835 G9" ,ALC287_FIXUP_CS35L41_I2C_2 ),SND_PCI_QUIRK (0x103c ,0x898f ,"HP EliteBook 835 G9" ,ALC287_FIXUP_CS35L41_I2C_2 ), SND_PCI_QUIRK(0x103c, 0x8991, "HP EliteBook 845 G9", ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED),
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 146/163 ALSA: hda/realtek: Add quirks for some Clevo laptops
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tim Crawford <[email protected]>
[ Upstream commit e41687b511d5e5437db5d2151e23c115dba30411 ]
Add audio quirks to fix speaker output and headset detection on the following Clevo models:
- V350ENC
- V350WNPQ
- V540TU
- X560WNR
- X580WNS
--- sound/pci/hda/patch_realtek.c | 5 +++++ 1 file changed, 5 insertions(+)
sound/pci/hda/patch_realtek.c +5 -0
@@ -2658,6 +2658,7 @@ static const struct hda_quirk alc882_fixup_tbl[] = {SND_PCI_QUIRK (0x147b ,0x107a ,"Abit AW9D-MAX" ,ALC882_FIXUP_ABIT_AW9D_MAX ),SND_PCI_QUIRK (0x1558 ,0x3702 ,"Clevo X370SN[VW]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ),SND_PCI_QUIRK (0x1558 ,0x50d3 ,"Clevo PC50[ER][CDF]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ), +SND_PCI_QUIRK (0x1558 ,0x5802 ,"Clevo X58[05]WN[RST]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ),SND_PCI_QUIRK (0x1558 ,0x65d1 ,"Clevo PB51[ER][CDF]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ),SND_PCI_QUIRK (0x1558 ,0x65d2 ,"Clevo PB51R[CDF]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ), SND_PCI_QUIRK(0x1558, 0x65e1, "Clevo PB51[ED][DF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
@@ -11046,6 +11047,8 @@ static const struct hda_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x1558 ,0x14a1 ,"Clevo L141MU" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x2624 ,"Clevo L240TU" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x28c1 ,"Clevo V370VND" ,ALC2XX_FIXUP_HEADSET_MIC ), +SND_PCI_QUIRK (0x1558 ,0x35a1 ,"Clevo V3[56]0EN[CDE]" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ), +SND_PCI_QUIRK (0x1558 ,0x35b1 ,"Clevo V3[57]0WN[MNP]Q" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x4018 ,"Clevo NV40M[BE]" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x4019 ,"Clevo NV40MZ" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ), SND_PCI_QUIRK(0x1558, 0x4020, "Clevo NV40MB", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
@@ -11073,6 +11076,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x1558 ,0x51b1 ,"Clevo NS50AU" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x51b3 ,"Clevo NS70AU" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x5630 ,"Clevo NP50RNJS" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ), +SND_PCI_QUIRK (0x1558 ,0x5700 ,"Clevo X560WN[RST]" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x70a1 ,"Clevo NB70T[HJK]" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x70b3 ,"Clevo NK70SB" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ), SND_PCI_QUIRK(0x1558, 0x70f2, "Clevo NH79EPY", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
@@ -11112,6 +11116,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x1558 ,0xa650 ,"Clevo NP[567]0SN[CD]" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0xa671 ,"Clevo NP70SN[CDE]" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0xa741 ,"Clevo V54x_6x_TNE" ,ALC245_FIXUP_CLEVO_NOISY_MIC ), +SND_PCI_QUIRK (0x1558 ,0xa743 ,"Clevo V54x_6x_TU" ,ALC245_FIXUP_CLEVO_NOISY_MIC ),SND_PCI_QUIRK (0x1558 ,0xa763 ,"Clevo V54x_6x_TU" ,ALC245_FIXUP_CLEVO_NOISY_MIC ),SND_PCI_QUIRK (0x1558 ,0xb018 ,"Clevo NP50D[BE]" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ), SND_PCI_QUIRK(0x1558, 0xb019, "Clevo NH77D[BE]Q", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 147/163 net: usb: qmi_wwan: add SIMCom 8230C composition
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiaowei Li <[email protected]>
[ Upstream commit 0b39b055b5b48cbbdf5746a1ca6e3f6b0221e537 ]
Add support for SIMCom 8230C which is based on Qualcomm SDX35 chip. 0x9071: tty (DM) + tty (NMEA) + tty (AT) + rmnet
T: Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#= 8 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1e0e ProdID=9071 Rev= 5.15 S: Manufacturer=SIMCOM S: Product=SDXBAAGHA-IDP _SN:D744C4C5 S: SerialNumber=0123456789ABCDEF C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan E: Ad=86(I) Atr=03(Int.) MxPS= 8 Ivl=32ms E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=none E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
--- drivers/net/usb/qmi_wwan.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/usb/qmi_wwan.c +1 -0
@@ -1426,6 +1426,7 @@ static const struct usb_device_id products[] = { {QMI_QUIRK_SET_DTR(0x22de, 0x9051, 2)}, /* Hucom Wireless HM-211S/K */ {QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */ {QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}, /* SIMCom 7100E, 7230E, 7600E ++ */ + {QMI_QUIRK_SET_DTR(0x1e0e, 0x9071, 3)}, /* SIMCom 8230C ++ */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)}, /* Quectel EG91 */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0195, 4)}, /* Quectel EG95 */
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 148/163 driver: bluetooth: hci_qca:fix unable to load the BT driver
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shuai Zhang <[email protected]>
[ Upstream commit db0ff7e15923ffa7067874604ca275e92343f1b1 ]
Some modules have BT_EN enabled via a hardware pull-up, meaning it is not defined in the DTS and is not controlled through the power sequence. In such cases, fall through to follow the legacy flow.
--- drivers/bluetooth/hci_qca.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
drivers/bluetooth/hci_qca.c +10 -3
@@ -2363,10 +2363,17 @@ static int qca_serdev_probe(struct serdev_device *serdev)*/ qcadev->bt_power->pwrseq =devm_pwrseq_get (&serdev->dev,"bluetooth" ); -if (IS_ERR (qcadev->bt_power->pwrseq)) -return PTR_ERR (qcadev->bt_power->pwrseq); -break ; +/* +* Some modules have BT_EN enabled via a hardware pull-up, +* meaning it is not defined in the DTS and is not controlled +* through the power sequence. In such cases, fall through +* to follow the legacy flow. +*/ +if (IS_ERR (qcadev->bt_power->pwrseq)) + qcadev->bt_power->pwrseq =NULL ; +else +break ; } fallthrough;case QCA_WCN3988 :
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 149/163 HID: lenovo: Add support for ThinkPad X1 Tablet Thin Keyboard Gen2
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Akira Inoue <[email protected]>
[ Upstream commit a8905238c3bbe13db90065ed74682418f23830c3 ]
Add "Thinkpad X1 Tablet Gen 2 Keyboard" PID to hid-lenovo driver to fix trackpoint not working issue.
--- drivers/hid/hid-ids.h | 1 + drivers/hid/hid-lenovo.c | 8 ++++++++ drivers/hid/hid-multitouch.c | 8 +++++++- 3 files changed, 16 insertions(+), 1 deletion(-)
drivers/hid/hid-ids.h +1 -0
@@ -814,6 +814,7 @@#define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067#define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085#define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3 +#define USB_DEVICE_ID_LENOVO_X1_TAB2 0x60a4#define USB_DEVICE_ID_LENOVO_X1_TAB3 0x60b5#define USB_DEVICE_ID_LENOVO_X12_TAB 0x60fe#define USB_DEVICE_ID_LENOVO_X12_TAB2 0x61ae
drivers/hid/hid-lenovo.c +8 -0
@@ -473,6 +473,7 @@ static int lenovo_input_mapping(struct hid_device *hdev,return lenovo_input_mapping_tp10_ultrabook_kbd (hdev, hi, field, usage, bit, max);case USB_DEVICE_ID_LENOVO_X1_TAB : +case USB_DEVICE_ID_LENOVO_X1_TAB2 :case USB_DEVICE_ID_LENOVO_X1_TAB3 :return lenovo_input_mapping_x1_tab_kbd (hdev, hi, field, usage, bit, max);default :
@@ -587,6 +588,7 @@ static ssize_t attr_fn_lock_store(struct device *dev,break ;case USB_DEVICE_ID_LENOVO_TP10UBKBD :case USB_DEVICE_ID_LENOVO_X1_TAB : +case USB_DEVICE_ID_LENOVO_X1_TAB2 :case USB_DEVICE_ID_LENOVO_X1_TAB3 : ret =lenovo_led_set_tp10ubkbd (hdev,TP10UBKBD_FN_LOCK_LED , value);if (ret)
@@ -781,6 +783,7 @@ static int lenovo_event(struct hid_device *hdev, struct hid_field *field,return lenovo_event_cptkbd (hdev, field, usage, value);case USB_DEVICE_ID_LENOVO_TP10UBKBD :case USB_DEVICE_ID_LENOVO_X1_TAB : +case USB_DEVICE_ID_LENOVO_X1_TAB2 :case USB_DEVICE_ID_LENOVO_X1_TAB3 :return lenovo_event_tp10ubkbd (hdev, field, usage, value);default :
@@ -1062,6 +1065,7 @@ static int lenovo_led_brightness_set(struct led_classdev *led_cdev,break ;case USB_DEVICE_ID_LENOVO_TP10UBKBD :case USB_DEVICE_ID_LENOVO_X1_TAB : +case USB_DEVICE_ID_LENOVO_X1_TAB2 :case USB_DEVICE_ID_LENOVO_X1_TAB3 : ret =lenovo_led_set_tp10ubkbd (hdev, tp10ubkbd_led[led_nr], value);break ;
@@ -1293,6 +1297,7 @@ static int lenovo_probe(struct hid_device *hdev,break ;case USB_DEVICE_ID_LENOVO_TP10UBKBD :case USB_DEVICE_ID_LENOVO_X1_TAB : +case USB_DEVICE_ID_LENOVO_X1_TAB2 :case USB_DEVICE_ID_LENOVO_X1_TAB3 : ret =lenovo_probe_tp10ubkbd (hdev);break ;
@@ -1380,6 +1385,7 @@ static void lenovo_remove(struct hid_device *hdev)break ;case USB_DEVICE_ID_LENOVO_TP10UBKBD :case USB_DEVICE_ID_LENOVO_X1_TAB : +case USB_DEVICE_ID_LENOVO_X1_TAB2 :case USB_DEVICE_ID_LENOVO_X1_TAB3 :lenovo_remove_tp10ubkbd (hdev);break ;
@@ -1430,6 +1436,8 @@ static const struct hid_device_id lenovo_devices[] = {*/ {HID_DEVICE (BUS_USB ,HID_GROUP_GENERIC , USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_TAB) }, + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, + USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_TAB2) }, { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_TAB3) }, { }
drivers/hid/hid-multitouch.c +7 -1
@@ -2116,12 +2116,18 @@ static const struct hid_device_id mt_devices[] = { HID_DEVICE(BUS_I2C, HID_GROUP_GENERIC, USB_VENDOR_ID_LG, I2C_DEVICE_ID_LG_7010) }, -/* Lenovo X1 TAB Gen 2 */ +/* Lenovo X1 TAB Gen 1 */ { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT,HID_DEVICE (BUS_USB ,HID_GROUP_MULTITOUCH_WIN_8 ,USB_VENDOR_ID_LENOVO , USB_DEVICE_ID_LENOVO_X1_TAB) }, + /* Lenovo X1 TAB Gen 2 */ + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, +HID_DEVICE (BUS_USB ,HID_GROUP_MULTITOUCH_WIN_8 , +USB_VENDOR_ID_LENOVO , + USB_DEVICE_ID_LENOVO_X1_TAB2) }, + /* Lenovo X1 TAB Gen 3 */ { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, HID_DEVICE(BUS_USB, HID_GROUP_MULTITOUCH_WIN_8,
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 150/163 net: mana: Record doorbell physical address in PF mode
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Long Li <[email protected]>
[ Upstream commit e0fca6f2cebff539e9317a15a37dcf432e3b851a ]
MANA supports RDMA in PF mode. The driver should record the doorbell physical address when in PF mode.
The doorbell physical address is used by the RDMA driver to map doorbell pages of the device to user-mode applications through RDMA verbs interface. In the past, they have been mapped to user-mode while the device is in VF mode. With the support for PF mode implemented, also expose those pages in PF mode.
Support for PF mode is implemented in290e5d3c49f6 ("net: mana: Add support for Multi Vports on Bare metal")
--- drivers/net/ethernet/microsoft/mana/gdma_main.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/net/ethernet/microsoft/mana/gdma_main.c +3 -0
@@ -28,6 +28,9 @@ static void mana_gd_init_pf_regs(struct pci_dev *pdev) gc->db_page_base = gc->bar0_va +mana_gd_r64 (gc,GDMA_PF_REG_DB_PAGE_OFF ); + gc->phys_db_page_base = gc->bar0_pa + +mana_gd_r64 (gc,GDMA_PF_REG_DB_PAGE_OFF ); + sriov_base_off =mana_gd_r64 (gc,GDMA_SRIOV_REG_CFG_BASE_OFF ); sriov_base_va = gc->bar0_va + sriov_base_off;
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 151/163 btrfs: fix assertion when building free space tree
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Filipe Manana <[email protected]>
[ Upstream commit 1961d20f6fa8903266ed9bd77c691924c22c8f02 ]
When building the free space tree with the block group tree feature enabled, we can hit an assertion failure like this:
BTRFS info (device loop0 state M): rebuilding free space tree assertion failed: ret == 0, in fs/btrfs/free-space-tree.c:1102
------------[ cut here ]------------ kernel BUG at fs/btrfs/free-space-tree.c:1102! Internal error: Oops - BUG: 00000000f2000800 [#1] SMP Modules linked in: CPU: 1 UID: 0 PID: 6592 Comm: syz-executor322 Not tainted 6.15.0-rc7-syzkaller-gd7fa1af5b33e #0 PREEMPT Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025 pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102 lr : populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102 sp : ffff8000a4ce7600 x29: ffff8000a4ce76e0 x28: ffff0000c9bc6000 x27: ffff0000ddfff3d8 x26: ffff0000ddfff378 x25: dfff800000000000 x24: 0000000000000001 x23: ffff8000a4ce7660 x22: ffff70001499cecc x21: ffff0000e1d8c160 x20: ffff0000e1cb7800 x19: ffff0000e1d8c0b0 x18: 00000000ffffffff x17: ffff800092f39000 x16: ffff80008ad27e48 x15: ffff700011e740c0 x14: 1ffff00011e740c0 x13: 0000000000000004 x12: ffffffffffffffff x11: ffff700011e740c0 x10: 0000000000ff0100 x9 : 94ef24f55d2dbc00 x8 : 94ef24f55d2dbc00 x7 : 0000000000000001 x6 : 0000000000000001 x5 : ffff8000a4ce6f98 x4 : ffff80008f415ba0 x3 : ffff800080548ef0 x2 : 0000000000000000 x1 : 0000000100000000 x0 : 000000000000003e Call trace: populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102 (P) btrfs_rebuild_free_space_tree+0x14c/0x54c fs/btrfs/free-space-tree.c:1337 btrfs_start_pre_rw_mount+0xa78/0xe10 fs/btrfs/disk-io.c:3074 btrfs_remount_rw fs/btrfs/super.c:1319 [inline] btrfs_reconfigure+0x828/0x2418 fs/btrfs/super.c:1543 reconfigure_super+0x1d4/0x6f0 fs/super.c:1083 do_remount fs/namespace.c:3365 [inline] path_mount+0xb34/0xde0 fs/namespace.c:4200 do_mount fs/namespace.c:4221 [inline] __do_sys_mount fs/namespace.c:4432 [inline] __se_sys_mount fs/namespace.c:4409 [inline] __arm64_sys_mount+0x3e8/0x468 fs/namespace.c:4409 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151 el0_svc+0x58/0x17c arch/arm64/kernel/entry-common.c:767 el0t_64_sync_handler+0x78/0x108 arch/arm64/kernel/entry-common.c:786 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600 Code: f0047182 91178042 528089c3 9771d47b (d4210000) ---[ end trace 0000000000000000 ]---
This happens because we are processing an empty block group, which has no extents allocated from it, there are no items for this block group, including the block group item since block group items are stored in a dedicated tree when using the block group tree feature. It also means this is the block group with the highest start offset, so there are no higher keys in the extent root, hence btrfs_search_slot_for_read() returns 1 (no higher key found).
Fix this by asserting 'ret' is 0 only if the block group tree feature is not enabled, in which case we should find a block group item for the block group since it's stored in the extent root and block group item keys are greater than extent item keys (the value for BTRFS_BLOCK_GROUP_ITEM_KEY is 192 and for BTRFS_EXTENT_ITEM_KEY and BTRFS_METADATA_ITEM_KEY the values are 168 and 169 respectively). In case 'ret' is 1, we just need to add a record to the free space tree which spans the whole block group, and we can achieve this by making 'ret == 0' as the while loop's condition.
--- fs/btrfs/free-space-tree.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
fs/btrfs/free-space-tree.c +12 -4
@@ -1104,11 +1104,21 @@ static int populate_free_space_tree(struct btrfs_trans_handle *trans, ret =btrfs_search_slot_for_read (extent_root, &key, path,1 ,0 );if (ret <0 ) goto out_locked; -ASSERT (ret ==0 ); +/* +* If ret is 1 (no key found), it means this is an empty block group, +* without any extents allocated from it and there's no block group +* item (key BTRFS_BLOCK_GROUP_ITEM_KEY) located in the extent tree +* because we are using the block group tree feature, so block group +* items are stored in the block group tree. It also means there are no +* extents allocated for block groups with a start offset beyond this +* block group's end offset (this is the last, highest, block group). +*/ +if (!btrfs_fs_compat_ro (trans->fs_info,BLOCK_GROUP_TREE )) +ASSERT (ret ==0 ); start = block_group->start; end = block_group->start + block_group->length; -while (1 ) { +while (ret ==0 ) {btrfs_item_key_to_cpu (path->nodes[0 ], &key, path->slots[0 ]); if (key.type == BTRFS_EXTENT_ITEM_KEY ||
@@ -1138,8 +1148,6 @@ static int populate_free_space_tree(struct btrfs_trans_handle *trans, ret =btrfs_next_item (extent_root, path);if (ret <0 ) goto out_locked; -if (ret) -break ; }if (start < end) { ret = __add_to_free_space_tree(trans, block_group, path2,
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 152/163 vt: add missing notification when switching back to text mode
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicolas Pitre <[email protected]>
[ Upstream commit ff78538e07fa284ce08cbbcb0730daa91ed16722 ]
Programs using poll() on /dev/vcsa to be notified when VT changes occur were missing one case: the switch from gfx to text mode.
--- drivers/tty/vt/vt.c | 1 + 1 file changed, 1 insertion(+)
drivers/tty/vt/vt.c +1 -0
@@ -4566,6 +4566,7 @@ void do_unblank_screen(int leaving_gfx)set_palette (vc);set_cursor (vc);vt_event_post (VT_EVENT_UNBLANK , vc->vc_num, vc->vc_num); +notify_update (vc); }EXPORT_SYMBOL (do_unblank_screen);
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 153/163 bpf: Adjust free target to avoid global starvation of LRU map
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Willem de Bruijn <[email protected]>
[ Upstream commit d4adf1c9ee7722545450608bcb095fb31512f0c6 ]
BPF_MAP_TYPE_LRU_HASH can recycle most recent elements well before the map is full, due to percpu reservations and force shrink before neighbor stealing. Once a CPU is unable to borrow from the global map, it will once steal one elem from a neighbor and after that each time flush this one element to the global list and immediately recycle it.
Batch value LOCAL_FREE_TARGET (128) will exhaust a 10K element map with 79 CPUs. CPU 79 will observe this behavior even while its neighbors hold 78 * 127 + 1 * 15 == 9921 free elements (99%).
CPUs need not be active concurrently. The issue can appear with affinity migration, e.g., irqbalance. Each CPU can reserve and then hold onto its 128 elements indefinitely.
Avoid global list exhaustion by limiting aggregate percpu caches to half of map size, by adjusting LOCAL_FREE_TARGET based on cpu count. This change has no effect on sufficiently large tables.
Similar to LOCAL_NR_SCANS and lru->nr_scans, introduce a map variable lru->free_target. The extra field fits in a hole in struct bpf_lru. The cacheline is already warm where read in the hot path. The field is only accessed with the lru lock held.
--- Documentation/bpf/map_hash.rst | 8 ++- Documentation/bpf/map_lru_hash_update.dot | 6 +- kernel/bpf/bpf_lru_list.c | 9 ++- kernel/bpf/bpf_lru_list.h | 1 + tools/testing/selftests/bpf/test_lru_map.c | 72 +++++++++++----------- 5 files changed, 52 insertions(+), 44 deletions(-)
Documentation/bpf/map_hash.rst +7 -1
@@ -233,10 +233,16 @@ attempts in order to enforce the LRU property which have increasing impacts on other CPUs involved in the following operation attempts: - Attempt to use CPU-local state to batch operations -- Attempt to fetch free nodes from global lists +- Attempt to fetch ``target_free`` free nodes from global lists - Attempt to pull any node from a global list and remove it from the hashmap - Attempt to pull any node from any CPU's list and remove it from the hashmap +The number of nodes to borrow from the global list in a batch, ``target_free``, +depends on the size of the map. Larger batch size reduces lock contention, but +may also exhaust the global structure. The value is computed at map init to +avoid exhaustion, by limiting aggregate reservation by all CPUs to half the map +size. With a minimum of a single element and maximum budget of 128 at a time. + This algorithm is described visually in the following diagram. See the description in commit 3a08c2fd7634 ("bpf: LRU List") for a full explanation of the corresponding operations:
Documentation/bpf/map_lru_hash_update.dot +3 -3
@@ -35,18 +35,18 @@ digraph { fn_bpf_lru_list_pop_free_to_local [shape=rectangle,fillcolor=2, label="Flush local pending, Rotate Global list, move - LOCAL_FREE_TARGET + target_free from global -> local"] // Also corresponds to: // fn__local_list_flush() // fn_bpf_lru_list_rotate() fn___bpf_lru_node_move_to_free[shape=diamond,fillcolor=2, - label="Able to free\nLOCAL_FREE_TARGET\nnodes?"] + label="Able to free\ntarget_free\nnodes?"] fn___bpf_lru_list_shrink_inactive [shape=rectangle,fillcolor=3, label="Shrink inactive list up to remaining - LOCAL_FREE_TARGET + target_free (global LRU -> local)"] fn___bpf_lru_list_shrink [shape=diamond,fillcolor=2, label="> 0 entries in\nlocal free list?"]
kernel/bpf/bpf_lru_list.c +6 -3
@@ -337,12 +337,12 @@ static void bpf_lru_list_pop_free_to_local(struct bpf_lru *lru, list) {__bpf_lru_node_move_to_free (l, node,local_free_list (loc_l),BPF_LRU_LOCAL_LIST_T_FREE ); -if (++nfree ==LOCAL_FREE_TARGET ) +if (++nfree == lru->target_free)break ; } -if (nfree <LOCAL_FREE_TARGET ) -__bpf_lru_list_shrink (lru, l,LOCAL_FREE_TARGET - nfree, +if (nfree < lru->target_free) +__bpf_lru_list_shrink (lru, l, lru->target_free - nfree,local_free_list (loc_l),BPF_LRU_LOCAL_LIST_T_FREE );
@@ -577,6 +577,9 @@ static void bpf_common_lru_populate(struct bpf_lru *lru, void *buf,list_add (&node->list, &l->lists[BPF_LRU_LIST_T_FREE ]); buf += elem_size; } + + lru->target_free =clamp ((nr_elems /num_possible_cpus ()) /2 , +1 ,LOCAL_FREE_TARGET ); } static void bpf_percpu_lru_populate(struct bpf_lru *lru, void *buf,
kernel/bpf/bpf_lru_list.h +1 -0
@@ -58,6 +58,7 @@ struct bpf_lru {del_from_htab_func del_from_htab;void *del_arg;unsigned int hash_offset; +unsigned int target_free;unsigned int nr_scans;bool percpu; };
tools/testing/selftests/bpf/test_lru_map.c +35 -37
156 lines not on this page · raw message
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 154/163 riscv: vdso: Exclude .rodata from the PT_DYNAMIC segment
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fangrui Song <[email protected]>
[ Upstream commit e0eb1b6b0cd29ca7793c501d5960fd36ba11f110 ]
.rodata is implicitly included in the PT_DYNAMIC segment due to inheriting the segment of the preceding .dynamic section (in both GNU ld and LLD). When the .rodata section's size is not a multiple of 16 bytes on riscv64, llvm-readelf will report a "PT_DYNAMIC dynamic table is invalid" warning. Note: in the presence of the .dynamic section, GNU readelf and llvm-readelf's -d option decodes the dynamic section using the section.
This issue arose after commit 8f8c1ff879fab60f80f3a7aec3000f47e5b03ba9 ("riscv: vdso.lds.S: remove hardcoded 0x800 .text start addr"), which placed .rodata directly after .dynamic by removing .eh_frame.
This patch resolves the implicit inclusion into PT_DYNAMIC by explicitly specifying the :text output section phdr.
--- arch/riscv/kernel/vdso/vdso.lds.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/riscv/kernel/vdso/vdso.lds.S +1 -1
@@ -31,7 +31,7 @@ SECTIONS *(.data .data.* .gnu.linkonce.d.*) *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) - } + } :text .note : { *(.note.*) } :text :note
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 155/163 HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhang Heng <[email protected]>
[ Upstream commit 1a8953f4f7746c6a515989774fe03047c522c613 ]
MARTLINKTECHNOLOGY is a microphone device, when the HID interface in an audio device is requested to get specific report id, the following error may occur.
[ 562.939373] usb 1-1.4.1.2: new full-speed USB device number 21 using xhci_hcd [ 563.104908] usb 1-1.4.1.2: New USB device found, idVendor=4c4a, idProduct=4155, bcdDevice= 1.00 [ 563.104910] usb 1-1.4.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 563.104911] usb 1-1.4.1.2: Product: USB Composite Device [ 563.104912] usb 1-1.4.1.2: Manufacturer: SmartlinkTechnology [ 563.104913] usb 1-1.4.1.2: SerialNumber: 20201111000001 [ 563.229499] input: SmartlinkTechnology USB Composite Device as /devices/pci0000:00/0000:00:07.1/0000:04:00.3/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1.2/1-1.4.1.2:1.2/0003:4C4A:4155.000F/input/input35 [ 563.291505] hid-generic 0003:4C4A:4155.000F: input,hidraw2: USB HID v2.01 Keyboard [SmartlinkTechnology USB Composite Device] on usb-0000:04:00.3-1.4.1.2/input2 [ 563.291557] usbhid 1-1.4.1.2:1.3: couldn't find an input interrupt endpoint [ 568.506654] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110) [ 573.626656] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110) [ 578.746657] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110) [ 583.866655] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110) [ 588.986657] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
Ignore HID interface. The device is working properly.
--- drivers/hid/hid-ids.h | 3 +++ drivers/hid/hid-quirks.c | 1 + 2 files changed, 4 insertions(+)
drivers/hid/hid-ids.h +3 -0
@@ -1519,4 +1519,7 @@#define USB_VENDOR_ID_SIGNOTEC 0x2133#define USB_DEVICE_ID_SIGNOTEC_VIEWSONIC_PD1011 0x0018 +#define USB_VENDOR_ID_SMARTLINKTECHNOLOGY 0x4c4a +#define USB_DEVICE_ID_SMARTLINKTECHNOLOGY_4155 0x4155 +#endif
drivers/hid/hid-quirks.c +1 -0
@@ -894,6 +894,7 @@ static const struct hid_device_id hid_ignore_list[] = {#endif { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) }, { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473) }, + { HID_USB_DEVICE(USB_VENDOR_ID_SMARTLINKTECHNOLOGY, USB_DEVICE_ID_SMARTLINKTECHNOLOGY_4155) }, { } };
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 156/163 HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chia-Lin Kao (AceLan) <[email protected]>
[ Upstream commit 54bae4c17c11688339eb73a04fd24203bb6e7494 ]
The Chicony Electronics HP 5MP Cameras (USB ID 04F2:B824 & 04F2:B82C) report a HID sensor interface that is not actually implemented. Attempting to access this non-functional sensor via iio_info causes system hangs as runtime PM tries to wake up an unresponsive sensor.
Add these 2 devices to the HID ignore list since the sensor interface is non-functional by design and should not be exposed to userspace.
--- drivers/hid/hid-ids.h | 2 ++ drivers/hid/hid-quirks.c | 2 ++ 2 files changed, 4 insertions(+)
drivers/hid/hid-ids.h +2 -0
@@ -311,6 +311,8 @@#define USB_DEVICE_ID_ASUS_AK1D 0x1125#define USB_DEVICE_ID_CHICONY_TOSHIBA_WT10A 0x1408#define USB_DEVICE_ID_CHICONY_ACER_SWITCH12 0x1421 +#define USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA 0xb824 +#define USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA2 0xb82c#define USB_VENDOR_ID_CHUNGHWAT 0x2247#define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH 0x0001
drivers/hid/hid-quirks.c +2 -0
@@ -747,6 +747,8 @@ static const struct hid_device_id hid_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) }, { HID_USB_DEVICE(USB_VENDOR_ID_AXENTIA, USB_DEVICE_ID_AXENTIA_FM_RADIO) }, { HID_USB_DEVICE(USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA2) }, { HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI470X) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI4713) },
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 157/163 HID: nintendo: avoid bluetooth suspend/resume stalls
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel J. Ogorchock <[email protected]>
[ Upstream commit 4a0381080397e77792a5168069f174d3e56175ff ]
Ensure we don't stall or panic the kernel when using bluetooth-connected controllers. This was reported as an issue on android devices using kernel 6.6 due to the resume hook which had been added for usb joycons.
First, set a new state value to JOYCON_CTLR_STATE_SUSPENDED in a newly-added nintendo_hid_suspend. This makes sure we will not stall out the kernel waiting for input reports during led classdev suspend. The stalls could happen if connectivity is unreliable or lost to the controller prior to suspend.
Second, since we lose connectivity during suspend, do not try joycon_init() for bluetooth controllers in the nintendo_hid_resume path.
Tested via multiple suspend/resume flows when using the controller both in USB and bluetooth modes.
--- drivers/hid/hid-nintendo.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-)
drivers/hid/hid-nintendo.c +36 -2
@@ -308,6 +308,7 @@ enum joycon_ctlr_state {JOYCON_CTLR_STATE_INIT ,JOYCON_CTLR_STATE_READ ,JOYCON_CTLR_STATE_REMOVED , + JOYCON_CTLR_STATE_SUSPENDED, };/* Controller type received as part of device info */
@@ -2754,14 +2755,46 @@ static void nintendo_hid_remove(struct hid_device *hdev)static int nintendo_hid_resume (struct hid_device *hdev) { -int ret =joycon_init (hdev); +struct joycon_ctlr *ctlr =hid_get_drvdata (hdev); +int ret; + +hid_dbg (hdev,"resume\n" ); +if (!joycon_using_usb (ctlr)) { +hid_dbg (hdev,"no-op resume for bt ctlr\n" ); + ctlr->ctlr_state =JOYCON_CTLR_STATE_READ ; +return 0 ; + } + ret =joycon_init (hdev);if (ret) -hid_err (hdev,"Failed to restore controller after resume" ); +hid_err (hdev, +"Failed to restore controller after resume: %d\n" , + ret); +else + ctlr->ctlr_state =JOYCON_CTLR_STATE_READ ;return ret; } +static int nintendo_hid_suspend (struct hid_device *hdev,pm_message_t message) +{ +struct joycon_ctlr *ctlr =hid_get_drvdata (hdev); + +hid_dbg (hdev,"suspend: %d\n" , message.event); +/* +* Avoid any blocking loops in suspend/resume transitions. +* +* joycon_enforce_subcmd_rate() can result in repeated retries if for +* whatever reason the controller stops providing input reports. +* +* This has been observed with bluetooth controllers which lose +* connectivity prior to suspend (but not long enough to result in +* complete disconnection). +*/ + ctlr->ctlr_state =JOYCON_CTLR_STATE_SUSPENDED ; +return 0 ; +} +#endif static const struct hid_device_id nintendo_hid_devices[] = {
@@ -2800,6 +2833,7 @@ static struct hid_driver nintendo_hid_driver = {#ifdef CONFIG_PM .resume = nintendo_hid_resume, + .suspend = nintendo_hid_suspend,#endif };static int __init nintendo_init (void )
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 158/163 selftests/bpf: adapt one more case in test_lru_map to the new target_free
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Willem de Bruijn <[email protected]>
commit 5e9388f7984a9cc7e659a105113f6ccf0aebedd0 upstream.
The below commit that updated BPF_MAP_TYPE_LRU_HASH free target, also updated tools/testing/selftests/bpf/test_lru_map to match.
But that missed one case that passes with 4 cores, but fails at higher cpu counts.
Update test_lru_sanity3 to also adjust its expectation of target_free.
This time tested with 1, 4, 16, 64 and 384 cpu count.
--- tools/testing/selftests/bpf/test_lru_map.c | 33 +++++++++++++++-------------- 1 file changed, 18 insertions(+), 15 deletions(-)
tools/testing/selftests/bpf/test_lru_map.c +18 -15
@@ -138,6 +138,12 @@ static int sched_next_online(int pid, inreturn ret; } +/* Derive target_free from map_size, same as bpf_common_lru_populate */ +static unsigned int __tgt_size (unsigned int map_size) +{ +return (map_size / nr_cpus) /2 ; +} +/* Inverse of how bpf_common_lru_populate derives target_free from map_size. */ static unsigned int __map_size (unsigned int tgt_free) {
@@ -410,12 +416,12 @@ static void test_lru_sanity2(int map_typprintf ("Pass\n" ); } -/* Size of the LRU map is 2*tgt_free -* It is to test the active/inactive list rotation -* Insert 1 to 2*tgt_free (+2*tgt_free keys) -* Lookup key 1 to tgt_free*3/2 -* Add 1+2*tgt_free to tgt_free*5/2 (+tgt_free/2 keys) -* => key 1+tgt_free*3/2 to 2*tgt_free are removed from LRU +/* Test the active/inactive list rotation +* +* Fill the whole map, deplete the free list. +* Reference all except the last lru->target_free elements. +* Insert lru->target_free new elements. This triggers one shrink. +* Verify that the non-referenced elements are replaced. */ static void test_lru_sanity3 (int map_type,int map_flags,unsigned int tgt_free) {
@@ -434,8 +440,7 @@ static void test_lru_sanity3(int map_typassert (sched_next_online (0 , &next_cpu) !=-1 ); - batch_size = tgt_free /2 ; -assert (batch_size *2 == tgt_free); + batch_size =__tgt_size (tgt_free); map_size = tgt_free *2 ; lru_map_fd =create_map (map_type, map_flags, map_size);
@@ -446,23 +451,21 @@ static void test_lru_sanity3(int map_typ value[0 ] =1234 ; -/* Insert 1 to 2*tgt_free (+2*tgt_free keys) */ - end_key =1 + (2 * tgt_free); +/* Fill the map */ + end_key =1 + map_size;for (key =1 ; key < end_key; key++)assert (!bpf_map_update_elem (lru_map_fd, &key, value,BPF_NOEXIST )); -/* Lookup key 1 to tgt_free*3/2 */ - end_key = tgt_free + batch_size; +/* Reference all but the last batch_size */ + end_key =1 + map_size - batch_size;for (key =1 ; key < end_key; key++) {assert (!bpf_map_lookup_elem_with_ref_bit (lru_map_fd, key, value));assert (!bpf_map_update_elem (expected_map_fd, &key, value,BPF_NOEXIST )); } -/* Add 1+2*tgt_free to tgt_free*5/2 -* (+tgt_free/2 keys) -*/ +/* Insert new batch_size: replaces the non-referenced elements */ key =2 * tgt_free +1 ; end_key = key + batch_size;for (; key < end_key; key++) {
Greg Kroah-Hartman
maintainerPATCH 159/163 erofs: fix rare pcluster memory leak after unmounting
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gao Xiang <[email protected]>
commit b10a1e5643e505c367c7e16aa6d8a9a0dc07354b upstream.
There may still exist some pcluster with valid reference counts during unmounting. Instead of introducing another synchronization primitive, just try again as unmounting is relatively rare. This approach is similar to z_erofs_cache_invalidate_folio().
It was also reported by syzbot as a UAF due to commit f5ad9f9a603f ("erofs: free pclusters if no cached folio is attached"):
BUG: KASAN: slab-use-after-free in do_raw_spin_trylock+0x72/0x1f0 kernel/locking/spinlock_debug.c:123 .. queued_spin_trylock include/asm-generic/qspinlock.h:92 [inline] do_raw_spin_trylock+0x72/0x1f0 kernel/locking/spinlock_debug.c:123 __raw_spin_trylock include/linux/spinlock_api_smp.h:89 [inline] _raw_spin_trylock+0x20/0x80 kernel/locking/spinlock.c:138 spin_trylock include/linux/spinlock.h:361 [inline] z_erofs_put_pcluster fs/erofs/zdata.c:959 [inline] z_erofs_decompress_pcluster fs/erofs/zdata.c:1403 [inline] z_erofs_decompress_queue+0x3798/0x3ef0 fs/erofs/zdata.c:1425 z_erofs_decompressqueue_work+0x99/0xe0 fs/erofs/zdata.c:1437 process_one_work kernel/workqueue.c:3229 [inline] process_scheduled_works+0xa68/0x1840 kernel/workqueue.c:3310 worker_thread+0x870/0xd30 kernel/workqueue.c:3391 kthread+0x2f2/0x390 kernel/kthread.c:389 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 </TASK>
However, it seems a long outstanding memory leak. Fix it now.
--- fs/erofs/zutil.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
fs/erofs/zutil.c +4 -3
@@ -230,9 +230,10 @@ void erofs_shrinker_unregister(struct sustruct erofs_sb_info *const sbi =EROFS_SB (sb);mutex_lock (&sbi->umount_mutex); -/* clean up all remaining pclusters in memory */ -z_erofs_shrink_scan (sbi, ~0UL ); - +while (!xa_empty (&sbi->managed_pslots)) { +z_erofs_shrink_scan (sbi, ~0UL ); +cond_resched (); + }spin_lock (&erofs_sb_list_lock);list_del (&sbi->list);spin_unlock (&erofs_sb_list_lock);
Greg Kroah-Hartman
maintainerPATCH 160/163 net: wangxun: revert the adjustment of the IRQ vector sequence
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiawen Wu <[email protected]>
commit e37546ad1f9b2c777d3a21d7e50ce265ee3dece8 upstream.
Due to hardware limitations of NGBE, queue IRQs can only be requested on vector 0 to 7. When the number of queues is set to the maximum 8, the PCI IRQ vectors are allocated from 0 to 8. The vector 0 is used by MISC interrupt, and althrough the vector 8 is used by queue interrupt, it is unable to receive packets. This will cause some packets to be dropped when RSS is enabled and they are assigned to queue 8.
So revert the adjustment of the MISC IRQ location, to make it be the last one in IRQ vectors.
--- drivers/net/ethernet/wangxun/libwx/wx_lib.c | 16 ++++++++-------- drivers/net/ethernet/wangxun/libwx/wx_type.h | 2 +- drivers/net/ethernet/wangxun/ngbe/ngbe_main.c | 2 +- drivers/net/ethernet/wangxun/ngbe/ngbe_type.h | 2 +- drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c | 4 ++-- drivers/net/ethernet/wangxun/txgbe/txgbe_type.h | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-)
drivers/net/ethernet/wangxun/libwx/wx_lib.c +8 -8
@@ -1624,7 +1624,7 @@ static void wx_set_num_queues(struct wx*/ static int wx_acquire_msix_vectors (struct wx *wx) { -struct irq_affinity affd = { .pre_vectors =1 }; +struct irq_affinity affd = { .post_vectors =1 };int nvecs, i;/* We start by asking for one vector per queue pair */
@@ -1661,16 +1661,17 @@ static int wx_acquire_msix_vectors(strucreturn nvecs; } - wx->msix_entry->entry =0 ; - wx->msix_entry->vector =pci_irq_vector (wx->pdev,0 ); nvecs -=1 ;for (i =0 ; i < nvecs; i++) { wx->msix_q_entries[i].entry = i; - wx->msix_q_entries[i].vector =pci_irq_vector (wx->pdev, i +1 ); + wx->msix_q_entries[i].vector =pci_irq_vector (wx->pdev, i); } wx->num_q_vectors = nvecs; + wx->msix_entry->entry = nvecs; + wx->msix_entry->vector =pci_irq_vector (wx->pdev, nvecs); +return 0 ; }
@@ -2120,7 +2121,6 @@ static void wx_set_ivar(struct wx *wx, swr32 (wx,WX_PX_MISC_IVAR , ivar); }else {/* tx or rx causes */ - msix_vector +=1 ;/* offset for queue vectors */ msix_vector |=WX_PX_IVAR_ALLOC_VAL ; index = ((16 * (queue &1 )) + (8 * direction)); ivar =rd32 (wx,WX_PX_IVAR (queue >>1 ));
@@ -2151,7 +2151,7 @@ void wx_write_eitr(struct wx_q_vector *q itr_reg |=WX_PX_ITR_CNT_WDIS ; -wr32 (wx,WX_PX_ITR (v_idx +1 ), itr_reg); +wr32 (wx,WX_PX_ITR (v_idx), itr_reg); }/**
@@ -2197,9 +2197,9 @@ void wx_configure_vectors(struct wx *wx)wx_write_eitr (q_vector); } -wx_set_ivar (wx,-1 ,0 ,0 ); +wx_set_ivar (wx,-1 ,0 , v_idx);if (pdev->msix_enabled) -wr32 (wx,WX_PX_ITR (0 ),1950 ); +wr32 (wx,WX_PX_ITR (v_idx),1950 ); }EXPORT_SYMBOL (wx_configure_vectors);
drivers/net/ethernet/wangxun/libwx/wx_type.h +1 -1
@@ -1136,7 +1136,7 @@ struct wx { };#define WX_INTR_ALL (~0ULL) -#define WX_INTR_Q (i) BIT((i) + 1) +#define WX_INTR_Q (i) BIT((i))/* register operations */ #define wr32 (a, reg, value) writel((value), ((a)->hw_addr + (reg)))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c +1 -1
@@ -154,7 +154,7 @@ static void ngbe_irq_enable(struct wx *wif (queues)wx_intr_enable (wx,NGBE_INTR_ALL );else -wx_intr_enable (wx,NGBE_INTR_MISC ); +wx_intr_enable (wx,NGBE_INTR_MISC (wx)); }/**
drivers/net/ethernet/wangxun/ngbe/ngbe_type.h +1 -1
@@ -80,7 +80,7 @@ NGBE_PX_MISC_IEN_GPIO)#define NGBE_INTR_ALL 0x1FF -#define NGBE_INTR_MISC BIT(0) +#define NGBE_INTR_MISC (A ) BIT((A)->num_q_vectors)#define NGBE_PHY_CONFIG (reg_offset) (0x14000 + ((reg_offset) * 4))#define NGBE_CFG_LAN_SPEED 0x14440
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c +2 -2
@@ -21,7 +21,7 @@ void txgbe_irq_enable(struct wx *wx, boowr32 (wx,WX_PX_MISC_IEN ,TXGBE_PX_MISC_IEN_MASK );/* unmask interrupt */ -wx_intr_enable (wx,TXGBE_INTR_MISC ); +wx_intr_enable (wx,TXGBE_INTR_MISC (wx));if (queues)wx_intr_enable (wx,TXGBE_INTR_QALL (wx)); }
@@ -147,7 +147,7 @@ static irqreturn_t txgbe_misc_irq_thread nhandled++; } -wx_intr_enable (wx,TXGBE_INTR_MISC ); +wx_intr_enable (wx,TXGBE_INTR_MISC (wx));return (nhandled >0 ?IRQ_HANDLED :IRQ_NONE ); }
drivers/net/ethernet/wangxun/txgbe/txgbe_type.h +2 -2
@@ -264,8 +264,8 @@ struct txgbe_fdir_filter {#define TXGBE_DEFAULT_RX_WORK 128#endif -#define TXGBE_INTR_MISC BIT(0) -#define TXGBE_INTR_QALL (A ) GENMASK((A)->num_q_vectors, 1) +#define TXGBE_INTR_MISC (A ) BIT((A)->num_q_vectors) +#define TXGBE_INTR_QALL (A ) (TXGBE_INTR_MISC(A) - 1)#define TXGBE_MAX_EITR GENMASK(11, 3)
Greg Kroah-Hartman
maintainerPATCH 161/163 kasan: remove kasan_find_vm_area() to prevent possible deadlock
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yeoreum Yun <[email protected]>
commit 6ee9b3d84775944fb8c8a447961cd01274ac671c upstream.
find_vm_area() couldn't be called in atomic_context. If find_vm_area() is called to reports vm area information, kasan can trigger deadlock like:
CPU0 CPU1vmalloc();
alloc_vmap_area();
spin_lock(&vn->busy.lock)
spin_lock_bh(&some_lock);
<interrupt occurs>
<in softirq>
spin_lock(&some_lock);
<access invalid address>
kasan_report();
print_report();
print_address_description();
kasan_find_vm_area();
find_vm_area();
spin_lock(&vn->busy.lock) // deadlock!To prevent possible deadlock while kasan reports, remove kasan_find_vm_area().
--- mm/kasan/report.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-)
mm/kasan/report.c +2 -11
@@ -398,17 +398,8 @@ static void print_address_description(vo }if (is_vmalloc_addr (addr)) { -struct vm_struct *va =find_vm_area (addr); - -if (va) { -pr_err ("The buggy address belongs to the virtual mapping at\n" -" [%px, %px) created by:\n" -" %pS\n" , - va->addr, va->addr + va->size, va->caller); -pr_err ("\n" ); - - page =vmalloc_to_page (addr); - } +pr_err ("The buggy address %px belongs to a vmalloc virtual mapping\n" , addr); + page =vmalloc_to_page (addr); }if (page) {
Greg Kroah-Hartman
maintainerPATCH 162/163 ksmbd: fix potential use-after-free in oplock/lease break ack
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <[email protected]>
commit 50f930db22365738d9387c974416f38a06e8057e upstream.
If ksmbd_iov_pin_rsp return error, use-after-free can happen by accessing opinfo->state and opinfo_put and ksmbd_fd_put could called twice.
--- fs/smb/server/smb2pdu.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-)
fs/smb/server/smb2pdu.c +9 -20
@@ -8517,11 +8517,6 @@ static void smb20_oplock_break_ack(struc goto err_out; } - opinfo->op_state =OPLOCK_STATE_NONE ; -wake_up_interruptible_all (&opinfo->oplock_q); -opinfo_put (opinfo); -ksmbd_fd_put (work, fp); - rsp->StructureSize =cpu_to_le16 (24 ); rsp->OplockLevel = rsp_oplevel; rsp->Reserved =0 ;
@@ -8529,16 +8524,15 @@ static void smb20_oplock_break_ack(struc rsp->VolatileFid = volatile_id; rsp->PersistentFid = persistent_id; ret =ksmbd_iov_pin_rsp (work, rsp,sizeof (struct smb2_oplock_break )); -if (!ret) -return ; - +if (ret) { err_out: +smb2_set_err_rsp (work); + } + opinfo->op_state =OPLOCK_STATE_NONE ;wake_up_interruptible_all (&opinfo->oplock_q); -opinfo_put (opinfo);ksmbd_fd_put (work, fp); -smb2_set_err_rsp (work); }static int check_lease_state (struct lease *lease,__le32 req_state)
@@ -8668,11 +8662,6 @@ static void smb21_lease_break_ack(struct } lease_state = lease->state; - opinfo->op_state =OPLOCK_STATE_NONE ; -wake_up_interruptible_all (&opinfo->oplock_q); -atomic_dec (&opinfo->breaking_cnt); -wake_up_interruptible_all (&opinfo->oplock_brk); -opinfo_put (opinfo); rsp->StructureSize =cpu_to_le16 (36 ); rsp->Reserved =0 ;
@@ -8681,16 +8670,16 @@ static void smb21_lease_break_ack(struct rsp->LeaseState = lease_state; rsp->LeaseDuration =0 ; ret =ksmbd_iov_pin_rsp (work, rsp,sizeof (struct smb2_lease_ack )); -if (!ret) -return ; - +if (ret) { err_out: +smb2_set_err_rsp (work); + } + + opinfo->op_state =OPLOCK_STATE_NONE ;wake_up_interruptible_all (&opinfo->oplock_q);atomic_dec (&opinfo->breaking_cnt);wake_up_interruptible_all (&opinfo->oplock_brk); -opinfo_put (opinfo); -smb2_set_err_rsp (work); }/**
Greg Kroah-Hartman
maintainerPATCH 163/163 arm64: Filter out SME hwcaps when FEAT_SME isnt implemented
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mark Brown <[email protected]>
commit a75ad2fc76a2ab70817c7eed3163b66ea84ca6ac upstream.
We have a number of hwcaps for various SME subfeatures enumerated via ID_AA64SMFR0_EL1. Currently we advertise these without cross checking against the main SME feature, advertised in ID_AA64PFR1_EL1.SME which means that if the two are out of sync userspace can see a confusing situation where SME subfeatures are advertised without the base SME hwcap. This can be readily triggered by using the arm64.nosme override which only masks out ID_AA64PFR1_EL1.SME, and there have also been reports of VMMs which do the same thing.
Fix this as we did previously for SVE in 064737920bdb ("arm64: Filter out SVE hwcaps when FEAT_SVE isn't implemented") by filtering out the SME subfeature hwcaps when FEAT_SME is not present.
--- arch/arm64/kernel/cpufeature.c | 45 +++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 19 deletions(-)
arch/arm64/kernel/cpufeature.c +26 -19
@@ -2959,6 +2959,13 @@ static bool has_sve_feature(const struct }#endif +#ifdef CONFIG_ARM64_SME +static bool has_sme_feature (const struct arm64_cpu_capabilities *cap,int scope) +{ +return system_supports_sme () &&has_user_cpuid_feature (cap, scope); +} +#endif +static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {HWCAP_CAP (ID_AA64ISAR0_EL1 ,AES ,PMULL ,CAP_HWCAP ,KERNEL_HWCAP_PMULL ),HWCAP_CAP (ID_AA64ISAR0_EL1 ,AES ,AES ,CAP_HWCAP ,KERNEL_HWCAP_AES ),
@@ -3037,25 +3044,25 @@ static const struct arm64_cpu_capabiliti HWCAP_CAP(ID_AA64ISAR2_EL1, BC, IMP, CAP_HWCAP, KERNEL_HWCAP_HBC),#ifdef CONFIG_ARM64_SME HWCAP_CAP (ID_AA64PFR1_EL1 ,SME ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,FA64 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_FA64 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 , LUTv2,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_LUTV2 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 , SMEver, SME2p1,CAP_HWCAP ,KERNEL_HWCAP_SME2P1 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 , SMEver,SME2 ,CAP_HWCAP ,KERNEL_HWCAP_SME2 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,I16I64 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_I16I64 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,F64F64 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F64F64 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,I16I32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_I16I32 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,B16B16 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_B16B16 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,F16F16 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F16F16 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,F8F16 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F8F16 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,F8F32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F8F32 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,I8I32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_I8I32 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,F16F32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F16F32 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,B16F32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_B16F32 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,BI32I32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_BI32I32 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,F32F32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F32F32 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,SF8FMA ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_SF8FMA ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,SF8DP4 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_SF8DP4 ), -HWCAP_CAP (ID_AA64SMFR0_EL1 ,SF8DP2 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_SF8DP2 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,FA64 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_FA64 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 , LUTv2,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_LUTV2 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 , SMEver, SME2p1,CAP_HWCAP ,KERNEL_HWCAP_SME2P1 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 , SMEver,SME2 ,CAP_HWCAP ,KERNEL_HWCAP_SME2 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,I16I64 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_I16I64 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,F64F64 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F64F64 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,I16I32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_I16I32 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,B16B16 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_B16B16 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,F16F16 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F16F16 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,F8F16 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F8F16 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,F8F32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F8F32 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,I8I32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_I8I32 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,F16F32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F16F32 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,B16F32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_B16F32 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,BI32I32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_BI32I32 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,F32F32 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_F32F32 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,SF8FMA ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_SF8FMA ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,SF8DP4 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_SF8DP4 ), +HWCAP_CAP_MATCH_ID (has_sme_feature,ID_AA64SMFR0_EL1 ,SF8DP2 ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_SME_SF8DP2 ), #endif /* CONFIG_ARM64_SME */HWCAP_CAP (ID_AA64FPFR0_EL1 ,F8CVT ,IMP ,CAP_HWCAP ,KERNEL_HWCAP_F8CVT ), HWCAP_CAP(ID_AA64FPFR0_EL1, F8FMA, IMP, CAP_HWCAP, KERNEL_HWCAP_F8FMA),
Quoted 8 lines · On Tue, 15 Jul 2025 15:11:08 +0200 Greg Kroah-Hartman…
This is the start of the stable review cycle for the 6.12.39 release. There are 163 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 17 Jul 2025 13:07:32 +0000. Anything received after that time might be too late.
Boot-tested under QEMU for Rust x86_64, arm64 and riscv64; built-tested for loongarch64:
Thanks!
Cheers,
Miguel
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 6.12.39 release. There are 163 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
CIP testing did not find any problems here:
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-6.12.y
Best regards,
Pavel
Signature · 2 lines
In cooperation with DENX Software Engineering GmbH, HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.39 release. There are 163 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 17 Jul 2025 13:07:32 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.39-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.12.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah