[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Requesting for freeze exception for ARM/ITS patches



On Tue, Jul 14, 2015 at 3:20 PM, Ian Campbell <ian.campbell@xxxxxxxxxx> wrote:
> 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.

Yes, I do so.

>
> 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.

I found the reason. There is some discrepancy with DT which is overlapping
with GIC address space. It took a day to figure out.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.