On Tue, 20 Mar 2018 10:56:54 -0400 Tsu-Hsiang K Cheng <tcheng8@xxxxxxxxxxxxxx> wrote: > Hi Alex, > > > This is helpful. Yes, I did mean to assign the HBA, where the SSD was > attached, to the guest. On my server machine, the Intel SATA > controllers has the following resources. > > Region 0: I/O ports at 90b0 [size=8] > Region 1: I/O ports at 90a0 [size=4] > Region 2: I/O ports at 9090 [size=8] > Region 3: I/O ports at 9080 [size=4] > Region 4: I/O ports at 9000 [size=32] > Region 5: Memory at dfd04000 (32-bit, non-prefetchable) [size=2K] > > Like you have mentioned, the access to the IO ports were trapped > through QEMU and the 2K memory is not 4K aligned. It would be great if > you can point us the QEMU and kernel code for more insights. Thank > you. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/vfio/pci/vfio_pci.c?id=05f0c03fbac1819e86c9d5db4e208b68fc1b9b5e https://git.qemu.org/?p=qemu.git;a=commitdiff;h=95251725e335af2b885e2ab33dd29c86f8084663 You can likely see in /proc/iomem on the host if vfio reserved the 2K following the BAR or if it's mapped to another device. If another device is consuming the remainder of the 4K page, you might be able to use some host kernel commandline options like pci=realloc,resource_alignment=[<bus>:<slot>.<func>] to make it available. A similar option could be used for the guest if the guest is Linux. Thanks, Alex