[fedora-arm] Debugging our kernels under qemu + gdb

Richard W.M. Jones rjones at redhat.com
Sat May 12 10:12:35 UTC 2012


On Fri, May 11, 2012 at 01:41:43PM -0700, Brendan Conoboy wrote:
> On 05/11/2012 01:04 PM, Richard W.M. Jones wrote:
> >Has anyone tried to debug our Fedora/arm kernels under qemu-system-arm?
> >(In this case, the host is also arm, but I don't think that matters.)
> 
> Richard,
> 
> FYI, we as of a few hours ago have nearly-official F17-beta images
> for versatile express on the following page:
> 
> http://scotland.proximity.on.ca/arm-nightlies/
> 
> There's a link for vexpress and vexpress+x rootfs images.  A second
> link provides a kernel, initramfs, and script for starting qemu.
> Note that vexpress is much faster than versatile and allows more ram
> (1GB). Recommend you try this out!

So one issue appears to be lack of PCI support (according to Linaro's
notes: https://wiki.linaro.org/PeterMaydell/QemuVersatileExpress).

Unfortunately all of the virtio hardware is PCI-based, so it doesn't
seem like this is going to work for the virt tools :-(

Having said that, virtio with the current Fedora ARM kernels doesn't
work either (see below).  This appears to be a problem with qemu not
setting up the PCI config space sensibly.  I'm still investigating.

Rich.

[...]
[    2.360640] PCI core found (slot 11)
[    2.367644] PCI host bridge to bus 0000:00
[    2.371144] pci_bus 0000:00: root bus resource [io  0x44000000-0x4fffffff]
[    2.374066] pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff]
[    2.374751] pci_bus 0000:00: root bus resource [mem 0x60000000-0x6fffffff pref]
[    2.393315] PCI: bus0: Fast back to back transfers disabled
[    2.405189] PCI map irq: slot 0, pin 1, devslot 12, irq: 27
[    2.406686] PCI map irq: slot 0, pin 1, devslot 13, irq: 27
[    2.407285] PCI map irq: slot 0, pin 1, devslot 14, irq: 27
[    2.413989] pci 0000:00:0d.0: BAR 0: assigned [io  0x44000000-0x4400003f]
[    2.416204] pci 0000:00:0e.0: BAR 0: assigned [io  0x44000040-0x4400007f]
[    2.417221] pci 0000:00:0c.0: BAR 0: assigned [io  0x44000080-0x4400009f]
[    2.516011] bio: create slab <bio-0> at 0
[    2.538118] vgaarb: loaded
[    2.551547] SCSI subsystem initialized
[    2.566105] usbcore: registered new interface driver usbfs
[    2.568507] usbcore: registered new interface driver hub
[    2.573128] usbcore: registered new device driver usb
[    2.623191] NetLabel: Initializing
[    2.623702] NetLabel:  domain hash size = 128
[    2.624088] NetLabel:  protocols = UNLABELED CIPSOv4
[    2.631777] NetLabel:  unlabeled traffic allowed by default
[    2.646556] Switching to clocksource timer3
[    3.165976] NET: Registered protocol family 2
[    3.176617] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[    3.201008] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    3.203937] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[    3.206121] TCP: Hash tables configured (established 8192 bind 8192)
[    3.207154] TCP reno registered
[    3.208383] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    3.212231] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    3.224129] NET: Registered protocol family 1
[    3.252885] Unpacking initramfs...
[    3.363403] Freeing initrd memory: 764K
[    3.389097] audit: initializing netlink socket (disabled)
[    3.393720] type=2000 audit(1.860:1): initialized
[    4.616872] VFS: Disk quotas dquot_6.5.2
[    4.623368] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    4.671602] msgmni has been set to 492
[    4.782151] alg: No test for stdrng (krng)
[    4.783383] NET: Registered protocol family 38
[    4.792118] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    4.796706] io scheduler noop registered
[    4.797383] io scheduler deadline registered
[    4.800773] io scheduler cfq registered (default)
[    4.824787] PCI: enabling device 0000:00:0c.0 (0100 -> 0101)
[    4.829857] Unable to handle kernel paging request at virtual address 44000092
[    4.830565] pgd = c0004000
[    4.830912] [44000092] *pgd=00000000
[    4.833083] Internal error: Oops: 805 [#1]
[    4.834016] Modules linked in:
[    4.835742] CPU: 0    Not tainted  (3.3.4-4.fc17.armv7hl #1)
[    4.838653] PC is at vp_reset+0x14/0x64

  The code is:

  static void vp_reset(struct virtio_device *vdev)
  {
     struct virtio_pci_device *vp_dev = to_vp_device(vdev);
     /* 0 status means a reset. */
     iowrite8(0, vp_dev->ioaddr + VIRTIO_PCI_STATUS);  <<--- here
              // 0x44000080     + 0x12 == 0x44000092

[    4.840141] LR is at register_virtio_device+0x4c/0x94
[    4.841896] pc : [<c0230a08>]    lr : [<c022fa48>]    psr: 80000013
[    4.841996] sp : cf82feb0  ip : 00000000  fp : 00000000
[    4.845557] r10: c0649084  r9 : 00000000  r8 : 00000000
[    4.847277] r7 : cf889860  r6 : 00000000  r5 : cfa50608  r4 : cfa50600
[    4.849447] r3 : 44000080  r2 : 00000000  r1 : 0000002f  r0 : cfa50600
[    4.851825] Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[    4.854292] Control: 00093177  Table: 00004000  DAC: 00000017
[    4.856360] Process swapper (pid: 1, stack limit = 0xcf82e270)
[    4.858594] Stack: (0xcf82feb0 to 0xcf830000)
[    4.860942] fea0:                                     c02309f4 cfa50600 cfa50608 c022fa48
[    4.863691] fec0: 00000003 cfa50600 cf889800 c04277bc c04276bc cf889860 cf889800 c0648ff8
[    4.866636] fee0: c0648fc8 c02138e0 c0213850 cf889860 c0648ff8 c0648ff8 c0260014 00000000
[    4.869311] ff00: c05f51d8 c025fe98 c0648ff8 cf889860 cf889860 cf889894 c0648ff8 c0260084
[    4.872680] ff20: 00000000 cf82ff30 c0648ff8 c025e590 cf8264cc cf8960f0 c0648ff8 c0648ff8
[    4.875525] ff40: cfa4f7e0 c06488c8 c06488c8 c025f610 c0553c83 c0553c83 00000070 c0648ff8
[    4.878504] ff60: c0648ff8 c000f288 c06488c8 00000000 c05f51d8 c0260590 c0649030 c0648fc8
[    4.881452] ff80: c0648ff8 c000f288 c06488c8 00000000 c05f51d8 c0213ad0 cf82e000 c061e95c
[    4.884427] ffa0: c061eaec c000f288 00000013 c0008874 c05f51d8 c05539dc c0667460 00000000
[    4.887227] ffc0: c061e95c c061eaec c000f288 00000013 00000000 00000000 00000000 c05dc884
[    4.890246] ffe0: 00000000 00000000 00000000 00000000 c05dc7f0 c000f288 00000000 00000000
[    4.898225] [<c0230a08>] (vp_reset+0x14/0x64) from [<c022fa48>] (register_virtio_device+0x4c/0x94)
[    4.901667] [<c022fa48>] (register_virtio_device+0x4c/0x94) from [<c04277bc>] (virtio_pci_probe+0x100/0x168)
[    4.905157] [<c04277bc>] (virtio_pci_probe+0x100/0x168) from [<c02138e0>] (pci_device_probe+0x90/0x120)
[    4.909051] [<c02138e0>] (pci_device_probe+0x90/0x120) from [<c025fe98>] (driver_probe_device+0x148/0x2c4)
[    4.912494] [<c025fe98>] (driver_probe_device+0x148/0x2c4) from [<c0260084>] (__driver_attach+0x70/0x94)
[    4.915944] [<c0260084>] (__driver_attach+0x70/0x94) from [<c025e590>] (bus_for_each_dev+0x50/0x88)
[    4.919211] [<c025e590>] (bus_for_each_dev+0x50/0x88) from [<c025f610>] (bus_add_driver+0x108/0x278)
[    4.922554] [<c025f610>] (bus_add_driver+0x108/0x278) from [<c0260590>] (driver_register+0xa4/0x128)
[    4.925672] [<c0260590>] (driver_register+0xa4/0x128) from [<c0213ad0>] (__pci_register_driver+0x40/0xbc)
[    4.929041] [<c0213ad0>] (__pci_register_driver+0x40/0xbc) from [<c0008874>] (do_one_initcall+0x98/0x170)
[    4.932406] [<c0008874>] (do_one_initcall+0x98/0x170) from [<c05dc884>] (kernel_init+0x94/0x134)
[    4.935700] [<c05dc884>] (kernel_init+0x94/0x134) from [<c000f288>] (kernel_thread_exit+0x0/0x8)
[    4.939538] Code: e92d4000 e8bd4000 e5903184 e3a02000 (e5c32012) 
[    4.946406] ---[ end trace 0da3e76b87a358c1 ]---
[    4.950652] Kernel panic - not syncing: Attempted to kill init!



-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
New in Fedora 11: Fedora Windows cross-compiler. Compile Windows
programs, test, and build Windows installers. Over 70 libraries supprt'd
http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw


More information about the arm mailing list