lkml.org 
[lkml]   [2006]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectAllow MSI to work on kexec kernel
    We recently ran into a problem where the e1000 device failed to
    work properly on the kexec kernel. MSI was enabled for the
    device in the main kernel when it crashed. The e1000 driver
    tried to enable MSI on the kexec kernel, but the code bailed
    early when it found that MSI was already enabled in the hardware,
    even though the software state was not properly set up in the
    kexec'd kernel. This patch fixes the problem by moving the
    early return to after making sure that the software state
    is properly initialized.

    Signed-off-by: Rajesh Shah <rajesh.shah@intel.com>

    drivers/pci/msi.c | 7 +++----
    1 files changed, 3 insertions(+), 4 deletions(-)

    Index: linux/drivers/pci/msi.c
    ===================================================================
    --- linux.orig/drivers/pci/msi.c 2006-05-18 12:35:00.000000000 -0700
    +++ linux/drivers/pci/msi.c 2006-05-19 23:07:11.000000000 -0700
    @@ -879,14 +879,13 @@
    if (!(pos = pci_find_capability(dev, PCI_CAP_ID_MSI)))
    return -EINVAL;

    - pci_read_config_word(dev, msi_control_reg(pos), &control);
    - if (control & PCI_MSI_FLAGS_ENABLE)
    - return 0; /* Already in MSI mode */
    -
    if (!msi_lookup_vector(dev, PCI_CAP_ID_MSI)) {
    /* Lookup Sucess */
    unsigned long flags;

    + pci_read_config_word(dev, msi_control_reg(pos), &control);
    + if (control & PCI_MSI_FLAGS_ENABLE)
    + return 0; /* Already in MSI mode */
    spin_lock_irqsave(&msi_lock, flags);
    if (!vector_irq[dev->irq]) {
    msi_desc[dev->irq]->msi_attrib.state = 0;
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-05-23 19:19    [W:0.091 / U:0.432 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site