Don't have a Xilinx account yet?

  • Choose to receive important news and product information
  • Gain access to special content
  • Personalize your web experience on Xilinx.com

Create Account

Username

Password

Forgot your password?
XClose Panel
Xilinx Home
Reply
Contributor
vneethv
Posts: 51
Registered: ‎05-31-2010
0

Problem with REQUEST_IRQ in the device driver while working with custome IP.

Hi,

 

I am using linux kernel 2.6.30 downloaded from xilinx git. We have a pfifo/custome IP and had written a small driver for that. The pfifo is working on interrupt mode and the IRQ id is 0. As its a custome ip, there was no device tree entry for the same in the dts file. So we've added a device tree entry. When we call the request_irq, its failing and the kernel hangs.when i went throught the code i could understand that its failing at __setup_irq() call. the dts file and the device driver code is attached with this ..please lemme kniowIs there anything missing in my settings ?

 

i was referring 'http://xlnx.lithium.com/t5/Embedded-Linux/problem-to-request-an-IRQ-in-custom-linux-device-driver/td... and did the required changes. But still its the same.

 

My h/w IRQ is 0 and the virtual irq is 16 .

 

************************************************

DTS File - please find the custom-ip node added - in RED COLOR!!

***********************************************

/*
 * Device Tree Generator version: 1.3
 *
 * (C) Copyright 2007-2008 Xilinx, Inc.
 * (C) Copyright 2007-2009 Michal Simek
 *
 * Michal SIMEK <monstr@monstr.eu>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 * MA 02111-1307 USA
 *
 * CAUTION: This file is automatically generated by libgen.
 * Version: Xilinx EDK 12.1 EDK_MS1.53d
 *
 * XPS project directory: emb_sys_dbf_ate
 */

