Re: [PATCH v5.10 0/8] preserve DMA offsets when using swiotlb

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Apr 23, 2021 at 3:11 PM Jianxiong Gao <jxgao@xxxxxxxxxx> wrote:
>
> +Marc, who can help filling the gaps.
> --
> Jianxiong Gao

Oops. Gao over-trimmed. From lkml, here's Gao's last reply.

>> How?  Anything that installed 5.10 when it was released never had this
>> working, they had to move to 5.12 to get that to work.

> I wasn't clear. The bug is not specific to SEV virtualization. We
> simply encountered it while working on SEV virtualization. This is a
> pre-existing bug.
>
> Briefly, the NVMe spec expects a page offset to be retained from the
> memory address space to the IO address space.
>
> Before these patches, the SWIOTLB truncates any page offset.
>
> Thus, all NVMe + SWIOTLB systems are broken due to this bug without
> these patches.
>
> I searched online and found what appeared to be a very similar bug
> from a few years ago [1]. Ultimately, it was fixed in the device
> firmware. However, it began with NVMe + SWIOTLB resulting in similar
> issues to what we observed without these patches.
>
> [1] https://bugzilla.redhat.com/show_bug.cgi?id=1402533

The bug is not specific to SEV virtualization.  We've repro'd the bug
on vanilla NVMe + SWIOTLB kernels, and confirmed that these patches
fix the issue. We simply first encountered it while working on SEV
virtualization.

The bug itself is that on an NVMe + SWIOTLB setup, `mkfs.xfs -f
/dev/nvme2n1` triggers the following error "mkfs.xfs: pwrite failed:
Input/output error". We observed this on a RHEL system.

An example system where a user might encounter this bug is the
following. On a system with NVMe + older 32-bit devices that has been
configured with the `swiotlb=force` kernel command line flag to ensure
that the 32-bit devices work properly.



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux