Re: [RFC/PATCH 4/16] Abstract MSI suspend
From: Michael Ellerman <hidden>
Date: 2007-01-29 07:22:57
On Sun, 2007-01-28 at 01:27 -0700, Eric W. Biederman wrote:
Michael Ellerman [off-list ref] writes:quoted
Currently pci_disable_device() disables MSI on a device by twiddling bits in config space via disable_msi_mode(). On some platforms that may not be appropriate, so abstract the MSI suspend logic into pci_disable_device_msi().quoted
Signed-off-by: Michael Ellerman <redacted> --- drivers/pci/msi.c | 11 +++++++++++ drivers/pci/pci.c | 7 +------ drivers/pci/pci.h | 2 ++ 3 files changed, 14 insertions(+), 6 deletions(-) Index: msi/drivers/pci/msi.c ===================================================================--- msi.orig/drivers/pci/msi.c +++ msi/drivers/pci/msi.c@@ -271,6 +271,17 @@ void disable_msi_mode(struct pci_dev *de pci_intx(dev, 1); /* enable intx */ } +void pci_disable_device_msi(struct pci_dev *dev) +{ + if (dev->msi_enabled) + disable_msi_mode(dev, pci_find_capability(dev, PCI_CAP_ID_MSI), + PCI_CAP_ID_MSI); + + if (dev->msix_enabled) + disable_msi_mode(dev, pci_find_capability(dev, PCI_CAP_ID_MSI), + PCI_CAP_ID_MSIX);Just a quick note. This is wrong. It should be PCI_CAP_ID_MSIX. The code that is being moved is buggy. So the patch itself doesn't make the situation any worse.
Greg, if you want to drop that patch I'll prepare two patches to fix it and then move it. I don't have any hardware to test, although I'm guessing no one does given that it's been broken since its inception. cheers -- Michael Ellerman OzLabs, IBM Australia Development Lab wwweb: http://michael.ellerman.id.au phone: +61 2 6212 1183 (tie line 70 21183) We do not inherit the earth from our ancestors, we borrow it from our children. - S.M.A.R.T Person
Attachments
- signature.asc [application/pgp-signature] 189 bytes