From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v3 4/5] xen: arm: map child MMIO and IRQs to dom0 for PCI bus DT nodes. Date: Wed, 29 Apr 2015 17:22:51 +0100 Message-ID: <5541055B.30608@citrix.com> References: <1429532129.25195.422.camel@citrix.com> <1429532165-19069-4-git-send-email-ian.campbell@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1429532165-19069-4-git-send-email-ian.campbell@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: Ian Campbell , xen-devel@lists.xen.org Cc: vijay.kilari@gmail.com, stefano.stabellini@eu.citrix.com, julien.grall@linaro.org, tim@xen.org, Chen Baozi , Suravee Suthikulanit List-Id: xen-devel@lists.xenproject.org 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. Also I'm wondering if we should care about passthrough the PCI controller to a guest. If so, you would need to check need_mapping as we do in handle_device. If not, I would add a warning if the property "xen,passthrough" exists in the node telling that we won't honor it. > + DPRINT(" - IRQ: %u\n", dt_irq.irq); > + > + return 0; > +} > + > +static int map_range_to_domain(const struct dt_device_node *dev, > + u64 addr, u64 len, > + void *data) > +{ > + struct domain *d = data; > + int res; > + > + res = map_mmio_regions(d, > + paddr_to_pfn(addr & PAGE_MASK), > + DIV_ROUND_UP(len, PAGE_SIZE), > + paddr_to_pfn(addr & PAGE_MASK)); > + if ( res < 0 ) > + { > + printk(XENLOG_ERR "Unable to map 0x%"PRIx64 > + " - 0x%"PRIx64" in domain %d\n", > + addr & PAGE_MASK, PAGE_ALIGN(addr + len) - 1, > + d->domain_id); > + return res; > + } > + > + DPRINT(" - MMIO: %010"PRIx64" - %010"PRIx64"\n", addr, addr+len); NIT: mising space "addr + len" And same question as for the interrupt. Regards, -- Julien Grall