From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com,
vkuznets@redhat.com, jasowang@redhat.com
Cc: Christopher Oo <t-chriso@microsoft.com>,
"K. Y. Srinivasan" <kys@microsoft.com>
Subject: [PATCH 05/13] Drivers: hv_vmbus: Fix signal to host condition
Date: Wed, 5 Aug 2015 00:52:40 -0700 [thread overview]
Message-ID: <1438761168-17134-5-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1438761168-17134-1-git-send-email-kys@microsoft.com>
From: Christopher Oo <t-chriso@microsoft.com>
Fixes a bug where previously hv_ringbuffer_read would pass in the old
number of bytes available to read instead of the expected old read index
when calculating when to signal to the host that the ringbuffer is empty.
Since the previous write size is already saved, also changes the
hv_need_to_signal_on_read to use the previously read value rather than
recalculating it.
Signed-off-by: Christopher Oo <t-chriso@microsoft.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
---
drivers/hv/ring_buffer.c | 14 +++-----------
1 files changed, 3 insertions(+), 11 deletions(-)
diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c
index 6361d12..70a1a9a 100644
--- a/drivers/hv/ring_buffer.c
+++ b/drivers/hv/ring_buffer.c
@@ -103,10 +103,9 @@ static bool hv_need_to_signal(u32 old_write, struct hv_ring_buffer_info *rbi)
* there is room for the producer to send the pending packet.
*/
-static bool hv_need_to_signal_on_read(u32 old_rd,
- struct hv_ring_buffer_info *rbi)
+static bool hv_need_to_signal_on_read(u32 prev_write_sz,
+ struct hv_ring_buffer_info *rbi)
{
- u32 prev_write_sz;
u32 cur_write_sz;
u32 r_size;
u32 write_loc = rbi->ring_buffer->write_index;
@@ -123,10 +122,6 @@ static bool hv_need_to_signal_on_read(u32 old_rd,
cur_write_sz = write_loc >= read_loc ? r_size - (write_loc - read_loc) :
read_loc - write_loc;
- prev_write_sz = write_loc >= old_rd ? r_size - (write_loc - old_rd) :
- old_rd - write_loc;
-
-
if ((prev_write_sz < pending_sz) && (cur_write_sz >= pending_sz))
return true;
@@ -517,7 +512,6 @@ int hv_ringbuffer_read(struct hv_ring_buffer_info *inring_info, void *buffer,
u32 next_read_location = 0;
u64 prev_indices = 0;
unsigned long flags;
- u32 old_read;
if (buflen <= 0)
return -EINVAL;
@@ -528,8 +522,6 @@ int hv_ringbuffer_read(struct hv_ring_buffer_info *inring_info, void *buffer,
&bytes_avail_toread,
&bytes_avail_towrite);
- old_read = bytes_avail_toread;
-
/* Make sure there is something to read */
if (bytes_avail_toread < buflen) {
spin_unlock_irqrestore(&inring_info->ring_lock, flags);
@@ -560,7 +552,7 @@ int hv_ringbuffer_read(struct hv_ring_buffer_info *inring_info, void *buffer,
spin_unlock_irqrestore(&inring_info->ring_lock, flags);
- *signal = hv_need_to_signal_on_read(old_read, inring_info);
+ *signal = hv_need_to_signal_on_read(bytes_avail_towrite, inring_info);
return 0;
}
--
1.7.4.1
next prev parent reply other threads:[~2015-08-05 6:27 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-05 7:52 [PATCH 00/13] Drivers: hv: vmbus: Miscellaneous fixes K. Y. Srinivasan
2015-08-05 6:29 ` KY Srinivasan
2015-08-05 7:52 ` [PATCH 01/13] drivers:hv: Modify hv_vmbus to search for all MMIO ranges available K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 02/13] drivers:hv: Move MMIO range picking from hyper_fb to hv_vmbus K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 03/13] Drivers: hv: vmbus: Improve the CPU affiliation for channels K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 04/13] Drivers: hv: vmbus: Further improve CPU affiliation logic K. Y. Srinivasan
2015-08-05 7:52 ` K. Y. Srinivasan [this message]
2015-08-05 7:52 ` [PATCH 06/13] drivers/hv: Migrate to new 'set-state' interface K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 07/13] Drivers: hv: vmbus: Implement a clocksource based on the TSC page K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 08/13] Drivers: hv: vmbus: add a sysfs attr to show the binding of channel/VP K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 09/13] tools: hv: add a python script lsvmbus to list VMBus devices K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 10/13] Drivers: hv: vmbus: document the VMBus sysfs files K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 11/13] cpu-hotplug: convert cpu_hotplug_disabled to a counter K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 12/13] cpu-hotplug: export cpu_hotplug_enable/cpu_hotplug_disable K. Y. Srinivasan
2015-08-05 7:52 ` [PATCH 13/13] Drivers: hv: vmbus: use cpu_hotplug_enable/disable K. Y. Srinivasan
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=1438761168-17134-5-git-send-email-kys@microsoft.com \
--to=kys@microsoft.com \
--cc=apw@canonical.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@linuxfoundation.org \
--cc=jasowang@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=olaf@aepfle.de \
--cc=t-chriso@microsoft.com \
--cc=vkuznets@redhat.com \
/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