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

Re: [Xen-devel] [GSOC-2019] Problem with initializing crossbar on bb-x15 in dom0




On 06/07/2019 18:55, Denis Obrezkov wrote:
> Hi,
> 
> On 7/6/19 7:37 PM, Julien Grall wrote:
> 
>>
>> Yes it would be sensible to try to implement a crossbar driver in Xen
>> and test with the UART. Looking at the driver in Linux, this should not
>> be too difficult.
> I don't understand why xen doesn't react on triple Ctrl+a. It probably
> means that UART's interrupts doesn't work. But I was able to type in
> u-boot so the uart should be already configured. Or not? Should I set up
> it in a crossbar first?
Xen is not able to deal with the crossbar. It means it cannot translate 
the interrupt and therefore cannot initialize the UART:

(XEN) omap-uart: Unable to retrieve the IRQ
(XEN) Unable to initialize dtuart: -22
(XEN) Bad console= option 'dtuart'

 From my understanding, even if you are able to translate it, you don't 
know how U-boot configured the crossbar. In other words, you don't know 
which GIC Interrupt ID was used for the UART. So, you still need to 
configure the crossbar in Xen.

>>
>>>>
>>
>> I don't think I ever suggested to not expose the crossbar to Dom0.
>> Instead, I suggested to virtualize for Dom0, so it can be used by Xen as
>> well.
>>
>>>>
>>>>> Also, the tegra
>>>>> implementation blacklist only a uart.
>>>>
>>>> I don't understand this.
>>> In here [1] you can find that only uart is blacklisted (in
>>> tegra_blacklist_dev[]). So, in tegra they didn't blacklist their version
>>> of the crossbar.
>>
>> This series has not been merged. In other word, the code is not yet
>> matching the expectations of the maintainers.
>>
>> I pointed you to this series, because I think some of the idea could be
>> re-used for implementing the crossbar.
>>
>> In this particular case, it has been suggested to use blacklist_dev
>> rather than unmapping (see [2]).
>>
> 
> Hm, I thought that idea behind the patch was that they unmap the control
> register and intercept the calls from Linux to that control register. At
> the same time they preserved the crossbar in the device tree. And, I
> thought that you wanted to demonstrate this exact thing.

I think unmapping something you just mapped is a gross hack. It would be 
best if this can be avoided.

Also, I am also not entirely convince we want to fully preserve the 
crossbar node in the DT. It will depend how the crossbar will be 
virtualized for Dom0.

 From my understanding, the crossbar is able to handle N irqs. For each 
irqs, there will be a corresponding register.

The simplest approach would be to expose exactly the same crossbar to 
Dom0 and trap all the access. Any access to registers associated to IRQs 
used by Xen would just be ignored. In this approach, we would probably 
want to update ti-irqs-skip/ti,irqs-reserved.

> Could you
> describe how in general the approach with blacklisting should work?

I didn't fully thought through so far.

On a second thought, this may not work correctly. We want to keep the 
crossbar node path the same to avoid issue with aliasing (see /aliases).

So probably the best would be to match the crossbar compatible and then 
alter anything we want. See how we deal with the GIC in make_gic_node.

In summary:
    1) A platform callback (maybe platform_specific_mapping) will hook 
the handlers for the crossbar
    2) handle_node is extended to catch the crossbar node. For now, , 
you could hack domain_build.c to match the callback. This allows you to 
focus on virtualizing the crossbar. We can discuss a better approach 
later on.

Cheers,

-- 
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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