Re: [PATCH v5 1/6] iommu: add generic boot option iommu.dma_mode
From: Will Deacon
Date: Tue Apr 16 2019 - 11:21:10 EST
On Fri, Apr 12, 2019 at 02:11:31PM +0100, Robin Murphy wrote:
> On 12/04/2019 11:26, John Garry wrote:
> > On 09/04/2019 13:53, Zhen Lei wrote:
> > > +static int __init iommu_dma_mode_setup(char *str)
> > > +{
> > > + if (!str)
> > > + goto fail;
> > > +
> > > + if (!strncmp(str, "passthrough", 11))
> > > + iommu_default_dma_mode = IOMMU_DMA_MODE_PASSTHROUGH;
> > > + else if (!strncmp(str, "lazy", 4))
> > > + iommu_default_dma_mode = IOMMU_DMA_MODE_LAZY;
> > > + else if (!strncmp(str, "strict", 6))
> > > + iommu_default_dma_mode = IOMMU_DMA_MODE_STRICT;
> > > + else
> > > + goto fail;
> > > +
> > > + pr_info("Force dma mode to be %d\n", iommu_default_dma_mode);
> >
> > What happens if the cmdline option iommu.dma_mode is passed multiple
> > times? We get mutliple - possibily conflicting - prints, right?
>
> Indeed; we ended up removing such prints for the existing options here,
> specifically because multiple messages seemed more likely to be confusing
> than useful.
>
> > And do we need to have backwards compatibility, such that the setting
> > for iommu.strict or iommu.passthrough trumps iommu.dma_mode, regardless
> > of order?
>
> As above I think it would be preferable to just keep using the existing
> options anyway. The current behaviour works out as:
>
> iommu.passthrough | Y | N
> iommu.strict | x | Y N
> ------------------|-------------|---------|--------
> MODE | PASSTHROUGH | STRICT | LAZY
>
> which seems intuitive enough that a specific dma_mode option doesn't add
> much value, and would more likely just overcomplicate things for users as
> well as our implementation.
Agreed. We can't remove the existing options, and they do the job perfectly
well so I don't see the need to add more options on top.
Will