From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: Requesting for freeze exception for ARM/ITS patches Date: Tue, 14 Jul 2015 10:50:24 +0100 Message-ID: <1436867424.25044.53.camel@citrix.com> References: <559FC246020000780008F6EA@mail.emea.novell.com> <1436543565.10074.106.camel@citrix.com> <55A0B96D.4030804@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Vijay Kilari Cc: Wei Liu , Stefano Stabellini , Prasun Kapoor , manish.jaggi@caviumnetworks.com, "xen-devel@lists.xen.org" , Julien Grall , Stefano Stabellini , Jan Beulich List-Id: xen-devel@lists.xenproject.org On Tue, 2015-07-14 at 14:54 +0530, Vijay Kilari wrote: > I am trying to boot latest staging Xen branch on ThunderX with ITS patches. > > I face below issues with above [1] patch series > > 1) If pcie support only MSI, then INT mapping is not specified in DT. However > the below code returns error if INT mapping is not found and does not map. > In ThunderX INT mapping is not specified for pcie nodes. > > static int map_device_children(struct domain *d, > const struct dt_device_node *dev) > { > int ret; > > if ( dt_device_type_is_equal(dev, "pci") ) > { > DPRINT("Mapping children of %s to guest\n", dt_node_full_name(dev)); > > ret = dt_for_each_irq_map(dev, &map_dt_irq_to_domain, d); > if ( ret < 0 ) > return ret; // Returns error here Hrm, I suppose dt_for_each_irq_map ought to return success if the device in question has no interrupt-map at all. At first glance it seems like: if ( imap == NULL ) { dt_dprintk(" -> no map, ignoring\n"); goto fail; } Should become: if ( imap == NULL ) { dt_dprintk(" -> no map, ignoring\n"); return 0; } Can you test that and if it is correct submit it as a patch please. > ... > } > > 2) Dom0 fails to boot with GICv3. It hangs just after GICv3 initialization. > > To know which is last distributor/re-distributor registers read, I > have added debug prints > in GICD & GICR mmio handlers in Xen. But with your patches Linux driver never > traps to Xen to read/write GICD/GICR registers. If I revert back this > patch series, > I see the traps. Where "this patch series" is this: $ git log --oneline d7f132c762d1359f03b2b5b89406daf39d8aefc0..467e5cbb2ffc5e0994c4cb584b7ace6a01a727af 467e5cb xen: arm: consolidate mmio and irq mapping to dom0 f65399f xen: arm: Import of_bus PCI entry from Linux (as a dt_bus entry) 864f82a xen: arm: map child MMIO and IRQs to dom0 for PCI bus DT nodes. eed5e39 xen: arm: drop redundant extra call to vgic_reserve_virq f9d08f4 xen: dt: add dt_for_each_range helper 5cefb30 xen: dt: add dt_for_each_irq_map helper $ ? That's rather strange, nothing here should be interacting with the vgic trapping for GICD/GICR. About the only thing I can imagine is that something has incorrectly created a p2m mapping over the GICD/GICR addresses. If that is the case then it ought to be pretty apparent from the logs with DT_DEBUG enabled in domain_build.c. If it isn't apparent from the debug log then please could you bisect down to a specific patch. Ian.