18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci#
38c2ecf20Sopenharmony_ci# Block layer core configuration
48c2ecf20Sopenharmony_ci#
58c2ecf20Sopenharmony_cimenuconfig BLOCK
68c2ecf20Sopenharmony_ci       bool "Enable the block layer" if EXPERT
78c2ecf20Sopenharmony_ci       default y
88c2ecf20Sopenharmony_ci       select SBITMAP
98c2ecf20Sopenharmony_ci       select SRCU
108c2ecf20Sopenharmony_ci       help
118c2ecf20Sopenharmony_ci	 Provide block layer support for the kernel.
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci	 Disable this option to remove the block layer support from the
148c2ecf20Sopenharmony_ci	 kernel. This may be useful for embedded devices.
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci	 If this option is disabled:
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci	   - block device files will become unusable
198c2ecf20Sopenharmony_ci	   - some filesystems (such as ext3) will become unavailable.
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	 Also, SCSI character devices and USB storage will be disabled since
228c2ecf20Sopenharmony_ci	 they make use of various block layer definitions and facilities.
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci	 Say Y here unless you know you really don't want to mount disks and
258c2ecf20Sopenharmony_ci	 suchlike.
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ciif BLOCK
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciconfig BLK_RQ_ALLOC_TIME
308c2ecf20Sopenharmony_ci	bool
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciconfig BLK_SCSI_REQUEST
338c2ecf20Sopenharmony_ci	bool
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciconfig BLK_CGROUP_RWSTAT
368c2ecf20Sopenharmony_ci	bool
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ciconfig BLK_DEV_BSG
398c2ecf20Sopenharmony_ci	bool "Block layer SG support v4"
408c2ecf20Sopenharmony_ci	default y
418c2ecf20Sopenharmony_ci	select BLK_SCSI_REQUEST
428c2ecf20Sopenharmony_ci	help
438c2ecf20Sopenharmony_ci	  Saying Y here will enable generic SG (SCSI generic) v4 support
448c2ecf20Sopenharmony_ci	  for any block device.
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci	  Unlike SG v3 (aka block/scsi_ioctl.c drivers/scsi/sg.c), SG v4
478c2ecf20Sopenharmony_ci	  can handle complicated SCSI commands: tagged variable length cdbs
488c2ecf20Sopenharmony_ci	  with bidirectional data transfers and generic request/response
498c2ecf20Sopenharmony_ci	  protocols (e.g. Task Management Functions and SMP in Serial
508c2ecf20Sopenharmony_ci	  Attached SCSI).
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci	  This option is required by recent UDEV versions to properly
538c2ecf20Sopenharmony_ci	  access device serial numbers, etc.
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci	  If unsure, say Y.
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ciconfig BLK_DEV_BSGLIB
588c2ecf20Sopenharmony_ci	bool "Block layer SG support v4 helper lib"
598c2ecf20Sopenharmony_ci	select BLK_DEV_BSG
608c2ecf20Sopenharmony_ci	select BLK_SCSI_REQUEST
618c2ecf20Sopenharmony_ci	help
628c2ecf20Sopenharmony_ci	  Subsystems will normally enable this if needed. Users will not
638c2ecf20Sopenharmony_ci	  normally need to manually enable this.
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci	  If unsure, say N.
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ciconfig BLK_DEV_INTEGRITY
688c2ecf20Sopenharmony_ci	bool "Block layer data integrity support"
698c2ecf20Sopenharmony_ci	help
708c2ecf20Sopenharmony_ci	Some storage devices allow extra information to be
718c2ecf20Sopenharmony_ci	stored/retrieved to help protect the data.  The block layer
728c2ecf20Sopenharmony_ci	data integrity option provides hooks which can be used by
738c2ecf20Sopenharmony_ci	filesystems to ensure better data integrity.
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci	Say yes here if you have a storage device that provides the
768c2ecf20Sopenharmony_ci	T10/SCSI Data Integrity Field or the T13/ATA External Path
778c2ecf20Sopenharmony_ci	Protection.  If in doubt, say N.
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ciconfig BLK_DEV_INTEGRITY_T10
808c2ecf20Sopenharmony_ci	tristate
818c2ecf20Sopenharmony_ci	depends on BLK_DEV_INTEGRITY
828c2ecf20Sopenharmony_ci	select CRC_T10DIF
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ciconfig BLK_DEV_ZONED
858c2ecf20Sopenharmony_ci	bool "Zoned block device support"
868c2ecf20Sopenharmony_ci	select MQ_IOSCHED_DEADLINE
878c2ecf20Sopenharmony_ci	help
888c2ecf20Sopenharmony_ci	Block layer zoned block device support. This option enables
898c2ecf20Sopenharmony_ci	support for ZAC/ZBC/ZNS host-managed and host-aware zoned block
908c2ecf20Sopenharmony_ci	devices.
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci	Say yes here if you have a ZAC, ZBC, or ZNS storage device.
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ciconfig BLK_DEV_THROTTLING
958c2ecf20Sopenharmony_ci	bool "Block layer bio throttling support"
968c2ecf20Sopenharmony_ci	depends on BLK_CGROUP=y
978c2ecf20Sopenharmony_ci	select BLK_CGROUP_RWSTAT
988c2ecf20Sopenharmony_ci	help
998c2ecf20Sopenharmony_ci	Block layer bio throttling support. It can be used to limit
1008c2ecf20Sopenharmony_ci	the IO rate to a device. IO rate policies are per cgroup and
1018c2ecf20Sopenharmony_ci	one needs to mount and use blkio cgroup controller for creating
1028c2ecf20Sopenharmony_ci	cgroups and specifying per device IO rate policies.
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_ci	See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ciconfig BLK_DEV_THROTTLING_LOW
1078c2ecf20Sopenharmony_ci	bool "Block throttling .low limit interface support (EXPERIMENTAL)"
1088c2ecf20Sopenharmony_ci	depends on BLK_DEV_THROTTLING
1098c2ecf20Sopenharmony_ci	help
1108c2ecf20Sopenharmony_ci	Add .low limit interface for block throttling. The low limit is a best
1118c2ecf20Sopenharmony_ci	effort limit to prioritize cgroups. Depending on the setting, the limit
1128c2ecf20Sopenharmony_ci	can be used to protect cgroups in terms of bandwidth/iops and better
1138c2ecf20Sopenharmony_ci	utilize disk resource.
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci	Note, this is an experimental interface and could be changed someday.
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ciconfig BLK_CMDLINE_PARSER
1188c2ecf20Sopenharmony_ci	bool "Block device command line partition parser"
1198c2ecf20Sopenharmony_ci	help
1208c2ecf20Sopenharmony_ci	Enabling this option allows you to specify the partition layout from
1218c2ecf20Sopenharmony_ci	the kernel boot args.  This is typically of use for embedded devices
1228c2ecf20Sopenharmony_ci	which don't otherwise have any standardized method for listing the
1238c2ecf20Sopenharmony_ci	partitions on a block device.
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci	See Documentation/block/cmdline-partition.rst for more information.
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ciconfig BLK_WBT
1288c2ecf20Sopenharmony_ci	bool "Enable support for block device writeback throttling"
1298c2ecf20Sopenharmony_ci	help
1308c2ecf20Sopenharmony_ci	Enabling this option enables the block layer to throttle buffered
1318c2ecf20Sopenharmony_ci	background writeback from the VM, making it more smooth and having
1328c2ecf20Sopenharmony_ci	less impact on foreground operations. The throttling is done
1338c2ecf20Sopenharmony_ci	dynamically on an algorithm loosely based on CoDel, factoring in
1348c2ecf20Sopenharmony_ci	the realtime performance of the disk.
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ciconfig BLK_CGROUP_IOLATENCY
1378c2ecf20Sopenharmony_ci	bool "Enable support for latency based cgroup IO protection"
1388c2ecf20Sopenharmony_ci	depends on BLK_CGROUP=y
1398c2ecf20Sopenharmony_ci	help
1408c2ecf20Sopenharmony_ci	Enabling this option enables the .latency interface for IO throttling.
1418c2ecf20Sopenharmony_ci	The IO controller will attempt to maintain average IO latencies below
1428c2ecf20Sopenharmony_ci	the configured latency target, throttling anybody with a higher latency
1438c2ecf20Sopenharmony_ci	target than the victimized group.
1448c2ecf20Sopenharmony_ci
1458c2ecf20Sopenharmony_ci	Note, this is an experimental interface and could be changed someday.
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ciconfig BLK_CGROUP_IOCOST
1488c2ecf20Sopenharmony_ci	bool "Enable support for cost model based cgroup IO controller"
1498c2ecf20Sopenharmony_ci	depends on BLK_CGROUP=y
1508c2ecf20Sopenharmony_ci	select BLK_RQ_IO_DATA_LEN
1518c2ecf20Sopenharmony_ci	select BLK_RQ_ALLOC_TIME
1528c2ecf20Sopenharmony_ci	help
1538c2ecf20Sopenharmony_ci	Enabling this option enables the .weight interface for cost
1548c2ecf20Sopenharmony_ci	model based proportional IO control.  The IO controller
1558c2ecf20Sopenharmony_ci	distributes IO capacity between different groups based on
1568c2ecf20Sopenharmony_ci	their share of the overall weight distribution.
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_ciconfig BLK_WBT_MQ
1598c2ecf20Sopenharmony_ci	bool "Multiqueue writeback throttling"
1608c2ecf20Sopenharmony_ci	default y
1618c2ecf20Sopenharmony_ci	depends on BLK_WBT
1628c2ecf20Sopenharmony_ci	help
1638c2ecf20Sopenharmony_ci	Enable writeback throttling by default on multiqueue devices.
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ciconfig BLK_DEBUG_FS
1668c2ecf20Sopenharmony_ci	bool "Block layer debugging information in debugfs"
1678c2ecf20Sopenharmony_ci	default y
1688c2ecf20Sopenharmony_ci	depends on DEBUG_FS
1698c2ecf20Sopenharmony_ci	help
1708c2ecf20Sopenharmony_ci	Include block layer debugging information in debugfs. This information
1718c2ecf20Sopenharmony_ci	is mostly useful for kernel developers, but it doesn't incur any cost
1728c2ecf20Sopenharmony_ci	at runtime.
1738c2ecf20Sopenharmony_ci
1748c2ecf20Sopenharmony_ci	Unless you are building a kernel for a tiny system, you should
1758c2ecf20Sopenharmony_ci	say Y here.
1768c2ecf20Sopenharmony_ci
1778c2ecf20Sopenharmony_ciconfig BLK_DEBUG_FS_ZONED
1788c2ecf20Sopenharmony_ci       bool
1798c2ecf20Sopenharmony_ci       default BLK_DEBUG_FS && BLK_DEV_ZONED
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ciconfig BLK_SED_OPAL
1828c2ecf20Sopenharmony_ci	bool "Logic for interfacing with Opal enabled SEDs"
1838c2ecf20Sopenharmony_ci	help
1848c2ecf20Sopenharmony_ci	Builds Logic for interfacing with Opal enabled controllers.
1858c2ecf20Sopenharmony_ci	Enabling this option enables users to setup/unlock/lock
1868c2ecf20Sopenharmony_ci	Locking ranges for SED devices using the Opal protocol.
1878c2ecf20Sopenharmony_ci
1888c2ecf20Sopenharmony_ciconfig BLK_INLINE_ENCRYPTION
1898c2ecf20Sopenharmony_ci	bool "Enable inline encryption support in block layer"
1908c2ecf20Sopenharmony_ci	help
1918c2ecf20Sopenharmony_ci	  Build the blk-crypto subsystem. Enabling this lets the
1928c2ecf20Sopenharmony_ci	  block layer handle encryption, so users can take
1938c2ecf20Sopenharmony_ci	  advantage of inline encryption hardware if present.
1948c2ecf20Sopenharmony_ci
1958c2ecf20Sopenharmony_ciconfig BLK_INLINE_ENCRYPTION_FALLBACK
1968c2ecf20Sopenharmony_ci	bool "Enable crypto API fallback for blk-crypto"
1978c2ecf20Sopenharmony_ci	depends on BLK_INLINE_ENCRYPTION
1988c2ecf20Sopenharmony_ci	select CRYPTO
1998c2ecf20Sopenharmony_ci	select CRYPTO_SKCIPHER
2008c2ecf20Sopenharmony_ci	help
2018c2ecf20Sopenharmony_ci	  Enabling this lets the block layer handle inline encryption
2028c2ecf20Sopenharmony_ci	  by falling back to the kernel crypto API when inline
2038c2ecf20Sopenharmony_ci	  encryption hardware is not present.
2048c2ecf20Sopenharmony_ci
2058c2ecf20Sopenharmony_cimenu "Partition Types"
2068c2ecf20Sopenharmony_ci
2078c2ecf20Sopenharmony_cisource "block/partitions/Kconfig"
2088c2ecf20Sopenharmony_ci
2098c2ecf20Sopenharmony_ciendmenu
2108c2ecf20Sopenharmony_ci
2118c2ecf20Sopenharmony_ciendif # BLOCK
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ciconfig BLOCK_COMPAT
2148c2ecf20Sopenharmony_ci	bool
2158c2ecf20Sopenharmony_ci	depends on BLOCK && COMPAT
2168c2ecf20Sopenharmony_ci	default y
2178c2ecf20Sopenharmony_ci
2188c2ecf20Sopenharmony_ciconfig BLK_MQ_PCI
2198c2ecf20Sopenharmony_ci	bool
2208c2ecf20Sopenharmony_ci	depends on BLOCK && PCI
2218c2ecf20Sopenharmony_ci	default y
2228c2ecf20Sopenharmony_ci
2238c2ecf20Sopenharmony_ciconfig BLK_MQ_VIRTIO
2248c2ecf20Sopenharmony_ci	bool
2258c2ecf20Sopenharmony_ci	depends on BLOCK && VIRTIO
2268c2ecf20Sopenharmony_ci	default y
2278c2ecf20Sopenharmony_ci
2288c2ecf20Sopenharmony_ciconfig BLK_MQ_RDMA
2298c2ecf20Sopenharmony_ci	bool
2308c2ecf20Sopenharmony_ci	depends on BLOCK && INFINIBAND
2318c2ecf20Sopenharmony_ci	default y
2328c2ecf20Sopenharmony_ci
2338c2ecf20Sopenharmony_ciconfig BLK_PM
2348c2ecf20Sopenharmony_ci	def_bool BLOCK && PM
2358c2ecf20Sopenharmony_ci
2368c2ecf20Sopenharmony_cisource "block/Kconfig.iosched"
237