mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
scsi: ufs: docs: Describe how to test with QEMU
QEMU emulates a UFS host controller and logical units, but the kernel tree does not mention it, so developers without UFS hardware have no documented way to exercise the UFS core. Add a short section with the required kernel options, an example QEMU command line, and what the emulation does not cover. Signed-off-by: Stanley Jhu <stanleyjhu@google.com> Reviewed-by: Bean Huo <beanhuo@micron.com> Link: https://patch.msgid.link/20261012120059.1371653-1-stanleyjhu@google.com Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
This commit is contained in:
parent
fb20fe062b
commit
beba4caa45
|
|
@ -19,6 +19,7 @@ Universal Flash Storage
|
|||
3.4 SCSI Error handling
|
||||
4. BSG Support
|
||||
5. UFS Reference Clock Frequency configuration
|
||||
6. Testing with QEMU
|
||||
|
||||
|
||||
1. Overview
|
||||
|
|
@ -208,3 +209,40 @@ the UFS specification. UFS subsystem will attempt to read the value when
|
|||
executing common controller initialization. If the value is available, UFS
|
||||
subsystem will ensure the bRefClkFreq attribute of the UFS storage device is
|
||||
set accordingly and will modify it if there is a mismatch.
|
||||
|
||||
6. Testing with QEMU
|
||||
====================
|
||||
|
||||
QEMU emulates a UFS host controller as a PCI device named "ufs" and
|
||||
logical units named "ufs-lu". This can be used to test changes to the
|
||||
UFS core and to ufshcd-pci without UFS hardware.
|
||||
|
||||
The "ufs" and "ufs-lu" devices are available since QEMU 8.2, and the
|
||||
"mcq" property since QEMU 9.1.
|
||||
|
||||
Enable the following kernel options on top of the architecture
|
||||
defconfig::
|
||||
|
||||
CONFIG_SCSI_UFSHCD=y
|
||||
CONFIG_SCSI_UFSHCD_PCI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
|
||||
Example for an arm64 guest with one 1 GiB logical unit::
|
||||
|
||||
qemu-img create -f raw ufs.img 1G
|
||||
qemu-system-aarch64 -M virt -cpu max -smp 4 -m 2G -nographic \
|
||||
-kernel arch/arm64/boot/Image -initrd rootfs.cpio.gz \
|
||||
-append "console=ttyAMA0" \
|
||||
-drive file=ufs.img,if=none,id=lu0,format=raw \
|
||||
-device ufs,id=ufs0,serial=0001,mcq=on \
|
||||
-device ufs-lu,drive=lu0,bus=ufs0,lun=0
|
||||
|
||||
The logical unit appears as a SCSI disk (for example /dev/sda). Drop
|
||||
"mcq=on" to test the single doorbell mode instead of MCQ. The same
|
||||
-device options work with qemu-system-x86_64.
|
||||
|
||||
The emulation accepts the link startup and hibernate enter/exit UIC
|
||||
commands and, since QEMU 11.1, DME get/set and the power mode change
|
||||
sequence, but it does not model UniPro, M-PHY or the resulting link
|
||||
state. Clock gating hardware and vendor host drivers are not exercised
|
||||
either. Changes in those areas still need testing on real hardware.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user