On Mon, Oct 30, 2017 at 07:54:53AM +0100, Jan Kiszka wrote:
>On 2017-10-30 02:53, Peng Fan wrote:
>> Hi Jans,
>> 
>> Thanks for you reply.
>> 
>> On Fri, Oct 27, 2017 at 06:37:54PM +0200, Jan Kiszka wrote:
>>> On 2017-10-27 09:29, Peng Fan wrote:
>>>> Hi,
>>>>
>>>> I am bring up jailhouse hypervisor on i.MX8 and now gic-demo works, but 
>>>> when I trying non-root cell Linux, I came across a few questions.
>>>
>>> Nice. If that target happens to be a commonly available eval board,
>>> maybe you can share your configs.
>> 
>> Not ready now. The configs I wrote are at very early stage. After I
>> could pass a realy SD controller to non-root cell Linux, and if it still
>> not work, I'll post out the configs.
>
>Great, looking forward!
>
>> 
>>>
>>>>
>>>> To devices assigned to non-root cell Linux, where to configure 
>>>> clock,pinctrl,power domain?
>>>
>>> We do not have a proper support for partitioning those things, primarily
>>> as they are fairly SoC-specific. If you are lucky, you can partition
>>> some things along register boundaries. Otherwise, you need to make the
>>> root cell enable/tune what you need in the non-root cell and then freeze
>>> that state by taking control from the root cell.
>> 
>> Thanks for the info. I may need to use root cell to configure them.
>> 
>>>
>>>> Is Big.Little(A53+A72) supported?
>>>
>>> I didn't try, but I expect it work as long as all cores are exposed as
>>> if they were equal.
>> 
>> In my case A53 is the first cluster, A72 is in the second cluster. A72 runs
>> faster that A53, so when enabling jailhouse, A72 will first finish 
>> initializing jailhouse.
>
>Who is managing the cluster switch, Linux or something in firmware? In
>order to let Jailhouse do its work properly, all cores need to be
>enabled by it during setup, not just one cluster. IOW, all cores need to
>be seen by Linux as individual cores.

firmware handles cluster.
In my case it is
CPU 4 ... OK (A72)
CPU 5 ... OK (A72)
CPU 2 ... OK (A53)
CPU 3 ... OK (A53)
CPU 0 ... OK (A53)
CPU 1 ... OK (A53)

....

When A53 backing to Linux side, A53 reports parking CPU. Jtag shows stage1 - 
stage 2
MMU table corrupt.

If I use JTAG to let CPU 4/5 later than CPU0/1/2/3, no corrupt.

Since there is a small hardware issue now, I could not make sure 
software/hardware
issue. I'll continue debug.

>
>> But When A53 returns back to Linux, A53's stage1-stage2 translation seems 
>> failure. When
>> I use jtag to dump,mmu table is corrupt, then A53 reports "FATAL: forbidden 
>> access (exception class 0x20)".
>> 
>> If I use jtag to debug and let a53 first finishes initializing jailhouse, no 
>> exception,
>> A53 A72 both works. I have not try enabling non-root cell, the issues are 
>> met when
>> enabling root cell.
>> 
>> In hypervisor/arch/arm64/entry.S
>> There is " /* AARCH64_TODO: ARM architecture supports CPU clusters which 
>> could be", so
>> I am not sure whether big.little support are ready or not. I am still 
>> debugging.
>> 
>>>
>>>> In non-root cell Linux, I use same uart as root cell Linux, but when 
>>>> non-root cell Linux panic when non rootfs found, root cell console still 
>>>> work normally. So non-root cell linux are using phyiscal uart as console 
>>>> or not?
>>>
>>> That question I do not yet fully understand. Keep in mind that Jailhouse
>>> moderates access to resources like MMIO or interrupts, not to devices.
>>> In most cases, it has no clue if there is a particular device behind
>>> some accesses (one exception from that: GIC).
>>>
>>> When you assign the MMIO region(s) of a UART to two cells at the same
>>> time, you may see weird results with both cells access it
>>> simultaneously. Moreover, you cannot assign an interrupt to two cells at
>>> the same time. So one cell may become unhappy if it does not receive
>>> interrupts - or if it does but unexpectedly.
>> 
>> I'll try assigning the other uart for non-root cell Linux.
>> 
>>>
>>>>
>>>> Which kernel branch should I use? queues/jailhouse or 
>>>> queues/jailhouse-ivshmem2 at git.kiszka.org?p=linux.git;a=summary
>>>
>>> Stick with queues/jailhouse unless you are particularly interested in
>>> ivshmem-v2 (and also use the corresponding Jailhouse branch).
>> 
>> Thanks.
>> 
>>>
>>>>
>>>> Another question.
>>>> Is it possible to use an RTOS as root cell? or is this the correct 
>>>> direction? I think rtos will boot quickly then Linux, could be used in 
>>>> automotive Cluster and Linux in non-root cell for infortainment.
>>>
>>> That should be possibly, but no one implemented that so far (to my best
>>> knowledge). In fact, I chatted with folks about such scenarios at the
>>> Automotive Grade Linux meeting last week as well.
>> 
>> Do you have more information to share from your talk to AGL?
>> 
>
>You can find the slides here:
>https://schd.ws/hosted_files/aglammeu17/12/AGL-AMM-2017-JailhouseOnWheels.pdf

Thanks for the slide. Great to see IVI + bus gate way and IVI + Cluster usage.

>
>>>
>>> Which RTOS do you have in mind, a commercial one or some open source
>>> project?
>> 
>> I would like to use open source projects, such as RTEMS. But graphic support
>> is not that good. Also AArch64 support is not ready.
>> Do you have some recommendation except RTEMS? And if using rtos as root 
>> cell, do you have
>> some ideas how to proceed, seems jailhouse now heavily relys on Linux?
>
>I don't know which open source RTOS is already running well in AArch64
>mode. We were discussing Zephyr as potential boot loader for Jailhouse,
>but that is also only supporting 32-bit mode so far. It seems to gain
>x86-64 support soon, and that may open it up for AArch64 as well.

As far as I know, Zephyr is mainly for IoT usage and ARM Cortex-A is not
supported. I'll give a try on RTEMS first.

>
>Porting the root cell support from Linux over to an RTOS shouldn't be
>too hard. You first of all need to study the bootstrap process and make
>sure that RTOS is able to boot all cores and load the required images
>into memory. On ARM, you also need to provide a hypervisor stub like
>Linux does so that Jailhouse can take over EL2. During runtime, not much
>is needed except loading images again and issuing some hypercalls to
>control the non-root cells. If you leave out cell monitoring, sysfs, PCI
>device handling, the control driver should be rather simple.

Great thanks.

Thanks,
Peng.

>
>Jan
>
>-- 
>Siemens AG, Corporate Technology, CT RDA ITP SES-DE
>Corporate Competence Center Embedded Linux
>
>-- 
>You received this message because you are subscribed to the Google Groups 
>"Jailhouse" group.
>To unsubscribe from this group and stop receiving emails from it, send an 
>email to jailhouse-dev+unsubscr...@googlegroups.com.
>For more options, visit https://groups.google.com/d/optout.

-- 

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jailhouse-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to