All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] libxl: create control/sysrq xenstore node
@ 2018-09-04 11:39 Vitaly Kuznetsov
  2018-09-04 16:51 ` Wei Liu
  2018-09-05  8:22 ` Wei Liu
  0 siblings, 2 replies; 7+ messages in thread
From: Vitaly Kuznetsov @ 2018-09-04 11:39 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Wei Liu

'xl sysrq' command doesn't work with modern Linux guests with the following
message in guest's log:

 xen:manage: sysrq_handler: Error -13 writing sysrq in control/sysrq

xenstore trace confirms:

 IN 0x24bd9a0 20180904 04:36:32 WRITE (control/sysrq )
 OUT 0x24bd9a0 20180904 04:36:32 ERROR (EACCES )

The problem seems to be in the fact that we don't pre-create control/sysrq
xenstore node and libxl_send_sysrq() doing libxl__xs_printf() creates it as
read-only. As we want to allow guests to clean 'control/sysrq' after the
requested action is performed, we need to make this node writable.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
- Linux code will need to be modified too. With this patch we get something
like

 sysrq: SysRq : Emergency Sync
 xen:manage: Error -34 reading sysrq code in control/sysrq
 Emergency Sync complete

This new ERANGE fault happens because after we clean control/sysrq node
xenstore watch in the guest is re-asserted but the value is empty ("") so
xenbus_scanf() fails "%c" parsing.

It seems the feature is long broken.
---
 tools/libxl/libxl_create.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index b7b44e280b..d60f952f73 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -692,6 +692,9 @@ retry_transaction:
                         GCSPRINTF("%s/control/feature-s4", dom_path),
                         rwperm, ARRAY_SIZE(rwperm));
     }
+    libxl__xs_mknod(gc, t,
+                    GCSPRINTF("%s/control/sysrq", dom_path),
+                    rwperm, ARRAY_SIZE(rwperm));
     libxl__xs_mknod(gc, t,
                     GCSPRINTF("%s/device/suspend/event-channel", dom_path),
                     rwperm, ARRAY_SIZE(rwperm));
-- 
2.14.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

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

end of thread, other threads:[~2018-09-05 10:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-04 11:39 [PATCH] libxl: create control/sysrq xenstore node Vitaly Kuznetsov
2018-09-04 16:51 ` Wei Liu
2018-09-04 17:27   ` Vitaly Kuznetsov
2018-09-05  8:22     ` Wei Liu
2018-09-05 10:12       ` Roger Pau Monné
2018-09-05 10:15       ` Vitaly Kuznetsov
2018-09-05  8:22 ` Wei Liu

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.