From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@suse.de, linux-kernel@vger.kernel.org,
devel@linuxdriverproject.org, virtualization@lists.osdl.org
Cc: "K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Mike Sterling <mike.sterling@microsoft.com>,
Abhishek Kane <v-abkane@microsoft.com>,
Hank Janssen <hjanssen@microsoft.com>
Subject: [PATCH 03/12] Staging: hv: Cleanup irq management
Date: Tue, 15 Mar 2011 15:03:34 -0700 [thread overview]
Message-ID: <1300226624-27004-3-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1300226624-27004-2-git-send-email-kys@microsoft.com>
Now that vmbus_driver is a pci driver,
cleanup the irq allocation mess by using the standard
irq allocation mechanisms.
Note that this patch generates an error when the checkpatch
script is run because of the IRQF_SAMPLE_RANDOM flag used in
request_irq() function. This interrupt may be the only
external event this VM will get and consequently if this
flag (IRQF_SAMPLE_RANDOM) is not specified, experimentally
we have shown that the entropy in the VM will very very low.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Mike Sterling <mike.sterling@microsoft.com>
Signed-off-by: Abhishek Kane <v-abkane@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
---
drivers/staging/hv/vmbus_drv.c | 28 +++++++++++++---------------
1 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c
index 3d2789b..239b91c 100644
--- a/drivers/staging/hv/vmbus_drv.c
+++ b/drivers/staging/hv/vmbus_drv.c
@@ -17,6 +17,8 @@
* Authors:
* Haiyang Zhang <haiyangz@microsoft.com>
* Hank Janssen <hjanssen@microsoft.com>
+ *
+ * 3/9/2011: K. Y. Srinivasan - Significant restructuring and cleanup
*/
#include <linux/init.h>
#include <linux/module.h>
@@ -36,10 +38,6 @@
#include "vmbus_private.h"
-/* FIXME! We need to do this dynamically for PIC and APIC system */
-#define VMBUS_IRQ 0x5
-#define VMBUS_IRQ_VECTOR IRQ5_VECTOR
-
struct pci_dev *hv_pci_dev;
/* Main vmbus driver data structure */
@@ -69,7 +67,6 @@ EXPORT_SYMBOL(vmbus_loglevel);
/* (ALL_MODULES << 16 | DEBUG_LVL_ENTEREXIT); */
/* (((VMBUS | VMBUS_DRV)<<16) | DEBUG_LVL_ENTEREXIT); */
-static int vmbus_irq = VMBUS_IRQ;
/* Set up per device attributes in /sys/bus/vmbus/devices/<bus device> */
static struct device_attribute vmbus_device_attrs[] = {
@@ -369,7 +366,7 @@ static ssize_t vmbus_show_device_attr(struct device *dev,
* - get the irq resource
* - retrieve the channel offers
*/
-static int vmbus_bus_init(void)
+static int vmbus_bus_init(struct pci_dev *pdev)
{
struct vmbus_driver_context *vmbus_drv_ctx = &vmbus_drv;
int ret;
@@ -412,21 +409,23 @@ static int vmbus_bus_init(void)
}
/* Get the interrupt resource */
- ret = request_irq(vmbus_irq, vmbus_isr, IRQF_SAMPLE_RANDOM,
- driver_name, NULL);
+ ret = request_irq(pdev->irq, vmbus_isr,
+ IRQF_SHARED | IRQF_SAMPLE_RANDOM,
+ driver_name, pdev);
if (ret != 0) {
DPRINT_ERR(VMBUS_DRV, "ERROR - Unable to request IRQ %d",
- vmbus_irq);
+ pdev->irq);
bus_unregister(&vmbus_drv_ctx->bus);
ret = -1;
goto cleanup;
}
- vector = VMBUS_IRQ_VECTOR;
- DPRINT_INFO(VMBUS_DRV, "irq 0x%x vector 0x%x", vmbus_irq, vector);
+ vector = IRQ0_VECTOR + pdev->irq;
+ DPRINT_INFO(VMBUS_DRV, "irq 0x%x vector 0x%x", pdev->irq,
+ vector);
/*
* Notify the hypervisor of our irq and
@@ -435,7 +434,7 @@ static int vmbus_bus_init(void)
on_each_cpu(hv_synic_init, (void *)&vector, 1);
ret = vmbus_connect();
if (ret) {
- free_irq(vmbus_irq, NULL);
+ free_irq(pdev->irq, pdev);
bus_unregister(&vmbus_drv_ctx->bus);
goto cleanup;
}
@@ -466,7 +465,7 @@ static void vmbus_bus_exit(void)
bus_unregister(&vmbus_drv_ctx->bus);
- free_irq(vmbus_irq, NULL);
+ free_irq(hv_pci_dev->irq, hv_pci_dev);
tasklet_kill(&vmbus_drv_ctx->msg_dpc);
tasklet_kill(&vmbus_drv_ctx->event_dpc);
@@ -878,7 +877,7 @@ static int __devinit hv_pci_probe(struct pci_dev *pdev,
if (err)
return err;
- err = vmbus_bus_init();
+ err = vmbus_bus_init(pdev);
if (err)
pci_disable_device(pdev);
@@ -918,7 +917,6 @@ static void __exit hv_pci_exit(void)
MODULE_LICENSE("GPL");
MODULE_VERSION(HV_DRV_VERSION);
-module_param(vmbus_irq, int, S_IRUGO);
module_param(vmbus_loglevel, int, S_IRUGO);
module_init(hv_pci_init);
--
1.5.5.6
next prev parent reply other threads:[~2011-03-15 22:18 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-15 22:02 [PATCH 00/12] Staging: hv: Cleanup vmbus driver - Phase II K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 01/12] Staging: hv: Make vmbus driver a pci driver K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 02/12] Staging: hv: Cleanup root device handling K. Y. Srinivasan
2011-03-15 22:03 ` K. Y. Srinivasan [this message]
2011-03-15 22:03 ` [PATCH 04/12] Staging: hv: Rename vmbus_driver_context structure K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 05/12] Get rid of the forward declaration for vmbus_uevent K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 05/12] Staging: hv: " K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 06/12] Staging: hv: Get rid of the forward declaration for vmbus_match K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 07/12] Staging: hv: Get rid of the forward declaration for vmbus_probe K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 08/12] Staging: hv: Get rid of the forward declaration for vmbus_remove K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 09/12] Staging: hv: Get rid of the forward declaration for vmbus_shutdown K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 10/12] Staging: hv: Get rid of the forward declaration for vmbus_device_release K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 11/12] Staging: hv: Get rid of the forward declaration for vmbus_isr K. Y. Srinivasan
2011-03-15 22:03 ` [PATCH 12/12] Staging: hv: Get rid of the forward declaration for vmbus_show_device_attr K. Y. Srinivasan
2011-03-15 22:22 ` [PATCH 05/12] Staging: hv: Get rid of the forward declaration for vmbus_uevent Greg KH
2011-03-15 22:23 ` Greg KH
2011-03-15 22:39 ` KY Srinivasan
2011-03-15 22:51 ` Greg KH
2011-04-05 4:22 ` [PATCH 04/12] Staging: hv: Rename vmbus_driver_context structure Greg KH
2011-04-05 4:19 ` [PATCH 03/12] Staging: hv: Cleanup irq management Greg KH
2011-04-05 4:16 ` [PATCH 01/12] Staging: hv: Make vmbus driver a pci driver Greg KH
2011-03-15 22:04 ` [PATCH 00/12] Staging: hv: Cleanup vmbus driver - Phase II Greg KH
2011-03-15 22:24 ` KY Srinivasan
2011-03-15 22:30 ` Greg KH
2011-03-17 21:39 ` Valdis.Kletnieks
2011-03-17 21:45 ` Greg KH
2011-03-17 22:58 ` Valdis.Kletnieks
2011-04-16 0:34 ` Greg KH
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=1300226624-27004-3-git-send-email-kys@microsoft.com \
--to=kys@microsoft.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@suse.de \
--cc=haiyangz@microsoft.com \
--cc=hjanssen@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mike.sterling@microsoft.com \
--cc=v-abkane@microsoft.com \
--cc=virtualization@lists.osdl.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
Powered by JetHome