]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 May 2019 10:52:43 +0000 (12:52 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 May 2019 10:52:43 +0000 (12:52 +0200)
added patches:
kbuild-turn-auto.conf.cmd-into-a-mandatory-include-file.patch
libnvdimm-namespace-fix-label-tracking-error.patch
powerpc-32s-fix-flush_hash_pages-on-smp.patch
smb3-display-session-id-in-debug-data.patch
xen-pvh-correctly-setup-the-pv-efi-interface-for-dom0.patch
xen-pvh-set-xen_domain_type-to-hvm-in-xen_pvh_init.patch

queue-5.1/kbuild-turn-auto.conf.cmd-into-a-mandatory-include-file.patch [new file with mode: 0644]
queue-5.1/libnvdimm-namespace-fix-label-tracking-error.patch [new file with mode: 0644]
queue-5.1/powerpc-32s-fix-flush_hash_pages-on-smp.patch [new file with mode: 0644]
queue-5.1/series
queue-5.1/smb3-display-session-id-in-debug-data.patch [new file with mode: 0644]
queue-5.1/xen-pvh-correctly-setup-the-pv-efi-interface-for-dom0.patch [new file with mode: 0644]
queue-5.1/xen-pvh-set-xen_domain_type-to-hvm-in-xen_pvh_init.patch [new file with mode: 0644]

diff --git a/queue-5.1/kbuild-turn-auto.conf.cmd-into-a-mandatory-include-file.patch b/queue-5.1/kbuild-turn-auto.conf.cmd-into-a-mandatory-include-file.patch
new file mode 100644 (file)
index 0000000..eaadc83
--- /dev/null
@@ -0,0 +1,92 @@
+From d2f8ae0e4c5c754f1b2a7b8388d19a1a977e698a Mon Sep 17 00:00:00 2001
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+Date: Sun, 12 May 2019 11:13:48 +0900
+Subject: kbuild: turn auto.conf.cmd into a mandatory include file
+
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+
+commit d2f8ae0e4c5c754f1b2a7b8388d19a1a977e698a upstream.
+
+syncconfig is responsible for keeping auto.conf up-to-date, so if it
+fails for any reason, the build must be terminated immediately.
+
+However, since commit 9390dff66a52 ("kbuild: invoke syncconfig if
+include/config/auto.conf.cmd is missing"), Kbuild continues running
+even after syncconfig fails.
+
+You can confirm this by intentionally making syncconfig error out:
+
+#  diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
+#  index 08ba146..307b9de 100644
+#  --- a/scripts/kconfig/confdata.c
+#  +++ b/scripts/kconfig/confdata.c
+#  @@ -1023,6 +1023,9 @@ int conf_write_autoconf(int overwrite)
+#          FILE *out, *tristate, *out_h;
+#          int i;
+#
+#  +       if (overwrite)
+#  +               return 1;
+#  +
+#          if (!overwrite && is_present(autoconf_name))
+#                  return 0;
+
+Then, syncconfig fails, but Make would not stop:
+
+  $ make -s mrproper allyesconfig defconfig
+  $ make
+  scripts/kconfig/conf  --syncconfig Kconfig
+
+  *** Error during sync of the configuration.
+
+  make[2]: *** [scripts/kconfig/Makefile;69: syncconfig] Error 1
+  make[1]: *** [Makefile;557: syncconfig] Error 2
+  make: *** [include/config/auto.conf.cmd] Deleting file 'include/config/tristate.conf'
+  make: Failed to remake makefile 'include/config/auto.conf'.
+    SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
+    SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
+    SYSHDR  arch/x86/include/generated/asm/unistd_64_x32.h
+    SYSTBL  arch/x86/include/generated/asm/syscalls_64.h
+  [ continue running ... ]
+
+The reason is in the behavior of a pattern rule with multi-targets.
+
+  %/auto.conf %/auto.conf.cmd %/tristate.conf: $(KCONFIG_CONFIG)
+          $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
+
+GNU Make knows this rule is responsible for making all the three files
+simultaneously. As far as examined, auto.conf.cmd is the target in
+question when this rule is invoked. It is probably because auto.conf.cmd
+is included below the inclusion of auto.conf.
+
+The inclusion of auto.conf is mandatory, while that of auto.conf.cmd
+is optional. GNU Make does not care about the failure in the process
+of updating optional include files.
+
+I filed this issue (https://savannah.gnu.org/bugs/?56301) in case this
+behavior could be improved somehow in future releases of GNU Make.
+Anyway, it is quite easy to fix our Makefile.
+
+Given that auto.conf is already a mandatory include file, there is no
+reason to stick auto.conf.cmd optional. Make it mandatory as well.
+
+Cc: linux-stable <stable@vger.kernel.org> # 5.0+
+Fixes: 9390dff66a52 ("kbuild: invoke syncconfig if include/config/auto.conf.cmd is missing")
+Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+[commented out diff above to keep patch happy - gregkh]
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -636,7 +636,7 @@ ifeq ($(may-sync-config),1)
+ # Read in dependencies to all Kconfig* files, make sure to run syncconfig if
+ # changes are detected. This should be included after arch/$(SRCARCH)/Makefile
+ # because some architectures define CROSS_COMPILE there.
+--include include/config/auto.conf.cmd
++include include/config/auto.conf.cmd
+ $(KCONFIG_CONFIG):
+       @echo >&2 '***'
diff --git a/queue-5.1/libnvdimm-namespace-fix-label-tracking-error.patch b/queue-5.1/libnvdimm-namespace-fix-label-tracking-error.patch
new file mode 100644 (file)
index 0000000..4652733
--- /dev/null
@@ -0,0 +1,158 @@
+From c4703ce11c23423d4b46e3d59aef7979814fd608 Mon Sep 17 00:00:00 2001
+From: Dan Williams <dan.j.williams@intel.com>
+Date: Tue, 30 Apr 2019 21:51:21 -0700
+Subject: libnvdimm/namespace: Fix label tracking error
+
+From: Dan Williams <dan.j.williams@intel.com>
+
+commit c4703ce11c23423d4b46e3d59aef7979814fd608 upstream.
+
+Users have reported intermittent occurrences of DIMM initialization
+failures due to duplicate allocations of address capacity detected in
+the labels, or errors of the form below, both have the same root cause.
+
+    nd namespace1.4: failed to track label: 0
+    WARNING: CPU: 17 PID: 1381 at drivers/nvdimm/label.c:863
+
+    RIP: 0010:__pmem_label_update+0x56c/0x590 [libnvdimm]
+    Call Trace:
+     ? nd_pmem_namespace_label_update+0xd6/0x160 [libnvdimm]
+     nd_pmem_namespace_label_update+0xd6/0x160 [libnvdimm]
+     uuid_store+0x17e/0x190 [libnvdimm]
+     kernfs_fop_write+0xf0/0x1a0
+     vfs_write+0xb7/0x1b0
+     ksys_write+0x57/0xd0
+     do_syscall_64+0x60/0x210
+
+Unfortunately those reports were typically with a busy parallel
+namespace creation / destruction loop making it difficult to see the
+components of the bug. However, Jane provided a simple reproducer using
+the work-in-progress sub-section implementation.
+
+When ndctl is reconfiguring a namespace it may take an existing defunct
+/ disabled namespace and reconfigure it with a new uuid and other
+parameters. Critically namespace_update_uuid() takes existing address
+resources and renames them for the new namespace to use / reconfigure as
+it sees fit. The bug is that this rename only happens in the resource
+tracking tree. Existing labels with the old uuid are not reaped leading
+to a scenario where multiple active labels reference the same span of
+address range.
+
+Teach namespace_update_uuid() to flag any references to the old uuid for
+reaping at the next label update attempt.
+
+Cc: <stable@vger.kernel.org>
+Fixes: bf9bccc14c05 ("libnvdimm: pmem label sets and namespace instantiation")
+Link: https://github.com/pmem/ndctl/issues/91
+Reported-by: Jane Chu <jane.chu@oracle.com>
+Reported-by: Jeff Moyer <jmoyer@redhat.com>
+Reported-by: Erwin Tsaur <erwin.tsaur@oracle.com>
+Cc: Johannes Thumshirn <jthumshirn@suse.de>
+Signed-off-by: Dan Williams <dan.j.williams@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/nvdimm/label.c          |   29 ++++++++++++++++-------------
+ drivers/nvdimm/namespace_devs.c |   15 +++++++++++++++
+ drivers/nvdimm/nd.h             |    4 ++++
+ 3 files changed, 35 insertions(+), 13 deletions(-)
+
+--- a/drivers/nvdimm/label.c
++++ b/drivers/nvdimm/label.c
+@@ -756,6 +756,17 @@ static const guid_t *to_abstraction_guid
+               return &guid_null;
+ }
++static void reap_victim(struct nd_mapping *nd_mapping,
++              struct nd_label_ent *victim)
++{
++      struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
++      u32 slot = to_slot(ndd, victim->label);
++
++      dev_dbg(ndd->dev, "free: %d\n", slot);
++      nd_label_free_slot(ndd, slot);
++      victim->label = NULL;
++}
++
+ static int __pmem_label_update(struct nd_region *nd_region,
+               struct nd_mapping *nd_mapping, struct nd_namespace_pmem *nspm,
+               int pos, unsigned long flags)
+@@ -763,9 +774,9 @@ static int __pmem_label_update(struct nd
+       struct nd_namespace_common *ndns = &nspm->nsio.common;
+       struct nd_interleave_set *nd_set = nd_region->nd_set;
+       struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
+-      struct nd_label_ent *label_ent, *victim = NULL;
+       struct nd_namespace_label *nd_label;
+       struct nd_namespace_index *nsindex;
++      struct nd_label_ent *label_ent;
+       struct nd_label_id label_id;
+       struct resource *res;
+       unsigned long *free;
+@@ -834,18 +845,10 @@ static int __pmem_label_update(struct nd
+       list_for_each_entry(label_ent, &nd_mapping->labels, list) {
+               if (!label_ent->label)
+                       continue;
+-              if (memcmp(nspm->uuid, label_ent->label->uuid,
+-                                      NSLABEL_UUID_LEN) != 0)
+-                      continue;
+-              victim = label_ent;
+-              list_move_tail(&victim->list, &nd_mapping->labels);
+-              break;
+-      }
+-      if (victim) {
+-              dev_dbg(ndd->dev, "free: %d\n", slot);
+-              slot = to_slot(ndd, victim->label);
+-              nd_label_free_slot(ndd, slot);
+-              victim->label = NULL;
++              if (test_and_clear_bit(ND_LABEL_REAP, &label_ent->flags)
++                              || memcmp(nspm->uuid, label_ent->label->uuid,
++                                      NSLABEL_UUID_LEN) == 0)
++                      reap_victim(nd_mapping, label_ent);
+       }
+       /* update index */
+--- a/drivers/nvdimm/namespace_devs.c
++++ b/drivers/nvdimm/namespace_devs.c
+@@ -1247,12 +1247,27 @@ static int namespace_update_uuid(struct
+       for (i = 0; i < nd_region->ndr_mappings; i++) {
+               struct nd_mapping *nd_mapping = &nd_region->mapping[i];
+               struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
++              struct nd_label_ent *label_ent;
+               struct resource *res;
+               for_each_dpa_resource(ndd, res)
+                       if (strcmp(res->name, old_label_id.id) == 0)
+                               sprintf((void *) res->name, "%s",
+                                               new_label_id.id);
++
++              mutex_lock(&nd_mapping->lock);
++              list_for_each_entry(label_ent, &nd_mapping->labels, list) {
++                      struct nd_namespace_label *nd_label = label_ent->label;
++                      struct nd_label_id label_id;
++
++                      if (!nd_label)
++                              continue;
++                      nd_label_gen_id(&label_id, nd_label->uuid,
++                                      __le32_to_cpu(nd_label->flags));
++                      if (strcmp(old_label_id.id, label_id.id) == 0)
++                              set_bit(ND_LABEL_REAP, &label_ent->flags);
++              }
++              mutex_unlock(&nd_mapping->lock);
+       }
+       kfree(*old_uuid);
+  out:
+--- a/drivers/nvdimm/nd.h
++++ b/drivers/nvdimm/nd.h
+@@ -113,8 +113,12 @@ struct nd_percpu_lane {
+       spinlock_t lock;
+ };
++enum nd_label_flags {
++      ND_LABEL_REAP,
++};
+ struct nd_label_ent {
+       struct list_head list;
++      unsigned long flags;
+       struct nd_namespace_label *label;
+ };
diff --git a/queue-5.1/powerpc-32s-fix-flush_hash_pages-on-smp.patch b/queue-5.1/powerpc-32s-fix-flush_hash_pages-on-smp.patch
new file mode 100644 (file)
index 0000000..3652ea9
--- /dev/null
@@ -0,0 +1,35 @@
+From 397d2300b08cdee052053e362018cdb6dd65eea2 Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Thu, 9 May 2019 12:59:38 +0000
+Subject: powerpc/32s: fix flush_hash_pages() on SMP
+
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+
+commit 397d2300b08cdee052053e362018cdb6dd65eea2 upstream.
+
+flush_hash_pages() runs with data translation off, so current
+task_struct has to be accesssed using physical address.
+
+Fixes: f7354ccac844 ("powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU")
+Cc: stable@vger.kernel.org # v5.1+
+Reported-by: Erhard F. <erhard_f@mailbox.org>
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/mm/hash_low_32.S |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/arch/powerpc/mm/hash_low_32.S
++++ b/arch/powerpc/mm/hash_low_32.S
+@@ -539,7 +539,8 @@ _GLOBAL(flush_hash_pages)
+ #ifdef CONFIG_SMP
+       lis     r9, (mmu_hash_lock - PAGE_OFFSET)@ha
+       addi    r9, r9, (mmu_hash_lock - PAGE_OFFSET)@l
+-      lwz     r8,TASK_CPU(r2)
++      tophys  (r8, r2)
++      lwz     r8, TASK_CPU(r8)
+       oris    r8,r8,9
+ 10:   lwarx   r0,0,r9
+       cmpi    0,r0,0
index f3432db24c65a6fc2a8b8be0c753b8521413fc87..0897fda8c5d4f6a570fb2e804d87d666681e8af0 100644 (file)
@@ -116,3 +116,9 @@ revert-kvm-nvmx-expose-rdpmc-exiting-only-when-guest-supports-pmu.patch
 kvm-fix-the-bitmap-range-to-copy-during-clear-dirty.patch
 kvm-x86-skip-efer-vs.-guest-cpuid-checks-for-host-initiated-writes.patch
 kvm-lapic-busy-wait-for-timer-to-expire-when-using-hv_timer.patch
+smb3-display-session-id-in-debug-data.patch
+kbuild-turn-auto.conf.cmd-into-a-mandatory-include-file.patch
+xen-pvh-set-xen_domain_type-to-hvm-in-xen_pvh_init.patch
+xen-pvh-correctly-setup-the-pv-efi-interface-for-dom0.patch
+powerpc-32s-fix-flush_hash_pages-on-smp.patch
+libnvdimm-namespace-fix-label-tracking-error.patch
diff --git a/queue-5.1/smb3-display-session-id-in-debug-data.patch b/queue-5.1/smb3-display-session-id-in-debug-data.patch
new file mode 100644 (file)
index 0000000..3ec30f0
--- /dev/null
@@ -0,0 +1,34 @@
+From b63a9de02d64ecd5ff0749e90253f5b30ba5b9c0 Mon Sep 17 00:00:00 2001
+From: Steve French <stfrench@microsoft.com>
+Date: Wed, 8 May 2019 22:41:37 -0500
+Subject: smb3: display session id in debug data
+
+From: Steve French <stfrench@microsoft.com>
+
+commit b63a9de02d64ecd5ff0749e90253f5b30ba5b9c0 upstream.
+
+Displaying the session id in /proc/fs/cifs/DebugData
+is needed in order to correlate Linux client information
+with network and server traces for many common support
+scenarios.  Turned out to be very important for debugging.
+
+Signed-off-by: Steve French <stfrench@microsoft.com>
+CC: Stable <stable@vger.kernel.org>
+Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/cifs/cifs_debug.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/cifs/cifs_debug.c
++++ b/fs/cifs/cifs_debug.c
+@@ -376,6 +376,8 @@ skip_rdma:
+                               atomic_read(&server->in_send),
+                               atomic_read(&server->num_waiters));
+ #endif
++                      /* dump session id helpful for use with network trace */
++                      seq_printf(m, " SessionId: 0x%llx", ses->Suid);
+                       if (ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA)
+                               seq_puts(m, " encrypted");
+                       if (ses->sign)
diff --git a/queue-5.1/xen-pvh-correctly-setup-the-pv-efi-interface-for-dom0.patch b/queue-5.1/xen-pvh-correctly-setup-the-pv-efi-interface-for-dom0.patch
new file mode 100644 (file)
index 0000000..1687369
--- /dev/null
@@ -0,0 +1,154 @@
+From 72813bfbf0276a97c82af038efb5f02dcdd9e310 Mon Sep 17 00:00:00 2001
+From: Roger Pau Monne <roger.pau@citrix.com>
+Date: Tue, 23 Apr 2019 15:04:16 +0200
+Subject: xen/pvh: correctly setup the PV EFI interface for dom0
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Roger Pau Monne <roger.pau@citrix.com>
+
+commit 72813bfbf0276a97c82af038efb5f02dcdd9e310 upstream.
+
+This involves initializing the boot params EFI related fields and the
+efi global variable.
+
+Without this fix a PVH dom0 doesn't detect when booted from EFI, and
+thus doesn't support accessing any of the EFI related data.
+
+Reported-by: PGNet Dev <pgnet.dev@gmail.com>
+Signed-off-by: Roger Pau MonnĂ© <roger.pau@citrix.com>
+Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Cc: stable@vger.kernel.org # 4.19+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/platform/pvh/enlighten.c |    8 ++++----
+ arch/x86/xen/efi.c                |   12 ++++++------
+ arch/x86/xen/enlighten_pv.c       |    2 +-
+ arch/x86/xen/enlighten_pvh.c      |    6 +++++-
+ arch/x86/xen/xen-ops.h            |    4 ++--
+ 5 files changed, 18 insertions(+), 14 deletions(-)
+
+--- a/arch/x86/platform/pvh/enlighten.c
++++ b/arch/x86/platform/pvh/enlighten.c
+@@ -44,8 +44,6 @@ void __init __weak mem_map_via_hcall(str
+ static void __init init_pvh_bootparams(bool xen_guest)
+ {
+-      memset(&pvh_bootparams, 0, sizeof(pvh_bootparams));
+-
+       if ((pvh_start_info.version > 0) && (pvh_start_info.memmap_entries)) {
+               struct hvm_memmap_table_entry *ep;
+               int i;
+@@ -103,7 +101,7 @@ static void __init init_pvh_bootparams(b
+  * If we are trying to boot a Xen PVH guest, it is expected that the kernel
+  * will have been configured to provide the required override for this routine.
+  */
+-void __init __weak xen_pvh_init(void)
++void __init __weak xen_pvh_init(struct boot_params *boot_params)
+ {
+       xen_raw_printk("Error: Missing xen PVH initialization\n");
+       BUG();
+@@ -112,7 +110,7 @@ void __init __weak xen_pvh_init(void)
+ static void hypervisor_specific_init(bool xen_guest)
+ {
+       if (xen_guest)
+-              xen_pvh_init();
++              xen_pvh_init(&pvh_bootparams);
+ }
+ /*
+@@ -131,6 +129,8 @@ void __init xen_prepare_pvh(void)
+               BUG();
+       }
++      memset(&pvh_bootparams, 0, sizeof(pvh_bootparams));
++
+       hypervisor_specific_init(xen_guest);
+       init_pvh_bootparams(xen_guest);
+--- a/arch/x86/xen/efi.c
++++ b/arch/x86/xen/efi.c
+@@ -158,7 +158,7 @@ static enum efi_secureboot_mode xen_efi_
+       return efi_secureboot_mode_unknown;
+ }
+-void __init xen_efi_init(void)
++void __init xen_efi_init(struct boot_params *boot_params)
+ {
+       efi_system_table_t *efi_systab_xen;
+@@ -167,12 +167,12 @@ void __init xen_efi_init(void)
+       if (efi_systab_xen == NULL)
+               return;
+-      strncpy((char *)&boot_params.efi_info.efi_loader_signature, "Xen",
+-                      sizeof(boot_params.efi_info.efi_loader_signature));
+-      boot_params.efi_info.efi_systab = (__u32)__pa(efi_systab_xen);
+-      boot_params.efi_info.efi_systab_hi = (__u32)(__pa(efi_systab_xen) >> 32);
++      strncpy((char *)&boot_params->efi_info.efi_loader_signature, "Xen",
++                      sizeof(boot_params->efi_info.efi_loader_signature));
++      boot_params->efi_info.efi_systab = (__u32)__pa(efi_systab_xen);
++      boot_params->efi_info.efi_systab_hi = (__u32)(__pa(efi_systab_xen) >> 32);
+-      boot_params.secure_boot = xen_efi_get_secureboot();
++      boot_params->secure_boot = xen_efi_get_secureboot();
+       set_bit(EFI_BOOT, &efi.flags);
+       set_bit(EFI_PARAVIRT, &efi.flags);
+--- a/arch/x86/xen/enlighten_pv.c
++++ b/arch/x86/xen/enlighten_pv.c
+@@ -1403,7 +1403,7 @@ asmlinkage __visible void __init xen_sta
+       /* We need this for printk timestamps */
+       xen_setup_runstate_info(0);
+-      xen_efi_init();
++      xen_efi_init(&boot_params);
+       /* Start the world */
+ #ifdef CONFIG_X86_32
+--- a/arch/x86/xen/enlighten_pvh.c
++++ b/arch/x86/xen/enlighten_pvh.c
+@@ -13,6 +13,8 @@
+ #include <xen/interface/memory.h>
++#include "xen-ops.h"
++
+ /*
+  * PVH variables.
+  *
+@@ -21,7 +23,7 @@
+  */
+ bool xen_pvh __attribute__((section(".data"))) = 0;
+-void __init xen_pvh_init(void)
++void __init xen_pvh_init(struct boot_params *boot_params)
+ {
+       u32 msr;
+       u64 pfn;
+@@ -33,6 +35,8 @@ void __init xen_pvh_init(void)
+       msr = cpuid_ebx(xen_cpuid_base() + 2);
+       pfn = __pa(hypercall_page);
+       wrmsr_safe(msr, (u32)pfn, (u32)(pfn >> 32));
++
++      xen_efi_init(boot_params);
+ }
+ void __init mem_map_via_hcall(struct boot_params *boot_params_p)
+--- a/arch/x86/xen/xen-ops.h
++++ b/arch/x86/xen/xen-ops.h
+@@ -122,9 +122,9 @@ static inline void __init xen_init_vga(c
+ void __init xen_init_apic(void);
+ #ifdef CONFIG_XEN_EFI
+-extern void xen_efi_init(void);
++extern void xen_efi_init(struct boot_params *boot_params);
+ #else
+-static inline void __init xen_efi_init(void)
++static inline void __init xen_efi_init(struct boot_params *boot_params)
+ {
+ }
+ #endif
diff --git a/queue-5.1/xen-pvh-set-xen_domain_type-to-hvm-in-xen_pvh_init.patch b/queue-5.1/xen-pvh-set-xen_domain_type-to-hvm-in-xen_pvh_init.patch
new file mode 100644 (file)
index 0000000..b3349e8
--- /dev/null
@@ -0,0 +1,34 @@
+From c9f804d64bb93c8dbf957df1d7e9de11380e522d Mon Sep 17 00:00:00 2001
+From: Roger Pau Monne <roger.pau@citrix.com>
+Date: Tue, 23 Apr 2019 15:04:15 +0200
+Subject: xen/pvh: set xen_domain_type to HVM in xen_pvh_init
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Roger Pau Monne <roger.pau@citrix.com>
+
+commit c9f804d64bb93c8dbf957df1d7e9de11380e522d upstream.
+
+Or else xen_domain() returns false despite xen_pvh being set.
+
+Signed-off-by: Roger Pau MonnĂ© <roger.pau@citrix.com>
+Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Cc: stable@vger.kernel.org # 4.19+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/xen/enlighten_pvh.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/x86/xen/enlighten_pvh.c
++++ b/arch/x86/xen/enlighten_pvh.c
+@@ -27,6 +27,7 @@ void __init xen_pvh_init(void)
+       u64 pfn;
+       xen_pvh = 1;
++      xen_domain_type = XEN_HVM_DOMAIN;
+       xen_start_flags = pvh_start_info.flags;
+       msr = cpuid_ebx(xen_cpuid_base() + 2);