1. 25 Sep, 2023 5 commits
    • Wen Gong's avatar
      wifi: mac80211: allow transmitting EAPOL frames with tainted key · 61304336
      Wen Gong authored
      Lower layer device driver stop/wake TX by calling ieee80211_stop_queue()/
      ieee80211_wake_queue() while hw scan. Sometimes hw scan and PTK rekey are
      running in parallel, when M4 sent from wpa_supplicant arrive while the TX
      queue is stopped, then the M4 will pending send, and then new key install
      from wpa_supplicant. After TX queue wake up by lower layer device driver,
      the M4 will be dropped by below call stack.
      
      When key install started, the current key flag is set KEY_FLAG_TAINTED in
      ieee80211_pairwise_rekey(), and then mac80211 wait key install complete by
      lower layer device driver. Meanwhile ieee80211_tx_h_select_key() will return
      TX_DROP for the M4 in step 12 below, and then ieee80211_free_txskb() called
      by ieee80211_tx_dequeue(), so the M4 will not send and free, then the rekey
      process failed becaue AP not receive M4. Please see details in steps below.
      
      There are a interval between KEY_FLAG_TAINTED set for current key flag and
      install key complete by lower layer device driver, the KEY_FLAG_TAINTED is
      set in this interval, all packet including M4 will be dropped in this
      interval, the interval is step 8~13 as below.
      
      issue steps:
            TX thread                 install key thread
      1.   stop_queue                      -idle-
      2.   sending M4                      -idle-
      3.   M4 pending                      -idle-
      4.     -idle-                  starting install key from wpa_supplicant
      5.     -idle-                  =>ieee80211_key_replace()
      6.     -idle-                  =>ieee80211_pairwise_rekey() and set
                                       currently key->flags |= KEY_FLAG_TAINTED
      7.     -idle-                  =>ieee80211_key_enable_hw_accel()
      8.     -idle-                  =>drv_set_key() and waiting key install
                                       complete from lower layer device driver
      9.   wake_queue                     -waiting state-
      10.  re-sending M4                  -waiting state-
      11.  =>ieee80211_tx_h_select_key()  -waiting state-
      12.  drop M4 by KEY_FLAG_TAINTED    -waiting state-
      13.    -idle-                   install key complete with success/fail
                                        success: clear flag KEY_FLAG_TAINTED
                                        fail: start disconnect
      
      Hence add check in step 11 above to allow the EAPOL send out in the
      interval. If lower layer device driver use the old key/cipher to encrypt
      the M4, then AP received/decrypt M4 correctly, after M4 send out, lower
      layer device driver install the new key/cipher to hardware and return
      success.
      
      If lower layer device driver use new key/cipher to send the M4, then AP
      will/should drop the M4, then it is same result with this issue, AP will/
      should kick out station as well as this issue.
      
      issue log:
      kworker/u16:4-5238  [000]  6456.108926: stop_queue:           phy1 queue:0, reason:0
      wpa_supplicant-961  [003]  6456.119737: rdev_tx_control_port: wiphy_name=phy1 name=wlan0 ifindex=6 dest=ARRAY[9e, 05, 31, 20, 9b, d0] proto=36488 unencrypted=0
      wpa_supplicant-961  [003]  6456.119839: rdev_return_int_cookie: phy1, returned 0, cookie: 504
      wpa_supplicant-961  [003]  6456.120287: rdev_add_key:         phy1, netdev:wlan0(6), key_index: 0, mode: 0, pairwise: true, mac addr: 9e:05:31:20:9b:d0
      wpa_supplicant-961  [003]  6456.120453: drv_set_key:          phy1 vif:wlan0(2) sta:9e:05:31:20:9b:d0 cipher:0xfac04, flags=0x9, keyidx=0, hw_key_idx=0
      kworker/u16:9-3829  [001]  6456.168240: wake_queue:           phy1 queue:0, reason:0
      kworker/u16:9-3829  [001]  6456.168255: drv_wake_tx_queue:    phy1 vif:wlan0(2) sta:9e:05:31:20:9b:d0 ac:0 tid:7
      kworker/u16:9-3829  [001]  6456.168305: cfg80211_control_port_tx_status: wdev(1), cookie: 504, ack: false
      wpa_supplicant-961  [003]  6459.167982: drv_return_int:       phy1 - -110
      
      issue call stack:
      nl80211_frame_tx_status+0x230/0x340 [cfg80211]
      cfg80211_control_port_tx_status+0x1c/0x28 [cfg80211]
      ieee80211_report_used_skb+0x374/0x3e8 [mac80211]
      ieee80211_free_txskb+0x24/0x40 [mac80211]
      ieee80211_tx_dequeue+0x644/0x954 [mac80211]
      ath10k_mac_tx_push_txq+0xac/0x238 [ath10k_core]
      ath10k_mac_op_wake_tx_queue+0xac/0xe0 [ath10k_core]
      drv_wake_tx_queue+0x80/0x168 [mac80211]
      __ieee80211_wake_txqs+0xe8/0x1c8 [mac80211]
      _ieee80211_wake_txqs+0xb4/0x120 [mac80211]
      ieee80211_wake_txqs+0x48/0x80 [mac80211]
      tasklet_action_common+0xa8/0x254
      tasklet_action+0x2c/0x38
      __do_softirq+0xdc/0x384
      Signed-off-by: default avatarWen Gong <quic_wgong@quicinc.com>
      Link: https://lore.kernel.org/r/20230801064751.25803-1-quic_wgong@quicinc.comSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      61304336
    • Johannes Berg's avatar
      wifi: mac80211: work around Cisco AP 9115 VHT MPDU length · 084cf2ae
      Johannes Berg authored
      Cisco AP module 9115 with FW 17.3 has a bug and sends a too
      large maximum MPDU length in the association response
      (indicating 12k) that it cannot actually process.
      
      Work around that by taking the minimum between what's in the
      association response and the BSS elements (from beacon or
      probe response).
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
      Link: https://lore.kernel.org/r/20230918140607.d1966a9a532e.I090225babb7cd4d1081ee9acd40e7de7e41c15ae@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      084cf2ae
    • Ilan Peer's avatar
      wifi: cfg80211: Fix 6GHz scan configuration · 0914468a
      Ilan Peer authored
      When the scan request includes a non broadcast BSSID, when adding the
      scan parameters for 6GHz collocated scanning, do not include entries
      that do not match the given BSSID.
      Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
      Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
      Link: https://lore.kernel.org/r/20230918140607.6d31d2a96baf.I6c4e3e3075d1d1878ee41f45190fdc6b86f18708@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      0914468a
    • Johannes Berg's avatar
      wifi: mac80211: fix potential key leak · d097ae01
      Johannes Berg authored
      When returning from ieee80211_key_link(), the key needs to
      have been freed or successfully installed. This was missed
      in a number of error paths, fix it.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      d097ae01
    • Johannes Berg's avatar
      wifi: mac80211: fix potential key use-after-free · 31db78a4
      Johannes Berg authored
      When ieee80211_key_link() is called by ieee80211_gtk_rekey_add()
      but returns 0 due to KRACK protection (identical key reinstall),
      ieee80211_gtk_rekey_add() will still return a pointer into the
      key, in a potential use-after-free. This normally doesn't happen
      since it's only called by iwlwifi in case of WoWLAN rekey offload
      which has its own KRACK protection, but still better to fix, do
      that by returning an error code and converting that to success on
      the cfg80211 boundary only, leaving the error for bad callers of
      ieee80211_gtk_rekey_add().
      Reported-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
      Fixes: fdf7cb41 ("mac80211: accept key reinstall without changing anything")
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      31db78a4
  2. 22 Sep, 2023 1 commit
  3. 18 Sep, 2023 4 commits
  4. 13 Sep, 2023 2 commits
  5. 11 Sep, 2023 7 commits
  6. 04 Sep, 2023 10 commits
    • Gustavo A. R. Silva's avatar
      wifi: mwifiex: Sanity check tlv_len and tlv_bitmap_len · d5a93b7d
      Gustavo A. R. Silva authored
      Add sanity checks for both `tlv_len` and `tlv_bitmap_len` before
      decoding data from `event_buf`.
      
      This prevents any malicious or buggy firmware from overflowing
      `event_buf` through large values for `tlv_len` and `tlv_bitmap_len`.
      Suggested-by: default avatarDan Williams <dcbw@redhat.com>
      Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/d4f8780527d551552ee96f17a0229e02e1c200d1.1692931954.git.gustavoars@kernel.org
      d5a93b7d
    • Gustavo A. R. Silva's avatar
      wifi: mwifiex: Replace one-element array with flexible-array member in struct... · c7847241
      Gustavo A. R. Silva authored
      wifi: mwifiex: Replace one-element array with flexible-array member in struct mwifiex_ie_types_rxba_sync
      
      One-element and zero-length arrays are deprecated. So, replace
      one-element array in struct mwifiex_ie_types_rxba_sync with
      flexible-array member, and refactor the rest of the code, accordingly.
      
      This results in no differences in binary output.
      Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/79c801c69c8beece2f80502c60166036d3c047cc.1692931954.git.gustavoars@kernel.org
      c7847241
    • Gustavo A. R. Silva's avatar
      wifi: mwifiex: Fix tlv_buf_left calculation · eec679e4
      Gustavo A. R. Silva authored
      In a TLV encoding scheme, the Length part represents the length after
      the header containing the values for type and length. In this case,
      `tlv_len` should be:
      
      tlv_len == (sizeof(*tlv_rxba) - 1) - sizeof(tlv_rxba->header) + tlv_bitmap_len
      
      Notice that the `- 1` accounts for the one-element array `bitmap`, which
      1-byte size is already included in `sizeof(*tlv_rxba)`.
      
      So, if the above is correct, there is a double-counting of some members
      in `struct mwifiex_ie_types_rxba_sync`, when `tlv_buf_left` and `tmp`
      are calculated:
      
      968                 tlv_buf_left -= (sizeof(*tlv_rxba) + tlv_len);
      969                 tmp = (u8 *)tlv_rxba + tlv_len + sizeof(*tlv_rxba);
      
      in specific, members:
      
      drivers/net/wireless/marvell/mwifiex/fw.h:777
       777         u8 mac[ETH_ALEN];
       778         u8 tid;
       779         u8 reserved;
       780         __le16 seq_num;
       781         __le16 bitmap_len;
      
      This is clearly wrong, and affects the subsequent decoding of data in
      `event_buf` through `tlv_rxba`:
      
      970                 tlv_rxba = (struct mwifiex_ie_types_rxba_sync *)tmp;
      
      Fix this by using `sizeof(tlv_rxba->header)` instead of `sizeof(*tlv_rxba)`
      in the calculation of `tlv_buf_left` and `tmp`.
      
      This results in the following binary differences before/after changes:
      
      | drivers/net/wireless/marvell/mwifiex/11n_rxreorder.o
      | @@ -4698,11 +4698,11 @@
      |  drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c:968
      |                 tlv_buf_left -= (sizeof(tlv_rxba->header) + tlv_len);
      | -    1da7:      lea    -0x11(%rbx),%edx
      | +    1da7:      lea    -0x4(%rbx),%edx
      |      1daa:      movzwl %bp,%eax
      |  drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c:969
      |                 tmp = (u8 *)tlv_rxba  + sizeof(tlv_rxba->header) + tlv_len;
      | -    1dad:      lea    0x11(%r15,%rbp,1),%r15
      | +    1dad:      lea    0x4(%r15,%rbp,1),%r15
      
      The above reflects the desired change: avoid counting 13 too many bytes;
      which is the total size of the double-counted members in
      `struct mwifiex_ie_types_rxba_sync`:
      
      $ pahole -C mwifiex_ie_types_rxba_sync drivers/net/wireless/marvell/mwifiex/11n_rxreorder.o
      struct mwifiex_ie_types_rxba_sync {
      	struct mwifiex_ie_types_header header;           /*     0     4 */
      
           |-----------------------------------------------------------------------
           |  u8                         mac[6];               /*     4     6 */  |
           |	u8                         tid;                  /*    10     1 */  |
           |  u8                         reserved;             /*    11     1 */  |
           | 	__le16                     seq_num;              /*    12     2 */  |
           | 	__le16                     bitmap_len;           /*    14     2 */  |
           |  u8                         bitmap[1];            /*    16     1 */  |
           |----------------------------------------------------------------------|
      								  | 13 bytes|
      								  -----------
      
      	/* size: 17, cachelines: 1, members: 7 */
      	/* last cacheline: 17 bytes */
      } __attribute__((__packed__));
      
      Fixes: 99ffe72c ("mwifiex: process rxba_sync event")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/06668edd68e7a26bbfeebd1201ae077a2a7a8bce.1692931954.git.gustavoars@kernel.org
      eec679e4
    • Jeff Johnson's avatar
      MAINTAINERS: wifi: ath12k: add wiki link · af5ff4b7
      Jeff Johnson authored
      The ath12k wireless driver now has a wiki, so advertise it.
      Signed-off-by: default avatarJeff Johnson <quic_jjohnson@quicinc.com>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20230829-ath12kwiki-v1-1-df37127527a1@quicinc.com
      af5ff4b7
    • Kalle Valo's avatar
      MAINTAINERS: wifi: hostap: remove maintainer and web page · d253fb37
      Kalle Valo authored
      As hostap is marked as obsolete there's no need to have a maintainer. Also
      remove the link to the web page.
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20230828123603.87621-5-kvalo@kernel.org
      d253fb37
    • Kalle Valo's avatar
      MAINTAINERS: wifi: wl12xx: remove git tree · b8c713c1
      Kalle Valo authored
      Luca's tree hasn't been used for 10 years so remove it.
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20230828123603.87621-4-kvalo@kernel.org
      b8c713c1
    • Kalle Valo's avatar
      MAINTAINERS: wifi: rtl8xxxu: remove git tree · 42c5f0e2
      Kalle Valo authored
      Jes' tree hasn't been used for six years so remove it.
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20230828123603.87621-3-kvalo@kernel.org
      42c5f0e2
    • Kalle Valo's avatar
      MAINTAINERS: wifi: rtlwifi: remove git tree · 0b9480da
      Kalle Valo authored
      Linville's tree hasn't been used for something like 10 years so remove it.
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20230828123603.87621-2-kvalo@kernel.org
      0b9480da
    • Kalle Valo's avatar
      MAINTAINERS: wifi: remove generic wiki links from drivers · 84727c57
      Kalle Valo authored
      The top level entry for wireless drivers already contains to the wiki so no
      need to duplicate that in driver entries:
      
      NETWORKING DRIVERS (WIRELESS)
      [...]
      W:	https://wireless.wiki.kernel.org/Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20230828123603.87621-1-kvalo@kernel.org
      84727c57
    • Lorenzo Bianconi's avatar
      wifi: mt76: fix lock dependency problem for wed_lock · 19527314
      Lorenzo Bianconi authored
      Fix the following kernel depency lock holding wed_lock with BH disabled.
      
      [   40.579696] mt798x-wmac 18000000.wifi: attaching wed device 0 version 2
      [   40.604648] platform 15010000.wed: MTK WED WO Firmware Version: DEV_000000, Build Time: 20221208202138
      [   40.613972] platform 15010000.wed: MTK WED WO Chip ID 00 Region 3
      [   40.943617]
      [   40.945118] ========================================================
      [   40.951457] WARNING: possible irq lock inversion dependency detected
      [   40.957797] 5.15.127 #0 Not tainted
      [   40.961276] --------------------------------------------------------
      [   40.967614] insmod/2329 just changed the state of lock:
      [   40.972827] ffffff8004003b08 (&dev->wed_lock){+.+.}-{2:2}, at: mt76_get_rxwi+0x1c/0xac [mt76]
      [   40.981387] but this lock was taken by another, SOFTIRQ-safe lock in the past:
      [   40.988592]  (&q->lock){+.-.}-{2:2}
      [   40.988602]
      [   40.988602]
      [   40.988602] and interrupts could create inverse lock ordering between them.
      [   40.988602]
      [   41.003445]
      [   41.003445] other info that might help us debug this:
      [   41.009957]  Possible interrupt unsafe locking scenario:
      [   41.009957]
      [   41.016729]        CPU0                    CPU1
      [   41.021245]        ----                    ----
      [   41.025761]   lock(&dev->wed_lock);
      [   41.029241]                                local_irq_disable();
      [   41.035145]                                lock(&q->lock);
      [   41.040620]                                lock(&dev->wed_lock);
      [   41.046616]   <Interrupt>
      [   41.049223]     lock(&q->lock);
      [   41.052356]
      [   41.052356]  *** DEADLOCK ***
      [   41.052356]
      [   41.058260] 1 lock held by insmod/2329:
      [   41.062085]  #0: ffffff80003b9988 (&dev->mutex){....}-{3:3}, at: __driver_attach+0x88/0x190
      [   41.070442]
      [   41.070442] the shortest dependencies between 2nd lock and 1st lock:
      [   41.078257]  -> (&q->lock){+.-.}-{2:2} {
      [   41.082177]     HARDIRQ-ON-W at:
      [   41.085396]                       lock_acquire+0xfc/0x2c0
      [   41.090787]                       _raw_spin_lock_bh+0x84/0xa0
      [   41.096525]                       mt76_dma_cleanup+0x24c/0x650 [mt76]
      [   41.102977]                       mt76_dma_cleanup+0x614/0x650 [mt76]
      [   41.109428]                       mt7915_eeprom_get_power_delta+0x1168/0x2464 [mt7915e]
      [   41.117435]                       mt7915_eeprom_init+0x40/0x340 [mt7915e]
      [   41.124222]                       cleanup_module+0x94/0xb28 [mt7915e]
      [   41.130662]                       platform_probe+0x64/0xbc
      [   41.136139]                       really_probe.part.0+0x98/0x2f4
      [   41.142134]                       __driver_probe_device+0x94/0x16c
      [   41.148303]                       driver_probe_device+0x40/0x120
      [   41.154299]                       __driver_attach+0x94/0x190
      [   41.159947]                       bus_for_each_dev+0x5c/0x94
      [   41.165594]                       driver_attach+0x20/0x30
      [   41.170983]                       bus_add_driver+0x104/0x1f4
      [   41.176631]                       driver_register+0x74/0x120
      [   41.182280]                       __platform_driver_register+0x24/0x30
      [   41.188797]                       0xffffffc000cb1074
      [   41.193754]                       do_one_initcall+0x70/0x2cc
      [   41.199403]                       do_init_module+0x44/0x240
      [   41.204968]                       load_module+0x1f5c/0x2874
      [   41.210532]                       __do_sys_init_module+0x1d8/0x2ac
      [   41.216702]                       __arm64_sys_init_module+0x18/0x20
      [   41.222958]                       invoke_syscall.constprop.0+0x4c/0xe0
      [   41.229474]                       do_el0_svc+0x50/0xf0
      [   41.234602]                       el0_svc+0x4c/0xcc
      [   41.239471]                       el0t_64_sync_handler+0xe0/0x110
      [   41.245556]                       el0t_64_sync+0x15c/0x160
      [   41.251029]     IN-SOFTIRQ-W at:
      [   41.254249]                       lock_acquire+0xfc/0x2c0
      [   41.259638]                       _raw_spin_lock_bh+0x84/0xa0
      [   41.265372]                       mt76_queue_tx_complete+0x34/0x70 [mt76]
      [   41.272170]                       mt76_free_pending_rxwi+0x36c/0x5d0 [mt76]
      [   41.279140]                       mt76_free_pending_rxwi+0x5c0/0x5d0 [mt76]
      [   41.286111]                       mt7915_eeprom_get_power_delta+0x620/0x2464 [mt7915e]
      [   41.294026]                       __napi_poll.constprop.0+0x5c/0x230
      [   41.300372]                       net_rx_action+0xe4/0x294
      [   41.305847]                       _stext+0x154/0x4cc
      [   41.310801]                       do_softirq+0xa4/0xbc
      [   41.315930]                       __local_bh_enable_ip+0x168/0x174
      [   41.322097]                       napi_threaded_poll+0xbc/0x140
      [   41.328007]                       kthread+0x13c/0x150
      [   41.333049]                       ret_from_fork+0x10/0x20
      [   41.338437]     INITIAL USE at:
      [   41.341568]                      lock_acquire+0xfc/0x2c0
      [   41.346869]                      _raw_spin_lock_bh+0x84/0xa0
      [   41.352519]                      mt76_dma_cleanup+0x24c/0x650 [mt76]
      [   41.358882]                      mt76_dma_cleanup+0x614/0x650 [mt76]
      [   41.365245]                      mt7915_eeprom_get_power_delta+0x1168/0x2464 [mt7915e]
      [   41.373160]                      mt7915_eeprom_init+0x40/0x340 [mt7915e]
      [   41.379860]                      cleanup_module+0x94/0xb28 [mt7915e]
      [   41.386213]                      platform_probe+0x64/0xbc
      [   41.391602]                      really_probe.part.0+0x98/0x2f4
      [   41.397511]                      __driver_probe_device+0x94/0x16c
      [   41.403594]                      driver_probe_device+0x40/0x120
      [   41.409502]                      __driver_attach+0x94/0x190
      [   41.415063]                      bus_for_each_dev+0x5c/0x94
      [   41.420625]                      driver_attach+0x20/0x30
      [   41.425926]                      bus_add_driver+0x104/0x1f4
      [   41.431487]                      driver_register+0x74/0x120
      [   41.437049]                      __platform_driver_register+0x24/0x30
      [   41.443479]                      0xffffffc000cb1074
      [   41.448346]                      do_one_initcall+0x70/0x2cc
      [   41.453907]                      do_init_module+0x44/0x240
      [   41.459383]                      load_module+0x1f5c/0x2874
      [   41.464860]                      __do_sys_init_module+0x1d8/0x2ac
      [   41.470944]                      __arm64_sys_init_module+0x18/0x20
      [   41.477113]                      invoke_syscall.constprop.0+0x4c/0xe0
      [   41.483542]                      do_el0_svc+0x50/0xf0
      [   41.488582]                      el0_svc+0x4c/0xcc
      [   41.493364]                      el0t_64_sync_handler+0xe0/0x110
      [   41.499361]                      el0t_64_sync+0x15c/0x160
      [   41.504748]   }
      [   41.506489]   ... key      at: [<ffffffc000c65ba0>] __this_module+0x3e0/0xffffffffffffa840 [mt76]
      [   41.515371]   ... acquired at:
      [   41.518413]    _raw_spin_lock+0x60/0x74
      [   41.522240]    mt76_get_rxwi+0x1c/0xac [mt76]
      [   41.526608]    mt76_dma_cleanup+0x3e0/0x650 [mt76]
      [   41.531410]    mt76_dma_cleanup+0x614/0x650 [mt76]
      [   41.536211]    mt7915_dma_init+0x408/0x7b0 [mt7915e]
      [   41.541177]    mt7915_register_device+0x310/0x620 [mt7915e]
      [   41.546749]    mt7915_mmio_probe+0xcec/0x1d44 [mt7915e]
      [   41.551973]    platform_probe+0x64/0xbc
      [   41.555802]    really_probe.part.0+0x98/0x2f4
      [   41.560149]    __driver_probe_device+0x94/0x16c
      [   41.564670]    driver_probe_device+0x40/0x120
      [   41.569017]    __driver_attach+0x94/0x190
      [   41.573019]    bus_for_each_dev+0x5c/0x94
      [   41.577018]    driver_attach+0x20/0x30
      [   41.580758]    bus_add_driver+0x104/0x1f4
      [   41.584758]    driver_register+0x74/0x120
      [   41.588759]    __platform_driver_register+0x24/0x30
      [   41.593628]    init_module+0x74/0x1000 [mt7915e]
      [   41.598248]    do_one_initcall+0x70/0x2cc
      [   41.602248]    do_init_module+0x44/0x240
      [   41.606162]    load_module+0x1f5c/0x2874
      [   41.610078]    __do_sys_init_module+0x1d8/0x2ac
      [   41.614600]    __arm64_sys_init_module+0x18/0x20
      [   41.619209]    invoke_syscall.constprop.0+0x4c/0xe0
      [   41.624076]    do_el0_svc+0x50/0xf0
      [   41.627555]    el0_svc+0x4c/0xcc
      [   41.630776]    el0t_64_sync_handler+0xe0/0x110
      [   41.635211]    el0t_64_sync+0x15c/0x160
      [   41.639037]
      [   41.640517] -> (&dev->wed_lock){+.+.}-{2:2} {
      [   41.644872]    HARDIRQ-ON-W at:
      [   41.648003]                     lock_acquire+0xfc/0x2c0
      [   41.653219]                     _raw_spin_lock+0x60/0x74
      [   41.658520]                     mt76_free_pending_rxwi+0xc0/0x5d0 [mt76]
      [   41.665232]                     mt76_dma_cleanup+0x1dc/0x650 [mt76]
      [   41.671508]                     mt7915_eeprom_get_power_delta+0x1830/0x2464 [mt7915e]
      [   41.679336]                     mt7915_unregister_device+0x5b4/0x910 [mt7915e]
      [   41.686555]                     mt7915_eeprom_get_target_power+0xb8/0x230 [mt7915e]
      [   41.694209]                     mt7986_wmac_enable+0xc30/0xcd0 [mt7915e]
      [   41.700909]                     platform_remove+0x4c/0x64
      [   41.706298]                     __device_release_driver+0x194/0x240
      [   41.712554]                     driver_detach+0xc0/0x100
      [   41.717857]                     bus_remove_driver+0x54/0xac
      [   41.723418]                     driver_unregister+0x2c/0x54
      [   41.728980]                     platform_driver_unregister+0x10/0x20
      [   41.735323]                     mt7915_ops+0x244/0xffffffffffffed58 [mt7915e]
      [   41.742457]                     __arm64_sys_delete_module+0x170/0x23c
      [   41.748887]                     invoke_syscall.constprop.0+0x4c/0xe0
      [   41.755229]                     do_el0_svc+0x50/0xf0
      [   41.760183]                     el0_svc+0x4c/0xcc
      [   41.764878]                     el0t_64_sync_handler+0xe0/0x110
      [   41.770788]                     el0t_64_sync+0x15c/0x160
      [   41.776088]    SOFTIRQ-ON-W at:
      [   41.779220]                     lock_acquire+0xfc/0x2c0
      [   41.784435]                     _raw_spin_lock+0x60/0x74
      [   41.789737]                     mt76_get_rxwi+0x1c/0xac [mt76]
      [   41.795580]                     mt7915_debugfs_rx_log+0x804/0xb74 [mt7915e]
      [   41.802540]                     mtk_wed_start+0x970/0xaa0
      [   41.807929]                     mt7915_dma_start+0x26c/0x630 [mt7915e]
      [   41.814455]                     mt7915_dma_start+0x5a4/0x630 [mt7915e]
      [   41.820981]                     mt7915_dma_init+0x45c/0x7b0 [mt7915e]
      [   41.827420]                     mt7915_register_device+0x310/0x620 [mt7915e]
      [   41.834467]                     mt7915_mmio_probe+0xcec/0x1d44 [mt7915e]
      [   41.841167]                     platform_probe+0x64/0xbc
      [   41.846469]                     really_probe.part.0+0x98/0x2f4
      [   41.852291]                     __driver_probe_device+0x94/0x16c
      [   41.858286]                     driver_probe_device+0x40/0x120
      [   41.864107]                     __driver_attach+0x94/0x190
      [   41.869582]                     bus_for_each_dev+0x5c/0x94
      [   41.875056]                     driver_attach+0x20/0x30
      [   41.880270]                     bus_add_driver+0x104/0x1f4
      [   41.885745]                     driver_register+0x74/0x120
      [   41.891221]                     __platform_driver_register+0x24/0x30
      [   41.897564]                     init_module+0x74/0x1000 [mt7915e]
      [   41.903657]                     do_one_initcall+0x70/0x2cc
      [   41.909130]                     do_init_module+0x44/0x240
      [   41.914520]                     load_module+0x1f5c/0x2874
      [   41.919909]                     __do_sys_init_module+0x1d8/0x2ac
      [   41.925905]                     __arm64_sys_init_module+0x18/0x20
      [   41.931989]                     invoke_syscall.constprop.0+0x4c/0xe0
      [   41.938331]                     do_el0_svc+0x50/0xf0
      [   41.943285]                     el0_svc+0x4c/0xcc
      [   41.947981]                     el0t_64_sync_handler+0xe0/0x110
      [   41.953892]                     el0t_64_sync+0x15c/0x160
      [   41.959192]    INITIAL USE at:
      [   41.962238]                    lock_acquire+0xfc/0x2c0
      [   41.967365]                    _raw_spin_lock+0x60/0x74
      [   41.972580]                    mt76_free_pending_rxwi+0xc0/0x5d0 [mt76]
      [   41.979206]                    mt76_dma_cleanup+0x1dc/0x650 [mt76]
      [   41.985395]                    mt7915_eeprom_get_power_delta+0x1830/0x2464 [mt7915e]
      [   41.993137]                    mt7915_unregister_device+0x5b4/0x910 [mt7915e]
      [   42.000270]                    mt7915_eeprom_get_target_power+0xb8/0x230 [mt7915e]
      [   42.007837]                    mt7986_wmac_enable+0xc30/0xcd0 [mt7915e]
      [   42.014450]                    platform_remove+0x4c/0x64
      [   42.019753]                    __device_release_driver+0x194/0x240
      [   42.025922]                    driver_detach+0xc0/0x100
      [   42.031137]                    bus_remove_driver+0x54/0xac
      [   42.036612]                    driver_unregister+0x2c/0x54
      [   42.042087]                    platform_driver_unregister+0x10/0x20
      [   42.048344]                    mt7915_ops+0x244/0xffffffffffffed58 [mt7915e]
      [   42.055391]                    __arm64_sys_delete_module+0x170/0x23c
      [   42.061735]                    invoke_syscall.constprop.0+0x4c/0xe0
      [   42.067990]                    do_el0_svc+0x50/0xf0
      [   42.072857]                    el0_svc+0x4c/0xcc
      [   42.077466]                    el0t_64_sync_handler+0xe0/0x110
      [   42.083289]                    el0t_64_sync+0x15c/0x160
      [   42.088503]  }
      [   42.090157]  ... key      at: [<ffffffc000c65c10>] __this_module+0x450/0xffffffffffffa840 [mt76]
      [   42.098951]  ... acquired at:
      [   42.101907]    __lock_acquire+0x718/0x1df0
      [   42.105994]    lock_acquire+0xfc/0x2c0
      [   42.109734]    _raw_spin_lock+0x60/0x74
      [   42.113561]    mt76_get_rxwi+0x1c/0xac [mt76]
      [   42.117929]    mt7915_debugfs_rx_log+0x804/0xb74 [mt7915e]
      [   42.123415]    mtk_wed_start+0x970/0xaa0
      [   42.127328]    mt7915_dma_start+0x26c/0x630 [mt7915e]
      [   42.132379]    mt7915_dma_start+0x5a4/0x630 [mt7915e]
      [   42.137430]    mt7915_dma_init+0x45c/0x7b0 [mt7915e]
      [   42.142395]    mt7915_register_device+0x310/0x620 [mt7915e]
      [   42.147967]    mt7915_mmio_probe+0xcec/0x1d44 [mt7915e]
      [   42.153192]    platform_probe+0x64/0xbc
      [   42.157019]    really_probe.part.0+0x98/0x2f4
      [   42.161367]    __driver_probe_device+0x94/0x16c
      [   42.165887]    driver_probe_device+0x40/0x120
      [   42.170234]    __driver_attach+0x94/0x190
      [   42.174235]    bus_for_each_dev+0x5c/0x94
      [   42.178235]    driver_attach+0x20/0x30
      [   42.181974]    bus_add_driver+0x104/0x1f4
      [   42.185974]    driver_register+0x74/0x120
      [   42.189974]    __platform_driver_register+0x24/0x30
      [   42.194842]    init_module+0x74/0x1000 [mt7915e]
      [   42.199460]    do_one_initcall+0x70/0x2cc
      [   42.203460]    do_init_module+0x44/0x240
      [   42.207376]    load_module+0x1f5c/0x2874
      [   42.211290]    __do_sys_init_module+0x1d8/0x2ac
      [   42.215813]    __arm64_sys_init_module+0x18/0x20
      [   42.220421]    invoke_syscall.constprop.0+0x4c/0xe0
      [   42.225288]    do_el0_svc+0x50/0xf0
      [   42.228768]    el0_svc+0x4c/0xcc
      [   42.231989]    el0t_64_sync_handler+0xe0/0x110
      [   42.236424]    el0t_64_sync+0x15c/0x160
      [   42.240249]
      [   42.241730]
      [   42.241730] stack backtrace:
      [   42.246074] CPU: 1 PID: 2329 Comm: insmod Not tainted 5.15.127 #0
      [   42.252157] Hardware name: GainStrong Oolite-MT7981B V1 Dev Board (NAND boot) (DT)
      [   42.259712] Call trace:
      [   42.262147]  dump_backtrace+0x0/0x174
      [   42.265802]  show_stack+0x14/0x20
      [   42.269108]  dump_stack_lvl+0x84/0xac
      [   42.272761]  dump_stack+0x14/0x2c
      [   42.276066]  print_irq_inversion_bug.part.0+0x1b0/0x1c4
      [   42.281285]  mark_lock+0x8b8/0x8bc
      [   42.284678]  __lock_acquire+0x718/0x1df0
      [   42.288592]  lock_acquire+0xfc/0x2c0
      [   42.292158]  _raw_spin_lock+0x60/0x74
      [   42.295811]  mt76_get_rxwi+0x1c/0xac [mt76]
      [   42.300008]  mt7915_debugfs_rx_log+0x804/0xb74 [mt7915e]
      [   42.305320]  mtk_wed_start+0x970/0xaa0
      [   42.309059]  mt7915_dma_start+0x26c/0x630 [mt7915e]
      [   42.313937]  mt7915_dma_start+0x5a4/0x630 [mt7915e]
      [   42.318815]  mt7915_dma_init+0x45c/0x7b0 [mt7915e]
      [   42.323606]  mt7915_register_device+0x310/0x620 [mt7915e]
      [   42.329005]  mt7915_mmio_probe+0xcec/0x1d44 [mt7915e]
      [   42.334056]  platform_probe+0x64/0xbc
      [   42.337711]  really_probe.part.0+0x98/0x2f4
      [   42.341885]  __driver_probe_device+0x94/0x16c
      [   42.346232]  driver_probe_device+0x40/0x120
      [   42.350407]  __driver_attach+0x94/0x190
      [   42.354234]  bus_for_each_dev+0x5c/0x94
      [   42.358061]  driver_attach+0x20/0x30
      [   42.361627]  bus_add_driver+0x104/0x1f4
      [   42.365454]  driver_register+0x74/0x120
      [   42.369282]  __platform_driver_register+0x24/0x30
      [   42.373977]  init_module+0x74/0x1000 [mt7915e]
      [   42.378423]  do_one_initcall+0x70/0x2cc
      [   42.382249]  do_init_module+0x44/0x240
      [   42.385990]  load_module+0x1f5c/0x2874
      [   42.389733]  __do_sys_init_module+0x1d8/0x2ac
      [   42.394082]  __arm64_sys_init_module+0x18/0x20
      [   42.398518]  invoke_syscall.constprop.0+0x4c/0xe0
      [   42.403211]  do_el0_svc+0x50/0xf0
      [   42.406517]  el0_svc+0x4c/0xcc
      [   42.409565]  el0t_64_sync_handler+0xe0/0x110
      [   42.413827]  el0t_64_sync+0x15c/0x160
      [   42.674858] mt798x-wmac 18000000.wifi: HW/SW Version: 0x8a108a10, Build Time: 20221208201745a
      [   42.674858]
      [   42.692078] mt798x-wmac 18000000.wifi: WM Firmware Version: ____000000, Build Time: 20221208201806
      [   42.735606] mt798x-wmac 18000000.wifi: WA Firmware Version: DEV_000000, Build Time: 20221208202048
      Tested-by: default avatarDaniel Golle <daniel@makrotopia.org>
      Fixes: 2666bece ("wifi: mt76: introduce rxwi and rx token utility routines")
      Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
      Acked-by: default avatarFelix Fietkau <nbd@nbd.name>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/ee80be41c2a8d8749d83c6950a272a5e77aadd45.1693228333.git.lorenzo@kernel.org
      19527314
  7. 29 Aug, 2023 11 commits
    • Linus Torvalds's avatar
      Merge tag 'net-next-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next · bd6c11bc
      Linus Torvalds authored
      Pull networking updates from Paolo Abeni:
       "Core:
      
         - Increase size limits for to-be-sent skb frag allocations. This
           allows tun, tap devices and packet sockets to better cope with
           large writes operations
      
         - Store netdevs in an xarray, to simplify iterating over netdevs
      
         - Refactor nexthop selection for multipath routes
      
         - Improve sched class lifetime handling
      
         - Add backup nexthop ID support for bridge
      
         - Implement drop reasons support in openvswitch
      
         - Several data races annotations and fixes
      
         - Constify the sk parameter of routing functions
      
         - Prepend kernel version to netconsole message
      
        Protocols:
      
         - Implement support for TCP probing the peer being under memory
           pressure
      
         - Remove hard coded limitation on IPv6 specific info placement inside
           the socket struct
      
         - Get rid of sysctl_tcp_adv_win_scale and use an auto-estimated per
           socket scaling factor
      
         - Scaling-up the IPv6 expired route GC via a separated list of
           expiring routes
      
         - In-kernel support for the TLS alert protocol
      
         - Better support for UDP reuseport with connected sockets
      
         - Add NEXT-C-SID support for SRv6 End.X behavior, reducing the SR
           header size
      
         - Get rid of additional ancillary per MPTCP connection struct socket
      
         - Implement support for BPF-based MPTCP packet schedulers
      
         - Format MPTCP subtests selftests results in TAP
      
         - Several new SMC 2.1 features including unique experimental options,
           max connections per lgr negotiation, max links per lgr negotiation
      
        BPF:
      
         - Multi-buffer support in AF_XDP
      
         - Add multi uprobe BPF links for attaching multiple uprobes and usdt
           probes, which is significantly faster and saves extra fds
      
         - Implement an fd-based tc BPF attach API (TCX) and BPF link support
           on top of it
      
         - Add SO_REUSEPORT support for TC bpf_sk_assign
      
         - Support new instructions from cpu v4 to simplify the generated code
           and feature completeness, for x86, arm64, riscv64
      
         - Support defragmenting IPv(4|6) packets in BPF
      
         - Teach verifier actual bounds of bpf_get_smp_processor_id() and fix
           perf+libbpf issue related to custom section handling
      
         - Introduce bpf map element count and enable it for all program types
      
         - Add a BPF hook in sys_socket() to change the protocol ID from
           IPPROTO_TCP to IPPROTO_MPTCP to cover migration for legacy
      
         - Introduce bpf_me_mcache_free_rcu() and fix OOM under stress
      
         - Add uprobe support for the bpf_get_func_ip helper
      
         - Check skb ownership against full socket
      
         - Support for up to 12 arguments in BPF trampoline
      
         - Extend link_info for kprobe_multi and perf_event links
      
        Netfilter:
      
         - Speed-up process exit by aborting ruleset validation if a fatal
           signal is pending
      
         - Allow NLA_POLICY_MASK to be used with BE16/BE32 types
      
        Driver API:
      
         - Page pool optimizations, to improve data locality and cache usage
      
         - Introduce ndo_hwtstamp_get() and ndo_hwtstamp_set() to avoid the
           need for raw ioctl() handling in drivers
      
         - Simplify genetlink dump operations (doit/dumpit) providing them the
           common information already populated in struct genl_info
      
         - Extend and use the yaml devlink specs to [re]generate the split ops
      
         - Introduce devlink selective dumps, to allow SF filtering SF based
           on handle and other attributes
      
         - Add yaml netlink spec for netlink-raw families, allow route, link
           and address related queries via the ynl tool
      
         - Remove phylink legacy mode support
      
         - Support offload LED blinking to phy
      
         - Add devlink port function attributes for IPsec
      
        New hardware / drivers:
      
         - Ethernet:
            - Broadcom ASP 2.0 (72165) ethernet controller
            - MediaTek MT7988 SoC
            - Texas Instruments AM654 SoC
            - Texas Instruments IEP driver
            - Atheros qca8081 phy
            - Marvell 88Q2110 phy
            - NXP TJA1120 phy
      
         - WiFi:
            - MediaTek mt7981 support
      
         - Can:
            - Kvaser SmartFusion2 PCI Express devices
            - Allwinner T113 controllers
            - Texas Instruments tcan4552/4553 chips
      
         - Bluetooth:
            - Intel Gale Peak
            - Qualcomm WCN3988 and WCN7850
            - NXP AW693 and IW624
            - Mediatek MT2925
      
        Drivers:
      
         - Ethernet NICs:
            - nVidia/Mellanox:
               - mlx5:
                  - support UDP encapsulation in packet offload mode
                  - IPsec packet offload support in eswitch mode
                  - improve aRFS observability by adding new set of counters
                  - extends MACsec offload support to cover RoCE traffic
                  - dynamic completion EQs
               - mlx4:
                  - convert to use auxiliary bus instead of custom interface
                    logic
            - Intel
               - ice:
                  - implement switchdev bridge offload, even for LAG
                    interfaces
                  - implement SRIOV support for LAG interfaces
               - igc:
                  - add support for multiple in-flight TX timestamps
            - Broadcom:
               - bnxt:
                  - use the unified RX page pool buffers for XDP and non-XDP
                  - use the NAPI skb allocation cache
            - OcteonTX2:
               - support Round Robin scheduling HTB offload
               - TC flower offload support for SPI field
            - Freescale:
               - add XDP_TX feature support
            - AMD:
               - ionic: add support for PCI FLR event
               - sfc:
                  - basic conntrack offload
                  - introduce eth, ipv4 and ipv6 pedit offloads
            - ST Microelectronics:
               - stmmac: maximze PTP timestamping resolution
      
         - Virtual NICs:
            - Microsoft vNIC:
               - batch ringing RX queue doorbell on receiving packets
               - add page pool for RX buffers
            - Virtio vNIC:
               - add per queue interrupt coalescing support
            - Google vNIC:
               - add queue-page-list mode support
      
         - Ethernet high-speed switches:
            - nVidia/Mellanox (mlxsw):
               - add port range matching tc-flower offload
               - permit enslavement to netdevices with uppers
      
         - Ethernet embedded switches:
            - Marvell (mv88e6xxx):
               - convert to phylink_pcs
            - Renesas:
               - r8A779fx: add speed change support
               - rzn1: enables vlan support
      
         - Ethernet PHYs:
            - convert mv88e6xxx to phylink_pcs
      
         - WiFi:
            - Qualcomm Wi-Fi 7 (ath12k):
               - extremely High Throughput (EHT) PHY support
            - RealTek (rtl8xxxu):
               - enable AP mode for: RTL8192FU, RTL8710BU (RTL8188GU),
                 RTL8192EU and RTL8723BU
            - RealTek (rtw89):
               - Introduce Time Averaged SAR (TAS) support
      
         - Connector:
            - support for event filtering"
      
      * tag 'net-next-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1806 commits)
        net: ethernet: mtk_wed: minor change in wed_{tx,rx}info_show
        net: ethernet: mtk_wed: add some more info in wed_txinfo_show handler
        net: stmmac: clarify difference between "interface" and "phy_interface"
        r8152: add vendor/device ID pair for D-Link DUB-E250
        devlink: move devlink_notify_register/unregister() to dev.c
        devlink: move small_ops definition into netlink.c
        devlink: move tracepoint definitions into core.c
        devlink: push linecard related code into separate file
        devlink: push rate related code into separate file
        devlink: push trap related code into separate file
        devlink: use tracepoint_enabled() helper
        devlink: push region related code into separate file
        devlink: push param related code into separate file
        devlink: push resource related code into separate file
        devlink: push dpipe related code into separate file
        devlink: move and rename devlink_dpipe_send_and_alloc_skb() helper
        devlink: push shared buffer related code into separate file
        devlink: push port related code into separate file
        devlink: push object register/unregister notifications into separate helpers
        inet: fix IP_TRANSPARENT error handling
        ...
      bd6c11bc
    • Linus Torvalds's avatar
      Merge tag 'v6.6-p1' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 68cf0176
      Linus Torvalds authored
      Pull crypto updates from Herbert Xu:
       "API:
         - Move crypto engine callback from tfm ctx into algorithm object
         - Fix atomic sleep bug in crypto_destroy_instance
         - Move lib/mpi into lib/crypto
      
        Algorithms:
         - Add chacha20 and poly1305 implementation for powerpc p10
      
        Drivers:
         - Add AES skcipher and aead support to starfive
         - Add Dynamic Boost Control support to ccp
         - Add support for STM32P13 platform to stm32"
      
      * tag 'v6.6-p1' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (149 commits)
        Revert "dt-bindings: crypto: qcom,prng: Add SM8450"
        crypto: chelsio - Remove unused declarations
        X.509: if signature is unsupported skip validation
        crypto: qat - fix crypto capability detection for 4xxx
        crypto: drivers - Explicitly include correct DT includes
        crypto: engine - Remove crypto_engine_ctx
        crypto: zynqmp - Use new crypto_engine_op interface
        crypto: virtio - Use new crypto_engine_op interface
        crypto: stm32 - Use new crypto_engine_op interface
        crypto: jh7110 - Use new crypto_engine_op interface
        crypto: rk3288 - Use new crypto_engine_op interface
        crypto: omap - Use new crypto_engine_op interface
        crypto: keembay - Use new crypto_engine_op interface
        crypto: sl3516 - Use new crypto_engine_op interface
        crypto: caam - Use new crypto_engine_op interface
        crypto: aspeed - Remove non-standard sha512 algorithms
        crypto: aspeed - Use new crypto_engine_op interface
        crypto: amlogic - Use new crypto_engine_op interface
        crypto: sun8i-ss - Use new crypto_engine_op interface
        crypto: sun8i-ce - Use new crypto_engine_op interface
        ...
      68cf0176
    • Linus Torvalds's avatar
      Merge tag 'gpio-updates-for-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · f97e18a3
      Linus Torvalds authored
      Pull gpio updates from Bartosz Golaszewski:
       "We have a lot of code refactoring using common helpers and ended up
        removing more lines then we're adding this release cycle.
      
        Nothing really stands out, just small updates all over the place.
      
        Core GPIOLIB updates:
         - wake-up poll() in user-space on device unbind
         - improve fwnode usage
         - interrupt domain handling improvements
         - correctly handle the ngpios property in gpio-mmio
      
        Driver cleanups:
         - remove unneeded calls to platform_set_drvdata() all around the
           place
         - remove unneeded of_match_ptr() expansions whenever a driver depends
           on CONFIG_OF
         - remove redundant calls to dev_err_probe() from gpio-omap and
           gpio-davinci
      
        Driver improvements:
         - use autopointers and guards from cleanup.h in gpio-sim
         - shrink code in gpio-sim using some common helpers
         - convert the idio family of drivers to using gpio-regmap
         - convert gpio-ws16c48 to using gpio-regmap
         - use devres to simplify code in gpio-pisosr and gpio-mxc
         - update gpio-sifive: support IRQ wake, improve interrupt handling,
           allow building as module
         - make gpio-ge and gpio-bcm-kona OF-independent (plus some minor
           tweaks)
         - add support for new models in gpio-pca953x and gpio-ds4520
         - add runtime PM support to gpio-mxc
         - fix a build warning in gpio-mxs
         - add support for adding pin ranges to gpio-mlxbf3
         - add counter/timer support to gpio-104-dio-48e
         - switch to dynamic GPIO base allocation in gpio-vf610
         - minor oneliners here and there
      
        Device-tree bindings updates:
         - enable the gpio-line-names property in snps,dw-apb and STMPE GPIO
         - document new models in fsl-imx-gpio, ds4520 and pca95xx
         - convert the bindings for brcm,kona-gpio to YAML"
      
      * tag 'gpio-updates-for-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: (94 commits)
        gpio: pca953x: add support for TCA9538
        dt-bindings: gpio: pca95xx: document new tca9538 chip
        gpio: pca953x: Use i2c_get_match_data()
        gpio: mlxbf3: use capital "OR" for multiple licenses in SPDX
        gpio: pcf857x: Extend match data support for OF tables
        gpio: vf610: switch to dynamic allocat GPIO base
        gpiolib: provide and use gpiod_line_state_notify()
        gpio: cdev: wake up lineevent poll() on device unbind
        gpio: cdev: wake up linereq poll() on device unbind
        gpio: cdev: wake up chardev poll() on device unbind
        gpiolib: add a second blocking notifier to struct gpio_device
        gpio: cdev: open-code to_gpio_chardev_data()
        gpiolib: rename the gpio_device notifier
        gpio: mlxbf3: Support add_pin_ranges()
        gpio: mxc: Use helper function devm_clk_get_optional_enabled()
        gpio: pca9570: fix kerneldoc
        gpio: sim: simplify code with cleanup helpers
        gpio: sim: replace memmove() + strstrip() with skip_spaces() + strim()
        gpio: sim: simplify gpio_sim_device_config_live_store()
        gpio: mxc: release the parent IRQ in runtime suspend
        ...
      f97e18a3
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 41e97d7a
      Linus Torvalds authored
      Pull hwmon updates from Guenter Roeck:
       "New drivers:
      
         - Renesas HS3001
      
        Chip support added to existing drivers:
      
         - pmbus/mp2975 driver now supports MP2971 and MP2973
      
        Functional improvements:
      
         - Additional voltage and temperature sensor support for
           NCT6798/NCT6799 in nt6755 driver
      
         - it87 driver now detects AMDTSI sensor type
      
         - dimmtemp now supports more than 32 DIMMs
      
        Driver removals:
      
         - sm665 driver removed as unsupportable and long since obsolete
      
        .. and minor fixes, cleanups, and simplifications in several drivers"
      
      * tag 'hwmon-for-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (57 commits)
        hwmon: (tmp513) Simplify probe()
        hwmon: (tmp513) Fix the channel number in tmp51x_is_visible()
        hwmon: (mlxreg-fan) Extend number of supported fans
        hwmon: (sis5595) Do PCI error checks on own line
        hwmon: (vt8231) Do PCI error checks on own line
        hwmon: (via686a) Do PCI error checks on own line
        hwmon: pmbus: Fix -EIO seen on pli1209
        hwmon: pmbus: Drop unnecessary clear fault page
        hwmon: pmbus: Reduce clear fault page invocations
        hwmon: (nsa320-hwmon) Remove redundant of_match_ptr()
        hwmon: (pmbus/ucd9200) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (pmbus/ucd9000) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (pmbus/tps53679) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (pmbus/ibm-cffps) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (tmp513) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (max6697) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (max20730) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (lm90) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (lm85) fix Wvoid-pointer-to-enum-cast warning
        hwmon: (lm75) fix Wvoid-pointer-to-enum-cast warning
        ...
      41e97d7a
    • Linus Torvalds's avatar
      Merge tag 'mmc-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 995cda62
      Linus Torvalds authored
      Pull MMC updates from Ulf Hansson:
       "MMC core:
         - Convert drivers to use the ->remove_new() callback
         - Propagate the removable attribute for the card's device
      
        MMC host:
         - Convert drivers to use the ->remove_new() callback
         - atmel-mci: Convert to gpio descriptors and cleanup the code
         - davinci: Make SDIO irq truly optional
         - renesas_sdhi: Register irqs before registering controller
         - sdhci: Simplify the sdhci_pltfm_* interface a bit
         - sdhci-esdhc-imx: Improve support for the 1.8V errata
         - sdhci-of-at91: Add support for the microchip sam9x7 variant
         - sdhci-of-dwcmshc: Add support for runtime PM
         - sdhci-pci-o2micro: Add support for the new Bayhub GG8 variant
         - sdhci-sprd: Add support for SD high-speed mode tuning
         - uniphier-sd: Register irqs before registering controller"
      
      * tag 'mmc-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (108 commits)
        mmc: atmel-mci: Move card detect gpio polarity quirk to gpiolib
        mmc: atmel-mci: move atmel MCI header file
        mmc: atmel-mci: Convert to gpio descriptors
        mmc: sdhci-sprd: Add SD HS mode online tuning
        mmc: core: Add host specific tuning support for SD HS mode
        mmc: sdhci-of-dwcmshc: Add runtime PM operations
        mmc: sdhci-of-dwcmshc: Add error handling in dwcmshc_resume
        mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450
        mmc: sdhci-pltfm: Rename sdhci_pltfm_register()
        mmc: sdhci-pltfm: Remove sdhci_pltfm_unregister()
        mmc: sdhci-st: Use sdhci_pltfm_remove()
        mmc: sdhci-pxav2: Use sdhci_pltfm_remove()
        mmc: sdhci-of-sparx5: Use sdhci_pltfm_remove()
        mmc: sdhci-of-hlwd: Use sdhci_pltfm_remove()
        mmc: sdhci-of-esdhc: Use sdhci_pltfm_remove()
        mmc: sdhci-of-at91: Use sdhci_pltfm_remove()
        mmc: sdhci-of-arasan: Use sdhci_pltfm_remove()
        mmc: sdhci-iproc: Use sdhci_pltfm_remove()
        mmc: sdhci_f_sdh30: Use sdhci_pltfm_remove()
        mmc: sdhci-dove: Use sdhci_pltfm_remove()
        ...
      995cda62
    • Linus Torvalds's avatar
      Merge tag 'spi-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · 3b6bf5b1
      Linus Torvalds authored
      Pull spi updates from Mark Brown:
       "There's been quite a lot of generic activity here, but more
        administrative than featuers. We also have a bunch of new drivers,
        including one that's part of a MFD so we pulled in the core parts of
        that:
      
         - Lots of work from both Yang Yingliang and Andy Shevchenko on moving
           to host/device/controller based terminology for devices.
      
         - QuadSPI SPI support for Allwinner sun6i.
      
         - New device support Cirrus Logic CS43L43, Longsoon, Qualcomm GENI
           QuPv3 and StarFive JH7110 QSPI"
      
      * tag 'spi-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (151 commits)
        spi: at91-usart: Use PTR_ERR_OR_ZERO() to simplify code
        spi: spi-sn-f-ospi: switch to use modern name
        spi: sifive: switch to use modern name
        spi: sh: switch to use modern name
        spi: sh-sci: switch to use modern name
        spi: sh-msiof: switch to use modern name
        spi: sh-hspi: switch to use modern name
        spi: sc18is602: switch to use modern name
        spi: s3c64xx: switch to use modern name
        spi: rzv2m-csi: switch to use devm_spi_alloc_host()
        spi: rspi: switch to use spi_alloc_host()
        spi: rockchip: switch to use modern name
        spi: rockchip-sfc: switch to use modern name
        spi: realtek-rtl: switch to use devm_spi_alloc_host()
        spi: rb4xx: switch to use modern name
        spi: qup: switch to use modern name
        spi: spi-qcom-qspi: switch to use modern name
        spi: pxa2xx: switch to use modern name
        spi: ppc4xx: switch to use modern name
        spi: spl022: switch to use modern name
        ...
      3b6bf5b1
    • Linus Torvalds's avatar
      Merge tag 'regulator-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · 65234f96
      Linus Torvalds authored
      Pull regulator updates from Mark Brown:
       "Other than new device support and some minor fixes this has been a
        really quiet release, the only notable things are the new drivers.
      
        There's a couple of MFDs among the new devices so the generic parts
        are pulled in:
      
         - Support for Analog Devices MAX77831/57/59, Awinc AW37503, Qualcom
           PMX75 and RFGEN, RealTek RT5733, RichTek RTQ2208 and Texas
           Instruments TPS65086"
      
      * tag 'regulator-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (68 commits)
        regulator: userspace-consumer: Drop event support for this cycle
        regulator: aw37503: Switch back to use struct i2c_driver's .probe()
        dt-bindings: regulator: qcom,rpmh-regulator: allow i, j, l, m & n as RPMh resource name suffix
        regulator: dt-bindings: Add Awinic AW37503
        regulator: aw37503: add regulator driver for Awinic AW37503
        regulator: tps65086: Select dedicated regulator config for chip variant
        mfd: tps65086: Read DEVICE ID register 1 from device
        regulator: raa215300: Update help description
        regulator: raa215300: Add missing blank space
        regulator: raa215300: Change rate from 32000->32768
        regulator: db8500-prcmu: Remove unused declaration power_state_active_is_enabled()
        regulator: raa215300: Add const definition
        regulator: raa215300: Fix resource leak in case of error
        regulator: rtq2208: Switch back to use struct i2c_driver's .probe()
        regulator: lp872x: Fix Wvoid-pointer-to-enum-cast warning
        regulator: max77857: Fix Wvoid-pointer-to-enum-cast warning
        regulator: ltc3589: Fix Wvoid-pointer-to-enum-cast warning
        regulator: qcom_rpm-regulator: Use devm_kmemdup to replace devm_kmalloc + memcpy
        regulator: tps6286x-regulator: Remove redundant of_match_ptr() macros
        regulator: pfuze100-regulator: Remove redundant of_match_ptr() macro
        ...
      65234f96
    • Linus Torvalds's avatar
      Merge tag 'regmap-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap · 0fc81f37
      Linus Torvalds authored
      Pull regmap updates from Mark Brown:
       "This is a much quieter release than the past few, there's one small
        API addition that I noticed a user for in ALSA and a bunch of
        cleanups:
      
         - Provide an interface for determining if a register is present in
           the cache and add a user of it in ALSA.
      
         - Full support for dynamic allocations, following the temporary
           bodges that were done as fixes in the previous release.
      
         - Remove the unused and questionably working 64 bit support"
      
      * tag 'regmap-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
        regmap: Fix the type used for a bitmap pointer
        regmap: Remove dynamic allocation warnings for rbtree and maple
        regmap: rbtree: Use alloc_flags for memory allocations
        regmap: maple: Use alloc_flags for memory allocations
        regmap: Reject fast_io regmap configurations with RBTREE and MAPLE caches
        ALSA: hda: Use regcache_reg_cached() rather than open coding
        regmap: Provide test for regcache_reg_present()
        regmap: Let users check if a register is cached
        regmap: Provide user selectable option to enable regmap
        regmap: mmio: Remove unused 64-bit support code
        regmap: cache: Revert "Add 64-bit mode support"
        regmap: Revert "add 64-bit mode support" and Co.
      0fc81f37
    • Linus Torvalds's avatar
      Merge tag 'hsi-for-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi · c35c486c
      Linus Torvalds authored
      Pull HSI update from Sebastian Reichel:
      
       - explicitly include correct DT includes
      
      * tag 'hsi-for-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
        hsi: omap_ssi: Explicitly include correct DT includes
      c35c486c
    • Linus Torvalds's avatar
      Merge tag 'for-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply · b547f9b3
      Linus Torvalds authored
      Pull power supply and reset updates from Sebastian Reichel:
      
       - core: avoid duplicate hwmon device from thermal framework
      
       - convert multiple drivers to devm_platform_ioremap_resource
      
       - at91-reset: add sysfs interface to the power on reason
      
       - misc small fixes and improvements
      
      * tag 'for-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply:
        power: supply: qcom_pmi8998_charger: fix charger status
        power: supply: qcom_pmi8998_charger: remove CHARGE_CONTROL_LIMIT_* props
        power: supply: qcom_pmi8998_charger: fix uninitialized variable
        power: reset: oxnas-restart: remove obsolete restart driver
        power: supply: core: Avoid duplicate hwmon device from thermal framework
        power: reset: ocelot: Convert to devm_platform_ioremap_resource()
        power: reset: msm: Convert to devm_platform_ioremap_resource()
        power: reset: gemini-poweroff: Convert to devm_platform_ioremap_resource()
        power: reset: brcm-kona: Convert to devm_platform_ioremap_resource()
        power: reset: at91-sama5d2_shdwc: Convert to devm_platform_ioremap_resource()
        power: reset: at91-poweroff: Convert to devm_platform_ioremap_resource()
        power: reset: at91-reset: add sysfs interface to the power on reason
        power: supply: bd99954: make read-only array sub_status_reg
        power: supply: bq24190: Considers FORCE_20PCT when getting IPRECHG
        power: Explicitly include correct DT includes
      b547f9b3
    • Linus Torvalds's avatar
      Merge tag 'auxdisplay-6.6' of https://github.com/ojeda/linux · 5ea0cf77
      Linus Torvalds authored
      Pull auxdisplay update from Miguel Ojeda:
      
       - hd44780: move cursor home after clear display command
      
         The change allows to support displays like the NewHaven
         NHD-0220DZW-AG5 which has a non-standard controller.
      
      * tag 'auxdisplay-6.6' of https://github.com/ojeda/linux:
        auxdisplay: hd44780: move cursor home after clear display command
      5ea0cf77