OSDN Git Service

nvme-pci: fix doorbell buffer value endianness
authorKlaus Jensen <k.jensen@samsung.com>
Tue, 13 Dec 2022 08:58:07 +0000 (09:58 +0100)
committerChristoph Hellwig <hch@lst.de>
Wed, 21 Dec 2022 08:05:21 +0000 (09:05 +0100)
commitb5f96cb719d8ba220b565ddd3ba4ac0d8bcfb130
treeb01751c12dca89b04d77382965de5deb116e356f
parent53eab8e76667b124615a943a033cdf97c80c242a
nvme-pci: fix doorbell buffer value endianness

When using shadow doorbells, the event index and the doorbell values are
written to host memory. Prior to this patch, the values written would
erroneously be written in host endianness. This causes trouble on
big-endian platforms. Fix this by adding missing endian conversions.

This issue was noticed by Guenter while testing various big-endian
platforms under QEMU[1]. A similar fix required for hw/nvme in QEMU is
up for review as well[2].

  [1]: https://lore.kernel.org/qemu-devel/20221209110022.GA3396194@roeck-us.net/
  [2]: https://lore.kernel.org/qemu-devel/20221212114409.34972-4-its@irrelevant.dk/

Fixes: f9f38e33389c ("nvme: improve performance for virtual NVMe devices")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/pci.c