[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-arm-kernel
Subject: Re: [CFT] Mark IO as bufferable
From: "Lothar Wassmann" <LW () KARO-electronics ! de>
Date: 2005-06-28 13:07:19
Message-ID: 17089.19335.435059.621460 () ipc1 ! karo
[Download RAW message or body]
Hi Russell,
Russell King - ARM Linux writes:
> Can people please test out the effect of this change. Potentially it
> should get slightly better IO performance. Or it could prevent the
> kernel booting.
>
I've tested this patch on our PXA255 and PXA270 platforms with kernel
version 2.6.11-mm2.
> Please let me know what CPUs it works / does not work with, and
> also the outcome of the write buffer test on a kernel without this
> patch applied. IOW, the line starting:
>
PXA255:
The reaction depends on the CPU clock speed.
With 99.5MHz the kernel crashes:
---------------------
Linux version 2.6.11-mm2-karo (lothar@ipc1) (gcc version 3.4.3) #13 Tue Jun 28 \
11:54:16 CEST 2005
CPU: XScale-PXA255 [69052d06] revision 6 (ARMv5TE)
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Machine: KARO electronics PXA255 processor module
Using buffered IO
Memory policy: ECC disabled, Data cache writeback
Memory clock: 99.53MHz (*27)
Run Mode clock: 99.53MHz (*1)
Turbo Mode clock: 99.53MHz (*1.0, inactive)
On node 0 totalpages: 4096
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 0 pages, LIFO batch:1
HighMem zone: 0 pages, LIFO batch:1
Built 1 zonelists
Kernel command line: root=/dev/nfs nfsroot=192.168.1.225:/tftpboot/rootfs ip=bootp \
debug panic=5 console=ttyS0,38400 ro Unhandled fault: imprecise external abort \
(0xc06) at 0x40141d0c Unable to handle kernel NULL pointer dereference at virtual \
address 00000000 pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: f5 [#1]
Modules linked in:
CPU: 0
PC is at kmem_cache_alloc+0x18/0x48
LR is at __sigqueue_alloc+0x60/0xd0
pc : [<c00632d8>] lr : [<c0048ad4>] Not tainted
sp : c01dfeb8 ip : c01dfecc fp : c01dfec8
r10: a001f298 r9 : 800000d3 r8 : c01dff64
r7 : 00000000 r6 : c01e02c0 r5 : 00000007 r4 : 200000d3
r3 : c0225594 r2 : 200000d3 r1 : 00000020 r0 : 00000000
Flags: nzCv IRQs off FIQs off Mode SVC_32 Segment kernel
Control: 397F Table: A0004000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc01de194)
Stack: (0xc01dfeb8 to 0xc01e0000)
fea0: c01e00c0 c01dfedc
fec0: c01dfecc c0048ad4 c00632cc 00000001 c01dfefc c01dfee0 c0049478 c0048a80
fee0: 00000001 c01e00c0 00000007 00000000 c01dff1c c01dff00 c0049624 c0049430
ff00: c01e00c0 00000007 600000d3 00000001 c01dff3c c01dff20 c004970c c0049594
ff20: 00000c06 c01de000 c01e1620 40141d0c c01dff60 c01dff40 c002ac24 c0049680
ff40: ffffffff c01dff98 ffffffff c0231954 a001f2f8 c01dffbc c01dff64 c002349c
ff60: c002abc4 00000003 f2e00000 00000010 00000000 00000000 c021ddc8 ffffffff
ff80: c0231954 a001f2f8 69052d06 a001f298 c01dffbc c01dffc0 c01dffac f2d00000
ffa0: c0011118 800000d3 ffffffff c021dda0 c01dffd8 c01dffc0 c000ebf4 c00110e4
ffc0: 0000397d c021de40 c01e1034 c01dfffc c01dffdc c00086b4 c000eb9c c00082e4
ffe0: c021de58 0000397d c021de40 c01e1034 00000000 c01e0000 a000809c c0008640
Backtrace:
[<c00632c0>] (kmem_cache_alloc+0x0/0x48) from [<c0048ad4>] \
(__sigqueue_alloc+0x60/0xd0) r4 = C01E00C0
[<c0048a74>] (__sigqueue_alloc+0x0/0xd0) from [<c0049478>] (send_signal+0x54/0x164)
r4 = 00000001
[<c0049424>] (send_signal+0x0/0x164) from [<c0049624>] \
(specific_send_sig_info+0x9c/0xec) r7 = 00000000 r6 = 00000007 r5 = C01E00C0 r4 = \
00000001 [<c0049588>] (specific_send_sig_info+0x0/0xec) from [<c004970c>] \
(force_sig_info+0x98/0xa0) r7 = 00000001 r6 = 600000D3 r5 = 00000007 r4 = \
C01E00C0 [<c0049674>] (force_sig_info+0x0/0xa0) from [<c002ac24>] \
(do_DataAbort+0x6c/0xa0) r7 = 40141D0C r6 = C01E1620 r5 = C01DE000 r4 = 00000C06
[<c002abb8>] (do_DataAbort+0x0/0xa0) from [<c002349c>] (__dabt_svc+0x3c/0x60)
r8 = A001F2F8 r7 = C0231954 r6 = FFFFFFFF r5 = C01DFF98
r4 = FFFFFFFF
[<c00110d8>] (pxa_init_irq+0x0/0x150) from [<c000ebf4>] (init_IRQ+0x64/0x78)
r4 = C021DDA0
[<c000eb90>] (init_IRQ+0x0/0x78) from [<c00086b4>] (start_kernel+0x80/0x1b4)
r6 = C01E1034 r5 = C021DE40 r4 = 0000397D
[<c0008634>] (start_kernel+0x0/0x1b4) from [<a000809c>] (0xa000809c)
r6 = C01E1034 r5 = C021DE40 r4 = 0000397D
Code: e24cb004 e10f4000 e3842080 e121f002 (e5902000)
Kernel panic - not syncing: Attempted to kill the idle task!
Rebooting in 5 seconds..Reboot failed -- System halted
---------------------
With CPU frequency >99.5MHz the system boots:
> Calibrating delay loop... 397.31 BogoMIPS (lpj=1986560)
> Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
> CPU: Testing write buffer coherency: ok
but depending on the CPU clock speed I'm getting garbled output on the
serial console from userspace programs (kernel printk messages are not
affected):
> Setting the Sytem Clock usin the Hardware Clck as referenc... done.
> Configuring networ itrfce: done.
> server 192.168..25, stratum 16, offset 11199429.039729, delay 0.02623
> 1 a 01:00:29 ntpdate[521]: no serve suitable for synchronizatio fund
It seems like all clock combinations where SDRAM is running at 99.5MHz
and the PXBus is running at less or equal 99.5MHz show the above
behaviour while other combinations work.
An interesting point might be that 99.5MHz fails to boot, but works
well when switched to lateron.
PXA270:
independent of CPU clock I'm getting:
---------------------
Linux version 2.6.11-mm2-karo-mmx (lothar@ipc1) (gcc version 3.4.3) #77 Tue Jun 28 \
12:38:28 CEST 2005
CPU: XScale-PXA270 [69054117] revision 7 (ARMv5TE)
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Machine: KARO electronics PXA270 processor module
Memory policy: ECC disabled, Data cache writeback
Run Mode clock: 104.00MHz (*8)
Turbo Mode clock: 104.00MHz (*1.0, active)
Memory clock: 104.00MHz (/1)
System bus clock: 104.00MHz
On node 0 totalpages: 16384
DMA zone: 16384 pages, LIFO batch:4
Normal zone: 0 pages, LIFO batch:1
HighMem zone: 0 pages, LIFO batch:1
Built 1 zonelists
Kernel command line: root=/dev/nfs nfsroot=192.168.1.225:/tftpboot/rootfs ip=bootp \
panic=5 console=ttyS2,38400 ro Unhandled fault: imprecise external abort (0x406) at \
0xffffffff Unable to handle kernel NULL pointer dereference at virtual address \
00000048 pgd = c0004000
[00000048] *pgd=00000000
Internal error: Oops: f5 [#1]
Modules linked in:
CPU: 0
PC is at kmem_flagcheck+0x10/0x50
LR is at kmem_cache_alloc+0x1c/0xb8
pc : [<c006503c>] lr : [<c0065718>] Not tainted
sp : c01e5e9c ip : c01e5eac fp : c01e5ea8
r10: a001e9f0 r9 : 800000d3 r8 : c01e5f64
r7 : c004a3d4 r6 : 00000020 r5 : 00000007 r4 : 00000000
r3 : c022cfb4 r2 : 00000000 r1 : 00000020 r0 : 00000000
Flags: nZCv IRQs off FIQs off Mode SVC_32 Segment kernel
Control: 397F Table: A0004000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc01e41a4)
Stack: (0xc01e5e9c to 0xc01e6000)
5e80: c01e5ec8
5ea0: c01e5eac c0065718 c0065038 c01e60c0 00000007 c01e62c0 00000000 c01e5edc
5ec0: c01e5ecc c004a3d4 c0065708 00000001 c01e5efc c01e5ee0 c004ad78 c004a380
5ee0: 00000001 c01e60c0 00000007 00000000 c01e5f1c c01e5f00 c004af24 c004ad30
5f00: c01e60c0 00000007 600000d3 00000001 c01e5f3c c01e5f20 c004b00c c004ae94
5f20: 00000406 c01e4000 c01e7624 ffffffff c01e5f60 c01e5f40 c002c144 c004af80
5f40: ffffffff c01e5f98 ffffffff c0239454 a001ea20 c01e5fbc c01e5f64 c002449c
5f60: c002c0e4 00000003 00000000 00000000 f2e00000 00000000 c02256f8 ffffffff
5f80: c0239454 a001ea20 69054117 a001e9f0 c01e5fbc f2d00000 c01e5fac 00100000
5fa0: c001113c 800000d3 ffffffff c02256d0 c01e5fd8 c01e5fc0 c000ebf4 c00110d8
5fc0: 0000397d c0225770 c01e7034 c01e5ffc c01e5fdc c00086b4 c000eb9c c00082e4
5fe0: c0225788 0000397d c0225770 c01e7034 00000000 c01e6000 a000809c c0008640
Backtrace:
[<c006502c>] (kmem_flagcheck+0x0/0x50) from [<c0065718>] (kmem_cache_alloc+0x1c/0xb8)
[<c00656fc>] (kmem_cache_alloc+0x0/0xb8) from [<c004a3d4>] \
(__sigqueue_alloc+0x60/0xd0) r7 = 00000000 r6 = C01E62C0 r5 = 00000007 r4 = \
C01E60C0 [<c004a374>] (__sigqueue_alloc+0x0/0xd0) from [<c004ad78>] \
(send_signal+0x54/0x164) r4 = 00000001
[<c004ad24>] (send_signal+0x0/0x164) from [<c004af24>] \
(specific_send_sig_info+0x9c/0xec) r7 = 00000000 r6 = 00000007 r5 = C01E60C0 r4 = \
00000001 [<c004ae88>] (specific_send_sig_info+0x0/0xec) from [<c004b00c>] \
(force_sig_info+0x98/0xa0) r7 = 00000001 r6 = 600000D3 r5 = 00000007 r4 = \
C01E60C0 [<c004af74>] (force_sig_info+0x0/0xa0) from [<c002c144>] \
(do_DataAbort+0x6c/0xa0) r7 = FFFFFFFF r6 = C01E7624 r5 = C01E4000 r4 = 00000406
[<c002c0d8>] (do_DataAbort+0x0/0xa0) from [<c002449c>] (__dabt_svc+0x3c/0x60)
r8 = A001EA20 r7 = C0239454 r6 = FFFFFFFF r5 = C01E5F98
r4 = FFFFFFFF
[<c00110cc>] (pxa_init_irq+0x0/0x1a4) from [<c000ebf4>] (init_IRQ+0x64/0x78)
r4 = C02256D0
[<c000eb90>] (init_IRQ+0x0/0x78) from [<c00086b4>] (start_kernel+0x80/0x1b4)
r6 = C01E7034 r5 = C0225770 r4 = 0000397D
[<c0008634>] (start_kernel+0x0/0x1b4) from [<a000809c>] (0xa000809c)
r6 = C01E7034 r5 = C0225770 r4 = 0000397D
Code: e1a0c00d e92dd800 e24cb004 e2112001 (e5903048)
Kernel panic - not syncing: Attempted to kill the idle task!
Rebooting in 5 seconds..Reboot failed -- System halted
---------------------
Lothar Wassmann
-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic