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