5.19.10-rc1 review
Subsystems (2)
Greg Kroah-Hartman
maintainerPATCH 10/38 drm/msm/rd: Fix FIFO-full deadlock
In reply to Greg Kroah-HartmanFrom: Rob Clark <[email protected]>
[ Upstream commit 174974d8463b77c2b4065e98513adb204e64de7d ]
If the previous thing cat'ing $debugfs/rd left the FIFO full, then subsequent open could deadlock in rd_write() (because open is blocked, not giving a chance for read() to consume any data in the FIFO). Also it is generally a good idea to clear out old data from the FIFO.
Patchwork: https://patchwork.freedesktop.org/patch/496706/
--- drivers/gpu/drm/msm/msm_rd.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/gpu/drm/msm/msm_rd.c +3 -0
@@ -196,6 +196,9 @@ static int rd_open(struct inode *inode, struct file *file) file->private_data = rd; rd->open = true; +/* Reset fifo to clear any previously unread data: */ + rd->fifo.head = rd->fifo.tail =0 ; +/* the parsing tools need to know gpu-id to know which * register database to load. *
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 13/38 kvm: x86: mmu: Always flush TLBs when enabling dirty logging
In reply to Greg Kroah-HartmanFrom: Junaid Shahid <[email protected]>
[ Upstream commit b64d740ea7ddc929d97b28de4c0665f7d5db9e2a ]
When A/D bits are not available, KVM uses a software access tracking mechanism, which involves making the SPTEs inaccessible. However, the clear_young() MMU notifier does not flush TLBs. So it is possible that there may still be stale, potentially writable, TLB entries. This is usually fine, but can be problematic when enabling dirty logging, because it currently only does a TLB flush if any SPTEs were modified. But if all SPTEs are in access-tracked state, then there won't be a TLB flush, which means that the guest could still possibly write to memory and not have it reflected in the dirty bitmap.
So just unconditionally flush the TLBs when enabling dirty logging. As an alternative, KVM could explicitly check the MMU-Writable bit when write-protecting SPTEs to decide if a flush is needed (instead of checking the Writable bit), but given that a flush almost always happens anyway, so just making it unconditional seems simpler.
Message-Id: <[email protected]>
--- arch/x86/kvm/mmu/mmu.c | 45 +++++++---------------------------------- arch/x86/kvm/mmu/spte.h | 14 +++++++++---- arch/x86/kvm/x86.c | 44 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 42 deletions(-)
arch/x86/kvm/mmu/mmu.c +7 -38
@@ -5907,47 +5907,18 @@ void kvm_mmu_slot_remove_write_access(struct kvm *kvm,const struct kvm_memory_slot *memslot, int start_level) { - bool flush = false; - if (kvm_memslots_have_rmaps(kvm)) { write_lock(&kvm->mmu_lock); - flush =slot_handle_level (kvm, memslot, slot_rmap_write_protect, - start_level,KVM_MAX_HUGEPAGE_LEVEL , - false); +slot_handle_level (kvm, memslot, slot_rmap_write_protect, + start_level,KVM_MAX_HUGEPAGE_LEVEL , false);write_unlock (&kvm->mmu_lock); }if (is_tdp_mmu_enabled (kvm)) {read_lock (&kvm->mmu_lock); - flush |=kvm_tdp_mmu_wrprot_slot (kvm, memslot, start_level); +kvm_tdp_mmu_wrprot_slot (kvm, memslot, start_level);read_unlock (&kvm->mmu_lock); } - -/* -* Flush TLBs if any SPTEs had to be write-protected to ensure that -* guest writes are reflected in the dirty bitmap before the memslot -* update completes, i.e. before enabling dirty logging is visible to -* userspace. -* -* Perform the TLB flush outside the mmu_lock to reduce the amount of -* time the lock is held. However, this does mean that another CPU can -* now grab mmu_lock and encounter a write-protected SPTE while CPUs -* still have a writable mapping for the associated GFN in their TLB. -* -* This is safe but requires KVM to be careful when making decisions -* based on the write-protection status of an SPTE. Specifically, KVM -* also write-protects SPTEs to monitor changes to guest page tables -* during shadow paging, and must guarantee no CPUs can write to those -* page before the lock is dropped. As mentioned in the previous -* paragraph, a write-protected SPTE is no guarantee that CPU cannot -* perform writes. So to determine if a TLB flush is truly required, KVM -* will clear a separate software-only bit (MMU-writable) and skip the -* flush if-and-only-if this bit was already clear. -* -* See is_writable_pte() for more details. -*/ -if (flush) -kvm_arch_flush_remote_tlbs_memslot (kvm, memslot); }/* Must be called with the mmu_lock held in write-mode. */
@@ -6070,32 +6041,30 @@ void kvm_arch_flush_remote_tlbs_memslot(struct kvm *kvm,void kvm_mmu_slot_leaf_clear_dirty (struct kvm *kvm,const struct kvm_memory_slot *memslot) { -bool flush = false; -if (kvm_memslots_have_rmaps (kvm)) {write_lock (&kvm->mmu_lock);/* * Clear dirty bits only on 4k SPTEs since the legacy MMU only * support dirty logging at a 4k granularity. */ - flush =slot_handle_level_4k (kvm, memslot, __rmap_clear_dirty, false); +slot_handle_level_4k (kvm, memslot, __rmap_clear_dirty, false);write_unlock (&kvm->mmu_lock); }if (is_tdp_mmu_enabled (kvm)) {read_lock (&kvm->mmu_lock); - flush |=kvm_tdp_mmu_clear_dirty_slot (kvm, memslot); +kvm_tdp_mmu_clear_dirty_slot (kvm, memslot);read_unlock (&kvm->mmu_lock); }/* +* The caller will flush the TLBs after this function returns. +* * It's also safe to flush TLBs out of mmu lock here as currently this * function is only used for dirty logging, in which case flushing TLB * out of mmu lock also guarantees no dirty pages will be lost in * dirty_bitmap. */ -if (flush) -kvm_arch_flush_remote_tlbs_memslot (kvm, memslot); }void kvm_mmu_zap_all (struct kvm *kvm)
arch/x86/kvm/mmu/spte.h +10 -4
@@ -326,7 +326,7 @@ static __always_inline bool is_rsvd_spte(struct rsvd_bits_validate *rsvd_check, }/* -* An shadow-present leaf SPTE may be non-writable for 3 possible reasons: +* A shadow-present leaf SPTE may be non-writable for 4 possible reasons: * * 1. To intercept writes for dirty logging. KVM write-protects huge pages * so that they can be split be split down into the dirty logging
@@ -344,8 +344,13 @@ static __always_inline bool is_rsvd_spte(struct rsvd_bits_validate *rsvd_check,* read-only memslot or guest memory backed by a read-only VMA. Writes to * such pages are disallowed entirely. * -* To keep track of why a given SPTE is write-protected, KVM uses 2 -* software-only bits in the SPTE: +* 4. To emulate the Accessed bit for SPTEs without A/D bits. Note, in this +* case, the SPTE is access-protected, not just write-protected! +* +* For cases #1 and #4, KVM can safely make such SPTEs writable without taking +* mmu_lock as capturing the Accessed/Dirty state doesn't require taking it. +* To differentiate #1 and #4 from #2 and #3, KVM uses two software-only bits +* in the SPTE: * * shadow_mmu_writable_mask, aka MMU-writable - * Cleared on SPTEs that KVM is currently write-protecting for shadow paging
@@ -374,7 +379,8 @@ static __always_inline bool is_rsvd_spte(struct rsvd_bits_validate *rsvd_check,* shadow page tables between vCPUs. Write-protecting an SPTE for dirty logging * (which does not clear the MMU-writable bit), does not flush TLBs before * dropping the lock, as it only needs to synchronize guest writes with the -* dirty bitmap. +* dirty bitmap. Similarly, making the SPTE inaccessible (and non-writable) for +* access-tracking via the clear_young() MMU notifier also does not flush TLBs. * * So, there is the problem: clearing the MMU-writable bit can encounter a * write-protected SPTE while CPUs still have writable mappings for that SPTE
arch/x86/kvm/x86.c +44 -0
50 lines not on this page · raw message
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 15/38 HID: ishtp-hid-clientHID: ishtp-hid-client: Fix comment typo
In reply to Greg Kroah-HartmanFrom: Jason Wang <[email protected]>
[ Upstream commit 94553f8a218540d676efbf3f7827ed493d1057cf ]
The double `like' is duplicated in the comment, remove one.
--- drivers/hid/intel-ish-hid/ishtp-hid.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/hid/intel-ish-hid/ishtp-hid.h +1 -1
@@ -105,7 +105,7 @@ struct report_list {* @multi_packet_cnt: Count of fragmented packet count * * This structure is used to store completion flags and per client data like -* like report description, number of HID devices etc. +* report description, number of HID devices etc. */ struct ishtp_cl_data {/* completion flags */
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 16/38 hid: intel-ish-hid: ishtp: Fix ishtp client sending disordered message
In reply to Greg Kroah-HartmanFrom: Even Xu <[email protected]>
[ Upstream commit e1fa076706209cc447d7a2abd0843a18277e5ef7 ]
There is a timing issue captured during ishtp client sending stress tests. It was observed during stress tests that ISH firmware is getting out of ordered messages. This is a rare scenario as the current set of ISH client drivers don't send much data to firmware. But this may not be the case going forward.
When message size is bigger than IPC MTU, ishtp splits the message into fragments and uses serialized async method to send message fragments. The call stack:ishtp_cl_send_msg_ipc->ipc_tx_callback(first fregment)-> ishtp_send_msg(with callback)->write_ipc_to_queue-> write_ipc_from_queue->callback->ipc_tx_callback(next fregment)......
When an ipc write complete interrupt is received, driver also calls write_ipc_from_queue->ipc_tx_callback in ISR to start sending of next fragment.
Through ipc_tx_callback uses spin_lock to protect message splitting, as the serialized sending method will call back to ipc_tx_callback again, so it doesn't put sending under spin_lock, it causes driver cannot guarantee all fragments be sent in order.
Considering this scenario:ipc_tx_callback just finished a fragment splitting, and not call ishtp_send_msg yet, there is a write complete interrupt happens, then ISR->write_ipc_from_queue ->ipc_tx_callback->ishtp_send_msg->write_ipc_to_queue......
Because ISR has higher exec priority than normal thread, this causes the new fragment be sent out before previous fragment. This disordered message causes invalid message to firmware.
The solution is, to send fragments synchronously:
Use ishtp_write_message writing fragments into tx queue directly one by one, instead of ishtp_send_msg only writing one fragment with completion callback. As no completion callback be used, so change ipc_tx_callback to ipc_tx_send.
--- drivers/hid/intel-ish-hid/ishtp/client.c | 68 ++++++++++++++---------- 1 file changed, 39 insertions(+), 29 deletions(-)
drivers/hid/intel-ish-hid/ishtp/client.c +39 -29
@@ -626,13 +626,14 @@ static void ishtp_cl_read_complete(struct ishtp_cl_rb *rb) }/** -* ipc_tx_callback() - IPC tx callback function +* ipc_tx_send() - IPC tx send function * @prm: Pointer to client device instance * -* Send message over IPC either first time or on callback on previous message -* completion +* Send message over IPC. Message will be split into fragments +* if message size is bigger than IPC FIFO size, and all +* fragments will be sent one by one. */ -static void ipc_tx_callback (void *prm) +static void ipc_tx_send (void *prm) {struct ishtp_cl *cl = prm;struct ishtp_cl_tx_ring *cl_msg;
@@ -677,32 +678,41 @@ static void ipc_tx_callback(void *prm) list); rem = cl_msg->send_buf.size - cl->tx_offs; - ishtp_hdr.host_addr = cl->host_client_id; - ishtp_hdr.fw_addr = cl->fw_client_id; - ishtp_hdr.reserved =0 ; - pmsg = cl_msg->send_buf.data + cl->tx_offs; +while (rem >0 ) { + ishtp_hdr.host_addr = cl->host_client_id; + ishtp_hdr.fw_addr = cl->fw_client_id; + ishtp_hdr.reserved =0 ; + pmsg = cl_msg->send_buf.data + cl->tx_offs; + +if (rem <= dev->mtu) { +/* Last fragment or only one packet */ + ishtp_hdr.length = rem; + ishtp_hdr.msg_complete =1 ; +/* Submit to IPC queue with no callback */ +ishtp_write_message (dev, &ishtp_hdr, pmsg); + cl->tx_offs =0 ; + cl->sending =0 ; -if (rem <= dev->mtu) { - ishtp_hdr.length = rem; - ishtp_hdr.msg_complete =1 ; - cl->sending =0 ; -list_del_init (&cl_msg->list);/* Must be before write */ -spin_unlock_irqrestore (&cl->tx_list_spinlock, tx_flags); -/* Submit to IPC queue with no callback */ -ishtp_write_message (dev, &ishtp_hdr, pmsg); -spin_lock_irqsave (&cl->tx_free_list_spinlock, tx_free_flags); -list_add_tail (&cl_msg->list, &cl->tx_free_list.list); - ++cl->tx_ring_free_size; -spin_unlock_irqrestore (&cl->tx_free_list_spinlock, - tx_free_flags); - }else { -/* Send IPC fragment */ -spin_unlock_irqrestore (&cl->tx_list_spinlock, tx_flags); - cl->tx_offs += dev->mtu; - ishtp_hdr.length = dev->mtu; - ishtp_hdr.msg_complete =0 ; -ishtp_send_msg (dev, &ishtp_hdr, pmsg, ipc_tx_callback, cl); +break ; + }else { +/* Send ipc fragment */ + ishtp_hdr.length = dev->mtu; + ishtp_hdr.msg_complete =0 ; +/* All fregments submitted to IPC queue with no callback */ +ishtp_write_message (dev, &ishtp_hdr, pmsg); + cl->tx_offs += dev->mtu; + rem = cl_msg->send_buf.size - cl->tx_offs; + } } + +list_del_init (&cl_msg->list); +spin_unlock_irqrestore (&cl->tx_list_spinlock, tx_flags); + +spin_lock_irqsave (&cl->tx_free_list_spinlock, tx_free_flags); +list_add_tail (&cl_msg->list, &cl->tx_free_list.list); + ++cl->tx_ring_free_size; +spin_unlock_irqrestore (&cl->tx_free_list_spinlock, + tx_free_flags); }/**
@@ -720,7 +730,7 @@ static void ishtp_cl_send_msg_ipc(struct ishtp_device *dev,return ; cl->tx_offs =0 ; -ipc_tx_callback (cl); +ipc_tx_send (cl); ++cl->send_msg_cnt_ipc; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 11/38 peci: cpu: Fix use-after-free in adev_release()
In reply to Greg Kroah-HartmanFrom: Iwona Winiarska <[email protected]>
[ Upstream commit 1c11289b34ab67ed080bbe0f1855c4938362d9cf ]
When auxiliary_device_add() returns an error, auxiliary_device_uninit() is called, which causes refcount for device to be decremented and .release callback will be triggered.
Because adev_release() re-calls auxiliary_device_uninit(), it will cause use-after-free:
[ 1269.455172] WARNING: CPU: 0 PID: 14267 at lib/refcount.c:28 refcount_warn_saturate+0x110/0x15 [ 1269.464007] refcount_t: underflow; use-after-free.
--- drivers/peci/cpu.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/peci/cpu.c +1 -2
@@ -188,8 +188,6 @@ static void adev_release(struct device *dev) {struct auxiliary_device *adev =to_auxiliary_dev (dev); -auxiliary_device_uninit (adev); -kfree (adev->name);kfree (adev); }
@@ -234,6 +232,7 @@ static void unregister_adev(void *_adev)struct auxiliary_device *adev = _adev;auxiliary_device_delete (adev); +auxiliary_device_uninit (adev); }static int devm_adev_add (struct device *dev,int idx)
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 17/38 Bluetooth: MGMT: Fix Get Device Flags
In reply to Greg Kroah-HartmanFrom: Luiz Augusto von Dentz <[email protected]>
[ Upstream commit 23b72814da1a094b4c065e0bb598249f310c5577 ]
Get Device Flags don't check if device does actually use an RPA in which case it shall only set HCI_CONN_FLAG_REMOTE_WAKEUP if LL Privacy is enabled.
--- net/bluetooth/mgmt.c | 71 ++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 29 deletions(-)
net/bluetooth/mgmt.c +42 -29
@@ -4420,6 +4420,22 @@ static int set_exp_feature(struct sock *sk, struct hci_dev *hdev, MGMT_STATUS_NOT_SUPPORTED); } +static u32 get_params_flags (struct hci_dev *hdev, +struct hci_conn_params *params) +{ +u32 flags = hdev->conn_flags; + +/* Devices using RPAs can only be programmed in the acceptlist if +* LL Privacy has been enable otherwise they cannot mark +* HCI_CONN_FLAG_REMOTE_WAKEUP. +*/ +if ((flags &HCI_CONN_FLAG_REMOTE_WAKEUP ) && !use_ll_privacy (hdev) && +hci_find_irk_by_addr (hdev, ¶ms->addr, params->addr_type)) + flags &= ~HCI_CONN_FLAG_REMOTE_WAKEUP ; + +return flags; +} +static int get_device_flags (struct sock *sk,struct hci_dev *hdev,void *data,u16 data_len) {
@@ -4451,10 +4467,10 @@ static int get_device_flags(struct sock *sk, struct hci_dev *hdev, void *data, }else { params =hci_conn_params_lookup (hdev, &cp->addr.bdaddr,le_addr_type (cp->addr.type)); -if (!params) goto done; + supported_flags =get_params_flags (hdev, params); current_flags = params->flags; }
@@ -4523,38 +4539,35 @@ static int set_device_flags(struct sock *sk, struct hci_dev *hdev, void *data,bt_dev_warn (hdev,"No such BR/EDR device %pMR (0x%x)" , &cp->addr.bdaddr, cp->addr.type); } - }else { - params =hci_conn_params_lookup (hdev, &cp->addr.bdaddr, -le_addr_type (cp->addr.type)); -if (params) { -/* Devices using RPAs can only be programmed in the -* acceptlist LL Privacy has been enable otherwise they -* cannot mark HCI_CONN_FLAG_REMOTE_WAKEUP. -*/ -if ((current_flags &HCI_CONN_FLAG_REMOTE_WAKEUP ) && - !use_ll_privacy (hdev) && -hci_find_irk_by_addr (hdev, ¶ms->addr, - params->addr_type)) { -bt_dev_warn (hdev, -"Cannot set wakeable for RPA" ); - goto unlock; - } - params->flags = current_flags; - status =MGMT_STATUS_SUCCESS ; + goto unlock; + } -/* Update passive scan if HCI_CONN_FLAG_DEVICE_PRIVACY -* has been set. -*/ -if (params->flags &HCI_CONN_FLAG_DEVICE_PRIVACY ) -hci_update_passive_scan (hdev); - }else { -bt_dev_warn (hdev,"No such LE device %pMR (0x%x)" , - &cp->addr.bdaddr, -le_addr_type (cp->addr.type)); - } + params =hci_conn_params_lookup (hdev, &cp->addr.bdaddr, +le_addr_type (cp->addr.type)); +if (!params) { +bt_dev_warn (hdev,"No such LE device %pMR (0x%x)" , + &cp->addr.bdaddr,le_addr_type (cp->addr.type)); + goto unlock; + } + + supported_flags =get_params_flags (hdev, params); + +if ((supported_flags | current_flags) != supported_flags) { +bt_dev_warn (hdev,"Bad flag given (0x%x) vs supported (0x%0x)" , + current_flags, supported_flags); + goto unlock; } + params->flags = current_flags; + status =MGMT_STATUS_SUCCESS ; + +/* Update passive scan if HCI_CONN_FLAG_DEVICE_PRIVACY +* has been set. +*/ +if (params->flags &HCI_CONN_FLAG_DEVICE_PRIVACY ) +hci_update_passive_scan (hdev); + unlock:hci_dev_unlock (hdev);
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 3/38 net/mlx5: Use software VHCA id when its supported
In reply to Greg Kroah-HartmanFrom: Yishai Hadas <[email protected]>
[ Upstream commit dc402ccc0d7b55922a79505df3000da7deb77a2b ]
Use software VHCA id when it's supported by the firmware.
A unique id is allocated upon mlx5_mdev_init() and freed upon mlx5_mdev_uninit(), as such it stays the same during the full life cycle of the device including upon health recovery if occurred.
The conjunction of sw_vhca_id with sw_owner_id will be a global unique id per function which uses mlx5_core.
The sw_vhca_id is set upon init_hca command and is used to specify the VHCA that the NIC vport is affiliated with.
This functionality is needed upon migration of VM which is MPV based. (i.e. multi port device).
Stable-dep-of: 9ca05b0f27de ("RDMA/mlx5: Rely on RoCE fw cap instead of devlink when setting profile")
--- drivers/net/ethernet/mellanox/mlx5/core/fw.c | 4 ++ .../net/ethernet/mellanox/mlx5/core/main.c | 49 +++++++++++++++++++ .../net/ethernet/mellanox/mlx5/core/vport.c | 14 ++++-- include/linux/mlx5/driver.h | 1 + 4 files changed, 65 insertions(+), 3 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/fw.c +4 -0
@@ -289,6 +289,10 @@ int mlx5_cmd_init_hca(struct mlx5_core_dev *dev, uint32_t *sw_owner_id) sw_owner_id[i]); } +if (MLX5_CAP_GEN_2_MAX (dev, sw_vhca_id_valid) && + dev->priv.sw_vhca_id >0 ) +MLX5_SET (init_hca_in, in, sw_vhca_id, dev->priv.sw_vhca_id); +return mlx5_cmd_exec_in (dev, init_hca, in); }
drivers/net/ethernet/mellanox/mlx5/core/main.c +49 -0
79 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/vport.c +11 -3
@@ -1086,9 +1086,17 @@ int mlx5_nic_vport_affiliate_multiport(struct mlx5_core_dev *master_mdev, goto free;MLX5_SET (modify_nic_vport_context_in, in, field_select.affiliation,1 ); -MLX5_SET (modify_nic_vport_context_in, in, - nic_vport_context.affiliated_vhca_id, -MLX5_CAP_GEN (master_mdev, vhca_id)); +if (MLX5_CAP_GEN_2 (master_mdev, sw_vhca_id_valid)) { +MLX5_SET (modify_nic_vport_context_in, in, + nic_vport_context.vhca_id_type,VHCA_ID_TYPE_SW ); +MLX5_SET (modify_nic_vport_context_in, in, + nic_vport_context.affiliated_vhca_id, +MLX5_CAP_GEN_2 (master_mdev, sw_vhca_id)); + }else { +MLX5_SET (modify_nic_vport_context_in, in, + nic_vport_context.affiliated_vhca_id, +MLX5_CAP_GEN (master_mdev, vhca_id)); + }MLX5_SET (modify_nic_vport_context_in, in, nic_vport_context.affiliation_criteria,MLX5_CAP_GEN (port_mdev, affiliate_nic_vport_criteria));
include/linux/mlx5/driver.h +1 -0
@@ -606,6 +606,7 @@ struct mlx5_priv {spinlock_t ctx_lock;struct mlx5_adev **adev;int adev_idx; +int sw_vhca_id;struct mlx5_events *events;struct mlx5_flow_steering *steering;
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 18/38 tg3: Disable tg3 device on system reboot to avoid triggering AER
In reply to Greg Kroah-HartmanFrom: Kai-Heng Feng <[email protected]>
[ Upstream commit 2ca1c94ce0b65a2ce7512b718f3d8a0fe6224bca ]
Commit d60cd06331a3 ("PM: ACPI: reboot: Use S5 for reboot") caused a reboot hang on one Dell servers so the commit was reverted.
Someone managed to collect the AER log and it's caused by MSI:
[ 148.762067] ACPI: Preparing to enter system sleep state S5
[ 148.794638] {1}[Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 5
[ 148.803731] {1}[Hardware Error]: event severity: recoverable
[ 148.810191] {1}[Hardware Error]: Error 0, type: fatal
[ 148.816088] {1}[Hardware Error]: section_type: PCIe error
[ 148.822391] {1}[Hardware Error]: port_type: 0, PCIe end point
[ 148.829026] {1}[Hardware Error]: version: 3.0
[ 148.834266] {1}[Hardware Error]: command: 0x0006, status: 0x0010
[ 148.841140] {1}[Hardware Error]: device_id: 0000:04:00.0
[ 148.847309] {1}[Hardware Error]: slot: 0
[ 148.852077] {1}[Hardware Error]: secondary_bus: 0x00
[ 148.857876] {1}[Hardware Error]: vendor_id: 0x14e4, device_id: 0x165f
[ 148.865145] {1}[Hardware Error]: class_code: 020000
[ 148.870845] {1}[Hardware Error]: aer_uncor_status: 0x00100000, aer_uncor_mask: 0x00010000
[ 148.879842] {1}[Hardware Error]: aer_uncor_severity: 0x000ef030
[ 148.886575] {1}[Hardware Error]: TLP Header: 40000001 0000030f 90028090 00000000
[ 148.894823] tg3 0000:04:00.0: AER: aer_status: 0x00100000, aer_mask: 0x00010000
[ 148.902795] tg3 0000:04:00.0: AER: [20] UnsupReq (First)
[ 148.910234] tg3 0000:04:00.0: AER: aer_layer=Transaction Layer, aer_agent=Requester ID
[ 148.918806] tg3 0000:04:00.0: AER: aer_uncor_severity: 0x000ef030
[ 148.925558] tg3 0000:04:00.0: AER: TLP Header: 40000001 0000030f 90028090 00000000The MSI is probably raised by incoming packets, so power down the device and disable bus mastering to stop the traffic, as user confirmed this approach works.
In addition to that, be extra safe and cancel reset task if it's running.
--- drivers/net/ethernet/broadcom/tg3.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/net/ethernet/broadcom/tg3.c +6 -2
@@ -18076,16 +18076,20 @@ static void tg3_shutdown(struct pci_dev *pdev)struct net_device *dev =pci_get_drvdata (pdev);struct tg3 *tp =netdev_priv (dev); +tg3_reset_task_cancel (tp); +rtnl_lock (); +netif_device_detach (dev);if (netif_running (dev))dev_close (dev); -if (system_state ==SYSTEM_POWER_OFF ) -tg3_power_down (tp); +tg3_power_down (tp);rtnl_unlock (); + +pci_disable_device (pdev); }/**
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 5/38 RDMA/mlx5: Add a umr recovery flow
In reply to Greg Kroah-HartmanFrom: Aharon Landau <[email protected]>
[ Upstream commit 158e71bb69e368b8b33e8b7c4ac8c111da0c1ae2 ]
When a UMR fails, the UMR QP state changes to an error state. Therefore, all the further UMR operations will fail too.
Add a recovery flow to the UMR QP, and repost the flushed WQEs.
Stable-dep-of: 9b7d4be967f1 ("RDMA/mlx5: Fix UMR cleanup on error flow of driver init")
--- drivers/infiniband/hw/mlx5/cq.c | 4 ++ drivers/infiniband/hw/mlx5/mlx5_ib.h | 12 ++++- drivers/infiniband/hw/mlx5/umr.c | 78 ++++++++++++++++++++++++---- 3 files changed, 83 insertions(+), 11 deletions(-)
drivers/infiniband/hw/mlx5/cq.c +4 -0
@@ -523,6 +523,10 @@ static int mlx5_poll_one(struct mlx5_ib_cq *cq, "Requestor" : "Responder", cq->mcq.cqn);mlx5_ib_dbg (dev,"syndrome 0x%x, vendor syndrome 0x%x\n" , err_cqe->syndrome, err_cqe->vendor_err_synd); +if (wc->status !=IB_WC_WR_FLUSH_ERR && + (*cur_qp)->type ==MLX5_IB_QPT_REG_UMR ) + dev->umrc.state =MLX5_UMR_STATE_RECOVER ; +if (opcode ==MLX5_CQE_REQ_ERR ) { wq = &(*cur_qp)->sq; wqe_ctr =be16_to_cpu (cqe64->wqe_counter);
drivers/infiniband/hw/mlx5/mlx5_ib.h +11 -1
@@ -717,13 +717,23 @@ struct mlx5_ib_umr_context {struct completion done; }; +enum { +MLX5_UMR_STATE_ACTIVE , +MLX5_UMR_STATE_RECOVER , +MLX5_UMR_STATE_ERR , +}; +struct umr_common {struct ib_pd *pd;struct ib_cq *cq;struct ib_qp *qp; -/* control access to UMR QP +/* Protects from UMR QP overflow */ struct semaphore sem; +/* Protects from using UMR while the UMR is not active +*/ +struct mutex lock; +unsigned int state; };struct mlx5_cache_ent {
drivers/infiniband/hw/mlx5/umr.c +68 -10
104 lines not on this page · raw message
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 12/38 hwmon: (pmbus) Use dev_err_probe() to filter -EPROBE_DEFER error messages
In reply to Greg Kroah-HartmanFrom: Christophe JAILLET <[email protected]>
[ Upstream commit 09e52d17b72d3a4bf6951a90ccd8c97fae04e5cf ]
devm_regulator_register() can return -EPROBE_DEFER, so better use dev_err_probe() instead of dev_err(), it is less verbose in such a case.
It is also more informative, which can't hurt.
--- drivers/hwmon/pmbus/pmbus_core.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/hwmon/pmbus/pmbus_core.c +4 -5
@@ -2730,11 +2730,10 @@ static int pmbus_regulator_register(struct pmbus_data *data) rdev =devm_regulator_register (dev, &info->reg_desc[i], &config); -if (IS_ERR (rdev)) { -dev_err (dev,"Failed to register %s regulator\n" , - info->reg_desc[i].name); -return PTR_ERR (rdev); - } +if (IS_ERR (rdev)) +return dev_err_probe (dev,PTR_ERR (rdev), +"Failed to register %s regulator\n" , + info->reg_desc[i].name); }return 0 ;
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 4/38 RDMA/mlx5: Rely on RoCE fw cap instead of devlink when setting profile
In reply to Greg Kroah-HartmanFrom: Maher Sanalla <[email protected]>
[ Upstream commit 9ca05b0f27de928be121cccf07735819dc9e1ed3 ]
When the RDMA auxiliary driver probes, it sets its profile based on devlink driverinit value. The latter might not be in sync with FW yet (In case devlink reload is not performed), thus causing a mismatch between RDMA driver and FW. This results in the following FW syndrome when the RDMA driver tries to adjust RoCE state, which fails the probe:
"0xC1F678 | modify_nic_vport_context: roce_en set on a vport that doesn't support roce"
To prevent this, select the PF profile based on FW RoCE capability instead of relying on devlink driverinit value.
To provide backward compatibility of the RoCE disable feature, on older FW's where roce_rw is not set (FW RoCE capability is read-only), keep the current behavior e.g., rely on devlink driverinit value.
--- drivers/infiniband/hw/mlx5/main.c | 2 +- .../net/ethernet/mellanox/mlx5/core/main.c | 23 +++++++++++++++++-- include/linux/mlx5/driver.h | 19 +++++++-------- 3 files changed, 32 insertions(+), 12 deletions(-)
drivers/infiniband/hw/mlx5/main.c +1 -1
@@ -4336,7 +4336,7 @@ static int mlx5r_probe(struct auxiliary_device *adev, dev->mdev = mdev; dev->num_ports = num_ports; -if (ll ==IB_LINK_LAYER_ETHERNET && !mlx5_is_roce_init_enabled (mdev)) +if (ll ==IB_LINK_LAYER_ETHERNET && !mlx5_get_roce_state (mdev)) profile = &raw_eth_profile;else profile = &pf_profile;
drivers/net/ethernet/mellanox/mlx5/core/main.c +21 -2
@@ -501,6 +501,24 @@ static int max_uc_list_get_devlink_param(struct mlx5_core_dev *dev)return err; } +bool mlx5_is_roce_on (struct mlx5_core_dev *dev) +{ +struct devlink *devlink =priv_to_devlink (dev); +union devlink_param_value val; +int err; + + err =devlink_param_driverinit_value_get (devlink, +DEVLINK_PARAM_GENERIC_ID_ENABLE_ROCE , + &val); + +if (!err) +return val.vbool; + +mlx5_core_dbg (dev,"Failed to get param. err = %d\n" , err); +return MLX5_CAP_GEN (dev, roce); +} +EXPORT_SYMBOL (mlx5_is_roce_on); +static int handle_hca_cap_2 (struct mlx5_core_dev *dev,void *set_ctx) {void *set_hca_cap;
@@ -604,7 +622,8 @@ static int handle_hca_cap(struct mlx5_core_dev *dev, void *set_ctx) MLX5_CAP_GEN_MAX(dev, num_total_dynamic_vf_msix));if (MLX5_CAP_GEN (dev, roce_rw_supported)) -MLX5_SET (cmd_hca_cap, set_hca_cap, roce,mlx5_is_roce_init_enabled (dev)); +MLX5_SET (cmd_hca_cap, set_hca_cap, roce, +mlx5_is_roce_on (dev)); max_uc_list =max_uc_list_get_devlink_param (dev);if (max_uc_list >0 )
@@ -630,7 +649,7 @@ static int handle_hca_cap(struct mlx5_core_dev *dev, void *set_ctx)*/ static bool is_roce_fw_disabled (struct mlx5_core_dev *dev) { -return (MLX5_CAP_GEN (dev, roce_rw_supported) && !mlx5_is_roce_init_enabled (dev)) || +return (MLX5_CAP_GEN (dev, roce_rw_supported) && !mlx5_is_roce_on (dev)) || (!MLX5_CAP_GEN (dev, roce_rw_supported) && !MLX5_CAP_GEN (dev, roce)); }
include/linux/mlx5/driver.h +10 -9
@@ -1275,16 +1275,17 @@ enum { MLX5_TRIGGERED_CMD_COMP = (u64)1 << 32, }; -static inline bool mlx5_is_roce_init_enabled (struct mlx5_core_dev *dev) +bool mlx5_is_roce_on (struct mlx5_core_dev *dev); + +static inline bool mlx5_get_roce_state (struct mlx5_core_dev *dev) { -struct devlink *devlink =priv_to_devlink (dev); -union devlink_param_value val; -int err; - - err =devlink_param_driverinit_value_get (devlink, -DEVLINK_PARAM_GENERIC_ID_ENABLE_ROCE , - &val); -return err ?MLX5_CAP_GEN (dev, roce) : val.vbool; +if (MLX5_CAP_GEN (dev, roce_rw_supported)) +return MLX5_CAP_GEN (dev, roce); + +/* If RoCE cap is read-only in FW, get RoCE state from devlink +* in order to support RoCE enable/disable feature +*/ +return mlx5_is_roce_on (dev); }#endif /* MLX5_DRIVER_H */
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 1/38 iommu/vt-d: Fix kdump kernels boot failure with scalable mode
In reply to Greg Kroah-HartmanFrom: Lu Baolu <[email protected]>
[ Upstream commit 0c5f6c0d8201a809a6585b07b6263e9db2c874a3 ]
The translation table copying code for kdump kernels is currently based on the extended root/context entry formats of ECS mode defined in older VT-d v2.5, and doesn't handle the scalable mode formats. This causes the kexec capture kernel boot failure with DMAR faults if the IOMMU was enabled in scalable mode by the previous kernel.
The ECS mode has already been deprecated by the VT-d spec since v3.0 and Intel IOMMU driver doesn't support this mode as there's no real hardware implementation. Hence this converts ECS checking in copying table code into scalable mode.
The existing copying code consumes a bit in the context entry as a mark of copied entry. It needs to work for the old format as well as for the extended context entries. As it's hard to find such a common bit for both legacy and scalable mode context entries. This replaces it with a per- IOMMU bitmap.
--- drivers/iommu/intel/iommu.c | 100 ++++++++++++++++-------------------- include/linux/intel-iommu.h | 9 ++-- 2 files changed, 50 insertions(+), 59 deletions(-)
drivers/iommu/intel/iommu.c +44 -56
@@ -168,38 +168,6 @@ static phys_addr_t root_entry_uctp(struct root_entry *re)return re->hi &VTD_PAGE_MASK ; } -static inline void context_clear_pasid_enable (struct context_entry *context) -{ - context->lo &= ~(1ULL <<11 ); -} - -static inline bool context_pasid_enabled (struct context_entry *context) -{ -return !!(context->lo & (1ULL <<11 )); -} - -static inline void context_set_copied (struct context_entry *context) -{ - context->hi |= (1ull <<3 ); -} - -static inline bool context_copied (struct context_entry *context) -{ -return !!(context->hi & (1ULL <<3 )); -} - -static inline bool __context_present (struct context_entry *context) -{ -return (context->lo &1 ); -} - -bool context_present (struct context_entry *context) -{ -return context_pasid_enabled (context) ? -__context_present (context) : -__context_present (context) && !context_copied (context); -} -static inline void context_set_present (struct context_entry *context) { context->lo |=1 ;
@@ -247,6 +215,26 @@ static inline void context_clear_entry(struct context_entry *context) context->hi =0 ; } +static inline bool context_copied (struct intel_iommu *iommu,u8 bus,u8 devfn) +{ +if (!iommu->copied_tables) +return false; + +return test_bit (((long )bus <<8 ) | devfn, iommu->copied_tables); +} + +static inline void +set_context_copied (struct intel_iommu *iommu,u8 bus,u8 devfn) +{ +set_bit (((long )bus <<8 ) | devfn, iommu->copied_tables); +} + +static inline void +clear_context_copied (struct intel_iommu *iommu,u8 bus,u8 devfn) +{ +clear_bit (((long )bus <<8 ) | devfn, iommu->copied_tables); +} +/* * This domain is a statically identity mapping domain. * 1. This domain creats a static 1:1 mapping to all usable memory.
@@ -644,6 +632,13 @@ struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,struct context_entry *context;u64 *entry; +/* +* Except that the caller requested to allocate a new entry, +* returning a copied context entry makes no sense. +*/ +if (!alloc &&context_copied (iommu, bus, devfn)) +return NULL ; + entry = &root->lo;if (sm_supported (iommu)) {if (devfn >=0x80 ) {
@@ -1770,6 +1765,11 @@ static void free_dmar_iommu(struct intel_iommu *iommu) iommu->domain_ids =NULL ; } +if (iommu->copied_tables) { +bitmap_free (iommu->copied_tables); + iommu->copied_tables =NULL ; + } + g_iommus[iommu->seq_id] =NULL ;/* free context mapping */
@@ -1978,7 +1978,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain, goto out_unlock; ret =0 ; -if (context_present (context)) +if (context_present (context) && !context_copied (iommu, bus, devfn)) goto out_unlock;/*
@@ -1990,7 +1990,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,* in-flight DMA will exist, and we don't need to worry anymore * hereafter. */ -if (context_copied (context)) { +if (context_copied (iommu, bus, devfn)) {u16 did_old =context_domain_id (context);if (did_old <cap_ndoms (iommu->cap)) {
@@ -2001,6 +2001,8 @@ static int domain_context_mapping_one(struct dmar_domain *domain, iommu->flush.flush_iotlb (iommu, did_old,0 ,0 ,DMA_TLB_DSI_FLUSH ); } + +clear_context_copied (iommu, bus, devfn); }context_clear_entry (context);
@@ -2783,32 +2785,14 @@ static int copy_context_table(struct intel_iommu *iommu,/* Now copy the context entry */ memcpy (&ce, old_ce + idx,sizeof (ce)); -if (!__context_present (&ce)) +if (!context_present (&ce))continue ; did =context_domain_id (&ce);if (did >=0 && did <cap_ndoms (iommu->cap))set_bit (did, iommu->domain_ids); -/* -* We need a marker for copied context entries. This -* marker needs to work for the old format as well as -* for extended context entries. -* -* Bit 67 of the context entry is used. In the old -* format this bit is available to software, in the -* extended format it is the PGE bit, but PGE is ignored -* by HW if PASIDs are disabled (and thus still -* available). -* -* So disable PASIDs first and then mark the entry -* copied. This means that we don't copy PASID -* translations from the old kernel, but this is fine as -* faults there are not fatal. -*/ -context_clear_pasid_enable (&ce); -context_set_copied (&ce); - +set_context_copied (iommu, bus, devfn); new_ce[idx] = ce; }
@@ -2835,8 +2819,8 @@ static int copy_translation_tables(struct intel_iommu *iommu)bool new_ext, ext; rtaddr_reg =dmar_readq (iommu->reg +DMAR_RTADDR_REG ); - ext = !!(rtaddr_reg &DMA_RTADDR_RTT ); - new_ext = !!ecap_ecs (iommu->ecap); + ext = !!(rtaddr_reg &DMA_RTADDR_SMT ); + new_ext = !!sm_supported (iommu);/* * The RTT bit can only be changed when translation is disabled,
@@ -2847,6 +2831,10 @@ static int copy_translation_tables(struct intel_iommu *iommu)if (new_ext != ext)return -EINVAL ; + iommu->copied_tables =bitmap_zalloc (BIT_ULL (16 ),GFP_KERNEL ); +if (!iommu->copied_tables) +return -ENOMEM ; + old_rt_phys = rtaddr_reg &VTD_PAGE_MASK ;if (!old_rt_phys)return -EINVAL ;
include/linux/intel-iommu.h +6 -3
@@ -196,7 +196,6 @@#define ecap_dis (e) (((e) >> 27) & 0x1)#define ecap_nest (e) (((e) >> 26) & 0x1)#define ecap_mts (e) (((e) >> 25) & 0x1) -#define ecap_ecs (e) (((e) >> 24) & 0x1)#define ecap_iotlb_offset (e) ((((e) >> 8) & 0x3ff) * 16)#define ecap_max_iotlb_offset (e) (ecap_iotlb_offset(e) + 16)#define ecap_coherent (e) ((e) & 0x1)
@@ -264,7 +263,6 @@#define DMA_GSTS_CFIS (((u32)1) << 23)/* DMA_RTADDR_REG */ -#define DMA_RTADDR_RTT (((u64)1) << 11)#define DMA_RTADDR_SMT (((u64)1) << 10)/* CCMD_REG */
@@ -579,6 +577,7 @@ struct intel_iommu {#ifdef CONFIG_INTEL_IOMMU unsigned long *domain_ids;/* bitmap of domains */ +unsigned long *copied_tables;/* bitmap of copied tables */ spinlock_t lock;/* protect context, domain ids */ struct root_entry *root_entry;/* virtual address */
@@ -692,6 +691,11 @@ static inline int nr_pte_to_next_page(struct dma_pte *pte) (struct dma_pte *)ALIGN ((unsigned long )pte,VTD_PAGE_SIZE ) - pte; } +static inline bool context_present (struct context_entry *context) +{ +return (context->lo &1 ); +} +extern struct dmar_drhd_unit *dmar_find_matched_drhd_unit (struct pci_dev *dev);extern int dmar_enable_qi (struct intel_iommu *iommu);
@@ -776,7 +780,6 @@ static inline void intel_iommu_debugfs_init(void) {}#endif /* CONFIG_INTEL_IOMMU_DEBUGFS */ extern const struct attribute_group *intel_iommu_groups[]; -bool context_present (struct context_entry *context);struct context_entry *iommu_context_addr (struct intel_iommu *iommu,u8 bus,u8 devfn,int alloc);
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 2/38 net/mlx5: Introduce ifc bits for using software vhca id
In reply to Greg Kroah-HartmanFrom: Yishai Hadas <[email protected]>
[ Upstream commit 0372c546eca575445331c0ad8902210b70be6d61 ]
Introduce ifc related stuff to enable using software vhca id functionality.
Stable-dep-of: 9ca05b0f27de ("RDMA/mlx5: Rely on RoCE fw cap instead of devlink when setting profile")
--- include/linux/mlx5/mlx5_ifc.h | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-)
include/linux/mlx5/mlx5_ifc.h +21 -4
@@ -1804,7 +1804,14 @@ struct mlx5_ifc_cmd_hca_cap_2_bits {u8 max_reformat_remove_size[0x8 ];u8 max_reformat_remove_offset[0x8 ]; -u8 reserved_at_c0[0x740 ]; +u8 reserved_at_c0[0x160 ]; + +u8 reserved_at_220[0x1 ]; +u8 sw_vhca_id_valid[0x1 ]; +u8 sw_vhca_id[0xe ]; +u8 reserved_at_230[0x10 ]; + +u8 reserved_at_240[0x5c0 ]; };enum mlx5_ifc_flow_destination_type {
@@ -3715,6 +3722,11 @@ struct mlx5_ifc_rmpc_bits {struct mlx5_ifc_wq_bits wq; }; +enum { +VHCA_ID_TYPE_HW =0 , +VHCA_ID_TYPE_SW =1 , +}; +struct mlx5_ifc_nic_vport_context_bits {u8 reserved_at_0[0x5 ];u8 min_wqe_inline_mode[0x3 ];
@@ -3731,8 +3743,8 @@ struct mlx5_ifc_nic_vport_context_bits {u8 event_on_mc_address_change[0x1 ];u8 event_on_uc_address_change[0x1 ]; -u8 reserved_at_40[0xc ]; - +u8 vhca_id_type[0x1 ]; +u8 reserved_at_41[0xb ];u8 affiliation_criteria[0x4 ];u8 affiliated_vhca_id[0x10 ];
@@ -7189,7 +7201,12 @@ struct mlx5_ifc_init_hca_in_bits {u8 reserved_at_20[0x10 ];u8 op_mod[0x10 ]; -u8 reserved_at_40[0x40 ]; +u8 reserved_at_40[0x20 ]; + +u8 reserved_at_60[0x2 ]; +u8 sw_vhca_id[0xe ]; +u8 reserved_at_70[0x10 ]; +u8 sw_owner_id[4 ][0x20 ]; };
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 9/38 platform/surface: aggregator_registry: Add support for Surface Laptop Go 2
In reply to Greg Kroah-HartmanFrom: Maximilian Luz <[email protected]>
[ Upstream commit 84b8e403435c8fb94b872309673764a447961e00 ]
The Surface Laptop Go 2 seems to have the same SAM client devices as the Surface Laptop Go 1, so re-use its node group.
--- drivers/platform/surface/surface_aggregator_registry.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/platform/surface/surface_aggregator_registry.c +3 -0
@@ -556,6 +556,9 @@ static const struct acpi_device_id ssam_platform_hub_match[] = {/* Surface Laptop Go 1 */ { "MSHW0118", (unsigned long)ssam_node_group_slg1 }, +/* Surface Laptop Go 2 */ + { "MSHW0290", (unsigned long)ssam_node_group_slg1 }, +/* Surface Laptop Studio */ { "MSHW0123", (unsigned long)ssam_node_group_sls },
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 7/38 ACPI: resource: skip IRQ override on AMD Zen platforms
In reply to Greg Kroah-HartmanFrom: Chuanhong Guo <[email protected]>
commit 9946e39fe8d0a5da9eb947d8e40a7ef204ba016e upstream.
IRQ override isn't needed on modern AMD Zen systems. There's an active low keyboard IRQ on AMD Ryzen 6000 and it will stay this way on newer platforms. This IRQ override breaks keyboards for almost all Ryzen 6000 laptops currently on the market.
Skip this IRQ override for all AMD Zen platforms because this IRQ override is supposed to be a workaround for buggy ACPI DSDT and we can't have a long list of all future AMD CPUs/Laptops in the kernel code. If a device with buggy ACPI DSDT shows up, a separated list containing just them should be created.
--- drivers/acpi/resource.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/acpi/resource.c +10 -0
@@ -416,6 +416,16 @@ static bool acpi_dev_irq_override(u32 gs {int i; +#ifdef CONFIG_X86 +/* +* IRQ override isn't needed on modern AMD Zen systems and +* this override breaks active low IRQs on AMD Ryzen 6000 and +* newer systems. Skip it. +*/ +if (boot_cpu_has (X86_FEATURE_ZEN )) +return false; +#endif +for (i =0 ; i <ARRAY_SIZE (skip_override_table); i++) {const struct irq_override_cmp *entry = &skip_override_table[i];
Greg Kroah-Hartman
maintainerPATCH 14/38 dt-bindings: iio: gyroscope: bosch,bmg160: correct number of pins
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 767470209cedbe2cc72ba38d77c9f096d2c7694c ]
BMG160 has two interrupt pins to which interrupts can be freely mapped. Correct the schema to express such case and fix warnings like:
qcom/msm8916-alcatel-idol347.dtb: gyroscope@68: interrupts: [[97, 1], [98, 1]] is too long
However the basic issue still persists - the interrupts should come in a defined order.
--- .../devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml +2 -0
@@ -24,8 +24,10 @@ properties: interrupts: minItems: 1 + maxItems: 2 description: Should be configured with type IRQ_TYPE_EDGE_RISING. + If two interrupts are provided, expected order is INT1 and INT2. required: - compatible
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainercover 5.19.10-rc1 review
This is the start of the stable review cycle for the 5.19.10 release. There are 38 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 Sun, 18 Sep 2022 10:04:31 +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/v5.x/stable-review/patch-5.19.10-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.19.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.19.10-rc1
Jarrah Gosbell <[email protected]>
Input: goodix - add compatible string for GT1158
Sindhu-Devale <[email protected]>
RDMA/irdma: Use s/g array in post send only when its valid
William Breathitt Gray <[email protected]>
gpio: 104-idio-16: Make irq_chip immutable
William Breathitt Gray <[email protected]>
gpio: 104-dio-48e: Make irq_chip immutable
Yupeng Li <[email protected]>
LoongArch: Fix arch_remove_memory() undefined build error
Huacai Chen <[email protected]>
LoongArch: Fix section mismatch due to acpi_os_ioremap()
Luke D. Jones <[email protected]>
platform/x86: asus-wmi: Increase FAN_CURVE_BUF_LEN to 32
Hu Xiaoying <[email protected]>
usb: storage: Add ASUS <0x0b05:0x1932> to IGNORE_UAS
Hans de Goede <[email protected]>
platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes
Yu Zhe <[email protected]>
perf/arm_pmu_platform: fix tests for platform_get_irq() failure
Kurt Kanzenbach <[email protected]>
net: dsa: hellcreek: Print warning only once
Chengming Gui <[email protected]>
drm/amd/amdgpu: skip ucode loading if ucode_size == 0
Maurizio Lombardi <[email protected]>
nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change()
Shyamin Ayesh <[email protected]>
nvme-pci: add NVME_QUIRK_BOGUS_NID for Lexar NM610
Evan Quan <[email protected]>
drm/amd/pm: use vbios carried pptable for all SMU13.0.7 SKUs
Guchun Chen <[email protected]>
drm/amdgpu: disable FRU access on special SIENNA CICHLID card
Greg Tulli <[email protected]>
Input: iforce - add support for Boeder Force Feedback Wheel
Li Qiong <[email protected]>
ieee802154: cc2520: add rc code in cc2520_tx()
Wei Yongjun <[email protected]>
gpio: mockup: remove gpio debugfs when remove device
Jean-Francois Le Fillatre <[email protected]>
r8152: add PID for the Lenovo OneLink+ Dock
Kai-Heng Feng <[email protected]>
tg3: Disable tg3 device on system reboot to avoid triggering AER
Luiz Augusto von Dentz <[email protected]>
Bluetooth: MGMT: Fix Get Device Flags
Even Xu <[email protected]>
hid: intel-ish-hid: ishtp: Fix ishtp client sending disordered message
Jason Wang <[email protected]>
HID: ishtp-hid-clientHID: ishtp-hid-client: Fix comment typo
Krzysztof Kozlowski <[email protected]>
dt-bindings: iio: gyroscope: bosch,bmg160: correct number of pins
Junaid Shahid <[email protected]>
kvm: x86: mmu: Always flush TLBs when enabling dirty logging
Christophe JAILLET <[email protected]>
hwmon: (pmbus) Use dev_err_probe() to filter -EPROBE_DEFER error messages
Iwona Winiarska <[email protected]>
peci: cpu: Fix use-after-free in adev_release()
Rob Clark <[email protected]>
drm/msm/rd: Fix FIFO-full deadlock
Maximilian Luz <[email protected]>
platform/surface: aggregator_registry: Add support for Surface Laptop Go 2
Ondrej Jirman <[email protected]>
Input: goodix - add support for GT1158
Chuanhong Guo <[email protected]>
ACPI: resource: skip IRQ override on AMD Zen platforms
Maor Gottlieb <[email protected]>
RDMA/mlx5: Fix UMR cleanup on error flow of driver init
Aharon Landau <[email protected]>
RDMA/mlx5: Add a umr recovery flow
Maher Sanalla <[email protected]>
RDMA/mlx5: Rely on RoCE fw cap instead of devlink when setting profile
Yishai Hadas <[email protected]>
net/mlx5: Use software VHCA id when it's supported
Yishai Hadas <[email protected]>
net/mlx5: Introduce ifc bits for using software vhca id
Lu Baolu <[email protected]>
iommu/vt-d: Fix kdump kernels boot failure with scalable mode
-------------
Diffstat:
.../bindings/iio/gyroscope/bosch,bmg160.yaml | 2 + Documentation/input/joydev/joystick.rst | 1 + Makefile | 4 +- arch/loongarch/Kconfig | 1 + arch/loongarch/include/asm/acpi.h | 2 +- arch/loongarch/kernel/acpi.c | 2 +- arch/loongarch/mm/init.c | 22 +++-- arch/x86/kvm/mmu/mmu.c | 45 ++-------- arch/x86/kvm/mmu/spte.h | 14 ++- arch/x86/kvm/x86.c | 44 +++++++++ drivers/acpi/resource.c | 10 +++ drivers/gpio/gpio-104-dio-48e.c | 10 ++- drivers/gpio/gpio-104-idio-16.c | 18 ++-- drivers/gpio/gpio-mockup.c | 9 +- drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c | 9 +- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 +- .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 35 +++++--- drivers/gpu/drm/msm/msm_rd.c | 3 + drivers/hid/intel-ish-hid/ishtp-hid.h | 2 +- drivers/hid/intel-ish-hid/ishtp/client.c | 68 ++++++++------ drivers/hwmon/pmbus/pmbus_core.c | 9 +- drivers/infiniband/hw/irdma/uk.c | 3 +- drivers/infiniband/hw/mlx5/cq.c | 4 + drivers/infiniband/hw/mlx5/main.c | 2 +- drivers/infiniband/hw/mlx5/mlx5_ib.h | 13 ++- drivers/infiniband/hw/mlx5/umr.c | 81 ++++++++++++++--- drivers/input/joystick/iforce/iforce-main.c | 1 + drivers/input/touchscreen/goodix.c | 2 + drivers/iommu/intel/iommu.c | 100 +++++++++------------ drivers/net/ethernet/broadcom/tg3.c | 8 +- drivers/net/ethernet/mellanox/mlx5/core/fw.c | 4 + drivers/net/ethernet/mellanox/mlx5/core/main.c | 72 ++++++++++++++- drivers/net/ethernet/mellanox/mlx5/core/vport.c | 14 ++- drivers/net/ieee802154/cc2520.c | 1 + drivers/net/usb/cdc_ether.c | 7 ++ drivers/net/usb/r8152.c | 3 + drivers/nvme/host/pci.c | 2 + drivers/nvme/target/tcp.c | 3 + drivers/peci/cpu.c | 3 +- drivers/perf/arm_pmu_platform.c | 2 +- .../platform/surface/surface_aggregator_registry.c | 3 + drivers/platform/x86/acer-wmi.c | 9 +- drivers/platform/x86/asus-wmi.c | 9 +- drivers/usb/storage/unusual_uas.h | 7 ++ include/linux/intel-iommu.h | 9 +- include/linux/mlx5/driver.h | 20 +++-- include/linux/mlx5/mlx5_ifc.h | 25 +++++- net/bluetooth/mgmt.c | 71 +++++++++------ net/dsa/tag_hellcreek.c | 2 +- 49 files changed, 541 insertions(+), 251 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 29/38 perf/arm_pmu_platform: fix tests for platform_get_irq() failure
From: Yu Zhe <[email protected]>
[ Upstream commit 6bb0d64c100091e131cd16710b62fda3319cd0af ]
The platform_get_irq() returns negative error codes. It can't actually return zero.
--- drivers/perf/arm_pmu_platform.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/perf/arm_pmu_platform.c +1 -1
@@ -117,7 +117,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)if (num_irqs ==1 ) {int irq =platform_get_irq (pdev,0 ); -if (irq &&irq_is_percpu_devid (irq)) +if ((irq >0 ) &&irq_is_percpu_devid (irq))return pmu_parse_percpu_irq (pmu, irq); }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 31/38 usb: storage: Add ASUS <0x0b05:0x1932> to IGNORE_UAS
In reply to Greg Kroah-HartmanFrom: Hu Xiaoying <[email protected]>
[ Upstream commit c61feaee68b9735be06f162bc046c7f1959efb0c ]
USB external storage device(0x0b05:1932), use gnome-disk-utility tools to test usb write < 30MB/s.
if does not to load module of uas for this device, can increase the write speed from 20MB/s to >40MB/s.
--- drivers/usb/storage/unusual_uas.h | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/usb/storage/unusual_uas.h +7 -0
@@ -62,6 +62,13 @@ UNUSUAL_DEV(0x0984, 0x0301, 0x0128, 0x0128, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_IGNORE_UAS), +/* Reported-by: Tom Hu <[email protected]> */ +UNUSUAL_DEV (0x0b05 ,0x1932 ,0x0000 ,0x9999 , +"ASUS" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_IGNORE_UAS ), +/* Reported-by: David Webb <[email protected]> */ UNUSUAL_DEV(0x0bc2, 0x331a, 0x0000, 0x9999, "Seagate",
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 33/38 LoongArch: Fix section mismatch due to acpi_os_ioremap()
In reply to Greg Kroah-HartmanFrom: Huacai Chen <[email protected]>
[ Upstream commit e0fba87c854347007fb9fc873e890b686cc61302 ]
Now acpi_os_ioremap() is marked with __init because it calls memblock_ is_memory() which is also marked with __init in the !ARCH_KEEP_MEMBLOCK case. However, acpi_os_ioremap() is called by ordinary functions such as acpi_os_{read, write}_memory() and causes section mismatch warnings:
WARNING: modpost: vmlinux.o: section mismatch in reference: acpi_os_read_memory (section: .text) -> acpi_os_ioremap (section: .init.text)
WARNING: modpost: vmlinux.o: section mismatch in reference: acpi_os_write_memory (section: .text) -> acpi_os_ioremap (section: .init.text)
Fix these warnings by selecting ARCH_KEEP_MEMBLOCK unconditionally and removing the __init modifier of acpi_os_ioremap(). This can also give a chance to track "memory" and "reserved" memblocks after early boot.
--- arch/loongarch/Kconfig | 1 + arch/loongarch/include/asm/acpi.h | 2 +- arch/loongarch/kernel/acpi.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-)
arch/loongarch/Kconfig +1 -0
@@ -36,6 +36,7 @@ config LOONGARCH select ARCH_INLINE_SPIN_UNLOCK_BH if !PREEMPTION select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION + select ARCH_KEEP_MEMBLOCK select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO select ARCH_SPARSEMEM_ENABLE
arch/loongarch/include/asm/acpi.h +1 -1
@@ -15,7 +15,7 @@ extern int acpi_pci_disabled;extern int acpi_noirq;#define acpi_os_ioremap acpi_os_ioremap -void __init __iomem *acpi_os_ioremap (acpi_physical_address phys,acpi_size size); +void __iomem *acpi_os_ioremap (acpi_physical_address phys,acpi_size size);static inline void disable_acpi (void ) {
arch/loongarch/kernel/acpi.c +1 -1
@@ -113,7 +113,7 @@ void __init __acpi_unmap_table(void __iomem *map, unsigned long size)early_memunmap (map, size); } -void __init __iomem *acpi_os_ioremap (acpi_physical_address phys,acpi_size size) +void __iomem *acpi_os_ioremap (acpi_physical_address phys,acpi_size size) {if (!memblock_is_memory (phys))return ioremap (phys, size);
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 30/38 platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes
In reply to Greg Kroah-HartmanFrom: Hans de Goede <[email protected]>
[ Upstream commit c3b82d26bc85f5fc2fef5ec8cce17c89633a55a8 ]
2 keymap fixes for the Acer Aspire One AOD270 and the same hardware rebranded as Packard Bell Dot SC:
1. The F2 key is marked with a big '?' symbol on the Packard Bell Dot SC, this sends WMID_HOTKEY_EVENTs with a scancode of 0x27 add a mapping for this.
2. Scancode 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate input event with the "Video Bus" input device events. But on these devices the "Video Bus" does not send events for this key. Map 0x61 to KEY_UNKNOWN instead of using KE_IGNORE so that udev/hwdb can override it on these devs.
--- drivers/platform/x86/acer-wmi.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/platform/x86/acer-wmi.c +8 -1
@@ -99,6 +99,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = { {KE_KEY, 0x22, {KEY_PROG2} }, /* Arcade */ {KE_KEY, 0x23, {KEY_PROG3} }, /* P_Key */ {KE_KEY, 0x24, {KEY_PROG4} }, /* Social networking_Key */ + {KE_KEY, 0x27, {KEY_HELP} }, {KE_KEY, 0x29, {KEY_PROG3} }, /* P_Key for TM8372 */ {KE_IGNORE, 0x41, {KEY_MUTE} }, {KE_IGNORE, 0x42, {KEY_PREVIOUSSONG} },
@@ -112,7 +113,13 @@ static const struct key_entry acer_wmi_keymap[] __initconst = { {KE_IGNORE, 0x48, {KEY_VOLUMEUP} }, {KE_IGNORE, 0x49, {KEY_VOLUMEDOWN} }, {KE_IGNORE, 0x4a, {KEY_VOLUMEDOWN} }, - {KE_IGNORE, 0x61, {KEY_SWITCHVIDEOMODE} }, +/* +* 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate input event +* with the "Video Bus" input device events. But sometimes it is not +* a dup. Map it to KEY_UNKNOWN instead of using KE_IGNORE so that +* udev/hwdb can override it on systems where it is not a dup. +*/ + {KE_KEY, 0x61, {KEY_UNKNOWN} }, {KE_IGNORE, 0x62, {KEY_BRIGHTNESSUP} }, {KE_IGNORE, 0x63, {KEY_BRIGHTNESSDOWN} }, {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 20/38 gpio: mockup: remove gpio debugfs when remove device
In reply to Greg Kroah-HartmanFrom: Wei Yongjun <[email protected]>
[ Upstream commit 303e6da99429510b1e4edf833afe90ac8542e747 ]
GPIO mockup debugfs is created in gpio_mockup_probe() but forgot to remove when remove device. This patch add a devm managed callback for removing them.
--- drivers/gpio/gpio-mockup.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/gpio/gpio-mockup.c +8 -1
@@ -373,6 +373,13 @@ static void gpio_mockup_debugfs_setup(struct device *dev, } } +static void gpio_mockup_debugfs_cleanup (void *data) +{ +struct gpio_mockup_chip *chip = data; + +debugfs_remove_recursive (chip->dbg_dir); +} +static void gpio_mockup_dispose_mappings (void *data) {struct gpio_mockup_chip *chip = data;
@@ -455,7 +462,7 @@ static int gpio_mockup_probe(struct platform_device *pdev)gpio_mockup_debugfs_setup (dev, chip); -return 0 ; +return devm_add_action_or_reset (dev, gpio_mockup_debugfs_cleanup, chip); }static const struct of_device_id gpio_mockup_of_match[] = {
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 32/38 platform/x86: asus-wmi: Increase FAN_CURVE_BUF_LEN to 32
In reply to Greg Kroah-HartmanFrom: Luke D. Jones <[email protected]>
[ Upstream commit 5542dfc582f4a925f67bbfaf8f62ca83506032ae ]
Fix for TUF laptops returning with an -ENOSPC on calling asus_wmi_evaluate_method_buf() when fetching default curves. The TUF method requires at least 32 bytes space.
This also moves and changes the pr_debug() in fan_curve_check_present() to pr_warn() in fan_curve_get_factory_default() so that there is at least some indication in logs of why it fails.
--- drivers/platform/x86/asus-wmi.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/platform/x86/asus-wmi.c +4 -5
@@ -107,7 +107,7 @@ module_param(fnlock_default, bool, 0444);#define WMI_EVENT_MASK 0xFFFF#define FAN_CURVE_POINTS 8 -#define FAN_CURVE_BUF_LEN (FAN_CURVE_POINTS * 2) +#define FAN_CURVE_BUF_LEN 32#define FAN_CURVE_DEV_CPU 0x00#define FAN_CURVE_DEV_GPU 0x01/* Mask to determine if setting temperature or percentage */
@@ -2208,8 +2208,10 @@ static int fan_curve_get_factory_default(struct asus_wmi *asus, u32 fan_dev) curves = &asus->custom_fan_curves[fan_idx]; err =asus_wmi_evaluate_method_buf (asus->dsts_id, fan_dev, mode, buf,FAN_CURVE_BUF_LEN ); -if (err) +if (err) { +pr_warn ("%s (0x%08x) failed: %d\n" , __func__, fan_dev, err);return err; + }fan_curve_copy_from_buf (curves, buf); curves->device_id = fan_dev;
@@ -2227,9 +2229,6 @@ static int fan_curve_check_present(struct asus_wmi *asus, bool *available, err =fan_curve_get_factory_default (asus, fan_dev);if (err) { -pr_debug ("fan_curve_get_factory_default(0x%08x) failed: %d\n" , - fan_dev, err); -/* Don't cause probe to fail on devices without fan-curves */ return 0 ; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 6/38 RDMA/mlx5: Fix UMR cleanup on error flow of driver init
In reply to Greg Kroah-HartmanFrom: Maor Gottlieb <[email protected]>
[ Upstream commit 9b7d4be967f16f79a2283b2338709fcc750313ee ]
The cited commit removed from the cleanup flow of umr the checks if the resources were created. This could lead to null-ptr-deref in case that we had failure in mlx5_ib_stage_ib_reg_init stage.
Fix it by adding new state to the umr that can say if the resources were created or not and check it in the umr cleanup flow before destroying the resources.
--- drivers/infiniband/hw/mlx5/mlx5_ib.h | 1 + drivers/infiniband/hw/mlx5/umr.c | 3 +++ 2 files changed, 4 insertions(+)
drivers/infiniband/hw/mlx5/mlx5_ib.h +1 -0
@@ -718,6 +718,7 @@ struct mlx5_ib_umr_context { };enum { +MLX5_UMR_STATE_UNINIT ,MLX5_UMR_STATE_ACTIVE ,MLX5_UMR_STATE_RECOVER ,MLX5_UMR_STATE_ERR ,
drivers/infiniband/hw/mlx5/umr.c +3 -0
@@ -177,6 +177,7 @@ int mlx5r_umr_resource_init(struct mlx5_ib_dev *dev)sema_init (&dev->umrc.sem,MAX_UMR_WR );mutex_init (&dev->umrc.lock); + dev->umrc.state =MLX5_UMR_STATE_ACTIVE ;return 0 ;
@@ -191,6 +192,8 @@ int mlx5r_umr_resource_init(struct mlx5_ib_dev *dev)void mlx5r_umr_resource_cleanup (struct mlx5_ib_dev *dev) { +if (dev->umrc.state ==MLX5_UMR_STATE_UNINIT ) +return ;ib_destroy_qp (dev->umrc.qp);ib_free_cq (dev->umrc.cq);ib_dealloc_pd (dev->umrc.pd);
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 34/38 LoongArch: Fix arch_remove_memory() undefined build error
In reply to Greg Kroah-HartmanFrom: Yupeng Li <[email protected]>
[ Upstream commit 1a470ce4e9106cc4c3c0edfb2e213dcbb7224dc4 ]
The kernel build error when unslected CONFIG_MEMORY_HOTREMOVE because arch_remove_memory() is needed by mm/memory_hotplug.c but undefined.
Some build error messages like:
LD vmlinux.o
MODPOST vmlinux.symvers
MODINFO modules.builtin.modinfo
GEN modules.builtin
LD .tmp_vmlinux.kallsyms1
loongarch64-linux-gnu-ld: mm/memory_hotplug.o: in function `.L242':
memory_hotplug.c:(.ref.text+0x930): undefined reference to `arch_remove_memory'
make: *** [Makefile:1169:vmlinux] 错误 1
Removed CONFIG_MEMORY_HOTREMOVE requirement and rearrange the file refer to the definitions of other platform architectures.
--- arch/loongarch/mm/init.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-)
arch/loongarch/mm/init.c +10 -12
@@ -131,18 +131,6 @@ int arch_add_memory(int nid, u64 start, u64 size, struct mhp_params *params)return ret; } -#ifdef CONFIG_NUMA -int memory_add_physaddr_to_nid (u64 start) -{ -int nid; - - nid =pa_to_nid (start); -return nid; -} -EXPORT_SYMBOL_GPL (memory_add_physaddr_to_nid); -#endif - -#ifdef CONFIG_MEMORY_HOTREMOVE void arch_remove_memory (u64 start,u64 size,struct vmem_altmap *altmap) {unsigned long start_pfn = start >>PAGE_SHIFT ;
@@ -154,6 +142,16 @@ void arch_remove_memory(u64 start, u64 size, struct vmem_altmap *altmap) page +=vmem_altmap_offset (altmap); __remove_pages(start_pfn, nr_pages, altmap); } + +#ifdef CONFIG_NUMA +int memory_add_physaddr_to_nid (u64 start) +{ +int nid; + + nid =pa_to_nid (start); +return nid; +} +EXPORT_SYMBOL_GPL (memory_add_physaddr_to_nid);#endif #endif
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 8/38 Input: goodix - add support for GT1158
In reply to Greg Kroah-HartmanFrom: Ondrej Jirman <[email protected]>
[ Upstream commit 425fe4709c76e35f93f4c0e50240f0b61b2a2e54 ]
This controller is used by PinePhone and PinePhone Pro. Support for the PinePhone Pro will be added in a later patch set.
--- drivers/input/touchscreen/goodix.c | 1 + 1 file changed, 1 insertion(+)
drivers/input/touchscreen/goodix.c +1 -0
@@ -95,6 +95,7 @@ static const struct goodix_chip_data gt9x_chip_data = {static const struct goodix_chip_id goodix_chip_ids[] = { { .id ="1151" , .data = >1x_chip_data }, + { .id ="1158" , .data = >1x_chip_data }, { .id ="5663" , .data = >1x_chip_data }, { .id ="5688" , .data = >1x_chip_data }, { .id ="917S" , .data = >1x_chip_data },
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 21/38 ieee802154: cc2520: add rc code in cc2520_tx()
In reply to Greg Kroah-HartmanFrom: Li Qiong <[email protected]>
[ Upstream commit ffd7bdddaab193c38416fd5dd416d065517d266e ]
The rc code is 0 at the error path "status & CC2520_STATUS_TX_UNDERFLOW". Assign rc code with '-EINVAL' at this error path to fix it.
--- drivers/net/ieee802154/cc2520.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/ieee802154/cc2520.c +1 -0
@@ -504,6 +504,7 @@ cc2520_tx(struct ieee802154_hw *hw, struct sk_buff *skb) goto err_tx;if (status &CC2520_STATUS_TX_UNDERFLOW ) { + rc = -EINVAL ;dev_err (&priv->spi->dev,"cc2520 tx underflow exception\n" ); goto err_tx; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 37/38 RDMA/irdma: Use s/g array in post send only when its valid
In reply to Greg Kroah-HartmanFrom: Sindhu-Devale <[email protected]>
commit 2c8844431d065ae15a6b442f5769b60aeaaa07af upstream.
Send with invalidate verb call can pass in an uninitialized s/g array with 0 sge's which is filled into irdma WQE and causes a HW asynchronous event.
Fix this by using the s/g array in irdma post send only when its valid.
--- drivers/infiniband/hw/irdma/uk.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/infiniband/hw/irdma/uk.c +2 -1
@@ -497,7 +497,8 @@ int irdma_uk_send(struct irdma_qp_uk *qp FIELD_PREP(IRDMAQPSQ_IMMDATA, info->imm_data)); i =0 ; }else { - qp->wqe_ops.iw_set_fragment (wqe,0 , op_info->sg_list, + qp->wqe_ops.iw_set_fragment (wqe,0 , + frag_cnt ? op_info->sg_list :NULL , qp->swqe_polarity); i =1 ; }
Greg Kroah-Hartman
maintainerPATCH 23/38 drm/amdgpu: disable FRU access on special SIENNA CICHLID card
In reply to Greg Kroah-HartmanFrom: Guchun Chen <[email protected]>
[ Upstream commit c8fea9273fd1be308668496badfcbd55183e0dd3 ]
Below driver load error will be printed, not friendly to end user.
amdgpu: ATOM BIOS: 113-D603GLXE-077
[drm] FRU: Failed to get size field
[drm:amdgpu_fru_get_product_info [amdgpu]] *ERROR* Failed to read FRU Manufacturer, ret:-5
--- drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c +7 -2
@@ -66,10 +66,15 @@ static bool is_fru_eeprom_supported(struct amdgpu_device *adev)return true;case CHIP_SIENNA_CICHLID :if (strnstr (atom_ctx->vbios_version,"D603" , +sizeof (atom_ctx->vbios_version))) { +if (strnstr (atom_ctx->vbios_version,"D603GLXE" ,sizeof (atom_ctx->vbios_version))) -return true; -else +return false; +else +return true; + }else {return false; + }default :return false; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 26/38 nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change()
In reply to Greg Kroah-HartmanFrom: Maurizio Lombardi <[email protected]>
[ Upstream commit 478814a5584197fa1fb18377653626e3416e7cd6 ]
TCP_FIN_WAIT2 and TCP_LAST_ACK were not handled, the connection is closing so we can ignore them and avoid printing the "unhandled state" warning message.
[ 1298.852386] nvmet_tcp: queue 2 unhandled state 5 [ 1298.879112] nvmet_tcp: queue 7 unhandled state 5 [ 1298.884253] nvmet_tcp: queue 8 unhandled state 5 [ 1298.889475] nvmet_tcp: queue 9 unhandled state 5
v2: Do not call nvmet_tcp_schedule_release_queue(), just ignore the fin_wait2 and last_ack states.
--- drivers/nvme/target/tcp.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/nvme/target/tcp.c +3 -0
@@ -1506,6 +1506,9 @@ static void nvmet_tcp_state_change(struct sock *sk) goto done;switch (sk->sk_state) { +case TCP_FIN_WAIT2 : +case TCP_LAST_ACK : +break ;case TCP_FIN_WAIT1 :case TCP_CLOSE_WAIT :case TCP_CLOSE :
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 25/38 nvme-pci: add NVME_QUIRK_BOGUS_NID for Lexar NM610
In reply to Greg Kroah-HartmanFrom: Shyamin Ayesh <[email protected]>
[ Upstream commit 200dccd07df21b504a2168960059f0a971bf415d ]
Lexar NM610 reports bogus eui64 values that appear to be the same across all drives. Quirk them out so they are not marked as "non globally unique" duplicates.
--- drivers/nvme/host/pci.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/nvme/host/pci.c +2 -0
@@ -3517,6 +3517,8 @@ static const struct pci_device_id nvme_id_table[] = { .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, { PCI_DEVICE(0xc0a9, 0x540a), /* Crucial P2 */ .driver_data = NVME_QUIRK_BOGUS_NID, }, + { PCI_DEVICE(0x1d97, 0x2263), /* Lexar NM610 */ + .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(PCI_VENDOR_ID_AMAZON, 0x0061), .driver_data = NVME_QUIRK_DMA_ADDRESS_BITS_48, }, { PCI_DEVICE(PCI_VENDOR_ID_AMAZON, 0x0065),
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 35/38 gpio: 104-dio-48e: Make irq_chip immutable
In reply to Greg Kroah-HartmanFrom: William Breathitt Gray <[email protected]>
[ Upstream commit 35f0aa7727b092520bf91374768a4fdafd4a4fe3 ]
Kernel warns about mutable irq_chips:
"not an immutable chip, please consider fixing!"
Make the struct irq_chip const, flag it as IRQCHIP_IMMUTABLE, add the new helper functions, and call the appropriate gpiolib functions.
--- drivers/gpio/gpio-104-dio-48e.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
drivers/gpio/gpio-104-dio-48e.c +7 -3
@@ -271,6 +271,7 @@ static void dio48e_irq_mask(struct irq_data *data) dio48egpio->irq_mask &= ~BIT (0 ); else dio48egpio->irq_mask &= ~BIT(1); +gpiochip_disable_irq (chip, offset);if (!dio48egpio->irq_mask)/* disable interrupts */
@@ -298,6 +299,7 @@ static void dio48e_irq_unmask(struct irq_data *data)iowrite8 (0x00 , dio48egpio->base +0xB ); } +gpiochip_enable_irq (chip, offset);if (offset ==19 ) dio48egpio->irq_mask |=BIT (0 );else
@@ -320,12 +322,14 @@ static int dio48e_irq_set_type(struct irq_data *data, unsigned int flow_type)return 0 ; } -static struct irq_chip dio48e_irqchip = { +static const struct irq_chip dio48e_irqchip = { .name ="104-dio-48e" , .irq_ack = dio48e_irq_ack, .irq_mask = dio48e_irq_mask, .irq_unmask = dio48e_irq_unmask, - .irq_set_type = dio48e_irq_set_type + .irq_set_type = dio48e_irq_set_type, + .flags =IRQCHIP_IMMUTABLE , +GPIOCHIP_IRQ_RESOURCE_HELPERS , };static irqreturn_t dio48e_irq_handler (int irq,void *dev_id)
@@ -414,7 +418,7 @@ static int dio48e_probe(struct device *dev, unsigned int id) dio48egpio->chip.set_multiple = dio48e_gpio_set_multiple; girq = &dio48egpio->chip.irq; - girq->chip = &dio48e_irqchip; +gpio_irq_chip_set_chip (girq, &dio48e_irqchip);/* This will let us handle the parent IRQ in the driver */ girq->parent_handler =NULL ; girq->num_parents =0 ;
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 38/38 Input: goodix - add compatible string for GT1158
In reply to Greg Kroah-HartmanFrom: Jarrah Gosbell <[email protected]>
commit 80b9ebd3e478cd41526cbf84f80c3e0eb885d1d3 upstream.
Add compatible string for GT1158 missing from the previous patch.
--- drivers/input/touchscreen/goodix.c | 1 + 1 file changed, 1 insertion(+)
drivers/input/touchscreen/goodix.c +1 -0
@@ -1515,6 +1515,7 @@ MODULE_DEVICE_TABLE(acpi, goodix_acpi_ma#ifdef CONFIG_OF static const struct of_device_id goodix_of_match[] = { { .compatible ="goodix,gt1151" }, + { .compatible ="goodix,gt1158" }, { .compatible ="goodix,gt5663" }, { .compatible ="goodix,gt5688" }, { .compatible = "goodix,gt911" },
Greg Kroah-Hartman
maintainerPATCH 24/38 drm/amd/pm: use vbios carried pptable for all SMU13.0.7 SKUs
In reply to Greg Kroah-HartmanFrom: Evan Quan <[email protected]>
[ Upstream commit b023053592646b1da9477b0b598f2cdd5d3f89d8 ]
For those SMU13.0.7 unsecure SKUs, the vbios carried pptable is ready to go. Use that one instead of hardcoded softpptable.
--- .../drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-)
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +22 -13
@@ -382,11 +382,27 @@ static int smu_v13_0_7_append_powerplay_table(struct smu_context *smu)return 0 ; } +static int smu_v13_0_7_get_pptable_from_pmfw (struct smu_context *smu, +void **table, +uint32_t *size) +{ +struct smu_table_context *smu_table = &smu->smu_table; +void *combo_pptable = smu_table->combo_pptable; +int ret =0 ; + + ret =smu_cmn_get_combo_pptable (smu); +if (ret) +return ret; + + *table = combo_pptable; + *size =sizeof (struct smu_13_0_7_powerplay_table ); + +return 0 ; +}static int smu_v13_0_7_setup_pptable (struct smu_context *smu) {struct smu_table_context *smu_table = &smu->smu_table; -void *combo_pptable = smu_table->combo_pptable;struct amdgpu_device *adev = smu->adev;int ret =0 ;
@@ -395,18 +411,11 @@ static int smu_v13_0_7_setup_pptable(struct smu_context *smu)* be used directly by driver. To get the raw pptable, we need to * rely on the combo pptable(and its revelant SMU message). */ -if (adev->scpm_enabled) { - ret =smu_cmn_get_combo_pptable (smu); -if (ret) -return ret; - - smu->smu_table.power_play_table = combo_pptable; - smu->smu_table.power_play_table_size =sizeof (struct smu_13_0_7_powerplay_table ); - }else { - ret =smu_v13_0_setup_pptable (smu); -if (ret) -return ret; - } + ret =smu_v13_0_7_get_pptable_from_pmfw (smu, + &smu_table->power_play_table, + &smu_table->power_play_table_size); +if (ret) +return ret; ret =smu_v13_0_7_store_powerplay_table (smu);if (ret)
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 27/38 drm/amd/amdgpu: skip ucode loading if ucode_size == 0
In reply to Greg Kroah-HartmanFrom: Chengming Gui <[email protected]>
[ Upstream commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 ]
Restrict the ucode loading check to avoid frontdoor loading error.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +1 -1
@@ -2372,7 +2372,7 @@ static int psp_load_smu_fw(struct psp_context *psp)static bool fw_load_skip_check (struct psp_context *psp,struct amdgpu_firmware_info *ucode) { -if (!ucode->fw) +if (!ucode->fw || !ucode->ucode_size)return true; if (ucode->ucode_id == AMDGPU_UCODE_ID_SMC &&
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 36/38 gpio: 104-idio-16: Make irq_chip immutable
In reply to Greg Kroah-HartmanFrom: William Breathitt Gray <[email protected]>
[ Upstream commit 410a5041aa60d91ff66a861560e7c879d664270f ]
Kernel warns about mutable irq_chips:
"not an immutable chip, please consider fixing!"
Make the struct irq_chip const, flag it as IRQCHIP_IMMUTABLE, add the new helper functions, and call the appropriate gpiolib functions.
--- drivers/gpio/gpio-104-idio-16.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
drivers/gpio/gpio-104-idio-16.c +11 -7
@@ -150,10 +150,11 @@ static void idio_16_irq_mask(struct irq_data *data) {struct gpio_chip *chip =irq_data_get_irq_chip_data (data);struct idio_16_gpio *const idio16gpio =gpiochip_get_data (chip); -const unsigned long mask =BIT (irqd_to_hwirq (data)); +const unsigned long offset =irqd_to_hwirq (data);unsigned long flags; - idio16gpio->irq_mask &= ~mask; + idio16gpio->irq_mask &= ~BIT (offset); +gpiochip_disable_irq (chip, offset);if (!idio16gpio->irq_mask) {raw_spin_lock_irqsave (&idio16gpio->lock, flags);
@@ -168,11 +169,12 @@ static void idio_16_irq_unmask(struct irq_data *data) {struct gpio_chip *chip =irq_data_get_irq_chip_data (data);struct idio_16_gpio *const idio16gpio =gpiochip_get_data (chip); -const unsigned long mask =BIT (irqd_to_hwirq (data)); +const unsigned long offset =irqd_to_hwirq (data);const unsigned long prev_irq_mask = idio16gpio->irq_mask;unsigned long flags; - idio16gpio->irq_mask |= mask; +gpiochip_enable_irq (chip, offset); + idio16gpio->irq_mask |=BIT (offset);if (!prev_irq_mask) {raw_spin_lock_irqsave (&idio16gpio->lock, flags);
@@ -193,12 +195,14 @@ static int idio_16_irq_set_type(struct irq_data *data, unsigned int flow_type)return 0 ; } -static struct irq_chip idio_16_irqchip = { +static const struct irq_chip idio_16_irqchip = { .name ="104-idio-16" , .irq_ack = idio_16_irq_ack, .irq_mask = idio_16_irq_mask, .irq_unmask = idio_16_irq_unmask, - .irq_set_type = idio_16_irq_set_type + .irq_set_type = idio_16_irq_set_type, + .flags =IRQCHIP_IMMUTABLE , +GPIOCHIP_IRQ_RESOURCE_HELPERS , };static irqreturn_t idio_16_irq_handler (int irq,void *dev_id)
@@ -275,7 +279,7 @@ static int idio_16_probe(struct device *dev, unsigned int id) idio16gpio->out_state =0xFFFF ; girq = &idio16gpio->chip.irq; - girq->chip = &idio_16_irqchip; +gpio_irq_chip_set_chip (girq, &idio_16_irqchip);/* This will let us handle the parent IRQ in the driver */ girq->parent_handler =NULL ; girq->num_parents =0 ;
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 19/38 r8152: add PID for the Lenovo OneLink+ Dock
In reply to Greg Kroah-HartmanFrom: Jean-Francois Le Fillatre <[email protected]>
[ Upstream commit 1bd3a383075c64d638e65d263c9267b08ee7733c ]
The Lenovo OneLink+ Dock contains an RTL8153 controller that behaves as a broken CDC device by default. Add the custom Lenovo PID to the r8152 driver to support it properly.
Also, systems compatible with this dock provide a BIOS option to enable MAC address passthrough (as per Lenovo document "ThinkPad Docking Solutions 2017"). Add the custom PID to the MAC passthrough list too.
Tested on a ThinkPad 13 1st gen with the expected results:
passthrough disabled: Invalid header when reading pass-thru MAC addr passthrough enabled: Using pass-thru MAC addr XX:XX:XX:XX:XX:XX
--- drivers/net/usb/cdc_ether.c | 7 +++++++ drivers/net/usb/r8152.c | 3 +++ 2 files changed, 10 insertions(+)
drivers/net/usb/cdc_ether.c +7 -0
@@ -777,6 +777,13 @@ static const struct usb_device_id products[] = { },#endif +/* Lenovo ThinkPad OneLink+ Dock (based on Realtek RTL8153) */ +{ +USB_DEVICE_AND_INTERFACE_INFO (LENOVO_VENDOR_ID ,0x3054 ,USB_CLASS_COMM , + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info =0 , +}, + /* ThinkPad USB-C Dock (based on Realtek RTL8153) */ { USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3062, USB_CLASS_COMM,
drivers/net/usb/r8152.c +3 -0
@@ -770,6 +770,7 @@ enum rtl8152_flags { RX_EPROTO, }; +#define DEVICE_ID_THINKPAD_ONELINK_PLUS_DOCK 0x3054#define DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2 0x3082#define DEVICE_ID_THINKPAD_USB_C_DONGLE 0x720c#define DEVICE_ID_THINKPAD_USB_C_DOCK_GEN2 0xa387
@@ -9581,6 +9582,7 @@ static bool rtl8152_supports_lenovo_macpassthru(struct usb_device *udev)if (vendor_id ==VENDOR_ID_LENOVO ) {switch (product_id) { +case DEVICE_ID_THINKPAD_ONELINK_PLUS_DOCK :case DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2 :case DEVICE_ID_THINKPAD_USB_C_DOCK_GEN2 :case DEVICE_ID_THINKPAD_USB_C_DOCK_GEN3 :
@@ -9828,6 +9830,7 @@ static const struct usb_device_id rtl8152_table[] = {REALTEK_USB_DEVICE (VENDOR_ID_MICROSOFT ,0x0927 ),REALTEK_USB_DEVICE (VENDOR_ID_SAMSUNG ,0xa101 ),REALTEK_USB_DEVICE (VENDOR_ID_LENOVO ,0x304f ), +REALTEK_USB_DEVICE (VENDOR_ID_LENOVO ,0x3054 ),REALTEK_USB_DEVICE (VENDOR_ID_LENOVO ,0x3062 ),REALTEK_USB_DEVICE (VENDOR_ID_LENOVO ,0x3069 ), REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3082),
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 28/38 net: dsa: hellcreek: Print warning only once
In reply to Greg Kroah-HartmanFrom: Kurt Kanzenbach <[email protected]>
[ Upstream commit 52267ce25f60f37ae40ccbca0b21328ebae5ae75 ]
In case the source port cannot be decoded, print the warning only once. This still brings attention to the user and does not spam the logs at the same time.
--- net/dsa/tag_hellcreek.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/dsa/tag_hellcreek.c +1 -1
@@ -45,7 +45,7 @@ static struct sk_buff *hellcreek_rcv(struct sk_buff *skb, skb->dev =dsa_master_find_slave (dev,0 , port);if (!skb->dev) { -netdev_warn (dev,"Failed to get source port: %d\n" , port); +netdev_warn_once (dev,"Failed to get source port: %d\n" , port);return NULL ; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 22/38 Input: iforce - add support for Boeder Force Feedback Wheel
In reply to Greg Kroah-HartmanFrom: Greg Tulli <[email protected]>
[ Upstream commit 9c9c71168f7979f3798b61c65b4530fbfbcf19d1 ]
Add a new iforce_device entry to support the Boeder Force Feedback Wheel device.
--- Documentation/input/joydev/joystick.rst | 1 + drivers/input/joystick/iforce/iforce-main.c | 1 + 2 files changed, 2 insertions(+)
Documentation/input/joydev/joystick.rst +1 -0
@@ -517,6 +517,7 @@ All I-Force devices are supported by the iforce module. This includes: * AVB Mag Turbo Force * AVB Top Shot Pegasus * AVB Top Shot Force Feedback Racing Wheel +* Boeder Force Feedback Wheel * Logitech WingMan Force * Logitech WingMan Force Wheel * Guillemot Race Leader Force Feedback
drivers/input/joystick/iforce/iforce-main.c +1 -0
@@ -50,6 +50,7 @@ static struct iforce_device iforce_device[] = { { 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce }, { 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick_avb, abs_avb_pegasus, ff_iforce }, { 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_wheel, abs_wheel, ff_iforce }, + { 0x05ef, 0x8886, "Boeder Force Feedback Wheel", btn_wheel, abs_wheel, ff_iforce }, { 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, //? { 0x061c, 0xc0a4, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce }, //? { 0x061c, 0xc084, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce },
Signature · 1 line
2.35.1
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.19.10 release. There are 38 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 Sun, 18 Sep 2022 10:04:31 +0000. Anything received after that time might be too late.
Build results:
total: 150 pass: 150 fail: 0 Qemu test results: total: 490 pass: 490 fail: 0
Guenter
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.19.10 release. There are 38 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 Sun, 18 Sep 2022 10:04:31 +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/v5.x/stable-review/patch-5.19.10-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.19.y
and the diffstat can be found below.thanks,
greg k-h
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
Hey Greg,
Ran tests and boot tested on my system, no regressions found
Quoted 5 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.19.10 release. There are 38 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.
Successfully cross-compiled for arm64 (bcm2711_defconfig, GCC 10.2.0) and powerpc (ps3_defconfig, GCC 12.1.0).
Signature · 1 line
An old man doll... just what I always wanted! - Clara
Hi Greg,
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.19.10 release. There are 38 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 Sun, 18 Sep 2022 10:04:31 +0000. Anything received after that time might be too late.
Build test (gcc version 12.2.1 20220819):
mips: 59 configs -> no failure
arm: 99 configs -> no failure
arm64: 3 configs -> no failurex86_64: 4 configs -> no failure
alpha allmodconfig -> no failure
csky allmodconfig -> no failure
powerpc allmodconfig -> no failure
riscv allmodconfig -> no failure
s390 allmodconfig -> no failure
xtensa allmodconfig -> no failure
Boot test:x86_64: Booted on my test laptop. No regression.x86_64: Booted on qemu. No regression. [1]
arm64: Booted on rpi4b (4GB model). No regression. [2]
mips: Booted on ci20 board. No regression. [3]
[1]. https://openqa.qa.codethink.co.uk/tests/1846
[2]. https://openqa.qa.codethink.co.uk/tests/1849
[3]. https://openqa.qa.codethink.co.uk/tests/1851
--
Regards
Sudip
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.19.10 release. There are 38 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 Sun, 18 Sep 2022 10:04:31 +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/v5.x/stable-review/patch-5.19.10-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.19.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro's test farm.
Regressions on x86_64 while running libgpiod tests. This reported regression also noticed on mainline, stable-rc 5.19, stable-rc 5.15 and stable-rc 5.10 branches
I have not bisected this reported crash yet.
+ cd ./automated/linux/gpiod
+ ./gpiod.sh /opt/libgpiod/bin/
[INFO] libgpiod test suite [INFO] 117 tests registered [INFO] checking the linux kernel version [INFO] kernel release is v5.19.10 - ok to run tests [INFO] using gpio-tools from '/usr/bin' [ 62.469728] BUG: kernel NULL pointer dereference, address: 00000000000000a0 [ 62.471040] #PF: supervisor write access in kernel mode [ 62.472169] #PF: error_code(0x0002) - not-present page [ 62.473058] PGD 10799b067 P4D 10799b067 PUD 1079cc067 PMD 0 [ 62.474012] Oops: 0002 [#1] PREEMPT SMP NOPTI [ 62.474777] CPU: 2 PID: 461 Comm: gpiod-test Not tainted 5.19.10-rc1 #1 [ 62.475933] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014 [ 62.477347] RIP: 0010:down_write+0x1a/0x60 [ 62.478080] Code: 01 f0 ff ff 19 c0 f7 d0 83 e0 fc e9 e0 17 31 00 0f 1f 44 00 00 55 48 89 e5 41 54 49 89 fc e8 8d ca ff ff 31 c0 ba 01 00 00 00 <f0> 49 0f b1 14 24 75 18 65 48 8b 04 25 40 ad 01 00 49 89 44 24 08 [ 62.481306] RSP: 0018:ffffacbdc06dfcf8 EFLAGS: 00010246 [ 62.482215] RAX: 0000000000000000 RBX: ffffa320c4244810 RCX: ffffff8100000000 [ 62.483433] RDX: 0000000000000001 RSI: 0000000000000064 RDI: 00000000000000a0 [ 62.484649] RBP: ffffacbdc06dfd00 R08: ffffa320c13cae98 R09: ffffa320c4244aa0 [ 62.485883] R10: ffffa320c4244aa0 R11: 000000000000000e R12: 00000000000000a0 [ 62.486869] R13: ffffa320c0ae0100 R14: 00000000000000a0 R15: 000000000000000e [ 62.487804] FS: 00007f8ef9e8a740(0000) GS:ffffa320fbd00000(0000) knlGS:0000000000000000 [ 62.488832] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 62.489605] CR2: 00000000000000a0 CR3: 0000000101900000 CR4: 00000000003506e0 [ 62.490565] Call Trace: [ 62.490918] <TASK> [ 62.491250] simple_recursive_removal+0xaa/0x2d0 [ 62.491876] ? debugfs_remove+0x70/0x70 [ 62.492392] debugfs_remove+0x45/0x70 [ 62.492895] gpio_mockup_debugfs_cleanup+0x15/0x20 [gpio_mockup] [ 62.493693] devm_action_release+0x15/0x20 [ 62.494246] devres_release_all+0xc1/0x110 [ 62.494801] device_unbind_cleanup+0x12/0x80 [ 62.495402] device_release_driver_internal+0x1e5/0x230 [ 62.496100] driver_detach+0x4a/0x90 [ 62.496578] bus_remove_driver+0x59/0xe0 [ 62.497103] driver_unregister+0x31/0x60 [ 62.497621] platform_driver_unregister+0x12/0x20 [ 62.498249] gpio_mockup_exit+0x1c/0x465 [gpio_mockup] [ 62.498933] __do_sys_delete_module+0x1b2/0x290 [ 62.499592] ? syscall_trace_enter.constprop.0+0x133/0x1b0 [ 62.500245] __x64_sys_delete_module+0x18/0x20 [ 62.500740] do_syscall_64+0x3b/0x90 [ 62.501137] entry_SYSCALL_64_after_hwframe+0x63/0xcd [ 62.501679] RIP: 0033:0x7f8ef9d0c95b [ 62.502075] Code: 73 01 c3 48 8b 0d c5 34 0e 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 b0 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 95 34 0e 00 f7 d8 64 89 01 48 [ 62.504070] RSP: 002b:00007ffe85d75898 EFLAGS: 00000202 ORIG_RAX: 00000000000000b0 [ 62.504878] RAX: ffffffffffffffda RBX: 0000000000f1f370 RCX: 00007f8ef9d0c95b [ 62.505634] RDX: 0000000000f1f527 RSI: 0000000000000800 RDI: 0000000000f1f938 [ 62.506393] RBP: 0000000000f1f370 R08: 0000000000000007 R09: 0000000000f275c0 [ 62.507154] R10: 00007f8ef9c16b88 R11: 0000000000000202 R12: 0000000000f1f420 [ 62.507928] R13: 00007f8ef9db3b00 R14: 0000000000418df8 R15: 00007f8ef9f6f000 [ 62.508704] </TASK> [ 62.508959] Modules linked in: gpio_mockup(-) [ 62.509439] CR2: 00000000000000a0 [ 62.509806] ---[ end trace 0000000000000000 ]--- [ 62.510305] RIP: 0010:down_write+0x1a/0x60 [ 62.510760] Code: 01 f0 ff ff 19 c0 f7 d0 83 e0 fc e9 e0 17 31 00 0f 1f 44 00 00 55 48 89 e5 41 54 49 89 fc e8 8d ca ff ff 31 c0 ba 01 00 00 00 <f0> 49 0f b1 14 24 75 18 65 48 8b 04 25 40 ad 01 00 49 89 44 24 08 [ 62.512764] RSP: 0018:ffffacbdc06dfcf8 EFLAGS: 00010246 [ 62.513329] RAX: 0000000000000000 RBX: ffffa320c4244810 RCX: ffffff8100000000 [ 62.514090] RDX: 0000000000000001 RSI: 0000000000000064 RDI: 00000000000000a0 [ 62.514844] RBP: ffffacbdc06dfd00 R08: ffffa320c13cae98 R09: ffffa320c4244aa0 [ 62.515615] R10: ffffa320c4244aa0 R11: 000000000000000e R12: 00000000000000a0 [ 62.516366] R13: ffffa320c0ae0100 R14: 00000000000000a0 R15: 000000000000000e [ 62.517164] FS: 00007f8ef9e8a740(0000) GS:ffffa320fbd00000(0000) knlGS:0000000000000000 [ 62.518028] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 62.518650] CR2: 00000000000000a0 CR3: 0000000101900000 CR4: 00000000003506e0
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.19.y/build/v5.19.9-39-gf5066a94bca4/testrun/11946630/suite/log-parser-test/tests/
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.19.y/build/v5.19.9-39-gf5066a94bca4/testrun/11946106/suite/log-parser-test/tests/
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.19.y/build/v5.19.9-39-gf5066a94bca4/testrun/11952896/suite/log-parser-test/tests/
## Build
* kernel: 5.19.10-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-5.19.y
* git commit: f5066a94bca42cc8cc64e9999063584bff59f8d6
* git describe: v5.19.9-39-gf5066a94bca4
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.19.y/build/v5.19.9-39-gf5066a94bca4
## test Regressions (compared to v5.19.9)
- Kernel BUG while running libgpiod on x86_64.
## No metric Regressions (compared to v5.19.9)
## No test Fixes (compared to v5.19.9)
## No metric Fixes (compared to v5.19.9)
## Test result summary
total: 115298, pass: 102277, fail: 950, skip: 11751, xfail: 320
## Build Summary
* arc: 10 total, 10 passed, 0 failed
* arm: 339 total, 336 passed, 3 failed
* arm64: 72 total, 70 passed, 2 failed
* i386: 61 total, 55 passed, 6 failed
* mips: 62 total, 59 passed, 3 failed
* parisc: 14 total, 14 passed, 0 failed
* powerpc: 75 total, 66 passed, 9 failed
* riscv: 32 total, 27 passed, 5 failed
* s390: 26 total, 24 passed, 2 failed
* sh: 26 total, 24 passed, 2 failed
* sparc: 14 total, 14 passed, 0 failed
* x86_64: 65 total, 63 passed, 2 failed
## Test suites summary
* fwts
* igt-gpu-tools
* kselftest-android
* kselftest-arm64
* kselftest-arm64/arm64.btitest.bti_c_func
* kselftest-arm64/arm64.btitest.bti_j_func
* kselftest-arm64/arm64.btitest.bti_jc_func
* kselftest-arm64/arm64.btitest.bti_none_func
* kselftest-arm64/arm64.btitest.nohint_func
* kselftest-arm64/arm64.btitest.paciasp_func
* kselftest-arm64/arm64.nobtitest.bti_c_func
* kselftest-arm64/arm64.nobtitest.bti_j_func
* kselftest-arm64/arm64.nobtitest.bti_jc_func
* kselftest-arm64/arm64.nobtitest.bti_none_func
* kselftest-arm64/arm64.nobtitest.nohint_func
* kselftest-arm64/arm64.nobtitest.paciasp_func
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-drivers-dma-buf
* kselftest-efivarfs
* kselftest-filesystems
* kselftest-filesystems-binderfs
* kselftest-firmware
* kselftest-fpu
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-ir
* kselftest-kcmp
* kselftest-kexec
* kselftest-kvm
* kselftest-lib
* kselftest-livepatch
* kselftest-membarrier
* kselftest-memfd
* kselftest-memory-hotplug
* kselftest-mincore
* kselftest-mount
* kselftest-mqueue
* kselftest-netfilter
* kselftest-nsfs
* kselftest-openat2
* kselftest-pid_namespace
* kselftest-pidfd
* kselftest-proc
* kselftest-pstore
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-splice
* kselftest-static_keys
* kselftest-sync
* kselftest-sysctl
* kselftest-tc-testing
* kselftest-timens
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user
* kselftest-vm
* kselftest-x86
* kselftest-zram
* kunit
* kvm-unit-tests
* libhugetlbfs
* log-parser-boot
* log-parser-test
* ltp-cap_bounds
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-fsx
* ltp-hugetlb
* ltp-io
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-open-posix-tests
* ltp-pty
* ltp-sched
* ltp-securebits
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* network-basic-tests
* packetdrill
* perf
* perf/Zstd-perf.data-compression
* rcutorture
* v4l2-compliance
* vdso
--
Linaro LKFT
https://lkft.linaro.org
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.19.10 release. There are 38 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 Sun, 18 Sep 2022 10:04:31 +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/v5.x/stable-review/patch-5.19.10-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.19.y
and the diffstat can be found below.thanks,
greg k-h
Tested rc1 against the Fedora build system (aarch64, armv7, ppc64le, s390x, x86_64), and boot tested x86_64. No regressions noted.
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.19.10 release. There are 38 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 Sun, 18 Sep 2022 10:04:31 +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/v5.x/stable-review/patch-5.19.10-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.19.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:
Signature · 1 line
Florian