From: Ian Campbell <ian.campbell@citrix.com>
To: Julien Grall <julien.grall@citrix.com>
Cc: stefano.stabellini@eu.citrix.com, xen-devel@lists.xen.org
Subject: Re: [PATCH v4 1/6] xen: dt: add dt_for_each_irq_map helper
Date: Fri, 3 Jul 2015 15:16:54 +0100 [thread overview]
Message-ID: <1435933014.9447.123.camel@citrix.com> (raw)
In-Reply-To: <558D9040.7070503@citrix.com>
On Fri, 2015-06-26 at 19:47 +0200, Julien Grall wrote:
> > + /* First get the #interrupt-cells property of the current cursor
> > + * that tells us how to interpret the passed-in intspec. If there
> > + * is none, we are nice and just walk up the tree
> > + */
> > + do {
> > + tmp = dt_get_property(ipar, "#interrupt-cells", NULL);
> > + if ( tmp != NULL )
> > + {
> > + intsize = be32_to_cpu(*tmp);
> > + break;
> > + }
> > + tnode = ipar;
> > + ipar = dt_irq_find_parent(ipar);
> > + } while ( ipar );
>
> This loop doesn't seem useful. AFAIU the spec, the PCI node (i.e your
> variable dev) will always have property #interrupt-cells. We will break
> directly.
The reason for this is explained in the comment i.e. "we are nice" to
broken trees.
This code is from Linux, via dt_irq_map_raw, I don't fancy messing with
it too much.
> > + dt_raw_irq.controller = ipar;
> > + dt_raw_irq.size = pintsize;
>
> Don't you need to check that pintsize is < DT_MAX_IRQ_SPEC?
> The previous "if ( ... > DT_MAX_IRQ_SPEC )" will likely be done on a
> different parent.
Yes, I think that would be a good idea.
>
> For instance with the following incomplete DT (based on the
> apm-storm.dsi in Linux):
>
> pcie0 {
> #interrupt-cells = <1>;
> ...
> #interrupt-map = < 0x0 0x0 0x0 0x1 &gic ... >
> }
>
> The first ipar will point to pcie0 because it has a property
> "#interrupt-cells", while the second time ipar will point to the gic node.
>
> > + for ( i = 0; i < pintsize; i++ )
> > + dt_raw_irq.specifier[i] = dt_read_number(imap + i, 1);
> > +
> > + ret = dt_irq_translate(&dt_raw_irq, &dt_irq);
> > + if ( ret < 0 )
>
> The other caller of dt_irq_translate returns an error when ret is not 0.
> I would do the same here.
dt_device_get_irq just returns the value of dt_irq_translate directly.
Are you suggesting this code should treat positive results as an error
as well as negative ones? I don't agree, this function has the normal 0
on success -ve on error semantics AFAICT.
Or did you mean something else?
Ian.
next prev parent reply other threads:[~2015-07-03 14:16 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-08 11:26 [PATCH v3 0/6] xen: arm: Parse PCI DT nodes' ranges and interrupt-map Ian Campbell
2015-05-08 11:26 ` [PATCH v4 1/6] xen: dt: add dt_for_each_irq_map helper Ian Campbell
2015-06-26 17:47 ` Julien Grall
2015-07-03 14:16 ` Ian Campbell [this message]
2015-07-03 15:15 ` Julien Grall
2015-07-03 15:28 ` Ian Campbell
2015-05-08 11:26 ` [PATCH v4 2/6] xen: dt: add dt_for_each_range helper Ian Campbell
2015-05-08 11:26 ` [PATCH v4 3/6] xen: arm: slightly refactor gic DT node creation for domain 0 Ian Campbell
2015-05-08 16:21 ` Ian Campbell
2015-05-08 11:26 ` [PATCH v4 4/6] xen: arm: drop redundant extra call to vgic_reserve_virq Ian Campbell
2015-06-26 17:49 ` Julien Grall
2015-05-08 11:26 ` [PATCH v4 5/6] xen: arm: map child MMIO and IRQs to dom0 for PCI bus DT nodes Ian Campbell
2015-06-26 17:56 ` Julien Grall
2015-07-03 10:59 ` Ian Campbell
2015-07-03 11:26 ` Julien Grall
2015-05-08 11:27 ` [PATCH v4 6/6] xen: arm: Import of_bus PCI entry from Linux (as a dt_bus entry) Ian Campbell
2015-06-26 18:08 ` Julien Grall
2015-07-03 10:47 ` Ian Campbell
2015-07-03 10:56 ` Ian Campbell
2015-07-03 11:24 ` Julien Grall
2015-07-03 11:30 ` Ian Campbell
2015-05-08 11:41 ` [PATCH v3 0/6] xen: arm: Parse PCI DT nodes' ranges and interrupt-map Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1435933014.9447.123.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=julien.grall@citrix.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.