Thanks Jan for your help. Now I have fixe the issue, the issue is from I mapped the whole DCSR space together, after removing it and adding some memeroy region of IPs, now I run jailhouse enable without any errors.
One more questions, do we need to map memory regions of all the IPs in SYSCONFIG? or only IPs to be used in cells? thanks again. Best Regards, Peter P. 在2020年10月28日星期三 UTC+8 下午6:43:10<[email protected]> 写道: > On 28.10.20 11:06, Peter pan wrote: > > Hello Jailhouse Community, > > > > I am trying to enable Jaihouse on NXP ls1046a platform which has four > > ARM A72 CPU Cores, but now the system hangs after I execute "jailhouse > > enable ls1046a.cell". > > > > root@localhost:~/jailhouse/jailhouse# jailhouse enable ls1046a.cell > > > > > > > > Initializing Jailhouse hypervisor v0.12 (73-gacdc9fcc-dirty) on CPU 2 > > > > Code location: 0x0000ffffc0200800 > > > > Page pool usage after early setup: mem 39/992, remap 0/131072 > > > > Initializing processors: > > > > CPU 2... OK > > > > CPU 0... OK > > > > CPU 1... OK > > > > CPU 3... OK > > > > Initializing unit: irqchip > > > > Initializing unit: ARM SMMU v3 > > > > Initializing unit: ARM SMMU > > > > No SMMU > > > > Initializing unit: PVU IOMMU > > > > Initializing unit: PCI > > > > Adding virtual PCI device 00:00.0 to cell "ls1046" > > > > Adding virtual PCI device 00:01.0 to cell "ls1046" > > > > Page pool usage after late setup: mem 62/992, remap 5/131072 > > > > Activating hypervisor > > > > WARN: unknown SGI received 5 > > > > WARN: unknown SGI received 5 > > > > //Linux hang here. > > > > After did some debuging, I found the issue is with the followng calling. > > > > on_each_cpu(enter_hypervisor, header, 0); > > > > The following is definition of on_each_cpu. > > > > 611 void on_each_cpu(void (*func) (void *info), void *info, int wait) > > > > 612 { > > > > 613 unsigned long flags; > > > > 614 > > > > 615 preempt_disable(); > > > > 616 smp_call_function(func, info, wait); > > > > 617 local_irq_save(flags); > > > > 618 func(info); > > > > //Can panic here if call panic("return from hypervisor\n"); > > > > 619 local_irq_restore(flags); > > > > //System hang and can't panic here if call panic("return from > > hypervisor\n"); > > > > 620 preempt_enable(); > > > > 621 } > > > > 622 EXPORT_SYMBOL(on_each_cpu); > > > > I found the system hangs just after execute local_irq_restore(flags), > > because the system can panic if I call panic() just before > > local_irq_restore(), but can't panic if add panic() just after > > local_irq_restore(). > > > > I attached ls1046a.c. > > > > I am a newbies of Jailhouse, how to debug such issue? any comments or > > suggestion is Welcome, thanks. > > > > Henning (in CC) did a lot of work on this platform, and IIRC one > particular tricky issue was when the GIC was accidentally passed through > rather than intercept (not mapped). That's probably worth to check again > in your config. > > Reminds me that we need to enhance "jailhouse config check" in this > regard... > > Jan > > -- > Siemens AG, T RDA IOT > 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jailhouse-dev/d66e8b2f-e499-40d2-8257-4d93597bfff9n%40googlegroups.com.
