lkml.org 
[lkml]   [2011]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC PATCH] irq: add irq_domain translation infrastructure
    Benjamin Herrenschmidt wrote:
    > On Mon, 2011-06-27 at 11:00 +0200, Sebastian Andrzej Siewior wrote:
    >> * Grant Likely | 2011-05-26 00:54:38 [-0600]:
    >>
    >>> diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
    >>> index 39645b6..9891cd4 100644
    >>> --- a/arch/x86/kernel/devicetree.c
    >>> +++ b/arch/x86/kernel/devicetree.c
    >>> @@ -371,36 +321,49 @@ static struct of_ioapic_type of_ioapic_type[] =
    >>> },
    >>> };
    >>>
    >>> -static int ioapic_xlate(struct irq_domain *id, const u32 *intspec, u32 intsize,
    >>> - u32 *out_hwirq, u32 *out_type)
    >>> +static int ioapic_dt_translate(struct irq_domain *domain,
    >>> + struct device_node *controller,
    >>> + const u32 *intspec, u32 intsize,
    >>> + irq_hw_number_t *out_hwirq, u32 *out_type)
    >>> {
    >>> - struct mp_ioapic_gsi *gsi_cfg;
    >>> struct io_apic_irq_attr attr;
    >>> struct of_ioapic_type *it;
    >>> u32 line, idx, type;
    >>> + int rc;
    >>>
    >>> - if (intsize < 2)
    >>> + if (controller != domain->of_node)
    >>> return -EINVAL;
    >> Is there a reason not havining the (controller != domain->of_node) check
    >> in irq_create_of_mapping()?
    >
    > Not all domains are associated with a single OF node.
    >
    > Take xics, where there can be quite a few "source controllers" which act
    > as device-tree interrupt parents but there's a single global domain.

    I see. No, actually I don't. xics is pseries where I don't see the .dts.
    So you are saying that we have one irq_domain but 2+ different
    interrupt-parents nodes?

    How do you distinguish then between two different controllers lets say
    xics and a gpio based controller? This implementation calls ->dt_translate
    until one controller returns 0 which looks like brute force.

    xics_host_xlate() returns always zero so you would have to go for
    the compatible and check it.
    Every device has an interrupt-parent node. Shouldn't the code call exact
    this irq controller xlate function instead of trying them all?

    >
    > Cheers,
    > Ben.
    >
    Sebastian



    \
     
     \ /
      Last update: 2011-06-27 12:03    [W:0.025 / U:122.572 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site