Patchwork [2.6.32,v3] Conditional MSI support for sata_nv

login
register
mail settings
Submitter Tony Vroon
Date Aug. 5, 2009, 11:50 p.m.
Message ID <20090805235009.88C091007F@gold.linx.net>
Download mbox | patch
Permalink /patch/30813/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Tony Vroon - Aug. 5, 2009, 11:50 p.m.
At least the nVidia MCP55 controller quite happily supports MSI.
This adds an option to use it. It is disabled by default.
As per feedback by Robert Hancock, it will honour the user 
request as the kernel will not enable MSI where the controller 
or the specific system configuration do not support it.

Signed-off-by: Tony Vroon <tony@linx.net>
Cc: Robert Hancock <hancockrwd@gmail.com>

 MODULE_PARM_DESC(adma, "Enable use of ADMA (Default: false)");
 module_param_named(swncq, swncq_enabled, bool, 0444);
 MODULE_PARM_DESC(swncq, "Enable use of SWNCQ (Default: true)");
+module_param_named(msi, msi_enabled, bool, 0444);
+MODULE_PARM_DESC(msi, "Enable use of MSI (Default: false)");
 
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeff Garzik - Aug. 12, 2009, 10:26 a.m.
Tony Vroon wrote:
> At least the nVidia MCP55 controller quite happily supports MSI.
> This adds an option to use it. It is disabled by default.
> As per feedback by Robert Hancock, it will honour the user 
> request as the kernel will not enable MSI where the controller 
> or the specific system configuration do not support it.
> 
> Signed-off-by: Tony Vroon <tony@linx.net>
> Cc: Robert Hancock <hancockrwd@gmail.com>
> 
> diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
> index b2d11f3..4598f19 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,12 @@ static int nv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	} else if (type == SWNCQ)
>  		nv_swncq_host_init(host);
>  
> +	if (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);
> @@ -2558,4 +2565,6 @@ module_param_named(adma, adma_enabled, bool, 0444);
>  MODULE_PARM_DESC(adma, "Enable use of ADMA (Default: false)");
>  module_param_named(swncq, swncq_enabled, bool, 0444);
>  MODULE_PARM_DESC(swncq, "Enable use of SWNCQ (Default: true)");

applied


--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Leon Woestenberg - Aug. 12, 2009, 5:03 p.m.
Hello,

On Thu, Aug 6, 2009 at 1:50 AM, Tony Vroon<tony@linx.net> wrote:
> At least the nVidia MCP55 controller quite happily supports MSI.
> +static int msi_enabled;
> +       if (msi_enabled) {
> +               dev_printk(KERN_NOTICE, &pdev->dev, "Using MSI\n");
> +               pci_enable_msi(pdev);
> +       }
> +

I just saw this patch, didn't check the full sources.

Shouldn't there be a matching "if (msi_enabled)
pci_disabling_msi(pdev);" somewhere else?

Regards,

Leon.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Vroon - Aug. 12, 2009, 5:15 p.m.
On Wed, 2009-08-12 at 19:03 +0200, Leon Woestenberg wrote:
> Shouldn't there be a matching "if (msi_enabled)
> pci_disabling_msi(pdev);" somewhere else?

Hello there Leon,

Actually that is taken care of through other means. Please see Tejun
Heo's confirmation of this in the "v2" thread for this patch.

> Regards,
> Leon.

Regards,
Tony V.

Patch

diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index b2d11f3..4598f19 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,12 @@  static int nv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	} else if (type == SWNCQ)
 		nv_swncq_host_init(host);
 
+	if (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);
@@ -2558,4 +2565,6 @@  module_param_named(adma, adma_enabled, bool, 0444);