Skip to content

Commit

Permalink
Merge tag 'for-linus-4.20a-rc1-tag' of git://git.kernel.org/pub/scm/l…
Browse files Browse the repository at this point in the history
…inux/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
  • Loading branch information
Linus Torvalds committed Oct 30, 2018
2 parents c2101d0 + 7a048ce commit 5b4c0d8
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 42 deletions.
1 change: 1 addition & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -16317,6 +16317,7 @@ F: arch/arm64/include/asm/xen/
XEN HYPERVISOR INTERFACE
M: Boris Ostrovsky <boris.ostrovsky@oracle.com>
M: Juergen Gross <jgross@suse.com>
R: Stefano Stabellini <sstabellini@kernel.org>
L: xen-devel@lists.xenproject.org (moderated for non-subscribers)
T: git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git
S: Supported
Expand Down
4 changes: 4 additions & 0 deletions arch/x86/xen/platform-pci-unplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,10 @@ void xen_unplug_emulated_devices(void)
{
int r;

/* PVH guests don't have emulated devices. */
if (xen_pvh_domain())
return;

/* user explicitly requested no unplug */
if (xen_emul_unplug & XEN_UNPLUG_NEVER)
return;
Expand Down
33 changes: 12 additions & 21 deletions arch/x86/xen/spinlock.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,34 +39,25 @@ static void xen_qlock_kick(int cpu)
*/
static void xen_qlock_wait(u8 *byte, u8 val)
{
unsigned long flags;
int irq = __this_cpu_read(lock_kicker_irq);

/* If kicker interrupts not initialized yet, just spin */
if (irq == -1)
if (irq == -1 || in_nmi())
return;

/* clear pending */
xen_clear_irq_pending(irq);
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;
/* Guard against reentry. */
local_irq_save(flags);

/*
* If an interrupt happens here, it will leave the wakeup irq
* pending, which will cause xen_poll_irq() to return
* immediately.
*/
/* If irq pending already clear it. */
if (xen_test_irq_pending(irq)) {
xen_clear_irq_pending(irq);
} 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) */
xen_poll_irq(irq);
local_irq_restore(flags);
}

static irqreturn_t dummy_handler(int irq, void *dev_id)
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/xen/xen-pvh.S
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ canary:
.fill 48, 1, 0

early_stack:
.fill 256, 1, 0
.fill BOOT_STACK_SIZE, 1, 0
early_stack_end:

ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY,
Expand Down
13 changes: 2 additions & 11 deletions drivers/xen/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ config XEN_BALLOON
config XEN_SELFBALLOONING
bool "Dynamically self-balloon kernel memory to target"
depends on XEN && XEN_BALLOON && CLEANCACHE && SWAP && XEN_TMEM
default n
help
Self-ballooning dynamically balloons available kernel memory driven
by the current usage of anonymous memory ("committed AS") and
Expand All @@ -27,7 +26,6 @@ config XEN_SELFBALLOONING

config XEN_BALLOON_MEMORY_HOTPLUG
bool "Memory hotplug support for Xen balloon driver"
default n
depends on XEN_BALLOON && MEMORY_HOTPLUG
help
Memory hotplug support for Xen balloon driver allows expanding memory
Expand Down Expand Up @@ -86,7 +84,7 @@ config XEN_SCRUB_PAGES_DEFAULT
help
Scrub pages before returning them to the system for reuse by
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
xen_scrub_pages=0 parameter and
/sys/devices/system/xen_memory/xen_memory0/scrub_pages.
Expand All @@ -105,8 +103,7 @@ config XEN_DEV_EVTCHN

config XEN_BACKEND
bool "Backend driver support"
depends on XEN_DOM0
default y
default XEN_DOM0
help
Support for backend device drivers that provide I/O services
to other virtual machines.
Expand Down Expand Up @@ -227,7 +224,6 @@ config XEN_PCIDEV_BACKEND
config XEN_PVCALLS_FRONTEND
tristate "XEN PV Calls frontend driver"
depends on INET && XEN
default n
select XEN_XENBUS_FRONTEND
help
Experimental frontend for the Xen PV Calls protocol
Expand All @@ -238,7 +234,6 @@ config XEN_PVCALLS_FRONTEND
config XEN_PVCALLS_BACKEND
bool "XEN PV Calls backend driver"
depends on INET && XEN && XEN_BACKEND
default n
help
Experimental backend for the Xen PV Calls protocol
(https://xenbits.xen.org/docs/unstable/misc/pvcalls.html). It
Expand All @@ -264,7 +259,6 @@ config XEN_PRIVCMD
config XEN_STUB
bool "Xen stub drivers"
depends on XEN && X86_64 && BROKEN
default n
help
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,
Expand All @@ -275,7 +269,6 @@ config XEN_STUB
config XEN_ACPI_HOTPLUG_MEMORY
tristate "Xen ACPI memory hotplug"
depends on XEN_DOM0 && XEN_STUB && ACPI
default n
help
This is Xen ACPI memory hotplug.

Expand All @@ -287,7 +280,6 @@ config XEN_ACPI_HOTPLUG_CPU
tristate "Xen ACPI cpu hotplug"
depends on XEN_DOM0 && XEN_STUB && ACPI
select ACPI_CONTAINER
default n
help
Xen ACPI cpu enumerating and hotplugging

Expand Down Expand Up @@ -316,7 +308,6 @@ config XEN_ACPI_PROCESSOR
config XEN_MCE_LOG
bool "Xen platform mcelog"
depends on XEN_DOM0 && X86_64 && X86_MCE
default n
help
Allow kernel fetching MCE error from Xen platform and
converting it into Linux mcelog format for mcelog tools
Expand Down
13 changes: 8 additions & 5 deletions drivers/xen/xen-balloon.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,15 @@ static void watch_target(struct xenbus_watch *watch,

if (!watch_fired) {
watch_fired = true;
err = xenbus_scanf(XBT_NIL, "memory", "static-max", "%llu",
&static_max);
if (err != 1)
static_max = new_target;
else

if ((xenbus_scanf(XBT_NIL, "memory", "static-max",
"%llu", &static_max) == 1) ||
(xenbus_scanf(XBT_NIL, "memory", "memory_static_max",
"%llu", &static_max) == 1))
static_max >>= PAGE_SHIFT - 10;
else
static_max = new_target;

target_diff = (xen_pv_domain() || xen_initial_domain()) ? 0
: static_max - balloon_stats.target_pages;
}
Expand Down
6 changes: 2 additions & 4 deletions drivers/xen/xenbus/xenbus_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -278,10 +278,8 @@ static void xenbus_va_dev_error(struct xenbus_device *dev, int err,
dev_err(&dev->dev, "%s\n", printf_buffer);

path_buffer = kasprintf(GFP_KERNEL, "error/%s", dev->nodename);
if (!path_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);
if (path_buffer)
xenbus_write(XBT_NIL, path_buffer, "error", printf_buffer);

kfree(printf_buffer);
kfree(path_buffer);
Expand Down

0 comments on commit 5b4c0d8

Please sign in to comment.