[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