/dts-v1/;
/ {
    #address-cells = <1>;
    #size-cells = <1>;
    compatible = "xlnx,virtex440", "xlnx,virtex";
    dcr-parent = <&powerpc440>;
    model = "testing";
    aliases {
        ethernet0 = &ethernet_switch_temac;
        serial0 = &console_port;
    } ;
    chosen {
        bootargs = "console=ttyUL0  root=/dev/ram rw mtdparts=e4000000.flash:4M(bits),2M(kernel),25M(rootfs),128k(devtree),640K(unused),256K(uboot)";
        linux,stdout-path = "/plb@0/serial@c0100000";
    } ;
    cpus {
        #address-cells = <1>;
        #cpus = <0x1>;
        #size-cells = <0>;
        powerpc440: cpu@0 {
            #address-cells = <1>;
            #size-cells = <1>;
            clock-frequency = <200000000>;
            compatible = "PowerPC,440", "ibm,ppc440";
            d-cache-line-size = <0x20>;
            d-cache-size = <0x8000>;
            dcr-access-method = "native";
            dcr-controller ;
            device_type = "cpu";
            i-cache-line-size = <0x20>;
            i-cache-size = <0x8000>;
            model = "PowerPC,440";
            reg = <0>;
            timebase-frequency = <200000000>;
            xlnx,apu-control = <0x2000>;
            xlnx,apu-udi-0 = <0x0>;
            xlnx,apu-udi-1 = <0x0>;
            xlnx,apu-udi-10 = <0x0>;
            xlnx,apu-udi-11 = <0x0>;
            xlnx,apu-udi-12 = <0x0>;
            xlnx,apu-udi-13 = <0x0>;
            xlnx,apu-udi-14 = <0x0>;
            xlnx,apu-udi-15 = <0x0>;
            xlnx,apu-udi-2 = <0x0>;
            xlnx,apu-udi-3 = <0x0>;
            xlnx,apu-udi-4 = <0x0>;
            xlnx,apu-udi-5 = <0x0>;
            xlnx,apu-udi-6 = <0x0>;
            xlnx,apu-udi-7 = <0x0>;
            xlnx,apu-udi-8 = <0x0>;
            xlnx,apu-udi-9 = <0x0>;
            xlnx,dcr-autolock-enable = <0x1>;
            xlnx,dcu-rd-ld-cache-plb-prio = <0x0>;
            xlnx,dcu-rd-noncache-plb-prio = <0x0>;
            xlnx,dcu-rd-touch-plb-prio = <0x0>;
            xlnx,dcu-rd-urgent-plb-prio = <0x0>;
            xlnx,dcu-wr-flush-plb-prio = <0x0>;
            xlnx,dcu-wr-store-plb-prio = <0x0>;
            xlnx,dcu-wr-urgent-plb-prio = <0x0>;
            xlnx,dma0-control = <0x0>;
            xlnx,dma0-plb-prio = <0x0>;
            xlnx,dma0-rxchannelctrl = <0x1010000>;
            xlnx,dma0-rxirqtimer = <0x3ff>;
            xlnx,dma0-txchannelctrl = <0x1010000>;
            xlnx,dma0-txirqtimer = <0x3ff>;
            xlnx,dma1-control = <0x0>;
            xlnx,dma1-plb-prio = <0x0>;
            xlnx,dma1-rxchannelctrl = <0x1010000>;
            xlnx,dma1-rxirqtimer = <0x3ff>;
            xlnx,dma1-txchannelctrl = <0x1010000>;
            xlnx,dma1-txirqtimer = <0x3ff>;
            xlnx,dma2-control = <0x0>;
            xlnx,dma2-plb-prio = <0x0>;
            xlnx,dma2-rxchannelctrl = <0x1010000>;
            xlnx,dma2-rxirqtimer = <0x3ff>;
            xlnx,dma2-txchannelctrl = <0x1010000>;
            xlnx,dma2-txirqtimer = <0x3ff>;
            xlnx,dma3-control = <0x0>;
            xlnx,dma3-plb-prio = <0x0>;
            xlnx,dma3-rxchannelctrl = <0x1010000>;
            xlnx,dma3-rxirqtimer = <0x3ff>;
            xlnx,dma3-txchannelctrl = <0x1010000>;
            xlnx,dma3-txirqtimer = <0x3ff>;
            xlnx,endian-reset = <0x0>;
            xlnx,generate-plb-timespecs = <0x1>;
            xlnx,icu-rd-fetch-plb-prio = <0x0>;
            xlnx,icu-rd-spec-plb-prio = <0x0>;
            xlnx,icu-rd-touch-plb-prio = <0x0>;
            xlnx,interconnect-imask = <0xffffffff>;
            xlnx,mplb-allow-lock-xfer = <0x1>;
            xlnx,mplb-arb-mode = <0x0>;
            xlnx,mplb-awidth = <0x20>;
            xlnx,mplb-counter = <0x500>;
            xlnx,mplb-dwidth = <0x80>;
            xlnx,mplb-max-burst = <0x8>;
            xlnx,mplb-native-dwidth = <0x80>;
            xlnx,mplb-p2p = <0x0>;
            xlnx,mplb-prio-dcur = <0x2>;
            xlnx,mplb-prio-dcuw = <0x3>;
            xlnx,mplb-prio-icu = <0x4>;
            xlnx,mplb-prio-splb0 = <0x1>;
            xlnx,mplb-prio-splb1 = <0x0>;
            xlnx,mplb-read-pipe-enable = <0x1>;
            xlnx,mplb-sync-tattribute = <0x0>;
            xlnx,mplb-wdog-enable = <0x1>;
            xlnx,mplb-write-pipe-enable = <0x1>;
            xlnx,mplb-write-post-enable = <0x1>;
            xlnx,num-dma = <0x1>;
            xlnx,pir = <0xf>;
            xlnx,ppc440mc-addr-base = <0x0>;
            xlnx,ppc440mc-addr-high = <0x1fffffff>;
            xlnx,ppc440mc-arb-mode = <0x0>;
            xlnx,ppc440mc-bank-conflict-mask = <0xe00000>;
            xlnx,ppc440mc-control = <0xf850008f>;
            xlnx,ppc440mc-max-burst = <0x8>;
            xlnx,ppc440mc-prio-dcur = <0x2>;
            xlnx,ppc440mc-prio-dcuw = <0x3>;
            xlnx,ppc440mc-prio-icu = <0x4>;
            xlnx,ppc440mc-prio-splb0 = <0x1>;
            xlnx,ppc440mc-prio-splb1 = <0x0>;
            xlnx,ppc440mc-row-conflict-mask = <0x1fff00>;
            xlnx,ppcdm-asyncmode = <0x0>;
            xlnx,ppcds-asyncmode = <0x0>;
            xlnx,user-reset = <0x0>;
            DMA0: sdma@80 {
                compatible = "xlnx,ll-dma-1.00.a";
                dcr-reg = < 0x80 0x11 >;
                interrupt-parent = <&interrupt_controller>;
                interrupts = < 10 2 11 2 >;
            } ;
        } ;
    } ;
    ppc440mc_ddr2_0: memory@0 {
        device_type = "memory";
        reg = < 0x0 0x20000000 >;
    } ;
    primary_plb_v46_0: plb@0 {
        #address-cells = <1>;
        #size-cells = <1>;
        compatible = "xlnx,plb-v46-1.04.a", "xlnx,plb-v46-1.00.a", "simple-bus";
        ranges ;
        bootram_cntlr: xps-bram-if-cntlr@fffe0000 {
            compatible = "xlnx,xps-bram-if-cntlr-1.00.b", "xlnx,xps-bram-if-cntlr-1.00.a";
            reg = < 0xfffe0000 0x20000 >;
            xlnx,family = "virtex5";
        } ;
        central_dma: xps-central-dma@f8000000 {
            compatible = "xlnx,xps-central-dma-2.01.c";
            interrupt-parent = <&interrupt_controller>;
            interrupts = < 9 2 >;
            reg = < 0xf8000000 0x4000000 >;
            xlnx,family = "virtex5";
            xlnx,fifo-depth = <0x8>;
            xlnx,mplb-awidth = <0x20>;
            xlnx,mplb-dwidth = <0x80>;
            xlnx,mplb-native-dwidth = <0x20>;
            xlnx,rd-burst-size = <0x8>;
            xlnx,wr-burst-size = <0x8>;
        } ;
        pfifo: xps-rdp-pfifo@c4000000 {
            compatible = "xpfifo";
            interrupt-parent = <&interrupt_controller>;
            interrupts = < 0 0 >;
            xlnx,family = "virtex5";
            reg = < 0xc4000000 0x4000000 >;

            
        } ;
        console_port: serial@c0100000 {
            clock-frequency = <100000000>;
            compatible = "xlnx,xps-uartlite-1.01.a", "xlnx,xps-uartlite-1.00.a";
            current-speed = <115200>;
            device_type = "serial";
            interrupt-parent = <&interrupt_controller>;
            interrupts = < 13 0 >;
            port-number = <0>;
            reg = < 0xc0100000 0x100000 >;
            xlnx,baudrate = <0x1c200>;
            xlnx,data-bits = <0x8>;
            xlnx,family = "virtex5";
            xlnx,odd-parity = <0x1>;
            xlnx,use-parity = <0x0>;
        } ;
        ethernet_switch_temac: xps-ll-temac@f4100000 {
            #address-cells = <1>;
            #size-cells = <1>;
            compatible = "xlnx,compound";
            ethernet@f4100000 {
                compatible = "xlnx,xps-ll-temac-2.03.a", "xlnx,xps-ll-temac-1.00.a";
                device_type = "network";
                interrupt-parent = <&interrupt_controller>;
                interrupts = < 12 2 >;
                llink-connected = <&DMA0>;
                local-mac-address = [ 00 0a 35 ad 14 00 ];
                reg = < 0xf4100000 0x40 >;
                xlnx,avb = <0x0>;
                xlnx,bus2core-clk-ratio = <0x1>;
                xlnx,mcast-extend = <0x0>;
                xlnx,phy-type = <0x1>;
                xlnx,phyaddr = <0x1>;
                xlnx,rxcsum = <0x0>;
                xlnx,rxfifo = <0x1000>;
                xlnx,rxvlan-strp = <0x0>;
                xlnx,rxvlan-tag = <0x0>;
                xlnx,rxvlan-tran = <0x0>;
                xlnx,stats = <0x0>;
                xlnx,temac-type = <0x0>;
                xlnx,txcsum = <0x0>;
                xlnx,txfifo = <0x1000>;
                xlnx,txvlan-strp = <0x0>;
                xlnx,txvlan-tag = <0x0>;
                xlnx,txvlan-tran = <0x0>;
            } ;
        } ;
        flash_ctlr_cnfg_sw_image: flash@e4000000 {
            bank-width = <2>;
            compatible = "xlnx,xps-mch-emc-3.01.a", "cfi-flash";
            reg = < 0xe4000000 0x2000000 >;
            xlnx,family = "virtex5";
            xlnx,include-datawidth-matching-0 = <0x1>;
            xlnx,include-datawidth-matching-1 = <0x1>;
            xlnx,include-datawidth-matching-2 = <0x0>;
            xlnx,include-datawidth-matching-3 = <0x0>;
            xlnx,include-negedge-ioregs = <0x0>;
            xlnx,include-plb-ipif = <0x1>;
            xlnx,include-wrbuf = <0x1>;
            xlnx,max-mem-width = <0x10>;
            xlnx,mch-native-dwidth = <0x20>;
            xlnx,mch-splb-awidth = <0x20>;
            xlnx,mch-splb-clk-period-ps = <0x2710>;
            xlnx,mch0-accessbuf-depth = <0x10>;
            xlnx,mch0-protocol = <0x0>;
            xlnx,mch0-rddatabuf-depth = <0x10>;
            xlnx,mch1-accessbuf-depth = <0x10>;
            xlnx,mch1-protocol = <0x0>;
            xlnx,mch1-rddatabuf-depth = <0x10>;
            xlnx,mch2-accessbuf-depth = <0x10>;
            xlnx,mch2-protocol = <0x0>;
            xlnx,mch2-rddatabuf-depth = <0x10>;
            xlnx,mch3-accessbuf-depth = <0x10>;
            xlnx,mch3-protocol = <0x0>;
            xlnx,mch3-rddatabuf-depth = <0x10>;
            xlnx,mem0-width = <0x10>;
            xlnx,mem1-width = <0x10>;
            xlnx,mem2-width = <0x20>;
            xlnx,mem3-width = <0x20>;
            xlnx,num-banks-mem = <0x1>;
            xlnx,num-channels = <0x0>;
            xlnx,pagemode-flash-0 = <0x1>;
            xlnx,pagemode-flash-1 = <0x1>;
            xlnx,pagemode-flash-2 = <0x0>;
            xlnx,pagemode-flash-3 = <0x0>;
            xlnx,priority-mode = <0x0>;
            xlnx,synch-mem-0 = <0x0>;
            xlnx,synch-mem-1 = <0x0>;
            xlnx,synch-mem-2 = <0x0>;
            xlnx,synch-mem-3 = <0x0>;
            xlnx,synch-pipedelay-0 = <0x2>;
            xlnx,synch-pipedelay-1 = <0x2>;
            xlnx,synch-pipedelay-2 = <0x2>;
            xlnx,synch-pipedelay-3 = <0x2>;
            xlnx,tavdv-ps-mem-0 = <0x15f90>;
            xlnx,tavdv-ps-mem-1 = <0x15f90>;
            xlnx,tavdv-ps-mem-2 = <0x3a98>;
            xlnx,tavdv-ps-mem-3 = <0x3a98>;
            xlnx,tcedv-ps-mem-0 = <0x15f90>;
            xlnx,tcedv-ps-mem-1 = <0x15f90>;
            xlnx,tcedv-ps-mem-2 = <0x3a98>;
            xlnx,tcedv-ps-mem-3 = <0x3a98>;
            xlnx,thzce-ps-mem-0 = <0x4e20>;
            xlnx,thzce-ps-mem-1 = <0x4e20>;
            xlnx,thzce-ps-mem-2 = <0x1b58>;
            xlnx,thzce-ps-mem-3 = <0x1b58>;
            xlnx,thzoe-ps-mem-0 = <0x4e20>;
            xlnx,thzoe-ps-mem-1 = <0x4e20>;
            xlnx,thzoe-ps-mem-2 = <0x1b58>;
            xlnx,thzoe-ps-mem-3 = <0x1b58>;
            xlnx,tlzwe-ps-mem-0 = <0x0>;
            xlnx,tlzwe-ps-mem-1 = <0x0>;
            xlnx,tlzwe-ps-mem-2 = <0x0>;
            xlnx,tlzwe-ps-mem-3 = <0x0>;
            xlnx,tpacc-ps-flash-0 = <0x61a8>;
            xlnx,tpacc-ps-flash-1 = <0x61a8>;
            xlnx,tpacc-ps-flash-2 = <0x61a8>;
            xlnx,tpacc-ps-flash-3 = <0x61a8>;
            xlnx,twc-ps-mem-0 = <0x15f90>;
            xlnx,twc-ps-mem-1 = <0x15f90>;
            xlnx,twc-ps-mem-2 = <0x3a98>;
            xlnx,twc-ps-mem-3 = <0x3a98>;
            xlnx,twp-ps-mem-0 = <0x88b8>;
            xlnx,twp-ps-mem-1 = <0x88b8>;
            xlnx,twp-ps-mem-2 = <0x2ee0>;
            xlnx,twp-ps-mem-3 = <0x2ee0>;
            xlnx,xcl0-linesize = <0x4>;
            xlnx,xcl0-writexfer = <0x1>;
            xlnx,xcl1-linesize = <0x4>;
            xlnx,xcl1-writexfer = <0x1>;
            xlnx,xcl2-linesize = <0x4>;
            xlnx,xcl2-writexfer = <0x1>;
            xlnx,xcl3-linesize = <0x4>;
            xlnx,xcl3-writexfer = <0x1>;
        } ;
        interrupt_controller: interrupt-controller@f4000000 {
            #interrupt-cells = <0x2>;
            compatible = "xlnx,xps-intc-2.01.a", "xlnx,xps-intc-1.00.a";
            interrupt-controller ;
            reg = < 0xf4000000 0x100000 >;
            xlnx,kind-of-intr = <0xa000>;
            xlnx,num-intr-inputs = <0x10>;
        } ;
    } ;
}  ;

 

