linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mark Lord <liml@rtr.ca>
To: Jeff Garzik <jgarzik@pobox.com>,
	IDE/ATA development list <linux-ide@vger.kernel.org>
Subject: [PATCH 05/04] sata_mv: msi fix and cleanup
Date: Tue, 20 Jan 2009 13:19:02 -0500	[thread overview]
Message-ID: <49761596.3010000@rtr.ca> (raw)
In-Reply-To: <497507BF.3090608@rtr.ca>

Bug fix and cleanup for MSI support in sata_mv:

1. Set MV_HP_FLAG_MSI when MSI is enabled.
2. Remove redundant call of pci_intx().
3. Ensure that pci_disable_msi() is called on device removal.

Tested and working with Marvell 7042 PCIe hosts, though off by default.
Use of MSI still requires "msi=1" modparm for sata_mv.

Signed-off-by: Mark Lord <mlord@pobox.com>

--- old/drivers/ata/sata_mv.c	2009-01-19 17:12:51.000000000 -0500
+++ linux/drivers/ata/sata_mv.c	2009-01-20 13:06:06.000000000 -0500
@@ -3276,13 +3276,14 @@
 #ifdef CONFIG_PCI
 static int mv_pci_init_one(struct pci_dev *pdev,
 			   const struct pci_device_id *ent);
+static void mv_pci_remove_one(struct pci_dev *pdev);
 
 
 static struct pci_driver mv_pci_driver = {
 	.name			= DRV_NAME,
 	.id_table		= mv_pci_tbl,
 	.probe			= mv_pci_init_one,
-	.remove			= ata_pci_remove_one,
+	.remove			= mv_pci_remove_one,
 };
 
 /*
@@ -3367,6 +3368,26 @@
 }
 
 /**
+ *      mv_pci_remove_one - ensure MSI gets disabled on device removal
+ *      @pdev: PCI device
+ *
+ *      LOCKING:
+ *      Inherited from caller.
+ */
+static void mv_pci_remove_one(struct pci_dev *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct ata_host *host = dev_get_drvdata(dev);
+	struct mv_host_priv *hpriv = host->private_data;
+
+	if (hpriv->hp_flags & MV_HP_FLAG_MSI) {
+		devm_free_irq(host->dev, pdev->irq, host);
+		pci_disable_msi(pdev);
+	}
+	ata_pci_remove_one(pdev);
+}
+
+/**
  *      mv_pci_init_one - handle a positive probe of a PCI Marvell host
  *      @pdev: PCI device found
  *      @ent: PCI device ID entry for the matched host
@@ -3424,8 +3445,8 @@
 		return rc;
 
 	/* Enable interrupts */
-	if (msi && pci_enable_msi(pdev))
-		pci_intx(pdev, 1);
+	if (msi && 0 == pci_enable_msi(pdev))
+		hpriv->hp_flags |= MV_HP_FLAG_MSI;
 
 	mv_dump_pci_cfg(pdev, 0x68);
 	mv_print_info(host);

  reply	other threads:[~2009-01-20 18:19 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-19 23:04 [PATCH 01/04] sata_mv: fix 8-port timeouts on 508x/6081 chips Mark Lord
2009-01-19 23:05 ` [PATCH 02/04] sata_mv: don't read hc_irq_cause Mark Lord
2009-01-19 23:06   ` [PATCH 03/04] sata_mv: remove bogus nsect restriction Mark Lord
2009-01-19 23:07     ` [PATCH 04/04] sata_mv: msi masking Mark Lord
2009-01-20 18:19       ` Mark Lord [this message]
2009-01-20 18:49         ` [PATCH 06/06] sata_mv: remove experimental designation Mark Lord
2009-01-21  1:54       ` [PATCH 04/04] sata_mv: msi masking Grant Grundler
2009-01-21 15:15       ` Mark Lord
2009-01-21 15:31     ` [PATCH 04/05] sata_mv: msi masking fix (v2) Mark Lord
2009-01-21 15:34       ` [PATCH 05/05] sata_mv: no longer experimental (v2) Mark Lord
2009-01-26 11:43         ` Jeff Garzik
2009-01-21 17:03       ` [PATCH 04/05] sata_mv: msi masking fix (v2) Grant Grundler
2009-01-22  1:02       ` Tejun Heo
2009-01-22  5:17         ` Mark Lord
2009-01-22  5:19           ` Mark Lord
2009-01-22  5:22             ` Tejun Heo
2009-01-23 17:20               ` sata_mv: basic PIO-only ATAPI support? Mark Lord
2009-01-23 17:23                 ` Mark Lord
2009-01-23 17:52                   ` Alan Cox
2009-01-23 18:37                     ` Mark Lord
2009-01-26 11:42       ` [PATCH 04/05] sata_mv: msi masking fix (v2) Jeff Garzik
2009-01-26 11:39 ` [PATCH 01/04] sata_mv: fix 8-port timeouts on 508x/6081 chips Jeff Garzik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49761596.3010000@rtr.ca \
    --to=liml@rtr.ca \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).