On 09-Feb-18 5:41 PM, Ravi Kerur wrote:
On Thu, Feb 8, 2018 at 3:20 AM, Burakov, Anatoly
<anatoly.bura...@intel.com <mailto:anatoly.bura...@intel.com>> wrote:
On 06-Feb-18 5:55 PM, Ravi Kerur wrote:
Hi Anatoly,
I am actually confused with the state of vIOMMU + DPDK. Can you
please help me clarify?
I tested following DPDK versions
(1) DPDK 17.11, exhibits the issue (IOMMU width as reported by
RedHat and solution is to prevent using the patch)
(2) DPDK 17.05.02 (stable release) using 'testpmd' I was able to
bind a device in VM with VFIO driver and no DMAR error message
on host
(3) DPDK 16.11.02 (stable release) using 'testpmd' I was able to
bind a device in VM with VFIO driver and no DMAR error message
on host
Clearly issue seen in 17.11 without the patch you mentioned is a
regression or the issue was masked in earlier DPDK version? I
did not test traffic with any DPDK version because I wanted to
first get DMAR errors on host gone.
Our application 'v1' is integrated with DPDK 16.11 and 'v2' is
integrated with DPDK 17.05.01. In both 'v1' and 'v2' cases I
don't see IOMMU width error messages on VM, however, DMAR error
messages are seen host. I am not able to relate what causes DMAR
error messages on host?
Thanks.
Hi Ravi,
vIOMMU support is out of our hands, really - we can only make use of
hardware (or emulation of it) that is available. 39-bit wide address
*can* work, you just have to be lucky and get PA addresses that
would fit into 39 bits (so under 512G limit), because we set up IOVA
addresses to be 1:1 to physical addresses. We could, in principle,
set up IOVA addresses to go from zero instead of them being a 1:1
mapping to physical addresses, but that would introduce need to
translate addresses between IOVA and physical in some cases (e.g. KNI).
I'm not aware of any changes between 16.11 and 17.11 (and indeed
18.02) that would make or break support for 39-bit wide PA addresses
for IOMMU. It is possible that VF/PF drivers do something
differently which results in DMAR errors showing up sooner rather
than later, but as far as VFIO support itself is concerned, there
were no major changes in those releases.
Hi Anatoly,
Hi Ravi,
Thank you for your explanation. I would like to ask one more thing as I
need to get v-iommu+ dpdk working in VM. Can you please tell me what
determines 'Host Address Width", I know my question has nothing to do
with dpdk and this is a dpdk list, but if you have any information
please share it? I googled and found couple of ways to influence 'Host
Address Width = 46' in guest as well (since dpdk + iommu works fine on
host and DMAR on host reports address width as 46).
As far as i'm aware, address width supported by IOMMU is taken from
hardware (real or emulated). If e.g. QEMU's vIOMMU emulates an IOMMU
that only supports 39-bit addresses, that's what we'll get.
Not sure what "host address width" means exactly, but if i had to guess,
usually in VM-speak, "host" refers to, well, host - that is, the
physical machine the VM is running on. So, under that assumption, "host
address width" would be telling QEMU maximum width of IOMMU addresses on
the host (i.e. what you have in hardware, on the host - for example, you
might be running on a platform that only supports a 39-bit wide physical
address). Naturally, changing it around wouldn't change much - it would
presumably affect only the way vIOMMU remaps requests from guest to
host, but not the emulated hardware itself. However, i'm not
knowledgeable enough in that area to answer this question definitively.
(1) Qemu has CPU param 'host-phys-bits' boolean, when set to true copies
it from host
(2) Qemu has 'phys-bits' integer, when set to '46' should influence guest
Using above options when instantiating a VM doesn't help, Guest VM still
ends up with 'Host address width = 39'.
(3) There is another Qemu option 'x-aw-bits' which is for VT-d which can
be set to '39' or '48'. This doesn't help either.
Thanks.
--
Thanks,
Anatoly
--
Thanks,
Anatoly