* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge
@ 2009-10-29 8:36 Dieter Kiermaier
2009-10-29 8:35 ` Simon Kagstrom
2009-10-29 8:52 ` Daniel Mack
0 siblings, 2 replies; 15+ messages in thread
From: Dieter Kiermaier @ 2009-10-29 8:36 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
I've got a strange problem with latest git kernel. If I connect a PCIe->PCI bridge (without any connected PCI device!)
to my openrd-base board the kernel freezes during bootup if PCI is enabled:
Filename 'uImage_openrd'.
Load address: 0x800000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
############
done
Bytes transferred = 2390120 (247868 hex)
## Booting kernel from Legacy Image at 00800000 ...
Image Name: Linux-2.6.32-rc5-00081-g964fe08-
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2390056 Bytes = 2.3 MB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux............................................................................................................................................................ done.
The PCIe->PCI bridge is a Marvell 88SB2211 evaluation board and I expect it works well - at least it does in all other environments I've tested so far.
If I insert eg a PCIe Network card everything works fine.
With former marvell 2.6.22 stock kernel / u-boot kernel boots up and I can access PCI card connected after my bridge.
Please can someone help me to track this down?
Some tips how to debug such a problem using openocd are very welcome, too!
I'm completely lost in space :(
Many thanks,
Dieter
^ permalink raw reply [flat|nested] 15+ messages in thread* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 8:36 marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge Dieter Kiermaier @ 2009-10-29 8:35 ` Simon Kagstrom 2009-10-29 8:50 ` Dieter Kiermaier 2009-10-29 8:52 ` Daniel Mack 1 sibling, 1 reply; 15+ messages in thread From: Simon Kagstrom @ 2009-10-29 8:35 UTC (permalink / raw) To: linux-arm-kernel On Thu, 29 Oct 2009 10:36:40 +0200 Dieter Kiermaier <dk-arm-linux@gmx.de> wrote: > Uncompressing Linux............................................................................................................................................................ done. > > The PCIe->PCI bridge is a Marvell 88SB2211 evaluation board and I expect it works well - at least it does in all other environments I've tested so far. > Please can someone help me to track this down? > Some tips how to debug such a problem using openocd are very welcome, too! > I'm completely lost in space :( Try attaching gdb to it, i.e., arm-unknown-linux-gnu-gdb vmlinux and then connecting to openocd's GDB remote with target remote localhost:3333 After that you can backtrace and examine stuff as you normally do with GDB. Remeber to start with nohlt when you use GDB, but I guess you're already doing that. // Simon ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 8:35 ` Simon Kagstrom @ 2009-10-29 8:50 ` Dieter Kiermaier 0 siblings, 0 replies; 15+ messages in thread From: Dieter Kiermaier @ 2009-10-29 8:50 UTC (permalink / raw) To: linux-arm-kernel Am Donnerstag 29 Oktober 2009 09:35:10 schrieb Simon Kagstrom: Hi Simon, > On Thu, 29 Oct 2009 10:36:40 +0200 > Dieter Kiermaier <dk-arm-linux@gmx.de> wrote: > > > Uncompressing Linux............................................................................................................................................................ done. > > > > The PCIe->PCI bridge is a Marvell 88SB2211 evaluation board and I expect it works well - at least it does in all other environments I've tested so far. > > > Please can someone help me to track this down? > > Some tips how to debug such a problem using openocd are very welcome, too! > > I'm completely lost in space :( > > Try attaching gdb to it, i.e., > > arm-unknown-linux-gnu-gdb vmlinux > > and then connecting to openocd's GDB remote with > > target remote localhost:3333 > > After that you can backtrace and examine stuff as you normally do with > GDB. Remeber to start with nohlt when you use GDB, but I guess you're > already doing that. Yes I do. Ok, sometimes things are more easy than one could think off :) I've done what you told me: (gdb) target remote localhost:3333 Remote debugging using localhost:3333 warning: shared library handler failed to enable breakpoint __delay () at arch/arm/lib/delay.S:44 44 subs r0, r0, #1 Current language: auto; currently asm (gdb) bt #0 __delay () at arch/arm/lib/delay.S:44 #1 0xc003b1f4 in panic (fmt=0xdf834000 "\002") at kernel/panic.c:138 #2 0xc003e0fc in do_exit (code=-545054720) at kernel/exit.c:902 #3 0xc002a054 in die (str=0xc042fb58 "", regs=0xdf835e10, err=40) at arch/arm/kernel/traps.c:274 #4 0xc002a11c in arm_notify_die (str=0xc040dc94 "Attempted to kill init!", regs=0xdf835bbc, info=0xdf835d78, err=3221397788, trap=0) at arch/arm/kernel/traps.c:286 #5 0xc002634c in do_DataAbort (addr=4276361468, fsr=40, regs=0xdf835e10) at arch/arm/mm/fault.c:524 #6 0xc037440c in __dabt_svc () Backtrace stopped: frame did not save the PC (gdb) Could someone see the cause of my freeze? Dieter > > // Simon > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 8:36 marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge Dieter Kiermaier 2009-10-29 8:35 ` Simon Kagstrom @ 2009-10-29 8:52 ` Daniel Mack 2009-10-29 8:59 ` Simon Kagstrom 2009-10-29 9:14 ` Dieter Kiermaier 1 sibling, 2 replies; 15+ messages in thread From: Daniel Mack @ 2009-10-29 8:52 UTC (permalink / raw) To: linux-arm-kernel On Thu, Oct 29, 2009 at 10:36:40AM +0200, Dieter Kiermaier wrote: > ## Booting kernel from Legacy Image at 00800000 ... > Image Name: Linux-2.6.32-rc5-00081-g964fe08- > Image Type: ARM Linux Kernel Image (uncompressed) > Data Size: 2390056 Bytes = 2.3 MB > Load Address: 00008000 > Entry Point: 00008000 > Verifying Checksum ... OK > Loading Kernel Image ... OK > OK > > Starting kernel ... > > Uncompressing Linux............................................................................................................................................................ done. The problem most probably is that your kernel dies before the console is enabled, and hence you're not pointed to the actual problem. Try the patch below - printk() messages are not buffered but sent out directly to the lowlevel UART functions with this hack. CONFIG_DEBUG_LL must be enabled for this. Daniel diff --git a/kernel/printk.c b/kernel/printk.c index b4d97b5..7919751 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -686,6 +686,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) printed_len += vscnprintf(printk_buf + printed_len, sizeof(printk_buf) - printed_len, fmt, args); +{ extern void printascii(const char *); printascii(printk_buf); } p = printk_buf; ^ permalink raw reply related [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 8:52 ` Daniel Mack @ 2009-10-29 8:59 ` Simon Kagstrom 2009-10-29 9:14 ` Dieter Kiermaier 1 sibling, 0 replies; 15+ messages in thread From: Simon Kagstrom @ 2009-10-29 8:59 UTC (permalink / raw) To: linux-arm-kernel On Thu, 29 Oct 2009 09:52:36 +0100 Daniel Mack <daniel@caiaq.de> wrote: > On Thu, Oct 29, 2009 at 10:36:40AM +0200, Dieter Kiermaier wrote: > > ## Booting kernel from Legacy Image at 00800000 ... > > Image Name: Linux-2.6.32-rc5-00081-g964fe08- > > Image Type: ARM Linux Kernel Image (uncompressed) > > Data Size: 2390056 Bytes = 2.3 MB > > Load Address: 00008000 > > Entry Point: 00008000 > > Verifying Checksum ... OK > > Loading Kernel Image ... OK > > OK > > > > Starting kernel ... > > > > Uncompressing Linux............................................................................................................................................................ done. > > The problem most probably is that your kernel dies before the console is > enabled, and hence you're not pointed to the actual problem. And another thing: you can printout the buffer from U-boot by looking at __log_buf, i.e., [simkag at marrow kernel]$ nm vmlinux| grep __log_buf c03bde48 b __log_buf Just subtract 0xc0000000 from the address to get the physical address. So from U-boot: OpenRD>> md 0x3bde48 003bde48: 5b3e353c 20202020 30302e30 30303030 <5>[ 0.000000 003bde58: 694c205d 2078756e 73726576 206e6f69 ] Linux version 003bde68: 2e362e32 342e3133 69732820 67616b6d 2.6.31.4 (simkag 003bde78: 72616d40 29776f72 63672820 65762063 @marrow) (gcc ve 003bde88: 6f697372 2e34206e 20342e33 43434728 rsion 4.3.4 (GCC [...] // Simon ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 8:52 ` Daniel Mack 2009-10-29 8:59 ` Simon Kagstrom @ 2009-10-29 9:14 ` Dieter Kiermaier 2009-10-29 9:36 ` Dieter Kiermaier 1 sibling, 1 reply; 15+ messages in thread From: Dieter Kiermaier @ 2009-10-29 9:14 UTC (permalink / raw) To: linux-arm-kernel Am Donnerstag 29 Oktober 2009 09:52:36 schrieb Daniel Mack: Hi Daniel, > On Thu, Oct 29, 2009 at 10:36:40AM +0200, Dieter Kiermaier wrote: > > ## Booting kernel from Legacy Image at 00800000 ... > > Image Name: Linux-2.6.32-rc5-00081-g964fe08- > > Image Type: ARM Linux Kernel Image (uncompressed) > > Data Size: 2390056 Bytes = 2.3 MB > > Load Address: 00008000 > > Entry Point: 00008000 > > Verifying Checksum ... OK > > Loading Kernel Image ... OK > > OK > > > > Starting kernel ... > > > > Uncompressing Linux............................................................................................................................................................ done. > > The problem most probably is that your kernel dies before the console is > enabled, and hence you're not pointed to the actual problem. > > Try the patch below - printk() messages are not buffered but sent out > directly to the lowlevel UART functions with this hack. CONFIG_DEBUG_LL > must be enabled for this. I think your patch leads us to the root but I fear I don't know about PCI / Kernel programming to fix it :( Here is my start log: Hopefully someone can see what is going wrong? Starting kernel ... Uncompressing Linux............................................................................................................................................................ done. <5>Linux version 2.6.32-rc5-00081-g964fe08-dirty (dieter at dk1-linux) (gcc version 4.2.0 20070413 (prerelease)) #7 PREEMPT Thu Oct 29 10:05:02 CET 2009 CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053177 CPU: VIVT data cache, VIVT instruction cache Machine: Marvell OpenRD Base Board Memory policy: ECC disabled, Data cache writeback <7>On node 0 totalpages: 131072 <7>free_area_init_node: node 0, pgdat c04c5dec, node_mem_map c058d000 <7> Normal zone: 1024 pages used for memmap <7> Normal zone: 0 pages reserved <7> Normal zone: 130048 pages, LIFO batch:31 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 <5>Kernel command line: console=ttyS0,115200 mtdparts=nand_mtd:0x400000 at 0x100000(uImage),0x1fb00000 at 0x500000(rootfs) rw root=/dev/nfs rw nfsroot=192.168.2.251:/home/dieter/ArtistaNt <6>PID hash table entries: 2048 (order: 1, 8192 bytes) <6>Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) <6>Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) <6>Memory: 256MB 256MB = 512MB total <5>Memory: 513920KB available (4420K code, 961K data, 120K init, 0K highmem) <6>SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 <6>Hierarchical RCU implementation. <6>NR_IRQS:114 Console: colour dummy device 80x30 <6>Calibrating delay loop... <c>1199.30 BogoMIPS (lpj=5996544) Mount-cache hash table entries: 512 <6>CPU: Testing write buffer coherency: ok <6>NET: Registered protocol family 16 <6>Kirkwood: MV88F6281-A0, TCLK=200000000. <6>Feroceon L2: Cache support initialised. <7>initial MPP regs: 01111111 11113311 33331111 33103333 42222033 22244444 00000022 <7> final MPP regs: 01111111 11113311 33331111 33003333 42222033 22244444 00000022 <7>PCI: Scanning bus 0000:00 <7>pci 0000:00:00.0: found [11ab:6281] class 000580 header type 00 <7>pci 0000:00:00.0: reg 10 64bit mmio pref: [0xd0000000-0xd00fffff] <7>pci 0000:00:00.0: reg 18 32bit mmio: [0x000000-0x1fffffff] <7>pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x44 <7>pci 0000:00:00.0: calling rc_pci_fixup+0x0/0x40 <7>pci 0000:00:00.0: calling quirk_resource_alignment+0x0/0x19c <7>pci 0000:00:00.0: supports D1 D2 <7>pci 0000:00:01.0: found [11ab:2211] class 000604 header type 01 <7>pci 0000:00:01.0: calling pci_fixup_ide_bases+0x0/0x44 <7>pci 0000:00:01.0: calling rc_pci_fixup+0x0/0x40 <7>pci 0000:00:01.0: calling quirk_resource_alignment+0x0/0x19c <7>pci 0000:00:01.0: supports D1 D2 <6>pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot D3cold <6>pci 0000:00:01.0: PME# disabled <7>PCI: Fixups for bus 0000:00 <6>PCI: bus0: Fast back to back transfers disabled <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 0 <7>pci 0000:00:01.0: bus configuration invalid, reconfiguring <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 1 <7>PCI: Scanning bus 0000:01 <1>Unhandled fault: external abort on non-linefetch (0x028) at 0xfee418fc <0>Internal error: : 28 [#1] PREEMPT <0>last sysfs file: <d>Modules linked in: CPU: 0 Not tainted (2.6.32-rc5-00081-g964fe08-dirty #7) PC is at orion_pcie_rd_conf+0x48/0x98 LR is at 0x0 pc : [<c002fc10>] lr : [<00000000>] psr: 20000093 sp : df835e58 ip : 00000004 fp : 00000000 r10: df835e94 r9 : 00000000 r8 : 00000000 r7 : 00000000 r6 : 00000004 r5 : df81b800 r4 : 00000000 r3 : 000018fc r2 : 00000000 r1 : 80010000 r0 : fee40000 Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 0005317f Table: 00004000 DAC: 00000017 <0>Process swapper (pid: 1, stack limit = 0xdf834270) <0>Stack: (0xdf835e58 to 0xdf836000) <0>5e40: 20000093 c002f944 <0>5e60: 00000004 df835e94 0000000f 60000013 df81b800 df835eb4 df81b800 00000000 <0>5e80: 00000000 c01c1e90 df835e94 00000000 00000000 00000000 df835eb4 00000000 <0>5ea0: df81b800 c036c7e0 c049f634 df81b800 00000000 00000001 df81b800 00000008 <0>5ec0: 00000000 df81b800 df81b600 00000000 00000000 c01c3d74 60000013 df81b800 <0>5ee0: 00000008 00000001 00000001 c036ded8 df830800 df81b800 00000000 00000001 <0>5f00: df81b600 c036dd48 00000001 00000000 c040abbc c040abbc 00ff0100 00219f00 <0>5f20: 00000000 df81b600 df830800 00000000 00000001 df81b614 00000000 c04c9f00 <0>5f40: 00000000 c036df48 df81b600 00000001 c0022198 df834000 00000040 c036dfa8 <0>5f60: df807b00 c000c638 df807b00 c000a3ac c0009a4c c01f0e94 df8007c0 c00205e0 <0>5f80: c00209bc 00000000 00000000 00000000 00000000 c04c9f00 c000cbfc c000cc1c <0>5fa0: c001a7c8 c00263b8 df835fb6 c006f770 df809ae0 00000001 00000033 00000000 <0>5fc0: 00000000 c00205e0 c00209bc 00000000 00000000 00000000 00000000 00000000 <0>5fe0: 00000000 c000888c 00000000 00000000 00000000 c00273dc ffff0000 ffff0000 [<c002fc10>] (orion_pcie_rd_conf+0x48/0x98) from [<c002f944>] (pcie_rd_conf+0x7c/0xb8) [<c002f944>] (pcie_rd_conf+0x7c/0xb8) from [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) from [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) from [<c01c3d74>] (pci_scan_slot+0x14/0x7c) [<c01c3d74>] (pci_scan_slot+0x14/0x7c) from [<c036ded8>] (pci_scan_child_bus+0x30/0xec) [<c036ded8>] (pci_scan_child_bus+0x30/0xec) from [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) from [<c036df48>] (pci_scan_child_bus+0xa0/0xec) [<c036df48>] (pci_scan_child_bus+0xa0/0xec) from [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) from [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) from [<c000a3ac>] (pci_common_init+0x120/0x20c) [<c000a3ac>] (pci_common_init+0x120/0x20c) from [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) from [<c00263b8>] (do_one_initcall+0x58/0x1a4) [<c00263b8>] (do_one_initcall+0x58/0x1a4) from [<c000888c>] (kernel_init+0x90/0x104) [<c000888c>] (kernel_init+0x90/0x104) from [<c00273dc>] (kernel_thread_exit+0x0/0x8) <0>Code: e59f3054 e7801003 e2833004 e59dc008 (e7902003) <4>---[ end trace 1b75b31a2719ed1c ]--- <6>note: swapper[1] exited with preempt_count 3 <0>Kernel panic - not syncing: Attempted to kill init! [<c002b96c>] (unwind_backtrace+0x0/0xd8) from [<c003b140>] (panic+0x58/0x12c) [<c003b140>] (panic+0x58/0x12c) from [<c003e104>] (do_exit+0x64/0x6d0) [<c003e104>] (do_exit+0x64/0x6d0) from [<c002a054>] (die+0x174/0x198) [<c002a054>] (die+0x174/0x198) from [<c002a11c>] (dump_stack+0x0/0xc) > > Daniel > > > diff --git a/kernel/printk.c b/kernel/printk.c > index b4d97b5..7919751 100644 > --- a/kernel/printk.c > +++ b/kernel/printk.c > @@ -686,6 +686,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) > printed_len += vscnprintf(printk_buf + printed_len, > sizeof(printk_buf) - printed_len, fmt, args); > > +{ extern void printascii(const char *); printascii(printk_buf); } > > p = printk_buf; > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 9:14 ` Dieter Kiermaier @ 2009-10-29 9:36 ` Dieter Kiermaier 2009-10-29 10:33 ` Ronen Shitrit 0 siblings, 1 reply; 15+ messages in thread From: Dieter Kiermaier @ 2009-10-29 9:36 UTC (permalink / raw) To: linux-arm-kernel Maybe helpful additional information: It makes no difference if I connect a PCI device behind my bridge or not. The trace is exactly the same. Dieter > Am Donnerstag 29 Oktober 2009 09:52:36 schrieb Daniel Mack: > Hi Daniel, > > > > On Thu, Oct 29, 2009 at 10:36:40AM +0200, Dieter Kiermaier wrote: > > > ## Booting kernel from Legacy Image at 00800000 ... > > > Image Name: Linux-2.6.32-rc5-00081-g964fe08- > > > Image Type: ARM Linux Kernel Image (uncompressed) > > > Data Size: 2390056 Bytes = 2.3 MB > > > Load Address: 00008000 > > > Entry Point: 00008000 > > > Verifying Checksum ... OK > > > Loading Kernel Image ... OK > > > OK > > > > > > Starting kernel ... > > > > > > Uncompressing Linux............................................................................................................................................................ done. > > > > The problem most probably is that your kernel dies before the console is > > enabled, and hence you're not pointed to the actual problem. > > > > Try the patch below - printk() messages are not buffered but sent out > > directly to the lowlevel UART functions with this hack. CONFIG_DEBUG_LL > > must be enabled for this. > > I think your patch leads us to the root but I fear I don't know about PCI / Kernel programming to fix it :( > Here is my start log: > > Hopefully someone can see what is going wrong? > > Starting kernel ... > > Uncompressing Linux............................................................................................................................................................ done. > <5>Linux version 2.6.32-rc5-00081-g964fe08-dirty (dieter at dk1-linux) (gcc version 4.2.0 20070413 (prerelease)) #7 PREEMPT Thu Oct 29 10:05:02 CET 2009 > CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053177 > CPU: VIVT data cache, VIVT instruction cache > Machine: Marvell OpenRD Base Board > Memory policy: ECC disabled, Data cache writeback > <7>On node 0 totalpages: 131072 > <7>free_area_init_node: node 0, pgdat c04c5dec, node_mem_map c058d000 > <7> Normal zone: 1024 pages used for memmap > <7> Normal zone: 0 pages reserved > <7> Normal zone: 130048 pages, LIFO batch:31 > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 > <5>Kernel command line: console=ttyS0,115200 mtdparts=nand_mtd:0x400000 at 0x100000(uImage),0x1fb00000 at 0x500000(rootfs) rw root=/dev/nfs rw nfsroot=192.168.2.251:/home/dieter/ArtistaNt > <6>PID hash table entries: 2048 (order: 1, 8192 bytes) > <6>Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) > <6>Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) > <6>Memory: 256MB 256MB = 512MB total > <5>Memory: 513920KB available (4420K code, 961K data, 120K init, 0K highmem) > <6>SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > <6>Hierarchical RCU implementation. > <6>NR_IRQS:114 > Console: colour dummy device 80x30 > <6>Calibrating delay loop... <c>1199.30 BogoMIPS (lpj=5996544) > Mount-cache hash table entries: 512 > <6>CPU: Testing write buffer coherency: ok > <6>NET: Registered protocol family 16 > <6>Kirkwood: MV88F6281-A0, TCLK=200000000. > <6>Feroceon L2: Cache support initialised. > <7>initial MPP regs: 01111111 11113311 33331111 33103333 42222033 22244444 00000022 > <7> final MPP regs: 01111111 11113311 33331111 33003333 42222033 22244444 00000022 > <7>PCI: Scanning bus 0000:00 > <7>pci 0000:00:00.0: found [11ab:6281] class 000580 header type 00 > <7>pci 0000:00:00.0: reg 10 64bit mmio pref: [0xd0000000-0xd00fffff] > <7>pci 0000:00:00.0: reg 18 32bit mmio: [0x000000-0x1fffffff] > <7>pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x44 > <7>pci 0000:00:00.0: calling rc_pci_fixup+0x0/0x40 > <7>pci 0000:00:00.0: calling quirk_resource_alignment+0x0/0x19c > <7>pci 0000:00:00.0: supports D1 D2 > <7>pci 0000:00:01.0: found [11ab:2211] class 000604 header type 01 > <7>pci 0000:00:01.0: calling pci_fixup_ide_bases+0x0/0x44 > <7>pci 0000:00:01.0: calling rc_pci_fixup+0x0/0x40 > <7>pci 0000:00:01.0: calling quirk_resource_alignment+0x0/0x19c > <7>pci 0000:00:01.0: supports D1 D2 > <6>pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot D3cold > <6>pci 0000:00:01.0: PME# disabled > <7>PCI: Fixups for bus 0000:00 > <6>PCI: bus0: Fast back to back transfers disabled > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 0 > <7>pci 0000:00:01.0: bus configuration invalid, reconfiguring > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 1 > <7>PCI: Scanning bus 0000:01 > <1>Unhandled fault: external abort on non-linefetch (0x028) at 0xfee418fc > <0>Internal error: : 28 [#1] PREEMPT > <0>last sysfs file: > <d>Modules linked in: > CPU: 0 Not tainted (2.6.32-rc5-00081-g964fe08-dirty #7) > PC is at orion_pcie_rd_conf+0x48/0x98 > LR is at 0x0 > pc : [<c002fc10>] lr : [<00000000>] psr: 20000093 > sp : df835e58 ip : 00000004 fp : 00000000 > r10: df835e94 r9 : 00000000 r8 : 00000000 > r7 : 00000000 r6 : 00000004 r5 : df81b800 r4 : 00000000 > r3 : 000018fc r2 : 00000000 r1 : 80010000 r0 : fee40000 > Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel > Control: 0005317f Table: 00004000 DAC: 00000017 > <0>Process swapper (pid: 1, stack limit = 0xdf834270) > <0>Stack: (0xdf835e58 to 0xdf836000) > <0>5e40: 20000093 c002f944 > <0>5e60: 00000004 df835e94 0000000f 60000013 df81b800 df835eb4 df81b800 00000000 > <0>5e80: 00000000 c01c1e90 df835e94 00000000 00000000 00000000 df835eb4 00000000 > <0>5ea0: df81b800 c036c7e0 c049f634 df81b800 00000000 00000001 df81b800 00000008 > <0>5ec0: 00000000 df81b800 df81b600 00000000 00000000 c01c3d74 60000013 df81b800 > <0>5ee0: 00000008 00000001 00000001 c036ded8 df830800 df81b800 00000000 00000001 > <0>5f00: df81b600 c036dd48 00000001 00000000 c040abbc c040abbc 00ff0100 00219f00 > <0>5f20: 00000000 df81b600 df830800 00000000 00000001 df81b614 00000000 c04c9f00 > <0>5f40: 00000000 c036df48 df81b600 00000001 c0022198 df834000 00000040 c036dfa8 > <0>5f60: df807b00 c000c638 df807b00 c000a3ac c0009a4c c01f0e94 df8007c0 c00205e0 > <0>5f80: c00209bc 00000000 00000000 00000000 00000000 c04c9f00 c000cbfc c000cc1c > <0>5fa0: c001a7c8 c00263b8 df835fb6 c006f770 df809ae0 00000001 00000033 00000000 > <0>5fc0: 00000000 c00205e0 c00209bc 00000000 00000000 00000000 00000000 00000000 > <0>5fe0: 00000000 c000888c 00000000 00000000 00000000 c00273dc ffff0000 ffff0000 > [<c002fc10>] (orion_pcie_rd_conf+0x48/0x98) from [<c002f944>] (pcie_rd_conf+0x7c/0xb8) > [<c002f944>] (pcie_rd_conf+0x7c/0xb8) from [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) > [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) from [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) > [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) from [<c01c3d74>] (pci_scan_slot+0x14/0x7c) > [<c01c3d74>] (pci_scan_slot+0x14/0x7c) from [<c036ded8>] (pci_scan_child_bus+0x30/0xec) > [<c036ded8>] (pci_scan_child_bus+0x30/0xec) from [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) > [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) from [<c036df48>] (pci_scan_child_bus+0xa0/0xec) > [<c036df48>] (pci_scan_child_bus+0xa0/0xec) from [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) > [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) from [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) > [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) from [<c000a3ac>] (pci_common_init+0x120/0x20c) > [<c000a3ac>] (pci_common_init+0x120/0x20c) from [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) > [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) from [<c00263b8>] (do_one_initcall+0x58/0x1a4) > [<c00263b8>] (do_one_initcall+0x58/0x1a4) from [<c000888c>] (kernel_init+0x90/0x104) > [<c000888c>] (kernel_init+0x90/0x104) from [<c00273dc>] (kernel_thread_exit+0x0/0x8) > <0>Code: e59f3054 e7801003 e2833004 e59dc008 (e7902003) > <4>---[ end trace 1b75b31a2719ed1c ]--- > <6>note: swapper[1] exited with preempt_count 3 > <0>Kernel panic - not syncing: Attempted to kill init! > [<c002b96c>] (unwind_backtrace+0x0/0xd8) from [<c003b140>] (panic+0x58/0x12c) > [<c003b140>] (panic+0x58/0x12c) from [<c003e104>] (do_exit+0x64/0x6d0) > [<c003e104>] (do_exit+0x64/0x6d0) from [<c002a054>] (die+0x174/0x198) > [<c002a054>] (die+0x174/0x198) from [<c002a11c>] (dump_stack+0x0/0xc) > > > > > > > Daniel > > > > > > diff --git a/kernel/printk.c b/kernel/printk.c > > index b4d97b5..7919751 100644 > > --- a/kernel/printk.c > > +++ b/kernel/printk.c > > @@ -686,6 +686,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) > > printed_len += vscnprintf(printk_buf + printed_len, > > sizeof(printk_buf) - printed_len, fmt, args); > > > > +{ extern void printascii(const char *); printascii(printk_buf); } > > > > p = printk_buf; > > > > > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 9:36 ` Dieter Kiermaier @ 2009-10-29 10:33 ` Ronen Shitrit 2009-10-29 10:57 ` Dieter Kiermaier 0 siblings, 1 reply; 15+ messages in thread From: Ronen Shitrit @ 2009-10-29 10:33 UTC (permalink / raw) To: linux-arm-kernel Can u pls place a breakpoint before scanning the pcie and read register 0x20100. If bit 2 is set, try to unset it and continue. When u scan the PCI u probably get master abort error on a device which isnt found, according to bit 2 above this "Error indications" is propagated to the Mbus-L and will cause external abort. Regards -----Original Message----- From: linux-arm-kernel-bounces@lists.infradead.org [mailto:linux-arm-kernel-bounces at lists.infradead.org] On Behalf Of Dieter Kiermaier Sent: Thursday, October 29, 2009 11:37 AM To: linux-arm-kernel at lists.infradead.org Cc: Nicolas Pitre; openrd at googlegroups.com; Daniel Mack; Nicolas Pitre Subject: Re: marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge Maybe helpful additional information: It makes no difference if I connect a PCI device behind my bridge or not. The trace is exactly the same. Dieter > Am Donnerstag 29 Oktober 2009 09:52:36 schrieb Daniel Mack: > Hi Daniel, > > > > On Thu, Oct 29, 2009 at 10:36:40AM +0200, Dieter Kiermaier wrote: > > > ## Booting kernel from Legacy Image at 00800000 ... > > > Image Name: Linux-2.6.32-rc5-00081-g964fe08- > > > Image Type: ARM Linux Kernel Image (uncompressed) > > > Data Size: 2390056 Bytes = 2.3 MB > > > Load Address: 00008000 > > > Entry Point: 00008000 > > > Verifying Checksum ... OK > > > Loading Kernel Image ... OK > > > OK > > > > > > Starting kernel ... > > > > > > Uncompressing Linux............................................................................................................................................................ done. > > > > The problem most probably is that your kernel dies before the console is > > enabled, and hence you're not pointed to the actual problem. > > > > Try the patch below - printk() messages are not buffered but sent out > > directly to the lowlevel UART functions with this hack. CONFIG_DEBUG_LL > > must be enabled for this. > > I think your patch leads us to the root but I fear I don't know about PCI / Kernel programming to fix it :( > Here is my start log: > > Hopefully someone can see what is going wrong? > > Starting kernel ... > > Uncompressing Linux............................................................................................................................................................ done. > <5>Linux version 2.6.32-rc5-00081-g964fe08-dirty (dieter at dk1-linux) (gcc version 4.2.0 20070413 (prerelease)) #7 PREEMPT Thu Oct 29 10:05:02 CET 2009 > CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053177 > CPU: VIVT data cache, VIVT instruction cache > Machine: Marvell OpenRD Base Board > Memory policy: ECC disabled, Data cache writeback > <7>On node 0 totalpages: 131072 > <7>free_area_init_node: node 0, pgdat c04c5dec, node_mem_map c058d000 > <7> Normal zone: 1024 pages used for memmap > <7> Normal zone: 0 pages reserved > <7> Normal zone: 130048 pages, LIFO batch:31 > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 > <5>Kernel command line: console=ttyS0,115200 mtdparts=nand_mtd:0x400000 at 0x100000(uImage),0x1fb00000 at 0x500000(rootfs) rw root=/dev/nfs rw nfsroot=192.168.2.251:/home/dieter/ArtistaNt > <6>PID hash table entries: 2048 (order: 1, 8192 bytes) > <6>Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) > <6>Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) > <6>Memory: 256MB 256MB = 512MB total > <5>Memory: 513920KB available (4420K code, 961K data, 120K init, 0K highmem) > <6>SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > <6>Hierarchical RCU implementation. > <6>NR_IRQS:114 > Console: colour dummy device 80x30 > <6>Calibrating delay loop... <c>1199.30 BogoMIPS (lpj=5996544) > Mount-cache hash table entries: 512 > <6>CPU: Testing write buffer coherency: ok > <6>NET: Registered protocol family 16 > <6>Kirkwood: MV88F6281-A0, TCLK=200000000. > <6>Feroceon L2: Cache support initialised. > <7>initial MPP regs: 01111111 11113311 33331111 33103333 42222033 22244444 00000022 > <7> final MPP regs: 01111111 11113311 33331111 33003333 42222033 22244444 00000022 > <7>PCI: Scanning bus 0000:00 > <7>pci 0000:00:00.0: found [11ab:6281] class 000580 header type 00 > <7>pci 0000:00:00.0: reg 10 64bit mmio pref: [0xd0000000-0xd00fffff] > <7>pci 0000:00:00.0: reg 18 32bit mmio: [0x000000-0x1fffffff] > <7>pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x44 > <7>pci 0000:00:00.0: calling rc_pci_fixup+0x0/0x40 > <7>pci 0000:00:00.0: calling quirk_resource_alignment+0x0/0x19c > <7>pci 0000:00:00.0: supports D1 D2 > <7>pci 0000:00:01.0: found [11ab:2211] class 000604 header type 01 > <7>pci 0000:00:01.0: calling pci_fixup_ide_bases+0x0/0x44 > <7>pci 0000:00:01.0: calling rc_pci_fixup+0x0/0x40 > <7>pci 0000:00:01.0: calling quirk_resource_alignment+0x0/0x19c > <7>pci 0000:00:01.0: supports D1 D2 > <6>pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot D3cold > <6>pci 0000:00:01.0: PME# disabled > <7>PCI: Fixups for bus 0000:00 > <6>PCI: bus0: Fast back to back transfers disabled > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 0 > <7>pci 0000:00:01.0: bus configuration invalid, reconfiguring > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 1 > <7>PCI: Scanning bus 0000:01 > <1>Unhandled fault: external abort on non-linefetch (0x028) at 0xfee418fc > <0>Internal error: : 28 [#1] PREEMPT > <0>last sysfs file: > <d>Modules linked in: > CPU: 0 Not tainted (2.6.32-rc5-00081-g964fe08-dirty #7) > PC is at orion_pcie_rd_conf+0x48/0x98 > LR is at 0x0 > pc : [<c002fc10>] lr : [<00000000>] psr: 20000093 > sp : df835e58 ip : 00000004 fp : 00000000 > r10: df835e94 r9 : 00000000 r8 : 00000000 > r7 : 00000000 r6 : 00000004 r5 : df81b800 r4 : 00000000 > r3 : 000018fc r2 : 00000000 r1 : 80010000 r0 : fee40000 > Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel > Control: 0005317f Table: 00004000 DAC: 00000017 > <0>Process swapper (pid: 1, stack limit = 0xdf834270) > <0>Stack: (0xdf835e58 to 0xdf836000) > <0>5e40: 20000093 c002f944 > <0>5e60: 00000004 df835e94 0000000f 60000013 df81b800 df835eb4 df81b800 00000000 > <0>5e80: 00000000 c01c1e90 df835e94 00000000 00000000 00000000 df835eb4 00000000 > <0>5ea0: df81b800 c036c7e0 c049f634 df81b800 00000000 00000001 df81b800 00000008 > <0>5ec0: 00000000 df81b800 df81b600 00000000 00000000 c01c3d74 60000013 df81b800 > <0>5ee0: 00000008 00000001 00000001 c036ded8 df830800 df81b800 00000000 00000001 > <0>5f00: df81b600 c036dd48 00000001 00000000 c040abbc c040abbc 00ff0100 00219f00 > <0>5f20: 00000000 df81b600 df830800 00000000 00000001 df81b614 00000000 c04c9f00 > <0>5f40: 00000000 c036df48 df81b600 00000001 c0022198 df834000 00000040 c036dfa8 > <0>5f60: df807b00 c000c638 df807b00 c000a3ac c0009a4c c01f0e94 df8007c0 c00205e0 > <0>5f80: c00209bc 00000000 00000000 00000000 00000000 c04c9f00 c000cbfc c000cc1c > <0>5fa0: c001a7c8 c00263b8 df835fb6 c006f770 df809ae0 00000001 00000033 00000000 > <0>5fc0: 00000000 c00205e0 c00209bc 00000000 00000000 00000000 00000000 00000000 > <0>5fe0: 00000000 c000888c 00000000 00000000 00000000 c00273dc ffff0000 ffff0000 > [<c002fc10>] (orion_pcie_rd_conf+0x48/0x98) from [<c002f944>] (pcie_rd_conf+0x7c/0xb8) > [<c002f944>] (pcie_rd_conf+0x7c/0xb8) from [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) > [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) from [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) > [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) from [<c01c3d74>] (pci_scan_slot+0x14/0x7c) > [<c01c3d74>] (pci_scan_slot+0x14/0x7c) from [<c036ded8>] (pci_scan_child_bus+0x30/0xec) > [<c036ded8>] (pci_scan_child_bus+0x30/0xec) from [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) > [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) from [<c036df48>] (pci_scan_child_bus+0xa0/0xec) > [<c036df48>] (pci_scan_child_bus+0xa0/0xec) from [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) > [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) from [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) > [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) from [<c000a3ac>] (pci_common_init+0x120/0x20c) > [<c000a3ac>] (pci_common_init+0x120/0x20c) from [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) > [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) from [<c00263b8>] (do_one_initcall+0x58/0x1a4) > [<c00263b8>] (do_one_initcall+0x58/0x1a4) from [<c000888c>] (kernel_init+0x90/0x104) > [<c000888c>] (kernel_init+0x90/0x104) from [<c00273dc>] (kernel_thread_exit+0x0/0x8) > <0>Code: e59f3054 e7801003 e2833004 e59dc008 (e7902003) > <4>---[ end trace 1b75b31a2719ed1c ]--- > <6>note: swapper[1] exited with preempt_count 3 > <0>Kernel panic - not syncing: Attempted to kill init! > [<c002b96c>] (unwind_backtrace+0x0/0xd8) from [<c003b140>] (panic+0x58/0x12c) > [<c003b140>] (panic+0x58/0x12c) from [<c003e104>] (do_exit+0x64/0x6d0) > [<c003e104>] (do_exit+0x64/0x6d0) from [<c002a054>] (die+0x174/0x198) > [<c002a054>] (die+0x174/0x198) from [<c002a11c>] (dump_stack+0x0/0xc) > > > > > > > Daniel > > > > > > diff --git a/kernel/printk.c b/kernel/printk.c > > index b4d97b5..7919751 100644 > > --- a/kernel/printk.c > > +++ b/kernel/printk.c > > @@ -686,6 +686,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) > > printed_len += vscnprintf(printk_buf + printed_len, > > sizeof(printk_buf) - printed_len, fmt, args); > > > > +{ extern void printascii(const char *); printascii(printk_buf); } > > > > p = printk_buf; > > > > > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel at lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 10:33 ` Ronen Shitrit @ 2009-10-29 10:57 ` Dieter Kiermaier 2009-10-29 11:33 ` Ronen Shitrit 0 siblings, 1 reply; 15+ messages in thread From: Dieter Kiermaier @ 2009-10-29 10:57 UTC (permalink / raw) To: linux-arm-kernel Am Donnerstag 29 Oktober 2009 11:33:41 schrieb Ronen Shitrit: > Can u pls place a breakpoint before scanning the pcie and read register 0x20100. > If bit 2 is set, try to unset it and continue. > > When u scan the PCI u probably get master abort error on a device which isnt found, according to bit 2 above this "Error indications" is propagated to the Mbus-L and will cause external abort. > Hi Ronen, sorry for the stupid question but it's the first time i debug the kernel ;) How do I place a breakpoint? Can I run the kernel directly from the openocd debugger, without running it from u-boot? > Regards > > -----Original Message----- > From: linux-arm-kernel-bounces at lists.infradead.org [mailto:linux-arm-kernel-bounces at lists.infradead.org] On Behalf Of Dieter Kiermaier > Sent: Thursday, October 29, 2009 11:37 AM > To: linux-arm-kernel at lists.infradead.org > Cc: Nicolas Pitre; openrd at googlegroups.com; Daniel Mack; Nicolas Pitre > Subject: Re: marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge > > > Maybe helpful additional information: > It makes no difference if I connect a PCI device behind my bridge or not. > The trace is exactly the same. > > Dieter > > > Am Donnerstag 29 Oktober 2009 09:52:36 schrieb Daniel Mack: > > Hi Daniel, > > > > > > > On Thu, Oct 29, 2009 at 10:36:40AM +0200, Dieter Kiermaier wrote: > > > > ## Booting kernel from Legacy Image at 00800000 ... > > > > Image Name: Linux-2.6.32-rc5-00081-g964fe08- > > > > Image Type: ARM Linux Kernel Image (uncompressed) > > > > Data Size: 2390056 Bytes = 2.3 MB > > > > Load Address: 00008000 > > > > Entry Point: 00008000 > > > > Verifying Checksum ... OK > > > > Loading Kernel Image ... OK > > > > OK > > > > > > > > Starting kernel ... > > > > > > > > Uncompressing Linux............................................................................................................................................................ done. > > > > > > The problem most probably is that your kernel dies before the console is > > > enabled, and hence you're not pointed to the actual problem. > > > > > > Try the patch below - printk() messages are not buffered but sent out > > > directly to the lowlevel UART functions with this hack. CONFIG_DEBUG_LL > > > must be enabled for this. > > > > I think your patch leads us to the root but I fear I don't know about PCI / Kernel programming to fix it :( > > Here is my start log: > > > > Hopefully someone can see what is going wrong? > > > > Starting kernel ... > > > > Uncompressing Linux............................................................................................................................................................ done. > > <5>Linux version 2.6.32-rc5-00081-g964fe08-dirty (dieter at dk1-linux) (gcc version 4.2.0 20070413 (prerelease)) #7 PREEMPT Thu Oct 29 10:05:02 CET 2009 > > CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053177 > > CPU: VIVT data cache, VIVT instruction cache > > Machine: Marvell OpenRD Base Board > > Memory policy: ECC disabled, Data cache writeback > > <7>On node 0 totalpages: 131072 > > <7>free_area_init_node: node 0, pgdat c04c5dec, node_mem_map c058d000 > > <7> Normal zone: 1024 pages used for memmap > > <7> Normal zone: 0 pages reserved > > <7> Normal zone: 130048 pages, LIFO batch:31 > > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 > > <5>Kernel command line: console=ttyS0,115200 mtdparts=nand_mtd:0x400000 at 0x100000(uImage),0x1fb00000 at 0x500000(rootfs) rw root=/dev/nfs rw nfsroot=192.168.2.251:/home/dieter/ArtistaNt > > <6>PID hash table entries: 2048 (order: 1, 8192 bytes) > > <6>Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) > > <6>Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) > > <6>Memory: 256MB 256MB = 512MB total > > <5>Memory: 513920KB available (4420K code, 961K data, 120K init, 0K highmem) > > <6>SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > > <6>Hierarchical RCU implementation. > > <6>NR_IRQS:114 > > Console: colour dummy device 80x30 > > <6>Calibrating delay loop... <c>1199.30 BogoMIPS (lpj=5996544) > > Mount-cache hash table entries: 512 > > <6>CPU: Testing write buffer coherency: ok > > <6>NET: Registered protocol family 16 > > <6>Kirkwood: MV88F6281-A0, TCLK=200000000. > > <6>Feroceon L2: Cache support initialised. > > <7>initial MPP regs: 01111111 11113311 33331111 33103333 42222033 22244444 00000022 > > <7> final MPP regs: 01111111 11113311 33331111 33003333 42222033 22244444 00000022 > > <7>PCI: Scanning bus 0000:00 > > <7>pci 0000:00:00.0: found [11ab:6281] class 000580 header type 00 > > <7>pci 0000:00:00.0: reg 10 64bit mmio pref: [0xd0000000-0xd00fffff] > > <7>pci 0000:00:00.0: reg 18 32bit mmio: [0x000000-0x1fffffff] > > <7>pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x44 > > <7>pci 0000:00:00.0: calling rc_pci_fixup+0x0/0x40 > > <7>pci 0000:00:00.0: calling quirk_resource_alignment+0x0/0x19c > > <7>pci 0000:00:00.0: supports D1 D2 > > <7>pci 0000:00:01.0: found [11ab:2211] class 000604 header type 01 > > <7>pci 0000:00:01.0: calling pci_fixup_ide_bases+0x0/0x44 > > <7>pci 0000:00:01.0: calling rc_pci_fixup+0x0/0x40 > > <7>pci 0000:00:01.0: calling quirk_resource_alignment+0x0/0x19c > > <7>pci 0000:00:01.0: supports D1 D2 > > <6>pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot D3cold > > <6>pci 0000:00:01.0: PME# disabled > > <7>PCI: Fixups for bus 0000:00 > > <6>PCI: bus0: Fast back to back transfers disabled > > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 0 > > <7>pci 0000:00:01.0: bus configuration invalid, reconfiguring > > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 1 > > <7>PCI: Scanning bus 0000:01 > > <1>Unhandled fault: external abort on non-linefetch (0x028) at 0xfee418fc > > <0>Internal error: : 28 [#1] PREEMPT > > <0>last sysfs file: > > <d>Modules linked in: > > CPU: 0 Not tainted (2.6.32-rc5-00081-g964fe08-dirty #7) > > PC is at orion_pcie_rd_conf+0x48/0x98 > > LR is at 0x0 > > pc : [<c002fc10>] lr : [<00000000>] psr: 20000093 > > sp : df835e58 ip : 00000004 fp : 00000000 > > r10: df835e94 r9 : 00000000 r8 : 00000000 > > r7 : 00000000 r6 : 00000004 r5 : df81b800 r4 : 00000000 > > r3 : 000018fc r2 : 00000000 r1 : 80010000 r0 : fee40000 > > Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel > > Control: 0005317f Table: 00004000 DAC: 00000017 > > <0>Process swapper (pid: 1, stack limit = 0xdf834270) > > <0>Stack: (0xdf835e58 to 0xdf836000) > > <0>5e40: 20000093 c002f944 > > <0>5e60: 00000004 df835e94 0000000f 60000013 df81b800 df835eb4 df81b800 00000000 > > <0>5e80: 00000000 c01c1e90 df835e94 00000000 00000000 00000000 df835eb4 00000000 > > <0>5ea0: df81b800 c036c7e0 c049f634 df81b800 00000000 00000001 df81b800 00000008 > > <0>5ec0: 00000000 df81b800 df81b600 00000000 00000000 c01c3d74 60000013 df81b800 > > <0>5ee0: 00000008 00000001 00000001 c036ded8 df830800 df81b800 00000000 00000001 > > <0>5f00: df81b600 c036dd48 00000001 00000000 c040abbc c040abbc 00ff0100 00219f00 > > <0>5f20: 00000000 df81b600 df830800 00000000 00000001 df81b614 00000000 c04c9f00 > > <0>5f40: 00000000 c036df48 df81b600 00000001 c0022198 df834000 00000040 c036dfa8 > > <0>5f60: df807b00 c000c638 df807b00 c000a3ac c0009a4c c01f0e94 df8007c0 c00205e0 > > <0>5f80: c00209bc 00000000 00000000 00000000 00000000 c04c9f00 c000cbfc c000cc1c > > <0>5fa0: c001a7c8 c00263b8 df835fb6 c006f770 df809ae0 00000001 00000033 00000000 > > <0>5fc0: 00000000 c00205e0 c00209bc 00000000 00000000 00000000 00000000 00000000 > > <0>5fe0: 00000000 c000888c 00000000 00000000 00000000 c00273dc ffff0000 ffff0000 > > [<c002fc10>] (orion_pcie_rd_conf+0x48/0x98) from [<c002f944>] (pcie_rd_conf+0x7c/0xb8) > > [<c002f944>] (pcie_rd_conf+0x7c/0xb8) from [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) > > [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) from [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) > > [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) from [<c01c3d74>] (pci_scan_slot+0x14/0x7c) > > [<c01c3d74>] (pci_scan_slot+0x14/0x7c) from [<c036ded8>] (pci_scan_child_bus+0x30/0xec) > > [<c036ded8>] (pci_scan_child_bus+0x30/0xec) from [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) > > [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) from [<c036df48>] (pci_scan_child_bus+0xa0/0xec) > > [<c036df48>] (pci_scan_child_bus+0xa0/0xec) from [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) > > [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) from [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) > > [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) from [<c000a3ac>] (pci_common_init+0x120/0x20c) > > [<c000a3ac>] (pci_common_init+0x120/0x20c) from [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) > > [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) from [<c00263b8>] (do_one_initcall+0x58/0x1a4) > > [<c00263b8>] (do_one_initcall+0x58/0x1a4) from [<c000888c>] (kernel_init+0x90/0x104) > > [<c000888c>] (kernel_init+0x90/0x104) from [<c00273dc>] (kernel_thread_exit+0x0/0x8) > > <0>Code: e59f3054 e7801003 e2833004 e59dc008 (e7902003) > > <4>---[ end trace 1b75b31a2719ed1c ]--- > > <6>note: swapper[1] exited with preempt_count 3 > > <0>Kernel panic - not syncing: Attempted to kill init! > > [<c002b96c>] (unwind_backtrace+0x0/0xd8) from [<c003b140>] (panic+0x58/0x12c) > > [<c003b140>] (panic+0x58/0x12c) from [<c003e104>] (do_exit+0x64/0x6d0) > > [<c003e104>] (do_exit+0x64/0x6d0) from [<c002a054>] (die+0x174/0x198) > > [<c002a054>] (die+0x174/0x198) from [<c002a11c>] (dump_stack+0x0/0xc) > > > > > > > > > > > > Daniel > > > > > > > > > diff --git a/kernel/printk.c b/kernel/printk.c > > > index b4d97b5..7919751 100644 > > > --- a/kernel/printk.c > > > +++ b/kernel/printk.c > > > @@ -686,6 +686,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) > > > printed_len += vscnprintf(printk_buf + printed_len, > > > sizeof(printk_buf) - printed_len, fmt, args); > > > > > > +{ extern void printascii(const char *); printascii(printk_buf); } > > > > > > p = printk_buf; > > > > > > > > > > > > > > _______________________________________________ > > linux-arm-kernel mailing list > > linux-arm-kernel at lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 10:57 ` Dieter Kiermaier @ 2009-10-29 11:33 ` Ronen Shitrit 2009-10-29 15:11 ` Dieter Kiermaier 0 siblings, 1 reply; 15+ messages in thread From: Ronen Shitrit @ 2009-10-29 11:33 UTC (permalink / raw) To: linux-arm-kernel Sorry I don't have experience with the OpenOCD. Any way by using the printk hack, u can simply read the register and print it... Regards -----Original Message----- From: linux-arm-kernel-bounces@lists.infradead.org [mailto:linux-arm-kernel-bounces at lists.infradead.org] On Behalf Of Dieter Kiermaier Sent: Thursday, October 29, 2009 12:58 PM To: linux-arm-kernel at lists.infradead.org Cc: Nicolas Pitre; openrd at googlegroups.com; Daniel Mack; Nicolas Pitre Subject: Re: marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge Am Donnerstag 29 Oktober 2009 11:33:41 schrieb Ronen Shitrit: > Can u pls place a breakpoint before scanning the pcie and read register 0x20100. > If bit 2 is set, try to unset it and continue. > > When u scan the PCI u probably get master abort error on a device which isnt found, according to bit 2 above this "Error indications" is propagated to the Mbus-L and will cause external abort. > Hi Ronen, sorry for the stupid question but it's the first time i debug the kernel ;) How do I place a breakpoint? Can I run the kernel directly from the openocd debugger, without running it from u-boot? > Regards > > -----Original Message----- > From: linux-arm-kernel-bounces at lists.infradead.org [mailto:linux-arm-kernel-bounces at lists.infradead.org] On Behalf Of Dieter Kiermaier > Sent: Thursday, October 29, 2009 11:37 AM > To: linux-arm-kernel at lists.infradead.org > Cc: Nicolas Pitre; openrd at googlegroups.com; Daniel Mack; Nicolas Pitre > Subject: Re: marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge > > > Maybe helpful additional information: > It makes no difference if I connect a PCI device behind my bridge or not. > The trace is exactly the same. > > Dieter > > > Am Donnerstag 29 Oktober 2009 09:52:36 schrieb Daniel Mack: > > Hi Daniel, > > > > > > > On Thu, Oct 29, 2009 at 10:36:40AM +0200, Dieter Kiermaier wrote: > > > > ## Booting kernel from Legacy Image at 00800000 ... > > > > Image Name: Linux-2.6.32-rc5-00081-g964fe08- > > > > Image Type: ARM Linux Kernel Image (uncompressed) > > > > Data Size: 2390056 Bytes = 2.3 MB > > > > Load Address: 00008000 > > > > Entry Point: 00008000 > > > > Verifying Checksum ... OK > > > > Loading Kernel Image ... OK > > > > OK > > > > > > > > Starting kernel ... > > > > > > > > Uncompressing Linux............................................................................................................................................................ done. > > > > > > The problem most probably is that your kernel dies before the console is > > > enabled, and hence you're not pointed to the actual problem. > > > > > > Try the patch below - printk() messages are not buffered but sent out > > > directly to the lowlevel UART functions with this hack. CONFIG_DEBUG_LL > > > must be enabled for this. > > > > I think your patch leads us to the root but I fear I don't know about PCI / Kernel programming to fix it :( > > Here is my start log: > > > > Hopefully someone can see what is going wrong? > > > > Starting kernel ... > > > > Uncompressing Linux............................................................................................................................................................ done. > > <5>Linux version 2.6.32-rc5-00081-g964fe08-dirty (dieter at dk1-linux) (gcc version 4.2.0 20070413 (prerelease)) #7 PREEMPT Thu Oct 29 10:05:02 CET 2009 > > CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053177 > > CPU: VIVT data cache, VIVT instruction cache > > Machine: Marvell OpenRD Base Board > > Memory policy: ECC disabled, Data cache writeback > > <7>On node 0 totalpages: 131072 > > <7>free_area_init_node: node 0, pgdat c04c5dec, node_mem_map c058d000 > > <7> Normal zone: 1024 pages used for memmap > > <7> Normal zone: 0 pages reserved > > <7> Normal zone: 130048 pages, LIFO batch:31 > > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 > > <5>Kernel command line: console=ttyS0,115200 mtdparts=nand_mtd:0x400000 at 0x100000(uImage),0x1fb00000 at 0x500000(rootfs) rw root=/dev/nfs rw nfsroot=192.168.2.251:/home/dieter/ArtistaNt > > <6>PID hash table entries: 2048 (order: 1, 8192 bytes) > > <6>Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) > > <6>Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) > > <6>Memory: 256MB 256MB = 512MB total > > <5>Memory: 513920KB available (4420K code, 961K data, 120K init, 0K highmem) > > <6>SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > > <6>Hierarchical RCU implementation. > > <6>NR_IRQS:114 > > Console: colour dummy device 80x30 > > <6>Calibrating delay loop... <c>1199.30 BogoMIPS (lpj=5996544) > > Mount-cache hash table entries: 512 > > <6>CPU: Testing write buffer coherency: ok > > <6>NET: Registered protocol family 16 > > <6>Kirkwood: MV88F6281-A0, TCLK=200000000. > > <6>Feroceon L2: Cache support initialised. > > <7>initial MPP regs: 01111111 11113311 33331111 33103333 42222033 22244444 00000022 > > <7> final MPP regs: 01111111 11113311 33331111 33003333 42222033 22244444 00000022 > > <7>PCI: Scanning bus 0000:00 > > <7>pci 0000:00:00.0: found [11ab:6281] class 000580 header type 00 > > <7>pci 0000:00:00.0: reg 10 64bit mmio pref: [0xd0000000-0xd00fffff] > > <7>pci 0000:00:00.0: reg 18 32bit mmio: [0x000000-0x1fffffff] > > <7>pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x44 > > <7>pci 0000:00:00.0: calling rc_pci_fixup+0x0/0x40 > > <7>pci 0000:00:00.0: calling quirk_resource_alignment+0x0/0x19c > > <7>pci 0000:00:00.0: supports D1 D2 > > <7>pci 0000:00:01.0: found [11ab:2211] class 000604 header type 01 > > <7>pci 0000:00:01.0: calling pci_fixup_ide_bases+0x0/0x44 > > <7>pci 0000:00:01.0: calling rc_pci_fixup+0x0/0x40 > > <7>pci 0000:00:01.0: calling quirk_resource_alignment+0x0/0x19c > > <7>pci 0000:00:01.0: supports D1 D2 > > <6>pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot D3cold > > <6>pci 0000:00:01.0: PME# disabled > > <7>PCI: Fixups for bus 0000:00 > > <6>PCI: bus0: Fast back to back transfers disabled > > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 0 > > <7>pci 0000:00:01.0: bus configuration invalid, reconfiguring > > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 1 > > <7>PCI: Scanning bus 0000:01 > > <1>Unhandled fault: external abort on non-linefetch (0x028) at 0xfee418fc > > <0>Internal error: : 28 [#1] PREEMPT > > <0>last sysfs file: > > <d>Modules linked in: > > CPU: 0 Not tainted (2.6.32-rc5-00081-g964fe08-dirty #7) > > PC is at orion_pcie_rd_conf+0x48/0x98 > > LR is at 0x0 > > pc : [<c002fc10>] lr : [<00000000>] psr: 20000093 > > sp : df835e58 ip : 00000004 fp : 00000000 > > r10: df835e94 r9 : 00000000 r8 : 00000000 > > r7 : 00000000 r6 : 00000004 r5 : df81b800 r4 : 00000000 > > r3 : 000018fc r2 : 00000000 r1 : 80010000 r0 : fee40000 > > Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel > > Control: 0005317f Table: 00004000 DAC: 00000017 > > <0>Process swapper (pid: 1, stack limit = 0xdf834270) > > <0>Stack: (0xdf835e58 to 0xdf836000) > > <0>5e40: 20000093 c002f944 > > <0>5e60: 00000004 df835e94 0000000f 60000013 df81b800 df835eb4 df81b800 00000000 > > <0>5e80: 00000000 c01c1e90 df835e94 00000000 00000000 00000000 df835eb4 00000000 > > <0>5ea0: df81b800 c036c7e0 c049f634 df81b800 00000000 00000001 df81b800 00000008 > > <0>5ec0: 00000000 df81b800 df81b600 00000000 00000000 c01c3d74 60000013 df81b800 > > <0>5ee0: 00000008 00000001 00000001 c036ded8 df830800 df81b800 00000000 00000001 > > <0>5f00: df81b600 c036dd48 00000001 00000000 c040abbc c040abbc 00ff0100 00219f00 > > <0>5f20: 00000000 df81b600 df830800 00000000 00000001 df81b614 00000000 c04c9f00 > > <0>5f40: 00000000 c036df48 df81b600 00000001 c0022198 df834000 00000040 c036dfa8 > > <0>5f60: df807b00 c000c638 df807b00 c000a3ac c0009a4c c01f0e94 df8007c0 c00205e0 > > <0>5f80: c00209bc 00000000 00000000 00000000 00000000 c04c9f00 c000cbfc c000cc1c > > <0>5fa0: c001a7c8 c00263b8 df835fb6 c006f770 df809ae0 00000001 00000033 00000000 > > <0>5fc0: 00000000 c00205e0 c00209bc 00000000 00000000 00000000 00000000 00000000 > > <0>5fe0: 00000000 c000888c 00000000 00000000 00000000 c00273dc ffff0000 ffff0000 > > [<c002fc10>] (orion_pcie_rd_conf+0x48/0x98) from [<c002f944>] (pcie_rd_conf+0x7c/0xb8) > > [<c002f944>] (pcie_rd_conf+0x7c/0xb8) from [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) > > [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) from [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) > > [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) from [<c01c3d74>] (pci_scan_slot+0x14/0x7c) > > [<c01c3d74>] (pci_scan_slot+0x14/0x7c) from [<c036ded8>] (pci_scan_child_bus+0x30/0xec) > > [<c036ded8>] (pci_scan_child_bus+0x30/0xec) from [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) > > [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) from [<c036df48>] (pci_scan_child_bus+0xa0/0xec) > > [<c036df48>] (pci_scan_child_bus+0xa0/0xec) from [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) > > [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) from [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) > > [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) from [<c000a3ac>] (pci_common_init+0x120/0x20c) > > [<c000a3ac>] (pci_common_init+0x120/0x20c) from [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) > > [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) from [<c00263b8>] (do_one_initcall+0x58/0x1a4) > > [<c00263b8>] (do_one_initcall+0x58/0x1a4) from [<c000888c>] (kernel_init+0x90/0x104) > > [<c000888c>] (kernel_init+0x90/0x104) from [<c00273dc>] (kernel_thread_exit+0x0/0x8) > > <0>Code: e59f3054 e7801003 e2833004 e59dc008 (e7902003) > > <4>---[ end trace 1b75b31a2719ed1c ]--- > > <6>note: swapper[1] exited with preempt_count 3 > > <0>Kernel panic - not syncing: Attempted to kill init! > > [<c002b96c>] (unwind_backtrace+0x0/0xd8) from [<c003b140>] (panic+0x58/0x12c) > > [<c003b140>] (panic+0x58/0x12c) from [<c003e104>] (do_exit+0x64/0x6d0) > > [<c003e104>] (do_exit+0x64/0x6d0) from [<c002a054>] (die+0x174/0x198) > > [<c002a054>] (die+0x174/0x198) from [<c002a11c>] (dump_stack+0x0/0xc) > > > > > > > > > > > > Daniel > > > > > > > > > diff --git a/kernel/printk.c b/kernel/printk.c > > > index b4d97b5..7919751 100644 > > > --- a/kernel/printk.c > > > +++ b/kernel/printk.c > > > @@ -686,6 +686,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) > > > printed_len += vscnprintf(printk_buf + printed_len, > > > sizeof(printk_buf) - printed_len, fmt, args); > > > > > > +{ extern void printascii(const char *); printascii(printk_buf); } > > > > > > p = printk_buf; > > > > > > > > > > > > > > _______________________________________________ > > linux-arm-kernel mailing list > > linux-arm-kernel at lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel at lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 11:33 ` Ronen Shitrit @ 2009-10-29 15:11 ` Dieter Kiermaier 2009-10-29 15:16 ` Russell King - ARM Linux 0 siblings, 1 reply; 15+ messages in thread From: Dieter Kiermaier @ 2009-10-29 15:11 UTC (permalink / raw) To: linux-arm-kernel Am Donnerstag 29 Oktober 2009 12:33:03 schrieb Ronen Shitrit: > Sorry I don't have experience with the OpenOCD. > Any way by using the printk hack, u can simply read the register and print it... I fear I need any further help: I've tried to read the register you told me but now I get an oops: <1>Unable to handle kernel paging request at virtual address 40020100 <1>pgd = c0004000 <1>[40020100] *pgd=00000000 <0>Internal error: Oops: 5 [#1] PREEMP My code to read the register is: #include <asm/io.h> printk("register 0x20100: %x\n", readl(virt_to_phys(0x20100))) also a printk("register 0x20100: %x\n", readl(0x20100)); fail with an Ooops :( What am I doing wrong here? Many thanks for helping such a newbie ;) Dieter > > Regards > > -----Original Message----- > From: linux-arm-kernel-bounces at lists.infradead.org [mailto:linux-arm-kernel-bounces at lists.infradead.org] On Behalf Of Dieter Kiermaier > Sent: Thursday, October 29, 2009 12:58 PM > To: linux-arm-kernel at lists.infradead.org > Cc: Nicolas Pitre; openrd at googlegroups.com; Daniel Mack; Nicolas Pitre > Subject: Re: marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge > > Am Donnerstag 29 Oktober 2009 11:33:41 schrieb Ronen Shitrit: > > Can u pls place a breakpoint before scanning the pcie and read register 0x20100. > > If bit 2 is set, try to unset it and continue. > > > > When u scan the PCI u probably get master abort error on a device which isnt found, according to bit 2 above this "Error indications" is propagated to the Mbus-L and will cause external abort. > > > > Hi Ronen, > > sorry for the stupid question but it's the first time i debug the kernel ;) > > How do I place a breakpoint? > > Can I run the kernel directly from the openocd debugger, without running it from u-boot? > > > Regards > > > > -----Original Message----- > > From: linux-arm-kernel-bounces at lists.infradead.org [mailto:linux-arm-kernel-bounces at lists.infradead.org] On Behalf Of Dieter Kiermaier > > Sent: Thursday, October 29, 2009 11:37 AM > > To: linux-arm-kernel at lists.infradead.org > > Cc: Nicolas Pitre; openrd at googlegroups.com; Daniel Mack; Nicolas Pitre > > Subject: Re: marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge > > > > > > Maybe helpful additional information: > > It makes no difference if I connect a PCI device behind my bridge or not. > > The trace is exactly the same. > > > > Dieter > > > > > Am Donnerstag 29 Oktober 2009 09:52:36 schrieb Daniel Mack: > > > Hi Daniel, > > > > > > > > > > On Thu, Oct 29, 2009 at 10:36:40AM +0200, Dieter Kiermaier wrote: > > > > > ## Booting kernel from Legacy Image at 00800000 ... > > > > > Image Name: Linux-2.6.32-rc5-00081-g964fe08- > > > > > Image Type: ARM Linux Kernel Image (uncompressed) > > > > > Data Size: 2390056 Bytes = 2.3 MB > > > > > Load Address: 00008000 > > > > > Entry Point: 00008000 > > > > > Verifying Checksum ... OK > > > > > Loading Kernel Image ... OK > > > > > OK > > > > > > > > > > Starting kernel ... > > > > > > > > > > Uncompressing Linux............................................................................................................................................................ done. > > > > > > > > The problem most probably is that your kernel dies before the console is > > > > enabled, and hence you're not pointed to the actual problem. > > > > > > > > Try the patch below - printk() messages are not buffered but sent out > > > > directly to the lowlevel UART functions with this hack. CONFIG_DEBUG_LL > > > > must be enabled for this. > > > > > > I think your patch leads us to the root but I fear I don't know about PCI / Kernel programming to fix it :( > > > Here is my start log: > > > > > > Hopefully someone can see what is going wrong? > > > > > > Starting kernel ... > > > > > > Uncompressing Linux............................................................................................................................................................ done. > > > <5>Linux version 2.6.32-rc5-00081-g964fe08-dirty (dieter at dk1-linux) (gcc version 4.2.0 20070413 (prerelease)) #7 PREEMPT Thu Oct 29 10:05:02 CET 2009 > > > CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053177 > > > CPU: VIVT data cache, VIVT instruction cache > > > Machine: Marvell OpenRD Base Board > > > Memory policy: ECC disabled, Data cache writeback > > > <7>On node 0 totalpages: 131072 > > > <7>free_area_init_node: node 0, pgdat c04c5dec, node_mem_map c058d000 > > > <7> Normal zone: 1024 pages used for memmap > > > <7> Normal zone: 0 pages reserved > > > <7> Normal zone: 130048 pages, LIFO batch:31 > > > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 > > > <5>Kernel command line: console=ttyS0,115200 mtdparts=nand_mtd:0x400000 at 0x100000(uImage),0x1fb00000 at 0x500000(rootfs) rw root=/dev/nfs rw nfsroot=192.168.2.251:/home/dieter/ArtistaNt > > > <6>PID hash table entries: 2048 (order: 1, 8192 bytes) > > > <6>Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) > > > <6>Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) > > > <6>Memory: 256MB 256MB = 512MB total > > > <5>Memory: 513920KB available (4420K code, 961K data, 120K init, 0K highmem) > > > <6>SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > > > <6>Hierarchical RCU implementation. > > > <6>NR_IRQS:114 > > > Console: colour dummy device 80x30 > > > <6>Calibrating delay loop... <c>1199.30 BogoMIPS (lpj=5996544) > > > Mount-cache hash table entries: 512 > > > <6>CPU: Testing write buffer coherency: ok > > > <6>NET: Registered protocol family 16 > > > <6>Kirkwood: MV88F6281-A0, TCLK=200000000. > > > <6>Feroceon L2: Cache support initialised. > > > <7>initial MPP regs: 01111111 11113311 33331111 33103333 42222033 22244444 00000022 > > > <7> final MPP regs: 01111111 11113311 33331111 33003333 42222033 22244444 00000022 > > > <7>PCI: Scanning bus 0000:00 > > > <7>pci 0000:00:00.0: found [11ab:6281] class 000580 header type 00 > > > <7>pci 0000:00:00.0: reg 10 64bit mmio pref: [0xd0000000-0xd00fffff] > > > <7>pci 0000:00:00.0: reg 18 32bit mmio: [0x000000-0x1fffffff] > > > <7>pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x44 > > > <7>pci 0000:00:00.0: calling rc_pci_fixup+0x0/0x40 > > > <7>pci 0000:00:00.0: calling quirk_resource_alignment+0x0/0x19c > > > <7>pci 0000:00:00.0: supports D1 D2 > > > <7>pci 0000:00:01.0: found [11ab:2211] class 000604 header type 01 > > > <7>pci 0000:00:01.0: calling pci_fixup_ide_bases+0x0/0x44 > > > <7>pci 0000:00:01.0: calling rc_pci_fixup+0x0/0x40 > > > <7>pci 0000:00:01.0: calling quirk_resource_alignment+0x0/0x19c > > > <7>pci 0000:00:01.0: supports D1 D2 > > > <6>pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot D3cold > > > <6>pci 0000:00:01.0: PME# disabled > > > <7>PCI: Fixups for bus 0000:00 > > > <6>PCI: bus0: Fast back to back transfers disabled > > > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 0 > > > <7>pci 0000:00:01.0: bus configuration invalid, reconfiguring > > > <7>pci 0000:00:01.0: scanning behind bridge, config 000000, pass 1 > > > <7>PCI: Scanning bus 0000:01 > > > <1>Unhandled fault: external abort on non-linefetch (0x028) at 0xfee418fc > > > <0>Internal error: : 28 [#1] PREEMPT > > > <0>last sysfs file: > > > <d>Modules linked in: > > > CPU: 0 Not tainted (2.6.32-rc5-00081-g964fe08-dirty #7) > > > PC is at orion_pcie_rd_conf+0x48/0x98 > > > LR is at 0x0 > > > pc : [<c002fc10>] lr : [<00000000>] psr: 20000093 > > > sp : df835e58 ip : 00000004 fp : 00000000 > > > r10: df835e94 r9 : 00000000 r8 : 00000000 > > > r7 : 00000000 r6 : 00000004 r5 : df81b800 r4 : 00000000 > > > r3 : 000018fc r2 : 00000000 r1 : 80010000 r0 : fee40000 > > > Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel > > > Control: 0005317f Table: 00004000 DAC: 00000017 > > > <0>Process swapper (pid: 1, stack limit = 0xdf834270) > > > <0>Stack: (0xdf835e58 to 0xdf836000) > > > <0>5e40: 20000093 c002f944 > > > <0>5e60: 00000004 df835e94 0000000f 60000013 df81b800 df835eb4 df81b800 00000000 > > > <0>5e80: 00000000 c01c1e90 df835e94 00000000 00000000 00000000 df835eb4 00000000 > > > <0>5ea0: df81b800 c036c7e0 c049f634 df81b800 00000000 00000001 df81b800 00000008 > > > <0>5ec0: 00000000 df81b800 df81b600 00000000 00000000 c01c3d74 60000013 df81b800 > > > <0>5ee0: 00000008 00000001 00000001 c036ded8 df830800 df81b800 00000000 00000001 > > > <0>5f00: df81b600 c036dd48 00000001 00000000 c040abbc c040abbc 00ff0100 00219f00 > > > <0>5f20: 00000000 df81b600 df830800 00000000 00000001 df81b614 00000000 c04c9f00 > > > <0>5f40: 00000000 c036df48 df81b600 00000001 c0022198 df834000 00000040 c036dfa8 > > > <0>5f60: df807b00 c000c638 df807b00 c000a3ac c0009a4c c01f0e94 df8007c0 c00205e0 > > > <0>5f80: c00209bc 00000000 00000000 00000000 00000000 c04c9f00 c000cbfc c000cc1c > > > <0>5fa0: c001a7c8 c00263b8 df835fb6 c006f770 df809ae0 00000001 00000033 00000000 > > > <0>5fc0: 00000000 c00205e0 c00209bc 00000000 00000000 00000000 00000000 00000000 > > > <0>5fe0: 00000000 c000888c 00000000 00000000 00000000 c00273dc ffff0000 ffff0000 > > > [<c002fc10>] (orion_pcie_rd_conf+0x48/0x98) from [<c002f944>] (pcie_rd_conf+0x7c/0xb8) > > > [<c002f944>] (pcie_rd_conf+0x7c/0xb8) from [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) > > > [<c01c1e90>] (pci_bus_read_config_dword+0x58/0x98) from [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) > > > [<c036c7e0>] (pci_scan_single_device+0x3c/0x150) from [<c01c3d74>] (pci_scan_slot+0x14/0x7c) > > > [<c01c3d74>] (pci_scan_slot+0x14/0x7c) from [<c036ded8>] (pci_scan_child_bus+0x30/0xec) > > > [<c036ded8>] (pci_scan_child_bus+0x30/0xec) from [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) > > > [<c036dd48>] (pci_scan_bridge+0x1a8/0x308) from [<c036df48>] (pci_scan_child_bus+0xa0/0xec) > > > [<c036df48>] (pci_scan_child_bus+0xa0/0xec) from [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) > > > [<c036dfa8>] (pci_scan_bus_parented+0x14/0x20) from [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) > > > [<c000c638>] (kirkwood_pcie_scan_bus+0x1c/0x48) from [<c000a3ac>] (pci_common_init+0x120/0x20c) > > > [<c000a3ac>] (pci_common_init+0x120/0x20c) from [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) > > > [<c000cc1c>] (openrd_base_pci_init+0x20/0x34) from [<c00263b8>] (do_one_initcall+0x58/0x1a4) > > > [<c00263b8>] (do_one_initcall+0x58/0x1a4) from [<c000888c>] (kernel_init+0x90/0x104) > > > [<c000888c>] (kernel_init+0x90/0x104) from [<c00273dc>] (kernel_thread_exit+0x0/0x8) > > > <0>Code: e59f3054 e7801003 e2833004 e59dc008 (e7902003) > > > <4>---[ end trace 1b75b31a2719ed1c ]--- > > > <6>note: swapper[1] exited with preempt_count 3 > > > <0>Kernel panic - not syncing: Attempted to kill init! > > > [<c002b96c>] (unwind_backtrace+0x0/0xd8) from [<c003b140>] (panic+0x58/0x12c) > > > [<c003b140>] (panic+0x58/0x12c) from [<c003e104>] (do_exit+0x64/0x6d0) > > > [<c003e104>] (do_exit+0x64/0x6d0) from [<c002a054>] (die+0x174/0x198) > > > [<c002a054>] (die+0x174/0x198) from [<c002a11c>] (dump_stack+0x0/0xc) > > > > > > > > > > > > > > > > > Daniel > > > > > > > > > > > > diff --git a/kernel/printk.c b/kernel/printk.c > > > > index b4d97b5..7919751 100644 > > > > --- a/kernel/printk.c > > > > +++ b/kernel/printk.c > > > > @@ -686,6 +686,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) > > > > printed_len += vscnprintf(printk_buf + printed_len, > > > > sizeof(printk_buf) - printed_len, fmt, args); > > > > > > > > +{ extern void printascii(const char *); printascii(printk_buf); } > > > > > > > > p = printk_buf; > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > linux-arm-kernel mailing list > > > linux-arm-kernel at lists.infradead.org > > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > > > > > > > > > _______________________________________________ > > linux-arm-kernel mailing list > > linux-arm-kernel at lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > > _______________________________________________ > > linux-arm-kernel mailing list > > linux-arm-kernel at lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 15:11 ` Dieter Kiermaier @ 2009-10-29 15:16 ` Russell King - ARM Linux 2009-10-29 22:47 ` saeed bishara 0 siblings, 1 reply; 15+ messages in thread From: Russell King - ARM Linux @ 2009-10-29 15:16 UTC (permalink / raw) To: linux-arm-kernel On Thu, Oct 29, 2009 at 05:11:02PM +0200, Dieter Kiermaier wrote: > Am Donnerstag 29 Oktober 2009 12:33:03 schrieb Ronen Shitrit: > > Sorry I don't have experience with the OpenOCD. > > Any way by using the printk hack, u can simply read the register and print it... > > I fear I need any further help: > > I've tried to read the register you told me but now I get an oops: > <1>Unable to handle kernel paging request at virtual address 40020100 > <1>pgd = c0004000 > <1>[40020100] *pgd=00000000 > <0>Internal error: Oops: 5 [#1] PREEMP > > My code to read the register is: > #include <asm/io.h> > printk("register 0x20100: %x\n", readl(virt_to_phys(0x20100))) > > also a > printk("register 0x20100: %x\n", readl(0x20100)); > fail with an Ooops :( > > What am I doing wrong here? 1. virt_to_phys() is only valid for the kernel memory region in the virtual address space. 0x20100 is not within such a region. 2. readl() takes an offsettable cookie representing the location you want to access. (you get this cookie via ioremap of a bus address or via a platform defined constant.) Practially (for most existing implementations but not all) it is a virtual address. Assuming 0x20100 is the physical address of the register, you should be able to read it like this: void __iomem *base = ioremap(0x20100, 4); if (base) printk("register 0x20100: %x\n", readl(base)); iounmap(base); ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 15:16 ` Russell King - ARM Linux @ 2009-10-29 22:47 ` saeed bishara 2009-10-30 8:55 ` Dieter Kiermaier 0 siblings, 1 reply; 15+ messages in thread From: saeed bishara @ 2009-10-29 22:47 UTC (permalink / raw) To: linux-arm-kernel For Kirkwood, the registers physical addresses start at 0xF1000000 (KIRKWOOD_REGS_PHYS_BASE ). so the physical address that you need to pass to ioremap is 0xf1020100. alternatley, you can use the existing virtual mapping of the register that defined by KIRKWOOD_REGS_VIRT_BASE, so just use: readl(KIRKWOOD_REGS_VIRT_BASE | 0x20100) saeed On Thu, Oct 29, 2009 at 5:16 PM, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > On Thu, Oct 29, 2009 at 05:11:02PM +0200, Dieter Kiermaier wrote: >> Am Donnerstag 29 Oktober 2009 12:33:03 schrieb Ronen Shitrit: >> > Sorry I don't have experience with the OpenOCD. >> > Any way by using the printk hack, u can simply read the register and print it... >> >> I fear I need any further help: >> >> I've tried to read the register you told me but now I get an oops: >> <1>Unable to handle kernel paging request at virtual address 40020100 >> <1>pgd = c0004000 >> <1>[40020100] *pgd=00000000 >> <0>Internal error: Oops: 5 [#1] PREEMP >> >> My code to read the register is: >> #include <asm/io.h> >> printk("register 0x20100: %x\n", readl(virt_to_phys(0x20100))) >> >> also a >> printk("register 0x20100: %x\n", readl(0x20100)); >> fail with an Ooops :( >> >> What am I doing wrong here? > > 1. virt_to_phys() is only valid for the kernel memory region in the > ? virtual address space. ?0x20100 is not within such a region. > > 2. readl() takes an offsettable cookie representing the location you > ? want to access. ?(you get this cookie via ioremap of a bus address > ? or via a platform defined constant.) ?Practially (for most existing > ? implementations but not all) it is a virtual address. > > Assuming 0x20100 is the physical address of the register, you should be > able to read it like this: > > ? ? ? ?void __iomem *base = ioremap(0x20100, 4); > ? ? ? ?if (base) > ? ? ? ? ? ? ? ?printk("register 0x20100: %x\n", readl(base)); > ? ? ? ?iounmap(base); > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-29 22:47 ` saeed bishara @ 2009-10-30 8:55 ` Dieter Kiermaier 2009-11-03 14:36 ` Dieter Kiermaier 0 siblings, 1 reply; 15+ messages in thread From: Dieter Kiermaier @ 2009-10-30 8:55 UTC (permalink / raw) To: linux-arm-kernel > For Kirkwood, the registers physical addresses start at 0xF1000000 > (KIRKWOOD_REGS_PHYS_BASE ). so the physical address that you need to > pass to ioremap is 0xf1020100. alternatley, you can use the existing > virtual mapping of the register that defined by > KIRKWOOD_REGS_VIRT_BASE, so just use: readl(KIRKWOOD_REGS_VIRT_BASE | > 0x20100) > > saeed thanks for the help. ok - now I'm able to read the register: register 0x20100: 3fb8 So it looks like bit 2 isn't set. That's what Ronen wanted me to have a look for. Hopefully someone has any further suggestions? Dieter > > > On Thu, Oct 29, 2009 at 5:16 PM, Russell King - ARM Linux > <linux@arm.linux.org.uk> wrote: > > On Thu, Oct 29, 2009 at 05:11:02PM +0200, Dieter Kiermaier wrote: > >> Am Donnerstag 29 Oktober 2009 12:33:03 schrieb Ronen Shitrit: > >> > Sorry I don't have experience with the OpenOCD. > >> > Any way by using the printk hack, u can simply read the register and print it... > >> > >> I fear I need any further help: > >> > >> I've tried to read the register you told me but now I get an oops: > >> <1>Unable to handle kernel paging request at virtual address 40020100 > >> <1>pgd = c0004000 > >> <1>[40020100] *pgd=00000000 > >> <0>Internal error: Oops: 5 [#1] PREEMP > >> > >> My code to read the register is: > >> #include <asm/io.h> > >> printk("register 0x20100: %x\n", readl(virt_to_phys(0x20100))) > >> > >> also a > >> printk("register 0x20100: %x\n", readl(0x20100)); > >> fail with an Ooops :( > >> > >> What am I doing wrong here? > > > > 1. virt_to_phys() is only valid for the kernel memory region in the > > ? virtual address space. ?0x20100 is not within such a region. > > > > 2. readl() takes an offsettable cookie representing the location you > > ? want to access. ?(you get this cookie via ioremap of a bus address > > ? or via a platform defined constant.) ?Practially (for most existing > > ? implementations but not all) it is a virtual address. > > > > Assuming 0x20100 is the physical address of the register, you should be > > able to read it like this: > > > > ? ? ? ?void __iomem *base = ioremap(0x20100, 4); > > ? ? ? ?if (base) > > ? ? ? ? ? ? ? ?printk("register 0x20100: %x\n", readl(base)); > > ? ? ? ?iounmap(base); > > > > _______________________________________________ > > linux-arm-kernel mailing list > > linux-arm-kernel at lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge 2009-10-30 8:55 ` Dieter Kiermaier @ 2009-11-03 14:36 ` Dieter Kiermaier 0 siblings, 0 replies; 15+ messages in thread From: Dieter Kiermaier @ 2009-11-03 14:36 UTC (permalink / raw) To: linux-arm-kernel Some news, but allready no solution... > > > For Kirkwood, the registers physical addresses start at 0xF1000000 > > (KIRKWOOD_REGS_PHYS_BASE ). so the physical address that you need to > > pass to ioremap is 0xf1020100. alternatley, you can use the existing > > virtual mapping of the register that defined by > > KIRKWOOD_REGS_VIRT_BASE, so just use: readl(KIRKWOOD_REGS_VIRT_BASE | > > 0x20100) > > > > saeed > > thanks for the help. > > ok - now I'm able to read the register: > register 0x20100: 3fb8 > > So it looks like bit 2 isn't set. That's what Ronen wanted me to have a look for. > > Hopefully someone has any further suggestions? > > Dieter I've tracked down the now until pci_setup_device() in drivers/pci/probe.c if I do something like: #if 0 case PCI_HEADER_TYPE_BRIDGE: /* bridge header */ if (class != PCI_CLASS_BRIDGE_PCI) goto bad; /* The PCI-to-PCI bridge spec requires that subtractive decoding (i.e. transparent) bridge must have programming interface code of 0x01. */ pci_read_irq(dev); dev->transparent = ((dev->class & 0xff) == 1); pci_read_bases(dev, 2, PCI_ROM_ADDRESS1); set_pcie_hotplug_bridge(dev); break; #endif everything except my pcie->pci bridge seems to work fine. So I looks like that's a problem with only pcie->pci bridges (or pci bridges more general)? Is this possible or do I complete understand something wrong? Could someone please try to reproduce this on a marvell or at least an arm platform? Many, many thanks, Dieter > > > > > > > On Thu, Oct 29, 2009 at 5:16 PM, Russell King - ARM Linux > > <linux@arm.linux.org.uk> wrote: > > > On Thu, Oct 29, 2009 at 05:11:02PM +0200, Dieter Kiermaier wrote: > > >> Am Donnerstag 29 Oktober 2009 12:33:03 schrieb Ronen Shitrit: > > >> > Sorry I don't have experience with the OpenOCD. > > >> > Any way by using the printk hack, u can simply read the register and print it... > > >> > > >> I fear I need any further help: > > >> > > >> I've tried to read the register you told me but now I get an oops: > > >> <1>Unable to handle kernel paging request at virtual address 40020100 > > >> <1>pgd = c0004000 > > >> <1>[40020100] *pgd=00000000 > > >> <0>Internal error: Oops: 5 [#1] PREEMP > > >> > > >> My code to read the register is: > > >> #include <asm/io.h> > > >> printk("register 0x20100: %x\n", readl(virt_to_phys(0x20100))) > > >> > > >> also a > > >> printk("register 0x20100: %x\n", readl(0x20100)); > > >> fail with an Ooops :( > > >> > > >> What am I doing wrong here? > > > > > > 1. virt_to_phys() is only valid for the kernel memory region in the > > > ? virtual address space. ?0x20100 is not within such a region. > > > > > > 2. readl() takes an offsettable cookie representing the location you > > > ? want to access. ?(you get this cookie via ioremap of a bus address > > > ? or via a platform defined constant.) ?Practially (for most existing > > > ? implementations but not all) it is a virtual address. > > > > > > Assuming 0x20100 is the physical address of the register, you should be > > > able to read it like this: > > > > > > ? ? ? ?void __iomem *base = ioremap(0x20100, 4); > > > ? ? ? ?if (base) > > > ? ? ? ? ? ? ? ?printk("register 0x20100: %x\n", readl(base)); > > > ? ? ? ?iounmap(base); > > > > > > _______________________________________________ > > > linux-arm-kernel mailing list > > > linux-arm-kernel at lists.infradead.org > > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > > > > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2009-11-03 14:36 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-10-29 8:36 marvell kirkwood / openrd-base kernel freeze on bootup with PICe->PCI bridge Dieter Kiermaier 2009-10-29 8:35 ` Simon Kagstrom 2009-10-29 8:50 ` Dieter Kiermaier 2009-10-29 8:52 ` Daniel Mack 2009-10-29 8:59 ` Simon Kagstrom 2009-10-29 9:14 ` Dieter Kiermaier 2009-10-29 9:36 ` Dieter Kiermaier 2009-10-29 10:33 ` Ronen Shitrit 2009-10-29 10:57 ` Dieter Kiermaier 2009-10-29 11:33 ` Ronen Shitrit 2009-10-29 15:11 ` Dieter Kiermaier 2009-10-29 15:16 ` Russell King - ARM Linux 2009-10-29 22:47 ` saeed bishara 2009-10-30 8:55 ` Dieter Kiermaier 2009-11-03 14:36 ` Dieter Kiermaier
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).