Thread (8 messages) 8 messages, 4 authors, 2009-08-06

RE: [PATCH 2.6.32 v2] MCP55 SATA2 conditional MSI support for sata_nv

From: <hidden>
Date: 2009-08-06 15:42:06
Also in: lkml

-----Original Message-----
From: linux-kernel-owner@vger.kernel.org [mailto:linux-kernel-
owner@vger.kernel.org] On Behalf Of Robert Hancock
Sent: Wednesday, August 05, 2009 7:33 PM
To: Tony Vroon
Cc: Jeff Garzik; linux-ide@vger.kernel.org; LKML; Philip Langdale
Subject: Re: [PATCH 2.6.32 v2] MCP55 SATA2 conditional MSI support for
sata_nv

On 08/05/2009 01:20 PM, Tony Vroon wrote:
quoted
The nVidia MCP55 SATA2 controller quite happily supports MSI.
This adds an option to use it. It is disabled by default and
will only be honoured on the specific controller I tested.
This was suggested in 2007 back when the driver was less mature,
perhaps now is a better time for it.
I'm not sure the conditional on MCP55 is necessary, I would be inclined
to just try to enable it on any device if the option is specified.
pci_enable_msi will just fail harmlessly if the device doesn't support
MSI capability or the kernel detects MSI is not usable on the machine
(which these days I think we should be able to do fairly accurately on
HT chipsets..)
disable_msi() is missing right?

quoted
Signed-off-by: Tony Vroon<redacted>
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index b2d11f3..5ec29c4 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -602,6 +602,7 @@ MODULE_VERSION(DRV_VERSION);

  static int adma_enabled;
  static int swncq_enabled = 1;
+static int msi_enabled;

  static void nv_adma_register_mode(struct ata_port *ap)
  {
@@ -2459,6 +2460,13 @@ static int nv_init_one(struct pci_dev *pdev,
const struct pci_device_id *ent)
quoted
  	} else if (type == SWNCQ)
  		nv_swncq_host_init(host);

+	/* enable MSI if requested */
+	if (pdev->device == PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2&&
+		msi_enabled) {
+		dev_printk(KERN_NOTICE,&pdev->dev, "Using MSI\n");
+		pci_enable_msi(pdev);
+	}
+
  	pci_set_master(pdev);
  	return ata_host_activate(host, pdev->irq, ipriv->irq_handler,
  				 IRQF_SHARED, ipriv->sht);
..
msi_rc = pci_enable_msi(pdev);
...
ata_rc = ata_host_activate(host, pdev->irq, ipriv->irq_handler,
   				 IRQF_SHARED, ipriv->sht);
if (ata_rc && msi_enabled && !msi_rc)
	pci_disable_msi(pdev);

return ata_rc;



Chetan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help