lkml.org 
[lkml]   [2006]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] ALSA: hda-intel - Disable MSI support by default
    On Wed, 15 Nov 2006 14:23:20 -0500
    Jeff Garzik <jeff@garzik.org> wrote:

    > Stephen Hemminger wrote:
    > > On Tue, 14 Nov 2006 23:24:04 -0500
    > > Jeff Garzik <jeff@garzik.org> wrote:
    > >
    > >> David Miller wrote:
    > >>> Is this absolutely true? I've never been sure about this point, and I
    > >>> was rather convinced after reading various documents that once you
    > >>> program up the MSI registers to start generating MSI this implicitly
    > >>> disabled INTX and this was even in the PCI specification.
    > >>>
    > >>> It would be great to get a definitive answer on this.
    > >>>
    > >>> If it is mandatory, perhaps the driver shouldn't be doing it and
    > >>> rather the PCI layer MSI enabling should.
    > >
    > > pci_enable_msi() calls msi_capability_init() and that disables intx
    > > already.
    > [...]
    > > The driver shouldn't deal with this, pci_disable_msi() does.
    >
    > Explicit code reference please?
    >
    > AFAICS the PCI layer only touched INTx bit for PCI-Express devices.

    Yeah, why is that? Shouldn't it always be adjusting intx.
    Are there are any MSI capable devices on non-PCI express?
    Sorry, don't have PCI spec (costs real $$) to check.

    --- 2.6.19-rc5.orig/drivers/pci/msi.c 2006-11-15 11:46:23.000000000 -0800
    +++ 2.6.19-rc5/drivers/pci/msi.c 2006-11-15 11:46:55.000000000 -0800
    @@ -255,10 +255,7 @@
    pci_write_config_word(dev, msi_control_reg(pos), control);
    dev->msix_enabled = 1;
    }
    - if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
    - /* PCI Express Endpoint device detected */
    - pci_intx(dev, 0); /* disable intx */
    - }
    + pci_intx(dev, 0); /* disable intx */
    }

    void disable_msi_mode(struct pci_dev *dev, int pos, int type)
    @@ -276,10 +273,8 @@
    pci_write_config_word(dev, msi_control_reg(pos), control);
    dev->msix_enabled = 0;
    }
    - if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
    - /* PCI Express Endpoint device detected */
    - pci_intx(dev, 1); /* enable intx */
    - }
    +
    + pci_intx(dev, 1); /* re-enable intx */
    }

    static int msi_lookup_irq(struct pci_dev *dev, int type)



    --
    Stephen Hemminger <shemminger@osdl.org>
    -
    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-11-15 20:55    [W:0.026 / U:30.304 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site