xapp902 with 2.6.17 -- uartlite IRQ problems
robert corley
rdcorle at yahoo.com
Fri Oct 27 00:51:39 EST 2006
(original msg below)
David;
The RS232 interrupt is currently using IRQ #1.
I did a couple of things to verify interrupt generation and servicing:
1. Modified the uartlite isr to print a message every 128 interrupts (using the mod operator, etc.), and
2. Modified the xilinx design to push three signals out the ports for examination via an o-scope:
a. the RS232 interrupt to the PIC,
b. the PIC interrupt to the PPC405, and
c. the RS232 xmit output
On startup, I see a message from the uarlite ISR just once, as follows:
---------------------------
[ 66.063011] ulite_startup: irq 1 allocated (int. counter = 0), resetting buffers...
[ 68.111531] ulite_startup: enabling interrupts...
BusyBox v1.00-pre9 (2004.04.18-19-[ 69.386364] Int. counter = 0
#
---------------------------
But no more after that...
Oddly enough, there weren't any interrupt signals from the PIC or UARTLITE at any time.
I will modify the isr to dump the PIC and UARTLITE registers. In addition, I will monitor
the uartlite memory registers using XMD and see what I find.
Where is the code that enables the interrupts on the Xilinx PIC?
-cy
----- Original Message ----
From: David H. Lynch Jr. <dhlii at dlasys.net>
To: robert corley <rdcorle at yahoo.com>
Sent: Thursday, October 26, 2006 1:15:13 AM
Subject: Re: xapp902 with 2.6.17 -- uartlite & ramdisk problems
robert corley wrote:
> David et al;
>
> In my seemingly neverending effort to get linux up on the ML403, I went the route David B. did and worked with the xapp902 reference desing. I have met with a little success and appeal for some assistance...
>
> 1. The uart is dog slow. I suspect it has to do with interrupts (note the console dump below). I see this line:
>
> [ 2.637345] uartlite.0: ttyUL0 at MMIO 0xa0000000 (irq =
>
> and I think that the interrupt isn't properly registered with the PIC. What do you think?
>
> 2. Can you look below and comment on the ram disk size? I am not sure what this value should be. My ramdisk
> image is 4658942 bytes. I recall reading somewhere that the value for the initrd ram disk should be about 10k larger
> than the ramdisk size to allow for decompression. The # of pages and page size is throwing me off. Comments?
>
> -corley
>
I do not want to profess to be expert on the David B./Peter version
of the UartLite driver. But I would guess UartLite interrupts are not
working at all. What IRQ are you using ?
If it is IRQ 0 it is possible that it is being ignored = I had to
jigger the code a bit because IRQ 0 is frequently used by Linux as no
irq, and on Xilinx (an possibly many ppc's) it is valid.
I made irq -1 the invalid irq and if you set the irq to -1 I use the
timer.
Adding timer driver I/O was fairly trivial - I am trying to put
together a patch for David B./Peter's driver that does that.
The timer stuff is trivial. The problem is that Peters
transmit/receive assume that they are only called when it is safe to
send/receive - normal if driven by interrupts.
But the advantage to polled serial ports is they pretty much always
work. I currently have some minor interrupt issues on my driver (of
course Peter's fails in the same way on my system), but
I do not have to sweat it because I can just ignore uartlite
interrupts and things work fine.
Peter claims to be getting 1M xfers, that is probably not feasible
with polled IO.
>
>
>
> ===================== console dump ==========================
> [ 0.000000] Linux version 2.6.17.1 (rdcorle at athena) (gcc version 3.4.2) #2 Mon Oct 23 17:58:11 UTC 2006
> [ 0.000000] Xilinx ML403 Reference System (Virtex-4 FX)
> [ 0.000000] Built 1 zonelists
> [ 0.000000] Kernel command line: console=ttyUL0 single ip=off root=/dev/ram rw
> [ 0.000000] Xilinx INTC #0 at 0xD1000FC0 mapped to 0xFDFFFFC0
> [ 0.000000] PID hash table entries: 512 (order: 9, 2048 bytes)
> [ 0.000151] Console: colour dummy device 80x25
> [ 0.000560] Dentry cache hash table entries: 8192
> [ 0.001271] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
> [ 0.013924] Memory: 58572k available (1348k kernel code, 344k data, 80k init, 0k highmem)
> [ 0.200435] Mount-cache hash table entries: 512
> [ 0.203108] checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
> [ 2.504612] Freeing initrd memory: 4549k freed
> [ 2.508719] NET: Registered protocol family 16
> [ 2.518260] NET: Registered protocol family 2
> [ 2.583989] IP route cache hash table entries: 51
> [ 2.584467] TCP established hash table entries: 2048 (order: 3, 32768 bytes)
> [ 2.584936] TCP bind hash table entries: 1024 (order: 2, 20480 bytes)
> [ 2.585222] TCP: Hash tables configured (established 2048 bind 1024)
> [ 2.585257] TCP reno registered
> [ 2.591657] io scheduler noop registered
> [ 2.591817] io scheduler anticipatory registered (default)
> [ 2.591912] io scheduler deadline registered
> [ 2.592049] io scheduler cfq registered
> [ 2.637345] uartlite.0: ttyUL0 at MMIO 0xa0000000 (irq =
> [ 40.942337] RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 block size
> [ 42.944862] eth%d: XTemac using sgDMA mode.
> [ 44.072738] eth%d: XTemac buffer_descriptor_space: phy: 0xbb8000, virt: 0xff1 00000, size: 0x5000
> [ 46.424830] eth0: Xilinx TEMAC #0 at 0x60000000 mapped to 0xC5008000, irq=0
> [ 48.289878] mice: PS/2 mouse device common for all mice
> [ 49.694042] TCP bic registered
> [ 50.524157] RAMDISK: Compressed image found at block 0
> [ 52.672304] RAMDISK: incomplete write (-28 != 3276
> [ 56.000551] VFS: Mounted root (ext2 filesystem).
> [ 57.243671] Freeing unused kernel memory: 80k init
> [ 58.579050] attempt to access beyond end of device
> [ 59.867968] ram0: rw=0, want=10018, limit=8192
> [ 61.064912] Buffer I/O error on device ram0, logical block 5008
> [ 62.653149] attempt to access beyond end of device
> [ 63.942154] ram0: rw=0, want=10020, limit=8192
> [ 65.139082] Buffer I/O error on device ram0, logical block 5009
> [ 66.727305] attempt to access beyond end of device
> [ 68.016306] ram0: rw=0, want=10022, limit=8192
> [ 69.212688] BUG: soft lockup detected on CPU#0!
> [ 69.212711] Call Trace:
> [ 69.212733] [C024F780] [C000906C] show_stack+0x48/0x194 (unreliable)
> [ 69.212808] [C024F7C0] [C0031874] softlockup_tick+0xb4/0xd0
> [ 69.212853] [C024F7E0] [C001DDE8] run_local_timers+0x18/0x28
> [ 69.212905] [C024F7F0] [C001DE70] update_process_times+0x78/0xb4
> [ 69.212956] [C024F810] [C00045B4] timer_interrupt+0xd4/0x204
> [ 69.213000] [C024F850] [C000351C] ret_from_except+0x0/
> [ 69.213043] [C024F910] [C0015A9C] release_console_sem+0xe0/0x284
> [ 69.213105] [C024F950] [C0015DF4] vprintk+0x1b4/0x384
> [ 69.213149] [C024F9F0] [C0016014] printk+0x50/0x60
> [ 69.213189] [C024FA70] [C00B98DC] generic_make_request+0xc0/0x20c
> [ 69.213252] [C024FAB0] [C00B9AA8] submit_bio+0x80/0xd8
> [ 69.213294] [C024FAF0] [C005602C] submit_bh+0x14c/0x1a0
> [ 69.213342] [C024FB10] [C005854C] block_read_full_page+0x310/0x328
> [ 69.213391] [C024FB80] [C007D4FC] do_mpage_readpage+0x38c/0x538
> [ 69.213437] [C024FC00] [C007D880] mpage_readpage+0x50/0x78
> [ 69.213477] [C024FC50] [C00B0120] ext2_readpage+0x1c/0x2c
> [ 69.213516] [C024FC60] [C0034824] read_cache_page+0xf8/0x208
> [ 69.213562] [C024FC90] [C00AD490] ext2_get_page+0x24/0x308
> [ 69.213623] [C024FCC0] [C00ADAE8] ext2_find_entry+0x7c/0x17c
> [ 69.213663] [C024FD10] [C00ADC78] ext2_inode_by_name+0x18/0x58
> [ 69.213704] [C024FD30] [C00B191C] ext2_lookup+0x54/0xd8
> [ 69.213744] [C024FD50] [C0062E4C] do_lookup+0x138/0x19c
> [ 69.213793] [C024FD80] [C0063918] __link_path_walk+0x8f4/0x1014
> [ 69.213837] [C024FDD0] [C00640C0] link_path_walk+0x88/0x150
> [ 69.213879] [C024FE40] [C006432C] do_path_lookup+0x1a4/0x2b8
> [ 69.213924] [C024FE70] [C006452C] __path_lookup_intent_open+0x58/0xb8
> [ 69.213971] [C024FEA0] [C0064F14] open_namei+0x70/0x6dc
> [ 69.214015] [C024FEE0] [C00519E4] do_filp_open+0x30/0x78
> [ 69.214056] [C024FF50] [C0051E04] do_sys_open+0x70/0x10c
> [ 69.214095] [C024FF80] [C0002618] init+0x274/0x2e0
> [ 69.214137] [C024FFF0] [C00051FC] kernel_thread+0x44/0x60
> [ 117.445261] Buffer I/O error on device ram0, logical block 5010
> [ 119.033233] attempt to access beyond end of device
> [ 120.322015] ram0: rw=0, want=10018, limit=8192
> [ 121.518738] Buffer I/O error on device ram0, logical block 5008
> [ 123.106686] attempt to access beyond end of device
> [ 124.395468] ram0: rw=0, want=10020, limit=8192
> [ 125.592200] Buffer I/O error on device ram0, logical block 5009
> [ 127.180152] attempt to access beyond end of device
> [ 128.468929] ram0: rw=0, want=10022, limit=8192
> [ 129.665650] Buffer I/O error on device ram0, logical block 5010
> [ 131.253675] attempt to access beyond end of device
> [ 132.542475] ram0: rw=0, want=100
>
>
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>
--
Dave Lynch DLA Systems
Software Development: Embedded Linux
717.627.3770 dhlii at dlasys.net http://www.dlasys.net
fax: 1.253.369.9244 Cell: 1.717.587.7774
Over 25 years' experience in platforms, languages, and technologies too numerous to list.
"Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction."
Albert Einstein
More information about the Linuxppc-embedded
mailing list