lkml.org 
[lkml]   [2012]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 15/28] Drivers: hv: Cleanup vmbus_set_event() to support win7 and beyond
    Date
    On win7 (ws2008 R2) and beyond, we have the notion of having dedicated interrupts on
    a per-channel basis. When a channel has a dedicated interrupt assigned, there is no need
    to set the interrupt bit in the shared page. Implement this optimization.

    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
    ---
    drivers/hv/connection.c | 13 ++++++++-----
    1 files changed, 8 insertions(+), 5 deletions(-)

    diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
    index 56b14e5..114050d 100644
    --- a/drivers/hv/connection.c
    +++ b/drivers/hv/connection.c
    @@ -383,10 +383,13 @@ int vmbus_post_msg(void *buffer, size_t buflen)
    int vmbus_set_event(struct vmbus_channel *channel)
    {
    u32 child_relid = channel->offermsg.child_relid;
    - /* Each u32 represents 32 channels */
    - sync_set_bit(child_relid & 31,
    - (unsigned long *)vmbus_connection.send_int_page +
    - (child_relid >> 5));

    - return hv_signal_event(hv_context.signal_event_param);
    + if (!channel->is_dedicated_interrupt) {
    + /* Each u32 represents 32 channels */
    + sync_set_bit(child_relid & 31,
    + (unsigned long *)vmbus_connection.send_int_page +
    + (child_relid >> 5));
    + }
    +
    + return hv_signal_event(channel->sig_event);
    }
    --
    1.7.4.1


    \
     
     \ /
      Last update: 2012-12-01 16:41    [W:4.241 / U:0.516 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site