Commit 5b4c0d87 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-linus-4.20a-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull xen fixes from Juergen Gross:
 "Only several small fixes and cleanups this time"

* tag 'for-linus-4.20a-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  xen: drop writing error messages to xenstore
  xen/pvh: don't try to unplug emulated devices
  add myself as reviewer for Xen support in Linux
  xen: remove redundant 'default n' from Kconfig
  xen/balloon: Support xend-based toolstack
  xen/pvh: increase early stack size
  xen: make xen_qlock_wait() nestable
  xen: fix race in xen_qlock_wait()
  xen/balloon: Grammar s/Is it/It is/
  xen: Make XEN_BACKEND selectable by DomU
parents c2101d01 7a048cec
...@@ -16317,6 +16317,7 @@ F: arch/arm64/include/asm/xen/ ...@@ -16317,6 +16317,7 @@ F: arch/arm64/include/asm/xen/
XEN HYPERVISOR INTERFACE XEN HYPERVISOR INTERFACE
M: Boris Ostrovsky <boris.ostrovsky@oracle.com> M: Boris Ostrovsky <boris.ostrovsky@oracle.com>
M: Juergen Gross <jgross@suse.com> M: Juergen Gross <jgross@suse.com>
R: Stefano Stabellini <sstabellini@kernel.org>
L: xen-devel@lists.xenproject.org (moderated for non-subscribers) L: xen-devel@lists.xenproject.org (moderated for non-subscribers)
T: git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git
S: Supported S: Supported
......
...@@ -134,6 +134,10 @@ void xen_unplug_emulated_devices(void) ...@@ -134,6 +134,10 @@ void xen_unplug_emulated_devices(void)
{ {
int r; int r;
/* PVH guests don't have emulated devices. */
if (xen_pvh_domain())
return;
/* user explicitly requested no unplug */ /* user explicitly requested no unplug */
if (xen_emul_unplug & XEN_UNPLUG_NEVER) if (xen_emul_unplug & XEN_UNPLUG_NEVER)
return; return;
......
...@@ -39,34 +39,25 @@ static void xen_qlock_kick(int cpu) ...@@ -39,34 +39,25 @@ static void xen_qlock_kick(int cpu)
*/ */
static void xen_qlock_wait(u8 *byte, u8 val) static void xen_qlock_wait(u8 *byte, u8 val)
{ {
unsigned long flags;
int irq = __this_cpu_read(lock_kicker_irq); int irq = __this_cpu_read(lock_kicker_irq);
/* If kicker interrupts not initialized yet, just spin */ /* If kicker interrupts not initialized yet, just spin */
if (irq == -1) if (irq == -1 || in_nmi())
return; return;
/* clear pending */ /* Guard against reentry. */
xen_clear_irq_pending(irq); local_irq_save(flags);
barrier();
/*
* We check the byte value after clearing pending IRQ to make sure
* that we won't miss a wakeup event because of the clearing.
*
* The sync_clear_bit() call in xen_clear_irq_pending() is atomic.
* So it is effectively a memory barrier for x86.
*/
if (READ_ONCE(*byte) != val)
return;
/* /* If irq pending already clear it. */
* If an interrupt happens here, it will leave the wakeup irq if (xen_test_irq_pending(irq)) {
* pending, which will cause xen_poll_irq() to return xen_clear_irq_pending(irq);
* immediately. } else if (READ_ONCE(*byte) == val) {
*/ /* Block until irq becomes pending (or a spurious wakeup) */
xen_poll_irq(irq);
}
/* Block until irq becomes pending (or perhaps a spurious wakeup) */ local_irq_restore(flags);
xen_poll_irq(irq);
} }
static irqreturn_t dummy_handler(int irq, void *dev_id) static irqreturn_t dummy_handler(int irq, void *dev_id)
......
...@@ -170,7 +170,7 @@ canary: ...@@ -170,7 +170,7 @@ canary:
.fill 48, 1, 0 .fill 48, 1, 0
early_stack: early_stack:
.fill 256, 1, 0 .fill BOOT_STACK_SIZE, 1, 0
early_stack_end: early_stack_end:
ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY, ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY,
......
...@@ -12,7 +12,6 @@ config XEN_BALLOON ...@@ -12,7 +12,6 @@ config XEN_BALLOON
config XEN_SELFBALLOONING config XEN_SELFBALLOONING
bool "Dynamically self-balloon kernel memory to target" bool "Dynamically self-balloon kernel memory to target"
depends on XEN && XEN_BALLOON && CLEANCACHE && SWAP && XEN_TMEM depends on XEN && XEN_BALLOON && CLEANCACHE && SWAP && XEN_TMEM
default n
help help
Self-ballooning dynamically balloons available kernel memory driven Self-ballooning dynamically balloons available kernel memory driven
by the current usage of anonymous memory ("committed AS") and by the current usage of anonymous memory ("committed AS") and
...@@ -27,7 +26,6 @@ config XEN_SELFBALLOONING ...@@ -27,7 +26,6 @@ config XEN_SELFBALLOONING
config XEN_BALLOON_MEMORY_HOTPLUG config XEN_BALLOON_MEMORY_HOTPLUG
bool "Memory hotplug support for Xen balloon driver" bool "Memory hotplug support for Xen balloon driver"
default n
depends on XEN_BALLOON && MEMORY_HOTPLUG depends on XEN_BALLOON && MEMORY_HOTPLUG
help help
Memory hotplug support for Xen balloon driver allows expanding memory Memory hotplug support for Xen balloon driver allows expanding memory
...@@ -86,7 +84,7 @@ config XEN_SCRUB_PAGES_DEFAULT ...@@ -86,7 +84,7 @@ config XEN_SCRUB_PAGES_DEFAULT
help help
Scrub pages before returning them to the system for reuse by Scrub pages before returning them to the system for reuse by
other domains. This makes sure that any confidential data other domains. This makes sure that any confidential data
is not accidentally visible to other domains. Is it more is not accidentally visible to other domains. It is more
secure, but slightly less efficient. This can be controlled with secure, but slightly less efficient. This can be controlled with
xen_scrub_pages=0 parameter and xen_scrub_pages=0 parameter and
/sys/devices/system/xen_memory/xen_memory0/scrub_pages. /sys/devices/system/xen_memory/xen_memory0/scrub_pages.
...@@ -105,8 +103,7 @@ config XEN_DEV_EVTCHN ...@@ -105,8 +103,7 @@ config XEN_DEV_EVTCHN
config XEN_BACKEND config XEN_BACKEND
bool "Backend driver support" bool "Backend driver support"
depends on XEN_DOM0 default XEN_DOM0
default y
help help
Support for backend device drivers that provide I/O services Support for backend device drivers that provide I/O services
to other virtual machines. to other virtual machines.
...@@ -227,7 +224,6 @@ config XEN_PCIDEV_BACKEND ...@@ -227,7 +224,6 @@ config XEN_PCIDEV_BACKEND
config XEN_PVCALLS_FRONTEND config XEN_PVCALLS_FRONTEND
tristate "XEN PV Calls frontend driver" tristate "XEN PV Calls frontend driver"
depends on INET && XEN depends on INET && XEN
default n
select XEN_XENBUS_FRONTEND select XEN_XENBUS_FRONTEND
help help
Experimental frontend for the Xen PV Calls protocol Experimental frontend for the Xen PV Calls protocol
...@@ -238,7 +234,6 @@ config XEN_PVCALLS_FRONTEND ...@@ -238,7 +234,6 @@ config XEN_PVCALLS_FRONTEND
config XEN_PVCALLS_BACKEND config XEN_PVCALLS_BACKEND
bool "XEN PV Calls backend driver" bool "XEN PV Calls backend driver"
depends on INET && XEN && XEN_BACKEND depends on INET && XEN && XEN_BACKEND
default n
help help
Experimental backend for the Xen PV Calls protocol Experimental backend for the Xen PV Calls protocol
(https://xenbits.xen.org/docs/unstable/misc/pvcalls.html). It (https://xenbits.xen.org/docs/unstable/misc/pvcalls.html). It
...@@ -264,7 +259,6 @@ config XEN_PRIVCMD ...@@ -264,7 +259,6 @@ config XEN_PRIVCMD
config XEN_STUB config XEN_STUB
bool "Xen stub drivers" bool "Xen stub drivers"
depends on XEN && X86_64 && BROKEN depends on XEN && X86_64 && BROKEN
default n
help help
Allow kernel to install stub drivers, to reserve space for Xen drivers, Allow kernel to install stub drivers, to reserve space for Xen drivers,
i.e. memory hotplug and cpu hotplug, and to block native drivers loaded, i.e. memory hotplug and cpu hotplug, and to block native drivers loaded,
...@@ -275,7 +269,6 @@ config XEN_STUB ...@@ -275,7 +269,6 @@ config XEN_STUB
config XEN_ACPI_HOTPLUG_MEMORY config XEN_ACPI_HOTPLUG_MEMORY
tristate "Xen ACPI memory hotplug" tristate "Xen ACPI memory hotplug"
depends on XEN_DOM0 && XEN_STUB && ACPI depends on XEN_DOM0 && XEN_STUB && ACPI
default n
help help
This is Xen ACPI memory hotplug. This is Xen ACPI memory hotplug.
...@@ -287,7 +280,6 @@ config XEN_ACPI_HOTPLUG_CPU ...@@ -287,7 +280,6 @@ config XEN_ACPI_HOTPLUG_CPU
tristate "Xen ACPI cpu hotplug" tristate "Xen ACPI cpu hotplug"
depends on XEN_DOM0 && XEN_STUB && ACPI depends on XEN_DOM0 && XEN_STUB && ACPI
select ACPI_CONTAINER select ACPI_CONTAINER
default n
help help
Xen ACPI cpu enumerating and hotplugging Xen ACPI cpu enumerating and hotplugging
...@@ -316,7 +308,6 @@ config XEN_ACPI_PROCESSOR ...@@ -316,7 +308,6 @@ config XEN_ACPI_PROCESSOR
config XEN_MCE_LOG config XEN_MCE_LOG
bool "Xen platform mcelog" bool "Xen platform mcelog"
depends on XEN_DOM0 && X86_64 && X86_MCE depends on XEN_DOM0 && X86_64 && X86_MCE
default n
help help
Allow kernel fetching MCE error from Xen platform and Allow kernel fetching MCE error from Xen platform and
converting it into Linux mcelog format for mcelog tools converting it into Linux mcelog format for mcelog tools
......
...@@ -76,12 +76,15 @@ static void watch_target(struct xenbus_watch *watch, ...@@ -76,12 +76,15 @@ static void watch_target(struct xenbus_watch *watch,
if (!watch_fired) { if (!watch_fired) {
watch_fired = true; watch_fired = true;
err = xenbus_scanf(XBT_NIL, "memory", "static-max", "%llu",
&static_max); if ((xenbus_scanf(XBT_NIL, "memory", "static-max",
if (err != 1) "%llu", &static_max) == 1) ||
static_max = new_target; (xenbus_scanf(XBT_NIL, "memory", "memory_static_max",
else "%llu", &static_max) == 1))
static_max >>= PAGE_SHIFT - 10; static_max >>= PAGE_SHIFT - 10;
else
static_max = new_target;
target_diff = (xen_pv_domain() || xen_initial_domain()) ? 0 target_diff = (xen_pv_domain() || xen_initial_domain()) ? 0
: static_max - balloon_stats.target_pages; : static_max - balloon_stats.target_pages;
} }
......
...@@ -278,10 +278,8 @@ static void xenbus_va_dev_error(struct xenbus_device *dev, int err, ...@@ -278,10 +278,8 @@ static void xenbus_va_dev_error(struct xenbus_device *dev, int err,
dev_err(&dev->dev, "%s\n", printf_buffer); dev_err(&dev->dev, "%s\n", printf_buffer);
path_buffer = kasprintf(GFP_KERNEL, "error/%s", dev->nodename); path_buffer = kasprintf(GFP_KERNEL, "error/%s", dev->nodename);
if (!path_buffer || if (path_buffer)
xenbus_write(XBT_NIL, path_buffer, "error", printf_buffer)) xenbus_write(XBT_NIL, path_buffer, "error", printf_buffer);
dev_err(&dev->dev, "failed to write error node for %s (%s)\n",
dev->nodename, printf_buffer);
kfree(printf_buffer); kfree(printf_buffer);
kfree(path_buffer); kfree(path_buffer);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment