Hi Jan,

On Tue, May 24, 2022 at 12:55 PM Lad, Prabhakar
<prabhakar.cse...@gmail.com> wrote:
>
> On Mon, May 23, 2022 at 4:13 PM Jan Kiszka <jan.kis...@siemens.com> wrote:
> >
> > On 23.05.22 15:55, Lad, Prabhakar wrote:
> > > Hi Jan,
> > >
> > > On Fri, May 20, 2022 at 7:08 AM Jan Kiszka <jan.kis...@siemens.com> wrote:
> > >>
> > >> On 19.05.22 15:23, Lad, Prabhakar wrote:
> > >>> Hi Jan,
> > >>>
> > >>> On Thu, May 19, 2022 at 12:39 PM Jan Kiszka <jan.kis...@siemens.com> 
> > >>> wrote:
> > >>>>
> > >>>> On 19.05.22 11:44, Lad, Prabhakar wrote:
> > >>>>> On Thu, May 19, 2022 at 6:30 AM Jan Kiszka <jan.kis...@siemens.com> 
> > >>>>> wrote:
> > >>>>>> Forgot: that cannot work. The call of arm_dcaches_flush will 
> > >>>>>> overwrite
> > >>>>>> lr, thus the second ret will only return to where the first ret 
> > >>>>>> jumped
> > >>>>>> to - endless loop. You would have to restore lr (x30) from x17 in
> > >>>>>> arch_entry first:
> > >>>>>>
> > >>>>>> mov x30, x17
> > >>>>>> ret
> > >>>>>>
> > >>>>> That did the trick thanks!
> > >>>>>
> > >>>>> diff --git a/hypervisor/arch/arm64/entry.S 
> > >>>>> b/hypervisor/arch/arm64/entry.S
> > >>>>> index a9cabf7f..7b340bd1 100644
> > >>>>> --- a/hypervisor/arch/arm64/entry.S
> > >>>>> +++ b/hypervisor/arch/arm64/entry.S
> > >>>>> @@ -109,6 +109,8 @@ arch_entry:
> > >>>>>         mov     x0, #LINUX_HVC_SET_VECTORS_LEGACY
> > >>>>>  1:
> > >>>>>         hvc     #0
> > >>>>> +       mov x30, x17
> > >>>>> +       ret
> > >>>>>
> > >>>>>         hvc     #0      /* bootstrap vectors enter EL2 at el2_entry */
> > >>>>>         b       .       /* we don't expect to return here */
> > >>>>>
> > >>>>>
> > >>>>> With the above diff I do get the below:
> > >>>>>
> > >>>>> [   42.980805] jailhouse: loading out-of-tree module taints kernel.
> > >>>>> Reading configuration set:
> > >>>>>   Root cell:     Renesas RZ/V2L SMARC (renesas-r9a07g054l2.cell)
> > >>>>> Overlapping memory regions inside cell: None
> > >>>>> Overlapping memory regions with hypervisor: None
> > >>>>> Missing resource interceptions for architecture arm64: None
> > >>>>> [   46.582588] obcode @arm_dcaches_flush: d53b0024
> > >>>>> [   46.582616] obcode @arm_dcaches_flush: d53b0024
> > >>>>> [   46.611311] The Jailhouse is opening.
> > >>>>>
> > >>>>> So it looks like something to do with the debug console. This has to
> > >>>>> be poked in the dark or any easy way to debug?
> > >>>>
> > >>>> Well, we do not yet know what goes wrong. We do know that we can call
> > >>>> into the hyp take-over stub and register Jailhouse with it. We do not
> > >>>> know if we will then end up in Jailhouse in hyp mode and just lack
> > >>>> console output or if we crash on entry already.
> > >>>>
> > >>> Right agreed.
> > >>>
> > >>>> To move the uart console out of the picture: Did you already check if
> > >>>> the driver you select in the Jailhouse config is actually one that
> > >>>> should support the UART on your board? Next is to double check if 
> > >>>> poking
> > >>> The UART on this platform is almost identical to
> > >>> JAILHOUSE_CON_TYPE_SCIFA type, but with some differences which I have
> > >>> patched to work on this platform.
> > >>>
> > >>>> registers in the way the Jailhouse driver will do at the addresses you
> > >>>> configured will work: Pull the code into the kernel module or even into
> > >>>> a userspace application with /dev/mem raw register access and try out 
> > >>>> if
> > >>>> that works in a "safe" environment (without hypervisor mode).
> > >>>>
> > >>> Sure will give that a shot, any pointers on doing this from userspace?
> > >>>
> > >>
> > >> Something like this may help if you do that the first time:
> > >> https://bakhi.github.io/devmem/
> > >>
> > > Thanks for the pointer.
> > > I have tried reading/writing from the hypervisor location and that
> > > goes all OK.
> >
> > Means, you were able to generate output on the UART. Hmm, would have
> > been too easy.
> >
> No I meant I was able to read/write into the hypervisor memory which
> is reserved in DTS.
>
> > > To avoid any issue related to debug UART is there any way
> > > I could test this prior to enabling?
> >
> > Not without extra measures: Without JAILHOUSE_BORROW_ROOT_PT, which
> > applies to arm64, the driver will not map the physical UART page. That
> > only happens in init_bootstrap_pt which is run after jumping to EL2. So,
> > we the jump goes wrong, you cannot find out where you are.
> >
> I see. Just to confirm it's not the debug UART the watchdog is enabled
> in Linux and I see the platform reboots after 60 seconds, which is
> hinting we are seeing a kernel freeze.
>
> Just a fyi I tried the queues/jailhouse branch from [0] and still
> seeing the same issue.
>
> > Do you have the chance to get hold of some jtag to find out where the
> > CPUs are?
> >

