From: Ravi Kerur <rkerur@gmail.com>
To: "Burakov, Anatoly" <anatoly.burakov@intel.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] IXGBE, IOMMU DMAR DRHD handling fault issue
Date: Fri, 2 Feb 2018 12:51:58 -0800 [thread overview]
Message-ID: <CAFb4SLB2vUZkUww6zwCofH0eKNA7nxJQXP=e3_mztyb=uoLTuA@mail.gmail.com> (raw)
In-Reply-To: <CAFb4SLCR-KDyBPf-TPSqh0EiAcQmJJF4ZL1wJ_z9NodKkrJ5gw@mail.gmail.com>
On Fri, Feb 2, 2018 at 12:21 PM, Ravi Kerur <rkerur@gmail.com> wrote:
>
>
> On Fri, Feb 2, 2018 at 2:28 AM, Burakov, Anatoly <
> anatoly.burakov@intel.com> wrote:
>
>> On 01-Feb-18 7:26 PM, Ravi Kerur wrote:
>>
>>>
>>>
>>> On Thu, Feb 1, 2018 at 2:10 AM, Burakov, Anatoly <
>>> anatoly.burakov@intel.com <mailto:anatoly.burakov@intel.com>> wrote:
>>>
>>> On 31-Jan-18 9:51 PM, Ravi Kerur wrote:
>>>
>>>
>>> Hi Anatoly,
>>>
>>> Thanks. I am following wiki link below which uses vIOMMU with
>>> DPDK as a use-case and instantiate VM as specified with Q35
>>> chipset in Qemu.
>>>
>>> https://wiki.qemu.org/Features/VT-d
>>> <https://wiki.qemu.org/Features/VT-d>
>>>
>>> Qemu-version is 2.11
>>> Host kernel 4.9
>>> Guest kernel 4.4
>>>
>>> I can only guess that guest kernel needs an upgrade in my setup
>>> to work correctly, if versions on my setup rings a bell on not
>>> having support kindly let me know.
>>>
>>> When 'modprobe vfio enable_unsafe_noiommu_node=Y' is executed on
>>> guest I get following error
>>> ...
>>> vfio: unknown parameter 'enable_unsafe_noiommu_node' ignored
>>> ...
>>>
>>> in guest.
>>>
>>> Thanks.
>>>
>>>
>>> AFAIK kernel 4.4 should have noiommu mode - it was introduced in
>>> 3.1x days. However, in order for that to work, kernel also has to be
>>> built with this mode enabled. My guess is, whoever is the supplier
>>> of your kernel, did not do that. You should double-check the kernel
>>> configuration of your distribution.
>>>
>>> However, if you have vIOMMU in QEMU, you shouldn't need noiommu mode
>>> - "regular" vfio should work fine. noiommu mode should only be
>>> needed if you know you don't have IOMMU enabled in your kernel, and
>>> even if you can't enable it, you can still use igb_uio.
>>>
>>> Hi Anatoly,
>>>
>>> Do you suggest I take this discussion to kvm/qemu mailing list as I am
>>> not sure which component has the issue? I check dmesg for BIOS physical
>>> memory map and address reported as fault by DMAR is reported by BIOS as
>>> usable on both host and vm.
>>>
>>> [ 4539.597737] DMAR: [DMA Read] Request device [04:10.0] fault addr
>>> *33a128000 *[fault reason 06] PTE Read access is not set
>>>
>>> dmesg | grep BIOS
>>> [ 0.000000] e820: BIOS-provided physical RAM map:
>>> [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009afff]
>>> usable
>>> [ 0.000000] BIOS-e820: [mem 0x000000000009b000-0x000000000009ffff]
>>> reserved
>>> [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff]
>>> reserved
>>> [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007938afff]
>>> usable
>>> [ 0.000000] BIOS-e820: [mem 0x000000007938b000-0x000000007994bfff]
>>> reserved
>>> [ 0.000000] BIOS-e820: [mem 0x000000007994c000-0x000000007999cfff]
>>> ACPI data
>>> [ 0.000000] BIOS-e820: [mem 0x000000007999d000-0x0000000079f7dfff]
>>> ACPI NVS
>>> [ 0.000000] BIOS-e820: [mem 0x0000000079f7e000-0x000000007bd37fff]
>>> reserved
>>> [ 0.000000] BIOS-e820: [mem 0x000000007bd38000-0x000000007bd38fff]
>>> usable
>>> [ 0.000000] BIOS-e820: [mem 0x000000007bd39000-0x000000007bdbefff]
>>> reserved
>>> [ 0.000000] BIOS-e820: [mem 0x000000007bdbf000-0x000000007bffffff]
>>> usable
>>> [ 0.000000] BIOS-e820: [mem 0x000000007c000000-0x000000008fffffff]
>>> reserved
>>> [ 0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed44fff]
>>> reserved
>>> [ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff]
>>> reserved
>>> [* 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000407fffffff]
>>> usable*
>>> *
>>> *
>>> Kindly let me know your inputs.
>>>
>>> Thanks.
>>>
>>>
>>> -- Thanks,
>>> Anatoly
>>>
>>>
>>>
>> The "PTE Read not set" error usually indicates that you are trying to use
>> a non-IOMMU method when you have IOMMU enabled (i.e. trying to use igb_uio
>> when IOMMU is on). That, to me, indicates that you do have IOMMU emulation
>> enabled.
>>
>> I would go about it this way.
>>
>> First, i'd ensure that your VM has IOMMU emulation enabled and working.
>> You have mentioned that your QEMU version should have IOMMU emulation, so
>> let's assume that's the case.
>>
>> I am not sure of the exact command-line needed to activate the vIOMMU
>> emulation, but assuming your VM emulates an Intel processor, your kernel
>> command-line should have "iommu=on intel_iommu=on" in it. Check
>> /etc/default/grub for GRUB_CMDLINE_LINUX_DEFAULT value, and if the above
>> values are not in there, add the above changes, do "update-grub" and reboot
>> your VM.
>>
>> If it already did have the necessary kernel configuration, do "dmesg |
>> grep IOMMU" and look for "IOMMU Enabled". That should tell you that IOMMU
>> is enabled and working in the kernel.
>>
>> After that, you can modprobe vfio and vfio-pci, bind NICs to it, and it
>> should be working. Please bear in mind that all of that is how i would've
>> gone about it if i had similar problems on baremetal, but i'm hoping all of
>> it is applicable to VM's. So, either disable IOMMU and use igb_uio, or
>> enable IOMMU and use VFIO. Both will work.
>>
>>
> Thanks for your help so far on this. I have everything enabled as you have
> mentioned in your email. Below is the error from EAL when DPDK is run on a
> VM. I am referring EAL code to check why it is failing.
>
> ************VM DPDK errors***********
> EAL: Detected 14 lcore(s)
> EAL: Probing VFIO support...
> EAL: VFIO support initialized
> EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using
> unreliable clock cycles !
> EAL: PCI device 0000:00:07.0 on NUMA socket -1
> EAL: Invalid NUMA socket, default to 0
> EAL: probe driver: 8086:10ed net_ixgbe_vf
> EAL: using IOMMU type 1 (Type 1)
>
>
> *EAL: RTE_IOVA_VA 140051367329792EAL: cannot set up DMA remapping,
> error 14 (Bad address)EAL: 0000:00:07.0 DMA remapping failed, error 14
> (Bad address)*
> EAL: Requested device 0000:00:07.0 cannot be used
> EAL: PCI device 0000:03:00.0 on NUMA socket -1
> EAL: Invalid NUMA socket, default to 0
> EAL: probe driver: 1af4:1041 net_virtio
> EAL: PCI device 0000:04:00.0 on NUMA socket -1
> EAL: Invalid NUMA socket, default to 0
> EAL: probe driver: 1af4:1041 net_virtio
> EAL: PCI device 0000:05:00.0 on NUMA socket -1
> EAL: Invalid NUMA socket, default to 0
> EAL: probe driver: 1af4:1041 net_virtio
> EAL: No probed ethernet devices
> Interactive-mode selected
> USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=171456, size=2176,
> socket=0
>
>
> ********************VM************
> root@sriov-ravi-01:~# lsmod | grep vfio
>
>
>
>
> *vfio_pci 40960 1vfio_virqfd 16384 1
> vfio_pcivfio_iommu_type1 20480 1vfio 28672 5
> vfio_iommu_type1,vfio_pciirqbypass 16384 3 kvm,vfio_pci*
> root@sriov-ravi-01:~# dmesg | grep -e DMAR -e IOMMU
> [ 0.000000] ACPI: DMAR 0x000000007FFE209D 000050 (v01 BOCHS BXPCDMAR
> 00000001 BXPC 00000001)
> *[ 0.000000] DMAR: IOMMU enabled*
> [ 9.423839] DMAR: Host address width 39
> [ 9.424640] DMAR: DRHD base: 0x000000fed90000 flags: 0x1
> [ 9.425754] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap
> 12008c22260286 ecap f00f5e
> [ 9.427314] DMAR: ATSR flags: 0x1
> [ 9.428047] DMAR-IR: IOAPIC id 0 under DRHD base 0xfed90000 IOMMU 0
> [ 9.429255] DMAR-IR: Queued invalidation will be enabled to support
> x2apic and Intr-remapping.
> [ 9.433096] DMAR-IR: Enabled IRQ remapping in x2apic mode
> [ 11.167334] DMAR: No RMRR found
> [ 11.168855] DMAR: dmar0: Using Queued invalidation
> [ 12.119060] DMAR: Setting RMRR:
> [ 12.123734] DMAR: Prepare 0-16MiB unity mapping for LPC
> [ 12.124787] DMAR: Setting identity map for device 0000:00:1f.0 [0x0 -
> 0xffffff]
> [ 12.392826] DMAR: Intel(R) Virtualization Technology for Directed I/O
> root@sriov-ravi-01:~# dpdk-devbind -s
>
> Network devices using DPDK-compatible driver
> ============================================
> *0000:00:07.0 '82599 Ethernet Controller Virtual Function 10ed'
> drv=vfio-pci unused=*
>
> Network devices using kernel driver
> ===================================
> 0000:03:00.0 'Device 1041' if=eth0 drv=virtio-pci unused=vfio-pci *Active*
> 0000:04:00.0 'Device 1041' if=eth1 drv=virtio-pci unused=vfio-pci
> 0000:05:00.0 'Device 1041' if=eth2 drv=virtio-pci unused=vfio-pci
>
> Other Network devices
> =====================
> <none>
>
> Crypto devices using DPDK-compatible driver
> ===========================================
> <none>
>
> Crypto devices using kernel driver
> ==================================
> <none>
>
> Other Crypto devices
> ====================
> <none>
>
> Eventdev devices using DPDK-compatible driver
> =============================================
> <none>
>
> Eventdev devices using kernel driver
> ====================================
> <none>
>
> Other Eventdev devices
> ======================
> <none>
>
> Mempool devices using DPDK-compatible driver
> ============================================
> <none>
>
> Mempool devices using kernel driver
> ===================================
> <none>
>
> Other Mempool devices
> =====================
> <none>
> root@sriov-ravi-01:~#
>
> root@sriov-ravi-01:/home/deployuser/dpdk-17.11/usertools# dmesg | grep -i
> vfio
> [ 77.676711] VFIO - User Level meta-driver version: 0.3
> [ 149.013806] VFIO - User Level meta-driver version: 0.3
> [ 275.876440] VFIO - User Level meta-driver version: 0.3
>
> Thanks,
> Ravi
>
>
>
Additonal information. On VM following message is seen
[ 298.714974] DMAR: intel_iommu_map: iommu width (39) is not sufficient
for the mapped address (7f7300000000)
[ 1494.673406] DMAR: intel_iommu_map: iommu width (39) is not sufficient
for the mapped address (7fa580000000)
ON VM, DMAR reports address width = 39
root@sriov-ravi-01:/home/deployuser/dpdk-17.11/usertools# dmesg | grep -e
IOMMU -e DMAR
[ 0.000000] ACPI: DMAR 0x000000007FFE209D 000050 (v01 BOCHS BXPCDMAR
00000001 BXPC 00000001)
[ 0.000000] DMAR: IOMMU enabled
[ 9.209145] DMAR: Host address width 39
On Host, DMAR reports address width = 46
# dmesg | grep -e DMAR -e IOMMU
[ 0.000000] ACPI: DMAR 0x000000007999BAD0 0000E0 (v01 ALASKA A M I
00000001 INTL 20091013)
[ 0.000000] DMAR: IOMMU enabled
[ 0.519368] DMAR: Host address width 46
[ 0.527243] DMAR: DRHD base: 0x000000fbffc000 flags: 0x0
Searching for IOMMU errors found following link from RedHat which points to
DPDK 17.11 issue.
https://bugzilla.redhat.com/show_bug.cgi?id=1530957
Thanks.
> --
>> Thanks,
>> Anatoly
>>
>
>
next prev parent reply other threads:[~2018-02-02 20:51 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-23 17:25 Ravi Kerur
2018-01-24 10:31 ` Burakov, Anatoly
2018-01-24 19:13 ` Ravi Kerur
2018-01-25 10:49 ` Burakov, Anatoly
2018-01-29 22:35 ` Ravi Kerur
2018-01-31 9:59 ` Burakov, Anatoly
2018-01-31 21:51 ` Ravi Kerur
2018-02-01 10:10 ` Burakov, Anatoly
2018-02-01 19:26 ` Ravi Kerur
2018-02-02 10:28 ` Burakov, Anatoly
2018-02-02 20:21 ` Ravi Kerur
2018-02-02 20:51 ` Ravi Kerur [this message]
2018-02-05 10:01 ` Burakov, Anatoly
2018-02-06 17:55 ` Ravi Kerur
2018-02-08 11:20 ` Burakov, Anatoly
2018-02-09 17:41 ` Ravi Kerur
2018-02-10 10:11 ` Burakov, Anatoly
2018-02-10 10:58 ` Burakov, Anatoly
2018-02-10 17:53 ` Ravi Kerur
2018-02-12 10:13 ` Burakov, Anatoly
2018-02-12 22:00 ` Ravi Kerur
2018-02-13 14:31 ` Burakov, Anatoly
2018-02-14 20:00 ` Ravi Kerur
2018-02-15 10:28 ` Burakov, Anatoly
2018-02-15 18:27 ` Ravi Kerur
2018-02-15 20:53 ` Ravi Kerur
2018-02-16 9:41 ` Burakov, Anatoly
2019-01-15 7:07 ` Hu, Xuekun
2019-01-15 11:22 ` Burakov, Anatoly
2019-01-15 13:07 ` Hu, Xuekun
2019-01-21 13:18 ` Hu, Xuekun
2019-01-21 13:39 ` Burakov, Anatoly
2019-01-21 14:44 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAFb4SLB2vUZkUww6zwCofH0eKNA7nxJQXP=e3_mztyb=uoLTuA@mail.gmail.com' \
--to=rkerur@gmail.com \
--cc=anatoly.burakov@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).