RE: [PATCH 1/2] irqchip/gicv3-its: Support share device ID

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Minghuan,
Yes, deviceid=stream id (i.e. ICID + other bits). I am not sure if TBU ID would also be forwarded as a part of stream id to GIC. My understanding is that TBU ID is forwarded (as a part of the stream ID) to the TCU in case of a TBU translation miss. In case of the LS2085 PCIe controller you would have to setup the PCIe device ID to stream ID translation table. We may have to restrict the number of entries based on the available number of contexts.

Regards
Varun


> -----Original Message-----
> From: Lian Minghuan-B31939
> Sent: Wednesday, April 15, 2015 5:08 PM
> To: Sethi Varun-B16395; linux-pci@xxxxxxxxxxxxxxx
> Cc: Arnd Bergmann; Hu Mingkai-B21284; Zang Roy-R61911; Yoder Stuart-
> B08248; Bjorn Helgaas; Wood Scott-B07421; linux-arm-
> kernel@xxxxxxxxxxxxxxxxxxx
> Subject: RE: [PATCH 1/2] irqchip/gicv3-its: Support share device ID
> 
> Hi Varun,
> 
> Freescale LS2085A SMMU uses in hit/miss mechanism for the concatenation
> {tbu number,stream_id}. This concatenation is then assigned to a context
> bank that determines the translation type and form. The Isolation Context
> Identifier ICID is the main field of stream_id which will be used to hit ITS
> device. We may look ICID as ITS device ID and PCI device ID. But there are
> only 64 ICIDs  0 - 63.  If using default PCI_DEVID(bus, devfn)  ((((u16)(bus)) <<
> 8) | (devfn)), PCI device(bus >=1) ) ID will larger than 63.  SMMU will miss this
> translation.
> In addition, because the ICID number  is only 64, all the PCIe device will use
> the same ICID and share the same ITS device.
> 
> Thanks,
> Minghuan
> 
> > -----Original Message-----
> > From: Sethi Varun-B16395
> > Sent: Wednesday, April 15, 2015 7:08 PM
> > To: Lian Minghuan-B31939; linux-pci@xxxxxxxxxxxxxxx
> > Cc: Arnd Bergmann; Lian Minghuan-B31939; Hu Mingkai-B21284; Zang Roy-
> > R61911; Yoder Stuart-B08248; Bjorn Helgaas; Wood Scott-B07421;
> > linux-arm- kernel@xxxxxxxxxxxxxxxxxxx
> > Subject: RE: [PATCH 1/2] irqchip/gicv3-its: Support share device ID
> >
> > Hi Minghuan,
> > Not clear what this patch intends to do. Can you please explain the
> > point about SMMU isolating limited device ID.
> >
> > Regards
> > Varun
> >
> > > -----Original Message-----
> > > From: linux-arm-kernel [mailto:linux-arm-kernel-
> > > bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Minghuan Lian
> > > Sent: Wednesday, April 15, 2015 3:19 PM
> > > To: linux-pci@xxxxxxxxxxxxxxx
> > > Cc: Arnd Bergmann; Lian Minghuan-B31939; Hu Mingkai-B21284; Zang
> > > Roy- R61911; Yoder Stuart-B08248; Bjorn Helgaas; Wood Scott-B07421;
> > > linux-arm- kernel@xxxxxxxxxxxxxxxxxxx
> > > Subject: [PATCH 1/2] irqchip/gicv3-its: Support share device ID
> > >
> > > SMMU of some platforms can only isolate limited device ID.
> > > This may require that all PCI devices share the same ITS device with
> > > the fixed device ID. The patch adds function
> > > arch_msi_share_devid_update used for these platforms to update the
> > > fixed device ID and maximum MSI interrupts number.
> > >
> > > Signed-off-by: Minghuan Lian <Minghuan.Lian@xxxxxxxxxxxxx>
> > > ---
> > >  drivers/irqchip/irq-gic-v3-its.c | 11 +++++++++++
> > >  1 file changed, 11 insertions(+)
> > >
> > > diff --git a/drivers/irqchip/irq-gic-v3-its.c
> > > b/drivers/irqchip/irq-gic-v3-its.c
> > > index d0374a6..be78d0a 100644
> > > --- a/drivers/irqchip/irq-gic-v3-its.c
> > > +++ b/drivers/irqchip/irq-gic-v3-its.c
> > > @@ -1169,6 +1169,15 @@ static int its_get_pci_alias(struct pci_dev
> > > *pdev,
> > > u16 alias, void *data)
> > >  	return 0;
> > >  }
> > >
> > > +void __weak
> > > +arch_msi_share_devid_update(struct pci_dev *pdev, u32 *dev_id, u32
> > > +*nvesc) {
> > > +	/*
> > > +	 * use PCI_DEVID NOT share device ID as default
> > > +	 * so nothing need to do
> > > +	 */
> > > +}
> > > +
> > >  static int its_msi_prepare(struct irq_domain *domain, struct device
> *dev,
> > >  			   int nvec, msi_alloc_info_t *info)  { @@ -1185,6
> > > +1194,8 @@ static int its_msi_prepare(struct irq_domain *domain,
> > > +struct
> > > device *dev,
> > >  	dev_alias.count = nvec;
> > >
> > >  	pci_for_each_dma_alias(pdev, its_get_pci_alias, &dev_alias);
> > > +	arch_msi_share_devid_update(pdev, &dev_alias.dev_id,
> > > +&dev_alias.count);
> > > +
> > >  	its = domain->parent->host_data;
> > >
> > >  	its_dev = its_find_device(its, dev_alias.dev_id);
> > > --
> > > 1.9.1
> > >
> > >
> > > _______________________________________________
> > > linux-arm-kernel mailing list
> > > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux