Skip to content

Commit 16c9358

Browse files
committed
Merge: Upgrade the UFS core to v6.12
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/6377 JIRA: https://issues.redhat.com/browse/RHEL-79078 Backport upstream patches as needed to align the UFS core to upstream kernel v6.12. There are important bug fixes that must be included for the upcoming RHIVOS release. Omitted-fix: ea593e0 ("scsi: ufs: qcom: Add UFSHCD_QUIRK_BROKEN_LSDBS_CAP for SM8550 SoC") - Upgrading the qcom drivers is out of the scope of this backport. Signed-off-by: Radu Rendec <rrendec@redhat.com> Approved-by: Brian Masney <bmasney@redhat.com> Approved-by: Eric Chanudet <echanude@redhat.com> Approved-by: Jared Kangas <jkangas@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: Patrick Talbert <ptalbert@redhat.com>
2 parents 34eacef + 443a124 commit 16c9358

36 files changed

+2684
-4644
lines changed

Documentation/ABI/testing/sysfs-driver-ufs

Lines changed: 95 additions & 246 deletions
Original file line numberDiff line numberDiff line change
@@ -920,14 +920,16 @@ Description: This file shows whether the configuration descriptor is locked.
920920

921921
What: /sys/bus/platform/drivers/ufshcd/*/attributes/max_number_of_rtt
922922
What: /sys/bus/platform/devices/*.ufs/attributes/max_number_of_rtt
923-
Date: February 2018
924-
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
923+
Date: May 2024
924+
Contact: Avri Altman <avri.altman@wdc.com>
925925
Description: This file provides the maximum current number of
926-
outstanding RTTs in device that is allowed. The full
927-
information about the attribute could be found at
928-
UFS specifications 2.1.
926+
outstanding RTTs in device that is allowed. bMaxNumOfRTT is a
927+
read-write persistent attribute and is equal to two after device
928+
manufacturing. It shall not be set to a value greater than
929+
bDeviceRTTCap value, and it may be set only when the hw queues are
930+
empty.
929931

930-
The file is read only.
932+
The file is read write.
931933

932934
What: /sys/bus/platform/drivers/ufshcd/*/attributes/exception_event_control
933935
What: /sys/bus/platform/devices/*.ufs/attributes/exception_event_control
@@ -1223,6 +1225,55 @@ Description: This file shows the total latency (in micro seconds) of write
12231225

12241226
The file is read only.
12251227

1228+
What: /sys/bus/platform/drivers/ufshcd/*/power_info/lane
1229+
What: /sys/bus/platform/devices/*.ufs/power_info/lane
1230+
Date: September 2023
1231+
Contact: Can Guo <quic_cang@quicinc.com>
1232+
Description: This file shows how many lanes are enabled on the UFS link,
1233+
i.e., an output 2 means UFS link is operating with 2 lanes.
1234+
1235+
The file is read only.
1236+
1237+
What: /sys/bus/platform/drivers/ufshcd/*/power_info/mode
1238+
What: /sys/bus/platform/devices/*.ufs/power_info/mode
1239+
Date: September 2023
1240+
Contact: Can Guo <quic_cang@quicinc.com>
1241+
Description: This file shows the PA power mode of UFS.
1242+
1243+
The file is read only.
1244+
1245+
What: /sys/bus/platform/drivers/ufshcd/*/power_info/rate
1246+
What: /sys/bus/platform/devices/*.ufs/power_info/rate
1247+
Date: September 2023
1248+
Contact: Can Guo <quic_cang@quicinc.com>
1249+
Description: This file shows the speed rate of UFS link.
1250+
1251+
The file is read only.
1252+
1253+
What: /sys/bus/platform/drivers/ufshcd/*/power_info/gear
1254+
What: /sys/bus/platform/devices/*.ufs/power_info/gear
1255+
Date: September 2023
1256+
Contact: Can Guo <quic_cang@quicinc.com>
1257+
Description: This file shows the gear of UFS link.
1258+
1259+
The file is read only.
1260+
1261+
What: /sys/bus/platform/drivers/ufshcd/*/power_info/dev_pm
1262+
What: /sys/bus/platform/devices/*.ufs/power_info/dev_pm
1263+
Date: September 2023
1264+
Contact: Can Guo <quic_cang@quicinc.com>
1265+
Description: This file shows the UFS device power mode.
1266+
1267+
The file is read only.
1268+
1269+
What: /sys/bus/platform/drivers/ufshcd/*/power_info/link_state
1270+
What: /sys/bus/platform/devices/*.ufs/power_info/link_state
1271+
Date: September 2023
1272+
Contact: Can Guo <quic_cang@quicinc.com>
1273+
Description: This file shows the state of UFS link.
1274+
1275+
The file is read only.
1276+
12261277
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/wb_presv_us_en
12271278
What: /sys/bus/platform/devices/*.ufs/device_descriptor/wb_presv_us_en
12281279
Date: June 2020
@@ -1426,179 +1477,16 @@ Description: This entry shows the status of WriteBooster buffer flushing
14261477
If flushing is enabled, the device executes the flush
14271478
operation when the command queue is empty.
14281479

1429-
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/hpb_version
1430-
What: /sys/bus/platform/devices/*.ufs/device_descriptor/hpb_version
1431-
Date: June 2021
1432-
Contact: Daejun Park <daejun7.park@samsung.com>
1433-
Description: This entry shows the HPB specification version.
1434-
The full information about the descriptor can be found in the UFS
1435-
HPB (Host Performance Booster) Extension specifications.
1436-
Example: version 1.2.3 = 0123h
1437-
1438-
The file is read only.
1439-
1440-
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/hpb_control
1441-
What: /sys/bus/platform/devices/*.ufs/device_descriptor/hpb_control
1442-
Date: June 2021
1443-
Contact: Daejun Park <daejun7.park@samsung.com>
1444-
Description: This entry shows an indication of the HPB control mode.
1445-
00h: Host control mode
1446-
01h: Device control mode
1447-
1448-
The file is read only.
1449-
1450-
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/hpb_region_size
1451-
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/hpb_region_size
1452-
Date: June 2021
1453-
Contact: Daejun Park <daejun7.park@samsung.com>
1454-
Description: This entry shows the bHPBRegionSize which can be calculated
1455-
as in the following (in bytes):
1456-
HPB Region size = 512B * 2^bHPBRegionSize
1457-
1458-
The file is read only.
1459-
1460-
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/hpb_number_lu
1461-
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/hpb_number_lu
1462-
Date: June 2021
1463-
Contact: Daejun Park <daejun7.park@samsung.com>
1464-
Description: This entry shows the maximum number of HPB LU supported by
1465-
the device.
1466-
00h: HPB is not supported by the device.
1467-
01h ~ 20h: Maximum number of HPB LU supported by the device
1468-
1469-
The file is read only.
1470-
1471-
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/hpb_subregion_size
1472-
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/hpb_subregion_size
1473-
Date: June 2021
1474-
Contact: Daejun Park <daejun7.park@samsung.com>
1475-
Description: This entry shows the bHPBSubRegionSize, which can be
1476-
calculated as in the following (in bytes) and shall be a multiple of
1477-
logical block size:
1478-
HPB Sub-Region size = 512B x 2^bHPBSubRegionSize
1479-
bHPBSubRegionSize shall not exceed bHPBRegionSize.
1480-
1481-
The file is read only.
1482-
1483-
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/hpb_max_active_regions
1484-
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/hpb_max_active_regions
1485-
Date: June 2021
1486-
Contact: Daejun Park <daejun7.park@samsung.com>
1487-
Description: This entry shows the maximum number of active HPB regions that
1488-
is supported by the device.
1489-
1490-
The file is read only.
1491-
1492-
What: /sys/class/scsi_device/*/device/unit_descriptor/hpb_lu_max_active_regions
1493-
Date: June 2021
1494-
Contact: Daejun Park <daejun7.park@samsung.com>
1495-
Description: This entry shows the maximum number of HPB regions assigned to
1496-
the HPB logical unit.
1497-
1498-
The file is read only.
1499-
1500-
What: /sys/class/scsi_device/*/device/unit_descriptor/hpb_pinned_region_start_offset
1501-
Date: June 2021
1502-
Contact: Daejun Park <daejun7.park@samsung.com>
1503-
Description: This entry shows the start offset of HPB pinned region.
1504-
1505-
The file is read only.
1506-
1507-
What: /sys/class/scsi_device/*/device/unit_descriptor/hpb_number_pinned_regions
1508-
Date: June 2021
1509-
Contact: Daejun Park <daejun7.park@samsung.com>
1510-
Description: This entry shows the number of HPB pinned regions assigned to
1511-
the HPB logical unit.
1512-
1513-
The file is read only.
1514-
1515-
What: /sys/class/scsi_device/*/device/hpb_stats/hit_cnt
1516-
Date: June 2021
1517-
Contact: Daejun Park <daejun7.park@samsung.com>
1518-
Description: This entry shows the number of reads that changed to HPB read.
1519-
1520-
The file is read only.
1521-
1522-
What: /sys/class/scsi_device/*/device/hpb_stats/miss_cnt
1523-
Date: June 2021
1524-
Contact: Daejun Park <daejun7.park@samsung.com>
1525-
Description: This entry shows the number of reads that cannot be changed to
1526-
HPB read.
1527-
1528-
The file is read only.
1529-
1530-
What: /sys/class/scsi_device/*/device/hpb_stats/rcmd_noti_cnt
1531-
Date: June 2021
1532-
Contact: Daejun Park <daejun7.park@samsung.com>
1533-
Description: This entry shows the number of response UPIUs that has
1534-
recommendations for activating sub-regions and/or inactivating region.
1535-
1536-
The file is read only.
1537-
1538-
What: /sys/class/scsi_device/*/device/hpb_stats/rcmd_active_cnt
1539-
Date: June 2021
1540-
Contact: Daejun Park <daejun7.park@samsung.com>
1541-
Description: For the HPB device control mode, this entry shows the number of
1542-
active sub-regions recommended by response UPIUs. For the HPB host control
1543-
mode, this entry shows the number of active sub-regions recommended by the
1544-
HPB host control mode heuristic algorithm.
1545-
1546-
The file is read only.
1547-
1548-
What: /sys/class/scsi_device/*/device/hpb_stats/rcmd_inactive_cnt
1549-
Date: June 2021
1550-
Contact: Daejun Park <daejun7.park@samsung.com>
1551-
Description: For the HPB device control mode, this entry shows the number of
1552-
inactive regions recommended by response UPIUs. For the HPB host control
1553-
mode, this entry shows the number of inactive regions recommended by the
1554-
HPB host control mode heuristic algorithm.
1555-
1556-
The file is read only.
1557-
1558-
What: /sys/class/scsi_device/*/device/hpb_stats/map_req_cnt
1559-
Date: June 2021
1560-
Contact: Daejun Park <daejun7.park@samsung.com>
1561-
Description: This entry shows the number of read buffer commands for
1562-
activating sub-regions recommended by response UPIUs.
1563-
1564-
The file is read only.
1565-
1566-
What: /sys/class/scsi_device/*/device/hpb_params/requeue_timeout_ms
1567-
Date: June 2021
1568-
Contact: Daejun Park <daejun7.park@samsung.com>
1569-
Description: This entry shows the requeue timeout threshold for write buffer
1570-
command in ms. The value can be changed by writing an integer to
1571-
this entry.
1572-
1573-
What: /sys/bus/platform/drivers/ufshcd/*/attributes/max_data_size_hpb_single_cmd
1574-
What: /sys/bus/platform/devices/*.ufs/attributes/max_data_size_hpb_single_cmd
1575-
Date: June 2021
1576-
Contact: Daejun Park <daejun7.park@samsung.com>
1577-
Description: This entry shows the maximum HPB data size for using a single HPB
1578-
command.
1579-
1580-
=== ========
1581-
00h 4KB
1582-
01h 8KB
1583-
02h 12KB
1584-
...
1585-
FFh 1024KB
1586-
=== ========
1587-
1588-
The file is read only.
1589-
1590-
What: /sys/bus/platform/drivers/ufshcd/*/flags/hpb_enable
1591-
What: /sys/bus/platform/devices/*.ufs/flags/hpb_enable
1592-
Date: June 2021
1593-
Contact: Daejun Park <daejun7.park@samsung.com>
1594-
Description: This entry shows the status of HPB.
1595-
1596-
== ============================
1597-
0 HPB is not enabled.
1598-
1 HPB is enabled
1599-
== ============================
1600-
1601-
The file is read only.
1480+
What: /sys/bus/platform/drivers/ufshcd/*/wb_flush_threshold
1481+
What: /sys/bus/platform/devices/*.ufs/wb_flush_threshold
1482+
Date: June 2023
1483+
Contact: Lu Hongfei <luhongfei@vivo.com>
1484+
Description:
1485+
wb_flush_threshold represents the threshold for flushing WriteBooster buffer,
1486+
whose value expressed in unit of 10% granularity, such as '1' representing 10%,
1487+
'2' representing 20%, and so on.
1488+
If avail_wb_buff < wb_flush_threshold, it indicates that WriteBooster buffer needs to
1489+
be flushed, otherwise it is not necessary.
16021490

16031491
Contact: Daniil Lunev <dlunev@chromium.org>
16041492
What: /sys/bus/platform/drivers/ufshcd/*/capabilities/
@@ -1637,76 +1525,37 @@ Description: Indicates status of Write Booster.
16371525

