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

Re: [Xen-devel] Testing xen-arm on Arndale



On Thu, 28 Mar 2013, Sengul Thomas wrote:
> Thanks for the script. But, at the moment, I'm just hoping to see some
> booting messages poping out from console.
> When I try 'xl create <some conf> -c', rather than booting messages,
> following messages (attached the full log) pop out and domU dies.
> 
> (XEN) Guest data abort: Translation fault at level 1
> (XEN)     gva=40004000
> (XEN)     gpa=0000000040004000
> (XEN)     instruction syndrome invalid
> (XEN)     eat=0 cm=0 s1ptw=0 dfsc=5
> (XEN) dom14 IPA 0x0000000040004000
> (XEN) P2M @ 02ff9d40 mfn:0xbfcea
> (XEN) 1ST[0x1] = 0x0000000000000000
> (XEN) ----[ Xen-4.3-unstable  arm32  debug=y  Tainted:    C ]----
> (XEN) CPU:    0
> (XEN) PC:     80008338
> (XEN) CPSR:   800001d3 MODE:SVC
> (XEN)      R0: 40004000 R1: 00000c12 R2: 40008000 R3: 40004000
> (XEN)      R4: 40008000 R5: 00000000 R6: 0000000e R7: ffffffff
> (XEN)      R8: ffffffff R9: 40000000 R10:50000000 R11:10201105 R12:800080a8
> 
> After digging into domU Linux kernel, it turns out that someone tries
> to access 0x40004000 while uncompressing zImage.
> This is quite weird because, when I checked the page table setup for
> domU, it starts mapping from 0x80000000 and 0x40004000 address is not
> supposed to be accessed.
> Do you guys have any hint about this?
> 
> Additionally, it turns out that if we try to use Linux kernel 3.8.4
> (from https://www.kernel.org/), we do not see the above page-fault
> messages and we can see domU is running using xl as follows:

Julien,
do you know whether they need to use the Arndale Linux tree you posted
on the wiki or if a vanilla Linux kernel should be used as DomU kernel?
That's something worth writing down in the wiki page to avoid
confusion.


>     root@localhost:~# xl list
>     Name                                        ID   Mem VCPUs
> State    Time(s)
>     Domain-0                                     0   256     1
> r-----    2009.2
>     win                                          1   128     1
> ------    1898.6
> 
> Unfortunately, I'm not still seeing any booting messages:
> 
>     root@localhost:~# xl create xl.conf -c
>     Parsing config from xl.conf
>     Daemon running with PID 1802
>     <hangs here>
> 
> I'm running xenconsoled with the following command:
> 
>     root@localhost:~# xenconsoled --log=all
> 
> Then, I can see xenconsoled running in ps:
> 
>     root@localhost:~# ps ax | grep xenconsoled
>      1767 ?        SLl    0:00 xenconsoled --log=all
>      1839 pts/0    S+     0:00 grep --color=auto xenconsoled
> 
> I can see pid file is properly generated:
> 
>     root@localhost:~# cat /var/run/xenconsoled.pid
>     1767
> 
> Log file is created (but sadly, no log messages):
> 
>    root@localhost:~# ls /var/log/xen/console/* -l
>    -rw-r--r-- 1 root root 0 Mar 28 09:00 /var/log/xen/console/guest-win.log
>    -rw-r--r-- 1 root root 0 Mar 28 09:00 /var/log/xen/console/hypervisor.log
> 
> I guess we are almost right there launching domU, only a little bit
> more puzzle (I'm hoping) should be solved.
> Do you guys have any hints or tips for solving this puzzle?

You need to get more debug output to figure out where the guest is
stuck.
I suggest enabling:

CONFIG_DEBUG_LL
CONFIG_DEBUG_VEXPRESS_UART0_RS1
CONFIG_EARLY_PRINTK

in your kernel config, they should allow your guest to print some early
messages via Xen.
However these are vexpress specific debug tools, if they don't work
correctly on Arndale, you can try this hacky patch:

diff --git a/kernel/printk.c b/kernel/printk.c
index 0b31715..23ceeba 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -1674,10 +1674,12 @@ EXPORT_SYMBOL(printk_emit);
  *
  * See the vsnprintf() documentation for format string extensions over C99.
  */
+void xen_raw_console_write(const char *str);
 asmlinkage int printk(const char *fmt, ...)
 {
        va_list args;
        int r;
+       static char buf[512];
 
 #ifdef CONFIG_KGDB_KDB
        if (unlikely(kdb_trap_printk)) {
@@ -1688,8 +1690,9 @@ asmlinkage int printk(const char *fmt, ...)
        }
 #endif
        va_start(args, fmt);
-       r = vprintk_emit(0, -1, NULL, 0, fmt, args);
+       r = vsnprintf(buf, sizeof(buf), fmt, args);
        va_end(args);
+       xen_raw_console_write(buf);
 
        return r;
 }

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