lkml.org 
[lkml]   [2009]   [Oct]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: PANIC: early exception 08 rip 246:10 error ffffffff810251b5 cr2 0
    Valdis.Kletnieks@vt.edu wrote:
    > On Mon, 26 Oct 2009 11:34:20 PDT, Justin Mattock said:
    >
    >
    >> I can't seem to locate a right mailing list
    >> for ieee1394 for Linux. Anyways here is a
    >> url to flickr which has the image of the PANIC:
    >> http://www.flickr.com/photos/44066293@N08/4046711653/
    >> (hopefully you don't need to sign up to view)
    >>
    >> As for the problem, interesting thing here is if I add
    >> a printk to:
    >>
    >> if ((class == 0xffffffff))
    >> printk(KERN_BUG "init_ohci1394_dma: finished initializing OHCI DMA\n");
    >> continue; /* No device at this func */
    >>
    >> the system will boot-up, and the PANIC will not occur.
    >>
    >
    > Note that just sticking a printk in there without a { } pair enclosing
    > the printk and continue will change the semantics drastically - if the
    > conditional is true, it will do the printk instead of continuing. And
    > possibly more important, the continue just became unconditional.
    >
    > What *exactly* does your code look like now?
    >
    as of now in init_ohci1394_dma.c
    I did:



    void __init init_ohci1394_dma_on_all_controllers(void)
    {
    int num, slot, func;

    if (!early_pci_allowed())
    return;

    /* Poor man's PCI discovery, the only thing we can do at early boot */
    for (num = 0; num < 32; num++) {
    for (slot = 0; slot < 32; slot++) {
    for (func = 0; func < 8; func++) {
    u32 class = read_pci_config(num,slot,func,
    PCI_CLASS_REVISION);
    if ((class == 0xffffffff))
    + printk(KERN_DEBUG "putting a printk here keeps the
    machine from a panic\n");
    continue; /* No device at this func */

    if (class>>8 != PCI_CLASS_SERIAL_FIREWIRE_OHCI)
    continue; /* Not an OHCI-1394 device */

    init_ohci1394_controller(num, slot, func);
    break; /* Assume one controller per device */
    }
    }
    }
    printk(KERN_INFO "init_ohci1394_dma: finished initializing OHCI
    DMA\n");
    }


    interesting thing here, is I just was wanting to see were this thing was
    crashing. when adding this in(above) Ill see a long string during boot
    for a few seconds and then the machine boots up.
    Now if I add a printk(example below) to here:



    void __init init_ohci1394_dma_on_all_controllers(void)
    {
    int num, slot, func;

    if (!early_pci_allowed())
    return;

    /* Poor man's PCI discovery, the only thing we can do at early boot */
    for (num = 0; num < 32; num++) {
    for (slot = 0; slot < 32; slot++) {
    for (func = 0; func < 8; func++) {
    u32 class = read_pci_config(num,slot,func,
    PCI_CLASS_REVISION);
    if ((class == 0xffffffff))
    continue; /* No device at this func */

    if (class>>8 != PCI_CLASS_SERIAL_FIREWIRE_OHCI)
    + printk(KERN_DEBUG "putting a printk here keeps the
    machine from a panic\n");
    continue; /* Not an OHCI-1394 device */

    init_ohci1394_controller(num, slot, func);
    break; /* Assume one controller per device */
    }
    }
    }
    printk(KERN_INFO "init_ohci1394_dma: finished initializing OHCI
    DMA\n");
    }



    In dmesg I will see maybe 5 to 10 debug messages and then
    onto init_ohci1394_initialize.
    keep in mind I'm not familiar with any of this, but just looking
    at the code I see 0xffffffff and searching(google) tells me
    that that's something with 32bit, should maybe there be something
    with 0xffffffffffffffffff 64bit?

    Justin P. Mattock




    \
     
     \ /
      Last update: 2009-10-26 22:25    [W:0.026 / U:29.864 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site