16381526
The file is read only.
16391527

1640-
What: /sys/class/scsi_device/*/device/hpb_param_sysfs/activation_thld
1641-
Date: February 2021
1642-
Contact: Avri Altman <avri.altman@wdc.com>
1643-
Description: In host control mode, reads are the major source of activation
1644-
trials. Once this threshold hs met, the region is added to the
1645-
"to-be-activated" list. Since we reset the read counter upon
1646-
write, this include sending a rb command updating the region
1647-
ppn as well.
1648-
1649-
What: /sys/class/scsi_device/*/device/hpb_param_sysfs/normalization_factor
1650-
Date: February 2021
1651-
Contact: Avri Altman <avri.altman@wdc.com>
1652-
Description: In host control mode, we think of the regions as "buckets".
1653-
Those buckets are being filled with reads, and emptied on write.
1654-
We use entries_per_srgn - the amount of blocks in a subregion as
1655-
our bucket size. This applies because HPB1.0 only handles
1656-
single-block reads. Once the bucket size is crossed, we trigger
1657-
a normalization work - not only to avoid overflow, but mainly
1658-
because we want to keep those counters normalized, as we are
1659-
using those reads as a comparative score, to make various decisions.
1660-
The normalization is dividing (shift right) the read counter by
1661-
the normalization_factor. If during consecutive normalizations
1662-
an active region has exhausted its reads - inactivate it.
1663-
1664-
What: /sys/class/scsi_device/*/device/hpb_param_sysfs/eviction_thld_enter
1665-
Date: February 2021
1666-
Contact: Avri Altman <avri.altman@wdc.com>
1667-
Description: Region deactivation is often due to the fact that eviction took
1668-
place: A region becomes active at the expense of another. This is
1669-
happening when the max-active-regions limit has been crossed.
1670-
In host mode, eviction is considered an extreme measure. We
1671-
want to verify that the entering region has enough reads, and
1672-
the exiting region has much fewer reads. eviction_thld_enter is
1673-
the min reads that a region must have in order to be considered
1674-
a candidate for evicting another region.
1675-
1676-
What: /sys/class/scsi_device/*/device/hpb_param_sysfs/eviction_thld_exit
1677-
Date: February 2021
1678-
Contact: Avri Altman <avri.altman@wdc.com>
1679-
Description: Same as above for the exiting region. A region is considered to
1680-
be a candidate for eviction only if it has fewer reads than
1681-
eviction_thld_exit.
1528+
What: /sys/bus/platform/drivers/ufshcd/*/rtc_update_ms
1529+
What: /sys/bus/platform/devices/*.ufs/rtc_update_ms
1530+
Date: November 2023
1531+
Contact: Bean Huo <beanhuo@micron.com>
1532+
Description:
1533+
rtc_update_ms indicates how often the host should synchronize or update the
1534+
UFS RTC. If set to 0, this will disable UFS RTC periodic update.
16821535

1683-
What: /sys/class/scsi_device/*/device/hpb_param_sysfs/read_timeout_ms
1684-
Date: February 2021
1685-
Contact: Avri Altman <avri.altman@wdc.com>
1686-
Description: In order not to hang on to "cold" regions, we inactivate
1687-
a region that has no READ access for a predefined amount of
1688-
time - read_timeout_ms. If read_timeout_ms has expired, and the
1689-
region is dirty, it is less likely that we can make any use of
1690-
HPB reading it so we inactivate it. Still, deactivation has
1691-
its overhead, and we may still benefit from HPB reading this
1692-
region if it is clean - see read_timeout_expiries.
1693-
1694-
What: /sys/class/scsi_device/*/device/hpb_param_sysfs/read_timeout_expiries
1695-
Date: February 2021
1536+
What: /sys/devices/platform/.../ufshci_capabilities/version
1537+
Date: August 2024
16961538
Contact: Avri Altman <avri.altman@wdc.com>
1697-
Description: If the region read timeout has expired, but the region is clean,
1698-
just re-wind its timer for another spin. Do that as long as it
1699-
is clean and did not exhaust its read_timeout_expiries threshold.
1539+
Description:
1540+
Host Capabilities register group: UFS version register.
1541+
Symbol - VER. This file shows the UFSHCD version.
1542+
Example: Version 3.12 would be represented as 0000_0312h.
1543+
The file is read only.
17001544

1701-
What: /sys/class/scsi_device/*/device/hpb_param_sysfs/timeout_polling_interval_ms
1702-
Date: February 2021
1545+
What: /sys/devices/platform/.../ufshci_capabilities/product_id
1546+
Date: August 2024
17031547
Contact: Avri Altman <avri.altman@wdc.com>
1704-
Description: The frequency with which the delayed worker that checks the
1705-
read_timeouts is awakened.
1548+
Description:
1549+
Host Capabilities register group: product ID register.
1550+
Symbol - HCPID. This file shows the UFSHCD product id.
1551+
The content of this register is vendor specific.
1552+
The file is read only.
17061553

