Date: Mon, 13 Nov 2017 21:02:48 +0200 From: Andriy Gapon <avg@FreeBSD.org> To: freebsd-virtualization@freebsd.org Subject: problem with pass-through on amd Message-ID: <cee09b94-3a1d-ac36-c99a-99196faa75a9@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
I have a FreeBSD guest on a FreeBSD host, both amd64 head. I decided to experiment with PCI pass-through and used an AHCI controller for the experiment. It seems like that partially works. The guest detects the controller and attaches a driver to it, the messages (reported capabilities, etc) look identical to those on the host. But the guest can not detect any disks behind the controller. From what I can tell, the guest has no problems accessing PCI configuration registers and a memory mapped BAR. Not sure about the I/O ports. What's suspicious is that there are no interrupts either for the ppt device on the host or the ahci device in the guest. Maybe that is what causes the failure to see the disks. When the guest driver attaches to the controller I see these messages on the host: ppt0: attempting to allocate 1 MSI vectors (1 supported) ppt0: using IRQ 265 for MSI and in the guest: ahci0: attempting to allocate 1 MSI vectors (1 supported) ahci0: using IRQ 279 for MSI But vmstat -i does not report any interrupts. Just in case, the controller has some complex topology where the AHCI PCI device is behind two PCI-PCI bridges from the main bus. But I think that that should not matter and the guest needs to see only the AHCI device and the host handles the bridges. Here are some more messages from the guest: ahci0: <HighPoint RocketRAID 640 AHCI SATA controller> port 0x21c0-0x21c7,0x21c8-0x21cb,0x21d0-0x21d7,0x21d8-0x21db,0x21e0-0x21ef mem 0xc000e000-0xc000efff irq 17 at device 9.0 on pci0 ahci0: attempting to allocate 1 MSI vectors (1 supported) ahci0: using IRQ 279 for MSI ahci0: AHCI v1.00 with 2 6Gbps ports, Port Multiplier supported with FBS ahci0: Caps: 64bit NCQ SNTF AL 6Gbps PM FBS PMD SSC PSC 32cmd eSATA 2ports ahcich0: <AHCI channel> at channel 0 on ahci0 ahcich0: Caps: CPD ESP FBSCP ahcich1: <AHCI channel> at channel 1 on ahci0 ahcich1: Caps: CPD ESP FBSCP ahcich0: AHCI reset... ahcich0: SATA connect time=100us status=00000123 ahcich0: AHCI reset: device found ahcich1: AHCI reset... ahcich1: SATA connect time=100us status=00000123 ahcich1: AHCI reset: device found ahcich1: AHCI reset: device ready after 100ms ahcich1: Poll timeout on slot 1 port 15 ahcich1: is 00000000 cs 00000002 ss 00000000 rs 00000002 tfd 150 serr 00000000 cmd 00318017 ahcich0: AHCI reset: device ready after 200ms ahcich0: Poll timeout on slot 1 port 15 ahcich0: is 00000000 cs 00000002 ss 00000000 rs 00000002 tfd 150 serr 00000000 cmd 00318017 And some more... Any ideas or suggestions? Or maybe some additional information from me? Thank you! -- Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?cee09b94-3a1d-ac36-c99a-99196faa75a9>