[PATCH v5 0/3] hw/ufs: Add Universal Flash Storage (UFS) support

Jeuk Kim posted 3 patches 9 months, 2 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/cover.1689731819.git.jeuk20.kim@gmail.com
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, Jeuk Kim <jeuk20.kim@samsung.com>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Fam Zheng <fam@euphon.net>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Thomas Huth <thuth@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>
There is a newer version of this series
MAINTAINERS              |    6 +
docs/specs/pci-ids.rst   |    2 +
hw/Kconfig               |    1 +
hw/meson.build           |    1 +
hw/ufs/Kconfig           |    4 +
hw/ufs/lu.c              | 1439 ++++++++++++++++++++++++++++++++++++
hw/ufs/meson.build       |    1 +
hw/ufs/trace-events      |   58 ++
hw/ufs/trace.h           |    1 +
hw/ufs/ufs.c             | 1494 ++++++++++++++++++++++++++++++++++++++
hw/ufs/ufs.h             |  131 ++++
include/block/ufs.h      | 1048 ++++++++++++++++++++++++++
include/hw/pci/pci.h     |    1 +
include/hw/pci/pci_ids.h |    1 +
include/scsi/constants.h |    1 +
meson.build              |    1 +
16 files changed, 4190 insertions(+)
create mode 100644 hw/ufs/Kconfig
create mode 100644 hw/ufs/lu.c
create mode 100644 hw/ufs/meson.build
create mode 100644 hw/ufs/trace-events
create mode 100644 hw/ufs/trace.h
create mode 100644 hw/ufs/ufs.c
create mode 100644 hw/ufs/ufs.h
create mode 100644 include/block/ufs.h
[PATCH v5 0/3] hw/ufs: Add Universal Flash Storage (UFS) support
Posted by Jeuk Kim 9 months, 2 weeks ago
Since v4:
Addressed review comment from Stefan Hajnoczi. The fixes are as
follows.
- Keep u->reg fields in host endian (Removed little-endian helper 
  functions from MemoryRegionOps)
- Remove unnecessary NULL checks for g_new and g_malloc0
- Replace DEFINE_PROP_DRIVE_IOTHREAD -> DEFINE_PROP_DRIVE

In case you were wondering, ufs and ufs-lu have been tested for the
following behaviours.
1. Checked ufs device recognition in Windows10 environment
2. Verified ufs device recognition in Ubuntu 22.04 environment
3. Verified io behaviour via fio in Ubuntu 22.04 environment
4. Verified query request via ufs-tools in Ubuntu 22.04 environment

Since v3:
- Replace softmmu_ss -> system_ss in meson

Since v2:
Addressed review comment from Stefan Hajnoczi. The main fixes are as
follows.
- Use of SPDX licence identifiers
- fixed endianness error
- removed memory leak
- fixed DMA error handling logic

Since v1:
- use macros of "hw/registerfields.h" (Addressed Philippe's review
  comments)

This patch series adds support for a new PCI-based UFS device.

The UFS pci device id (PCI_DEVICE_ID_REDHAT_UFS) is not registered
in the Linux kernel yet, so it does not work right away, but I confirmed
that it works with Linux when the UFS pci device id is registered.

I have also verified that it works with Windows 10.

Jeuk Kim (3):
  hw/ufs: Initial commit for emulated Universal-Flash-Storage
  hw/ufs: Support for Query Transfer Requests
  hw/ufs: Support for UFS logical unit

 MAINTAINERS              |    6 +
 docs/specs/pci-ids.rst   |    2 +
 hw/Kconfig               |    1 +
 hw/meson.build           |    1 +
 hw/ufs/Kconfig           |    4 +
 hw/ufs/lu.c              | 1439 ++++++++++++++++++++++++++++++++++++
 hw/ufs/meson.build       |    1 +
 hw/ufs/trace-events      |   58 ++
 hw/ufs/trace.h           |    1 +
 hw/ufs/ufs.c             | 1494 ++++++++++++++++++++++++++++++++++++++
 hw/ufs/ufs.h             |  131 ++++
 include/block/ufs.h      | 1048 ++++++++++++++++++++++++++
 include/hw/pci/pci.h     |    1 +
 include/hw/pci/pci_ids.h |    1 +
 include/scsi/constants.h |    1 +
 meson.build              |    1 +
 16 files changed, 4190 insertions(+)
 create mode 100644 hw/ufs/Kconfig
 create mode 100644 hw/ufs/lu.c
 create mode 100644 hw/ufs/meson.build
 create mode 100644 hw/ufs/trace-events
 create mode 100644 hw/ufs/trace.h
 create mode 100644 hw/ufs/ufs.c
 create mode 100644 hw/ufs/ufs.h
 create mode 100644 include/block/ufs.h

-- 
2.34.1
Re: [PATCH v5 0/3] hw/ufs: Add Universal Flash Storage (UFS) support
Posted by Stefan Hajnoczi 9 months, 2 weeks ago
Hi,
I'm ready to merge this but encountered a bug when testing:

  $ qemu-system-x86_64 --device ufs --device ufs-lu
  Segmentation fault (core dumped)

Please ensure there is an error message like with SCSI disks:

  $ qemu-system-x86_64 --device virtio-scsi-pci --device scsi-hd
  qemu-system-x86_64: --device scsi-hd: drive property not set

Thanks,
Stefan
Re: [PATCH v5 0/3] hw/ufs: Add Universal Flash Storage (UFS) support
Posted by Jeuk Kim 9 months, 2 weeks ago
On 7/21/2023 3:49 AM, Stefan Hajnoczi wrote:
> Hi,
> I'm ready to merge this but encountered a bug when testing:
> 
>    $ qemu-system-x86_64 --device ufs --device ufs-lu
>    Segmentation fault (core dumped)
> 
> Please ensure there is an error message like with SCSI disks:
> 
>    $ qemu-system-x86_64 --device virtio-scsi-pci --device scsi-hd
>    qemu-system-x86_64: --device scsi-hd: drive property not set
> 
> Thanks,
> Stefan

Thanks for letting me know.
I'll fix it right away and send the patch again.

Thanks,
Jeuk