FAILED: patch "[PATCH] scsi: ufs: exynos: Disable iocc if dma-coherent property" failed to apply to 6.1-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x f92bb7436802f8eb7ee72dc911a33c8897fde366
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025042151-backdrop-broadside-667d@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From f92bb7436802f8eb7ee72dc911a33c8897fde366 Mon Sep 17 00:00:00 2001
From: Peter Griffin <[email protected]>
Date: Wed, 19 Mar 2025 15:30:20 +0000
Subject: [PATCH] scsi: ufs: exynos: Disable iocc if dma-coherent property
isn't set
If dma-coherent property isn't set then descriptors are non-cacheable and the iocc shareability bits should be disabled. Without this UFS can end up in an incompatible configuration and suffer from random cache related stability issues.
drivers/ufs/host/ufs-exynos.c +13 -4
@@ -214,8 +214,8 @@ static int exynos_ufs_shareability(struct exynos_ufs *ufs)/* IO Coherency setting */ if (ufs->sysreg) {return regmap_update_bits (ufs->sysreg, - ufs->shareability_reg_offset, - ufs->iocc_mask, ufs->iocc_mask); + ufs->iocc_offset, + ufs->iocc_mask, ufs->iocc_val); }return 0 ;
@@ -1173,13 +1173,22 @@ static int exynos_ufs_parse_dt(struct device *dev, struct exynos_ufs *ufs) ufs->sysreg =NULL ; else {if (of_property_read_u32_index (np,"samsung,sysreg" ,1 , - &ufs->shareability_reg_offset)) { + &ufs->iocc_offset)) {dev_warn (dev,"can't get an offset from sysreg. Set to default value\n" ); - ufs->shareability_reg_offset =UFS_SHAREABILITY_OFFSET ; + ufs->iocc_offset =UFS_SHAREABILITY_OFFSET ; } } ufs->iocc_mask = ufs->drv_data->iocc_mask; +/* +* no 'dma-coherent' property means the descriptors are +* non-cacheable so iocc shareability should be disabled. +*/ +if (of_dma_is_coherent (dev->of_node)) + ufs->iocc_val = ufs->iocc_mask; +else + ufs->iocc_val =0 ; + ufs->pclk_avail_min =PCLK_AVAIL_MIN ; ufs->pclk_avail_max =PCLK_AVAIL_MAX ;
drivers/ufs/host/ufs-exynos.h +2 -1
@@ -231,8 +231,9 @@ struct exynos_ufs {ktime_t entry_hibern8_t;const struct exynos_ufs_drv_data *drv_data;struct regmap *sysreg; -u32 shareability_reg_offset; +u32 iocc_offset;u32 iocc_mask; +u32 iocc_val;u32 opts;#define EXYNOS_UFS_OPT_HAS_APB_CLK_CTRL BIT(0)