提交 15e1674d 编写于 作者: S Stephen Hemminger 提交者: Greg Kroah-Hartman

vmbus: add prefetch to ring buffer iterator

When iterating over incoming ring elements from the host, prefetch
the next descriptor so that it is cache hot.
Signed-off-by: NStephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 03bad714
...@@ -357,11 +357,16 @@ static u32 hv_pkt_iter_avail(const struct hv_ring_buffer_info *rbi) ...@@ -357,11 +357,16 @@ static u32 hv_pkt_iter_avail(const struct hv_ring_buffer_info *rbi)
struct vmpacket_descriptor *hv_pkt_iter_first(struct vmbus_channel *channel) struct vmpacket_descriptor *hv_pkt_iter_first(struct vmbus_channel *channel)
{ {
struct hv_ring_buffer_info *rbi = &channel->inbound; struct hv_ring_buffer_info *rbi = &channel->inbound;
struct vmpacket_descriptor *desc;
if (hv_pkt_iter_avail(rbi) < sizeof(struct vmpacket_descriptor)) if (hv_pkt_iter_avail(rbi) < sizeof(struct vmpacket_descriptor))
return NULL; return NULL;
return hv_get_ring_buffer(rbi) + rbi->priv_read_index; desc = hv_get_ring_buffer(rbi) + rbi->priv_read_index;
if (desc)
prefetch((char *)desc + (desc->len8 << 3));
return desc;
} }
EXPORT_SYMBOL_GPL(hv_pkt_iter_first); EXPORT_SYMBOL_GPL(hv_pkt_iter_first);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册