Message ID | 20241210093408.105867-1-dlemoal@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | NVMe PCI endpoint target driver | expand |
FYI, this looks good to me:
Reviewed-by: Christoph Hellwig <hch@lst.de>
But I've closely worked with Damaien on this, so a look from someone
who is not too close to the work would be useful as well.
On 12/12/24 15:06, Christoph Hellwig wrote: > FYI, this looks good to me: > > Reviewed-by: Christoph Hellwig <hch@lst.de> Thanks. The kernel test robot signaled a build failure that I need to fix (not a big deal) and I have some typo in the documentation too that need fixing. I will post v4 with these fixes. > > But I've closely worked with Damaien on this, so a look from someone > who is not too close to the work would be useful as well. >
Hello,
I have tested the NVMe endpoint function extensively on two extra
platforms to run on, the FriendlyElec CM3588+NAS Kit [1] and NanoPC T6
[2] (with PCIe x1, x2, and x4 links).
Besides testing with Linux based hosts (Ubuntu 20.04, 23.10, 24.04), I
also tested that the NVMe device is recognized by a Windows 10
Enterprise host and can be formatted and used as a regular disk. I
also tested on MacOS Monterey on a Macbook Pro 2016 (Intel based) host
through a M.2 to USB-C adapter [3], the drive is recognized and
usable.
The USB-C adapter is based on the ASM2464PD chipset [4] which does
USB4/Thunderbolt to PCIe/NVMe, I tested with PCI over Thunderbolt with
the MacOS host, so the host sees the NVMe endpoint function directly
as a PCI device and the NVMe drive is seen as such. This works well.
The only test case that did not work is when I tested the ASM2464PD
chipset NVMe to regular USB functionality, where the chipset is the
host, and presents itself to the PC as a "usb-storage" class device,
but this didn't work because the ASM2464PD never enabled the NVMe
controller (CC.EN bit in BAR0), the PCI Link between the ASM2464PD and
endpoint function gets up however, and to the host PC the USB device
is recognized ("usb-storage" class, like a USB stick, e.g., /dev/sda),
but it cannot be read (shows as 0B block device). As I cannot debug
the chipset itself I don't know why the NVMe endpoint doesn't get
enabled. This might very well be a quirk in the ASM2464PD chipset and
is a very specific use case so I don't think it indicates any major
issues with the endpoint function, but I report it here for the sake
of completion.
I have tested with different storage backend devices for actual
storage (USB, eMMC, and NVMe (PCIe x1, x2) on the NAS kit).
In summary, over PCI the endpoint function works well with all three
Linux/MacOS/Windows hosts.
Tested-by: Rick Wertenbroek <rick.wertenbroek@gmail.com>
(I don't know if this applies as I co-developed the endpoint function
with Damien)
Best regards,
Rick
[1] https://wiki.friendlyelec.com/wiki/index.php/CM3588
[2] https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6
[3] https://www.aliexpress.com/item/1005006316029054.html
[4] https://www.asmedia.com.tw/product/802zX91Yw3tsFgm4/C64ZX59yu4sY1GW5/ASM2464PD
On 12/12/24 19:16, Rick Wertenbroek wrote: > Hello, > I have tested the NVMe endpoint function extensively on two extra > platforms to run on, the FriendlyElec CM3588+NAS Kit [1] and NanoPC T6 > [2] (with PCIe x1, x2, and x4 links). > > Besides testing with Linux based hosts (Ubuntu 20.04, 23.10, 24.04), I > also tested that the NVMe device is recognized by a Windows 10 > Enterprise host and can be formatted and used as a regular disk. I > also tested on MacOS Monterey on a Macbook Pro 2016 (Intel based) host > through a M.2 to USB-C adapter [3], the drive is recognized and > usable. > > The USB-C adapter is based on the ASM2464PD chipset [4] which does > USB4/Thunderbolt to PCIe/NVMe, I tested with PCI over Thunderbolt with > the MacOS host, so the host sees the NVMe endpoint function directly > as a PCI device and the NVMe drive is seen as such. This works well. > > The only test case that did not work is when I tested the ASM2464PD > chipset NVMe to regular USB functionality, where the chipset is the > host, and presents itself to the PC as a "usb-storage" class device, > but this didn't work because the ASM2464PD never enabled the NVMe > controller (CC.EN bit in BAR0), the PCI Link between the ASM2464PD and > endpoint function gets up however, and to the host PC the USB device > is recognized ("usb-storage" class, like a USB stick, e.g., /dev/sda), > but it cannot be read (shows as 0B block device). As I cannot debug > the chipset itself I don't know why the NVMe endpoint doesn't get > enabled. This might very well be a quirk in the ASM2464PD chipset and > is a very specific use case so I don't think it indicates any major > issues with the endpoint function, but I report it here for the sake > of completion. > > I have tested with different storage backend devices for actual > storage (USB, eMMC, and NVMe (PCIe x1, x2) on the NAS kit). > > In summary, over PCI the endpoint function works well with all three > Linux/MacOS/Windows hosts. > > Tested-by: Rick Wertenbroek <rick.wertenbroek@gmail.com> > (I don't know if this applies as I co-developed the endpoint function > with Damien) I think it does apply since I only tested with Linux hosts. Thanks a lot for all the extra testing ! Sending v4 with the build failure fixed and doc typos fixed. > > Best regards, > Rick > > [1] https://wiki.friendlyelec.com/wiki/index.php/CM3588 > [2] https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6 > [3] https://www.aliexpress.com/item/1005006316029054.html > [4] https://www.asmedia.com.tw/product/802zX91Yw3tsFgm4/C64ZX59yu4sY1GW5/ASM2464PD >