On Mon, 2011-08-15 at 15:12 -0700, K. Y. Srinivasan wrote:
> The message processing function needs to execute on the same CPU where
> the interrupt was taken. tasklets cannot gurantee this; so, invoke the
> function directly.
>
> Signed-off-by: K. Y. Srinivasan <[email protected]>
> Signed-off-by: Haiyang Zhang <[email protected]>
> ---
tasklets are guaranteed to run on the same CPU as the function that
scheduled them.
Unless I'm missing something?
> drivers/staging/hv/vmbus_drv.c | 4 +---
> 1 files changed, 1 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c
> index bb25c5b..1d4e878 100644
> --- a/drivers/staging/hv/vmbus_drv.c
> +++ b/drivers/staging/hv/vmbus_drv.c
> @@ -39,7 +39,6 @@
>
> static struct acpi_device *hv_acpi_dev;
>
> -static struct tasklet_struct msg_dpc;
> static struct tasklet_struct event_dpc;
>
> unsigned int vmbus_loglevel = (ALL_MODULES << 16 | INFO_LVL);
> @@ -425,7 +424,7 @@ static irqreturn_t vmbus_isr(int irq, void *dev_id)
> /* Check if there are actual msgs to be process */
> if (msg->header.message_type != HVMSG_NONE) {
> handled = true;
> - tasklet_schedule(&msg_dpc);
> + vmbus_on_msg_dpc(0);
> }
>
> page_addr = hv_context.synic_event_page[cpu];
> @@ -465,7 +464,6 @@ static int vmbus_bus_init(int irq)
> }
>
> /* Initialize the bus context */
> - tasklet_init(&msg_dpc, vmbus_on_msg_dpc, 0);
> tasklet_init(&event_dpc, vmbus_on_event, 0);
>
> /* Now, register the bus with LDM */
--
Sasha.
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/virtualization