Skip to content
  • Kimberly Brown's avatar
    Drivers: hv: vmbus: Expose monitor data only when monitor pages are used · 46fc1548
    Kimberly Brown authored
    
    
    There are two methods for signaling the host: the monitor page mechanism
    and hypercalls. The monitor page mechanism is used by performance
    critical channels (storage, networking, etc.) because it provides
    improved throughput. However, latency is increased. Monitor pages are
    allocated to these channels.
    
    Monitor pages are not allocated to channels that do not use the monitor
    page mechanism. Therefore, these channels do not have a valid monitor id
    or valid monitor page data. In these cases, some of the "_show"
    functions return incorrect data. They return an invalid monitor id and
    data that is beyond the bounds of the hv_monitor_page array fields.
    
    The "channel->offermsg.monitor_allocated" value can be used to determine
    whether monitor pages have been allocated to a channel.
    
    Add "is_visible()" callback functions for the device-level and
    channel-level attribute groups. These functions will hide the monitor
    sysfs files when the monitor mechanism is not used.
    
    Remove ".default_attributes" from "vmbus_chan_attrs" and create a
    channel-level attribute group. These changes allow the new
    "is_visible()" callback function to be applied to the channel-level
    attributes.
    
    Call "sysfs_create_group()" in "vmbus_add_channel_kobj()" to create the
    channel's sysfs files. Add a new function,
    “vmbus_remove_channel_attr_group()”, and call it in "free_channel()" to
    remove the channel's sysfs files when the channel is closed.
    
    Signed-off-by: default avatarKimberly Brown <kimbrownkd@gmail.com>
    Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: default avatarMichael Kelley <mikelley@microsoft.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    46fc1548