Messages in this thread | | | From | "Han, Weidong" <> | Date | Sat, 24 Oct 2009 19:01:28 +0800 | Subject | RE: [PATCH] intr-remap: allow disabling source id checking |
| |
Hi Chris,
How about get rid of the 'nointremap' option? Therefore keep only one option for interrupt remapping.
Regards, Weidong
Chris Wright wrote: > Allow users to disable source id checking. This is really a > debugging aid > for broken BIOS setups. > > Signed-off-by: Chris Wright <chrisw@sous-sol.org> > --- > Documentation/kernel-parameters.txt | 7 +++++++ > drivers/pci/intr_remapping.c | 20 ++++++++++++++++++++ > 2 files changed, 27 insertions(+), 0 deletions(-) > > diff --git a/Documentation/kernel-parameters.txt > b/Documentation/kernel-parameters.txt index 6fa7292..344256c 100644 > --- a/Documentation/kernel-parameters.txt > +++ b/Documentation/kernel-parameters.txt > @@ -982,6 +982,12 @@ and is between 256 and 4096 characters. It is > defined in the file result in a hardware IOTLB flush operation as > opposed to batching them for performance. > > + intremap= [X86-64, Intel-IOMMU] > + Format: { on (default) | off | nosid } > + on enable Interrupt Remapping (default) > + off disable Interrupt Remapping > + nosid disable Source ID checking > + > inttest= [IA64] > > iomem= Disable strict checking of access to MMIO memory > @@ -1691,6 +1697,7 @@ and is between 256 and 4096 characters. It is > defined in the file > > nointremap [X86-64, Intel-IOMMU] Do not enable interrupt > remapping. > + [Deprecated - use intremap=off] > > nointroute [IA-64] > > diff --git a/drivers/pci/intr_remapping.c > b/drivers/pci/intr_remapping.c > index 0ed78a7..136bb6e 100644 > --- a/drivers/pci/intr_remapping.c > +++ b/drivers/pci/intr_remapping.c > @@ -18,6 +18,8 @@ static int ir_ioapic_num; > int intr_remapping_enabled; > > static int disable_intremap; > +static int disable_sourceid_checking; > + > static __init int setup_nointremap(char *str) > { > disable_intremap = 1; > @@ -25,6 +27,22 @@ static __init int setup_nointremap(char *str) > } > early_param("nointremap", setup_nointremap); > > +static __init int setup_intremap(char *str) > +{ > + if (!str) > + return -EINVAL; > + > + if (!strncmp(str, "on", 2)) > + disable_intremap = 0; > + else if (!strncmp(str, "off", 3)) > + disable_intremap = 1; > + else if (!strncmp(str, "nosid", 5)) > + disable_sourceid_checking = 1; > + > + return 0; > +} > +early_param("intremap", setup_intremap); > + > struct irq_2_iommu { > struct intel_iommu *iommu; > u16 irte_index; > @@ -440,6 +458,8 @@ int free_irte(int irq) > static void set_irte_sid(struct irte *irte, unsigned int svt, > unsigned int sq, unsigned int sid) > { > + if (disable_sourceid_checking) > + svt = SVT_NO_VERIFY; > irte->svt = svt; > irte->sq = sq; > irte->sid = sid;
| |