6.10.9-rc1 review
Subsystems (9)
Greg Kroah-Hartman
maintainerPATCH 159/184 f2fs: fix to do sanity check on blocks for inline_data inode
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chao Yu <[email protected]>
[ Upstream commit c240c87bcd44a1a2375fc8ef8c645d1f1fe76466 ]
inode can be fuzzed, so it can has F2FS_INLINE_DATA flag and valid i_blocks/i_nid value, this patch supports to do extra sanity check to detect such corrupted state.
--- fs/f2fs/f2fs.h | 2 +- fs/f2fs/inline.c | 20 +++++++++++++++++++- fs/f2fs/inode.c | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-)
fs/f2fs/f2fs.h +1 -1
@@ -4154,7 +4154,7 @@ extern struct kmem_cache *f2fs_inode_entry_slab;* inline.c */ bool f2fs_may_inline_data (struct inode *inode); -bool f2fs_sanity_check_inline_data (struct inode *inode); +bool f2fs_sanity_check_inline_data (struct inode *inode,struct page *ipage);bool f2fs_may_inline_dentry (struct inode *inode);void f2fs_do_read_inline_data (struct folio *folio,struct page *ipage); void f2fs_truncate_inline_inode(struct inode *inode,
fs/f2fs/inline.c +19 -1
@@ -33,11 +33,29 @@ bool f2fs_may_inline_data(struct inode *inode)return !f2fs_post_read_required (inode); } -bool f2fs_sanity_check_inline_data (struct inode *inode) +static bool inode_has_blocks (struct inode *inode,struct page *ipage) +{ +struct f2fs_inode *ri =F2FS_INODE (ipage); +int i; + +if (F2FS_HAS_BLOCKS (inode)) +return true; + +for (i =0 ; i <DEF_NIDS_PER_INODE ; i++) { +if (ri->i_nid[i]) +return true; + } +return false; +} + +bool f2fs_sanity_check_inline_data (struct inode *inode,struct page *ipage) {if (!f2fs_has_inline_data (inode))return false; +if (inode_has_blocks (inode, ipage)) +return false; +if (!support_inline_data (inode))return true;
fs/f2fs/inode.c +1 -1
@@ -347,7 +347,7 @@ static bool sanity_check_inode(struct inode *inode, struct page *node_page) } } -if (f2fs_sanity_check_inline_data (inode)) { +if (f2fs_sanity_check_inline_data (inode, node_page)) {f2fs_warn (sbi,"%s: inode (ino=%lx, mode=%u) should not have inline_data, run fsck to fix" , __func__, inode->i_ino, inode->i_mode);return false;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 160/184 drm/xe: Add GuC state asserts to deregister_exec_queue
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Matthew Brost <[email protected]>
[ Upstream commit 716ce587a81e6165a4133ea32f63f3d69f80e1e7 ]
Will help catch bugs in GuC state machine.
--- drivers/gpu/drm/xe/xe_guc_submit.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/gpu/drm/xe/xe_guc_submit.c +5 -0
@@ -1551,6 +1551,11 @@ static void deregister_exec_queue(struct xe_guc *guc, struct xe_exec_queue *q) q->guc->id, }; +xe_gt_assert (guc_to_gt (guc),exec_queue_destroyed (q)); +xe_gt_assert (guc_to_gt (guc),exec_queue_registered (q)); +xe_gt_assert (guc_to_gt (guc), !exec_queue_pending_disable (q)); +xe_gt_assert (guc_to_gt (guc), !exec_queue_pending_enable (q)); +trace_xe_exec_queue_deregister (q);xe_guc_ct_send_g2h_handler (&guc->ct, action,ARRAY_SIZE (action));
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 161/184 driver: iio: add missing checks on iio_infos callback access
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Julien Stephan <[email protected]>
[ Upstream commit c4ec8dedca961db056ec85cb7ca8c9f7e2e92252 ]
Some callbacks from iio_info structure are accessed without any check, so if a driver doesn't implement them trying to access the corresponding sysfs entries produce a kernel oops such as:
[ 2203.527791] Unable to handle kernel NULL pointer dereference at virtual address 00000000 when execute [...] [ 2203.783416] Call trace: [ 2203.783429] iio_read_channel_info_avail from dev_attr_show+0x18/0x48 [ 2203.789807] dev_attr_show from sysfs_kf_seq_show+0x90/0x120 [ 2203.794181] sysfs_kf_seq_show from seq_read_iter+0xd0/0x4e4 [ 2203.798555] seq_read_iter from vfs_read+0x238/0x2a0 [ 2203.802236] vfs_read from ksys_read+0xa4/0xd4 [ 2203.805385] ksys_read from ret_fast_syscall+0x0/0x54 [ 2203.809135] Exception stack(0xe0badfa8 to 0xe0badff0) [ 2203.812880] dfa0: 00000003 b6f10f80 00000003 b6eab000 00020000 00000000 [ 2203.819746] dfc0: 00000003 b6f10f80 7ff00000 00000003 00000003 00000000 00020000 00000000 [ 2203.826619] dfe0: b6e1bc88 bed80958 b6e1bc94 b6e1bcb0 [ 2203.830363] Code: bad PC value [ 2203.832695] ---[ end trace 0000000000000000 ]---
--- drivers/iio/industrialio-core.c | 7 ++++++- drivers/iio/industrialio-event.c | 9 +++++++++ drivers/iio/inkern.c | 32 ++++++++++++++++++++++---------- 3 files changed, 37 insertions(+), 11 deletions(-)
drivers/iio/industrialio-core.c +6 -1
@@ -758,9 +758,11 @@ static ssize_t iio_read_channel_info(struct device *dev,INDIO_MAX_RAW_ELEMENTS , vals, &val_len, this_attr->address); - else + else if (indio_dev->info->read_raw) ret = indio_dev->info->read_raw (indio_dev, this_attr->c, &vals[0 ], &vals[1 ], this_attr->address); + else + return -EINVAL;if (ret <0 )return ret;
@@ -842,6 +844,9 @@ static ssize_t iio_read_channel_info_avail(struct device *dev,int length;int type; +if (!indio_dev->info->read_avail) +return -EINVAL ; + ret = indio_dev->info->read_avail (indio_dev, this_attr->c, &vals, &type, &length, this_attr->address);
drivers/iio/industrialio-event.c +9 -0
@@ -285,6 +285,9 @@ static ssize_t iio_ev_state_store(struct device *dev,if (ret <0 )return ret; +if (!indio_dev->info->write_event_config) +return -EINVAL ; + ret = indio_dev->info->write_event_config (indio_dev, this_attr->c,iio_ev_attr_type (this_attr),iio_ev_attr_dir (this_attr), val);
@@ -300,6 +303,9 @@ static ssize_t iio_ev_state_show(struct device *dev,struct iio_dev_attr *this_attr =to_iio_dev_attr (attr);int val; +if (!indio_dev->info->read_event_config) +return -EINVAL ; + val = indio_dev->info->read_event_config (indio_dev, this_attr->c,iio_ev_attr_type (this_attr),iio_ev_attr_dir (this_attr));
@@ -318,6 +324,9 @@ static ssize_t iio_ev_value_show(struct device *dev,int val, val2, val_arr[2 ];int ret; +if (!indio_dev->info->read_event_value) +return -EINVAL ; + ret = indio_dev->info->read_event_value(indio_dev, this_attr->c, iio_ev_attr_type(this_attr), iio_ev_attr_dir(this_attr), iio_ev_attr_info(this_attr),
drivers/iio/inkern.c +22 -10
@@ -543,6 +543,7 @@ EXPORT_SYMBOL_GPL(devm_iio_channel_get_all);static int iio_channel_read (struct iio_channel *chan,int *val,int *val2,enum iio_chan_info_enum info) { +const struct iio_info *iio_info = chan->indio_dev->info;int unused;int vals[INDIO_MAX_RAW_ELEMENTS ];int ret;
@@ -554,15 +555,18 @@ static int iio_channel_read(struct iio_channel *chan, int *val, int *val2,if (!iio_channel_has_info (chan->channel, info))return -EINVAL ; -if (chan->indio_dev->info->read_raw_multi) { - ret = chan->indio_dev->info->read_raw_multi (chan->indio_dev, - chan->channel,INDIO_MAX_RAW_ELEMENTS , - vals, &val_len, info); +if (iio_info->read_raw_multi) { + ret = iio_info->read_raw_multi (chan->indio_dev, + chan->channel, +INDIO_MAX_RAW_ELEMENTS , + vals, &val_len, info); *val = vals[0 ]; *val2 = vals[1 ]; + }else if (iio_info->read_raw) { + ret = iio_info->read_raw (chan->indio_dev, + chan->channel, val, val2, info); }else { - ret = chan->indio_dev->info->read_raw (chan->indio_dev, - chan->channel, val, val2, info); +return -EINVAL ; }return ret;
@@ -750,11 +754,15 @@ static int iio_channel_read_avail(struct iio_channel *chan, const int **vals, int *type, int *length, enum iio_chan_info_enum info) { + const struct iio_info *iio_info = chan->indio_dev->info; +if (!iio_channel_has_available (chan->channel, info))return -EINVAL ; -return chan->indio_dev->info->read_avail (chan->indio_dev, chan->channel, - vals, type, length, info); +if (iio_info->read_avail) +return iio_info->read_avail (chan->indio_dev, chan->channel, + vals, type, length, info); +return -EINVAL ; } int iio_read_avail_channel_attribute(struct iio_channel *chan,
@@ -917,8 +925,12 @@ EXPORT_SYMBOL_GPL(iio_get_channel_type);static int iio_channel_write (struct iio_channel *chan,int val,int val2,enum iio_chan_info_enum info) { -return chan->indio_dev->info->write_raw (chan->indio_dev, - chan->channel, val, val2, info); +const struct iio_info *iio_info = chan->indio_dev->info; + +if (iio_info->write_raw) +return iio_info->write_raw (chan->indio_dev, + chan->channel, val, val2, info); +return -EINVAL ; } int iio_write_channel_attribute(struct iio_channel *chan, int val, int val2,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 162/184 block: remove the blk_flush_integrity call in blk_integrity_unregister
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
[ Upstream commit e8bc14d116aeac8f0f133ec8d249acf4e0658da7 ]
Now that there are no indirect calls for PI processing there is no way to dereference a NULL pointer here. Additionally drivers now always freeze the queue (or in case of stacking drivers use their internal equivalent) around changing the integrity profile.
This is effectively a revert of commit 3df49967f6f1 ("block: flush the integrity workqueue in blk_integrity_unregister").
--- block/blk-integrity.c | 2 -- 1 file changed, 2 deletions(-)
block/blk-integrity.c +0 -2
@@ -397,8 +397,6 @@ void blk_integrity_unregister(struct gendisk *disk)if (!bi->profile)return ; -/* ensure all bios are off the integrity workqueue */ -blk_flush_integrity ();blk_queue_flag_clear (QUEUE_FLAG_STABLE_WRITES , disk->queue);memset (bi,0 ,sizeof (*bi)); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 163/184 drm/amdgpu: add skip_hw_access checks for sriov
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yunxiang Li <[email protected]>
[ Upstream commit b3948ad1ac582f560e1f3aeaecf384619921c48d ]
Accessing registers via host is missing the check for skip_hw_access and the lockdep check that comes with it.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +9 -0
@@ -977,6 +977,9 @@ u32 amdgpu_virt_rlcg_reg_rw(struct amdgpu_device *adev, u32 offset, u32 v, u32 freturn 0 ; } +if (amdgpu_device_skip_hw_access (adev)) +return 0 ; + reg_access_ctrl = &adev->gfx.rlc.reg_access_ctrl[xcc_id]; scratch_reg0 = (void __iomem *)adev->rmmio +4 * reg_access_ctrl->scratch_reg0; scratch_reg1 = (void __iomem *)adev->rmmio +4 * reg_access_ctrl->scratch_reg1;
@@ -1053,6 +1056,9 @@ void amdgpu_sriov_wreg(struct amdgpu_device *adev, {u32 rlcg_flag; +if (amdgpu_device_skip_hw_access (adev)) +return ; +if (!amdgpu_sriov_runtime (adev) &&amdgpu_virt_get_rlcg_reg_access_flag (adev, acc_flags, hwip, true, &rlcg_flag)) {amdgpu_virt_rlcg_reg_rw (adev, offset, value, rlcg_flag, xcc_id);
@@ -1070,6 +1076,9 @@ u32 amdgpu_sriov_rreg(struct amdgpu_device *adev, {u32 rlcg_flag; +if (amdgpu_device_skip_hw_access (adev)) +return 0 ; +if (!amdgpu_sriov_runtime (adev) &&amdgpu_virt_get_rlcg_reg_access_flag (adev, acc_flags, hwip, false, &rlcg_flag))return amdgpu_virt_rlcg_reg_rw (adev, offset,0 , rlcg_flag, xcc_id);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 164/184 drm/amdgpu: add lock in amdgpu_gart_invalidate_tlb
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yunxiang Li <[email protected]>
[ Upstream commit 18f2525d31401e5142db95ff3a6ec0f4147be818 ]
We need to take the reset domain lock before flush hdp. We can't put the lock inside amdgpu_device_flush_hdp itself because it is used during reset where we already take the write side lock.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +5 -1
@@ -34,6 +34,7 @@#include <asm/set_memory.h> #endif #include "amdgpu.h" +#include "amdgpu_reset.h" #include <drm/drm_drv.h> #include <drm/ttm/ttm_tt.h>
@@ -408,7 +409,10 @@ void amdgpu_gart_invalidate_tlb(struct amdgpu_device *adev)return ;mb (); -amdgpu_device_flush_hdp (adev,NULL ); +if (down_read_trylock (&adev->reset_domain->sem)) { +amdgpu_device_flush_hdp (adev,NULL ); +up_read (&adev->reset_domain->sem); + }for_each_set_bit (i, adev->vmhubs_mask,AMDGPU_MAX_VMHUBS )amdgpu_gmc_flush_gpu_tlb (adev,0 , i,0 ); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 165/184 drm/amdgpu: add lock in kfd_process_dequeue_from_device
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yunxiang Li <[email protected]>
[ Upstream commit d225960c2330e102370815367b877baaf8bb8b5d ]
We need to take the reset domain lock before talking to MES. While in this case we can take the lock inside the mes helper. We can't do so for most other mes helpers since they are used during reset. So for consistency sake we add the lock here.
--- drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +7 -2
@@ -28,6 +28,7 @@#include "kfd_priv.h" #include "kfd_kernel_queue.h" #include "amdgpu_amdkfd.h" +#include "amdgpu_reset.h" static inline struct process_queue_node *get_queue_by_qid (struct process_queue_manager *pqm,unsigned int qid)
@@ -87,8 +88,12 @@ void kfd_process_dequeue_from_device(struct kfd_process_device *pdd)return ; dev->dqm->ops.process_termination (dev->dqm, &pdd->qpd); -if (dev->kfd->shared_resources.enable_mes) -amdgpu_mes_flush_shader_debugger (dev->adev, pdd->proc_ctx_gpu_addr); +if (dev->kfd->shared_resources.enable_mes && +down_read_trylock (&dev->adev->reset_domain->sem)) { +amdgpu_mes_flush_shader_debugger (dev->adev, + pdd->proc_ctx_gpu_addr); +up_read (&dev->adev->reset_domain->sem); + } pdd->already_dequeued = true; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 166/184 drm/amdgpu: fix overflowed constant warning in mmhub_set_clockgating()
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bob Zhou <[email protected]>
[ Upstream commit be6a69b21a3517122ba6cf7ab8f62f4803637dbe ]
To fix potential overflowed constant warning, modify the variables to u32 for getting the return value of RREG32_SOC15().
--- drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c | 2 +- drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/mmhub_v3_3.c | 2 +- drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c +1 -1
@@ -544,7 +544,7 @@ static int mmhub_v1_7_set_clockgating(struct amdgpu_device *adev,static void mmhub_v1_7_get_clockgating (struct amdgpu_device *adev,u64 *flags) { -int data, data1; +u32 data, data1;if (amdgpu_sriov_vf (adev)) *flags =0 ;
drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c +1 -1
@@ -671,7 +671,7 @@ static int mmhub_v2_0_set_clockgating(struct amdgpu_device *adev,static void mmhub_v2_0_get_clockgating (struct amdgpu_device *adev,u64 *flags) { -int data, data1; +u32 data, data1;if (amdgpu_sriov_vf (adev)) *flags =0 ;
drivers/gpu/drm/amd/amdgpu/mmhub_v3_3.c +1 -1
@@ -560,7 +560,7 @@ static int mmhub_v3_3_set_clockgating(struct amdgpu_device *adev,static void mmhub_v3_3_get_clockgating (struct amdgpu_device *adev,u64 *flags) { -int data; +u32 data;if (amdgpu_sriov_vf (adev)) *flags =0 ;
drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c +1 -1
@@ -657,7 +657,7 @@ static int mmhub_v9_4_set_clockgating(struct amdgpu_device *adev,static void mmhub_v9_4_get_clockgating (struct amdgpu_device *adev,u64 *flags) { -int data, data1; +u32 data, data1;if (amdgpu_sriov_vf (adev)) *flags =0 ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 167/184 drm/amd/display: Dont use fsleep for PSR exit waits on dmub replay
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicholas Kazlauskas <[email protected]>
[ Upstream commit b5236da757adc75d7e52c69bdc233d29249a0d0c ]
[Why]
These functions can be called from high IRQ levels and the OS will hang if it tries to use a usleep_highres or a msleep.
[How]
Replace the flseep with a udelay for dmub_replay_enable.
--- drivers/gpu/drm/amd/display/dc/dce/dmub_replay.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/display/dc/dce/dmub_replay.c +2 -1
@@ -102,7 +102,8 @@ static void dmub_replay_enable(struct dmub_replay *dmub, bool enable, bool wait,break ; } -fsleep (500 ); +/* must *not* be fsleep - this can be called from high irq levels */ +udelay (500 ); }/* assert if max retry hit */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 168/184 drm/amd/display: added NULL check at start of dc_validate_stream
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: winstang <[email protected]>
[ Upstream commit 26c56049cc4f1705b498df013949427692a4b0d5 ]
[Why]
prevent invalid memory access
[How]
check if dc and stream are NULL
--- drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +3 -0
@@ -4672,6 +4672,9 @@ void resource_build_bit_depth_reduction_params(struct dc_stream_state *stream,enum dc_status dc_validate_stream (struct dc *dc,struct dc_stream_state *stream) { +if (dc ==NULL || stream ==NULL ) +return DC_ERROR_UNEXPECTED ; +struct dc_link *link = stream->link;struct timing_generator *tg = dc->res_pool->timing_generators[0 ];enum dc_status res =DC_OK ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 169/184 drm/amd/display: Correct the defined value for AMDGPU_DMUB_NOTIFICATION_MAX
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wayne Lin <[email protected]>
[ Upstream commit ad28d7c3d989fc5689581664653879d664da76f0 ]
[Why & How]
It actually exposes '6' types in enum dmub_notification_type. Not 5. Using smaller number to create array dmub_callback & dmub_thread_offload has potential to access item out of array bound. Fix it.
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +1 -1
@@ -50,7 +50,7 @@#define AMDGPU_DM_MAX_NUM_EDP 2 -#define AMDGPU_DMUB_NOTIFICATION_MAX 5 +#define AMDGPU_DMUB_NOTIFICATION_MAX 6#define HDMI_AMD_VENDOR_SPECIFIC_DATA_BLOCK_IEEE_REGISTRATION_ID 0x00001A#define AMD_VSDB_VERSION_3_FEATURECAP_REPLAYMODE 0x40
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 170/184 drm/amd/display: Remove register from DCN35 DMCUB diagnostic collection
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicholas Kazlauskas <[email protected]>
[ Upstream commit 466423c6dd8af23ebb3a69d43434d01aed0db356 ]
[Why]
These registers should not be read from driver and triggering the security violation when DMCUB work times out and diagnostics are collected blocks Z8 entry.
[How]
Remove the register read from DCN35.
--- drivers/gpu/drm/amd/display/dmub/src/dmub_dcn35.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
drivers/gpu/drm/amd/display/dmub/src/dmub_dcn35.c +1 -4
@@ -459,7 +459,7 @@ uint32_t dmub_dcn35_get_current_time(struct dmub_srv *dmub)void dmub_dcn35_get_diagnostic_data (struct dmub_srv *dmub,struct dmub_diagnostic_data *diag_data) {uint32_t is_dmub_enabled, is_soft_reset, is_sec_reset; -uint32_t is_traceport_enabled, is_cw0_enabled, is_cw6_enabled; +uint32_t is_traceport_enabled, is_cw6_enabled;if (!dmub || !diag_data)return ;
@@ -510,9 +510,6 @@ void dmub_dcn35_get_diagnostic_data(struct dmub_srv *dmub, struct dmub_diagnostiREG_GET (DMCUB_CNTL ,DMCUB_TRACEPORT_EN , &is_traceport_enabled); diag_data->is_traceport_en = is_traceport_enabled; -REG_GET (DMCUB_REGION3_CW0_TOP_ADDRESS ,DMCUB_REGION3_CW0_ENABLE , &is_cw0_enabled); - diag_data->is_cw0_enabled = is_cw0_enabled; -REG_GET (DMCUB_REGION3_CW6_TOP_ADDRESS ,DMCUB_REGION3_CW6_ENABLE , &is_cw6_enabled); diag_data->is_cw6_enabled = is_cw6_enabled;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 171/184 drm/amd/display: use preferred link settings for dp signal only
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wenjing Liu <[email protected]>
[ Upstream commit abf34ca465f5cd182b07701d3f3d369c0fc04723 ]
[why]
We set preferred link settings for virtual signal. However we don't support virtual signal for UHBR link rate. If preferred is set to UHBR link rate, we will allow virtual signal with UHBR link rate which causes system crashes.
--- .../dc/link/protocols/link_dp_capability.c | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-)
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c +10 -14
@@ -914,21 +914,17 @@ bool link_decide_link_settings(struct dc_stream_state *stream,memset (link_setting,0 ,sizeof (*link_setting)); -/* if preferred is specified through AMDDP, use it, if it's enough -* to drive the mode -*/ -if (link->preferred_link_setting.lane_count != -LANE_COUNT_UNKNOWN && - link->preferred_link_setting.link_rate != -LINK_RATE_UNKNOWN ) { +if (dc_is_dp_signal (stream->signal) && + link->preferred_link_setting.lane_count !=LANE_COUNT_UNKNOWN && + link->preferred_link_setting.link_rate !=LINK_RATE_UNKNOWN ) { +/* if preferred is specified through AMDDP, use it, if it's enough +* to drive the mode +*/ *link_setting = link->preferred_link_setting; -return true; - } - -/* MST doesn't perform link training for now -* TODO: add MST specific link training routine -*/ -if (stream->signal ==SIGNAL_TYPE_DISPLAY_PORT_MST ) { + }else if (stream->signal ==SIGNAL_TYPE_DISPLAY_PORT_MST ) { +/* MST doesn't perform link training for now +* TODO: add MST specific link training routine +*/ decide_mst_link_settings (link, link_setting); }else if (link->connector_signal ==SIGNAL_TYPE_EDP ) {/* enable edp link optimization for DSC eDP case */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 172/184 drm/amd/display: Disable DMCUB timeout for DCN35
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicholas Kazlauskas <[email protected]>
[ Upstream commit 7c70e60fbf4bff1123f0e8d5cb1ae71df6164d7f ]
[Why]
DMCUB can intermittently take longer than expected to process commands.
Old ASIC policy was to continue while logging a diagnostic error - which works fine for ASIC without IPS, but with IPS this could lead to a race condition where we attempt to access DCN state while it's inaccessible, leading to a system hang when the NIU port is not disabled or register accesses that timeout and the display configuration in an undefined state.
[How]
We need to investigate why these accesses take longer than expected, but for now we should disable the timeout on DCN35 to avoid this race condition. Since the waits happen only at lower interrupt levels the risk of taking too long at higher IRQ and causing a system watchdog timeout are minimal.
--- drivers/gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c +1 -0
@@ -785,6 +785,7 @@ static const struct dc_debug_options debug_defaults_drv = { .ips2_entry_delay_us = 800, .disable_dmub_reallow_idle = false, .static_screen_wait_frames = 2, + .disable_timeout = true, };static const struct dc_panel_config panel_config_defaults = {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 173/184 drm/amd/display: Avoid overflow from uint32_t to uint8_t
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Hung <[email protected]>
[ Upstream commit d6b54900c564e35989cf6813e4071504fa0a90e0 ]
[WHAT & HOW]
dmub_rb_cmd's ramping_boundary has size of uint8_t and it is assigned 0xFFFF. Fix it by changing it to uint8_t with value of 0xFF.
This fixes 2 INTEGER_OVERFLOW issues reported by Coverity.
--- drivers/gpu/drm/amd/display/dc/dce/dmub_abm_lcd.c | 2 +- drivers/gpu/drm/amd/display/dc/hwss/dcn21/dcn21_hwseq.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/display/dc/dce/dmub_abm_lcd.c +1 -1
@@ -258,7 +258,7 @@ bool dmub_abm_set_pipe(struct abm *abm, {union dmub_rb_cmd cmd;struct dc_context *dc = abm->ctx; -uint32_t ramping_boundary =0xFFFF ; +uint8_t ramping_boundary =0xFF ;memset (&cmd,0 ,sizeof (cmd)); cmd.abm_set_pipe.header.type =DMUB_CMD__ABM ;
drivers/gpu/drm/amd/display/dc/hwss/dcn21/dcn21_hwseq.c +1 -1
@@ -142,7 +142,7 @@ static bool dmub_abm_set_pipe(struct abm *abm, uint32_t otg_inst, {union dmub_rb_cmd cmd;struct dc_context *dc = abm->ctx; -uint32_t ramping_boundary =0xFFFF ; +uint8_t ramping_boundary =0xFF ;memset (&cmd,0 ,sizeof (cmd)); cmd.abm_set_pipe.header.type =DMUB_CMD__ABM ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 174/184 drm/amdgpu: set RAS fed status for more cases
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tao Zhou <[email protected]>
[ Upstream commit 09a3d8202df1e9fa1eb5f5f63524c8948275ff4c ]
Indicate fatal error for each RAS block and NBIO.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 1 + drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 1 + 2 files changed, 2 insertions(+)
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +1 -0
@@ -2112,6 +2112,7 @@ static void amdgpu_ras_interrupt_umc_handler(struct ras_manager *obj,/* Let IP handle its data, maybe we need get the output * from the callback to update the error type/count, etc */ +amdgpu_ras_set_fed (obj->adev, true); ret = data->cb (obj->adev, &err_data, entry);/* ue will trigger an interrupt, and in that case * we need do a reset to recovery the whole system.
drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c +1 -0
@@ -418,6 +418,7 @@ static void nbio_v7_4_handle_ras_controller_intr_no_bifring(struct amdgpu_device/* ras_controller_int is dedicated for nbif ras error, * not the global interrupt for sync flood */ +amdgpu_ras_set_fed (adev, true);amdgpu_ras_reset_gpu (adev); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 175/184 drm/amdkfd: use mode1 reset for RAS poison consumption
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tao Zhou <[email protected]>
[ Upstream commit 4280f60e8e7caa5160135223e486545893bc9013 ]
Per firmware's requirement, replace mode2 with mode1.
--- drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c +2 -2
@@ -164,7 +164,7 @@ static void event_interrupt_poison_consumption_v9(struct kfd_node *dev,case SOC15_IH_CLIENTID_SE3SH :case SOC15_IH_CLIENTID_UTCL2 : block =AMDGPU_RAS_BLOCK__GFX ; - reset =AMDGPU_RAS_GPU_RESET_MODE2_RESET ; + reset =AMDGPU_RAS_GPU_RESET_MODE1_RESET ;break ;case SOC15_IH_CLIENTID_VMC :case SOC15_IH_CLIENTID_VMC1 :
@@ -177,7 +177,7 @@ static void event_interrupt_poison_consumption_v9(struct kfd_node *dev,case SOC15_IH_CLIENTID_SDMA3 :case SOC15_IH_CLIENTID_SDMA4 : block =AMDGPU_RAS_BLOCK__SDMA ; - reset =AMDGPU_RAS_GPU_RESET_MODE2_RESET ; + reset =AMDGPU_RAS_GPU_RESET_MODE1_RESET ;break ;default : dev_warn(dev->adev->dev,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 176/184 drm/amd/display: Check BIOS images before it is used
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Hung <[email protected]>
[ Upstream commit 8b0ddf19cca2a352b2a7e01d99d3ba949a99c84c ]
BIOS images may fail to load and null checks are added before they are used.
This fixes 6 NULL_RETURNS issues reported by Coverity.
--- drivers/gpu/drm/amd/display/dc/bios/bios_parser.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
drivers/gpu/drm/amd/display/dc/bios/bios_parser.c +14 -0
@@ -665,6 +665,9 @@ static enum bp_result get_ss_info_v3_1( ss_table_header_include = ((ATOM_ASIC_INTERNAL_SS_INFO_V3 *)bios_get_image (&bp->base,DATA_TABLES (ASIC_InternalSS_Info),struct_size (ss_table_header_include, asSpreadSpectrum,1 ))); +if (!ss_table_header_include) +return BP_RESULT_UNSUPPORTED ; + table_size = (le16_to_cpu (ss_table_header_include->sHeader.usStructureSize) -sizeof (ATOM_COMMON_TABLE_HEADER ))
@@ -1034,6 +1037,8 @@ static enum bp_result get_ss_info_from_internal_ss_info_tbl_V2_1( &bp->base,DATA_TABLES (ASIC_InternalSS_Info), struct_size(header, asSpreadSpectrum, 1))); +if (!header) +return result;memset (info,0 ,sizeof (struct spread_spectrum_info ));
@@ -1107,6 +1112,8 @@ static enum bp_result get_ss_info_from_ss_info_table(get_atom_data_table_revision (header, &revision); tbl =GET_IMAGE (ATOM_SPREAD_SPECTRUM_INFO ,DATA_TABLES (SS_Info)); +if (!tbl) +return result;if (1 != revision.major ||2 > revision.minor)return result;
@@ -1634,6 +1641,8 @@ static uint32_t get_ss_entry_number_from_ss_info_tbl( tbl =GET_IMAGE (ATOM_SPREAD_SPECTRUM_INFO ,DATA_TABLES (SS_Info)); +if (!tbl) +return number;if (1 != revision.major ||2 > revision.minor)return number;
@@ -1716,6 +1725,8 @@ static uint32_t get_ss_entry_number_from_internal_ss_info_tbl_v2_1( &bp->base,DATA_TABLES (ASIC_InternalSS_Info), struct_size(header_include, asSpreadSpectrum, 1))); +if (!header_include) +return 0 ; size = (le16_to_cpu (header_include->sHeader.usStructureSize) -sizeof (ATOM_COMMON_TABLE_HEADER ))
@@ -1755,6 +1766,9 @@ static uint32_t get_ss_entry_number_from_internal_ss_info_tbl_V3_1( header_include = ((ATOM_ASIC_INTERNAL_SS_INFO_V3 *)bios_get_image (&bp->base,DATA_TABLES (ASIC_InternalSS_Info),struct_size (header_include, asSpreadSpectrum,1 ))); +if (!header_include) +return number; + size = (le16_to_cpu (header_include->sHeader.usStructureSize) -sizeof (ATOM_COMMON_TABLE_HEADER )) /sizeof (ATOM_ASIC_SS_ASSIGNMENT_V3 );
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 177/184 drm/amd/display: Skip wbscl_set_scaler_filter if filter is null
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Hung <[email protected]>
[ Upstream commit c4d31653c03b90e51515b1380115d1aedad925dd ]
Callers can pass null in filter (i.e. from returned from the function wbscl_get_filter_coeffs_16p) and a null check is added to ensure that is not the case.
This fixes 4 NULL_RETURNS issues reported by Coverity.
--- drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dwb_scl.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dwb_scl.c +3 -0
@@ -690,6 +690,9 @@ static void wbscl_set_scaler_filter(int pair;uint16_t odd_coef, even_coef; +if (!filter) +return ; +for (phase =0 ; phase < (NUM_PHASES /2 +1 ); phase++) {for (pair =0 ; pair < tap_pairs; pair++) { even_coef = filter[phase * taps +2 * pair];
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 178/184 crypto: ecc - Fix off-by-one missing to clear most significant digit
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stefan Berger <[email protected]>
[ Upstream commit 1dcf865d3bf5bff45e93cb2410911b3428dacb78 ]
Fix an off-by-one error where the most significant digit was not initialized leading to signature verification failures by the testmgr.
Example: If a curve requires ndigits (=9) and diff (=2) indicates that 2 digits need to be set to zero then start with digit 'ndigits - diff' (=7) and clear 'diff' digits starting from there, so 7 and 8.
--- crypto/ecc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
crypto/ecc.c +1 -1
@@ -78,7 +78,7 @@ void ecc_digits_from_bytes(const u8 *in, unsigned int nbytes,/* diff > 0: not enough input bytes: set most significant digits to 0 */ if (diff >0 ) { ndigits -= diff; -memset (&out[ndigits -1 ],0 , diff *sizeof (u64)); +memset (&out[ndigits],0 , diff *sizeof (u64)); }if (o) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 179/184 media: uvcvideo: Enforce alignment of frame and interval
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ricardo Ribalda <[email protected]>
[ Upstream commit c8931ef55bd325052ec496f242aea7f6de47dc9c ]
Struct uvc_frame and interval (u32*) are packaged together on streaming->formats on a single contiguous allocation.
Right now they are allocated right after uvc_format, without taking into consideration their required alignment.
This is working fine because both structures have a field with a pointer, but it will stop working when the sizeof() of any of those structs is not a multiple of the sizeof(void*).
Enforce that alignment during the allocation.
--- drivers/media/usb/uvc/uvc_driver.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-)
drivers/media/usb/uvc/uvc_driver.c +14 -4
@@ -687,16 +687,26 @@ static int uvc_parse_streaming(struct uvc_device *dev, goto error; } - size = nformats *sizeof (*format) + nframes *sizeof (*frame) +/* +* Allocate memory for the formats, the frames and the intervals, +* plus any required padding to guarantee that everything has the +* correct alignment. +*/ + size = nformats *sizeof (*format); + size = ALIGN(size, __alignof__(*frame)) + nframes * sizeof(*frame); + size = ALIGN(size, __alignof__(*interval)) + nintervals *sizeof (*interval); + format =kzalloc (size,GFP_KERNEL ); -if (format ==NULL ) { +if (!format) { ret = -ENOMEM ; goto error; } - frame = (struct uvc_frame *)&format[nformats]; - interval = (u32 *)&frame[nframes]; + frame = (void *)format + nformats *sizeof (*format); + frame = PTR_ALIGN(frame, __alignof__(*frame)); + interval = (void *)frame + nframes *sizeof (*frame); + interval = PTR_ALIGN(interval, __alignof__(*interval)); streaming->formats = format; streaming->nformats =0 ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 180/184 pinctrl: core: reset gpio_device in loop in pinctrl_pins_show()
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Léo DUBOIN <[email protected]>
[ Upstream commit 9dfbcf2fc566c0be2de1c7685f29effd25696b75 ]
We were not resetting the pointer to the associated gpio_device once we are done displaying a pin's information.
This meant that once we reached the end of a gpio-range, if there were pins right after it that did not belong to any known range, they would be associated with the previous range's gpio device.
This resulted in those pins appearing as <4294966783:old_gdev> instead of the expected <0:?> (due to gpio_num being -1).
--- drivers/pinctrl/core.c | 1 + 1 file changed, 1 insertion(+)
drivers/pinctrl/core.c +1 -0
@@ -1670,6 +1670,7 @@ static int pinctrl_pins_show(struct seq_file *s, void *what)seq_printf (s,"pin %d (%s) " , pin, desc->name);#ifdef CONFIG_GPIOLIB + gdev =NULL ; gpio_num =-1 ;list_for_each_entry (range, &pctldev->gpio_ranges, node) { if ((pin >= range->pin_base) &&
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 181/184 mm: Fix filemap_invalidate_inode() to use invalidate_inode_pages2_range()
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Howells <[email protected]>
commit c26096ee0278c5e765009c5eee427bbafe6dc090 upstream.
Fix filemap_invalidate_inode() to use invalidate_inode_pages2_range() rather than truncate_inode_pages_range(). The latter clears the invalidated bit of a partial pages rather than discarding it entirely. This causes copy_file_range() to fail on cifs because the partial pages at either end of the destination range aren't evicted and reread, but rather just partly cleared.
This causes generic/075 and generic/112 xfstests to fail.
--- mm/filemap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
mm/filemap.c +1 -1
@@ -4221,7 +4221,7 @@ int filemap_invalidate_inode(struct inod }/* Wait for writeback to complete on all folios and discard. */ -truncate_inode_pages_range (mapping, start, end); +invalidate_inode_pages2_range (mapping, start /PAGE_SIZE , end /PAGE_SIZE ); unlock:filemap_invalidate_unlock (mapping);
Greg Kroah-Hartman
maintainerPATCH 182/184 drm/amdgpu: remove redundant semicolons in RAS_EVENT_LOG
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yang Wang <[email protected]>
commit 332210c13ac0595c34516caf9a61430b45e16d21 upstream.
remove redundant semicolons in RAS_EVENT_LOG to avoid code format check warning.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h +1 -1
@@ -68,7 +68,7 @@ struct amdgpu_iv_entry;#define AMDGPU_RAS_GET_FEATURES (val) ((val) & ~AMDGPU_RAS_FEATURES_SOCKETID_MASK)#define RAS_EVENT_LOG (adev, id, fmt, ...) \ - amdgpu_ras_event_log_print((adev), (id), (fmt), ##__VA_ARGS__); + amdgpu_ras_event_log_print((adev), (id), (fmt), ##__VA_ARGS__)enum amdgpu_ras_block {AMDGPU_RAS_BLOCK__UMC =0 ,
Greg Kroah-Hartman
maintainerPATCH 183/184 i2c: Use IS_REACHABLE() for substituting empty ACPI functions
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Richard Fitzgerald <[email protected]>
commit 71833e79a42178d8a50b5081c98c78ace9325628 upstream.
Replace IS_ENABLED() with IS_REACHABLE() to substitute empty stubs for:
i2c_acpi_get_i2c_resource()
i2c_acpi_client_count()
i2c_acpi_find_bus_speed()
i2c_acpi_new_device_by_fwnode()
i2c_adapter *i2c_acpi_find_adapter_by_handle()
i2c_acpi_waive_d0_probe()commit f17c06c6608a ("i2c: Fix conditional for substituting empty ACPI functions") partially fixed this conditional to depend on CONFIG_I2C, but used IS_ENABLED(), which is wrong since CONFIG_I2C is tristate.
CONFIG_ACPI is boolean but let's also change it to use IS_REACHABLE() to future-proof it against becoming tristate.
Somehow despite testing various combinations of CONFIG_I2C and CONFIG_ACPI we missed the combination CONFIG_I2C=m, CONFIG_ACPI=y.
--- include/linux/i2c.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/i2c.h +1 -1
@@ -1053,7 +1053,7 @@ static inline int of_i2c_get_board_info(struct acpi_resource ;struct acpi_resource_i2c_serialbus ; -#if IS_ENABLED (CONFIG_ACPI ) &&IS_ENABLED (CONFIG_I2C ) +#if IS_REACHABLE (CONFIG_ACPI ) &&IS_REACHABLE (CONFIG_I2C )bool i2c_acpi_get_i2c_resource (struct acpi_resource *ares,struct acpi_resource_i2c_serialbus **i2c);int i2c_acpi_client_count (struct acpi_device *adev);
Greg Kroah-Hartman
maintainerPATCH 184/184 scsi: ufs: qcom: Add UFSHCD_QUIRK_BROKEN_LSDBS_CAP for SM8550 SoC
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Manivannan Sadhasivam <[email protected]>
commit ea593e028a9cc523557b4084a61d87ae69e2f270 upstream.
SM8550 SoC has the UFSHCI 4.0 compliant UFS controller and only supports legacy single doorbell mode without MCQ. But due to a hardware bug, it reports 1 in the 'Legacy Queue & Single Doorbell Support (LSDBS)' field of the Controller Capabilities register. This field is supposed to read as 0 if legacy single doorbell mode is supported and 1 otherwise.
Starting with commit 0c60eb0cc320 ("scsi: ufs: core: Check LSDBS cap when !mcq"), ufshcd driver is now relying on the LSDBS field to decide when to use the legacy doorbell mode if MCQ is not supported. And this ends up breaking UFS on SM8550:
ufshcd-qcom 1d84000.ufs: ufshcd_init: failed to initialize (legacy doorbell mode not supported) ufshcd-qcom 1d84000.ufs: error -EINVAL: Initialization failed with error -22
So use the UFSHCD_QUIRK_BROKEN_LSDBS_CAP quirk for SM8550 SoC so that the ufshcd driver could use legacy doorbell mode correctly.
--- drivers/ufs/host/ufs-qcom.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/ufs/host/ufs-qcom.c +5 -1
@@ -857,6 +857,9 @@ static void ufs_qcom_advertise_quirks(stif (host->hw_ver.major >0x3 ) hba->quirks |=UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH ; + +if (of_device_is_compatible (hba->dev->of_node,"qcom,sm8550-ufshc" )) + hba->quirks |=UFSHCD_QUIRK_BROKEN_LSDBS_CAP ; }static void ufs_qcom_set_phy_gear (struct ufs_qcom_host *host)
@@ -1845,7 +1848,8 @@ static void ufs_qcom_remove(struct platf }static const struct of_device_id ufs_qcom_of_match[]__maybe_unused = { - { .compatible ="qcom,ufshc" }, + { .compatible ="qcom,ufshc" }, + { .compatible ="qcom,sm8550-ufshc" }, {}, };MODULE_DEVICE_TABLE (of, ufs_qcom_of_match);
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.9 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sat, 07 Sep 2024 09:36:50 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.10.9-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.10.y
and the diffstat can be found below.thanks,
greg k-h
The following build errors noticed on arm64 on
stable-rc linux.6.6.y and linux.6.10.y
drivers/ufs/host/ufs-qcom.c: In function 'ufs_qcom_advertise_quirks':drivers/ufs/host/ufs-qcom.c:862:32: error:
'UFSHCD_QUIRK_BROKEN_LSDBS_CAP' undeclared (first use in this function); did you mean 'UFSHCD_QUIRK_BROKEN_UIC_CMD'?
862 | hba->quirks |= UFSHCD_QUIRK_BROKEN_LSDBS_CAP;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| UFSHCD_QUIRK_BROKEN_UIC_CMD--
Linaro LKFT
https://lkft.linaro.org
Hi!
Quoted 25 lines
Quoted 9 lines
This is the start of the stable review cycle for the 6.10.9 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sat, 07 Sep 2024 09:36:50 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.10.9-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.10.y
and the diffstat can be found below.thanks,
greg k-h
The following build errors noticed on arm64 on
stable-rc linux.6.6.y and linux.6.10.y
drivers/ufs/host/ufs-qcom.c: In function 'ufs_qcom_advertise_quirks':drivers/ufs/host/ufs-qcom.c:862:32: error:
'UFSHCD_QUIRK_BROKEN_LSDBS_CAP' undeclared (first use in this function); did you mean 'UFSHCD_QUIRK_BROKEN_UIC_CMD'?
Quoted 5 lines
862 | hba->quirks |= UFSHCD_QUIRK_BROKEN_LSDBS_CAP;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| UFSHCD_QUIRK_BROKEN_UIC_CMDWe see that one, too, on 6.10 and 6.6. 6.1 does not seem to have this problem.
Best regards,
Pavel
Signature · 2 lines
DENX Software Engineering GmbH, Managing Director: Erika Unter HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Greg Kroah-Hartman
maintainerQuoted 28 lines · Naresh Kamboju
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.9 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sat, 07 Sep 2024 09:36:50 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.10.9-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.10.y
and the diffstat can be found below.thanks,
greg k-h
The following build errors noticed on arm64 on
stable-rc linux.6.6.y and linux.6.10.y
drivers/ufs/host/ufs-qcom.c: In function 'ufs_qcom_advertise_quirks':drivers/ufs/host/ufs-qcom.c:862:32: error:
'UFSHCD_QUIRK_BROKEN_LSDBS_CAP' undeclared (first use in this function); did you mean 'UFSHCD_QUIRK_BROKEN_UIC_CMD'?
Quoted 5 lines
862 | hba->quirks |= UFSHCD_QUIRK_BROKEN_LSDBS_CAP;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| UFSHCD_QUIRK_BROKEN_UIC_CMDSasha has dropped these now, let me go push out some -rc2 with that removed.
thanks,
greg k-h
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.9 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sat, 07 Sep 2024 09:36:50 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.10.9-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.10.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah