All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] um: time-travel=ext fixes
@ 2020-09-10  9:29 Johannes Berg
  2020-09-10  9:29 ` [PATCH 1/2] um: time-travel: fix IRQ handling in time_travel_handle_message() Johannes Berg
  2020-09-10  9:29 ` [PATCH 2/2] um: time-travel: return the sequence number in ACK messages Johannes Berg
  0 siblings, 2 replies; 3+ messages in thread
From: Johannes Berg @ 2020-09-10  9:29 UTC (permalink / raw)
  To: linux-um

Hi,

I had been noticing some hangs in my simulations, and finally had
enough time (and a machine that they reproduce on easily - it's a
timing thing) to debug, so two small fixes for this.

johannes



_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] um: time-travel: fix IRQ handling in time_travel_handle_message()
  2020-09-10  9:29 [PATCH 0/2] um: time-travel=ext fixes Johannes Berg
@ 2020-09-10  9:29 ` Johannes Berg
  2020-09-10  9:29 ` [PATCH 2/2] um: time-travel: return the sequence number in ACK messages Johannes Berg
  1 sibling, 0 replies; 3+ messages in thread
From: Johannes Berg @ 2020-09-10  9:29 UTC (permalink / raw)
  To: linux-um; +Cc: Johannes Berg

From: Johannes Berg <johannes.berg@intel.com>

As the comment here indicates, we need to do the polling in the
idle loop without blocking interrupts, since interrupts can be
vhost-user messages that we must process even while in our idle
loop.

I don't know why I explained one thing and implemented another,
but we have indeed observed random hangs due to this, depending
on the timing of the messages.

Fixes: 88ce64249233 ("um: Implement time-travel=ext")
Change-Id: Ic74385f3d36466cc01cc8487fc54affe0fdf7f26
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 arch/um/kernel/time.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index 25eaa6a0c658..c07436e89e59 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -70,13 +70,17 @@ static void time_travel_handle_message(struct um_timetravel_msg *msg,
 	 * read of the message and write of the ACK.
 	 */
 	if (mode != TTMH_READ) {
+		bool disabled = irqs_disabled();
+
+		BUG_ON(mode == TTMH_IDLE && !disabled);
+
+		if (disabled)
+			local_irq_enable();
 		while (os_poll(1, &time_travel_ext_fd) != 0) {
-			if (mode == TTMH_IDLE) {
-				BUG_ON(!irqs_disabled());
-				local_irq_enable();
-				local_irq_disable();
-			}
+			/* nothing */
 		}
+		if (disabled)
+			local_irq_disable();
 	}
 
 	ret = os_read_file(time_travel_ext_fd, msg, sizeof(*msg));
-- 
2.26.2


_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] um: time-travel: return the sequence number in ACK messages
  2020-09-10  9:29 [PATCH 0/2] um: time-travel=ext fixes Johannes Berg
  2020-09-10  9:29 ` [PATCH 1/2] um: time-travel: fix IRQ handling in time_travel_handle_message() Johannes Berg
@ 2020-09-10  9:29 ` Johannes Berg
  1 sibling, 0 replies; 3+ messages in thread
From: Johannes Berg @ 2020-09-10  9:29 UTC (permalink / raw)
  To: linux-um; +Cc: Johannes Berg

From: Johannes Berg <johannes.berg@intel.com>

For external time travel, the protocol says to return the
incoming sequence number in the ACK message to aid debugging,
so do that.

Change-Id: Ib2bcca1371247b2f8643f35fb85ca5051addd8cc
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 arch/um/kernel/time.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index c07436e89e59..3d109ff3309b 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -106,6 +106,7 @@ static void time_travel_handle_message(struct um_timetravel_msg *msg,
 		break;
 	}
 
+	resp.seq = msg->seq;
 	os_write_file(time_travel_ext_fd, &resp, sizeof(resp));
 }
 
-- 
2.26.2


_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-09-10  9:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-10  9:29 [PATCH 0/2] um: time-travel=ext fixes Johannes Berg
2020-09-10  9:29 ` [PATCH 1/2] um: time-travel: fix IRQ handling in time_travel_handle_message() Johannes Berg
2020-09-10  9:29 ` [PATCH 2/2] um: time-travel: return the sequence number in ACK messages Johannes Berg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.