X0   FFFF00063F7ECD88  X16                 0  ^S+ ^Stack_________+
X1                  0  X17                 0
X2                  0  X18  FFFFFFFFFFFFFFFF
X3   FFFF8000112870E8  X19                80
X4   FFFF00063F7ECD80  X20  FFFF800011179000
X5   FFFF800011179A48  X21  FFFF80001130BE70
X6   FFFF80001101E000  X22  FFFF800010DFDED8
X7   FFFF800011179000  X23          86000004
X8   FFFF00063F7ECD80  X24  FFFF80001101CB38
X9                  0  X25  FFFF800011308000
X10          00040000  X26  FFFF80001130C000
X11                 0  X27  FFFF800011182A40
X12                 0  X28  FFFF800011182A40
X13  FFFFFFFFFFFE0000  X29  FFFF80001130BC40
X14  FFFF800011192008  X30  FFFF800010B3B464
X15  FFFF800011192048  PC   FFFF8000100D9F78
--------------------------------------------
CPSR     80000085   N N  I I  SS  _
EL1h                Z _  F _  IL  _
nsec                C _  A _
                    V _  D _
--------------------------------------------
Current ELx:           SP   FFFF80001130BC40
                       ELR                 0
                       SPSR         20000085
--------------------------------------------
EL0:                   EL1:
SP   FFFF800011182A40  SP   FFFF80001130BC40
                       ELR                 0
                       SPSR         20000085

EL2:                   EL3:
SP   0000FF0000011000  SP           4400A500
ELR  FFFF8000104CC8A8  ELR  0000FFFFC02064AC
SPSR         20000085  SPSR         200003C9
--------------------------------------------
SPSR_ABT            0  SPSR_SVC     20000085
SPSR_IRQ            0  SPSR_HYP     20000085
SPSR_FIQ            0
SPSR_UND            0  ELR_HYP      104CC8A8


Above is the CPU state, when the kernel freezes. Any hints on what
might have happened?

Cheers,
Prabhakar

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/CA%2BV-a8uA%2By-p5GmYavLpc6s1O-TJiRGSkpRHM4-dEA%3DXsqU_mA%40mail.gmail.com.

Reply via email to