1707-
What: /sys/class/scsi_device/*/device/hpb_param_sysfs/inflight_map_req
1708-
Date: February 2021
1554+
What: /sys/devices/platform/.../ufshci_capabilities/man_id
1555+
Date: August 2024
17091556
Contact: Avri Altman <avri.altman@wdc.com>
1710-
Description: In host control mode the host is the originator of map requests.
1711-
To avoid flooding the device with map requests, use a simple throttling
1712-
mechanism that limits the number of inflight map requests.
1557+
Description:
1558+
Host Capabilities register group: manufacturer ID register.
1559+
Symbol - HCMID. This file shows the UFSHCD manufacturer id.
1560+
The Manufacturer ID is defined by JEDEC in JEDEC-JEP106.
1561+
The file is read only.

drivers/ufs/core/Kconfig

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,6 @@ config SCSI_UFS_CRYPTO
3535
capabilities of the UFS device (if present) to perform crypto
3636
operations on data being transferred to/from the device.
3737

38-
config SCSI_UFS_HPB
39-
bool "Support UFS Host Performance Booster"
40-
help
41-
The UFS HPB feature improves random read performance. It caches
42-
L2P (logical to physical) map of UFS to host DRAM. The driver uses HPB
43-
read command by piggybacking physical page number for bypassing FTL (flash
44-
translation layer)'s L2P address translation.
45-
4638
config SCSI_UFS_FAULT_INJECTION
4739
bool "UFS Fault Injection Support"
4840
depends on FAULT_INJECTION

drivers/ufs/core/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@ ufshcd-core-y += ufshcd.o ufs-sysfs.o ufs-mcq.o
55
ufshcd-core-$(CONFIG_DEBUG_FS) += ufs-debugfs.o
66
ufshcd-core-$(CONFIG_SCSI_UFS_BSG) += ufs_bsg.o
77
ufshcd-core-$(CONFIG_SCSI_UFS_CRYPTO) += ufshcd-crypto.o
8-
ufshcd-core-$(CONFIG_SCSI_UFS_HPB) += ufshpb.o
98
ufshcd-core-$(CONFIG_SCSI_UFS_FAULT_INJECTION) += ufs-fault-injection.o
109
ufshcd-core-$(CONFIG_SCSI_UFS_HWMON) += ufs-hwmon.o

0 commit comments

Comments
 (0)