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