mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-04-20 11:29:54 +00:00
arm-autonomy/linux-arm-autonomy: Drop XenStore initialisation patch
With the linux-yocto version upgrade, the xenstore initialisation patch is no longer necessary. Issue-Id: SCM-2263 Signed-off-by: Richard Neill <richard.neill@arm.com> Change-Id: I293a5f81b48c57f3af1c99606af776537f35f0bb Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
@@ -1,98 +0,0 @@
|
||||
From 5f3d54c00f1f2682cee9c590c22655b0330ffd18 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <5f3d54c00f1f2682cee9c590c22655b0330ffd18.1612780458.git.diego.sueiro@arm.com>
|
||||
From: David Woodhouse <dwmw@amazon.co.uk>
|
||||
Date: Tue, 26 Jan 2021 17:01:49 +0000
|
||||
Subject: [PATCH] xen: Fix XenStore initialisation for XS_LOCAL
|
||||
|
||||
commit 5f46400f7a6a4fad635d5a79e2aa5a04a30ffea1 upstream.
|
||||
|
||||
In commit 3499ba8198ca ("xen: Fix event channel callback via INTX/GSI")
|
||||
I reworked the triggering of xenbus_probe().
|
||||
|
||||
I tried to simplify things by taking out the workqueue based startup
|
||||
triggered from wake_waiting(); the somewhat poorly named xenbus IRQ
|
||||
handler.
|
||||
|
||||
I missed the fact that in the XS_LOCAL case (Dom0 starting its own
|
||||
xenstored or xenstore-stubdom, which happens after the kernel is booted
|
||||
completely), that IRQ-based trigger is still actually needed.
|
||||
|
||||
So... put it back, except more cleanly. By just spawning a xenbus_probe
|
||||
thread which waits on xb_waitq and runs the probe the first time it
|
||||
gets woken, just as the workqueue-based hack did.
|
||||
|
||||
This is actually a nicer approach for *all* the back ends with different
|
||||
interrupt methods, and we can switch them all over to that without the
|
||||
complex conditions for when to trigger it. But not in -rc6. This is
|
||||
the minimal fix for the regression, although it's a step in the right
|
||||
direction instead of doing a partial revert and actually putting the
|
||||
workqueue back. It's also simpler than the workqueue.
|
||||
|
||||
Fixes: 3499ba8198ca ("xen: Fix event channel callback via INTX/GSI")
|
||||
Reported-by: Juergen Gross <jgross@suse.com>
|
||||
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
|
||||
Reviewed-by: Juergen Gross <jgross@suse.com>
|
||||
Link: https://lore.kernel.org/r/4c9af052a6e0f6485d1de43f2c38b1461996db99.camel@infradead.org
|
||||
Signed-off-by: Juergen Gross <jgross@suse.com>
|
||||
Cc: Salvatore Bonaccorso <carnil@debian.org>
|
||||
Cc: Jason Andryuk <jandryuk@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
|
||||
---
|
||||
drivers/xen/xenbus/xenbus_probe.c | 31 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 31 insertions(+)
|
||||
|
||||
diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c
|
||||
index c8f0282bb649..18ffd0551b54 100644
|
||||
--- a/drivers/xen/xenbus/xenbus_probe.c
|
||||
+++ b/drivers/xen/xenbus/xenbus_probe.c
|
||||
@@ -714,6 +714,23 @@ static bool xs_hvm_defer_init_for_callback(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
+static int xenbus_probe_thread(void *unused)
|
||||
+{
|
||||
+ DEFINE_WAIT(w);
|
||||
+
|
||||
+ /*
|
||||
+ * We actually just want to wait for *any* trigger of xb_waitq,
|
||||
+ * and run xenbus_probe() the moment it occurs.
|
||||
+ */
|
||||
+ prepare_to_wait(&xb_waitq, &w, TASK_INTERRUPTIBLE);
|
||||
+ schedule();
|
||||
+ finish_wait(&xb_waitq, &w);
|
||||
+
|
||||
+ DPRINTK("probing");
|
||||
+ xenbus_probe();
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int __init xenbus_probe_initcall(void)
|
||||
{
|
||||
/*
|
||||
@@ -725,6 +742,20 @@ static int __init xenbus_probe_initcall(void)
|
||||
!xs_hvm_defer_init_for_callback()))
|
||||
xenbus_probe();
|
||||
|
||||
+ /*
|
||||
+ * For XS_LOCAL, spawn a thread which will wait for xenstored
|
||||
+ * or a xenstore-stubdom to be started, then probe. It will be
|
||||
+ * triggered when communication starts happening, by waiting
|
||||
+ * on xb_waitq.
|
||||
+ */
|
||||
+ if (xen_store_domain_type == XS_LOCAL) {
|
||||
+ struct task_struct *probe_task;
|
||||
+
|
||||
+ probe_task = kthread_run(xenbus_probe_thread, NULL,
|
||||
+ "xenbus_probe");
|
||||
+ if (IS_ERR(probe_task))
|
||||
+ return PTR_ERR(probe_task);
|
||||
+ }
|
||||
return 0;
|
||||
}
|
||||
device_initcall(xenbus_probe_initcall);
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -40,12 +40,6 @@ python() {
|
||||
kernelVersion = d.getVar('LINUX_VERSION')
|
||||
pn = d.getVar('PN')
|
||||
|
||||
if kernelVersion and LooseVersion(kernelVersion) < '5.4.95' \
|
||||
and pn != 'linux-libc-headers' \
|
||||
and not pn.startswith('linux-linaro-arm') \
|
||||
and oe.utils.any_distro_features(d, "arm-autonomy-host"):
|
||||
d.appendVar('SRC_URI', ' file://files/0001-xen-Fix-XenStore-initialisation-for-XS_LOCAL.patch' )
|
||||
|
||||
if kernelVersion and LooseVersion(kernelVersion) < '5.4.99' \
|
||||
and pn != 'linux-libc-headers' \
|
||||
and oe.utils.any_distro_features(d, "arm-autonomy-guest"):
|
||||
|
||||
Reference in New Issue
Block a user