*******************************************

Device driver Code

***********************************************


#include <linux/module.h>
#include <linux/errno.h>
#include <asm/io.h>
#include <linux/fs.h>
#include "TJ_PFIFO.h"
#include <linux/init.h>
#include <asm/uaccess.h>
#include <linux/kernel.h>
#include <linux/spinlock.h>
#include <asm/siginfo.h>
#include <linux/sched.h>
#include <linux/cdev.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/device.h>
#include <linux/delay.h>
#include <linux/ioctl.h>
#include <linux/interrupt.h>
#include <linux/of_device.h>
#include <linux/of_platform.h>

volatile unsigned char *TJ_PFIFO_base_g;
TJ_PFIFO_debug_counters_t pfifo_debug_counters_g;
spinlock_t TJ_PFIFO_lock_g=SPIN_LOCK_UNLOCKED;


static int irq;
spinlock_t pfifo_spin = SPIN_LOCK_UNLOCKED;
static struct cdev TJ_PFIFO;

#define MAJOR_NUMBER 234

/* Interrupt Handler */
static irqreturn_t TJ_PFIFO_acu_rdp_irq_handler(int irq,void *data)
{
    return IRQ_HANDLED;
}



static int TJ_PFIFO_open(struct inode *inode, struct file *file)
{
    return 0;
}


static int TJ_PFIFO_write(struct file *file,const char __user * buffer,
size_t length, loff_t * offset)
{
    pfifo_debug_counters_g.write++;
    return 0;
}



static int TJ_PFIFO_read(struct file *file,const char __user * buffer, size_t length,
loff_t * offset)
{
    pfifo_debug_counters_g.read++;
    return 0;
}



static int TJ_PFIFO_release(struct inode *inode, struct file *file)
{

    return 0;
}



static const struct file_operations TJ_PFIFO_fops = {
    .owner      = THIS_MODULE,
    .open        = TJ_PFIFO_open,
    .release    = TJ_PFIFO_release,
    .read        = TJ_PFIFO_read,
    .write        = TJ_PFIFO_write,
};

static int xpfifo_remove(struct device *dev)
{
    return 0;        /* success */
}

static int __devexit xpfifo_of_remove(struct of_device *dev)
{
    return xpfifo_remove(&dev->dev);
}


static struct of_platform_driver xpfifo_of_driver = {
    .name        = "xpfifo",
    .remove        = __devexit_p(xpfifo_of_remove),
    .driver = {
        .name = "xpfifo",
    },
};



static __init int xpfifo_init(void)
{
    int result;
    struct device_node *np=NULL;
    struct resource  resource;
    unsigned long  *virt_addr;
    unsigned int  startAddr;
    int rv;
    int hw_irq;

    printk(KERN_INFO "Packet FIFO Driver");

    // get the device information from its "device tree" name
    np = of_find_node_by_name(NULL, "xps-rdp-pfifo");
    if (!np)
    {
        printk(KERN_ERR "pfifo: can't find compatible node");
        return -ENODEV;
    }
    else
    {
        result = of_address_to_resource(np, 0, &resource);
        if (result < 0)
        {
            printk(KERN_INFO "Result is less than 0");
            return result;
        }

        printk(KERN_INFO "pfifo: reg. size=%d Bytes\n", (u32)resource.end-(u32)resource.start);
        startAddr = (unsigned int)resource.start;

        // get a virtual irq number from device resource
        irq = of_irq_to_resource(np, 0, &resource);
        if (irq == NO_IRQ)
        {
            printk(KERN_ERR "pfifo: of_irq_to_resource() failed\n");
            of_node_put(np);
            return -ENODEV;
        }
        printk(KERN_INFO "pfifo: virtual irq=%d\n", irq);
        hw_irq = virq_to_hw(irq);
        printk(KERN_INFO "pfifo: hw IRQ = %d\n",hw_irq);

        spin_lock_init(&pfifo_spin);


        cdev_init(&TJ_PFIFO,&TJ_PFIFO_fops);
        if(cdev_add(&TJ_PFIFO,MKDEV(MAJOR_NUMBER,0),1)||(register_chrdev_region(MKDEV(MAJOR_NUMBER,0),1,"xps-rdp-pfifo")) < 0)
        {
            printk(KERN_INFO"pfifo - REGISTER Failed");
            return -ENODEV;
        }

        // map the physical address into the virtual memory space
        TJ_PFIFO_base_g= of_iomap(np, 0);

        printk(KERN_INFO "Requesting IRQ");
        // install the IRQ handler
        result = request_irq(irq, TJ_PFIFO_acu_rdp_irq_handler, 0, "xps-rdp-pfifo", NULL);
        if (result <= 0)
        {
            printk(KERN_ERR "enable to request IRQ%d : %d\n", irq, result);
            of_node_put(np);
            return -ENODEV;
        }
    }
    printk(KERN_INFO "Test module inserted successfully\n");

    return 0;

error:
    unregister_chrdev(TJ_PFIFO_MAJOR, PFIFO_DEVICE_NAME);
    TJ_PFIFO_dbgMsg(TJ_PFIFO_DEBUG_INSANE,"Error in Registering TJ_PFIFO device\n");
    return rv;
}

module_init(xpfifo_init);


static void __exit xpfifo_cleanup(void)
{
    of_unregister_platform_driver(&xpfifo_of_driver);
}

module_exit(xpfifo_cleanup);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("cgc");
MODULE_DESCRIPTION("Linux device interface for the PFIFO");
MODULE_ALIAS("platform:PFIFO");

 

********************************************

Kernel Boot log

**********************************************

zImage starting: loaded at 0x00400000 (sp: 0x008cceb0)
Allocating 0x382934 bytes for kernel ...
gunzipping (0x00000000 <- 0x0040e000:0x005a5b54)...done 0x36003c bytes
Attached initrd image at 0x005a6000-0x008cb95b
initrd head: 0x1f8b0808

Linux/PowerPC load: console=ttyUL0  root=/dev/ram rw mtdparts=e4000000.flash:4M(bits),2M(kernel),25M(rootfs),128k(devtree),640K(unused),256K(uboot)
Finalizing device tree... flat tree at 0x8d9300
Using Xilinx Virtex440 machine description
Linux version 2.6.30 (root@Skybeam) (gcc version 4.2.4) #106 PREEMPT Mon Sep 6 14:47:42 HOVST 2010
Found initrd at 0xc05a6000:0xc08cb95b
Zone PFN ranges:
  DMA      0x00000000 -> 0x00020000
  Normal   0x00020000 -> 0x00020000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0: 0x00000000 -> 0x00020000
MMU: Allocated 1088 bytes of context maps for 255 contexts
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
Kernel command line: console=ttyUL0  root=/dev/ram rw mtdparts=e4000000.flash:4M(bits),2M(kernel),25M(rootfs),128k(devtree),640K(unused),256K(uboot)
NR_IRQS:512
Xilinx intc at 0xf4000000 mapped to 0xfddff000
PID hash table entries: 2048 (order: 11, 8192 bytes)
clocksource: timebase mult[1400000] shift[22] registered
Console: colour dummy device 80x25
console [ttyUL0] enabled
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 512512k/524288k available (3288k kernel code, 11372k reserved, 144k data, 134k bss, 164k init)
Kernel virtual memory layout:
  * 0xffffe000..0xfffff000  : fixmap
  * 0xfde00000..0xfe000000  : consistent mem
  * 0xfddfe000..0xfde00000  : early ioremap
  * 0xe1000000..0xfddfe000  : vmalloc & ioremap
Calibrating delay loop... 399.36 BogoMIPS (lpj=798720)
Mount-cache hash table entries: 512
net_namespace: 880 bytes
NET: Registered protocol family 16
PCI: Probing PCI hardware
bio: create slab <bio-0> at 0
NET: Registered protocol family 2
IP route cache hash table entries: 16384 (order: 4, 65536 bytes)
TCP established hash table entries: 65536 (order: 7, 524288 bytes)
TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
TCP reno registered
NET: Registered protocol family 1
Trying to unpack rootfs image as initramfs...
rootfs image is not initramfs (no cpio magic); looks like an initrd
Freeing initrd memory: 3222k freed
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 1008
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
Packet FIFO Driver<6>pfifo: reg. size=67108863 Bytes
pfifo: virtual irq=16
pfifo: hw IRQ = 0
Requesting IRQ<6>

 

The kernel hangs after this. And it was hanging at the __setup_irq function. what is missing here ?? please help..!