6.11.8-rc1 review
Subsystems (2)
Greg Kroah-Hartman
maintainerPATCH 154/184 mm/thp: fix deferred split unqueue naming and locking
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hugh Dickins <[email protected]>
commit f8f931bba0f92052cf842b7e30917b1afcc77d5a upstream.
Recent changes are putting more pressure on THP deferred split queues:
under load revealing long-standing races, causing list_del corruptions, "Bad page state"s and worse (I keep BUGs in both of those, so usually don't get to see how badly they end up without). The relevant recent changes being 6.8's mTHP, 6.10's mTHP swapout, and 6.12's mTHP swapin, improved swap allocation, and underused THP splitting.
Before fixing locking: rename misleading folio_undo_large_rmappable(), which does not undo large_rmappable, to folio_unqueue_deferred_split(), which is what it does. But that and its out-of-line __callee are mm internals of very limited usability: add comment and WARN_ON_ONCEs to check usage; and return a bool to say if a deferred split was unqueued, which can then be used in WARN_ON_ONCEs around safety checks (sparing callers the arcane conditionals in __folio_unqueue_deferred_split()).
Just omit the folio_unqueue_deferred_split() from free_unref_folios(), all of whose callers now call it beforehand (and if any forget then bad_page() will tell) - except for its caller put_pages_list(), which itself no longer has any callers (and will be deleted separately).
Swapout: mem_cgroup_swapout() has been resetting folio->memcg_data 0 without checking and unqueueing a THP folio from deferred split list; which is unfortunate, since the split_queue_lock depends on the memcg (when memcg is enabled); so swapout has been unqueueing such THPs later, when freeing the folio, using the pgdat's lock instead: potentially corrupting the memcg's list. __remove_mapping() has frozen refcount to 0 here, so no problem with calling folio_unqueue_deferred_split() before resetting memcg_data.
That goes back to 5.4 commit 87eaceb3faa5 ("mm: thp: make deferred split shrinker memcg aware"): which included a check on swapcache before adding to deferred queue, but no check on deferred queue before adding THP to swapcache. That worked fine with the usual sequence of events in reclaim (though there were a couple of rare ways in which a THP on deferred queue could have been swapped out), but 6.12 commit dafff3f4c850 ("mm: split underused THPs") avoids splitting underused THPs in reclaim, which makes swapcache THPs on deferred queue commonplace.
Keep the check on swapcache before adding to deferred queue? Yes: it is no longer essential, but preserves the existing behaviour, and is likely to be a worthwhile optimization (vmstat showed much more traffic on the queue under swapping load if the check was removed); update its comment.
Memcg-v1 move (deprecated): mem_cgroup_move_account() has been changing folio->memcg_data without checking and unqueueing a THP folio from the deferred list, sometimes corrupting "from" memcg's list, like swapout. Refcount is non-zero here, so folio_unqueue_deferred_split() can only be used in a WARN_ON_ONCE to validate the fix, which must be done earlier:mem_cgroup_move_charge_pte_range() first try to split the THP (splitting of course unqueues), or skip it if that fails. Not ideal, but moving charge has been requested, and khugepaged should repair the THP later:
nobody wants new custom unqueueing code just for this deprecated case.
The 87eaceb3faa5 commit did have the code to move from one deferred list to another (but was not conscious of its unsafety while refcount non-0); but that was removed by 5.6 commit fac0516b5534 ("mm: thp: don't need care deferred split queue in memcg charge move path"), which argued that the existence of a PMD mapping guarantees that the THP cannot be on a deferred list. As above, false in rare cases, and now commonly false.
Backport to 6.11 should be straightforward. Earlier backports must take care that other _deferred_list fixes and dependencies are included. There is not a strong case for backports, but they can fix cornercases.
--- mm/huge_memory.c | 35 ++++++++++++++++++++++++++--------- mm/internal.h | 10 +++++----- mm/memcontrol-v1.c | 25 +++++++++++++++++++++++++ mm/memcontrol.c | 8 +++++--- mm/migrate.c | 4 ++-- mm/page_alloc.c | 1 - mm/swap.c | 4 ++-- mm/vmscan.c | 4 ++-- 8 files changed, 67 insertions(+), 24 deletions(-)
mm/huge_memory.c +26 -9
@@ -3268,18 +3268,38 @@ out:return ret; } -void __folio_undo_large_rmappable (struct folio *folio) +/* +* __folio_unqueue_deferred_split() is not to be called directly: +* the folio_unqueue_deferred_split() inline wrapper in mm/internal.h +* limits its calls to those folios which may have a _deferred_list for +* queueing THP splits, and that list is (racily observed to be) non-empty. +* +* It is unsafe to call folio_unqueue_deferred_split() until folio refcount is +* zero: because even when split_queue_lock is held, a non-empty _deferred_list +* might be in use on deferred_split_scan()'s unlocked on-stack list. +* +* If memory cgroups are enabled, split_queue_lock is in the mem_cgroup: it is +* therefore important to unqueue deferred split before changing folio memcg. +*/ +bool __folio_unqueue_deferred_split (struct folio *folio) {struct deferred_split *ds_queue;unsigned long flags; +bool unqueued = false; + +WARN_ON_ONCE (folio_ref_count (folio)); +WARN_ON_ONCE (!mem_cgroup_disabled () && !folio_memcg (folio)); ds_queue =get_deferred_split_queue (folio);spin_lock_irqsave (&ds_queue->split_queue_lock, flags);if (!list_empty (&folio->_deferred_list)) { ds_queue->split_queue_len--;list_del_init (&folio->_deferred_list); + unqueued = true; }spin_unlock_irqrestore (&ds_queue->split_queue_lock, flags); + +return unqueued;/* useful for debug warnings */ }void deferred_split_folio (struct folio *folio)
@@ -3298,14 +3318,11 @@ void deferred_split_folio(struct folio *return ;/* -* The try_to_unmap() in page reclaim path might reach here too, -* this may cause a race condition to corrupt deferred split queue. -* And, if page reclaim is already handling the same folio, it is -* unnecessary to handle it again in shrinker. -* -* Check the swapcache flag to determine if the folio is being -* handled by page reclaim since THP swap would add the folio into -* swap cache before calling try_to_unmap(). +* Exclude swapcache: originally to avoid a corrupt deferred split +* queue. Nowadays that is fully prevented by mem_cgroup_swapout(); +* but if page reclaim is already handling the same folio, it is +* unnecessary to handle it again in the shrinker, so excluding +* swapcache here may still be a useful optimization. */ if (folio_test_swapcache (folio))return ;
mm/internal.h +5 -5
@@ -631,11 +631,11 @@ static inline void folio_set_order(struc#endif } -void __folio_undo_large_rmappable (struct folio *folio); -static inline void folio_undo_large_rmappable (struct folio *folio) +bool __folio_unqueue_deferred_split (struct folio *folio); +static inline bool folio_unqueue_deferred_split (struct folio *folio) {if (folio_order (folio) <=1 || !folio_test_large_rmappable (folio)) -return ; +return false;/* * At this point, there is no one trying to add the folio to
@@ -643,9 +643,9 @@ static inline void folio_undo_large_rmap* to check without acquiring the split_queue_lock. */ if (data_race (list_empty (&folio->_deferred_list))) -return ; +return false; -__folio_undo_large_rmappable (folio); +return __folio_unqueue_deferred_split (folio); }static inline struct folio *page_rmappable_folio (struct page *page)
mm/memcontrol-v1.c +25 -0
@@ -845,6 +845,8 @@ static int mem_cgroup_move_account(struccss_get (&to->css);css_put (&from->css); +/* Warning should never happen, so don't worry about refcount non-0 */ +WARN_ON_ONCE (folio_unqueue_deferred_split (folio)); folio->memcg_data = (unsigned long )to;__folio_memcg_unlock (from);
@@ -1214,7 +1216,9 @@ static int mem_cgroup_move_charge_pte_raenum mc_target_type target_type;union mc_target target;struct folio *folio; +bool tried_split_before = false; +retry_pmd: ptl =pmd_trans_huge_lock (pmd, vma);if (ptl) {if (mc.precharge <HPAGE_PMD_NR ) {
@@ -1224,6 +1228,27 @@ static int mem_cgroup_move_charge_pte_ra target_type =get_mctgt_type_thp (vma, addr, *pmd, &target);if (target_type ==MC_TARGET_PAGE ) { folio = target.folio; +/* +* Deferred split queue locking depends on memcg, +* and unqueue is unsafe unless folio refcount is 0: +* split or skip if on the queue? first try to split. +*/ +if (!list_empty (&folio->_deferred_list)) { +spin_unlock (ptl); +if (!tried_split_before) +split_folio (folio); +folio_unlock (folio); +folio_put (folio); +if (tried_split_before) +return 0 ; + tried_split_before = true; + goto retry_pmd; + } +/* +* So long as that pmd lock is held, the folio cannot +* be racily added to the _deferred_list, because +* __folio_remove_rmap() will find !partially_mapped. +*/ if (folio_isolate_lru (folio)) {if (!mem_cgroup_move_account (folio, true, mc.from, mc.to)) {
mm/memcontrol.c +5 -3
@@ -4604,9 +4604,6 @@ static void uncharge_folio(struct foliostruct obj_cgroup *objcg;VM_BUG_ON_FOLIO (folio_test_lru (folio), folio); -VM_BUG_ON_FOLIO (folio_order (folio) >1 && - !folio_test_hugetlb (folio) && - !list_empty (&folio->_deferred_list), folio);/* * Nobody should be changing or seriously looking at
@@ -4653,6 +4650,7 @@ static void uncharge_folio(struct folio ug->nr_memory += nr_pages; ug->pgpgout++; +WARN_ON_ONCE (folio_unqueue_deferred_split (folio)); folio->memcg_data =0 ; }
@@ -4769,6 +4767,9 @@ void mem_cgroup_migrate(struct folio *ol/* Transfer the charge and the css ref */ commit_charge (new, memcg); + +/* Warning should never happen, so don't worry about refcount non-0 */ +WARN_ON_ONCE (folio_unqueue_deferred_split (old)); old->memcg_data =0 ; }
@@ -4955,6 +4956,7 @@ void mem_cgroup_swapout(struct folio *foVM_BUG_ON_FOLIO (oldid, folio);mod_memcg_state (swap_memcg,MEMCG_SWAP , nr_entries); +folio_unqueue_deferred_split (folio); folio->memcg_data =0 ;if (!mem_cgroup_is_root (memcg))
mm/migrate.c +2 -2
@@ -415,7 +415,7 @@ static int __folio_migrate_mapping(struc folio_test_large_rmappable(folio)) {if (!folio_ref_freeze (folio, expected_count))return -EAGAIN ; -folio_undo_large_rmappable (folio); +folio_unqueue_deferred_split (folio);folio_ref_unfreeze (folio, expected_count); }
@@ -438,7 +438,7 @@ static int __folio_migrate_mapping(struc }/* Take off deferred split queue while frozen and memcg set */ -folio_undo_large_rmappable (folio); +folio_unqueue_deferred_split (folio);/* * Now we know that no one else is looking at the folio:
mm/page_alloc.c +0 -1
@@ -2663,7 +2663,6 @@ void free_unref_folios(struct folio_batcunsigned long pfn =folio_pfn (folio);unsigned int order =folio_order (folio); -folio_undo_large_rmappable (folio);if (!free_pages_prepare (&folio->page, order))continue ;/*
mm/swap.c +2 -2
@@ -123,7 +123,7 @@ void __folio_put(struct folio *folio) }page_cache_release (folio); -folio_undo_large_rmappable (folio); +folio_unqueue_deferred_split (folio);mem_cgroup_uncharge (folio);free_unref_page (&folio->page,folio_order (folio)); }
@@ -1020,7 +1020,7 @@ void folios_put_refs(struct folio_batchfree_huge_folio (folio);continue ; } -folio_undo_large_rmappable (folio); +folio_unqueue_deferred_split (folio);__page_cache_release (folio, &lruvec, &flags);if (j != i)
mm/vmscan.c +2 -2
@@ -1462,7 +1462,7 @@ free_it:*/ nr_reclaimed += nr_pages; -folio_undo_large_rmappable (folio); +folio_unqueue_deferred_split (folio);if (folio_batch_add (&free_folios, folio) ==0 ) {mem_cgroup_uncharge_folios (&free_folios);try_to_unmap_flush ();
@@ -1849,7 +1849,7 @@ static unsigned int move_folios_to_lru(sif (unlikely (folio_put_testzero (folio))) {__folio_clear_lru_flags (folio); -folio_undo_large_rmappable (folio); +folio_unqueue_deferred_split (folio);if (folio_batch_add (&free_folios, folio) ==0 ) {spin_unlock_irq (&lruvec->lru_lock);mem_cgroup_uncharge_folios (&free_folios);
Greg Kroah-Hartman
maintainerPATCH 155/184 thunderbolt: Add only on-board retimers when !CONFIG_USB4_DEBUGFS_MARGINING
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
commit bf791751162ac875a9439426d13f8d4d18151549 upstream.
Normally there is no need to enumerate retimers on the other side of the cable. This is only needed in special cases where user wants to run receiver lane margining against the downstream facing port of a retimer. Furthermore this might confuse the userspace tools such as fwupd because it cannot read the information it expects from these retimers.
Fix this by changing the retimer enumeration code to add only on-board retimers when CONFIG_USB4_DEBUGFS_MARGINING is not enabled.
--- drivers/thunderbolt/retimer.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/thunderbolt/retimer.c +2 -0
@@ -532,6 +532,8 @@ int tb_retimer_scan(struct tb_port *port } ret =0 ; +if (!IS_ENABLED (CONFIG_USB4_DEBUGFS_MARGINING )) + max =min (last_idx, max);/* Add retimers if they do not exist already */ for (i =1 ; i <= max; i++) {
Greg Kroah-Hartman
maintainerPATCH 156/184 usb: musb: sunxi: Fix accessing an released usb phy
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zijun Hu <[email protected]>
commit 498dbd9aea205db9da674994b74c7bf8e18448bd upstream.
Commit 6ed05c68cbca ("usb: musb: sunxi: Explicitly release USB PHY on exit") will cause that usb phy @glue->xceiv is accessed after released.
1) register platform driver @sunxi_musb_driver
// get the usb phy @glue->xceivsunxi_musb_probe() -> devm_usb_get_phy().
2) register and unregister platform driver @musb_driver musb_probe() -> sunxi_musb_init()
use the phy here
//the phy is released heremusb_remove() -> sunxi_musb_exit() -> devm_usb_put_phy()
3) register @musb_driver againmusb_probe() -> sunxi_musb_init()
use the phy here but the phy has been released at 2).
...
Fixed by reverting the commit, namely, removing devm_usb_put_phy() from sunxi_musb_exit().
--- drivers/usb/musb/sunxi.c | 2 -- 1 file changed, 2 deletions(-)
drivers/usb/musb/sunxi.c +0 -2
@@ -293,8 +293,6 @@ static int sunxi_musb_exit(struct musb *if (test_bit (SUNXI_MUSB_FL_HAS_SRAM , &glue->flags))sunxi_sram_release (musb->controller->parent); -devm_usb_put_phy (glue->dev, glue->xceiv); -return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 157/184 usb: dwc3: fix fault at system suspend if device was already runtime suspended
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Roger Quadros <[email protected]>
commit 9cfb31e4c89d200d8ab7cb1e0bb9e6e8d621ca0b upstream.
If the device was already runtime suspended then during system suspend we cannot access the device registers else it will crash.
Also we cannot access any registers after dwc3_core_exit() on some platforms so move the dwc3_enable_susphy() call to the top.
--- drivers/usb/dwc3/core.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-)
drivers/usb/dwc3/core.c +12 -13
@@ -2342,10 +2342,18 @@ static int dwc3_suspend_common(struct dwu32 reg;int i; - dwc->susphy_state = (dwc3_readl (dwc->regs,DWC3_GUSB2PHYCFG (0 )) & -DWC3_GUSB2PHYCFG_SUSPHY ) || - (dwc3_readl (dwc->regs,DWC3_GUSB3PIPECTL (0 )) & -DWC3_GUSB3PIPECTL_SUSPHY ); +if (!pm_runtime_suspended (dwc->dev) && !PMSG_IS_AUTO (msg)) { + dwc->susphy_state = (dwc3_readl (dwc->regs,DWC3_GUSB2PHYCFG (0 )) & +DWC3_GUSB2PHYCFG_SUSPHY ) || + (dwc3_readl (dwc->regs,DWC3_GUSB3PIPECTL (0 )) & +DWC3_GUSB3PIPECTL_SUSPHY ); +/* +* TI AM62 platform requires SUSPHY to be +* enabled for system suspend to work. +*/ +if (!dwc->susphy_state) +dwc3_enable_susphy (dwc, true); + }switch (dwc->current_dr_role) {case DWC3_GCTL_PRTCAP_DEVICE :
@@ -2398,15 +2406,6 @@ static int dwc3_suspend_common(struct dwbreak ; } -if (!PMSG_IS_AUTO (msg)) { -/* -* TI AM62 platform requires SUSPHY to be -* enabled for system suspend to work. -*/ -if (!dwc->susphy_state) -dwc3_enable_susphy (dwc, true); - } -return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 158/184 usb: typec: qcom-pmic: init value of hdr_len/txbuf_len earlier
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rex Nie <[email protected]>
commit 029778a4fd2c90c2e76a902b797c2348a722f1b8 upstream.
If the read of USB_PDPHY_RX_ACKNOWLEDGE_REG failed, then hdr_len and txbuf_len are uninitialized. This commit stops to print uninitialized value and misleading/false data.
--- drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c +4 -4
@@ -227,6 +227,10 @@ qcom_pmic_typec_pdphy_pd_transmit_payloaspin_lock_irqsave (&pmic_typec_pdphy->lock, flags); + hdr_len =sizeof (msg->header); + txbuf_len =pd_header_cnt_le (msg->header) *4 ; + txsize_len = hdr_len + txbuf_len -1 ; + ret =regmap_read (pmic_typec_pdphy->regmap, pmic_typec_pdphy->base +USB_PDPHY_RX_ACKNOWLEDGE_REG , &val);
@@ -244,10 +248,6 @@ qcom_pmic_typec_pdphy_pd_transmit_payloaif (ret) goto done; - hdr_len =sizeof (msg->header); - txbuf_len =pd_header_cnt_le (msg->header) *4 ; - txsize_len = hdr_len + txbuf_len -1 ; -/* Write message header sizeof(u16) to USB_PDPHY_TX_BUFFER_HDR_REG */ ret = regmap_bulk_write(pmic_typec_pdphy->regmap, pmic_typec_pdphy->base + USB_PDPHY_TX_BUFFER_HDR_REG,
Greg Kroah-Hartman
maintainerPATCH 159/184 usb: typec: fix potential out of bounds in ucsi_ccg_update_set_new_cam_cmd()
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <[email protected]>
commit 7dd08a0b4193087976db6b3ee7807de7e8316f96 upstream.
The "*cmd" variable can be controlled by the user via debugfs. That means "new_cam" can be as high as 255 while the size of the uc->updated[] array is UCSI_MAX_ALTMODES (30).
The call tree is:ucsi_cmd() // val comes from simple_attr_write_xsigned() -> ucsi_send_command()
-> ucsi_send_command_common()
-> ucsi_run_command() // calls ucsi->ops->sync_control()
-> ucsi_ccg_sync_control()--- drivers/usb/typec/ucsi/ucsi_ccg.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/usb/typec/ucsi/ucsi_ccg.c +2 -0
@@ -482,6 +482,8 @@ static void ucsi_ccg_update_set_new_cam_ port = uc->orig; new_cam =UCSI_SET_NEW_CAM_GET_AM (*cmd); +if (new_cam >=ARRAY_SIZE (uc->updated)) +return ; new_port = &uc->updated[new_cam]; cam = new_port->linked_idx; enter_new_mode =UCSI_SET_NEW_CAM_ENTER (*cmd);
Greg Kroah-Hartman
maintainerPATCH 160/184 USB: serial: io_edgeport: fix use after free in debug printk
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <[email protected]>
commit 37bb5628379295c1254c113a407cab03a0f4d0b4 upstream.
The "dev_dbg(&urb->dev->dev, ..." which happens after usb_free_urb(urb) is a use after free of the "urb" pointer. Store the "dev" pointer at the start of the function to avoid this issue.
--- drivers/usb/serial/io_edgeport.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/usb/serial/io_edgeport.c +4 -4
@@ -770,11 +770,12 @@ static void edge_bulk_out_data_callback(static void edge_bulk_out_cmd_callback (struct urb *urb) {struct edgeport_port *edge_port = urb->context; +struct device *dev = &urb->dev->dev;int status = urb->status;atomic_dec (&CmdUrbs); -dev_dbg (&urb->dev->dev,"%s - FREE URB %p (outstanding %d)\n" , - __func__, urb,atomic_read (&CmdUrbs)); +dev_dbg (dev,"%s - FREE URB %p (outstanding %d)\n" , __func__, urb, +atomic_read (&CmdUrbs));/* clean up the transfer buffer */
@@ -784,8 +785,7 @@ static void edge_bulk_out_cmd_callback(susb_free_urb (urb);if (status) { -dev_dbg (&urb->dev->dev, -"%s - nonzero write bulk status received: %d\n" , +dev_dbg (dev,"%s - nonzero write bulk status received: %d\n" , __func__, status);return ; }
Greg Kroah-Hartman
maintainerPATCH 161/184 USB: serial: qcserial: add support for Sierra Wireless EM86xx
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jack Wu <[email protected]>
commit 25eb47eed52979c2f5eee3f37e6c67714e02c49c upstream.
Add support for Sierra Wireless EM86xx with USB-id 0x1199:0x90e5 and 0x1199:0x90e4.
0x1199:0x90e5
T: Bus=03 Lev=01 Prnt=01 Port=05 Cnt=01 Dev#= 14 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=1199 ProdID=90e5 Rev= 5.15 S: Manufacturer=Sierra Wireless, Incorporated S: Product=Semtech EM8695 Mobile Broadband Adapter S: SerialNumber=004403161882339 C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA A: FirstIf#=12 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00 I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=qcserial E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=qcserial E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=32ms I:* If#=12 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim E: Ad=87(I) Atr=03(Int.) MxPS= 64 Ivl=32ms I: If#=13 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim I:* If#=13 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
0x1199:0x90e4
T: Bus=03 Lev=01 Prnt=01 Port=05 Cnt=01 Dev#= 16 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1199 ProdID=90e4 Rev= 0.00 S: Manufacturer=Sierra Wireless, Incorporated S: SerialNumber=004403161882339 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 2mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=10 Driver=qcserial E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
--- drivers/usb/serial/qcserial.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/usb/serial/qcserial.c +2 -0
@@ -166,6 +166,8 @@ static const struct usb_device_id id_tab {DEVICE_SWI(0x1199, 0x9090)}, /* Sierra Wireless EM7565 QDL */ {DEVICE_SWI(0x1199, 0x9091)}, /* Sierra Wireless EM7565 */ {DEVICE_SWI(0x1199, 0x90d2)}, /* Sierra Wireless EM9191 QDL */ + {DEVICE_SWI(0x1199, 0x90e4)}, /* Sierra Wireless EM86xx QDL*/ + {DEVICE_SWI(0x1199, 0x90e5)}, /* Sierra Wireless EM86xx */ {DEVICE_SWI(0x1199, 0xc080)}, /* Sierra Wireless EM7590 QDL */ {DEVICE_SWI(0x1199, 0xc081)}, /* Sierra Wireless EM7590 */ {DEVICE_SWI(0x413c, 0x81a2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */
Greg Kroah-Hartman
maintainerPATCH 162/184 USB: serial: option: add Fibocom FG132 0x0112 composition
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Reinhard Speyerer <[email protected]>
commit 393c74ccbd847bacf18865a01b422586fc7341cf upstream.
Add Fibocom FG132 0x0112 composition:
T: Bus=03 Lev=02 Prnt=06 Port=01 Cnt=02 Dev#= 10 Spd=12 MxCh= 0 D: Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=2cb7 ProdID=0112 Rev= 5.15 S: Manufacturer=Fibocom Wireless Inc. S: Product=Fibocom Module S: SerialNumber=xxxxxxxx C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=32ms E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=84(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
--- drivers/usb/serial/option.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/usb/serial/option.c +3 -0
@@ -2320,6 +2320,9 @@ static const struct usb_device_id option { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0111, 0xff) }, /* Fibocom FM160 (MBIM mode) */ + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0112, 0xff, 0xff, 0x30) }, /* Fibocom FG132 Diag */ + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0112, 0xff, 0xff, 0x40) }, /* Fibocom FG132 AT */ + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0112, 0xff, 0, 0) }, /* Fibocom FG132 NMEA */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0115, 0xff), /* Fibocom FM135 (laptop MBIM) */ .driver_info = RSVD(5) }, { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */
Greg Kroah-Hartman
maintainerPATCH 163/184 USB: serial: option: add Quectel RG650V
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benoît Monin <[email protected]>
commit 3b05949ba39f305b585452d0e177470607842165 upstream.
Add support for Quectel RG650V which is based on Qualcomm SDX65 chip. The composition is DIAG / NMEA / AT / AT / QMI.
T: Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 4 Spd=5000 MxCh= 0 D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 P: Vendor=2c7c ProdID=0122 Rev=05.15 S: Manufacturer=Quectel S: Product=RG650V-EU S: SerialNumber=xxxxxxx C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=896mA I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=9ms I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=9ms I: If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan E: Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=87(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=88(I) Atr=03(Int.) MxPS= 8 Ivl=9ms
--- drivers/usb/serial/option.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/usb/serial/option.c +3 -0
@@ -251,6 +251,7 @@ static void option_instat_callback(struc#define QUECTEL_VENDOR_ID 0x2c7c/* These Quectel products use Quectel's vendor ID */ #define QUECTEL_PRODUCT_EC21 0x0121 +#define QUECTEL_PRODUCT_RG650V 0x0122#define QUECTEL_PRODUCT_EM061K_LTA 0x0123#define QUECTEL_PRODUCT_EM061K_LMS 0x0124#define QUECTEL_PRODUCT_EC25 0x0125
@@ -1273,6 +1274,8 @@ static const struct usb_device_id option { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG912Y, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG916Q, 0xff, 0x00, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RG650V, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RG650V, 0xff, 0, 0) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
Greg Kroah-Hartman
maintainerPATCH 164/184 clk: qcom: videocc-sm8350: use HW_CTRL_TRIGGER for vcodec GDSCs
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <[email protected]>
commit f903663a8dcd6e1656e52856afbf706cc14cbe6d upstream.
A recent change in the venus driver results in a stuck clock on the Lenovo ThinkPad X13s, for example, when streaming video in firefox:
video_cc_mvs0_clk status stuck at 'off' WARNING: CPU: 6 PID: 2885 at drivers/clk/qcom/clk-branch.c:87 clk_branch_wait+0x144/0x15c ... Call trace: clk_branch_wait+0x144/0x15c clk_branch2_enable+0x30/0x40 clk_core_enable+0xd8/0x29c clk_enable+0x2c/0x4c vcodec_clks_enable.isra.0+0x94/0xd8 [venus_core] coreid_power_v4+0x464/0x628 [venus_core] vdec_start_streaming+0xc4/0x510 [venus_dec] vb2_start_streaming+0x6c/0x180 [videobuf2_common] vb2_core_streamon+0x120/0x1dc [videobuf2_common] vb2_streamon+0x1c/0x6c [videobuf2_v4l2] v4l2_m2m_ioctl_streamon+0x30/0x80 [v4l2_mem2mem] v4l_streamon+0x24/0x30 [videodev]
using the out-of-tree sm8350/sc8280xp venus support. [1]
Update also the sm8350/sc8280xp GDSC definitions so that the hw control mode can be changed at runtime as the venus driver now requires.
--- drivers/clk/qcom/videocc-sm8350.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/clk/qcom/videocc-sm8350.c +2 -2
@@ -452,7 +452,7 @@ static struct gdsc mvs0_gdsc = { .pd = { .name = "mvs0_gdsc", }, - .flags = HW_CTRL | RETAIN_FF_ENABLE, + .flags = HW_CTRL_TRIGGER | RETAIN_FF_ENABLE, .pwrsts = PWRSTS_OFF_ON, };
@@ -461,7 +461,7 @@ static struct gdsc mvs1_gdsc = { .pd = { .name = "mvs1_gdsc", }, - .flags = HW_CTRL | RETAIN_FF_ENABLE, + .flags = HW_CTRL_TRIGGER | RETAIN_FF_ENABLE, .pwrsts = PWRSTS_OFF_ON, };
Signature · 1 line
2.47.0
Greg Kroah-Hartman
maintainerPATCH 165/184 clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Qiang Yu <[email protected]>
commit bf0a800415a7397617765fe5f5278a645195c75a upstream.
The pipediv2_clk's source from the same mux as pipe clock. So they have same limitation, which is that the PHY sequence requires to enable these local CBCs before the PHY is actually outputting a clock to them. This means the clock won't actually turn on when we vote them. Hence, let's skip the halt bit check of the pipediv2_clk, otherwise pipediv2_clk may stuck at off state during bootup.
--- drivers/clk/qcom/gcc-x1e80100.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/clk/qcom/gcc-x1e80100.c +5 -5
@@ -3123,7 +3123,7 @@ static struct clk_branch gcc_pcie_3_pipe_clk = {static struct clk_branch gcc_pcie_3_pipediv2_clk = { .halt_reg =0x58060 , - .halt_check =BRANCH_HALT_VOTED , + .halt_check =BRANCH_HALT_SKIP , .clkr = { .enable_reg =0x52020 , .enable_mask =BIT (5 ),
@@ -3248,7 +3248,7 @@ static struct clk_branch gcc_pcie_4_pipe_clk = {static struct clk_branch gcc_pcie_4_pipediv2_clk = { .halt_reg =0x6b054 , - .halt_check =BRANCH_HALT_VOTED , + .halt_check =BRANCH_HALT_SKIP , .clkr = { .enable_reg =0x52010 , .enable_mask =BIT (27 ),
@@ -3373,7 +3373,7 @@ static struct clk_branch gcc_pcie_5_pipe_clk = {static struct clk_branch gcc_pcie_5_pipediv2_clk = { .halt_reg =0x2f054 , - .halt_check =BRANCH_HALT_VOTED , + .halt_check =BRANCH_HALT_SKIP , .clkr = { .enable_reg =0x52018 , .enable_mask =BIT (19 ),
@@ -3511,7 +3511,7 @@ static struct clk_branch gcc_pcie_6a_pipe_clk = {static struct clk_branch gcc_pcie_6a_pipediv2_clk = { .halt_reg =0x31060 , - .halt_check =BRANCH_HALT_VOTED , + .halt_check =BRANCH_HALT_SKIP , .clkr = { .enable_reg =0x52018 , .enable_mask =BIT (28 ),
@@ -3649,7 +3649,7 @@ static struct clk_branch gcc_pcie_6b_pipe_clk = {static struct clk_branch gcc_pcie_6b_pipediv2_clk = { .halt_reg =0x8d060 , - .halt_check =BRANCH_HALT_VOTED , + .halt_check =BRANCH_HALT_SKIP , .clkr = { .enable_reg =0x52010 , .enable_mask =BIT (28 ),
Signature · 1 line
2.47.0
Greg Kroah-Hartman
maintainerPATCH 166/184 thunderbolt: Fix connection issue with Pluggable UD-4VPD dock
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
commit bd646c768a934d28e574ee940d6759c7954a024d upstream.
Rick reported that his Pluggable USB4 dock does not work anymore after upgrading to v6.10 kernel.
It looks like commit c6ca1ac9f472 ("thunderbolt: Increase sideband access polling delay") makes the device router enumeration happen later than what might be expected by the dock (although there is no such limit in the USB4 spec) which probably makes it assume there is something wrong with the high-speed link and reset it. After the link is reset the same issue happens again and again.
For this reason lower the sideband access delay from 5ms to 1ms. This seems to work fine according to Rick's testing.
--- drivers/thunderbolt/usb4.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/thunderbolt/usb4.c +1 -1
@@ -48,7 +48,7 @@ enum usb4_ba_index {/* Delays in us used with usb4_port_wait_for_bit() */ #define USB4_PORT_DELAY 50 -#define USB4_PORT_SB_DELAY 5000 +#define USB4_PORT_SB_DELAY 1000 static int usb4_native_switch_op(struct tb_switch *sw, u16 opcode, u32 *metadata, u8 *status,
Signature · 1 line
2.47.0
Greg Kroah-Hartman
maintainerPATCH 167/184 staging: vchiq_arm: Use devm_kzalloc() for drv_mgmt allocation
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Umang Jain <[email protected]>
commit 807babf69027b4f1c55e72b06879658e83830880 upstream.
The struct drv_mgmt 'mgmt' is currently allocated dynamically using kzalloc(). Unfortunately, it is subjected to memory leaks in the error handling paths of the probe() function.
To address this issue, use device resource management helper devm_kzalloc(), to ensure cleanup after the allocation.
--- drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +1 -3
@@ -1731,7 +1731,7 @@ static int vchiq_probe(struct platform_device *pdev)return -ENOENT ; } - mgmt =kzalloc (sizeof (*mgmt),GFP_KERNEL ); + mgmt =devm_kzalloc (&pdev->dev,sizeof (*mgmt),GFP_KERNEL );if (!mgmt)return -ENOMEM ;
@@ -1789,8 +1789,6 @@ static void vchiq_remove(struct platform_device *pdev) arm_state =vchiq_platform_get_arm_state (&mgmt->state);kthread_stop (arm_state->ka_thread); - -kfree (mgmt); }static struct platform_driver vchiq_driver = {
Signature · 1 line
2.47.0
Greg Kroah-Hartman
maintainerPATCH 168/184 staging: vchiq_arm: Use devm_kzalloc() for vchiq_arm_state allocation
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Umang Jain <[email protected]>
commit 404b739e895522838f1abdc340c554654d671dde upstream.
The struct vchiq_arm_state 'platform_state' is currently allocated dynamically using kzalloc(). Unfortunately, it is never freed and is subjected to memory leaks in the error handling paths of the probe() function.
To address the issue, use device resource management helper devm_kzalloc(), to ensure cleanup after its allocation.
--- drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +1 -1
@@ -593,7 +593,7 @@ vchiq_platform_init_state(struct vchiq_s {struct vchiq_arm_state *platform_state; - platform_state =kzalloc (sizeof (*platform_state),GFP_KERNEL ); + platform_state =devm_kzalloc (state->dev,sizeof (*platform_state),GFP_KERNEL );if (!platform_state)return -ENOMEM ;
Greg Kroah-Hartman
maintainerPATCH 169/184 irqchip/gic-v3: Force propagation of the active state with a read-back
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marc Zyngier <[email protected]>
commit 464cb98f1c07298c4c10e714ae0c36338d18d316 upstream.
Christoffer reports that on some implementations, writing to GICR_ISACTIVER0 (and similar GICD registers) can race badly with a guest issuing a deactivation of that interrupt via the system register interface.
There are multiple reasons to this:
- this uses an early write-acknoledgement memory type (nGnRE), meaning that the write may only have made it as far as some interconnect by the time the store is considered "done"
- the GIC itself is allowed to buffer the write until it decides to take it into account (as long as it is in finite time)
The effects are that the activation may not have taken effect by the time the kernel enters the guest, forcing an immediate exit, or that a guest deactivation occurs before the interrupt is active, doing nothing.
In order to guarantee that the write to the ISACTIVER register has taken effect, read back from it, forcing the interconnect to propagate the write, and the GIC to process the write before returning the read.
--- drivers/irqchip/irq-gic-v3.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/irqchip/irq-gic-v3.c +7 -0
@@ -524,6 +524,13 @@ static int gic_irq_set_irqchip_state(str }gic_poke_irq (d, reg); + +/* +* Force read-back to guarantee that the active state has taken +* effect, and won't race with a guest-driven deactivation. +*/ +if (reg ==GICD_ISACTIVER ) +gic_peek_irq (d, reg);return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 170/184 ocfs2: remove entry once instead of null-ptr-dereference in ocfs2_xa_remove()
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andrew Kanner <[email protected]>
commit 0b63c0e01fba40e3992bc627272ec7b618ccaef7 upstream.
Syzkaller is able to provoke null-ptr-dereference in ocfs2_xa_remove():
[ 57.319872] (a.out,1161,7):ocfs2_xa_remove:2028 ERROR: status = -12 [ 57.320420] (a.out,1161,7):ocfs2_xa_cleanup_value_truncate:1999 ERROR: Partial truncate while removing xattr overlay.upper. Leaking 1 clusters and removing the entry [ 57.321727] BUG: kernel NULL pointer dereference, address: 0000000000000004 [...] [ 57.325727] RIP: 0010:ocfs2_xa_block_wipe_namevalue+0x2a/0xc0 [...] [ 57.331328] Call Trace: [ 57.331477] <TASK> [...] [ 57.333511] ? do_user_addr_fault+0x3e5/0x740 [ 57.333778] ? exc_page_fault+0x70/0x170 [ 57.334016] ? asm_exc_page_fault+0x2b/0x30 [ 57.334263] ? __pfx_ocfs2_xa_block_wipe_namevalue+0x10/0x10 [ 57.334596] ? ocfs2_xa_block_wipe_namevalue+0x2a/0xc0 [ 57.334913] ocfs2_xa_remove_entry+0x23/0xc0 [ 57.335164] ocfs2_xa_set+0x704/0xcf0 [ 57.335381] ? _raw_spin_unlock+0x1a/0x40 [ 57.335620] ? ocfs2_inode_cache_unlock+0x16/0x20 [ 57.335915] ? trace_preempt_on+0x1e/0x70 [ 57.336153] ? start_this_handle+0x16c/0x500 [ 57.336410] ? preempt_count_sub+0x50/0x80 [ 57.336656] ? _raw_read_unlock+0x20/0x40 [ 57.336906] ? start_this_handle+0x16c/0x500 [ 57.337162] ocfs2_xattr_block_set+0xa6/0x1e0 [ 57.337424] __ocfs2_xattr_set_handle+0x1fd/0x5d0 [ 57.337706] ? ocfs2_start_trans+0x13d/0x290 [ 57.337971] ocfs2_xattr_set+0xb13/0xfb0 [ 57.338207] ? dput+0x46/0x1c0 [ 57.338393] ocfs2_xattr_trusted_set+0x28/0x30 [ 57.338665] ? ocfs2_xattr_trusted_set+0x28/0x30 [ 57.338948] __vfs_removexattr+0x92/0xc0 [ 57.339182] __vfs_removexattr_locked+0xd5/0x190 [ 57.339456] ? preempt_count_sub+0x50/0x80 [ 57.339705] vfs_removexattr+0x5f/0x100
[...]
Reproducer uses faultinject facility to fail ocfs2_xa_remove() -> ocfs2_xa_value_truncate() with -ENOMEM.
In this case the comment mentions that we can return 0 if ocfs2_xa_cleanup_value_truncate() is going to wipe the entry anyway. But the following 'rc' check is wrong and execution flow do 'ocfs2_xa_remove_entry(loc);' twice:
* 1st: in ocfs2_xa_cleanup_value_truncate();
* 2nd: returning back to ocfs2_xa_remove() instead of going to 'out'.
Fix this by skipping the 2nd removal of the same entry and making syzkaller repro happy.
--- fs/ocfs2/xattr.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
fs/ocfs2/xattr.c +1 -2
@@ -2036,8 +2036,7 @@ static int ocfs2_xa_remove(struct ocfs2_ rc =0 ;ocfs2_xa_cleanup_value_truncate (loc,"removing" , orig_clusters); -if (rc) - goto out; + goto out; } }
Greg Kroah-Hartman
maintainerPATCH 171/184 ucounts: fix counter leak in inc_rlimit_get_ucounts()
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andrei Vagin <[email protected]>
commit 432dc0654c612457285a5dcf9bb13968ac6f0804 upstream.
The inc_rlimit_get_ucounts() increments the specified rlimit counter and then checks its limit. If the value exceeds the limit, the function returns an error without decrementing the counter.
--- kernel/ucount.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
kernel/ucount.c +1 -2
@@ -318,7 +318,7 @@ long inc_rlimit_get_ucounts(struct ucounfor (iter = ucounts; iter; iter = iter->ns->ucounts) {long new =atomic_long_add_return (1 , &iter->rlimit[type]);if (new <0 || new > max) - goto unwind; + goto dec_unwind;if (iter == ucounts) ret = new;if (!override_rlimit)
@@ -336,7 +336,6 @@ long inc_rlimit_get_ucounts(struct ucoun dec_unwind: dec =atomic_long_sub_return (1 , &iter->rlimit[type]);WARN_ON_ONCE (dec <0 ); -unwind:do_dec_rlimit_put_ucounts (ucounts, iter, type);return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 172/184 selftests: hugetlb_dio: check for initial conditions to skip in the start
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Muhammad Usama Anjum <[email protected]>
commit 0268d4579901821ff17259213c2d8c9679995d48 upstream.
The test should be skipped if initial conditions aren't fulfilled in the start instead of failing and outputting non-compliant TAP logs. This kind of failure pollutes the results. The initial conditions are:
- The test should only execute if /tmp file can be allocated.
- The test should only execute if huge pages are free.
Before:
TAP version 13
1..4
Bail out! Error opening file
: Read-only file system (30)
# Planned tests != run tests (4 != 0)
# Totals: pass:0 fail:0 xfail:0 xpass:0 skip:0 error:0
After:
TAP version 13
1..0 # SKIP Unable to allocate file: Read-only file system
--- tools/testing/selftests/mm/hugetlb_dio.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-)
tools/testing/selftests/mm/hugetlb_dio.c +12 -7
@@ -44,13 +44,6 @@ void run_dio_using_hugetlb(unsigned int start_off, unsigned int end_off)if (fd <0 )ksft_exit_fail_perror ("Error opening file\n" ); -/* Get the free huge pages before allocation */ - free_hpage_b =get_free_hugepages (); -if (free_hpage_b ==0 ) { -close (fd); -ksft_exit_skip ("No free hugepage, exiting!\n" ); - } -/* Allocate a hugetlb page */ orig_buffer =mmap (NULL , h_pagesize, mmap_prot, mmap_flags,-1 ,0 );if (orig_buffer ==MAP_FAILED ) {
@@ -94,8 +87,20 @@ void run_dio_using_hugetlb(unsigned int start_off, unsigned int end_off)int main (void ) {size_t pagesize =0 ; +int fd;ksft_print_header (); + +/* Open the file to DIO */ + fd =open ("/tmp" ,O_TMPFILE |O_RDWR |O_DIRECT ,0664 ); +if (fd <0 ) +ksft_exit_skip ("Unable to allocate file: %s\n" ,strerror (errno)); +close (fd); + +/* Check if huge pages are free */ +if (!get_free_hugepages ()) +ksft_exit_skip ("No free hugepage, exiting\n" ); +ksft_set_plan (4 );/* Get base page size */
Signature · 1 line
2.47.0
Greg Kroah-Hartman
maintainerPATCH 173/184 firmware: qcom: scm: Refactor code to support multiple dload mode
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mukesh Ojha <[email protected]>
[ Upstream commit c802b0a2ed0f67fcec8cc0cac685c8fd0dd0aa6f ]
Currently on Qualcomm SoC, download_mode is enabled if CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is selected or passed a boolean value from command line.
Refactor the code such that it supports multiple download modes and drop CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT config instead, give interface to set the download mode from module parameter while being backword compatible at the same time.
Stable-dep-of: d67907154808 ("firmware: qcom: scm: suppress download mode error")
--- drivers/firmware/qcom/Kconfig | 11 ------ drivers/firmware/qcom/qcom_scm.c | 60 +++++++++++++++++++++++++++----- 2 files changed, 52 insertions(+), 19 deletions(-)
drivers/firmware/qcom/Kconfig +0 -11
@@ -41,17 +41,6 @@ config QCOM_TZMEM_MODE_SHMBRIDGE endchoice -config QCOM_SCM_DOWNLOAD_MODE_DEFAULT - bool "Qualcomm download mode enabled by default" - depends on QCOM_SCM - help - A device with "download mode" enabled will upon an unexpected - warm-restart enter a special debug mode that allows the user to - "download" memory content over USB for offline postmortem analysis. - The feature can be enabled/disabled on the kernel command line. - - Say Y here to enable "download mode" by default. - config QCOM_QSEECOM bool "Qualcomm QSEECOM interface driver" depends on QCOM_SCM=y
drivers/firmware/qcom/qcom_scm.c +52 -8
109 lines not on this page · raw message
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 174/184 firmware: qcom: scm: suppress download mode error
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <[email protected]>
[ Upstream commit d67907154808745b0fae5874edc7b0f78d33991c ]
Stop spamming the logs with errors about missing mechanism for setting the so called download (or dump) mode for users that have not requested that feature to be enabled in the first place.
This avoids the follow error being logged on boot as well as on shutdown when the feature it not available and download mode has not been enabled on the kernel command line:
qcom_scm firmware:scm: No available mechanism for setting download mode
--- drivers/firmware/qcom/qcom_scm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/firmware/qcom/qcom_scm.c +1 -1
@@ -542,7 +542,7 @@ static void qcom_scm_set_download_mode(u32 dload_mode) }else if (__qcom_scm_is_call_available (__scm->dev,QCOM_SCM_SVC_BOOT ,QCOM_SCM_BOOT_SET_DLOAD_MODE )) { ret =__qcom_scm_set_dload_mode (__scm->dev, !!dload_mode); - }else { + }else if (dload_mode) {dev_err (__scm->dev,"No available mechanism for setting download mode\n" ); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 175/184 block: rework bio splitting
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit b35243a447b9fe6457fa8e1352152b818436ba5a ]
The current setup with bio_may_exceed_limit and __bio_split_to_limits is a bit of a mess.
Change it so that __bio_split_to_limits does all the work and is just a variant of bio_split_to_limits that returns nr_segs. This is done by inlining it and instead have the various bio_split_* helpers directly submit the potentially split bios.
To support btrfs, the rw version has a lower level helper split out that just returns the offset to split. This turns out to nicely clean up the btrfs flow as well.
Stable-dep-of: be0e822bb3f5 ("block: fix queue limits checks in blk_rq_map_user_bvec for real")
--- block/blk-merge.c | 146 +++++++++++++++++--------------------------- block/blk-mq.c | 11 ++-- block/blk.h | 63 +++++++++++++------ fs/btrfs/bio.c | 30 +++++---- include/linux/bio.h | 4 +- 5 files changed, 125 insertions(+), 129 deletions(-)
block/blk-merge.c +56 -90
@@ -105,9 +105,33 @@ static unsigned int bio_allowed_max_sectors(const struct queue_limits *lim)return round_down (UINT_MAX , lim->logical_block_size) >>SECTOR_SHIFT ; } -static struct bio *bio_split_discard (struct bio *bio, -const struct queue_limits *lim, -unsigned *nsegs,struct bio_set *bs) +static struct bio *bio_submit_split (struct bio *bio,int split_sectors) +{ +if (unlikely (split_sectors <0 )) { + bio->bi_status =errno_to_blk_status (split_sectors); +bio_endio (bio); +return NULL ; + } + +if (split_sectors) { +struct bio *split; + + split =bio_split (bio, split_sectors,GFP_NOIO , + &bio->bi_bdev->bd_disk->bio_split); + split->bi_opf |=REQ_NOMERGE ; +blkcg_bio_issue_init (split); +bio_chain (split, bio); +trace_block_split (split, bio->bi_iter.bi_sector); +WARN_ON_ONCE (bio_zone_write_plugging (bio)); +submit_bio_noacct (bio); +return split; + } + +return bio; +} + +struct bio *bio_split_discard (struct bio *bio,const struct queue_limits *lim, +unsigned *nsegs) {unsigned int max_discard_sectors, granularity;sector_t tmp;
@@ -121,10 +145,10 @@ static struct bio *bio_split_discard(struct bio *bio,min (lim->max_discard_sectors,bio_allowed_max_sectors (lim)); max_discard_sectors -= max_discard_sectors % granularity;if (unlikely (!max_discard_sectors)) -return NULL ; +return bio;if (bio_sectors (bio) <= max_discard_sectors) -return NULL ; +return bio; split_sectors = max_discard_sectors;
@@ -139,19 +163,18 @@ static struct bio *bio_split_discard(struct bio *bio,if (split_sectors > tmp) split_sectors -= tmp; -return bio_split (bio, split_sectors,GFP_NOIO , bs); +return bio_submit_split (bio, split_sectors); } -static struct bio *bio_split_write_zeroes (struct bio *bio, -const struct queue_limits *lim, -unsigned *nsegs,struct bio_set *bs) +struct bio *bio_split_write_zeroes (struct bio *bio, +const struct queue_limits *lim,unsigned *nsegs) { *nsegs =0 ;if (!lim->max_write_zeroes_sectors) -return NULL ; +return bio;if (bio_sectors (bio) <= lim->max_write_zeroes_sectors) -return NULL ; -return bio_split (bio, lim->max_write_zeroes_sectors,GFP_NOIO , bs); +return bio; +return bio_submit_split (bio, lim->max_write_zeroes_sectors); } static inline unsigned int blk_boundary_sectors(const struct queue_limits *lim,
@@ -274,27 +297,19 @@ static bool bvec_split_segs(const struct queue_limits *lim, }/** -* bio_split_rw - split a bio in two bios +* bio_split_rw_at - check if and where to split a read/write bio * @bio: [in] bio to be split * @lim: [in] queue limits to split based on * @segs: [out] number of segments in the bio with the first half of the sectors -* @bs: [in] bio set to allocate the clone from * @max_bytes: [in] maximum number of bytes per bio * -* Clone @bio, update the bi_iter of the clone to represent the first sectors -* of @bio and update @bio->bi_iter to represent the remaining sectors. The -* following is guaranteed for the cloned bio: -* - That it has at most @max_bytes worth of data -* - That it has at most queue_max_segments(@q) segments. -* -* Except for discard requests the cloned bio will point at the bi_io_vec of -* the original bio. It is the responsibility of the caller to ensure that the -* original bio is not freed before the cloned bio. The caller is also -* responsible for ensuring that @bs is only destroyed after processing of the -* split bio has finished. +* Find out if @bio needs to be split to fit the queue limits in @lim and a +* maximum size of @max_bytes. Returns a negative error number if @bio can't be +* split, 0 if the bio doesn't have to be split, or a positive sector offset if +* @bio needs to be split. */ -struct bio *bio_split_rw (struct bio *bio,const struct queue_limits *lim, -unsigned *segs,struct bio_set *bs,unsigned max_bytes) +int bio_split_rw_at (struct bio *bio,const struct queue_limits *lim, +unsigned *segs,unsigned max_bytes) {struct bio_vec bv, bvprv, *bvprvp =NULL ;struct bvec_iter iter;
@@ -324,22 +339,17 @@ struct bio *bio_split_rw(struct bio *bio, const struct queue_limits *lim, } *segs = nsegs; -return NULL ; +return 0 ; split: -if (bio->bi_opf &REQ_ATOMIC ) { - bio->bi_status =BLK_STS_INVAL ; -bio_endio (bio); -return ERR_PTR (-EINVAL ); - } +if (bio->bi_opf &REQ_ATOMIC ) +return -EINVAL ; +/* * We can't sanely support splitting for a REQ_NOWAIT bio. End it * with EAGAIN if splitting is required and return an error pointer. */ -if (bio->bi_opf &REQ_NOWAIT ) { - bio->bi_status =BLK_STS_AGAIN ; -bio_endio (bio); -return ERR_PTR (-EAGAIN ); - } +if (bio->bi_opf &REQ_NOWAIT ) +return -EAGAIN ; *segs = nsegs;
@@ -356,58 +366,16 @@ struct bio *bio_split_rw(struct bio *bio, const struct queue_limits *lim,* big IO can be trival, disable iopoll when split needed. */ bio_clear_polled (bio); -return bio_split (bio, bytes >>SECTOR_SHIFT ,GFP_NOIO , bs); +return bytes >>SECTOR_SHIFT ; } -EXPORT_SYMBOL_GPL (bio_split_rw); +EXPORT_SYMBOL_GPL (bio_split_rw_at); -/** -* __bio_split_to_limits - split a bio to fit the queue limits -* @bio: bio to be split -* @lim: queue limits to split based on -* @nr_segs: returns the number of segments in the returned bio -* -* Check if @bio needs splitting based on the queue limits, and if so split off -* a bio fitting the limits from the beginning of @bio and return it. @bio is -* shortened to the remainder and re-submitted. -* -* The split bio is allocated from @q->bio_split, which is provided by the -* block layer. -*/ -struct bio *__bio_split_to_limits (struct bio *bio, -const struct queue_limits *lim, -unsigned int *nr_segs) +struct bio *bio_split_rw (struct bio *bio,const struct queue_limits *lim, +unsigned *nr_segs) { -struct bio_set *bs = &bio->bi_bdev->bd_disk->bio_split; -struct bio *split; - -switch (bio_op (bio)) { -case REQ_OP_DISCARD : -case REQ_OP_SECURE_ERASE : - split =bio_split_discard (bio, lim, nr_segs, bs); -break ; -case REQ_OP_WRITE_ZEROES : - split =bio_split_write_zeroes (bio, lim, nr_segs, bs); -break ; -default : - split =bio_split_rw (bio, lim, nr_segs, bs, -get_max_io_size (bio, lim) <<SECTOR_SHIFT ); -if (IS_ERR (split)) -return NULL ; -break ; - } - -if (split) { -/* there isn't chance to merge the split bio */ - split->bi_opf |=REQ_NOMERGE ; - -blkcg_bio_issue_init (split); -bio_chain (split, bio); -trace_block_split (split, bio->bi_iter.bi_sector); -WARN_ON_ONCE (bio_zone_write_plugging (bio)); -submit_bio_noacct (bio); -return split; - } -return bio; +return bio_submit_split (bio, +bio_split_rw_at (bio, lim, nr_segs, +get_max_io_size (bio, lim) <<SECTOR_SHIFT )); }/**
@@ -426,9 +394,7 @@ struct bio *bio_split_to_limits(struct bio *bio)const struct queue_limits *lim = &bdev_get_queue (bio->bi_bdev)->limits;unsigned int nr_segs; -if (bio_may_exceed_limits (bio, lim)) -return __bio_split_to_limits (bio, lim, &nr_segs); -return bio; +return __bio_split_to_limits (bio, lim, &nr_segs); }EXPORT_SYMBOL (bio_split_to_limits);
block/blk-mq.c +5 -6
@@ -2939,7 +2939,7 @@ void blk_mq_submit_bio(struct bio *bio)struct blk_plug *plug = current->plug;const int is_sync =op_is_sync (bio->bi_opf);struct blk_mq_hw_ctx *hctx; -unsigned int nr_segs =1 ; +unsigned int nr_segs;struct request *rq;blk_status_t ret;
@@ -2981,11 +2981,10 @@ void blk_mq_submit_bio(struct bio *bio) goto queue_exit; } -if (unlikely (bio_may_exceed_limits (bio, &q->limits))) { - bio =__bio_split_to_limits (bio, &q->limits, &nr_segs); -if (!bio) - goto queue_exit; - } + bio =__bio_split_to_limits (bio, &q->limits, &nr_segs); +if (!bio) + goto queue_exit; +if (!bio_integrity_prep (bio)) goto queue_exit;
block/blk.h +44 -19
77 lines not on this page · raw message
fs/btrfs/bio.c +18 -12
@@ -74,20 +74,13 @@ struct btrfs_bio *btrfs_bio_alloc(unsigned int nr_vecs, blk_opf_t opf,static struct btrfs_bio *btrfs_split_bio (struct btrfs_fs_info *fs_info,struct btrfs_bio *orig_bbio, -u64 map_length,bool use_append) +u64 map_length) {struct btrfs_bio *bbio;struct bio *bio; -if (use_append) { -unsigned int nr_segs; - - bio =bio_split_rw (&orig_bbio->bio, &fs_info->limits, &nr_segs, - &btrfs_clone_bioset, map_length); - }else { - bio =bio_split (&orig_bbio->bio, map_length >>SECTOR_SHIFT , -GFP_NOFS , &btrfs_clone_bioset); - } + bio =bio_split (&orig_bbio->bio, map_length >>SECTOR_SHIFT ,GFP_NOFS , + &btrfs_clone_bioset); bbio =btrfs_bio (bio);btrfs_bio_init (bbio, fs_info,NULL , orig_bbio); bbio->inode = orig_bbio->inode;
@@ -648,6 +641,19 @@ static bool btrfs_wq_submit_bio(struct btrfs_bio *bbio,return true; } +static u64 btrfs_append_map_length (struct btrfs_bio *bbio,u64 map_length) +{ +unsigned int nr_segs; +int sector_offset; + + map_length =min (map_length, bbio->fs_info->max_zone_append_size); + sector_offset =bio_split_rw_at (&bbio->bio, &bbio->fs_info->limits, + &nr_segs, map_length); +if (sector_offset) +return sector_offset <<SECTOR_SHIFT ; +return map_length; +} +static bool btrfs_submit_chunk (struct btrfs_bio *bbio,int mirror_num) {struct btrfs_inode *inode = bbio->inode;
@@ -674,10 +680,10 @@ static bool btrfs_submit_chunk(struct btrfs_bio *bbio, int mirror_num) map_length =min (map_length, length);if (use_append) - map_length =min (map_length, fs_info->max_zone_append_size); + map_length =btrfs_append_map_length (bbio, map_length);if (map_length < length) { - bbio =btrfs_split_bio (fs_info, bbio, map_length, use_append); + bbio =btrfs_split_bio (fs_info, bbio, map_length); bio = &bbio->bio; }
include/linux/bio.h +2 -2
@@ -324,8 +324,8 @@ static inline void bio_next_folio(struct folio_iter *fi, struct bio *bio)void bio_trim (struct bio *bio,sector_t offset,sector_t size);extern struct bio *bio_split (struct bio *bio,int sectors,gfp_t gfp,struct bio_set *bs); -struct bio *bio_split_rw (struct bio *bio,const struct queue_limits *lim, -unsigned *segs,struct bio_set *bs,unsigned max_bytes); +int bio_split_rw_at (struct bio *bio,const struct queue_limits *lim, +unsigned *segs,unsigned max_bytes);/** * bio_next_split - get next @sectors from a bio, splitting if necessary
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 176/184 block: fix queue limits checks in blk_rq_map_user_bvec for real
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit be0e822bb3f5259c7f9424ba97e8175211288813 ]
blk_rq_map_user_bvec currently only has ad-hoc checks for queue limits, and the last fix to it enabled valid NVMe I/O to pass, but also allowed invalid one for drivers that set a max_segment_size or seg_boundary limit.
Fix it once for all by using the bio_split_rw_at helper from the I/O path that indicates if and where a bio would be have to be split to adhere to the queue limits, and it returns a positive value, turn that into -EREMOTEIO to retry using the copy path.
--- block/blk-map.c | 56 +++++++++++++++---------------------------------- 1 file changed, 17 insertions(+), 39 deletions(-)
block/blk-map.c +17 -39
@@ -561,55 +561,33 @@ EXPORT_SYMBOL(blk_rq_append_bio);/* Prepare bio for passthrough IO given ITER_BVEC iter */ static int blk_rq_map_user_bvec (struct request *rq,const struct iov_iter *iter) { -struct request_queue *q = rq->q; -size_t nr_iter =iov_iter_count (iter); -size_t nr_segs = iter->nr_segs; -struct bio_vec *bvecs, *bvprvp =NULL ; -const struct queue_limits *lim = &q->limits; -unsigned int nsegs =0 , bytes =0 ; +const struct queue_limits *lim = &rq->q->limits; +unsigned int max_bytes = lim->max_hw_sectors <<SECTOR_SHIFT ; +unsigned int nsegs;struct bio *bio; -size_t i; +int ret; -if (!nr_iter || (nr_iter >>SECTOR_SHIFT ) >queue_max_hw_sectors (q)) -return -EINVAL ; -if (nr_segs >queue_max_segments (q)) +if (!iov_iter_count (iter) ||iov_iter_count (iter) > max_bytes)return -EINVAL ; -/* no iovecs to alloc, as we already have a BVEC iterator */ +/* reuse the bvecs from the iterator instead of allocating new ones */ bio =blk_rq_map_bio_alloc (rq,0 ,GFP_KERNEL ); -if (bio ==NULL ) +if (!bio)return -ENOMEM ; -bio_iov_bvec_set (bio, (struct iov_iter *)iter); -blk_rq_bio_prep (rq, bio, nr_segs); - -/* loop to perform a bunch of sanity checks */ - bvecs = (struct bio_vec *)iter->bvec; -for (i =0 ; i < nr_segs; i++) { -struct bio_vec *bv = &bvecs[i]; - -/* -* If the queue doesn't support SG gaps and adding this -* offset would create a gap, fallback to copy. -*/ -if (bvprvp &&bvec_gap_to_prev (lim, bvprvp, bv->bv_offset)) { -blk_mq_map_bio_put (bio); -return -EREMOTEIO ; - } -/* check full condition */ -if (nsegs >= nr_segs || bytes >UINT_MAX - bv->bv_len) - goto put_bio; -if (bytes + bv->bv_len > nr_iter) -break ; - nsegs++; - bytes += bv->bv_len; - bvprvp = bv; +/* check that the data layout matches the hardware restrictions */ + ret =bio_split_rw_at (bio, lim, &nsegs, max_bytes); +if (ret) { +/* if we would have to split the bio, copy instead */ +if (ret >0 ) + ret = -EREMOTEIO ; +blk_mq_map_bio_put (bio); +return ret; } + +blk_rq_bio_prep (rq, bio, nsegs);return 0 ; -put_bio: -blk_mq_map_bio_put (bio); -return -EINVAL ; }/**
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 177/184 drm/xe/guc/ct: Flush g2h worker in case of g2h response timeout
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Badal Nilawar <[email protected]>
[ Upstream commit 22ef43c78647dd37b0dafe2182b8650b99dbbe59 ]
In case if g2h worker doesn't get opportunity to within specified timeout delay then flush the g2h worker explicitly.
v2:
- Describe change in the comment and add TODO (Matt B/John H)
- Add xe_gt_warn on fence done after G2H flush (John H)
v3:
- Updated the comment with root cause
- Clean up xe_gt_warn message (John H)
Stable-dep-of: 55e8a3f37e54 ("drm/xe: Move LNL scheduling WA to xe_device.h")
--- drivers/gpu/drm/xe/xe_guc_ct.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
drivers/gpu/drm/xe/xe_guc_ct.c +18 -0
@@ -888,6 +888,24 @@ static int guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len, ret =wait_event_timeout (ct->g2h_fence_wq, g2h_fence.done,HZ ); +/* +* Occasionally it is seen that the G2H worker starts running after a delay of more than +* a second even after being queued and activated by the Linux workqueue subsystem. This +* leads to G2H timeout error. The root cause of issue lies with scheduling latency of +* Lunarlake Hybrid CPU. Issue dissappears if we disable Lunarlake atom cores from BIOS +* and this is beyond xe kmd. +* +* TODO: Drop this change once workqueue scheduling delay issue is fixed on LNL Hybrid CPU. +*/ +if (!ret) { +flush_work (&ct->g2h_worker); +if (g2h_fence.done) { +xe_gt_warn (gt,"G2H fence %u, action %04x, done\n" , + g2h_fence.seqno, action[0 ]); + ret =1 ; + } + } +/* * Ensure we serialize with completion side to prevent UAF with fence going out of scope on * the stack, since we have no clue if it will fire after the timeout before we can erase
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 178/184 drm/xe: Move LNL scheduling WA to xe_device.h
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nirmoy Das <[email protected]>
[ Upstream commit 55e8a3f37e54eb1c7b914d6d5565a37282ec1978 ]
Move LNL scheduling WA to xe_device.h so this can be used in other places without needing keep the same comment about removal of this WA in the future. The WA, which flushes work or workqueues, is now wrapped in macros and can be reused wherever needed.
--- drivers/gpu/drm/xe/xe_device.h | 14 ++++++++++++++ drivers/gpu/drm/xe/xe_guc_ct.c | 11 +---------- 2 files changed, 15 insertions(+), 10 deletions(-)
drivers/gpu/drm/xe/xe_device.h +14 -0
@@ -174,4 +174,18 @@ void xe_device_declare_wedged(struct xe_device *xe);struct xe_file *xe_file_get (struct xe_file *xef);void xe_file_put (struct xe_file *xef); +/* +* Occasionally it is seen that the G2H worker starts running after a delay of more than +* a second even after being queued and activated by the Linux workqueue subsystem. This +* leads to G2H timeout error. The root cause of issue lies with scheduling latency of +* Lunarlake Hybrid CPU. Issue disappears if we disable Lunarlake atom cores from BIOS +* and this is beyond xe kmd. +* +* TODO: Drop this change once workqueue scheduling delay issue is fixed on LNL Hybrid CPU. +*/ +#define LNL_FLUSH_WORKQUEUE (wq__) \ + flush_workqueue(wq__) +#define LNL_FLUSH_WORK (wrk__) \ + flush_work(wrk__) +#endif
drivers/gpu/drm/xe/xe_guc_ct.c +1 -10
@@ -888,17 +888,8 @@ static int guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len, ret =wait_event_timeout (ct->g2h_fence_wq, g2h_fence.done,HZ ); -/* -* Occasionally it is seen that the G2H worker starts running after a delay of more than -* a second even after being queued and activated by the Linux workqueue subsystem. This -* leads to G2H timeout error. The root cause of issue lies with scheduling latency of -* Lunarlake Hybrid CPU. Issue dissappears if we disable Lunarlake atom cores from BIOS -* and this is beyond xe kmd. -* -* TODO: Drop this change once workqueue scheduling delay issue is fixed on LNL Hybrid CPU. -*/ if (!ret) { -flush_work (&ct->g2h_worker); +LNL_FLUSH_WORK (&ct->g2h_worker);if (g2h_fence.done) {xe_gt_warn (gt,"G2H fence %u, action %04x, done\n" , g2h_fence.seqno, action[0 ]);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 179/184 drm/xe/ufence: Flush xe ordered_wq in case of ufence timeout
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nirmoy Das <[email protected]>
[ Upstream commit 7d1e2580ed166f36949b468373b468d188880cd3 ]
Flush xe ordered_wq in case of ufence timeout which is observed on LNL and that points to recent scheduling issue with E-cores.
This is similar to the recent fix:
commit e51527233804 ("drm/xe/guc/ct: Flush g2h worker in case of g2h response timeout") and should be removed once there is a E-core scheduling fix for LNL.
v2: Add platform check(Himal)
s/__flush_workqueue/flush_workqueue(Jani)
v3: Remove gfx platform check as the issue related to cpu
platform(John)
v4: Use the Common macro(John) and print when the flush resolves
timeout(Matt B)
--- drivers/gpu/drm/xe/xe_wait_user_fence.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/gpu/drm/xe/xe_wait_user_fence.c +7 -0
@@ -155,6 +155,13 @@ int xe_wait_user_fence_ioctl(struct drm_device *dev, void *data, }if (!timeout) { +LNL_FLUSH_WORKQUEUE (xe->ordered_wq); + err =do_compare (addr, args->value, args->mask, + args->op); +if (err <=0 ) { +drm_dbg (&xe->drm,"LNL_FLUSH_WORKQUEUE resolved ufence timeout\n" ); +break ; + } err = -ETIME ;break ; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 180/184 drm/xe/guc/tlb: Flush g2h worker in case of tlb timeout
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nirmoy Das <[email protected]>
[ Upstream commit 1491efb39acee3848b61fcb3e5cc4be8de304352 ]
Flush the g2h worker explicitly if TLB timeout happens which is observed on LNL and that points to the recent scheduling issue with E-cores on LNL.
This is similar to the recent fix:
commit e51527233804 ("drm/xe/guc/ct: Flush g2h worker in case of g2h response timeout") and should be removed once there is E core scheduling fix.
v2: Add platform check(Himal)
v3: Remove gfx platform check as the issue related to cpu
platform(John)
Use the common WA macro(John) and print when the flush resolves timeout(Matt B)
v4: Remove the resolves log and do the flush before taking
pending_lock(Matt A)
--- drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c +2 -0
@@ -71,6 +71,8 @@ static void xe_gt_tlb_fence_timeout(struct work_struct *work)struct xe_device *xe =gt_to_xe (gt);struct xe_gt_tlb_invalidation_fence *fence, *next; +LNL_FLUSH_WORK (>->uc.guc.ct.g2h_worker); +spin_lock_irq (>->tlb_invalidation.pending_lock);list_for_each_entry_safe (fence, next, >->tlb_invalidation.pending_fences, link) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 181/184 ASoC: amd: yc: fix internal mic on Xiaomi Book Pro 14 2022
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mingcong Bai <[email protected]>
commit de156f3cf70e17dc6ff4c3c364bb97a6db961ffd upstream.
Xiaomi Book Pro 14 2022 (MIA2210-AD) requires a quirk entry for its internal microphone to be enabled.
This is likely due to similar reasons as seen previously on Redmi Book 14/15 Pro 2022 models (since they likely came with similar firmware):
- commit dcff8b7ca92d ("ASoC: amd: yc: Add Xiaomi Redmi Book Pro 15 2022 into DMI table")
- commit c1dd6bf61997 ("ASoC: amd: yc: Add Xiaomi Redmi Book Pro 14 2022 into DMI table")
A quirk would likely be needed for Xiaomi Book Pro 15 2022 models, too. However, I do not have such device on hand so I will leave it for now.
--- sound/soc/amd/yc/acp6x-mach.c | 7 +++++++ 1 file changed, 7 insertions(+)
sound/soc/amd/yc/acp6x-mach.c +7 -0
@@ -384,6 +384,13 @@ static const struct dmi_system_id yc_acp { .driver_data = &acp6x_card, .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"TIMI" ), + DMI_MATCH(DMI_PRODUCT_NAME, "Xiaomi Book Pro 14 2022"), + } + }, + { + .driver_data = &acp6x_card, + .matches = {DMI_MATCH (DMI_BOARD_VENDOR ,"Razer" ), DMI_MATCH(DMI_PRODUCT_NAME, "Blade 14 (2022) - RZ09-0427"), }
Greg Kroah-Hartman
maintainerPATCH 182/184 xtensa: Emulate one-byte cmpxchg
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul E. McKenney <[email protected]>
commit e799bef0d9c85b963938d8f31806a898385a5b09 upstream.
Use the new cmpxchg_emu_u8() to emulate one-byte cmpxchg() on xtensa.
[ paulmck: Apply kernel test robot feedback. ]
[ paulmck: Drop two-byte support per Arnd Bergmann feedback. ] [ Apply Geert Uytterhoeven feedback. ]
--- arch/xtensa/Kconfig | 1 + arch/xtensa/include/asm/cmpxchg.h | 2 ++ 2 files changed, 3 insertions(+)
arch/xtensa/Kconfig +1 -0
@@ -14,6 +14,7 @@ config XTENSA select ARCH_HAS_DMA_SET_UNCACHED if MMU select ARCH_HAS_STRNCPY_FROM_USER if !KASAN select ARCH_HAS_STRNLEN_USER + select ARCH_NEED_CMPXCHG_1_EMU select ARCH_USE_MEMTEST select ARCH_USE_QUEUED_RWLOCKS select ARCH_USE_QUEUED_SPINLOCKS
arch/xtensa/include/asm/cmpxchg.h +2 -0
@@ -15,6 +15,7 @@#include <linux/bits.h> #include <linux/stringify.h> +#include <linux/cmpxchg-emu.h> /* * cmpxchg
@@ -74,6 +75,7 @@ static __inline__ unsigned long __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) { switch (size) { + case 1: return cmpxchg_emu_u8(ptr, old, new);case 4 :return __cmpxchg_u32 (ptr, old, new);default :__cmpxchg_called_with_bad_pointer ();return old;
Greg Kroah-Hartman
maintainerPATCH 183/184 hv_sock: Initializing vsk->trans to NULL to prevent a dangling pointer
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hyunwoo Kim <[email protected]>
commit e629295bd60abf4da1db85b82819ca6a4f6c1e79 upstream.
When hvs is released, there is a possibility that vsk->trans may not be initialized to NULL, which could lead to a dangling pointer. This issue is resolved by initializing vsk->trans to NULL.
--- net/vmw_vsock/hyperv_transport.c | 1 + 1 file changed, 1 insertion(+)
net/vmw_vsock/hyperv_transport.c +1 -0
@@ -549,6 +549,7 @@ static void hvs_destruct(struct vsock_sovmbus_hvsock_device_unregister (chan);kfree (hvs); + vsk->trans =NULL ; }static int hvs_dgram_bind (struct vsock_sock *vsk,struct sockaddr_vm *addr)
Greg Kroah-Hartman
maintainerPATCH 184/184 vsock/virtio: Initialization of the dangling pointer occurring in vsk->trans
In reply to Greg Kroah-Hartman6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hyunwoo Kim <[email protected]>
commit 6ca575374dd9a507cdd16dfa0e78c2e9e20bd05f upstream.
During loopback communication, a dangling pointer can be created in vsk->trans, potentially leading to a Use-After-Free condition. This issue is resolved by initializing vsk->trans to NULL.
Message-Id: <2024102245-strive-crib-c8d3@gregkh>
--- net/vmw_vsock/virtio_transport_common.c | 1 + 1 file changed, 1 insertion(+)
net/vmw_vsock/virtio_transport_common.c +1 -0
@@ -1087,6 +1087,7 @@ void virtio_transport_destruct(struct vsstruct virtio_vsock_sock *vvs = vsk->trans;kfree (vvs); + vsk->trans =NULL ; }EXPORT_SYMBOL_GPL (virtio_transport_destruct);
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 tis 12 nov. 2024 kl 12:07 skrev Greg Kroah-Hartman <[email protected]>:
Quoted 804 lines
This is the start of the stable review cycle for the 6.11.8 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 14 Nov 2024 10:18:19 +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.11.8-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.11.y
and the diffstat can be found below.thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:Greg Kroah-Hartman <[email protected]>
Linux 6.11.8-rc1Hyunwoo Kim <[email protected]>
vsock/virtio: Initialization of the dangling pointer occurring in vsk->transHyunwoo Kim <[email protected]>
hv_sock: Initializing vsk->trans to NULL to prevent a dangling pointerPaul E. McKenney <[email protected]>
xtensa: Emulate one-byte cmpxchgMingcong Bai <[email protected]>
ASoC: amd: yc: fix internal mic on Xiaomi Book Pro 14 2022Nirmoy Das <[email protected]>
drm/xe/guc/tlb: Flush g2h worker in case of tlb timeoutNirmoy Das <[email protected]>
drm/xe/ufence: Flush xeordered_wqin case of ufence timeoutNirmoy Das <[email protected]>
drm/xe: Move LNL scheduling WA toxe_device.hBadal Nilawar <[email protected]>
drm/xe/guc/ct: Flush g2h worker in case of g2h response timeoutChristoph Hellwig <[email protected]>
block: fix queue limits checks inblk_rq_map_user_bvecfor realChristoph Hellwig <[email protected]>
block: rework bio splittingJohan Hovold <[email protected]>
firmware: qcom: scm: suppress download mode errorMukesh Ojha <[email protected]>
firmware: qcom: scm: Refactor code to support multiple dload modeMuhammad Usama Anjum <[email protected]>
selftests:hugetlb_dio: check for initial conditions to skip in the startAndrei Vagin <[email protected]>
ucounts: fix counter leak ininc_rlimit_get_ucounts()Andrew Kanner <[email protected]>
ocfs2: remove entry once instead of null-ptr-dereference inocfs2_xa_remove()Marc Zyngier <[email protected]>
irqchip/gic-v3: Force propagation of the active state with a read-backUmang Jain <[email protected]>
staging:vchiq_arm: Usedevm_kzalloc()forvchiq_arm_stateallocationUmang Jain <[email protected]>
staging:vchiq_arm: Usedevm_kzalloc()fordrv_mgmtallocationMika Westerberg <[email protected]>
thunderbolt: Fix connection issue with Pluggable UD-4VPD dockQiang Yu <[email protected]>
clk: qcom: gcc-x1e80100: Fixhalt_checkfor pipediv2 clocksJohan Hovold <[email protected]>
clk: qcom: videocc-sm8350: useHW_CTRL_TRIGGERfor vcodec GDSCsBenoît Monin <[email protected]>
USB: serial: option: add Quectel RG650VReinhard Speyerer <[email protected]>
USB: serial: option: add Fibocom FG132 0x0112 compositionJack Wu <[email protected]>
USB: serial: qcserial: add support for Sierra Wireless EM86xxDan Carpenter <[email protected]>
USB: serial:io_edgeport: fix use after free in debug printkDan Carpenter <[email protected]>
usb: typec: fix potential out of bounds inucsi_ccg_update_set_new_cam_cmd()Rex Nie <[email protected]>
usb: typec: qcom-pmic: init value of hdr_len/txbuf_len earlierRoger Quadros <[email protected]>
usb: dwc3: fix fault at system suspend if device was already runtime suspendedZijun Hu <[email protected]>
usb: musb: sunxi: Fix accessing an released usb phyMika Westerberg <[email protected]>
thunderbolt: Add only on-board retimers when !CONFIG_USB4_DEBUGFS_MARGININGHugh Dickins <[email protected]>
mm/thp: fix deferred split unqueue naming and lockingWei Yang <[email protected]>
mm/mlock: set the correct prev on failureSeongJae Park <[email protected]>
mm/damon/core: handle zero schemes apply intervalSeongJae Park <[email protected]>
mm/damon/core: handle zero {aggregation,ops_update} intervalsSeongJae Park <[email protected]>
mm/damon/core: avoid overflow indamon_feed_loop_next_input()Roman Gushchin <[email protected]>
signal: restore theoverride_rlimitlogicMasami Hiramatsu (Google) <[email protected]>
objpool: fix to make percpu slot allocation more robustQi Xi <[email protected]>
fs/proc: fix compile warning about variable 'vmcore_mmap_ops'Barnabás Czémán <[email protected]>
clk: qcom: clk-alpha-pll: Fix pll post div mask when width is not setAbel Vesa <[email protected]>
clk: qcom: gcc-x1e80100: Fix USB MP SS1 PHY GDSC pwrsts flagsLiu Peibao <[email protected]>
i2c: designware: do not hold SCL low whenI2C_DYNAMIC_TAR_UPDATEis not setTrond Myklebust <[email protected]>
filemap: Fix bounds checking infilemap_read()Benoit Sevens <[email protected]>
media: uvcvideo: Skip parsing frames of typeUVC_VS_UNDEFINEDinuvc_parse_formatShyam Sundar S K <[email protected]>
platform/x86/amd/pmf: Add SMU metrics table support for 1Ah family 60h modelShyam Sundar S K <[email protected]>
platform/x86/amd/pmf: Update SMU metrics table for 1AH family seriesShyam Sundar S K <[email protected]>
platform/x86/amd/pmf: Relocate CPU ID macros to the PMF headerFilipe Manana <[email protected]>
btrfs: reinitialize delayed ref list after deleting it from the listQu Wenruo <[email protected]>
btrfs: fix per-subvolume RO/RW flags with new mount APIHaisu Wang <[email protected]>
btrfs: fix the length of reserved qgroup to freePavan Kumar Linga <[email protected]>
idpf: fixidpf_vc_core_initerror pathPavan Kumar Linga <[email protected]>
idpf: avoid vport access inidpf_get_link_ksettingsGautam Menghani <[email protected]>
KVM: PPC: Book3S HV: Mask offLPCR_MERfor a vCPU before running it to avoid spurious interruptsKoichiro Den <[email protected]>
mm/slab: fix warning caused by duplicatekmem_cachecreation inkmem_buckets_createMark Rutland <[email protected]>
arm64: smccc: Remove broken support for SMCCCv1.3 SVE discard hintMark Rutland <[email protected]>
arm64:Kconfig: Make SME depend on BROKEN for nowMark Brown <[email protected]>
arm64/sve: Discard stale CPU state when handling SVE trapsGeliang Tang <[email protected]>
mptcp: usesock_kfree_sinstead of kfreeStefan Wahren <[email protected]>
net: vertexcom: mse102x: Fix possible double free of TX skbJinjie Ruan <[email protected]>
net: wwan: t7xx: Fix off-by-one error int7xx_dpmaif_rx_buf_alloc()Kalesh Singh <[email protected]>
tracing: Fix tracefs mount optionsRoberto Sassu <[email protected]>
nfs: Fix KMSAN warning indecode_getfattr_attrs()Bart Van Assche <[email protected]>
scsi: ufs: core: Start the RTC update work laterTakashi Iwai <[email protected]>
ALSA: usb-audio: Add quirk for HP 320 FHD WebcamMatthieu Baerts (NGI0) <[email protected]>
mptcp: no admin perm to list endpointsMikulas Patocka <[email protected]>
dm: fix a crash ifblk_alloc_diskfailsZichen Xie <[email protected]>
dm-unstriped: cast an operand tosector_tto prevent potentialuint32_toverflowMing-Hung Tsai <[email protected]>
dm cache: fix potential out-of-bounds access on the first resumeMing-Hung Tsai <[email protected]>
dm cache: optimize dirty bit checking withfind_next_bitwhen resizingMing-Hung Tsai <[email protected]>
dm cache: fix out-of-bounds access to the dirty bitset when resizingMing-Hung Tsai <[email protected]>
dm cache: fix flushing uninitializeddelayed_workoncache_ctrerrorMing-Hung Tsai <[email protected]>
dm cache: correct the number of origin blocks to match the target lengthDavid Gstir <[email protected]>
KEYS: trusted: dcp: fix NULL dereference in AEAD crypto operationDmitry Baryshkov <[email protected]>
thermal/drivers/qcom/lmh: Remove false lockdep backtraceAntonio Quartulli <[email protected]>
drm/amdgpu: prevent NULL pointer dereference if ATIF is not supportedLijo Lazar <[email protected]>
drm/amdgpu: Fix DPX valid mode check on GC 9.4.3Alex Deucher <[email protected]>
drm/amdgpu: Adjust debugfs register access permissionsAlex Deucher <[email protected]>
drm/amdgpu: add missing size check inamdgpu_debugfs_gprwave_read()Alex Deucher <[email protected]>
drm/amdgpu: Adjust debugfs eviction and IB access permissionsJann Horn <[email protected]>
drm/panthor: Be stricter about IO mapping flagsLiviu Dudau <[email protected]>
drm/panthor: Lock XArray when getting entries for the VMAurabindo Pillai <[email protected]>
drm/amd/display: parseumc_infoorvram_infobased on ASICKenneth Feng <[email protected]>
drm/amd/pm: correct the workload settingBrendan King <[email protected]>
drm/imagination: Break an object reference loopBrendan King <[email protected]>
drm/imagination: Add a per-file PVR context listTom Chung <[email protected]>
drm/amd/display: Fix brightness level not retained over rebootKenneth Feng <[email protected]>
drm/amd/pm: always pick the pptable from IFWIBjorn Andersson <[email protected]>
rpmsg: glink: Handle rejected intent request betterJarkko Sakkinen <[email protected]>
tpm: Lock TPM chip intpm_pm_suspend()firstErik Schumacher <[email protected]>
pwm: imx-tpm: Use correct MODULO value for EPWM modeBalasubramani Vivekanandan <[email protected]>
drm/xe: Set mask bits forCCS_MODEregisterMatthew Brost <[email protected]>
drm/xe: Drop VM dma-resv lock onxe_sync_in_fence_getfailure in exec IOCTLMatthew Brost <[email protected]>
drm/xe: Fix possible exec queue leak in exec IOCTLNamjae Jeon <[email protected]>
ksmbd: fix slab-use-after-free insmb3_preauth_hash_rspJinjie Ruan <[email protected]>
ksmbd: Fix the missingxa_storeerror checkNamjae Jeon <[email protected]>
ksmbd: check outstanding simultaneous SMB operationsNamjae Jeon <[email protected]>
ksmbd: fix slab-use-after-free inksmbd_smb2_session_createThomas Mühlbacher <[email protected]>
can: {cc770,sja1000}_isa: allow building on x86_64Marc Kleine-Budde <[email protected]>
can: mcp251xfd:mcp251xfd_ring_alloc(): fix coalescing configuration when switching CAN modesMarc Kleine-Budde <[email protected]>
can: mcp251xfd:mcp251xfd_get_tef_len(): fix length calculationMarc Kleine-Budde <[email protected]>
can:m_can:m_can_close(): don't callfree_irq()for IRQ-less devicesMauro Carvalho Chehab <[email protected]>
media: v4l2-ctrls-api: fix error handling forv4l2_g_ctrl()Mauro Carvalho Chehab <[email protected]>
media: v4l2-tpg: prevent the risk of a division by zeroHans Verkuil <[email protected]>
media: vivid: fix buffer overwrite when using > 32 buffersMauro Carvalho Chehab <[email protected]>
media: pulse8-cec: fix data timestamp atpulse8_setup()Mauro Carvalho Chehab <[email protected]>
media: av7110: fix a spectre vulnerabilityMauro Carvalho Chehab <[email protected]>
media: cx24116: prevent overflows on SNR calculusMauro Carvalho Chehab <[email protected]>
media: s5p-jpeg: prevent buffer overflowsMauro Carvalho Chehab <[email protected]>
media: ar0521: don't overflow when checking PLL valuesMauro Carvalho Chehab <[email protected]>
media: mgb4: protect driver against spectreHans Verkuil <[email protected]>
media: dvb-core: add missing buffer index checkJyri Sarha <[email protected]>
ASoC: SOF: sof-client-probes-ipc4: Setparam_sizeextension bitsAmelie Delaunay <[email protected]>
ASoC: stm32: spdifrx: fix dma channel release instm32_spdifrx_removeIcenowy Zheng <[email protected]>
thermal/of: support thermal zones w/o trips subnodeEmil Dahl Juhl <[email protected]>
tools/lib/thermal: Fix sampling handler context ptrMurad Masimov <[email protected]>
ALSA: firewire-lib: fix return value on fail inamdtp_tscm_init()Johannes Thumshirn <[email protected]>
scsi:sd_zbc: Usekvzalloc()to allocate REPORT ZONES bufferMauro Carvalho Chehab <[email protected]>
media: adv7604: prevent underflow condition when reporting colorspaceMauro Carvalho Chehab <[email protected]>
media:dvb_frontend: don't play tricks with underflow valuesMauro Carvalho Chehab <[email protected]>
media: dvbdev: prevent the risk of out of memory accessMauro Carvalho Chehab <[email protected]>
media:stb0899_algo: initialize cfr before using itJarosław Janik <[email protected]>
Revert "ALSA: hda/conexant: Mute speakers at suspend / shutdown"Wentao Liang <[email protected]>
drivers: net: ionic: add missed debugfs cleanup toionic_probe()error pathEric Dumazet <[email protected]>
net/smc: do not leave a dangling sk pointer in__smc_create()David Howells <[email protected]>
rxrpc: Fix missing locking causing hanging callsJohan Jonker <[email protected]>
net: arc: rockchip: fix emac mdio node supportJohan Jonker <[email protected]>
net: arc: fix the device for dma_map_single/dma_unmap_singlePhilo Lu <[email protected]>
virtio_net: Update rss when set queuePhilo Lu <[email protected]>
virtio_net: Sync rss config to device whenvirtnet_probePhilo Lu <[email protected]>
virtio_net: Addhash_key_lengthcheckPhilo Lu <[email protected]>
virtio_net: Support dynamic rss indirection table sizePablo Neira Ayuso <[email protected]>
netfilter:nf_tables: wait for rcu grace period onnet_deviceremovalNícolas F. R. A. Prado <[email protected]>
net: stmmac: Fix unbalanced IRQ wake disable warning on single irq caseDiogo Silva <[email protected]>
net: phy: ti: addPHY_RST_AFTER_CLK_ENflagPeiyang Wang <[email protected]>
net: hns3: fix kernel crash when uninstalling driverVitaly Lifshits <[email protected]>
e1000e: Remove Meteor Lake SMBUS workaroundsAleksandr Loktionov <[email protected]>
i40e: fix race condition by adding filter's intermediate sync stateMateusz Polchlopek <[email protected]>
ice: changeq_indexvariable type to s16 to store -1 valueDario Binacchi <[email protected]>
can:c_can: fix {rx,tx}_errors statisticsSuraj Gupta <[email protected]>
net: xilinx: axienet: Enqueue Tx packets in dql before dmaengine startsWei Fang <[email protected]>
net: enetc: allocatevf_stateduring PF probesXin Long <[email protected]>
sctp: properly validate chunk size insctp_sf_ootb()Suraj Gupta <[email protected]>
dt-bindings: net: xlnx,axi-ethernet: Correct phy-mode property valueVladimir Oltean <[email protected]>
net:dpaa_eth: print FD status in CPU endianness indpaa_eth_fdtracepointWei Fang <[email protected]>
net: enetc: set MAC address to the VFnet_deviceChiYuan Huang <[email protected]>
regulator: rtq2208: Fix uninitialized use ofregulator_configChen Ridong <[email protected]>
security/keys: fix slab-out-of-bounds inkey_task_permissionMike Snitzer <[email protected]>
nfs: avoidi_lockcontention innfs_clear_invalid_mappingTrond Myklebust <[email protected]>
NFS: Further fixes to attribute delegation a/mtime changesTrond Myklebust <[email protected]>
NFS: Fix attribute delegation behaviour on exclusive createNeilBrown <[email protected]>
NFSv3: only use NFS timeout for MOUNT when protocols are compatibleNeilBrown <[email protected]>
sunrpc: handle-ENOTCONNinxs_tcp_setup_socket()Corey Hickey <[email protected]>
platform/x86/amd/pmc: Detect when STB is not availableJiri Kosina <[email protected]>
HID: core: zero-initialize the report bufferDiederik de Haas <[email protected]>
arm64: dts: rockchip: Correct GPIO polarity on brcm BT nodesHeiko Stuebner <[email protected]>
ARM: dts: rockchip: Fix the realtek audio codec on rk3036-kylinHeiko Stuebner <[email protected]>
ARM: dts: rockchip: Fix the spi controller on rk3036Heiko Stuebner <[email protected]>
ARM: dts: rockchip: drop grf reference from rk3036 hdmiHeiko Stuebner <[email protected]>
ARM: dts: rockchip: fix rk3036 acodec nodeHeiko Stuebner <[email protected]>
arm64: dts: rockchip: remove orphaned pinctrl-names from pinephone proQingqing Zhou <[email protected]>
firmware: qcom: scm: Return-EOPNOTSUPPfor unsupported SHM bridge enablingXinqi Zhang <[email protected]>
firmware:arm_scmi: Fix slab-use-after-free inscmi_bus_notifier()Marek Vasut <[email protected]>
arm64: dts: imx8mp-phyboard-pollux: Set Video PLL1 frequency to 506.8 MHzPeng Fan <[email protected]>
arm64: dts: imx8mp: correct sdhc ipg clkAlexander Stein <[email protected]>
arm64: dts: imx8-ss-vpu: Fix imx8qm VPU IRQsDmitry Baryshkov <[email protected]>
arm64: dts: qcom: sm8450 fix PIPE clock specification for pcie1Heiko Stuebner <[email protected]>
arm64: dts: rockchip: remove num-slots property from rk3328-nanopi-r2s-plusHeiko Stuebner <[email protected]>
arm64: dts: rockchip: Fix LED triggers on rk3308-roc-ccHeiko Stuebner <[email protected]>
arm64: dts: rockchip: Remove #cooling-cells from fan on Theobroma lionHeiko Stuebner <[email protected]>
arm64: dts: rockchip: Remove undocumented supports-emmc propertySergey Bostandzhyan <[email protected]>
arm64: dts: rockchip: Add DTS for FriendlyARM NanoPi R2S PlusHeiko Stuebner <[email protected]>
arm64: dts: rockchip: Fix bluetooth properties on Rock960 boardsHeiko Stuebner <[email protected]>
arm64: dts: rockchip: Fix bluetooth properties on rk3566 box demoHeiko Stuebner <[email protected]>
arm64: dts: rockchip: Drop regulator-init-microvolt from two boardsHeiko Stuebner <[email protected]>
arm64: dts: rockchip: fix i2c2 pinctrl-names property on anbernic-rg353p/vDiederik de Haas <[email protected]>
arm64: dts: rockchip: Fix reset-gpios property on brcm BT nodesDiederik de Haas <[email protected]>
arm64: dts: rockchip: Fix wakeup prop names on PineNote BT nodeDiederik de Haas <[email protected]>
arm64: dts: rockchip: Remove hdmi's 2nd interrupt on rk3328Rajendra Nayak <[email protected]>
EDAC/qcom: Make irq configuration optionalBartosz Golaszewski <[email protected]>
firmware: qcom: scm: fix a NULL-pointer dereferenceSam Edwards <[email protected]>
arm64: dts: rockchip: Designate Turing RK1's system power controllerDragan Simic <[email protected]>
arm64: dts: rockchip: Start cooling maps numbering from zero on ROCK 5BDragan Simic <[email protected]>
arm64: dts: rockchip: Move L3 cache outside CPUs in RK3588(S) SoC dtsiGeert Uytterhoeven <[email protected]>
arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-sapphire-excavatorGeert Uytterhoeven <[email protected]>
arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-eaidk-610-------------
Diffstat:
.../devicetree/bindings/net/xlnx,axi-ethernet.yaml | 2 +- Documentation/netlink/specs/mptcp_pm.yaml | 1 - Makefile | 4 +- arch/arm/boot/dts/rockchip/rk3036-kylin.dts | 4 +- arch/arm/boot/dts/rockchip/rk3036.dtsi | 14 +- arch/arm64/Kconfig | 1 + arch/arm64/boot/dts/freescale/imx8-ss-vpu.dtsi | 4 +- .../dts/freescale/imx8mp-phyboard-pollux-rdk.dts | 12 ++ arch/arm64/boot/dts/freescale/imx8mp.dtsi | 6 +- arch/arm64/boot/dts/freescale/imx8qxp-ss-vpu.dtsi | 8 ++ arch/arm64/boot/dts/qcom/sm8450.dtsi | 2 +- arch/arm64/boot/dts/rockchip/Makefile | 1 + arch/arm64/boot/dts/rockchip/px30-ringneck.dtsi | 1 - arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts | 4 +- .../boot/dts/rockchip/rk3328-nanopi-r2s-plus.dts | 30 +++++ arch/arm64/boot/dts/rockchip/rk3328.dtsi | 3 +- arch/arm64/boot/dts/rockchip/rk3368-lion.dtsi | 1 - arch/arm64/boot/dts/rockchip/rk3399-eaidk-610.dts | 2 +- .../boot/dts/rockchip/rk3399-pinephone-pro.dts | 2 - arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi | 2 +- .../dts/rockchip/rk3399-sapphire-excavator.dts | 2 +- .../boot/dts/rockchip/rk3566-anbernic-rg353p.dts | 2 +- .../boot/dts/rockchip/rk3566-anbernic-rg353v.dts | 2 +- arch/arm64/boot/dts/rockchip/rk3566-box-demo.dts | 6 +- arch/arm64/boot/dts/rockchip/rk3566-lubancat-1.dts | 1 - arch/arm64/boot/dts/rockchip/rk3566-pinenote.dtsi | 6 +- arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3.dtsi | 2 +- arch/arm64/boot/dts/rockchip/rk3568-lubancat-2.dts | 1 - arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts | 3 - arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 20 +-- arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 4 +- .../arm64/boot/dts/rockchip/rk3588-toybrick-x0.dts | 1 - .../arm64/boot/dts/rockchip/rk3588-turing-rk1.dtsi | 1 + arch/arm64/kernel/fpsimd.c | 1 + arch/arm64/kernel/smccc-call.S | 35 +---- arch/powerpc/kvm/book3s_hv.c | 12 ++ arch/xtensa/Kconfig | 1 + arch/xtensa/include/asm/cmpxchg.h | 2 + block/blk-map.c | 56 +++----- block/blk-merge.c | 146 ++++++++------------- block/blk-mq.c | 11 +- block/blk.h | 69 ++++++---- drivers/char/tpm/tpm-chip.c | 4 - drivers/char/tpm/tpm-interface.c | 32 +++-- drivers/clk/qcom/clk-alpha-pll.c | 2 +- drivers/clk/qcom/gcc-x1e80100.c | 12 +- drivers/clk/qcom/videocc-sm8350.c | 4 +- drivers/edac/qcom_edac.c | 8 +- drivers/firmware/arm_scmi/bus.c | 7 +- drivers/firmware/qcom/Kconfig | 11 -- drivers/firmware/qcom/qcom_scm.c | 77 +++++++++-- drivers/firmware/smccc/smccc.c | 4 - drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 10 +- drivers/gpu/drm/amd/amdgpu/aqua_vanjaram.c | 2 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 +++ drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 4 +- drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 49 +++++-- drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h | 4 +- drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c | 5 +- drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c | 5 +- .../drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 5 +- drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c | 4 +- drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c | 4 +- .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 20 ++- .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 5 +- .../gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c | 74 +---------- drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c | 8 ++ drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h | 2 + drivers/gpu/drm/imagination/pvr_context.c | 33 +++++ drivers/gpu/drm/imagination/pvr_context.h | 21 +++ drivers/gpu/drm/imagination/pvr_device.h | 10 ++ drivers/gpu/drm/imagination/pvr_drv.c | 3 + drivers/gpu/drm/imagination/pvr_vm.c | 22 +++- drivers/gpu/drm/imagination/pvr_vm.h | 1 + drivers/gpu/drm/panthor/panthor_device.c | 4 + drivers/gpu/drm/panthor/panthor_mmu.c | 2 + drivers/gpu/drm/xe/regs/xe_gt_regs.h | 2 +- drivers/gpu/drm/xe/xe_device.h | 14 ++ drivers/gpu/drm/xe/xe_exec.c | 13 +- drivers/gpu/drm/xe/xe_gt_ccs_mode.c | 6 + drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 2 + drivers/gpu/drm/xe/xe_guc_ct.c | 9 ++ drivers/gpu/drm/xe/xe_wait_user_fence.c | 7 + drivers/hid/hid-core.c | 2 +- drivers/i2c/busses/i2c-designware-common.c | 6 +- drivers/i2c/busses/i2c-designware-core.h | 1 + drivers/irqchip/irq-gic-v3.c | 7 + drivers/md/dm-cache-target.c | 59 +++++---- drivers/md/dm-unstripe.c | 4 +- drivers/md/dm.c | 4 +- drivers/media/cec/usb/pulse8/pulse8-cec.c | 2 +- drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 3 + drivers/media/dvb-core/dvb_frontend.c | 4 +- drivers/media/dvb-core/dvb_vb2.c | 8 +- drivers/media/dvb-core/dvbdev.c | 17 ++- drivers/media/dvb-frontends/cx24116.c | 7 +- drivers/media/dvb-frontends/stb0899_algo.c | 2 +- drivers/media/i2c/adv7604.c | 26 ++-- drivers/media/i2c/ar0521.c | 4 +- drivers/media/pci/mgb4/mgb4_cmt.c | 2 + .../media/platform/samsung/s5p-jpeg/jpeg-core.c | 17 ++- drivers/media/test-drivers/vivid/vivid-core.c | 2 +- drivers/media/test-drivers/vivid/vivid-core.h | 4 +- drivers/media/test-drivers/vivid/vivid-ctrls.c | 2 +- drivers/media/test-drivers/vivid/vivid-vid-cap.c | 2 +- drivers/media/usb/uvc/uvc_driver.c | 2 +- drivers/media/v4l2-core/v4l2-ctrls-api.c | 17 ++- drivers/net/can/c_can/c_can_main.c | 7 +- drivers/net/can/cc770/Kconfig | 2 +- drivers/net/can/m_can/m_can.c | 3 +- drivers/net/can/sja1000/Kconfig | 2 +- drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c | 8 +- drivers/net/can/spi/mcp251xfd/mcp251xfd-tef.c | 10 +- drivers/net/ethernet/arc/emac_main.c | 27 ++-- drivers/net/ethernet/arc/emac_mdio.c | 9 +- .../net/ethernet/freescale/dpaa/dpaa_eth_trace.h | 2 +- drivers/net/ethernet/freescale/enetc/enetc_pf.c | 18 +-- drivers/net/ethernet/freescale/enetc/enetc_vf.c | 9 +- drivers/net/ethernet/hisilicon/hns3/hnae3.c | 5 +- drivers/net/ethernet/intel/e1000e/ich8lan.c | 17 +-- drivers/net/ethernet/intel/i40e/i40e.h | 1 + drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 1 + drivers/net/ethernet/intel/i40e/i40e_main.c | 12 +- drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c | 3 +- drivers/net/ethernet/intel/ice/ice_fdir.h | 4 +- drivers/net/ethernet/intel/idpf/idpf.h | 4 +- drivers/net/ethernet/intel/idpf/idpf_ethtool.c | 11 +- drivers/net/ethernet/intel/idpf/idpf_lib.c | 5 +- drivers/net/ethernet/intel/idpf/idpf_virtchnl.c | 3 +- .../net/ethernet/pensando/ionic/ionic_bus_pci.c | 1 + drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 1 + drivers/net/ethernet/vertexcom/mse102x.c | 5 +- drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 4 +- drivers/net/phy/dp83848.c | 2 + drivers/net/virtio_net.c | 119 ++++++++++++++--- drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c | 2 +- drivers/platform/x86/amd/pmc/pmc.c | 5 + drivers/platform/x86/amd/pmf/core.c | 21 ++- drivers/platform/x86/amd/pmf/pmf.h | 55 ++++++++ drivers/platform/x86/amd/pmf/spc.c | 52 +++++--- drivers/pwm/pwm-imx-tpm.c | 4 +- drivers/regulator/rtq2208-regulator.c | 2 +- drivers/rpmsg/qcom_glink_native.c | 10 +- drivers/scsi/sd_zbc.c | 3 +- drivers/soc/qcom/llcc-qcom.c | 3 + drivers/staging/media/av7110/av7110.h | 4 +- drivers/staging/media/av7110/av7110_ca.c | 25 ++-- .../vc04_services/interface/vchiq_arm/vchiq_arm.c | 6 +- drivers/thermal/qcom/lmh.c | 7 + drivers/thermal/thermal_of.c | 21 ++- drivers/thunderbolt/retimer.c | 2 + drivers/thunderbolt/usb4.c | 2 +- drivers/ufs/core/ufshcd.c | 10 +- drivers/usb/dwc3/core.c | 25 ++-- drivers/usb/musb/sunxi.c | 2 - drivers/usb/serial/io_edgeport.c | 8 +- drivers/usb/serial/option.c | 6 + drivers/usb/serial/qcserial.c | 2 + .../usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 8 +- drivers/usb/typec/ucsi/ucsi_ccg.c | 2 + fs/btrfs/bio.c | 30 +++-- fs/btrfs/delayed-ref.c | 2 +- fs/btrfs/inode.c | 2 +- fs/btrfs/super.c | 25 +--- fs/nfs/inode.c | 70 ++++++---- fs/nfs/nfs4proc.c | 4 + fs/nfs/super.c | 10 +- fs/ocfs2/xattr.c | 3 +- fs/proc/vmcore.c | 9 +- fs/smb/server/connection.c | 1 + fs/smb/server/connection.h | 1 + fs/smb/server/mgmt/user_session.c | 15 ++- fs/smb/server/server.c | 20 +-- fs/smb/server/smb_common.c | 10 +- fs/smb/server/smb_common.h | 2 +- fs/tracefs/inode.c | 12 +- include/linux/arm-smccc.h | 32 +---- include/linux/bio.h | 4 +- include/linux/soc/qcom/llcc-qcom.h | 2 + include/linux/user_namespace.h | 3 +- include/net/netfilter/nf_tables.h | 4 + include/trace/events/rxrpc.h | 1 + kernel/signal.c | 3 +- kernel/ucount.c | 9 +- lib/objpool.c | 18 ++- mm/damon/core.c | 42 ++++-- mm/filemap.c | 2 +- mm/huge_memory.c | 35 +++-- mm/internal.h | 10 +- mm/memcontrol-v1.c | 25 ++++ mm/memcontrol.c | 8 +- mm/migrate.c | 4 +- mm/mlock.c | 9 +- mm/page_alloc.c | 1 - mm/slab_common.c | 31 +++-- mm/swap.c | 4 +- mm/vmscan.c | 4 +- net/mptcp/mptcp_pm_gen.c | 1 - net/mptcp/pm_userspace.c | 3 +- net/netfilter/nf_tables_api.c | 41 +++++- net/rxrpc/conn_client.c | 4 + net/sctp/sm_statefuns.c | 2 +- net/smc/af_smc.c | 4 +- net/sunrpc/xprtsock.c | 1 + net/vmw_vsock/hyperv_transport.c | 1 + net/vmw_vsock/virtio_transport_common.c | 1 + security/keys/keyring.c | 7 +- security/keys/trusted-keys/trusted_dcp.c | 9 +- sound/firewire/tascam/amdtp-tascam.c | 2 +- sound/pci/hda/patch_conexant.c | 2 - sound/soc/amd/yc/acp6x-mach.c | 7 + sound/soc/sof/sof-client-probes-ipc4.c | 1 + sound/soc/stm/stm32_spdifrx.c | 2 +- sound/usb/mixer.c | 1 + sound/usb/quirks.c | 2 + tools/lib/thermal/sampling.c | 2 + tools/testing/selftests/mm/hugetlb_dio.c | 19 ++- 218 files changed, 1518 insertions(+), 865 deletions(-)
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 6.11.8 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
CIP testing did not find any problems here:
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-6.11.y
6.6, 5.15 pass our testing, too:
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-6.6.y
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-5.15.y
Best regards,
Pavel
Signature · 2 lines
DENX Software Engineering GmbH, Managing Director: Erika Unter HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.11.8 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 14 Nov 2024 10:18:19 +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.11.8-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.11.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.11.8 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 14 Nov 2024 10:18:19 +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.11.8-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.11.y
and the diffstat can be found below.thanks,
greg k-h
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.11.8 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 14 Nov 2024 10:18:19 +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.11.8-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.11.y
and the diffstat can be found below.thanks,
greg k-h
No problems on 32-bit ARM kernels, including building perf, however on ARM64 and MIPS, I got the following:
/local/users/fainelli/buildroot/output/arm64/host/bin/aarch64-linux-ld: /local/users/fainelli/buildroot/output/arm64/build/linux-custom/tools/perf/tests/shell/lock_contention.sh.shellcheck_log: file not recognized: file truncated make[6]: *** [/local/users/fainelli/buildroot/output/arm64/build/linux-custom/tools/build/Makefile.build:164: /local/users/fainelli/buildroot/output/arm64/build/linux-custom/tools/perf/tests/perf-test-in.o] Error 1 make[5]: *** [/local/users/fainelli/buildroot/output/arm64/build/linux-custom/tools/build/Makefile.build:158: tests] Error 2
make[4]: *** [Makefile.perf:775: /local/users/fainelli/buildroot/output/arm64/build/linux-custom/tools/perf/perf-test-in.o] Error 2
make[3]: *** [Makefile.perf:290: sub-make] Error 2
make[2]: *** [Makefile:70: all] Error 2
make[1]: *** [package/pkg-generic.mk:300: /local/users/fainelli/buildroot/output/arm64/build/linux-tools/.stamp_built] Error 2
make: *** [Makefile:29: _all] Error 2
Will run a bisection to figure out where it is coming from.
Signature · 1 line
Florian
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.11.8 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 14 Nov 2024 10:18:19 +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.11.8-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.11.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.
## Build
* kernel: 6.11.8-rc1
* git: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
* git commit: a5b459e185d11096a9edda920413f07fc50f6071
* git describe: v6.11.7-185-ga5b459e185d1
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.11.y/build/v6.11.7-185-ga5b459e185d1
## Test Regressions (compared to v6.11.4-646-g504b1103618a)
## Metric Regressions (compared to v6.11.4-646-g504b1103618a)
## Test Fixes (compared to v6.11.4-646-g504b1103618a)
## Metric Fixes (compared to v6.11.4-646-g504b1103618a)
## Test result summary
total: 312413, pass: 259601, fail: 3622, skip: 49190, xfail: 0
## Build Summary
* arc: 10 total, 10 passed, 0 failed
* arm: 262 total, 258 passed, 4 failed
* arm64: 86 total, 86 passed, 0 failed
* i386: 36 total, 32 passed, 4 failed
* mips: 52 total, 50 passed, 2 failed
* parisc: 8 total, 8 passed, 0 failed
* powerpc: 64 total, 62 passed, 2 failed
* riscv: 32 total, 30 passed, 2 failed
* s390: 28 total, 26 passed, 2 failed
* sh: 10 total, 10 passed, 0 failed
* sparc: 8 total, 6 passed, 2 failed
* x86_64: 70 total, 70 passed, 0 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-livepatch
* 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-watchdog
* kselftest-x86
* kunit
* kvm-unit-tests
* libgpiod
* libhugetlbfs
* log-parser-boot
* log-parser-test
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* 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
Quoted 4 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.11.8 release. There are 184 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.
Am 12.11.2024 um 11:19 schrieb Greg Kroah-Hartman:
Quoted 4 lines
This is the start of the stable review cycle for the 6.11.8 release. There are 184 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]
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.11.8 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 14 Nov 2024 10:18:19 +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.11.8-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.11.y
and the diffstat can be found below.thanks,
greg k-h
All tests passing for Tegra ...
Test results for stable-v6.11:
10 builds: 10 pass, 0 fail
26 boots: 26 pass, 0 fail
116 tests: 116 pass, 0 failLinux version: 6.11.8-rc1-ga5b459e185d1
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
Thanks,
Hardik
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.11.8 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 14 Nov 2024 10:18:19 +0000. Anything received after that time might be too late.
Tested on a ThinkPad E14 Gen 3 with a AMD Ryzen 5 5500U CPU and on the Steam Deck (LCD variant)