6.12.10-rc1 review
Subsystems (11)
Greg Kroah-Hartman
maintainerPATCH 141/189 serial: stm32: use port lock wrappers for break control
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ben Wolsieffer <[email protected]>
commit 0cfc36ea51684b5932cd3951ded523777d807af2 upstream.
Commit 30e945861f3b ("serial: stm32: add support for break control") added another usage of the port lock, but was merged on the same day as c5d06662551c ("serial: stm32: Use port lock wrappers"), therefore the latter did not update this usage to use the port lock wrappers.
--- drivers/tty/serial/stm32-usart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/tty/serial/stm32-usart.c +2 -2
@@ -1051,14 +1051,14 @@ static void stm32_usart_break_ctl(structconst struct stm32_usart_offsets *ofs = &stm32_port->info->ofs;unsigned long flags; -spin_lock_irqsave (&port->lock, flags); +uart_port_lock_irqsave (port, &flags);if (break_state)stm32_usart_set_bits (port, ofs->rqr,USART_RQR_SBKRQ );else stm32_usart_clr_bits (port, ofs->rqr,USART_RQR_SBKRQ ); -spin_unlock_irqrestore (&port->lock, flags); +uart_port_unlock_irqrestore (port, flags); }static int stm32_usart_startup (struct uart_port *port)
Greg Kroah-Hartman
maintainerPATCH 142/189 usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lianqin Hu <[email protected]>
commit 13014969cbf07f18d62ceea40bd8ca8ec9d36cec upstream.
Considering that in some extreme cases, when performing the unbinding operation, gserial_disconnect has cleared gser->ioport, which triggers gadget reconfiguration, and then calls gs_read_complete, resulting in access to a null pointer. Therefore, ep is disabled before gserial_disconnect sets port to null to prevent this from happening.
Call trace: gs_read_complete+0x58/0x240 usb_gadget_giveback_request+0x40/0x160 dwc3_remove_requests+0x170/0x484 dwc3_ep0_out_start+0xb0/0x1d4 __dwc3_gadget_start+0x25c/0x720 kretprobe_trampoline.cfi_jt+0x0/0x8 kretprobe_trampoline.cfi_jt+0x0/0x8 udc_bind_to_driver+0x1d8/0x300 usb_gadget_probe_driver+0xa8/0x1dc gadget_dev_desc_UDC_store+0x13c/0x188 configfs_write_iter+0x160/0x1f4 vfs_write+0x2d0/0x40c ksys_write+0x7c/0xf0 __arm64_sys_write+0x20/0x30 invoke_syscall+0x60/0x150 el0_svc_common+0x8c/0xf8 do_el0_svc+0x28/0xa0 el0_svc+0x24/0x84
--- drivers/usb/gadget/function/u_serial.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/usb/gadget/function/u_serial.c +4 -4
@@ -1420,6 +1420,10 @@ void gserial_disconnect(struct gserial */* REVISIT as above: how best to track this? */ port->port_line_coding = gser->port_line_coding; +/* disable endpoints, aborting down any active I/O */ +usb_ep_disable (gser->out); +usb_ep_disable (gser->in); + port->port_usb =NULL ; gser->ioport =NULL ;if (port->port.count >0 ) {
@@ -1431,10 +1435,6 @@ void gserial_disconnect(struct gserial *spin_unlock (&port->port_lock);spin_unlock_irqrestore (&serial_port_lock, flags); -/* disable endpoints, aborting down any active I/O */ -usb_ep_disable (gser->out); -usb_ep_disable (gser->in); -/* finally, free any unused/unusable I/O buffers */ spin_lock_irqsave (&port->port_lock, flags);if (port->port.count ==0 )
Greg Kroah-Hartman
maintainerPATCH 143/189 x86/fpu: Ensure shadow stack is active before "getting" registers
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rick Edgecombe <[email protected]>
commit a9d9c33132d49329ada647e4514d210d15e31d81 upstream.
The x86 shadow stack support has its own set of registers. Those registers are XSAVE-managed, but they are "supervisor state components" which means that userspace can not touch them with XSAVE/XRSTOR. It also means that they are not accessible from the existing ptrace ABI for XSAVE state. Thus, there is a new ptrace get/set interface for it.
The regset code that ptrace uses provides an ->active() handler in addition to the get/set ones. For shadow stack this ->active() handler verifies that shadow stack is enabled via the ARCH_SHSTK_SHSTK bit in the thread struct. The ->active() handler is checked from some call sites of the regset get/set handlers, but not the ptrace ones. This was not understood when shadow stack support was put in place.
As a result, both the set/get handlers can be called with XFEATURE_CET_USER in its init state, which would cause get_xsave_addr() to return NULL and trigger a WARN_ON(). The ssp_set() handler luckily has an ssp_active() check to avoid surprising the kernel with shadow stack behavior when the kernel is not ready for it (ARCH_SHSTK_SHSTK==0). That check just happened to avoid the warning.
But the ->get() side wasn't so lucky. It can be called with shadow stacks disabled, triggering the warning in practice, as reported by Christina Schimpe:
WARNING: CPU: 5 PID: 1773 at arch/x86/kernel/fpu/regset.c:198 ssp_get+0x89/0xa0 [...] Call Trace: <TASK> ? show_regs+0x6e/0x80 ? ssp_get+0x89/0xa0 ? __warn+0x91/0x150 ? ssp_get+0x89/0xa0 ? report_bug+0x19d/0x1b0 ? handle_bug+0x46/0x80 ? exc_invalid_op+0x1d/0x80 ? asm_exc_invalid_op+0x1f/0x30 ? __pfx_ssp_get+0x10/0x10 ? ssp_get+0x89/0xa0 ? ssp_get+0x52/0xa0 __regset_get+0xad/0xf0 copy_regset_to_user+0x52/0xc0 ptrace_regset+0x119/0x140 ptrace_request+0x13c/0x850 ? wait_task_inactive+0x142/0x1d0 ? do_syscall_64+0x6d/0x90 arch_ptrace+0x102/0x300
[...]
Ensure that shadow stacks are active in a thread before looking them up in the XSAVE buffer. Since ARCH_SHSTK_SHSTK and user_ssp[SHSTK_EN] are set at the same time, the active check ensures that there will be something to find in the XSAVE buffer.
[ dhansen: changelog/subject tweaks ]
--- arch/x86/kernel/fpu/regset.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/x86/kernel/fpu/regset.c +2 -1
@@ -190,7 +190,8 @@ int ssp_get(struct task_struct *target,struct fpu *fpu = &target->thread.fpu;struct cet_user_state *cetregs; -if (!cpu_feature_enabled (X86_FEATURE_USER_SHSTK )) +if (!cpu_feature_enabled (X86_FEATURE_USER_SHSTK ) || + !ssp_active (target, regset))return -ENODEV ;sync_fpstate (fpu);
Greg Kroah-Hartman
maintainerPATCH 144/189 usb: dwc3-am62: Disable autosuspend during remove
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Prashanth K <[email protected]>
commit 625e70ccb7bbbb2cc912e23c63390946170c085c upstream.
Runtime PM documentation (Section 5) mentions, during remove() callbacks, drivers should undo the runtime PM changes done in probe(). Usually this means calling pm_runtime_disable(), pm_runtime_dont_use_autosuspend() etc. Hence add missing function to disable autosuspend on dwc3-am62 driver unbind.
--- drivers/usb/dwc3/dwc3-am62.c | 1 + 1 file changed, 1 insertion(+)
drivers/usb/dwc3/dwc3-am62.c +1 -0
@@ -309,6 +309,7 @@ static void dwc3_ti_remove(struct platfopm_runtime_put_sync (dev);pm_runtime_disable (dev); +pm_runtime_dont_use_autosuspend (dev);pm_runtime_set_suspended (dev); }
Greg Kroah-Hartman
maintainerPATCH 145/189 USB: usblp: return error when setting unsupported protocol
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jun Yan <[email protected]>
commit 7a3d76a0b60b3f6fc3375e4de2174bab43f64545 upstream.
Fix the regression introduced by commit d8c6edfa3f4e ("USB:
usblp: don't call usb_set_interface if there's a single alt"), which causes that unsupported protocols can also be set via ioctl when the num_altsetting of the device is 1.
Move the check for protocol support to the earlier stage.
--- drivers/usb/class/usblp.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/usb/class/usblp.c +4 -3
@@ -1337,11 +1337,12 @@ static int usblp_set_protocol(struct usbif (protocol <USBLP_FIRST_PROTOCOL || protocol >USBLP_LAST_PROTOCOL )return -EINVAL ; + alts = usblp->protocol[protocol].alt_setting; +if (alts <0 ) +return -EINVAL ; +/* Don't unnecessarily set the interface if there's a single alt. */ if (usblp->intf->num_altsetting >1 ) { - alts = usblp->protocol[protocol].alt_setting; -if (alts <0 ) -return -EINVAL ; r =usb_set_interface (usblp->dev, usblp->ifnum, alts);if (r <0 ) { printk(KERN_ERR "usblp: can't set desired altsetting %d on interface %d\n",
Greg Kroah-Hartman
maintainerPATCH 146/189 USB: core: Disable LPM only for non-suspended ports
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kai-Heng Feng <[email protected]>
commit 59bfeaf5454b7e764288d84802577f4a99bf0819 upstream.
There's USB error when tegra board is shutting down:
[ 180.919315] usb 2-3: Failed to set U1 timeout to 0x0,error code -113 [ 180.919995] usb 2-3: Failed to set U1 timeout to 0xa,error code -113 [ 180.920512] usb 2-3: Failed to set U2 timeout to 0x4,error code -113 [ 186.157172] tegra-xusb 3610000.usb: xHCI host controller not responding, assume dead [ 186.157858] tegra-xusb 3610000.usb: HC died; cleaning up [ 186.317280] tegra-xusb 3610000.usb: Timeout while waiting for evaluate context command
The issue is caused by disabling LPM on already suspended ports.
For USB2 LPM, the LPM is already disabled during port suspend. For USB3 LPM, port won't transit to U1/U2 when it's already suspended in U3, hence disabling LPM is only needed for ports that are not suspended.
--- drivers/usb/core/port.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/usb/core/port.c +4 -3
@@ -452,10 +452,11 @@ static int usb_port_runtime_suspend(strustatic void usb_port_shutdown (struct device *dev) {struct usb_port *port_dev =to_usb_port (dev); +struct usb_device *udev = port_dev->child; -if (port_dev->child) { -usb_disable_usb2_hardware_lpm (port_dev->child); -usb_unlocked_disable_lpm (port_dev->child); +if (udev && !udev->port_is_suspended) { +usb_disable_usb2_hardware_lpm (udev); +usb_unlocked_disable_lpm (udev); } }
Greg Kroah-Hartman
maintainerPATCH 147/189 usb: fix reference leak in usb_new_device()
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ma Ke <[email protected]>
commit 0df11fa8cee5a9cf8753d4e2672bb3667138c652 upstream.
When device_add(&udev->dev) succeeds and a later call fails, usb_new_device() does not properly call device_del(). As comment of device_add() says, 'if device_add() succeeds, you should call device_del() when you want to get rid of it. If device_add() has not succeeded, use only put_device() to drop the reference count'.
Found by code review.
--- drivers/usb/core/hub.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/usb/core/hub.c +4 -2
@@ -2663,13 +2663,13 @@ int usb_new_device(struct usb_device *ud err =sysfs_create_link (&udev->dev.kobj, &port_dev->dev.kobj,"port" );if (err) - goto fail; + goto out_del_dev; err =sysfs_create_link (&port_dev->dev.kobj, &udev->dev.kobj,"device" );if (err) {sysfs_remove_link (&udev->dev.kobj,"port" ); - goto fail; + goto out_del_dev; }if (!test_and_set_bit (port1, hub->child_usage_bits))
@@ -2683,6 +2683,8 @@ int usb_new_device(struct usb_device *udpm_runtime_put_sync_autosuspend (&udev->dev);return err; +out_del_dev: +device_del (&udev->dev); fail:usb_set_device_state (udev,USB_STATE_NOTATTACHED );pm_runtime_disable (&udev->dev);
Greg Kroah-Hartman
maintainerPATCH 148/189 usb: gadget: midi2: Reverse-select at the right place
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit 6f660ffce7c938f2a5d8473c0e0b45e4fb25ef7f upstream.
We should do reverse selection of other components from CONFIG_USB_F_MIDI2 which is tristate, instead of CONFIG_USB_CONFIGFS_F_MIDI2 which is bool, for satisfying subtle module dependencies.
--- drivers/usb/gadget/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/usb/gadget/Kconfig +2 -2
@@ -211,6 +211,8 @@ config USB_F_MIDI config USB_F_MIDI2 tristate + select SND_UMP + select SND_UMP_LEGACY_RAWMIDI config USB_F_HID tristate
@@ -445,8 +447,6 @@ config USB_CONFIGFS_F_MIDI2 depends on USB_CONFIGFS depends on SND select USB_LIBCOMPOSITE - select SND_UMP - select SND_UMP_LEGACY_RAWMIDI select USB_F_MIDI2 help The MIDI 2.0 function driver provides the generic emulated
Greg Kroah-Hartman
maintainerPATCH 149/189 usb: chipidea: ci_hdrc_imx: decrement devices refcount in .remove() and in the error path of .probe()
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joe Hattori <[email protected]>
commit 74adad500346fb07d69af2c79acbff4adb061134 upstream.
Current implementation of ci_hdrc_imx_driver does not decrement the refcount of the device obtained in usbmisc_get_init_data(). Add a put_device() call in .remove() and in .probe() before returning an error.
This bug was found by an experimental static analysis tool that I am developing.
--- drivers/usb/chipidea/ci_hdrc_imx.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-)
drivers/usb/chipidea/ci_hdrc_imx.c +17 -8
@@ -370,25 +370,29 @@ static int ci_hdrc_imx_probe(struct plat data->pinctrl =devm_pinctrl_get (dev);if (PTR_ERR (data->pinctrl) == -ENODEV ) data->pinctrl =NULL ; -else if (IS_ERR (data->pinctrl)) -return dev_err_probe (dev,PTR_ERR (data->pinctrl), +else if (IS_ERR (data->pinctrl)) { + ret =dev_err_probe (dev,PTR_ERR (data->pinctrl),"pinctrl get failed\n" ); + goto err_put; + } data->hsic_pad_regulator =devm_regulator_get_optional (dev,"hsic" );if (PTR_ERR (data->hsic_pad_regulator) == -ENODEV ) {/* no pad regulator is needed */ data->hsic_pad_regulator =NULL ; - }else if (IS_ERR (data->hsic_pad_regulator)) -return dev_err_probe (dev,PTR_ERR (data->hsic_pad_regulator), + }else if (IS_ERR (data->hsic_pad_regulator)) { + ret =dev_err_probe (dev,PTR_ERR (data->hsic_pad_regulator),"Get HSIC pad regulator error\n" ); + goto err_put; + }if (data->hsic_pad_regulator) { ret =regulator_enable (data->hsic_pad_regulator);if (ret) {dev_err (dev,"Failed to enable HSIC pad regulator\n" ); -return ret; + goto err_put; } } }
@@ -402,13 +406,14 @@ static int ci_hdrc_imx_probe(struct platdev_err (dev,"pinctrl_hsic_idle lookup failed, err=%ld\n" ,PTR_ERR (pinctrl_hsic_idle)); -return PTR_ERR (pinctrl_hsic_idle); + ret =PTR_ERR (pinctrl_hsic_idle); + goto err_put; } ret =pinctrl_select_state (data->pinctrl, pinctrl_hsic_idle);if (ret) {dev_err (dev,"hsic_idle select failed, err=%d\n" , ret); -return ret; + goto err_put; } data->pinctrl_hsic_active = pinctrl_lookup_state(data->pinctrl,
@@ -417,7 +422,8 @@ static int ci_hdrc_imx_probe(struct platdev_err (dev,"pinctrl_hsic_active lookup failed, err=%ld\n" ,PTR_ERR (data->pinctrl_hsic_active)); -return PTR_ERR (data->pinctrl_hsic_active); + ret =PTR_ERR (data->pinctrl_hsic_active); + goto err_put; } }
@@ -527,6 +533,8 @@ disable_hsic_regulator:if (pdata.flags &CI_HDRC_PMQOS )cpu_latency_qos_remove_request (&data->pm_qos_req); data->ci_pdev =NULL ; +err_put: +put_device (data->usbmisc_data->dev);return ret; }
@@ -551,6 +559,7 @@ static void ci_hdrc_imx_remove(struct plif (data->hsic_pad_regulator)regulator_disable (data->hsic_pad_regulator); } +put_device (data->usbmisc_data->dev); }static void ci_hdrc_imx_shutdown (struct platform_device *pdev)
Greg Kroah-Hartman
maintainerPATCH 150/189 usb: typec: tcpci: fix NULL pointer issue on shared irq case
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xu Yang <[email protected]>
commit 862a9c0f68487fd6ced15622d9cdcec48f8b5aaa upstream.
The tcpci_irq() may meet below NULL pointer dereference issue:
[ 2.641851] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010 [ 2.641951] status 0x1, 0x37f [ 2.650659] Mem abort info: [ 2.656490] ESR = 0x0000000096000004 [ 2.660230] EC = 0x25: DABT (current EL), IL = 32 bits [ 2.665532] SET = 0, FnV = 0 [ 2.668579] EA = 0, S1PTW = 0 [ 2.671715] FSC = 0x04: level 0 translation fault [ 2.676584] Data abort info: [ 2.679459] ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000 [ 2.684936] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 2.689980] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 [ 2.695284] [0000000000000010] user address but active_mm is swapper [ 2.701632] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP [ 2.707883] Modules linked in: [ 2.710936] CPU: 1 UID: 0 PID: 87 Comm: irq/111-2-0051 Not tainted 6.12.0-rc6-06316-g7f63786ad3d1-dirty #4 [ 2.720570] Hardware name: NXP i.MX93 11X11 EVK board (DT) [ 2.726040] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 2.732989] pc : tcpci_irq+0x38/0x318 [ 2.736647] lr : _tcpci_irq+0x14/0x20 [ 2.740295] sp : ffff80008324bd30 [ 2.743597] x29: ffff80008324bd70 x28: ffff800080107894 x27: ffff800082198f70 [ 2.750721] x26: ffff0000050e6680 x25: ffff000004d172ac x24: ffff0000050f0000 [ 2.757845] x23: ffff000004d17200 x22: 0000000000000001 x21: ffff0000050f0000 [ 2.764969] x20: ffff000004d17200 x19: 0000000000000000 x18: 0000000000000001 [ 2.772093] x17: 0000000000000000 x16: ffff80008183d8a0 x15: ffff00007fbab040 [ 2.779217] x14: ffff00007fb918c0 x13: 0000000000000000 x12: 000000000000017a [ 2.786341] x11: 0000000000000001 x10: 0000000000000a90 x9 : ffff80008324bd00 [ 2.793465] x8 : ffff0000050f0af0 x7 : ffff00007fbaa840 x6 : 0000000000000031 [ 2.800589] x5 : 000000000000017a x4 : 0000000000000002 x3 : 0000000000000002 [ 2.807713] x2 : ffff80008324bd3a x1 : 0000000000000010 x0 : 0000000000000000 [ 2.814838] Call trace: [ 2.817273] tcpci_irq+0x38/0x318 [ 2.820583] _tcpci_irq+0x14/0x20 [ 2.823885] irq_thread_fn+0x2c/0xa8 [ 2.827456] irq_thread+0x16c/0x2f4 [ 2.830940] kthread+0x110/0x114 [ 2.834164] ret_from_fork+0x10/0x20 [ 2.837738] Code: f9426420 f9001fe0 d2800000 52800201 (f9400a60)
This may happen on shared irq case. Such as two Type-C ports share one irq. After the first port finished tcpci_register_port(), it may trigger interrupt. However, if the interrupt comes by chance the 2nd port finishes devm_request_threaded_irq(), the 2nd port interrupt handler will run at first. Then the above issue happens due to tcpci is still a NULL pointer in tcpci_irq() when dereference to regmap.
devm_request_threaded_irq()
<-- port1 irq comes
disable_irq(client->irq); tcpci_register_port()
This will restore the logic to the state before commit (77e85107a771 "usb:
typec: tcpci: support edge irq").
However, moving tcpci_register_port() earlier creates a problem when use edge irq because tcpci_init() will be called before devm_request_threaded_irq(). The tcpci_init() writes the ALERT_MASK to the hardware to tell it to start generating interrupts but we're not ready to deal with them yet, then the ALERT events may be missed and ALERT line will not recover to high level forever. To avoid the issue, this will also set ALERT_MASK register after devm_request_threaded_irq() return.
--- drivers/usb/typec/tcpm/tcpci.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)
drivers/usb/typec/tcpm/tcpci.c +15 -10
@@ -700,7 +700,7 @@ static int tcpci_init(struct tcpc_dev *tcpc) tcpci->alert_mask = reg; -return tcpci_write16 (tcpci,TCPC_ALERT_MASK , reg); +return 0 ; }irqreturn_t tcpci_irq (struct tcpci *tcpci)
@@ -923,22 +923,27 @@ static int tcpci_probe(struct i2c_client *client) chip->data.set_orientation = err; + chip->tcpci =tcpci_register_port (&client->dev, &chip->data); +if (IS_ERR (chip->tcpci)) +return PTR_ERR (chip->tcpci); + err =devm_request_threaded_irq (&client->dev, client->irq,NULL , _tcpci_irq,IRQF_SHARED |IRQF_ONESHOT ,dev_name (&client->dev), chip);if (err <0 ) -return err; + goto unregister_port; -/* -* Disable irq while registering port. If irq is configured as an edge -* irq this allow to keep track and process the irq as soon as it is enabled. -*/ -disable_irq (client->irq); - chip->tcpci =tcpci_register_port (&client->dev, &chip->data); -enable_irq (client->irq); +/* Enable chip interrupts at last */ + err =tcpci_write16 (chip->tcpci,TCPC_ALERT_MASK , chip->tcpci->alert_mask); +if (err <0 ) + goto unregister_port; -return PTR_ERR_OR_ZERO (chip->tcpci); +return 0 ; + +unregister_port: +tcpci_unregister_port (chip->tcpci); +return err; }static void tcpci_remove (struct i2c_client *client)
Signature · 1 line
2.48.0
Greg Kroah-Hartman
maintainerPATCH 151/189 usb: gadget: f_uac2: Fix incorrect setting of bNumEndpoints
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Prashanth K <[email protected]>
commit 057bd54dfcf68b1f67e6dfc32a47a72e12198495 upstream.
Currently afunc_bind sets std_ac_if_desc.bNumEndpoints to 1 if controls (mute/volume) are enabled. During next afunc_bind call, bNumEndpoints would be unchanged and incorrectly set to 1 even if the controls aren't enabled.
Fix this by resetting the value of bNumEndpoints to 0 on every afunc_bind call.
--- drivers/usb/gadget/function/f_uac2.c | 1 + 1 file changed, 1 insertion(+)
drivers/usb/gadget/function/f_uac2.c +1 -0
@@ -1185,6 +1185,7 @@ afunc_bind(struct usb_configuration *cfg uac2->as_in_alt =0 ; } + std_ac_if_desc.bNumEndpoints =0 ;if (FUOUT_EN (uac2_opts) ||FUIN_EN (uac2_opts)) { uac2->int_ep =usb_ep_autoconfig (gadget, &fs_ep_int_desc);if (!uac2->int_ep) {
Greg Kroah-Hartman
maintainerPATCH 152/189 usb: typec: tcpm/tcpci_maxim: fix error code in max_contaminant_read_resistance_kohm()
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <[email protected]>
commit b9711ff7cde0cfbcdd44cb1fac55b6eec496e690 upstream.
If max_contaminant_read_adc_mv() fails, then return the error code. Don't return zero.
--- drivers/usb/typec/tcpm/maxim_contaminant.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/usb/typec/tcpm/maxim_contaminant.c +2 -2
@@ -135,7 +135,7 @@ static int max_contaminant_read_resistan mv =max_contaminant_read_adc_mv (chip, channel, sleep_msec, raw, true);if (mv <0 ) -return ret; +return mv;/* OVP enable */ ret =regmap_update_bits (regmap,TCPC_VENDOR_CC_CTRL2 ,CCOVPDIS ,0 );
@@ -157,7 +157,7 @@ static int max_contaminant_read_resistan mv =max_contaminant_read_adc_mv (chip, channel, sleep_msec, raw, true);if (mv <0 ) -return ret; +return mv;/* Disable current source */ ret =regmap_update_bits (regmap,TCPC_VENDOR_CC_CTRL2 ,SBURPCTRL ,0 );if (ret <0 )
Greg Kroah-Hartman
maintainerPATCH 153/189 usb: gadget: f_fs: Remove WARN_ON in functionfs_bind
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Akash M <[email protected]>
commit dfc51e48bca475bbee984e90f33fdc537ce09699 upstream.
This commit addresses an issue related to below kernel panic where panic_on_warn is enabled. It is caused by the unnecessary use of WARN_ON in functionsfs_bind, which easily leads to the following scenarios.
1.adb_write in adbd 2. UDC write via configfs
================= =====================
->usb_ffs_open_thread() ->UDC write
->open_functionfs() ->configfs_write_iter()
->adb_open() ->gadget_dev_desc_UDC_store()
->adb_write() ->usb_gadget_register_driver_owner
->driver_register()
->StartMonitor() ->bus_add_driver()
->adb_read() ->gadget_bind_driver()
<times-out without BIND event> ->configfs_composite_bind()
->usb_add_function()
->open_functionfs() ->ffs_func_bind()
->adb_open() ->functionfs_bind()
<ffs->state !=FFS_ACTIVE>The adb_open, adb_read, and adb_write operations are invoked from the daemon, but trying to bind the function is a process that is invoked by UDC write through configfs, which opens up the possibility of a race condition between the two paths. In this race scenario, the kernel panic occurs due to the WARN_ON from functionfs_bind when panic_on_warn is enabled. This commit fixes the kernel panic by removing the unnecessary WARN_ON.
Kernel panic - not syncing: kernel: panic_on_warn set ... [ 14.542395] Call trace: [ 14.542464] ffs_func_bind+0x1c8/0x14a8 [ 14.542468] usb_add_function+0xcc/0x1f0 [ 14.542473] configfs_composite_bind+0x468/0x588 [ 14.542478] gadget_bind_driver+0x108/0x27c [ 14.542483] really_probe+0x190/0x374 [ 14.542488] __driver_probe_device+0xa0/0x12c [ 14.542492] driver_probe_device+0x3c/0x220 [ 14.542498] __driver_attach+0x11c/0x1fc [ 14.542502] bus_for_each_dev+0x104/0x160 [ 14.542506] driver_attach+0x24/0x34 [ 14.542510] bus_add_driver+0x154/0x270 [ 14.542514] driver_register+0x68/0x104 [ 14.542518] usb_gadget_register_driver_owner+0x48/0xf4 [ 14.542523] gadget_dev_desc_UDC_store+0xf8/0x144 [ 14.542526] configfs_write_iter+0xf0/0x138
--- drivers/usb/gadget/function/f_fs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/usb/gadget/function/f_fs.c +1 -1
@@ -2285,7 +2285,7 @@ static int functionfs_bind(struct ffs_dastruct usb_gadget_strings **lang;int first_id; -if (WARN_ON (ffs->state !=FFS_ACTIVE +if ((ffs->state !=FFS_ACTIVE ||test_and_set_bit (FFS_FL_BOUND , &ffs->flags)))return -EBADFD ;
Greg Kroah-Hartman
maintainerPATCH 154/189 usb: gadget: configfs: Ignore trailing LF for user strings to cdev
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ingo Rohloff <[email protected]>
commit 9466545720e231fc02acd69b5f4e9138e09a26f6 upstream.
Since commit c033563220e0f7a8
("usb: gadget: configfs: Attach arbitrary strings to cdev")
a user can provide extra string descriptors to a USB gadget via configfs.
For "manufacturer", "product", "serialnumber", setting the string via configfs ignores a trailing LF.
For the arbitrary strings the LF was not ignored.
This patch ignores a trailing LF to make this consistent with the existing behavior for "manufacturer", ... string descriptors.
--- drivers/usb/gadget/configfs.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/usb/gadget/configfs.c +5 -1
@@ -827,11 +827,15 @@ static ssize_t gadget_string_s_store(struct config_item *item, const char *page, {struct gadget_string *string =to_gadget_string (item);int size =min (sizeof (string->string), len +1 ); +ssize_t cpy_len;if (len >USB_MAX_STRING_LEN )return -EINVAL ; -return strscpy (string->string, page, size); + cpy_len =strscpy (string->string, page, size); +if (cpy_len >0 && string->string[cpy_len -1 ] =='\n' ) + string->string[cpy_len -1 ] =0 ; +return len; }CONFIGFS_ATTR (gadget_string_, s);
Signature · 1 line
2.48.0
Greg Kroah-Hartman
maintainerPATCH 155/189 usb: host: xhci-plat: set skip_phy_initialization if software node has XHCI_SKIP_PHY_INIT property
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xu Yang <[email protected]>
commit e19852d0bfecbc80976b1423cf2af87ca514a58c upstream.
The source of quirk XHCI_SKIP_PHY_INIT comes from xhci_plat_priv.quirks or software node property. This will set skip_phy_initialization if software node also has XHCI_SKIP_PHY_INIT property.
--- drivers/usb/host/xhci-plat.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/usb/host/xhci-plat.c +2 -1
@@ -290,7 +290,8 @@ int xhci_plat_probe(struct platform_device *pdev, struct device *sysdev, const s hcd->tpl_support =of_usb_host_tpl_support (sysdev->of_node); -if (priv && (priv->quirks &XHCI_SKIP_PHY_INIT )) +if ((priv && (priv->quirks &XHCI_SKIP_PHY_INIT )) || + (xhci->quirks &XHCI_SKIP_PHY_INIT )) hcd->skip_phy_initialization =1 ;if (priv && (priv->quirks &XHCI_SG_TRB_CACHE_SIZE_QUIRK ))
Signature · 1 line
2.48.0
Greg Kroah-Hartman
maintainerPATCH 156/189 usb: typec: fix pm usage counter imbalance in ucsi_ccg_sync_control()
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: GONG Ruiqi <[email protected]>
commit b0e525d7a22ea350e75e2aec22e47fcfafa4cacd upstream.
The error handling for the case con_index == 0 should involve dropping the pm usage counter, as ucsi_ccg_sync_control() gets it at the beginning. Fix it.
--- drivers/usb/typec/ucsi/ucsi_ccg.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/usb/typec/ucsi/ucsi_ccg.c +2 -2
@@ -646,7 +646,7 @@ static int ucsi_ccg_sync_control(structUCSI_CMD_CONNECTOR_MASK ;if (con_index ==0 ) { ret = -EINVAL ; - goto unlock; + goto err_put; } con = &uc->ucsi->connector[con_index -1 ];ucsi_ccg_update_set_new_cam_cmd (uc, con, &command);
@@ -654,8 +654,8 @@ static int ucsi_ccg_sync_control(struct ret =ucsi_sync_control_common (ucsi, command); +err_put:pm_runtime_put_sync (uc->dev); -unlock:mutex_unlock (&uc->lock);return ret;
Greg Kroah-Hartman
maintainerPATCH 157/189 iio: pressure: zpa2326: fix information leak in triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit 6007d10c5262f6f71479627c1216899ea7f09073 upstream.
The 'sample' local struct is used to push data to user space from a triggered buffer, but it has a hole between the temperature and the timestamp (u32 pressure, u16 temperature, GAP, u64 timestamp). This hole is never initialized.
Initialize the struct to zero before using it to avoid pushing uninitialized information to userspace.
--- drivers/iio/pressure/zpa2326.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/iio/pressure/zpa2326.c +2 -0
@@ -586,6 +586,8 @@ static int zpa2326_fill_sample_buffer(st } sample;int err; +memset (&sample,0 ,sizeof (sample)); +if (test_bit (0 , indio_dev->active_scan_mask)) {/* Get current pressure from hardware FIFO. */ err =zpa2326_dequeue_pressure (indio_dev, &sample.pressure);
Greg Kroah-Hartman
maintainerPATCH 158/189 iio: dummy: iio_simply_dummy_buffer: fix information leak in triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit 333be433ee908a53f283beb95585dfc14c8ffb46 upstream.
The 'data' array is allocated via kmalloc() and it is used to push data to user space from a triggered buffer, but it does not set values for inactive channels, as it only uses iio_for_each_active_channel() to assign new values.
Use kzalloc for the memory allocation to avoid pushing uninitialized information to userspace.
--- drivers/iio/dummy/iio_simple_dummy_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/dummy/iio_simple_dummy_buffer.c +1 -1
@@ -48,7 +48,7 @@ static irqreturn_t iio_simple_dummy_trigint i =0 , j;u16 *data; - data =kmalloc (indio_dev->scan_bytes,GFP_KERNEL ); + data =kzalloc (indio_dev->scan_bytes,GFP_KERNEL );if (!data) goto done;
Greg Kroah-Hartman
maintainerPATCH 159/189 iio: light: vcnl4035: fix information leak in triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit 47b43e53c0a0edf5578d5d12f5fc71c019649279 upstream.
The 'buffer' local array is used to push data to userspace from a triggered buffer, but it does not set an initial value for the single data element, which is an u16 aligned to 8 bytes. That leaves at least 4 bytes uninitialized even after writing an integer value with regmap_read().
Initialize the array to zero before using it to avoid pushing uninitialized information to userspace.
--- drivers/iio/light/vcnl4035.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/light/vcnl4035.c +1 -1
@@ -105,7 +105,7 @@ static irqreturn_t vcnl4035_trigger_consstruct iio_dev *indio_dev = pf->indio_dev;struct vcnl4035_data *data =iio_priv (indio_dev);/* Ensure naturally aligned timestamp */ -u8 buffer[ALIGN (sizeof (u16),sizeof (s64)) +sizeof (s64)]__aligned(8) ; +u8 buffer[ALIGN (sizeof (u16),sizeof (s64)) +sizeof (s64)]__aligned(8) = { };int ret; ret =regmap_read (data->regmap,VCNL4035_ALS_DATA , (int *)buffer);
Greg Kroah-Hartman
maintainerPATCH 160/189 iio: light: bh1745: fix information leak in triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit b62fbe3b8eedd3cf3c9ad0b7cb9f72c3f40815f0 upstream.
The 'scan' local struct is used to push data to user space from a triggered buffer, but it does not set values for inactive channels, as it only uses iio_for_each_active_channel() to assign new values.
Initialize the struct to zero before using it to avoid pushing uninitialized information to userspace.
--- drivers/iio/light/bh1745.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/iio/light/bh1745.c +2 -0
@@ -750,6 +750,8 @@ static irqreturn_t bh1745_trigger_handleint i;int j =0 ; +memset (&scan,0 ,sizeof (scan)); +iio_for_each_active_channel (indio_dev, i) { ret =regmap_bulk_read (data->regmap,BH1745_RED_LSB +2 * i, &value,2 );
Greg Kroah-Hartman
maintainerPATCH 161/189 iio: imu: kmx61: fix information leak in triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit 6ae053113f6a226a2303caa4936a4c37f3bfff7b upstream.
The 'buffer' local array is used to push data to user space from a triggered buffer, but it does not set values for inactive channels, as it only uses iio_for_each_active_channel() to assign new values.
Initialize the array to zero before using it to avoid pushing uninitialized information to userspace.
--- drivers/iio/imu/kmx61.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/imu/kmx61.c +1 -1
@@ -1192,7 +1192,7 @@ static irqreturn_t kmx61_trigger_handlerstruct kmx61_data *data =kmx61_get_data (indio_dev);int bit, ret, i =0 ;u8 base; -s16 buffer[8 ]; +s16 buffer[8 ] = { };if (indio_dev == data->acc_indio_dev) base =KMX61_ACC_XOUT_L ;
Greg Kroah-Hartman
maintainerPATCH 162/189 iio: adc: rockchip_saradc: fix information leak in triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit 38724591364e1e3b278b4053f102b49ea06ee17c upstream.
The 'data' local struct is used to push data to user space from a triggered buffer, but it does not set values for inactive channels, as it only uses iio_for_each_active_channel() to assign new values.
Initialize the struct to zero before using it to avoid pushing uninitialized information to userspace.
--- drivers/iio/adc/rockchip_saradc.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/iio/adc/rockchip_saradc.c +2 -0
@@ -368,6 +368,8 @@ static irqreturn_t rockchip_saradc_triggint ret;int i, j =0 ; +memset (&data,0 ,sizeof (data)); +mutex_lock (&info->lock);iio_for_each_active_channel (i_dev, i) {
Greg Kroah-Hartman
maintainerPATCH 163/189 iio: adc: ti-ads8688: fix information leak in triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit 2a7377ccfd940cd6e9201756aff1e7852c266e69 upstream.
The 'buffer' local array is used to push data to user space from a triggered buffer, but it does not set values for inactive channels, as it only uses iio_for_each_active_channel() to assign new values.
Initialize the array to zero before using it to avoid pushing uninitialized information to userspace.
--- drivers/iio/adc/ti-ads8688.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/adc/ti-ads8688.c +1 -1
@@ -381,7 +381,7 @@ static irqreturn_t ads8688_trigger_handlstruct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;/* Ensure naturally aligned timestamp */ -u16 buffer[ADS8688_MAX_CHANNELS +sizeof (s64)/sizeof (u16)]__aligned(8) ; +u16 buffer[ADS8688_MAX_CHANNELS +sizeof (s64)/sizeof (u16)]__aligned(8) = { };int i, j =0 ;iio_for_each_active_channel (indio_dev, i) {
Greg Kroah-Hartman
maintainerPATCH 164/189 iio: adc: ti-ads1119: fix information leak in triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit 75f339d3ecd38cb1ce05357d647189d4a7f7ed08 upstream.
The 'scan' local struct is used to push data to user space from a triggered buffer, but it has a hole between the sample (unsigned int) and the timestamp. This hole is never initialized.
Initialize the struct to zero before using it to avoid pushing uninitialized information to userspace.
--- drivers/iio/adc/ti-ads1119.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/iio/adc/ti-ads1119.c +2 -0
@@ -506,6 +506,8 @@ static irqreturn_t ads1119_trigger_handler(int irq, void *private)unsigned int index;int ret; +memset (&scan,0 ,sizeof (scan)); +if (!iio_trigger_using_own (indio_dev)) { index =find_first_bit (indio_dev->active_scan_mask,iio_get_masklength (indio_dev));
Signature · 1 line
2.48.0
Greg Kroah-Hartman
maintainerPATCH 165/189 iio: adc: ti-ads1119: fix sample size in scan struct for triggered buffer
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Javier Carrasco <[email protected]>
commit 54d394905c92b9ecc65c1f9b2692c8e10716d8e1 upstream.
This device returns signed, 16-bit samples as stated in its datasheet (see 8.5.2 Data Format). That is in line with the scan_type definition for the IIO_VOLTAGE channel, but 'unsigned int' is being used to read and push the data to userspace.
Given that the size of that type depends on the architecture (at least 2 bytes to store values up to 65535, but its actual size is often 4 bytes), use the 's16' type to provide the same structure in all cases.
--- drivers/iio/adc/ti-ads1119.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/adc/ti-ads1119.c +1 -1
@@ -500,7 +500,7 @@ static irqreturn_t ads1119_trigger_handler(int irq, void *private)struct iio_dev *indio_dev = pf->indio_dev;struct ads1119_state *st =iio_priv (indio_dev);struct { -unsigned int sample; +s16 sample;s64 timestamp__aligned(8) ; } scan;unsigned int index;
Signature · 1 line
2.48.0
Greg Kroah-Hartman
maintainerPATCH 166/189 iio: gyro: fxas21002c: Fix missing data update in trigger handler
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Carlos Song <[email protected]>
commit fa13ac6cdf9b6c358e7d77c29fb60145c7a87965 upstream.
The fxas21002c_trigger_handler() may fail to acquire sample data because the runtime PM enters the autosuspend state and sensor can not return sample data in standby mode..
Resume the sensor before reading the sample data into the buffer within the trigger handler. After the data is read, place the sensor back into the autosuspend state.
--- drivers/iio/gyro/fxas21002c_core.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/iio/gyro/fxas21002c_core.c +8 -1
@@ -730,14 +730,21 @@ static irqreturn_t fxas21002c_trigger_haint ret;mutex_lock (&data->lock); + ret =fxas21002c_pm_get (data); +if (ret <0 ) + goto out_unlock; + ret =regmap_bulk_read (data->regmap,FXAS21002C_REG_OUT_X_MSB , data->buffer,CHANNEL_SCAN_MAX *sizeof (s16));if (ret <0 ) - goto out_unlock; + goto out_pm_put;iio_push_to_buffers_with_timestamp (indio_dev, data->buffer, data->timestamp); +out_pm_put: +fxas21002c_pm_put (data); + out_unlock:mutex_unlock (&data->lock);
Greg Kroah-Hartman
maintainerPATCH 167/189 iio: adc: ti-ads1298: Add NULL check in ads1298_init
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Charles Han <[email protected]>
commit bcb394bb28e55312cace75362b8e489eb0e02a30 upstream.
devm_kasprintf() can return a NULL pointer on failure. A check on the return value of such a call in ads1298_init() is missing. Add it.
--- drivers/iio/adc/ti-ads1298.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/iio/adc/ti-ads1298.c +2 -0
@@ -613,6 +613,8 @@ static int ads1298_init(struct iio_dev * } indio_dev->name =devm_kasprintf (dev,GFP_KERNEL ,"ads129%u%s" , indio_dev->num_channels, suffix); +if (!indio_dev->name) +return -ENOMEM ;/* Enable internal test signal, double amplitude, double frequency */ ret = regmap_write(priv->regmap, ADS1298_REG_CONFIG2,
Greg Kroah-Hartman
maintainerPATCH 168/189 iio: imu: inv_icm42600: fix timestamps after suspend if sensor is on
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jean-Baptiste Maneyrol <[email protected]>
commit 65a60a590142c54a3f3be11ff162db2d5b0e1e06 upstream.
Currently suspending while sensors are one will result in timestamping continuing without gap at resume. It can work with monotonic clock but not with other clocks. Fix that by resetting timestamping.
--- drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +6 -1
@@ -822,6 +822,8 @@ out_unlock:static int inv_icm42600_resume (struct device *dev) {struct inv_icm42600_state *st =dev_get_drvdata (dev); +struct inv_icm42600_sensor_state *gyro_st =iio_priv (st->indio_gyro); +struct inv_icm42600_sensor_state *accel_st =iio_priv (st->indio_accel);int ret;mutex_lock (&st->lock);
@@ -842,9 +844,12 @@ static int inv_icm42600_resume(struct de goto out_unlock;/* restore FIFO data streaming */ -if (st->fifo.on) +if (st->fifo.on) { +inv_sensors_timestamp_reset (&gyro_st->ts); +inv_sensors_timestamp_reset (&accel_st->ts); ret =regmap_write (st->map,INV_ICM42600_REG_FIFO_CONFIG ,INV_ICM42600_FIFO_CONFIG_STREAM ); + } out_unlock:mutex_unlock (&st->lock);
Greg Kroah-Hartman
maintainerPATCH 169/189 iio: adc: ti-ads124s08: Use gpiod_set_value_cansleep()
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fabio Estevam <[email protected]>
commit 2a8e34096ec70d73ebb6d9920688ea312700cbd9 upstream.
Using gpiod_set_value() to control the reset GPIO causes some verbose warnings during boot when the reset GPIO is controlled by an I2C IO expander.
As the caller can sleep, use the gpiod_set_value_cansleep() variant to fix the issue.
Tested on a custom i.MX93 board with a ADS124S08 ADC.
--- drivers/iio/adc/ti-ads124s08.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/iio/adc/ti-ads124s08.c +2 -2
@@ -183,9 +183,9 @@ static int ads124s_reset(struct iio_devstruct ads124s_private *priv =iio_priv (indio_dev);if (priv->reset_gpio) { -gpiod_set_value (priv->reset_gpio,0 ); +gpiod_set_value_cansleep (priv->reset_gpio,0 );udelay (200 ); -gpiod_set_value (priv->reset_gpio,1 ); +gpiod_set_value_cansleep (priv->reset_gpio,1 ); }else {return ads124s_write_cmd (indio_dev,ADS124S08_CMD_RESET ); }
Greg Kroah-Hartman
maintainerPATCH 170/189 iio: adc: at91: call input_free_device() on allocated iio_dev
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joe Hattori <[email protected]>
commit de6a73bad1743e9e81ea5a24c178c67429ff510b upstream.
Current implementation of at91_ts_register() calls input_free_deivce() on st->ts_input, however, the err label can be reached before the allocated iio_dev is stored to st->ts_input. Thus call input_free_device() on input instead of st->ts_input.
--- drivers/iio/adc/at91_adc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/adc/at91_adc.c +1 -1
@@ -979,7 +979,7 @@ static int at91_ts_register(struct iio_dreturn ret; err: -input_free_device (st->ts_input); +input_free_device (input);return ret; }
Greg Kroah-Hartman
maintainerPATCH 171/189 iio: inkern: call iio_device_put() only on mapped devices
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joe Hattori <[email protected]>
commit 64f43895b4457532a3cc524ab250b7a30739a1b1 upstream.
In the error path of iio_channel_get_all(), iio_device_put() is called on all IIO devices, which can cause a refcount imbalance. Fix this error by calling iio_device_put() only on IIO devices whose refcounts were previously incremented by iio_device_get().
--- drivers/iio/inkern.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/inkern.c +1 -1
@@ -499,7 +499,7 @@ struct iio_channel *iio_channel_get_all(return_ptr (chans); error_free_chans: -for (i =0 ; i < nummaps; i++) +for (i =0 ; i < mapind; i++)iio_device_put (chans[i].indio_dev);return ERR_PTR (ret); }
Greg Kroah-Hartman
maintainerPATCH 172/189 iio: adc: ad7173: fix using shared static info struct
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Lechner <[email protected]>
commit 36a44e05cd807a54e5ffad4b96d0d67f68ad8576 upstream.
Fix a possible race condition during driver probe in the ad7173 driver due to using a shared static info struct. If more that one instance of the driver is probed at the same time, some of the info could be overwritten by the other instance, leading to incorrect operation.
To fix this, make the static info struct const so that it is read-only and make a copy of the info struct for each instance of the driver that can be modified.
--- drivers/iio/adc/ad7173.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
drivers/iio/adc/ad7173.c +6 -4
@@ -198,6 +198,7 @@ struct ad7173_channel {struct ad7173_state {struct ad_sigma_delta sd; +struct ad_sigma_delta_info sigma_delta_info;const struct ad7173_device_info *info;struct ad7173_channel *channels;struct regulator_bulk_data regulators[3 ];
@@ -733,7 +734,7 @@ static int ad7173_disable_one(struct ad_return ad_sd_write_reg (sd,AD7173_REG_CH (chan),2 ,0 ); } -static struct ad_sigma_delta_info ad7173_sigma_delta_info = { +static const struct ad_sigma_delta_info ad7173_sigma_delta_info = { .set_channel = ad7173_set_channel, .append_status = ad7173_append_status, .disable_all = ad7173_disable_all,
@@ -1371,7 +1372,7 @@ static int ad7173_fw_parse_device_configif (ret <0 )return dev_err_probe (dev, ret,"Interrupt 'rdy' is required\n" ); - ad7173_sigma_delta_info.irq_line = ret; + st->sigma_delta_info.irq_line = ret;return ad7173_fw_parse_channel_config (indio_dev); }
@@ -1404,8 +1405,9 @@ static int ad7173_probe(struct spi_devic spi->mode =SPI_MODE_3 ;spi_setup (spi); - ad7173_sigma_delta_info.num_slots = st->info->num_configs; - ret =ad_sd_init (&st->sd, indio_dev, spi, &ad7173_sigma_delta_info); + st->sigma_delta_info = ad7173_sigma_delta_info; + st->sigma_delta_info.num_slots = st->info->num_configs; + ret =ad_sd_init (&st->sd, indio_dev, spi, &st->sigma_delta_info);if (ret)return ret;
Greg Kroah-Hartman
maintainerPATCH 173/189 iio: adc: ad7124: Disable all channels at probe time
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Uwe Kleine-König <[email protected]>
commit 4be339af334c283a1a1af3cb28e7e448a0aa8a7c upstream.
When during a measurement two channels are enabled, two measurements are done that are reported sequencially in the DATA register. As the code triggered by reading one of the sysfs properties expects that only one channel is enabled it only reads the first data set which might or might not belong to the intended channel.
To prevent this situation disable all channels during probe. This fixes a problem in practise because the reset default for channel 0 is enabled. So all measurements before the first measurement on channel 0 (which disables channel 0 at the end) might report wrong values.
--- drivers/iio/adc/ad7124.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/iio/adc/ad7124.c +3 -0
@@ -917,6 +917,9 @@ static int ad7124_setup(struct ad7124_st* set all channels to this default value. */ ad7124_set_channel_odr (st, i,10 ); + +/* Disable all channels to prevent unintended conversions. */ +ad_sd_write_reg (&st->sd,AD7124_CHANNEL (i),2 ,0 ); } ret =ad_sd_write_reg (&st->sd,AD7124_ADC_CONTROL ,2 , st->adc_control);
Greg Kroah-Hartman
maintainerPATCH 174/189 io_uring/eventfd: ensure io_eventfd_signal() defers another RCU period
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jens Axboe <[email protected]>
Commit c9a40292a44e78f71258b8522655bffaf5753bdb upstream.
io_eventfd_do_signal() is invoked from an RCU callback, but when dropping the reference to the io_ev_fd, it calls io_eventfd_free() directly if the refcount drops to zero. This isn't correct, as any potential freeing of the io_ev_fd should be deferred another RCU grace period.
Just call io_eventfd_put() rather than open-code the dec-and-test and free, which will correctly defer it another RCU grace period.
--- io_uring/eventfd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
io_uring/eventfd.c +1 -1
@@ -38,7 +38,7 @@ static void io_eventfd_do_signal(structeventfd_signal_mask (ev_fd->cq_ev_fd,EPOLL_URING_WAKE );if (refcount_dec_and_test (&ev_fd->refs)) -io_eventfd_free (rcu); +call_rcu (&ev_fd->rcu, io_eventfd_free); }void io_eventfd_signal (struct io_ring_ctx *ctx)
Greg Kroah-Hartman
maintainerPATCH 175/189 arm64: dts: imx95: correct the address length of netcmix_blk_ctrl
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wei Fang <[email protected]>
[ Upstream commit c5b8d2c370842e3f9a15655893d8c597e2d981d9 ]
The netc_blk_ctrl is controlled by the imx95-blk-ctl clock driver and provides relevant clock configurations for NETC, SAI and MQS. Its address length should be 8 bytes instead of 0x1000.
--- arch/arm64/boot/dts/freescale/imx95.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/freescale/imx95.dtsi +1 -1
@@ -1609,7 +1609,7 @@ netcmix_blk_ctrl: syscon@4c810000 { compatible = "nxp,imx95-netcmix-blk-ctrl", "syscon"; - reg = <0x0 0x4c810000 0x0 0x10000>; + reg = <0x0 0x4c810000 0x0 0x8>; #clock-cells = <1>; clocks = <&scmi_clk IMX95_CLK_BUSNETCMIX>; assigned-clocks = <&scmi_clk IMX95_CLK_BUSNETCMIX>;
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 176/189 ARM: dts: imxrt1050: Fix clocks for mmc
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jesse Taube <[email protected]>
[ Upstream commit 5f122030061db3e5d2bddd9cf5c583deaa6c54ff ]
One of the usdhc1 controller's clocks should be IMXRT1050_CLK_AHB_PODF not IMXRT1050_CLK_OSC.
--- arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi +1 -1
@@ -87,7 +87,7 @@ reg = <0x402c0000 0x4000>; interrupts = <110>; clocks = <&clks IMXRT1050_CLK_IPG_PDOF>, - <&clks IMXRT1050_CLK_OSC>, + <&clks IMXRT1050_CLK_AHB_PODF>, <&clks IMXRT1050_CLK_USDHC1>; clock-names = "ipg", "ahb", "per"; bus-width = <4>;
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 177/189 arm64: dts: qcom: sa8775p: fix the secure device bootup issue
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jie Gan <[email protected]>
[ Upstream commit 8a6442ec3437083348f32a6159b9a67bf66417bc ]
The secure device(fused) cannot bootup with TPDM_DCC device. So disable it in DT.
--- arch/arm64/boot/dts/qcom/sa8775p.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm64/boot/dts/qcom/sa8775p.dtsi +1 -0
@@ -1940,6 +1940,7 @@ qcom,cmb-element-bits = <32>; qcom,cmb-msrs-num = <32>; + status = "disabled"; out-ports { port {
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 178/189 hwmon: (drivetemp) Fix driver producing garbage data when SCSI errors occur
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniil Stas <[email protected]>
[ Upstream commit 82163d63ae7a4c36142cd252388737205bb7e4b9 ]
scsi_execute_cmd() function can return both negative (linux codes) and positive (scsi_cmnd result field) error codes.
Currently the driver just passes error codes of scsi_execute_cmd() to hwmon core, which is incorrect because hwmon only checks for negative error codes. This leads to hwmon reporting uninitialized data to userspace in case of SCSI errors (for example if the disk drive was disconnected).
This patch checks scsi_execute_cmd() output and returns -EIO if it's error code is positive.
--- drivers/hwmon/drivetemp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/hwmon/drivetemp.c +6 -2
@@ -165,6 +165,7 @@ static int drivetemp_scsi_command(struct drivetemp_data *st, {u8 scsi_cmd[MAX_COMMAND_SIZE ];enum req_op op; +int err;memset (scsi_cmd,0 ,sizeof (scsi_cmd)); scsi_cmd[0 ] =ATA_16 ;
@@ -192,8 +193,11 @@ static int drivetemp_scsi_command(struct drivetemp_data *st, scsi_cmd[12 ] = lba_high; scsi_cmd[14 ] = ata_command; -return scsi_execute_cmd (st->sdev, scsi_cmd, op, st->smartdata, -ATA_SECT_SIZE ,HZ ,5 ,NULL ); + err =scsi_execute_cmd (st->sdev, scsi_cmd, op, st->smartdata, +ATA_SECT_SIZE ,HZ ,5 ,NULL ); +if (err >0 ) + err = -EIO ; +return err; } static int drivetemp_ata_command(struct drivetemp_data *st, u8 feature,
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 179/189 block, bfq: fix waker_bfqq UAF after bfq_split_bfqq()
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yu Kuai <[email protected]>
[ Upstream commit fcede1f0a043ccefe9bc6ad57f12718e42f63f1d ]
Our syzkaller report a following UAF for v6.6:
BUG: KASAN: slab-use-after-free in bfq_init_rq+0x175d/0x17a0 block/bfq-iosched.c:6958 Read of size 8 at addr ffff8881b57147d8 by task fsstress/232726 CPU: 2 PID: 232726 Comm: fsstress Not tainted 6.6.0-g3629d1885222 #39 Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x91/0xf0 lib/dump_stack.c:106 print_address_description.constprop.0+0x66/0x300 mm/kasan/report.c:364 print_report+0x3e/0x70 mm/kasan/report.c:475 kasan_report+0xb8/0xf0 mm/kasan/report.c:588 hlist_add_head include/linux/list.h:1023 [inline] bfq_init_rq+0x175d/0x17a0 block/bfq-iosched.c:6958 bfq_insert_request.isra.0+0xe8/0xa20 block/bfq-iosched.c:6271 bfq_insert_requests+0x27f/0x390 block/bfq-iosched.c:6323 blk_mq_insert_request+0x290/0x8f0 block/blk-mq.c:2660 blk_mq_submit_bio+0x1021/0x15e0 block/blk-mq.c:3143 __submit_bio+0xa0/0x6b0 block/blk-core.c:639 __submit_bio_noacct_mq block/blk-core.c:718 [inline] submit_bio_noacct_nocheck+0x5b7/0x810 block/blk-core.c:747 submit_bio_noacct+0xca0/0x1990 block/blk-core.c:847 __ext4_read_bh fs/ext4/super.c:205 [inline] ext4_read_bh+0x15e/0x2e0 fs/ext4/super.c:230 __read_extent_tree_block+0x304/0x6f0 fs/ext4/extents.c:567 ext4_find_extent+0x479/0xd20 fs/ext4/extents.c:947 ext4_ext_map_blocks+0x1a3/0x2680 fs/ext4/extents.c:4182 ext4_map_blocks+0x929/0x15a0 fs/ext4/inode.c:660 ext4_iomap_begin_report+0x298/0x480 fs/ext4/inode.c:3569 iomap_iter+0x3dd/0x1010 fs/iomap/iter.c:91 iomap_fiemap+0x1f4/0x360 fs/iomap/fiemap.c:80 ext4_fiemap+0x181/0x210 fs/ext4/extents.c:5051 ioctl_fiemap.isra.0+0x1b4/0x290 fs/ioctl.c:220 do_vfs_ioctl+0x31c/0x11a0 fs/ioctl.c:811 __do_sys_ioctl fs/ioctl.c:869 [inline] __se_sys_ioctl+0xae/0x190 fs/ioctl.c:857 do_syscall_x64 arch/x86/entry/common.c:51 [inline] do_syscall_64+0x70/0x120 arch/x86/entry/common.c:81 entry_SYSCALL_64_after_hwframe+0x78/0xe2 Allocated by task 232719: kasan_save_stack+0x22/0x50 mm/kasan/common.c:45 kasan_set_track+0x25/0x30 mm/kasan/common.c:52 __kasan_slab_alloc+0x87/0x90 mm/kasan/common.c:328 kasan_slab_alloc include/linux/kasan.h:188 [inline] slab_post_alloc_hook mm/slab.h:768 [inline] slab_alloc_node mm/slub.c:3492 [inline] kmem_cache_alloc_node+0x1b8/0x6f0 mm/slub.c:3537 bfq_get_queue+0x215/0x1f00 block/bfq-iosched.c:5869 bfq_get_bfqq_handle_split+0x167/0x5f0 block/bfq-iosched.c:6776 bfq_init_rq+0x13a4/0x17a0 block/bfq-iosched.c:6938 bfq_insert_request.isra.0+0xe8/0xa20 block/bfq-iosched.c:6271 bfq_insert_requests+0x27f/0x390 block/bfq-iosched.c:6323 blk_mq_insert_request+0x290/0x8f0 block/blk-mq.c:2660 blk_mq_submit_bio+0x1021/0x15e0 block/blk-mq.c:3143 __submit_bio+0xa0/0x6b0 block/blk-core.c:639 __submit_bio_noacct_mq block/blk-core.c:718 [inline] submit_bio_noacct_nocheck+0x5b7/0x810 block/blk-core.c:747 submit_bio_noacct+0xca0/0x1990 block/blk-core.c:847 __ext4_read_bh fs/ext4/super.c:205 [inline] ext4_read_bh_nowait+0x15a/0x240 fs/ext4/super.c:217 ext4_read_bh_lock+0xac/0xd0 fs/ext4/super.c:242 ext4_bread_batch+0x268/0x500 fs/ext4/inode.c:958 __ext4_find_entry+0x448/0x10f0 fs/ext4/namei.c:1671 ext4_lookup_entry fs/ext4/namei.c:1774 [inline] ext4_lookup.part.0+0x359/0x6f0 fs/ext4/namei.c:1842 ext4_lookup+0x72/0x90 fs/ext4/namei.c:1839 __lookup_slow+0x257/0x480 fs/namei.c:1696 lookup_slow fs/namei.c:1713 [inline] walk_component+0x454/0x5c0 fs/namei.c:2004 link_path_walk.part.0+0x773/0xda0 fs/namei.c:2331 link_path_walk fs/namei.c:3826 [inline] path_openat+0x1b9/0x520 fs/namei.c:3826 do_filp_open+0x1b7/0x400 fs/namei.c:3857 do_sys_openat2+0x5dc/0x6e0 fs/open.c:1428 do_sys_open fs/open.c:1443 [inline] __do_sys_openat fs/open.c:1459 [inline] __se_sys_openat fs/open.c:1454 [inline] __x64_sys_openat+0x148/0x200 fs/open.c:1454 do_syscall_x64 arch/x86/entry/common.c:51 [inline] do_syscall_64+0x70/0x120 arch/x86/entry/common.c:81 entry_SYSCALL_64_after_hwframe+0x78/0xe2 Freed by task 232726: kasan_save_stack+0x22/0x50 mm/kasan/common.c:45 kasan_set_track+0x25/0x30 mm/kasan/common.c:52 kasan_save_free_info+0x2b/0x50 mm/kasan/generic.c:522 ____kasan_slab_free mm/kasan/common.c:236 [inline] __kasan_slab_free+0x12a/0x1b0 mm/kasan/common.c:244 kasan_slab_free include/linux/kasan.h:164 [inline] slab_free_hook mm/slub.c:1827 [inline] slab_free_freelist_hook mm/slub.c:1853 [inline] slab_free mm/slub.c:3820 [inline] kmem_cache_free+0x110/0x760 mm/slub.c:3842 bfq_put_queue+0x6a7/0xfb0 block/bfq-iosched.c:5428 bfq_forget_entity block/bfq-wf2q.c:634 [inline] bfq_put_idle_entity+0x142/0x240 block/bfq-wf2q.c:645 bfq_forget_idle+0x189/0x1e0 block/bfq-wf2q.c:671 bfq_update_vtime block/bfq-wf2q.c:1280 [inline] __bfq_lookup_next_entity block/bfq-wf2q.c:1374 [inline] bfq_lookup_next_entity+0x350/0x480 block/bfq-wf2q.c:1433 bfq_update_next_in_service+0x1c0/0x4f0 block/bfq-wf2q.c:128 bfq_deactivate_entity+0x10a/0x240 block/bfq-wf2q.c:1188 bfq_deactivate_bfqq block/bfq-wf2q.c:1592 [inline] bfq_del_bfqq_busy+0x2e8/0xad0 block/bfq-wf2q.c:1659 bfq_release_process_ref+0x1cc/0x220 block/bfq-iosched.c:3139 bfq_split_bfqq+0x481/0xdf0 block/bfq-iosched.c:6754 bfq_init_rq+0xf29/0x17a0 block/bfq-iosched.c:6934 bfq_insert_request.isra.0+0xe8/0xa20 block/bfq-iosched.c:6271 bfq_insert_requests+0x27f/0x390 block/bfq-iosched.c:6323 blk_mq_insert_request+0x290/0x8f0 block/blk-mq.c:2660 blk_mq_submit_bio+0x1021/0x15e0 block/blk-mq.c:3143 __submit_bio+0xa0/0x6b0 block/blk-core.c:639 __submit_bio_noacct_mq block/blk-core.c:718 [inline] submit_bio_noacct_nocheck+0x5b7/0x810 block/blk-core.c:747 submit_bio_noacct+0xca0/0x1990 block/blk-core.c:847 __ext4_read_bh fs/ext4/super.c:205 [inline] ext4_read_bh+0x15e/0x2e0 fs/ext4/super.c:230 __read_extent_tree_block+0x304/0x6f0 fs/ext4/extents.c:567 ext4_find_extent+0x479/0xd20 fs/ext4/extents.c:947 ext4_ext_map_blocks+0x1a3/0x2680 fs/ext4/extents.c:4182 ext4_map_blocks+0x929/0x15a0 fs/ext4/inode.c:660 ext4_iomap_begin_report+0x298/0x480 fs/ext4/inode.c:3569 iomap_iter+0x3dd/0x1010 fs/iomap/iter.c:91 iomap_fiemap+0x1f4/0x360 fs/iomap/fiemap.c:80 ext4_fiemap+0x181/0x210 fs/ext4/extents.c:5051 ioctl_fiemap.isra.0+0x1b4/0x290 fs/ioctl.c:220 do_vfs_ioctl+0x31c/0x11a0 fs/ioctl.c:811 __do_sys_ioctl fs/ioctl.c:869 [inline] __se_sys_ioctl+0xae/0x190 fs/ioctl.c:857 do_syscall_x64 arch/x86/entry/common.c:51 [inline] do_syscall_64+0x70/0x120 arch/x86/entry/common.c:81 entry_SYSCALL_64_after_hwframe+0x78/0xe2
commit 1ba0403ac644 ("block, bfq: fix uaf for accessing waker_bfqq after splitting") fix the problem that if waker_bfqq is in the merge chain, and current is the only procress, waker_bfqq can be freed from bfq_split_bfqq(). However, the case that waker_bfqq is not in the merge chain is missed, and if the procress reference of waker_bfqq is 0, waker_bfqq can be freed as well.
Fix the problem by checking procress reference if waker_bfqq is not in the merge_chain.
--- block/bfq-iosched.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
block/bfq-iosched.c +10 -2
@@ -6844,16 +6844,24 @@ static struct bfq_queue *bfq_waker_bfqq(struct bfq_queue *bfqq)if (new_bfqq == waker_bfqq) {/* * If waker_bfqq is in the merge chain, and current -* is the only procress. +* is the only process, waker_bfqq can be freed. */ if (bfqq_process_refs (waker_bfqq) ==1 )return NULL ; -break ; + +return waker_bfqq; } new_bfqq = new_bfqq->new_bfqq; } +/* +* If waker_bfqq is not in the merge chain, and it's procress reference +* is 0, waker_bfqq can be freed. +*/ +if (bfqq_process_refs (waker_bfqq) ==0 ) +return NULL ; +return waker_bfqq; }
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 180/189 arm64: dts: rockchip: add hevc power domain clock to rk3328
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Geis <[email protected]>
[ Upstream commit 3699f2c43ea9984e00d70463f8c29baaf260ea97 ]
There is a race condition at startup between disabling power domains not used and disabling clocks not used on the rk3328. When the clocks are disabled first, the hevc power domain fails to shut off leading to a splat of failures. Add the hevc core clock to the rk3328 power domain node to prevent this condition.
rcu: INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 3-.... }1087 jiffies s: 89 root: 0x8/.
rcu: blocking rcu_node structures (internal RCU debug):
Sending NMI from CPU 0 to CPUs 3:
NMI backtrace for cpu 3
CPU: 3 UID: 0 PID: 86 Comm: kworker/3:3 Not tainted 6.12.0-rc5+ #53 Hardware name: Firefly ROC-RK3328-CC (DT) Workqueue: pm genpd_power_off_work_fn pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : regmap_unlock_spinlock+0x18/0x30 lr : regmap_read+0x60/0x88
sp : ffff800081123c00
x29: ffff800081123c00 x28: ffff2fa4c62cad80 x27: 0000000000000000
x26: ffffd74e6e660eb8 x25: ffff2fa4c62cae00 x24: 0000000000000040
x23: ffffd74e6d2f3ab8 x22: 0000000000000001 x21: ffff800081123c74
x20: 0000000000000000 x19: ffff2fa4c0412000 x18: 0000000000000000
x17: 77202c31203d2065 x16: 6c6469203a72656c x15: 6c6f72746e6f632d
x14: 7265776f703a6e6f x13: 2063766568206e69 x12: 616d6f64202c3431
x11: 347830206f742030 x10: 3430303034783020 x9 : ffffd74e6c7369e0 x8 : 3030316666206e69 x7 : 205d383738353733 x6 : 332e31202020205b x5 : ffffd74e6c73fc88 x4 : ffffd74e6c73fcd4 x3 : ffffd74e6c740b40 x2 : ffff800080015484 x1 : 0000000000000000 x0 : ffff2fa4c0412000
Call trace: regmap_unlock_spinlock+0x18/0x30 rockchip_pmu_set_idle_request+0xac/0x2c0 rockchip_pd_power+0x144/0x5f8 rockchip_pd_power_off+0x1c/0x30 _genpd_power_off+0x9c/0x180 genpd_power_off.part.0.isra.0+0x130/0x2a8 genpd_power_off_work_fn+0x6c/0x98 process_one_work+0x170/0x3f0 worker_thread+0x290/0x4a8 kthread+0xec/0xf8 ret_from_fork+0x10/0x20
rockchip-pm-domain ff100000.syscon:power-controller: failed to get ack on domain 'hevc', val=0x88220
--- arch/arm64/boot/dts/rockchip/rk3328.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm64/boot/dts/rockchip/rk3328.dtsi +1 -0
@@ -333,6 +333,7 @@ power-domain@RK3328_PD_HEVC { reg = <RK3328_PD_HEVC>; + clocks = <&cru SCLK_VENC_CORE>; #power-domain-cells = <0>; }; power-domain@RK3328_PD_VIDEO {
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 181/189 firewall: remove misplaced semicolon from stm32_firewall_get_firewall
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: guanjing <[email protected]>
[ Upstream commit 155c5bf26f983e9988333eeb0ef217138304d13b ]
Remove misplaced colon in stm32_firewall_get_firewall() which results in a syntax error when the code is compiled without CONFIG_STM32_FIREWALL.
--- include/linux/bus/stm32_firewall_device.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/bus/stm32_firewall_device.h +1 -1
@@ -115,7 +115,7 @@ void stm32_firewall_release_access_by_id(struct stm32_firewall *firewall, u32 su#else /* CONFIG_STM32_FIREWALL */ int stm32_firewall_get_firewall (struct device_node *np,struct stm32_firewall *firewall, -unsigned int nb_firewall); +unsigned int nb_firewall) {return -ENODEV ; }
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 182/189 drm/xe/oa: Separate batch submission from waiting for completion
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ashutosh Dixit <[email protected]>
[ Upstream commit dddcb19ad4d4bbe943a72a1fb3266c6e8aa8d541 ]
When we introduce xe_syncs, we don't wait for internal OA programming batches to complete. That is, xe_syncs are signaled asynchronously. In anticipation for this, separate out batch submission from waiting for completion of those batches.
v2: Change return type of xe_oa_submit_bb to "struct dma_fence *" (Matt B)
v3: Retain init "int err = 0;" in xe_oa_submit_bb (Jose)
Stable-dep-of: f0ed39830e60 ("xe/oa: Fix query mode of operation for OAR/OAC")
--- drivers/gpu/drm/xe/xe_oa.c | 57 +++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 13 deletions(-)
drivers/gpu/drm/xe/xe_oa.c +44 -13
@@ -567,11 +567,10 @@ static __poll_t xe_oa_poll(struct file *file, poll_table *wait)return ret; } -static int xe_oa_submit_bb (struct xe_oa_stream *stream,struct xe_bb *bb) +static struct dma_fence *xe_oa_submit_bb (struct xe_oa_stream *stream,struct xe_bb *bb) {struct xe_sched_job *job;struct dma_fence *fence; -long timeout;int err =0 ;/* Kernel configuration is issued on stream->k_exec_q, not stream->exec_q */
@@ -585,14 +584,9 @@ static int xe_oa_submit_bb(struct xe_oa_stream *stream, struct xe_bb *bb) fence =dma_fence_get (&job->drm.s_fence->finished);xe_sched_job_push (job); - timeout =dma_fence_wait_timeout (fence, false,HZ ); -dma_fence_put (fence); -if (timeout <0 ) - err = timeout; -else if (!timeout) - err = -ETIME ; +return fence; exit: -return err; +return ERR_PTR (err); }static void write_cs_mi_lri (struct xe_bb *bb,const struct xe_oa_reg *reg_data,u32 n_regs)
@@ -656,6 +650,7 @@ static void xe_oa_store_flex(struct xe_oa_stream *stream, struct xe_lrc *lrc,static int xe_oa_modify_ctx_image (struct xe_oa_stream *stream,struct xe_lrc *lrc,const struct flex *flex,u32 count) { +struct dma_fence *fence;struct xe_bb *bb;int err;
@@ -667,7 +662,16 @@ static int xe_oa_modify_ctx_image(struct xe_oa_stream *stream, struct xe_lrc *lrxe_oa_store_flex (stream, lrc, bb, flex, count); - err =xe_oa_submit_bb (stream, bb); + fence =xe_oa_submit_bb (stream, bb); +if (IS_ERR (fence)) { + err =PTR_ERR (fence); + goto free_bb; + } +xe_bb_free (bb, fence); +dma_fence_put (fence); + +return 0 ; +free_bb:xe_bb_free (bb,NULL ); exit:return err;
@@ -675,6 +679,7 @@ static int xe_oa_modify_ctx_image(struct xe_oa_stream *stream, struct xe_lrc *lrstatic int xe_oa_load_with_lri (struct xe_oa_stream *stream,struct xe_oa_reg *reg_lri) { +struct dma_fence *fence;struct xe_bb *bb;int err;
@@ -686,7 +691,16 @@ static int xe_oa_load_with_lri(struct xe_oa_stream *stream, struct xe_oa_reg *rewrite_cs_mi_lri (bb, reg_lri,1 ); - err =xe_oa_submit_bb (stream, bb); + fence =xe_oa_submit_bb (stream, bb); +if (IS_ERR (fence)) { + err =PTR_ERR (fence); + goto free_bb; + } +xe_bb_free (bb, fence); +dma_fence_put (fence); + +return 0 ; +free_bb:xe_bb_free (bb,NULL ); exit:return err;
@@ -914,15 +928,32 @@ static int xe_oa_emit_oa_config(struct xe_oa_stream *stream, struct xe_oa_config {#define NOA_PROGRAM_ADDITIONAL_DELAY_US 500struct xe_oa_config_bo *oa_bo; -int err, us =NOA_PROGRAM_ADDITIONAL_DELAY_US ; +int err =0 , us =NOA_PROGRAM_ADDITIONAL_DELAY_US ; +struct dma_fence *fence; +long timeout; +/* Emit OA configuration batch */ oa_bo =xe_oa_alloc_config_buffer (stream, config);if (IS_ERR (oa_bo)) { err =PTR_ERR (oa_bo); goto exit; } - err =xe_oa_submit_bb (stream, oa_bo->bb); + fence =xe_oa_submit_bb (stream, oa_bo->bb); +if (IS_ERR (fence)) { + err =PTR_ERR (fence); + goto exit; + } + +/* Wait till all previous batches have executed */ + timeout =dma_fence_wait_timeout (fence, false,5 *HZ ); +dma_fence_put (fence); +if (timeout <0 ) + err = timeout; +else if (!timeout) + err = -ETIME ; +if (err) +drm_dbg (&stream->oa->xe->drm,"dma_fence_wait_timeout err %d\n" , err);/* Additional empirical delay needed for NOA programming after registers are written */ usleep_range (us,2 * us);
Signature · 1 line
2.39.5
Re: [PATCH 6.12 182/189] drm/xe/oa: Separate batch submission from waiting for completion
Quoted 1 line · Greg Kroah-Hartman
Hi Greg,
Quoted 9 lines
6.12-stable review patch. If anyone has any objections, please let me know.
This is a note to let you know that I've just added the patch titled
drm/xe/oa: Separate batch submission from waiting for completion
to the 6.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
Quoted 6 lines
The filename of the patch is:
drm-xe-oa-separate-batch-submission-from-waiting-for.patch
and it can be found in the queue-6.12 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
I am writing about 3 emails I received (including this one) about 3 commits being added to stable. These are the 3 commits I am referring to (all commit SHA's refer to Linus' tree and first commit is at the bottom, everywhere in this email):
2fb4350a283af drm/xe/oa: Add input fence dependencies c8507a25cebd1 drm/xe/oa/uapi: Define and parse OA sync properties dddcb19ad4d4b drm/xe/oa: Separate batch submission from waiting for completion
Apparently these are added to stable to avoid conflicts with this commit:
f0ed39830e606 xe/oa: Fix query mode of operation for OAR/OAC
However, the 3 commits are part of a 7 commit series and are incomplete in themeselves and will break userspace. So we should add the remaining 4 commits of the series to stable too. Thes are the ones:
85d3f9e84e062 drm/xe/oa: Allow only certain property changes from config 9920c8b88c5cf drm/xe/oa: Add syncs support to OA config ioctl cc4e6994d5a23 drm/xe/oa: Move functions up so they can be reused for config ioctl 343dd246fd9b5 drm/xe/oa: Signal output fences
The above list can be generated by running the following in Linus' tree:
git log --oneline -- drivers/gpu/drm/xe/xe_oa.c
Thanks.
--
Ashutosh
Quoted 150 lines
------------------
From: Ashutosh Dixit <[email protected]>
[ Upstream commit
dddcb19ad4d4bbe943a72a1fb3266c6e8aa8d541]When we introduce
xe_syncs, we don't wait for internal OA programming batches to complete. That is,xe_syncsare signaled asynchronously. In anticipation for this, separate out batch submission from waiting for completion of those batches.v2: Change return type of
xe_oa_submit_bbto "structdma_fence*" (Matt B)
v3: Retain init "int err = 0;" inxe_oa_submit_bb(Jose)Reviewed-by Jonathan Cavitt <[email protected]>Signed-off-by Ashutosh Dixit <[email protected]>Stable-dep-of:
f0ed39830e60("xe/oa: Fix query mode of operation for OAR/OAC")Signed-off-by Sasha Levin <[email protected]>--- drivers/gpu/drm/xe/xe_oa.c | 57 +++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 13 deletions(-)drivers/gpu/drm/xe/xe_oa.c +44
-14@@ -567,11 +567,10 @@ static __poll_t xe_oa_poll(struct file *file, poll_table *wait)return ret; } -static int xe_oa_submit_bb (struct xe_oa_stream *stream,struct xe_bb *bb) +static struct dma_fence *xe_oa_submit_bb (struct xe_oa_stream *stream,struct xe_bb *bb) {struct xe_sched_job *job;struct dma_fence *fence; -long timeout;int err =0 ;/* Kernel configuration is issued on stream->k_exec_q, not stream->exec_q */ @@ -585,14 +584,9 @@ static int xe_oa_submit_bb(struct xe_oa_stream *stream, struct xe_bb *bb) fence =dma_fence_get (&job->drm.s_fence->finished);xe_sched_job_push (job); - timeout =dma_fence_wait_timeout (fence, false,HZ ); -dma_fence_put (fence); -if (timeout <0 ) - err = timeout; -else if (!timeout) - err = -ETIME ; +return fence; exit: -return err; +return ERR_PTR (err); }static void write_cs_mi_lri (struct xe_bb *bb,const struct xe_oa_reg *reg_data,u32 n_regs)@@ -656,6 +650,7 @@ static void xe_oa_store_flex(struct xe_oa_stream *stream, struct xe_lrc *lrc,static int xe_oa_modify_ctx_image (struct xe_oa_stream *stream,struct xe_lrc *lrc,const struct flex *flex,u32 count) { +struct dma_fence *fence;struct xe_bb *bb;int err;@@ -667,7 +662,16 @@ static int xe_oa_modify_ctx_image(struct xe_oa_stream *stream, struct xe_lrc *lrxe_oa_store_flex (stream, lrc, bb, flex, count); - err =xe_oa_submit_bb (stream, bb); + fence =xe_oa_submit_bb (stream, bb); +if (IS_ERR (fence)) { + err =PTR_ERR (fence); + goto free_bb; + } +xe_bb_free (bb, fence); +dma_fence_put (fence); + +return 0 ; +free_bb:xe_bb_free (bb,NULL ); exit:return err;@@ -675,6 +679,7 @@ static int xe_oa_modify_ctx_image(struct xe_oa_stream *stream, struct xe_lrc *lrstatic int xe_oa_load_with_lri (struct xe_oa_stream *stream,struct xe_oa_reg *reg_lri) { +struct dma_fence *fence;struct xe_bb *bb;int err;@@ -686,7 +691,16 @@ static int xe_oa_load_with_lri(struct xe_oa_stream *stream, struct xe_oa_reg *rewrite_cs_mi_lri (bb, reg_lri,1 ); - err =xe_oa_submit_bb (stream, bb); + fence =xe_oa_submit_bb (stream, bb); +if (IS_ERR (fence)) { + err =PTR_ERR (fence); + goto free_bb; + } +xe_bb_free (bb, fence); +dma_fence_put (fence); + +return 0 ; +free_bb:xe_bb_free (bb,NULL ); exit:return err;@@ -914,15 +928,32 @@ static int xe_oa_emit_oa_config(struct xe_oa_stream *stream, struct xe_oa_config {#define NOA_PROGRAM_ADDITIONAL_DELAY_US 500struct xe_oa_config_bo *oa_bo; -int err, us =NOA_PROGRAM_ADDITIONAL_DELAY_US ; +int err =0 , us =NOA_PROGRAM_ADDITIONAL_DELAY_US ; +struct dma_fence *fence; +long timeout; +/* Emit OA configuration batch */ oa_bo =xe_oa_alloc_config_buffer (stream, config);if (IS_ERR (oa_bo)) { err =PTR_ERR (oa_bo); goto exit; } - err =xe_oa_submit_bb (stream, oa_bo->bb); + fence =xe_oa_submit_bb (stream, oa_bo->bb); +if (IS_ERR (fence)) { + err =PTR_ERR (fence); + goto exit; + } + +/* Wait till all previous batches have executed */ + timeout =dma_fence_wait_timeout (fence, false,5 *HZ ); +dma_fence_put (fence); +if (timeout <0 ) + err = timeout; +else if (!timeout) + err = -ETIME ; +if (err) +drm_dbg (&stream->oa->xe->drm,"dma_fence_wait_timeout err %d\n" , err);/* Additional empirical delay needed for NOA programming after registers are written */ usleep_range (us,2 * us); --2.39.5
Greg Kroah-Hartman
maintainerRe: [PATCH 6.12 182/189] drm/xe/oa: Separate batch submission from waiting for completion
Quoted 38 lines · Ashutosh
Quoted 1 line · Greg Kroah-Hartman
Hi Greg,
Quoted 9 lines
6.12-stable review patch. If anyone has any objections, please let me know.
This is a note to let you know that I've just added the patch titled
drm/xe/oa: Separate batch submission from waiting for completion
to the 6.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryQuoted 6 lines
The filename of the patch is:
drm-xe-oa-separate-batch-submission-from-waiting-for.patch
and it can be found in the queue-6.12 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
I am writing about 3 emails I received (including this one) about 3 commits being added to stable. These are the 3 commits I am referring to (all commit SHA's refer to Linus' tree and first commit is at the bottom, everywhere in this email):
2fb4350a283afdrm/xe/oa: Add input fence dependenciesc8507a25cebd1drm/xe/oa/uapi: Define and parse OA sync propertiesdddcb19ad4d4bdrm/xe/oa: Separate batch submission from waiting for completionApparently these are added to stable to avoid conflicts with this commit:
f0ed39830e606xe/oa: Fix query mode of operation for OAR/OACHowever, the 3 commits are part of a 7 commit series and are incomplete in themeselves and will break userspace. So we should add the remaining 4 commits of the series to stable too. Thes are the ones:
Quoted 8 lines
85d3f9e84e062drm/xe/oa: Allow only certain property changes from config9920c8b88c5cfdrm/xe/oa: Add syncs support to OA config ioctlcc4e6994d5a23drm/xe/oa: Move functions up so they can be reused for config ioctl343dd246fd9b5drm/xe/oa: Signal output fencesThe above list can be generated by running the following in Linus' tree:
git log --oneline -- drivers/gpu/drm/xe/xe_oa.c
For now I've just dropped all of these commits, can someone send a series in the correct order, or a properly backported fix of the original bugfix, and we can take them that way.
thanks,
greg k-h
Greg Kroah-Hartman
maintainerPATCH 183/189 drm/xe/oa/uapi: Define and parse OA sync properties
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ashutosh Dixit <[email protected]>
[ Upstream commit c8507a25cebd179db935dd266a33c51bef1b1e80 ]
Now that we have laid the groundwork, introduce OA sync properties in the uapi and parse the input xe_sync array as is done elsewhere in the driver. Also add DRM_XE_OA_CAPS_SYNCS bit in OA capabilities for userspace.
v2: Fix and document DRM_XE_SYNC_TYPE_USER_FENCE for OA (Matt B)
Add DRM_XE_OA_CAPS_SYNCS bit to OA capabilities (Jose)
Stable-dep-of: f0ed39830e60 ("xe/oa: Fix query mode of operation for OAR/OAC")
--- drivers/gpu/drm/xe/xe_oa.c | 83 +++++++++++++++++++++++++++++++- drivers/gpu/drm/xe/xe_oa_types.h | 6 +++ drivers/gpu/drm/xe/xe_query.c | 2 +- include/uapi/drm/xe_drm.h | 17 +++++++ 4 files changed, 106 insertions(+), 2 deletions(-)
drivers/gpu/drm/xe/xe_oa.c +82 -1
@@ -36,6 +36,7 @@#include "xe_pm.h" #include "xe_sched_job.h" #include "xe_sriov.h" +#include "xe_sync.h" #define DEFAULT_POLL_FREQUENCY_HZ 200#define DEFAULT_POLL_PERIOD_NS (NSEC_PER_SEC / DEFAULT_POLL_FREQUENCY_HZ)
@@ -70,6 +71,7 @@ struct flex { };struct xe_oa_open_param { +struct xe_file *xef;u32 oa_unit_id;bool sample;u32 metric_set;
@@ -81,6 +83,9 @@ struct xe_oa_open_param {struct xe_exec_queue *exec_q;struct xe_hw_engine *hwe;bool no_preempt; +struct drm_xe_sync __user *syncs_user; +int num_syncs; +struct xe_sync_entry *syncs; };struct xe_oa_config_bo {
@@ -1393,6 +1398,9 @@ static int xe_oa_stream_init(struct xe_oa_stream *stream, stream->period_exponent = param->period_exponent; stream->no_preempt = param->no_preempt; + stream->num_syncs = param->num_syncs; + stream->syncs = param->syncs; +/* * For Xe2+, when overrun mode is enabled, there are no partial reports at the end * of buffer, making the OA buffer effectively a non-power-of-2 size circular
@@ -1743,6 +1751,20 @@ static int xe_oa_set_no_preempt(struct xe_oa *oa, u64 value,return 0 ; } +static int xe_oa_set_prop_num_syncs (struct xe_oa *oa,u64 value, +struct xe_oa_open_param *param) +{ + param->num_syncs = value; +return 0 ; +} + +static int xe_oa_set_prop_syncs_user (struct xe_oa *oa,u64 value, +struct xe_oa_open_param *param) +{ + param->syncs_user =u64_to_user_ptr (value); +return 0 ; +} +typedef int (*xe_oa_set_property_fn )(struct xe_oa *oa,u64 value,struct xe_oa_open_param *param);static const xe_oa_set_property_fn xe_oa_set_property_funcs[] = {
@@ -1755,6 +1777,8 @@ static const xe_oa_set_property_fn xe_oa_set_property_funcs[] = { [DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID] = xe_oa_set_prop_exec_queue_id, [DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE] = xe_oa_set_prop_engine_instance, [DRM_XE_OA_PROPERTY_NO_PREEMPT] = xe_oa_set_no_preempt, + [DRM_XE_OA_PROPERTY_NUM_SYNCS] = xe_oa_set_prop_num_syncs, + [DRM_XE_OA_PROPERTY_SYNCS] = xe_oa_set_prop_syncs_user, }; static int xe_oa_user_ext_set_property(struct xe_oa *oa, u64 extension,
@@ -1814,6 +1838,49 @@ static int xe_oa_user_extensions(struct xe_oa *oa, u64 extension, int ext_numberreturn 0 ; } +static int xe_oa_parse_syncs (struct xe_oa *oa,struct xe_oa_open_param *param) +{ +int ret, num_syncs, num_ufence =0 ; + +if (param->num_syncs && !param->syncs_user) { +drm_dbg (&oa->xe->drm,"num_syncs specified without sync array\n" ); + ret = -EINVAL ; + goto exit; + } + +if (param->num_syncs) { + param->syncs =kcalloc (param->num_syncs,sizeof (*param->syncs),GFP_KERNEL ); +if (!param->syncs) { + ret = -ENOMEM ; + goto exit; + } + } + +for (num_syncs =0 ; num_syncs < param->num_syncs; num_syncs++) { + ret =xe_sync_entry_parse (oa->xe, param->xef, ¶m->syncs[num_syncs], + ¶m->syncs_user[num_syncs],0 ); +if (ret) + goto err_syncs; + +if (xe_sync_is_ufence (¶m->syncs[num_syncs])) + num_ufence++; + } + +if (XE_IOCTL_DBG (oa->xe, num_ufence >1 )) { + ret = -EINVAL ; + goto err_syncs; + } + +return 0 ; + +err_syncs: +while (num_syncs--) +xe_sync_entry_cleanup (¶m->syncs[num_syncs]); +kfree (param->syncs); +exit: +return ret; +} +/** * xe_oa_stream_open_ioctl - Opens an OA stream * @dev: @drm_device
@@ -1839,6 +1906,7 @@ int xe_oa_stream_open_ioctl(struct drm_device *dev, u64 data, struct drm_file *freturn -ENODEV ; } + param.xef = xef; ret =xe_oa_user_extensions (oa, data,0 , ¶m);if (ret)return ret;
@@ -1907,11 +1975,24 @@ int xe_oa_stream_open_ioctl(struct drm_device *dev, u64 data, struct drm_file *fdrm_dbg (&oa->xe->drm,"Using periodic sampling freq %lld Hz\n" , oa_freq_hz); } + ret =xe_oa_parse_syncs (oa, ¶m); +if (ret) + goto err_exec_q; +mutex_lock (¶m.hwe->gt->oa.gt_lock); ret =xe_oa_stream_open_ioctl_locked (oa, ¶m);mutex_unlock (¶m.hwe->gt->oa.gt_lock); +if (ret <0 ) + goto err_sync_cleanup; + +return ret; + +err_sync_cleanup: +while (param.num_syncs--) +xe_sync_entry_cleanup (¶m.syncs[param.num_syncs]); +kfree (param.syncs); err_exec_q: -if (ret <0 && param.exec_q) +if (param.exec_q)xe_exec_queue_put (param.exec_q);return ret; }
drivers/gpu/drm/xe/xe_oa_types.h +6 -0
@@ -238,5 +238,11 @@ struct xe_oa_stream {/** @no_preempt: Whether preemption and timeslicing is disabled for stream exec_q */ u32 no_preempt; + +/** @num_syncs: size of @syncs array */ +u32 num_syncs; + +/** @syncs: syncs to wait on and to signal */ + struct xe_sync_entry *syncs; };#endif
drivers/gpu/drm/xe/xe_query.c +1 -1
@@ -679,7 +679,7 @@ static int query_oa_units(struct xe_device *xe, du->oa_unit_id = u->oa_unit_id; du->oa_unit_type = u->type; du->oa_timestamp_freq =xe_oa_timestamp_frequency (gt); - du->capabilities =DRM_XE_OA_CAPS_BASE ; + du->capabilities =DRM_XE_OA_CAPS_BASE |DRM_XE_OA_CAPS_SYNCS ; j =0 ;for_each_hw_engine (hwe, gt, hwe_id) {
include/uapi/drm/xe_drm.h +17 -0
@@ -1485,6 +1485,7 @@ struct drm_xe_oa_unit {/** @capabilities: OA capabilities bit-mask */ __u64 capabilities;#define DRM_XE_OA_CAPS_BASE (1 << 0) +#define DRM_XE_OA_CAPS_SYNCS (1 << 1)/** @oa_timestamp_freq: OA timestamp freq */ __u64 oa_timestamp_freq;
@@ -1634,6 +1635,22 @@ enum drm_xe_oa_property_id {* to be disabled for the stream exec queue. */ DRM_XE_OA_PROPERTY_NO_PREEMPT , + +/** +* @DRM_XE_OA_PROPERTY_NUM_SYNCS: Number of syncs in the sync array +* specified in @DRM_XE_OA_PROPERTY_SYNCS +*/ +DRM_XE_OA_PROPERTY_NUM_SYNCS , + +/** +* @DRM_XE_OA_PROPERTY_SYNCS: Pointer to struct @drm_xe_sync array +* with array size specified via @DRM_XE_OA_PROPERTY_NUM_SYNCS. OA +* configuration will wait till input fences signal. Output fences +* will signal after the new OA configuration takes effect. For +* @DRM_XE_SYNC_TYPE_USER_FENCE, @addr is a user pointer, similar +* to the VM bind case. +*/ + DRM_XE_OA_PROPERTY_SYNCS, };/**
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 184/189 drm/xe/oa: Add input fence dependencies
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ashutosh Dixit <[email protected]>
[ Upstream commit 2fb4350a283af03a5ee34ba765783a941f942b82 ]
Add input fence dependencies which will make OA configuration wait till these dependencies are met (till input fences signal).
v2: Change add_deps arg to xe_oa_submit_bb from bool to enum (Matt Brost)
Stable-dep-of: f0ed39830e60 ("xe/oa: Fix query mode of operation for OAR/OAC")
--- drivers/gpu/drm/xe/xe_oa.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-)
drivers/gpu/drm/xe/xe_oa.c +21 -4
@@ -42,6 +42,11 @@#define DEFAULT_POLL_PERIOD_NS (NSEC_PER_SEC / DEFAULT_POLL_FREQUENCY_HZ)#define XE_OA_UNIT_INVALID U32_MAX +enum xe_oa_submit_deps { +XE_OA_SUBMIT_NO_DEPS , +XE_OA_SUBMIT_ADD_DEPS , +}; +struct xe_oa_reg {struct xe_reg addr;u32 value;
@@ -572,7 +577,8 @@ static __poll_t xe_oa_poll(struct file *file, poll_table *wait)return ret; } -static struct dma_fence *xe_oa_submit_bb (struct xe_oa_stream *stream,struct xe_bb *bb) +static struct dma_fence *xe_oa_submit_bb (struct xe_oa_stream *stream,enum xe_oa_submit_deps deps, +struct xe_bb *bb) {struct xe_sched_job *job;struct dma_fence *fence;
@@ -585,11 +591,22 @@ static struct dma_fence *xe_oa_submit_bb(struct xe_oa_stream *stream, struct xe_ goto exit; } +if (deps ==XE_OA_SUBMIT_ADD_DEPS ) { +for (int i =0 ; i < stream->num_syncs && !err; i++) + err =xe_sync_entry_add_deps (&stream->syncs[i], job); +if (err) { +drm_dbg (&stream->oa->xe->drm,"xe_sync_entry_add_deps err %d\n" , err); + goto err_put_job; + } + } +xe_sched_job_arm (job); fence =dma_fence_get (&job->drm.s_fence->finished);xe_sched_job_push (job);return fence; +err_put_job: +xe_sched_job_put (job); exit:return ERR_PTR (err); }
@@ -667,7 +684,7 @@ static int xe_oa_modify_ctx_image(struct xe_oa_stream *stream, struct xe_lrc *lrxe_oa_store_flex (stream, lrc, bb, flex, count); - fence =xe_oa_submit_bb (stream, bb); + fence =xe_oa_submit_bb (stream,XE_OA_SUBMIT_NO_DEPS , bb);if (IS_ERR (fence)) { err =PTR_ERR (fence); goto free_bb;
@@ -696,7 +713,7 @@ static int xe_oa_load_with_lri(struct xe_oa_stream *stream, struct xe_oa_reg *rewrite_cs_mi_lri (bb, reg_lri,1 ); - fence =xe_oa_submit_bb (stream, bb); + fence =xe_oa_submit_bb (stream,XE_OA_SUBMIT_NO_DEPS , bb);if (IS_ERR (fence)) { err =PTR_ERR (fence); goto free_bb;
@@ -944,7 +961,7 @@ static int xe_oa_emit_oa_config(struct xe_oa_stream *stream, struct xe_oa_config goto exit; } - fence =xe_oa_submit_bb (stream, oa_bo->bb); + fence =xe_oa_submit_bb (stream,XE_OA_SUBMIT_ADD_DEPS , oa_bo->bb);if (IS_ERR (fence)) { err =PTR_ERR (fence); goto exit;
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 185/189 xe/oa: Fix query mode of operation for OAR/OAC
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Umesh Nerlige Ramappa <[email protected]>
[ Upstream commit f0ed39830e6064d62f9c5393505677a26569bb56 ]
This is a set of squashed commits to facilitate smooth applying to stable. Each commit message is retained for reference.
1) Allow a GGTT mapped batch to be submitted to user exec queue
For a OA use case, one of the HW registers needs to be modified by submitting an MI_LOAD_REGISTER_IMM command to the users exec queue, so that the register is modified in the user's hardware context. In order to do this a batch that is mapped in GGTT, needs to be submitted to the user exec queue. Since all user submissions use q->vm and hence PPGTT, add some plumbing to enable submission of batches mapped in GGTT.
v2: ggtt is zero-initialized, so no need to set it false (Matt Brost)
2) xe/oa: Use MI_LOAD_REGISTER_IMMEDIATE to enable OAR/OAC
To enable OAR/OAC, a bit in RING_CONTEXT_CONTROL needs to be set. Setting this bit cause the context image size to change and if not done correct, can cause undesired hangs.
Current code uses a separate exec_queue to modify this bit and is error-prone. As per HW recommendation, submit MI_LOAD_REGISTER_IMM to the target hardware context to modify the relevant bit.
In v2 version, an attempt to submit everything to the user-queue was made, but it failed the unprivileged-single-ctx-counters test. It appears that the OACTXCONTROL must be modified from a remote context.
In v3 version, all context specific register configurations were moved to use LOAD_REGISTER_IMMEDIATE and that seems to work well. This is a cleaner way, since we can now submit all configuration to user exec_queue and the fence handling is simplified.
v2:
(Matt)
- set job->ggtt to true if create job is successful
- unlock vm on job error
(Ashutosh)
- don't wait on job submission
- use kernel exec queue where possible
v3:
(Ashutosh)
- Fix checkpatch issues
- Remove extra spaces/new-lines
- Add Fixes: and Cc: tags
- Reset context control bit when OA stream is closed
- Submit all config via MI_LOAD_REGISTER_IMMEDIATE
(Umesh)
- Update commit message for v3 experiment
- Squash patches for easier port to stable
v4:
(Ashutosh)
- No need to pass q to xe_oa_submit_bb
- Do not support exec queues with width > 1
- Fix disabling of CTX_CTRL_OAC_CONTEXT_ENABLE
v5:
(Ashutosh)
- Drop reg_lri related comments
- Use XE_OA_SUBMIT_NO_DEPS in xe_oa_load_with_lri
--- drivers/gpu/drm/xe/xe_oa.c | 134 ++++++++---------------- drivers/gpu/drm/xe/xe_ring_ops.c | 5 +- drivers/gpu/drm/xe/xe_sched_job_types.h | 2 + 3 files changed, 51 insertions(+), 90 deletions(-)
drivers/gpu/drm/xe/xe_oa.c +45 -89
@@ -69,12 +69,6 @@ struct xe_oa_config {struct rcu_head rcu; }; -struct flex { -struct xe_reg reg; -u32 offset; -u32 value; -}; -struct xe_oa_open_param {struct xe_file *xef;u32 oa_unit_id;
@@ -577,19 +571,38 @@ static __poll_t xe_oa_poll(struct file *file, poll_table *wait)return ret; } +static void xe_oa_lock_vma (struct xe_exec_queue *q) +{ +if (q->vm) { +down_read (&q->vm->lock); +xe_vm_lock (q->vm, false); + } +} + +static void xe_oa_unlock_vma (struct xe_exec_queue *q) +{ +if (q->vm) { +xe_vm_unlock (q->vm); +up_read (&q->vm->lock); + } +} +static struct dma_fence *xe_oa_submit_bb (struct xe_oa_stream *stream,enum xe_oa_submit_deps deps,struct xe_bb *bb) { +struct xe_exec_queue *q = stream->exec_q ?: stream->k_exec_q;struct xe_sched_job *job;struct dma_fence *fence;int err =0 ; -/* Kernel configuration is issued on stream->k_exec_q, not stream->exec_q */ - job =xe_bb_create_job (stream->k_exec_q, bb); +xe_oa_lock_vma (q); + + job =xe_bb_create_job (q, bb);if (IS_ERR (job)) { err =PTR_ERR (job); goto exit; } + job->ggtt = true;if (deps ==XE_OA_SUBMIT_ADD_DEPS ) {for (int i =0 ; i < stream->num_syncs && !err; i++)
@@ -604,10 +617,13 @@ static struct dma_fence *xe_oa_submit_bb(struct xe_oa_stream *stream, enum xe_oa fence =dma_fence_get (&job->drm.s_fence->finished);xe_sched_job_push (job); +xe_oa_unlock_vma (q); +return fence; err_put_job:xe_sched_job_put (job); exit: +xe_oa_unlock_vma (q);return ERR_PTR (err); }
@@ -655,63 +671,19 @@ static void xe_oa_free_configs(struct xe_oa_stream *stream)free_oa_config_bo (oa_bo); } -static void xe_oa_store_flex (struct xe_oa_stream *stream,struct xe_lrc *lrc, -struct xe_bb *bb,const struct flex *flex,u32 count) -{ -u32 offset =xe_bo_ggtt_addr (lrc->bo); - -do { - bb->cs[bb->len++] =MI_STORE_DATA_IMM |MI_SDI_GGTT |MI_SDI_NUM_DW (1 ); - bb->cs[bb->len++] = offset + flex->offset *sizeof (u32); - bb->cs[bb->len++] =0 ; - bb->cs[bb->len++] = flex->value; - - }while (flex++, --count); -} - -static int xe_oa_modify_ctx_image (struct xe_oa_stream *stream,struct xe_lrc *lrc, -const struct flex *flex,u32 count) -{ -struct dma_fence *fence; -struct xe_bb *bb; -int err; - - bb =xe_bb_new (stream->gt,4 * count, false); -if (IS_ERR (bb)) { - err =PTR_ERR (bb); - goto exit; - } - -xe_oa_store_flex (stream, lrc, bb, flex, count); - - fence =xe_oa_submit_bb (stream,XE_OA_SUBMIT_NO_DEPS , bb); -if (IS_ERR (fence)) { - err =PTR_ERR (fence); - goto free_bb; - } -xe_bb_free (bb, fence); -dma_fence_put (fence); - -return 0 ; -free_bb: -xe_bb_free (bb,NULL ); -exit: -return err; -} - -static int xe_oa_load_with_lri (struct xe_oa_stream *stream,struct xe_oa_reg *reg_lri) +static int xe_oa_load_with_lri (struct xe_oa_stream *stream,struct xe_oa_reg *reg_lri,u32 count) {struct dma_fence *fence;struct xe_bb *bb;int err; - bb =xe_bb_new (stream->gt,3 , false); + bb =xe_bb_new (stream->gt,2 * count +1 , false);if (IS_ERR (bb)) { err =PTR_ERR (bb); goto exit; } -write_cs_mi_lri (bb, reg_lri,1 ); +write_cs_mi_lri (bb, reg_lri, count); fence =xe_oa_submit_bb (stream,XE_OA_SUBMIT_NO_DEPS , bb);if (IS_ERR (fence)) {
@@ -731,70 +703,54 @@ static int xe_oa_load_with_lri(struct xe_oa_stream *stream, struct xe_oa_reg *restatic int xe_oa_configure_oar_context (struct xe_oa_stream *stream,bool enable) {const struct xe_oa_format *format = stream->oa_buffer.format; -struct xe_lrc *lrc = stream->exec_q->lrc[0 ]; -u32 regs_offset =xe_lrc_regs_offset (lrc) /sizeof (u32);u32 oacontrol =__format_to_oactrl (format,OAR_OACONTROL_COUNTER_SEL_MASK ) | (enable ?OAR_OACONTROL_COUNTER_ENABLE :0 ); -struct flex regs_context[] = { +struct xe_oa_reg reg_lri[] = { {OACTXCONTROL (stream->hwe->mmio_base), - stream->oa->ctx_oactxctrl_offset[stream->hwe->class] +1 , enable ?OA_COUNTER_RESUME :0 , }, + { +OAR_OACONTROL , + oacontrol, + }, {RING_CONTEXT_CONTROL (stream->hwe->mmio_base), - regs_offset +CTX_CONTEXT_CONTROL , -_MASKED_BIT_ENABLE (CTX_CTRL_OAC_CONTEXT_ENABLE ), +_MASKED_FIELD (CTX_CTRL_OAC_CONTEXT_ENABLE , + enable ?CTX_CTRL_OAC_CONTEXT_ENABLE :0 ) }, }; -struct xe_oa_reg reg_lri = {OAR_OACONTROL , oacontrol }; -int err; - -/* Modify stream hwe context image with regs_context */ - err =xe_oa_modify_ctx_image (stream, stream->exec_q->lrc[0 ], - regs_context,ARRAY_SIZE (regs_context)); -if (err) -return err; -/* Apply reg_lri using LRI */ -return xe_oa_load_with_lri (stream, ®_lri); +return xe_oa_load_with_lri (stream, reg_lri,ARRAY_SIZE (reg_lri)); }static int xe_oa_configure_oac_context (struct xe_oa_stream *stream,bool enable) {const struct xe_oa_format *format = stream->oa_buffer.format; -struct xe_lrc *lrc = stream->exec_q->lrc[0 ]; -u32 regs_offset =xe_lrc_regs_offset (lrc) /sizeof (u32);u32 oacontrol =__format_to_oactrl (format,OAR_OACONTROL_COUNTER_SEL_MASK ) | (enable ?OAR_OACONTROL_COUNTER_ENABLE :0 ); -struct flex regs_context[] = { +struct xe_oa_reg reg_lri[] = { {OACTXCONTROL (stream->hwe->mmio_base), - stream->oa->ctx_oactxctrl_offset[stream->hwe->class] +1 , enable ?OA_COUNTER_RESUME :0 , }, + { +OAC_OACONTROL , + oacontrol + }, {RING_CONTEXT_CONTROL (stream->hwe->mmio_base), - regs_offset +CTX_CONTEXT_CONTROL , -_MASKED_BIT_ENABLE (CTX_CTRL_OAC_CONTEXT_ENABLE ) | +_MASKED_FIELD (CTX_CTRL_OAC_CONTEXT_ENABLE , + enable ?CTX_CTRL_OAC_CONTEXT_ENABLE :0 ) |_MASKED_FIELD (CTX_CTRL_RUN_ALONE , enable ?CTX_CTRL_RUN_ALONE :0 ), }, }; -struct xe_oa_reg reg_lri = {OAC_OACONTROL , oacontrol }; -int err;/* Set ccs select to enable programming of OAC_OACONTROL */ xe_mmio_write32 (stream->gt,__oa_regs (stream)->oa_ctrl,__oa_ccs_select (stream)); -/* Modify stream hwe context image with regs_context */ - err =xe_oa_modify_ctx_image (stream, stream->exec_q->lrc[0 ], - regs_context,ARRAY_SIZE (regs_context)); -if (err) -return err; - -/* Apply reg_lri using LRI */ -return xe_oa_load_with_lri (stream, ®_lri); +return xe_oa_load_with_lri (stream, reg_lri,ARRAY_SIZE (reg_lri)); }static int xe_oa_configure_oa_context (struct xe_oa_stream *stream,bool enable)
@@ -1933,8 +1889,8 @@ int xe_oa_stream_open_ioctl(struct drm_device *dev, u64 data, struct drm_file *fif (XE_IOCTL_DBG (oa->xe, !param.exec_q))return -ENOENT ; -if (param.exec_q->width >1 ) -drm_dbg (&oa->xe->drm,"exec_q->width > 1, programming only exec_q->lrc[0]\n" ); +if (XE_IOCTL_DBG (oa->xe, param.exec_q->width >1 )) +return -EOPNOTSUPP ; }/*
drivers/gpu/drm/xe/xe_ring_ops.c +4 -1
@@ -221,7 +221,10 @@ static int emit_pipe_imm_ggtt(u32 addr, u32 value, bool stall_only, u32 *dw,static u32 get_ppgtt_flag (struct xe_sched_job *job) { -return job->q->vm ?BIT (8 ) :0 ; +if (job->q->vm && !job->ggtt) +return BIT (8 ); + +return 0 ; }static int emit_copy_timestamp (struct xe_lrc *lrc,u32 *dw,int i)
drivers/gpu/drm/xe/xe_sched_job_types.h +2 -0
@@ -57,6 +57,8 @@ struct xe_sched_job {u32 migrate_flush_flags;/** @ring_ops_flush_tlb: The ring ops need to flush TLB before payload. */ bool ring_ops_flush_tlb; +/** @ggtt: mapped in ggtt. */ +bool ggtt;/** @ptrs: per instance pointers. */ struct xe_job_ptrs ptrs[]; };
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 186/189 drm/mediatek: Only touch DISP_REG_OVL_PITCH_MSB if AFBC is supported
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Golle <[email protected]>
[ Upstream commit f8d9b91739e1fb436447c437a346a36deb676a36 ]
Touching DISP_REG_OVL_PITCH_MSB leads to video overlay on MT2701, MT7623N and probably other older SoCs being broken.
Move setting up AFBC layer configuration into a separate function only being called on hardware which actually supports AFBC which restores the behavior as it was before commit c410fa9b07c3 ("drm/mediatek: Add AFBC support to Mediatek DRM driver") on non-AFBC hardware.
--- drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 57 +++++++++++++------------ 1 file changed, 29 insertions(+), 28 deletions(-)
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +29 -28
@@ -460,6 +460,29 @@ static unsigned int mtk_ovl_fmt_convert(struct mtk_disp_ovl *ovl, } } +static void mtk_ovl_afbc_layer_config (struct mtk_disp_ovl *ovl, +unsigned int idx, +struct mtk_plane_pending_state *pending, +struct cmdq_pkt *cmdq_pkt) +{ +unsigned int pitch_msb = pending->pitch >>16 ; +unsigned int hdr_pitch = pending->hdr_pitch; +unsigned int hdr_addr = pending->hdr_addr; + +if (pending->modifier !=DRM_FORMAT_MOD_LINEAR ) { +mtk_ddp_write_relaxed (cmdq_pkt, hdr_addr, &ovl->cmdq_reg, ovl->regs, +DISP_REG_OVL_HDR_ADDR (ovl, idx)); +mtk_ddp_write_relaxed (cmdq_pkt, +OVL_PITCH_MSB_2ND_SUBBUF | pitch_msb, + &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_PITCH_MSB (idx)); +mtk_ddp_write_relaxed (cmdq_pkt, hdr_pitch, &ovl->cmdq_reg, ovl->regs, +DISP_REG_OVL_HDR_PITCH (ovl, idx)); + }else { +mtk_ddp_write_relaxed (cmdq_pkt, pitch_msb, + &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_PITCH_MSB (idx)); + } +} +void mtk_ovl_layer_config (struct device *dev,unsigned int idx,struct mtk_plane_state *state,struct cmdq_pkt *cmdq_pkt)
@@ -467,9 +490,7 @@ void mtk_ovl_layer_config(struct device *dev, unsigned int idx,struct mtk_disp_ovl *ovl =dev_get_drvdata (dev);struct mtk_plane_pending_state *pending = &state->pending;unsigned int addr = pending->addr; -unsigned int hdr_addr = pending->hdr_addr; -unsigned int pitch = pending->pitch; -unsigned int hdr_pitch = pending->hdr_pitch; +unsigned int pitch_lsb = pending->pitch &GENMASK (15 ,0 );unsigned int fmt = pending->format;unsigned int rotation = pending->rotation;unsigned int offset = (pending->y <<16 ) | pending->x;
@@ -477,16 +498,6 @@ void mtk_ovl_layer_config(struct device *dev, unsigned int idx,unsigned int blend_mode = state->base.pixel_blend_mode;unsigned int ignore_pixel_alpha =0 ;unsigned int con; -bool is_afbc = pending->modifier !=DRM_FORMAT_MOD_LINEAR ; -union overlay_pitch { -struct split_pitch { -u16 lsb; -u16 msb; - } split_pitch; -u32 pitch; - } overlay_pitch; - - overlay_pitch.pitch = pitch;if (!pending->enable) {mtk_ovl_layer_off (dev, idx, cmdq_pkt);
@@ -532,11 +543,12 @@ void mtk_ovl_layer_config(struct device *dev, unsigned int idx, }if (ovl->data->supports_afbc) -mtk_ovl_set_afbc (ovl, cmdq_pkt, idx, is_afbc); +mtk_ovl_set_afbc (ovl, cmdq_pkt, idx, + pending->modifier !=DRM_FORMAT_MOD_LINEAR );mtk_ddp_write_relaxed (cmdq_pkt, con, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_CON (idx)); -mtk_ddp_write_relaxed (cmdq_pkt, overlay_pitch.split_pitch.lsb | ignore_pixel_alpha, +mtk_ddp_write_relaxed (cmdq_pkt, pitch_lsb | ignore_pixel_alpha, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_PITCH (idx));mtk_ddp_write_relaxed (cmdq_pkt, src_size, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_SRC_SIZE (idx));
@@ -545,19 +557,8 @@ void mtk_ovl_layer_config(struct device *dev, unsigned int idx,mtk_ddp_write_relaxed (cmdq_pkt, addr, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_ADDR (ovl, idx)); -if (is_afbc) { -mtk_ddp_write_relaxed (cmdq_pkt, hdr_addr, &ovl->cmdq_reg, ovl->regs, -DISP_REG_OVL_HDR_ADDR (ovl, idx)); -mtk_ddp_write_relaxed (cmdq_pkt, -OVL_PITCH_MSB_2ND_SUBBUF | overlay_pitch.split_pitch.msb, - &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_PITCH_MSB (idx)); -mtk_ddp_write_relaxed (cmdq_pkt, hdr_pitch, &ovl->cmdq_reg, ovl->regs, -DISP_REG_OVL_HDR_PITCH (ovl, idx)); - }else { -mtk_ddp_write_relaxed (cmdq_pkt, - overlay_pitch.split_pitch.msb, - &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_PITCH_MSB (idx)); - } +if (ovl->data->supports_afbc) +mtk_ovl_afbc_layer_config (ovl, idx, pending, cmdq_pkt);mtk_ovl_set_bit_depth (dev, idx, fmt, cmdq_pkt);mtk_ovl_layer_on (dev, idx, cmdq_pkt);
Signature · 1 line
2.39.5
Greg Kroah-Hartman
maintainerPATCH 187/189 io_uring: dont touch sqd->thread off tw add
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pavel Begunkov <[email protected]>
commit bd2703b42decebdcddf76e277ba76b4c4a142d73 upstream.
With IORING_SETUP_SQPOLL all requests are created by the SQPOLL task, which means that req->task should always match sqd->thread. Since accesses to sqd->thread should be separately protected, use req->task in io_req_normal_work_add() instead.
Note, in the eyes of io_req_normal_work_add(), the SQPOLL task struct is always pinned and alive, and sqd->thread can either be the task or NULL. It's only problematic if the compiler decides to reload the value after the null check, which is not so likely.
--- io_uring/io_uring.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
io_uring/io_uring.c +1 -4
@@ -1244,10 +1244,7 @@ static void io_req_normal_work_add(struc/* SQPOLL doesn't need the task_work added, it'll run it itself */ if (ctx->flags &IORING_SETUP_SQPOLL ) { -struct io_sq_data *sqd = ctx->sq_data; - -if (sqd->thread) -__set_notify_signal (sqd->thread); +__set_notify_signal (req->task);return ; }
Greg Kroah-Hartman
maintainerPATCH 188/189 iio: imu: inv_icm42600: fix spi burst write not supported
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jean-Baptiste Maneyrol <[email protected]>
commit c0f866de4ce447bca3191b9cefac60c4b36a7922 upstream.
Burst write with SPI is not working for all icm42600 chips. It was only used for setting user offsets with regmap_bulk_write.
Add specific SPI regmap config for using only single write with SPI.
--- drivers/iio/imu/inv_icm42600/inv_icm42600.h | 1 + drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 15 +++++++++++++++ drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c | 3 ++- 3 files changed, 18 insertions(+), 1 deletion(-)
drivers/iio/imu/inv_icm42600/inv_icm42600.h +1 -0
@@ -403,6 +403,7 @@ struct inv_icm42600_sensor_state {typedef int (*inv_icm42600_bus_setup )(struct inv_icm42600_state *);extern const struct regmap_config inv_icm42600_regmap_config; +extern const struct regmap_config inv_icm42600_spi_regmap_config;extern const struct dev_pm_ops inv_icm42600_pm_ops; const struct iio_mount_matrix *
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +15 -0
@@ -87,6 +87,21 @@ const struct regmap_config inv_icm42600_ };EXPORT_SYMBOL_NS_GPL (inv_icm42600_regmap_config,IIO_ICM42600 ); +/* define specific regmap for SPI not supporting burst write */ +const struct regmap_config inv_icm42600_spi_regmap_config = { + .name ="inv_icm42600" , + .reg_bits =8 , + .val_bits =8 , + .max_register =0x4FFF , + .ranges = inv_icm42600_regmap_ranges, + .num_ranges =ARRAY_SIZE (inv_icm42600_regmap_ranges), + .volatile_table = inv_icm42600_regmap_volatile_accesses, + .rd_noinc_table = inv_icm42600_regmap_rd_noinc_accesses, + .cache_type =REGCACHE_RBTREE , + .use_single_write = true, +}; +EXPORT_SYMBOL_NS_GPL (inv_icm42600_spi_regmap_config,IIO_ICM42600 ); +struct inv_icm42600_hw {uint8_t whoami;const char *name;
drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c +2 -1
@@ -59,7 +59,8 @@ static int inv_icm42600_probe(struct spireturn -EINVAL ; chip = (uintptr_t )match; - regmap =devm_regmap_init_spi (spi, &inv_icm42600_regmap_config); +/* use SPI specific regmap */ + regmap =devm_regmap_init_spi (spi, &inv_icm42600_spi_regmap_config);if (IS_ERR (regmap))return PTR_ERR (regmap);
Greg Kroah-Hartman
maintainerPATCH 189/189 netdev: prevent accessing NAPI instances from another namespace
In reply to Greg Kroah-Hartman6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jakub Kicinski <[email protected]>
commit d1cacd74776895f6435941f86a1130e58f6dd226 upstream.
The NAPI IDs were not fully exposed to user space prior to the netlink API, so they were never namespaced. The netlink API must ensure that at the very least NAPI instance belongs to the same netns as the owner of the genl sock.
napi_by_id() can become static now, but it needs to move because of dev_get_by_napi_id().
--- net/core/dev.c | 43 ++++++++++++++++++++++++++++++------------- net/core/dev.h | 3 ++- net/core/netdev-genl.c | 4 +--- 3 files changed, 33 insertions(+), 17 deletions(-)
net/core/dev.c +30 -13
@@ -753,6 +753,36 @@ int dev_fill_forward_path(const struct n }EXPORT_SYMBOL_GPL (dev_fill_forward_path); +/* must be called under rcu_read_lock(), as we dont take a reference */ +static struct napi_struct *napi_by_id (unsigned int napi_id) +{ +unsigned int hash = napi_id %HASH_SIZE (napi_hash); +struct napi_struct *napi; + +hlist_for_each_entry_rcu (napi, &napi_hash[hash], napi_hash_node) +if (napi->napi_id == napi_id) +return napi; + +return NULL ; +} + +/* must be called under rcu_read_lock(), as we dont take a reference */ +struct napi_struct *netdev_napi_by_id (struct net *net,unsigned int napi_id) +{ +struct napi_struct *napi; + + napi =napi_by_id (napi_id); +if (!napi) +return NULL ; + +if (WARN_ON_ONCE (!napi->dev)) +return NULL ; +if (!net_eq (net,dev_net (napi->dev))) +return NULL ; + +return napi; +} +/** * __dev_get_by_name - find a device by its name * @net: the applicable net namespace
@@ -6291,19 +6321,6 @@ bool napi_complete_done(struct napi_stru }EXPORT_SYMBOL (napi_complete_done); -/* must be called under rcu_read_lock(), as we dont take a reference */ -struct napi_struct *napi_by_id (unsigned int napi_id) -{ -unsigned int hash = napi_id %HASH_SIZE (napi_hash); -struct napi_struct *napi; - -hlist_for_each_entry_rcu (napi, &napi_hash[hash], napi_hash_node) -if (napi->napi_id == napi_id) -return napi; - -return NULL ; -} -static void skb_defer_free_flush (struct softnet_data *sd) {struct sk_buff *skb, *next;
net/core/dev.h +2 -1
@@ -22,6 +22,8 @@ struct sd_flow_limit {extern int netdev_flow_limit_table_len; +struct napi_struct *netdev_napi_by_id (struct net *net,unsigned int napi_id); +#ifdef CONFIG_PROC_FS int __init dev_proc_init (void );#else
@@ -146,7 +148,6 @@ void xdp_do_check_flushed(struct napi_ststatic inline void xdp_do_check_flushed (struct napi_struct *napi) { }#endif -struct napi_struct *napi_by_id (unsigned int napi_id);void kick_defer_list_purge (struct softnet_data *sd,unsigned int cpu);#define XMIT_RECURSION_LIMIT 8
net/core/netdev-genl.c +1 -3
@@ -164,8 +164,6 @@ netdev_nl_napi_fill_one(struct sk_buff *void *hdr;pid_t pid; -if (WARN_ON_ONCE (!napi->dev)) -return -EINVAL ;if (!(napi->dev->flags &IFF_UP ))return 0 ;
@@ -216,7 +214,7 @@ int netdev_nl_napi_get_doit(struct sk_burtnl_lock ();rcu_read_lock (); - napi =napi_by_id (napi_id); + napi =netdev_napi_by_id (genl_info_net (info), napi_id);if (napi) { err =netdev_nl_napi_fill_one (rsp, napi, info); }else {
AMD Ryzen 5 5600 6-Core Processor:
https://www.inet.se/produkt/5304697/amd-ryzen-5-5600-3-5-ghz-35mb on a
https://www.gigabyte.com/Motherboard/B550-AORUS-ELITE-V2-rev-12
https://www.inet.se/produkt/1903406/gigabyte-b550-aorus-elite-v2
motherboard :)
running Arch Linux with the testing repos enabled:
https://archlinux.org/ https://archboot.com/
https://wiki.archlinux.org/title/Arch_Testing_Team
Den ons 15 jan. 2025 kl 11:45 skrev Greg Kroah-Hartman <[email protected]>:
Quoted 808 lines
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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 Fri, 17 Jan 2025 10:34:58 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.10-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
-------------
Pseudo-Shortlog of commits:Greg Kroah-Hartman <[email protected]>
Linux 6.12.10-rc1Jakub Kicinski <[email protected]>
netdev: prevent accessing NAPI instances from another namespaceJean-Baptiste Maneyrol <[email protected]>
iio: imu:inv_icm42600: fix spi burst write not supportedPavel Begunkov <[email protected]>
io_uring: don't touch sqd->thread off tw addDaniel Golle <[email protected]>
drm/mediatek: Only touchDISP_REG_OVL_PITCH_MSBif AFBC is supportedUmesh Nerlige Ramappa <[email protected]>
xe/oa: Fix query mode of operation for OAR/OACAshutosh Dixit <[email protected]>
drm/xe/oa: Add input fence dependenciesAshutosh Dixit <[email protected]>
drm/xe/oa/uapi: Define and parse OA sync propertiesAshutosh Dixit <[email protected]>
drm/xe/oa: Separate batch submission from waiting for completionguanjing <[email protected]>
firewall: remove misplaced semicolon fromstm32_firewall_get_firewallPeter Geis <[email protected]>
arm64: dts: rockchip: add hevc power domain clock to rk3328Yu Kuai <[email protected]>
block, bfq: fixwaker_bfqqUAF afterbfq_split_bfqq()Daniil Stas <[email protected]>
hwmon: (drivetemp) Fix driver producing garbage data when SCSI errors occurJie Gan <[email protected]>
arm64: dts: qcom: sa8775p: fix the secure device bootup issueJesse Taube <[email protected]>
ARM: dts: imxrt1050: Fix clocks for mmcWei Fang <[email protected]>
arm64: dts: imx95: correct the address length ofnetcmix_blk_ctrlJens Axboe <[email protected]>
io_uring/eventfd: ensureio_eventfd_signal()defers another RCU periodUwe Kleine-König <[email protected]>
iio: adc: ad7124: Disable all channels at probe timeDavid Lechner <[email protected]>
iio: adc: ad7173: fix using shared static info structJoe Hattori <[email protected]>
iio: inkern: calliio_device_put()only on mapped devicesJoe Hattori <[email protected]>
iio: adc: at91: callinput_free_device()on allocatediio_devFabio Estevam <[email protected]>
iio: adc: ti-ads124s08: Use gpiod_set_value_cansleep()Jean-Baptiste Maneyrol <[email protected]>
iio: imu:inv_icm42600: fix timestamps after suspend if sensor is onCharles Han <[email protected]>
iio: adc: ti-ads1298: Add NULL check inads1298_initCarlos Song <[email protected]>
iio: gyro: fxas21002c: Fix missing data update in trigger handlerJavier Carrasco <[email protected]>
iio: adc: ti-ads1119: fix sample size in scan struct for triggered bufferJavier Carrasco <[email protected]>
iio: adc: ti-ads1119: fix information leak in triggered bufferJavier Carrasco <[email protected]>
iio: adc: ti-ads8688: fix information leak in triggered bufferJavier Carrasco <[email protected]>
iio: adc:rockchip_saradc: fix information leak in triggered bufferJavier Carrasco <[email protected]>
iio: imu: kmx61: fix information leak in triggered bufferJavier Carrasco <[email protected]>
iio: light: bh1745: fix information leak in triggered bufferJavier Carrasco <[email protected]>
iio: light: vcnl4035: fix information leak in triggered bufferJavier Carrasco <[email protected]>
iio: dummy:iio_simply_dummy_buffer: fix information leak in triggered bufferJavier Carrasco <[email protected]>
iio: pressure: zpa2326: fix information leak in triggered bufferGONG Ruiqi <[email protected]>
usb: typec: fix pm usage counter imbalance inucsi_ccg_sync_control()Xu Yang <[email protected]>
usb: host: xhci-plat: setskip_phy_initializationif software node hasXHCI_SKIP_PHY_INITpropertyIngo Rohloff <[email protected]>
usb: gadget: configfs: Ignore trailing LF for user strings to cdevAkash M <[email protected]>
usb: gadget:f_fs: RemoveWARN_ONinfunctionfs_bindDan Carpenter <[email protected]>
usb: typec: tcpm/tcpci_maxim: fix error code inmax_contaminant_read_resistance_kohm()Prashanth K <[email protected]>
usb: gadget:f_uac2: Fix incorrect setting of bNumEndpointsXu Yang <[email protected]>
usb: typec: tcpci: fix NULL pointer issue on shared irq caseJoe Hattori <[email protected]>
usb: chipidea:ci_hdrc_imx: decrement device's refcount in .remove() and in the error path of .probe()Takashi Iwai <[email protected]>
usb: gadget: midi2: Reverse-select at the right placeMa Ke <[email protected]>
usb: fix reference leak inusb_new_device()Kai-Heng Feng <[email protected]>
USB: core: Disable LPM only for non-suspended portsJun Yan <[email protected]>
USB: usblp: return error when setting unsupported protocolPrashanth K <[email protected]>
usb: dwc3-am62: Disable autosuspend during removeRick Edgecombe <[email protected]>
x86/fpu: Ensure shadow stack is active before "getting" registersLianqin Hu <[email protected]>
usb: gadget:u_serial: Disable ep before setting port to null to fix the crash caused by port being nullBen Wolsieffer <[email protected]>
serial: stm32: use port lock wrappers for break controlIlpo Järvinen <[email protected]>
tty: serial: 8250: Fix another runtime PM usage counter underflowRengarajan S <[email protected]>
misc: microchip: pci1xxxx: Resolve return code mismatch during GPIO set configRengarajan S <[email protected]>
misc: microchip: pci1xxxx: Resolve kernel panic during GPIO IRQ handlingLi Huafei <[email protected]>
topology: Keep the cpumask unchanged when printing cpumapAndré Draszik <[email protected]>
usb: dwc3: gadget: fix writing NYET thresholdJohan Hovold <[email protected]>
USB: serial: cp210x: add Phoenix Contact UPS DeviceLubomir Rintel <[email protected]>
usb-storage: Add max sectors quirk for Nokia 208Zicheng Qu <[email protected]>
staging: iio: ad9832: Correct phase range checkZicheng Qu <[email protected]>
staging: iio: ad9834: Correct phase range checkMichal Hrusecky <[email protected]>
USB: serial: option: add Neoway N723-EA supportChukun Pan <[email protected]>
USB: serial: option: add MeiG Smart SRM815Pavel Begunkov <[email protected]>
io_uring/sqpoll: zero sqd->thread on tctx errorsPavel Begunkov <[email protected]>
io_uring/timeout: fix multishot updatesMelissa Wen <[email protected]>
drm/amd/display: increaseMAX_SURFACESto the value supported by hwMelissa Wen <[email protected]>
drm/amd/display: fix page fault due to max surface definition mismatchMelissa Wen <[email protected]>
drm/amd/display: fix divide error in DM plane scale calcsZhu Lingshan <[email protected]>
drm/amdkfd:wq_releasesignalsdma_fenceonly when available[email protected] <[email protected]>
drm/amdkfd: fixed page fault when enable MES shader debuggerKun Liu <[email protected]>
drm/amd/pm: fix BUG: scheduling while atomicArunpravin Paneer Selvam <[email protected]>
drm/amdgpu: Add a lock when accessing the buddy trim functionHans de Goede <[email protected]>
ACPI: resource: Add Asus Vivobook X1504VAP to irq1_level_low_skip_override[]Hans de Goede <[email protected]>
ACPI: resource: Add TongFang GM5HG0A to irq1_edge_low_force_override[]Binbin Zhou <[email protected]>
gpio: loongson: Fix Loongson-2K2000 ACPI GPIO register offsetNam Cao <[email protected]>
riscv: kprobes: Fix incorrect address calculationNam Cao <[email protected]>
riscv: Fix sleeping in invalid context indie()Christian Brauner <[email protected]>
fs: killMNT_ONRBMeetakshi Setiya <[email protected]>
smb: client: sync the root session and superblock context passwords before automountingManivannan Sadhasivam <[email protected]>
arm64: dts: qcom: sa8775p: Fix the size of 'addr_space' regionsQiang Yu <[email protected]>
arm64: dts: qcom: x1e80100: Fix up BAR space size for PCIe6aAndrea Righi <[email protected]>
sched_ext: idle: Refresh idle masks during idle-to-idle transitionsChen Ridong <[email protected]>
cgroup/cpuset: remove kernfs active breakHonglei Wang <[email protected]>
sched_ext: switch class when preempted by higher priority schedulerChangwoo Min <[email protected]>
sched_ext: Replacerq_lock()toraw_spin_rq_lock()inscx_ops_bypass()Joe Hattori <[email protected]>
thermal: of: fix OF node leak inof_thermal_zone_find()Waiman Long <[email protected]>
cgroup/cpuset: Prevent leakage of isolated CPUs into sched domainsRoman Li <[email protected]>
drm/amd/display: Add check for granularity in dml ceil/floor helpersAlex Hung <[email protected]>
drm/amd/display: Remove unnecessary amdgpu_irq_get/putChun-Kuang Hu <[email protected]>
Revert "drm/mediatek: dsi: Correct calculation formula of PHY Timing"Mikhail Zaslonko <[email protected]>
btrfs: zlib: fixavail_inbytes for s390 zlib HW compression pathNamjae Jeon <[email protected]>
ksmbd: Implement new SMB3 POSIX typeMatthieu Baerts (NGI0) <[email protected]>
rds: sysctl: rds_tcp_{rcv,snd}buf: avoid using current->nsproxyMatthieu Baerts (NGI0) <[email protected]>
sctp: sysctl: plpmtud_probe_interval: avoid using current->nsproxyMatthieu Baerts (NGI0) <[email protected]>
sctp: sysctl: udp_port: avoid using current->nsproxyMatthieu Baerts (NGI0) <[email protected]>
sctp: sysctl: auth_enable: avoid using current->nsproxyMatthieu Baerts (NGI0) <[email protected]>
sctp: sysctl: rto_min/max: avoid using current->nsproxyMatthieu Baerts (NGI0) <[email protected]>
sctp: sysctl: cookie_hmac_alg: avoid using current->nsproxyMatthieu Baerts (NGI0) <[email protected]>
mptcp: sysctl: blackhole timeout: avoid using current->nsproxyMatthieu Baerts (NGI0) <[email protected]>
mptcp: sysctl: sched: avoid using current->nsproxyMatthieu Baerts (NGI0) <[email protected]>
mptcp: sysctl: avail sched: remove write accessMilan Broz <[email protected]>
dm-verity FEC: Fix RS FEC repair for roots unaligned to block size (take 2)Mikulas Patocka <[email protected]>
dm-ebs: don't set the flagDM_TARGET_PASSES_INTEGRITYMiklos Szeredi <[email protected]>
fs: fixis_mnt_ns_file()Amir Goldstein <[email protected]>
fs: relax assertions on failure to encode file handlesAlex Williamson <[email protected]>
vfio/pci: Fallback huge faults for unaligned pfnManivannan Sadhasivam <[email protected]>
scsi: ufs: qcom: Power off the PHY if it was already powered on inufs_qcom_power_up_sequence()Krister Johansen <[email protected]>
dm thin: makeget_first_thinuse rcu-safe list first functionAtish Patra <[email protected]>
drivers/perf: riscv: Return error for default caseAtish Patra <[email protected]>
drivers/perf: riscv: Fix Platform firmware event dataDavid Howells <[email protected]>
netfs: Fix read-retry for fs with no ->prepare_read()David Howells <[email protected]>
netfs: Fix kernel async DIOLucas De Marchi <[email protected]>
drm/xe: Fix tlb invalidation when wedgingClément Léger <[email protected]>
riscv: use local label names instead of global ones in assemblyClément Léger <[email protected]>
riscv: stacktrace: fix backtracing through exceptionsXu Lu <[email protected]>
riscv: mm: Fix the out of bound issue of vmemmap addressJavier Carrasco <[email protected]>
cpuidle: riscv-sbi: fix device node release in early exit offor_each_possible_cpuClément Léger <[email protected]>
riscv: module: removerelocation_headrel_entrymember allocationHe Wang <[email protected]>
ksmbd: fix unexpectedly changed path inksmbd_vfs_kern_path_lockedDavid E. Box <[email protected]>
platform/x86: intel/pmc: Fixioremap()of bad addressMaciej S. Szmigiero <[email protected]>
platform/x86/amd/pmc: Only disable IRQ1 wakeup where i8042 actually enabled itDavid Howells <[email protected]>
afs: Fix the maximum cell name lengthWentao Liang <[email protected]>
ksmbd: fix a missing return value check bugLiankun Yang <[email protected]>
drm/mediatek: Add return value check when reading DPCDKoichiro Den <[email protected]>
gpio: virtuser: fix handling of multipleconn_idsin lookup tableKoichiro Den <[email protected]>
gpio: virtuser: fix missing lookup table cleanupsAngeloGioacchino Del Regno <[email protected]>
drm/mediatek:mtk_dsi: Add registers to pdata to fix MT8186/MT8188Liankun Yang <[email protected]>
drm/mediatek: Fix mode valid issue for dpLiankun Yang <[email protected]>
drm/mediatek: Fix YCbCr422 color format issue for DPArnd Bergmann <[email protected]>
drm/mediatek: stop selecting foreign driversJason-JH.Lin <[email protected]>
drm/mediatek: Add support for 180-degree rotation in the display driverJason-JH.Lin <[email protected]>
drm/mediatek: Movemtk_crtc_finish_page_flip()toddp_cmdq_cb()Guoqing Jiang <[email protected]>
drm/mediatek: Set private->all_drm_private[i]->drm to NULL if mtk_drm_bind returns errChenguang Zhao <[email protected]>
net/mlx5: Fix variable not being completed when function returnsDan Carpenter <[email protected]>
rtase: Fix a check for error inrtase_alloc_msix()Parker Newman <[email protected]>
net: stmmac: dwmac-tegra: Read iommu stream id from device treeToke Høiland-Jørgensen <[email protected]>
sched:sch_cake: add bounds checks to host bulk flow fairness countsPablo Neira Ayuso <[email protected]>
netfilter: conntrack: clamp maximum hashtable size toINT_MAXPablo Neira Ayuso <[email protected]>
netfilter:nf_tables: imbalance in flowtable bindingLeo Yang <[email protected]>
mctp i3c: fix MCTP I3C driver multi-thread issueJie Wang <[email protected]>
net: hns3: fix kernel crash when 1588 is sent on HIP08 devicesHao Lan <[email protected]>
net: hns3: fixedhclge_fetch_pf_regaccesses bar space out of bounds issueJian Shen <[email protected]>
net: hns3: initializereset_timerbeforehclgevf_misc_irq_init()Jian Shen <[email protected]>
net: hns3: don't auto enable misc vectorHao Lan <[email protected]>
net: hns3: Resolved the issue that the debugfs query result is inconsistent.Hao Lan <[email protected]>
net: hns3: fix missing features due to dev->features configuration too earlyHao Lan <[email protected]>
net: hns3: fixed reset failure issues caused by the incorrect reset typeDaniel Borkmann <[email protected]>
tcp: Annotate data-race around sk->sk_mark in tcp_v4_send_resetChris Lu <[email protected]>
Bluetooth: btmtk: Fix failed to send func ctrl for MediaTek devices.Neeraj Sanjay Kale <[email protected]>
Bluetooth: btnxpuart: Fix driver sending truncated dataLuiz Augusto von Dentz <[email protected]>
Bluetooth: MGMT: Fix Add Device to responding before completingLuiz Augusto von Dentz <[email protected]>
Bluetooth:hci_sync: Fix not setting Random Address when requiredJakub Kicinski <[email protected]>
eth: gve: use appropriate helper to setxdp_featuresKuniyuki Iwashima <[email protected]>
ipvlan: Fix use-after-free inipvlan_get_iflink().Benjamin Coddington <[email protected]>
tls: Fixtls_sw_sendmsgerror handlingEn-Wei Wu <[email protected]>
igc: return early when failing to read EECD registerPrzemyslaw Korba <[email protected]>
ice: fix incorrect PHY settings for 100 GB/sArkadiusz Kubalewski <[email protected]>
ice: fix max values for dpll pin phase adjustJakub Kicinski <[email protected]>
net: don't dump Tx and uninitialized NAPIsAnumula Murali Mohan Reddy <[email protected]>
cxgb4: Avoid removal of uninserted tidMichael Chan <[email protected]>
bnxt_en: Fix DIM shutdownKalesh AP <[email protected]>
bnxt_en: Fix possible memory leak whenhwrm_req_replacefailsShannon Nelson <[email protected]>
pds_core: limit loop over fw name listQu Wenruo <[email protected]>
btrfs: avoid NULL pointer dereference if no valid extent treeJiawen Wu <[email protected]>
net: libwx: fix firmware mailbox abnormal returnEric Dumazet <[email protected]>
net_sched:cls_flow: validateTCA_FLOW_RSHIFTattributeZhongqiu Duan <[email protected]>
tcp/dccp: allow a connection whensk_max_ack_backlogis zeroAntonio Pastor <[email protected]>
net: 802: LLC+SNAP OID:PID lookup on start of skb dataKeisuke Nishimura <[email protected]>
ieee802154: ca8210: Add missing check for kfifo_alloc() in ca8210_probe()Li Zhijian <[email protected]>
selftests/alsa: Fix circular dependency involving global-timerChen-Yu Tsai <[email protected]>
ASoC: mediatek: disable buffer pre-allocationShuming Fan <[email protected]>
ASoC: rt722: add delay time to wait for the calibration procedureAmir Goldstein <[email protected]>
ovl: support encoding fid from inode with no aliasAmir Goldstein <[email protected]>
ovl: pass realinode toovl_encode_real_fh()instead of realdentryAmir Goldstein <[email protected]>
fuse: respectFOPEN_KEEP_CACHEon opendirYuezhang Mo <[email protected]>
exfat: fix the infinite loop in__exfat_free_cluster()Yuezhang Mo <[email protected]>
exfat: fix the new buffer was not zeroed before writingYuezhang Mo <[email protected]>
exfat: fix the infinite loop inexfat_readdir()David Howells <[email protected]>
netfs: Fix is-caching check in read-retryDavid Howells <[email protected]>
netfs: Fix the (non-)cancellation of copy when cache is temporarily disabledDavid Howells <[email protected]>
netfs: Fix ceph copy to cache on write-beginDavid Howells <[email protected]>
netfs: Fix missing barriers by usingclear_and_wake_up_bit()David Howells <[email protected]>
nfs: Fix oops innfs_netfs_init_request()when copying to cacheDavid Howells <[email protected]>
netfs: Fix enomem handling in buffered readsMing-Hung Tsai <[email protected]>
dm array: fix cursor index when skipping across block boundariesMing-Hung Tsai <[email protected]>
dm array: fix unreleased btree blocks on closing a faulty array cursorMing-Hung Tsai <[email protected]>
dm array: fix releasing a faulty array block twice indm_array_cursor_endLong Li <[email protected]>
iomap: fix zero padding data issue in concurrent append writesLong Li <[email protected]>
iomap: pass byte granular end position toiomap_add_to_ioendPankaj Raghav <[email protected]>
fs/writeback: convertwbc_account_cgroup_ownerto take a folioZhang Yi <[email protected]>
jbd2: flush filesystem device before updating tail sequenceZhang Yi <[email protected]>
jbd2: increase IO priority for writing revoke records-------------
Diffstat:
Documentation/admin-guide/cgroup-v2.rst | 2 +- Makefile | 4 +- arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi | 2 +- arch/arm64/boot/dts/freescale/imx95.dtsi | 2 +- arch/arm64/boot/dts/qcom/sa8775p.dtsi | 5 +- arch/arm64/boot/dts/qcom/x1e80100.dtsi | 2 +- arch/arm64/boot/dts/rockchip/rk3328.dtsi | 1 + arch/riscv/include/asm/page.h | 1 + arch/riscv/include/asm/pgtable.h | 2 +- arch/riscv/include/asm/sbi.h | 1 + arch/riscv/kernel/entry.S | 21 +- arch/riscv/kernel/module.c | 18 +- arch/riscv/kernel/probes/kprobes.c | 2 +- arch/riscv/kernel/stacktrace.c | 4 +- arch/riscv/kernel/traps.c | 6 +- arch/riscv/mm/init.c | 17 +- arch/x86/kernel/fpu/regset.c | 3 +- block/bfq-iosched.c | 12 +- drivers/acpi/resource.c | 18 ++ drivers/base/topology.c | 24 +- drivers/bluetooth/btmtk.c | 7 + drivers/bluetooth/btnxpuart.c | 1 + drivers/cpuidle/cpuidle-riscv-sbi.c | 4 +- drivers/gpio/gpio-loongson-64bit.c | 6 +- drivers/gpio/gpio-virtuser.c | 44 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_debug.c | 17 ++ drivers/gpu/drm/amd/amdkfd/kfd_process.c | 3 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 35 +-- drivers/gpu/drm/amd/display/dc/core/dc.c | 2 +- drivers/gpu/drm/amd/display/dc/core/dc_state.c | 8 +- drivers/gpu/drm/amd/display/dc/dc.h | 4 +- drivers/gpu/drm/amd/display/dc/dc_stream.h | 2 +- drivers/gpu/drm/amd/display/dc/dc_types.h | 1 - .../gpu/drm/amd/display/dc/dml/dml_inline_defs.h | 8 + .../drm/amd/display/dc/dml2/dml2_mall_phantom.c | 2 +- drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h | 2 + drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 12 +- .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 1 + .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 1 + drivers/gpu/drm/mediatek/Kconfig | 5 - drivers/gpu/drm/mediatek/mtk_crtc.c | 25 +- drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 69 +++--- drivers/gpu/drm/mediatek/mtk_dp.c | 46 ++-- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 2 + drivers/gpu/drm/mediatek/mtk_dsi.c | 49 ++-- drivers/gpu/drm/xe/xe_gt.c | 8 +- drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 4 +- drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h | 3 +- drivers/gpu/drm/xe/xe_oa.c | 265 ++++++++++++++------- drivers/gpu/drm/xe/xe_oa_types.h | 6 + drivers/gpu/drm/xe/xe_query.c | 2 +- drivers/gpu/drm/xe/xe_ring_ops.c | 5 +- drivers/gpu/drm/xe/xe_sched_job_types.h | 2 + drivers/hwmon/drivetemp.c | 8 +- drivers/iio/adc/ad7124.c | 3 + drivers/iio/adc/ad7173.c | 10 +- drivers/iio/adc/at91_adc.c | 2 +- drivers/iio/adc/rockchip_saradc.c | 2 + drivers/iio/adc/ti-ads1119.c | 4 +- drivers/iio/adc/ti-ads124s08.c | 4 +- drivers/iio/adc/ti-ads1298.c | 2 + drivers/iio/adc/ti-ads8688.c | 2 +- drivers/iio/dummy/iio_simple_dummy_buffer.c | 2 +- drivers/iio/gyro/fxas21002c_core.c | 11 +- drivers/iio/imu/inv_icm42600/inv_icm42600.h | 1 + drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 22 +- drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c | 3 +- drivers/iio/imu/kmx61.c | 2 +- drivers/iio/inkern.c | 2 +- drivers/iio/light/bh1745.c | 2 + drivers/iio/light/vcnl4035.c | 2 +- drivers/iio/pressure/zpa2326.c | 2 + drivers/md/dm-ebs-target.c | 2 +- drivers/md/dm-thin.c | 5 +- drivers/md/dm-verity-fec.c | 40 ++-- drivers/md/persistent-data/dm-array.c | 19 +- drivers/misc/mchp_pci1xxxx/mchp_pci1xxxx_gpio.c | 4 +- drivers/net/ethernet/amd/pds_core/devlink.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 38 ++- drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 3 +- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 5 +- drivers/net/ethernet/google/gve/gve_main.c | 14 +- drivers/net/ethernet/hisilicon/hns3/hnae3.h | 3 - drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c | 96 +++----- drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 1 - .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 45 +++- .../net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c | 3 + .../ethernet/hisilicon/hns3/hns3pf/hclge_regs.c | 9 +- .../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 41 +++- .../ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c | 9 +- drivers/net/ethernet/intel/ice/ice_adminq_cmd.h | 2 + drivers/net/ethernet/intel/ice/ice_dpll.c | 35 ++- drivers/net/ethernet/intel/ice/ice_ptp_consts.h | 4 +- drivers/net/ethernet/intel/igc/igc_base.c | 6 + drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 1 + drivers/net/ethernet/realtek/rtase/rtase_main.c | 2 +- drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c | 14 +- drivers/net/ethernet/wangxun/libwx/wx_hw.c | 24 +- drivers/net/ieee802154/ca8210.c | 6 +- drivers/net/mctp/mctp-i3c.c | 4 + drivers/perf/riscv_pmu_sbi.c | 17 +- drivers/platform/x86/amd/pmc/pmc.c | 8 +- drivers/platform/x86/intel/pmc/core_ssram.c | 4 + drivers/staging/iio/frequency/ad9832.c | 2 +- drivers/staging/iio/frequency/ad9834.c | 2 +- drivers/thermal/thermal_of.c | 1 + drivers/tty/serial/8250/8250_core.c | 3 + drivers/tty/serial/stm32-usart.c | 4 +- drivers/ufs/core/ufshcd-priv.h | 6 - drivers/ufs/core/ufshcd.c | 1 - drivers/ufs/host/ufs-qcom.c | 13 +- drivers/usb/chipidea/ci_hdrc_imx.c | 25 +- drivers/usb/class/usblp.c | 7 +- drivers/usb/core/hub.c | 6 +- drivers/usb/core/port.c | 7 +- drivers/usb/dwc3/core.h | 1 + drivers/usb/dwc3/dwc3-am62.c | 1 + drivers/usb/dwc3/gadget.c | 4 +- drivers/usb/gadget/Kconfig | 4 +- drivers/usb/gadget/configfs.c | 6 +- drivers/usb/gadget/function/f_fs.c | 2 +- drivers/usb/gadget/function/f_uac2.c | 1 + drivers/usb/gadget/function/u_serial.c | 8 +- drivers/usb/host/xhci-plat.c | 3 +- drivers/usb/serial/cp210x.c | 1 + drivers/usb/serial/option.c | 4 +- drivers/usb/storage/unusual_devs.h | 7 + drivers/usb/typec/tcpm/maxim_contaminant.c | 4 +- drivers/usb/typec/tcpm/tcpci.c | 25 +- drivers/usb/typec/ucsi/ucsi_ccg.c | 4 +- drivers/vfio/pci/vfio_pci_core.c | 17 +- fs/afs/afs.h | 2 +- fs/afs/afs_vl.h | 1 + fs/afs/vl_alias.c | 8 +- fs/afs/vlclient.c | 2 +- fs/btrfs/extent_io.c | 7 +- fs/btrfs/inode.c | 2 +- fs/btrfs/scrub.c | 4 + fs/btrfs/zlib.c | 4 +- fs/buffer.c | 4 +- fs/exfat/dir.c | 3 +- fs/exfat/fatent.c | 10 + fs/exfat/file.c | 6 + fs/ext4/page-io.c | 2 +- fs/f2fs/data.c | 9 +- fs/fs-writeback.c | 8 +- fs/fuse/dir.c | 2 + fs/iomap/buffered-io.c | 68 +++++- fs/jbd2/commit.c | 4 +- fs/jbd2/revoke.c | 2 +- fs/mount.h | 15 +- fs/mpage.c | 2 +- fs/namespace.c | 24 +- fs/netfs/buffered_read.c | 28 ++- fs/netfs/direct_write.c | 7 +- fs/netfs/read_collect.c | 9 +- fs/netfs/read_pgpriv2.c | 4 + fs/netfs/read_retry.c | 5 +- fs/netfs/write_collect.c | 9 +- fs/nfs/fscache.c | 9 +- fs/notify/fdinfo.c | 4 +- fs/overlayfs/copy_up.c | 16 +- fs/overlayfs/export.c | 49 ++-- fs/overlayfs/namei.c | 4 +- fs/overlayfs/overlayfs.h | 2 +- fs/smb/client/namespace.c | 19 +- fs/smb/server/smb2pdu.c | 43 ++++ fs/smb/server/smb2pdu.h | 10 + fs/smb/server/vfs.c | 3 +- include/linux/bus/stm32_firewall_device.h | 2 +- include/linux/iomap.h | 2 +- include/linux/mount.h | 3 +- include/linux/netfs.h | 1 - include/linux/writeback.h | 4 +- include/net/inet_connection_sock.h | 2 +- include/uapi/drm/xe_drm.h | 17 ++ include/ufs/ufshcd.h | 2 - io_uring/eventfd.c | 2 +- io_uring/io_uring.c | 5 +- io_uring/sqpoll.c | 6 +- io_uring/timeout.c | 4 +- kernel/cgroup/cpuset.c | 35 +-- kernel/sched/ext.c | 76 ++++-- kernel/sched/ext.h | 8 +- kernel/sched/idle.c | 5 +- net/802/psnap.c | 4 +- net/bluetooth/hci_sync.c | 11 +- net/bluetooth/mgmt.c | 38 ++- net/bluetooth/rfcomm/tty.c | 4 +- net/core/dev.c | 43 +++- net/core/dev.h | 3 +- net/core/link_watch.c | 10 +- net/core/netdev-genl.c | 9 +- net/ipv4/tcp_ipv4.c | 2 +- net/mptcp/ctrl.c | 17 +- net/netfilter/nf_conntrack_core.c | 5 +- net/netfilter/nf_tables_api.c | 15 +- net/rds/tcp.c | 39 ++- net/sched/cls_flow.c | 3 +- net/sched/sch_cake.c | 140 ++++++----- net/sctp/sysctl.c | 14 +- net/tls/tls_sw.c | 2 +- sound/soc/codecs/rt722-sdca.c | 7 +- .../soc/mediatek/common/mtk-afe-platform-driver.c | 4 +- tools/testing/selftests/alsa/Makefile | 2 +- tools/testing/selftests/cgroup/test_cpuset_prs.sh | 33 +-- 207 files changed, 1626 insertions(+), 884 deletions(-)
Quoted 4 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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.
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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 Fri, 17 Jan 2025 10:34:58 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.10-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
All tests passing for Tegra ...
Test results for stable-v6.12:
10 builds: 10 pass, 0 fail
26 boots: 26 pass, 0 fail
116 tests: 116 pass, 0 failLinux version: 6.12.10-rc1-gd056ad259f16
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra194-p2972-0000, tegra194-p3509-0000+p3668-0000,
tegra20-ventana, tegra210-p2371-2180,
tegra210-p3450-0000, tegra30-cardhu-a04Jon
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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 Fri, 17 Jan 2025 10:34:58 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.10-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
Tested rc1 against the Fedora build system (aarch64, ppc64le, s390x, x86_64), and boot tested x86_64. No regressions noted.
Hi Greg
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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 Fri, 17 Jan 2025 10:34:58 +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.10-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
6.12.10-rc1 tested.
Build successfully completed.
Boot successfully completed.
No dmesg regressions.
Video output normal.
Sound output normal.
Lenovo ThinkPad X1 Carbon Gen10(Intel i7-1260P(x86_64) arch linux)
[ 0.000000] Linux version 6.12.10-rc1rv
(takeshi@ThinkPadX1Gen10J0764) (gcc (GCC) 14.2.1 20240910, GNU ld (GNU Binutils) 2.43.1) #1 SMP PREEMPT_DYNAMIC Thu Jan 16 05:32:18 JST 2025
Thanks
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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 Fri, 17 Jan 2025 10:34:58 +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.10-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
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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 Fri, 17 Jan 2025 10:34:58 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.10-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
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:
Signature · 1 line
Florian
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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 Fri, 17 Jan 2025 10:34:58 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.10-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
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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 Fri, 17 Jan 2025 10:34:58 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.10-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
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
NOTE:
---
The following build warnings noticed on x86
vmlinux.o: warning: objtool: __static_call_update_early+0x33: call to serialize() leaves .noinstr.text section
## Build
* kernel: 6.12.10-rc1
* git: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
* git commit: d056ad259f16555e7fe0d129820d01fa6b6c468c
* git describe: v6.12.9-190-gd056ad259f16
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.12.y/build/v6.12.9-190-gd056ad259f16
## Test Regressions (compared to v6.12-4-g11741096a22c)
## Metric Regressions (compared to v6.12-4-g11741096a22c)
* x86_64, build
- clang-19-x86_64_defconfig-warnings
-- https://storage.tuxsuite.com/public/linaro/lkft/builds/2rf9vPfX8BaANy9mq6s2tWqaVJ1/
## Test Fixes (compared to v6.12-4-g11741096a22c)
## Metric Fixes (compared to v6.12-4-g11741096a22c)
## Test result summary
total: 97783, pass: 78194, fail: 4177, skip: 15342, xfail: 70
## Build Summary
* arc: 6 total, 5 passed, 1 failed
* arm: 143 total, 137 passed, 6 failed
* arm64: 58 total, 56 passed, 2 failed
* i386: 22 total, 19 passed, 3 failed
* mips: 38 total, 33 passed, 5 failed
* parisc: 5 total, 3 passed, 2 failed
* powerpc: 44 total, 40 passed, 4 failed
* riscv: 27 total, 24 passed, 3 failed
* s390: 26 total, 22 passed, 4 failed
* sh: 6 total, 5 passed, 1 failed
* sparc: 5 total, 3 passed, 2 failed
* x86_64: 50 total, 49 passed, 1 failed
## Test suites summary
* boot
* commands
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-efivarfs
* kselftest-exec
* kselftest-filesystems
* kselftest-filesystems-binderfs
* kselftest-filesystems-epoll
* kselftest-firmware
* kselftest-fpu
* kselftest-ftrace
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-kcmp
* kselftest-kvm
* kselftest-membarrier
* kselftest-memfd
* kselftest-mincore
* kselftest-mqueue
* kselftest-net
* kselftest-net-mptcp
* kselftest-openat2
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-rust
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-tc-testing
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user_events
* kselftest-vDSO
* kselftest-x86
* kunit
* kvm-unit-tests
* libgpiod
* libhugetlbfs
* log-parser-boot
* log-parser-build-clang
* log-parser-build-gcc
* log-parser-test
* ltp-capability
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-hugetlb
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-pty
* ltp-sched
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* perf
* rcutorture
--
Linaro LKFT
https://lkft.linaro.org
Am 15.01.2025 um 11:34 schrieb Greg Kroah-Hartman:
Quoted 4 lines
This is the start of the stable review cycle for the 6.12.10 release. There are 189 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.
Builds, boots and works on my 2-socket Ivy Bridge Xeon E5-2697 v2 server. No dmesg oddities or regressions found.
Beste Grüße,
Peter Schneider
Signature · 8 lines
Climb the mountain not to plant your flag, but to embrace the challenge, enjoy the air and behold the view. Climb it so you can see the world, not so the world can see you. -- David McCullough Jr. OpenPGP: 0xA3828BD796CCE11A8CADE8866E3A92C92C3FF244 Download: https://www.peters-netzplatz.de/download/pschneider1968_pub.asc https://keys.mailvelope.com/pks/lookup?op=get&[email protected] https://keys.mailvelope.com/pks/lookup?op=get&[email protected]
The kernel builds fine for v6.12.10-rc1 on x86 and arm64 Azure VM.
Thanks,
Hardik