[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.5 7/8] xen/irq: Handle multiple action per IRQ
On Tue, 2014-03-18 at 14:54 +0000, Julien Grall wrote: > Hi Stefano, > > On 03/18/2014 02:06 PM, Stefano Stabellini wrote: > >> On 03/18/2014 09:33 AM, Ian Campbell wrote: > >>> On Mon, 2014-03-17 at 21:05 +0000, Julien Grall wrote: > >>>> For instance for the SMMU on midway, the device tree bindings is: > >>>> > >>>> smmu_sata: smmu@9,20180000 { > >>>> compatible = "arm,mmu-400"; > >>>> reg = <0x9 0x20180000 0x10000>; > >>>> mmu-masters = <&sata 0 1 2 3 4 5 6 7 8 9>; > >>>> #global-interrupts = <1>; > >>>> interrupts = <0 114 4 0 114 4>; > >>>> calxeda,smmu-secure-config-access; > >>>> arm,smmu-isolate-devices; > >>>> }; > >>>> > >>>> As you can see the same interrupts is used twice: > >>> > >>> Is that actually valid in device tree? Or is this a quirk of the midway > >>> DT? > >> > >> Yes it's valid. The interrupts property for the SMMU is described as: > >> > >> "Interrupt list, with the first #global-irqs entries corresponding to > >> the global interrupts and any following entries corresponding to context > >> interrupts, specified in order of their indexing by the SMMU. > >> > >> For SMMUv2 implementations, there must be exactly one interrupt per > >> context bank. In the case of a single, combined interrupt, it must be > >> listed multiple times." > >> > >> On midway there is only one IRQ with is used for both context interrupt > >> and global interrupt. As it's the only platform on Linux with SMMU > >> support in the device tree, we don't know if every platform will have > >> the same behavior. > > > > I understand that the SMMU might reuse the same IRQ for multiple > > purposes. I would still handle the scenario entirely within the SMMU > > driver. Can't we register a single handler for each of the IRQ listed > > under the SMMU node and then figure out what was the notification for in > > the handler? > > > > We will have to check in the SMMU drivers, if the IRQ was already > registered or not (because we don't know in advance if the IRQ is > re-used). If not, Xen will register it with a new handler. > > The code to register the IRQ handler will looks like: > > int num_irqs = dt_number_of_irq(smmu->node); assert(num_irqs == 2) here and the rest gets a lot simpler. The maximum is a property of the hardware I think, so the driver is allowed to make such assumptions. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |