[dpdk-dev] [PATCH v2] bus/pci: forbid VA as IOVA mode if IOMMU address width too small

Tan, Jianfeng jianfeng.tan at intel.com
Fri Jan 12 02:15:21 CET 2018


Hi Maxime,

> -----Original Message-----
> From: Maxime Coquelin [mailto:maxime.coquelin at redhat.com]
> Sent: Friday, January 12, 2018 4:20 AM
> To: Tan, Jianfeng
> Cc: dev at dpdk.org; stable at dpdk.org; santosh.shukla at caviumnetworks.com;
> Burakov, Anatoly; thomas at monjalon.net; stephen at networkplumber.org;
> peterx at redhat.com
> Subject: Re: [PATCH v2] bus/pci: forbid VA as IOVA mode if IOMMU address
> width too small
> 
> Hi Jianfeng,
> 
> On 01/09/2018 02:18 PM, Maxime Coquelin wrote:
> > Intel VT-d supports different address widths for the IOVAs, from
> > 39 bits to 56 bits.
> >
> > While recent processors support at least 48 bits, VT-d emulation
> > currently only supports 39 bits. It makes DMA mapping to fail in this
> > case when using VA as IOVA mode, as user-space virtual addresses uses
> > up to 47 bits (see kernel's Documentation/x86/x86_64/mm.txt).

Yes, I also notice this issue on some of Intel platform with limited width for IOVA. But I was always suggesting to use --base-virtaddr to work around.

> >
> > This patch parses VT-d CAP register value available in sysfs, and
> > forbid VA as IOVA mode if the GAW is 39 bits or unknown.
> >
> > Fixes: f37dfab21c98 ("drivers/net: enable IOVA mode for Intel PMDs")
> >
> > Cc: stable at dpdk.org
> > Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
> > ---
> >
> > Changes in v2:
> > ==============
> > - Rework pci_one_device_iommu_support_va #ifdefery (Stephen)
> > - Don't inline introduced functions (Stephen)
> >
> >   drivers/bus/pci/linux/pci.c | 108
> ++++++++++++++++++++++++++++++++++++++++----
> >   1 file changed, 99 insertions(+), 9 deletions(-)
> >
> 
> Could you please try the patch and confirm it does not break your
> --no-huge usecase?

I've tested the --no-huge case, it still works on my xeon E5 server. I'll add my Tested-by to the original patch.

> 
> Are you fine with the fix?

Forbidding such usage seems a little overkill to me actually. How about just making it as a warning like:
  "IOMMU only support 39-bit IOVA address, you might want to use --base-virtaddr to restrict the range of virtual address (IOVA)"

Thanks,
Jianfeng

> 
> Thanks,
> Maxime


More information about the dev mailing list