From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH v3 4/5] xen: arm: map child MMIO and IRQs to dom0 for PCI bus DT nodes. Date: Fri, 8 May 2015 11:58:10 +0100 Message-ID: <1431082690.2660.432.camel@citrix.com> References: <1429532129.25195.422.camel@citrix.com> <1429532165-19069-4-git-send-email-ian.campbell@citrix.com> <5541055B.30608@citrix.com> <1431081772.2660.429.camel@citrix.com> <554C957C.8090200@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <554C957C.8090200@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall Cc: vijay.kilari@gmail.com, stefano.stabellini@eu.citrix.com, julien.grall@linaro.org, tim@xen.org, xen-devel@lists.xen.org, Chen Baozi , Suravee Suthikulanit List-Id: xen-devel@lists.xenproject.org On Fri, 2015-05-08 at 11:52 +0100, Julien Grall wrote: > Hi Ian, > > On 08/05/15 11:42, Ian Campbell wrote: > > On Wed, 2015-04-29 at 17:22 +0100, Julien Grall wrote: > >> Hi Ian, > >> > >> On 20/04/15 13:16, Ian Campbell wrote: > >>> +static int map_interrupt_to_domain(const struct dt_device_node *dev, > >>> + const struct dt_raw_irq *dt_raw_irq, > >>> + void *data) > >>> +{ > >> > >> [..] > >> > >>> + res = route_irq_to_guest(d, dt_irq.irq, dt_irq.irq, dt_node_name(dev)); > >>> + if ( res < 0 ) > >>> + { > >>> + printk(XENLOG_ERR "Unable to map IRQ%"PRId32" to dom%d\n", > >>> + dt_irq.irq, d->domain_id); > >>> + return res; > >>> + } > >> > >> You forgot to give the IRQ permission to the domain. > > > > IOW I should call irq_permit_access, between irq_set_spi_type and > > route_irq_to_guest I think? > > I can call here. Although it doesn't matter has irq_permit_access is not > used in route_irq_to_guest. > > > Should I be calling vgic_reserve_virq here as well? Other similar > > looking code does. > > Yes I forgot to tell you about it. > > > It seems that handle_device() calls vgic_reserve_virq twice with the > > same arguments (once conditionally, the other not). Is that a rebase-o? > > Seems to have happened in cb818a58f6f785bb41a35bc1d1e52c66ffbe1e8b. > > Hmmm... yes. I didn't pay enough attention when I rebased this patch, sorry. > > The first call to vgic_reserve_virq should be dropped. It's only > necessary to reserve the VIRQ when the domain is using the IRQ (i.e > need_mapping == 1). > > Do you plan to send a patch for it? Yes, I'll tack it on the front of this series. Ian.