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

Reply via email to