linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] xen: various cleanups
@ 2018-07-17 12:01 Juergen Gross
  2018-07-17 12:01 ` [PATCH 1/4] xen: move pv irq related functions under CONFIG_XEN_PV umbrella Juergen Gross
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Juergen Gross @ 2018-07-17 12:01 UTC (permalink / raw)
  To: linux-kernel, xen-devel, x86
  Cc: boris.ostrovsky, hpa, tglx, mingo, Juergen Gross

Some Xen related cleanups:
- move some pv-only code from CONFIG_XEN to CONFIG_XEN_PV
- use CONFIG_XEN_PVHVM in Makefile instead of #ifdef around a complete source
- add SPDX identifier where missing

Juergen Gross (4):
  xen: move pv irq related functions under CONFIG_XEN_PV umbrella
  xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c
  xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM
  xen: add SPDX identifier in arch/x86/xen files

 arch/x86/entry/entry_32.S          |   8 +-
 arch/x86/entry/entry_64.S          |   8 +-
 arch/x86/xen/Makefile              |  41 ++++++--
 arch/x86/xen/efi.c                 |  14 +--
 arch/x86/xen/enlighten.c           |   2 +
 arch/x86/xen/enlighten_hvm.c       |   2 +
 arch/x86/xen/grant-table.c         |  25 +----
 arch/x86/xen/mmu.c                 | 188 +------------------------------------
 arch/x86/xen/mmu_pv.c              | 140 +++++++++++++++++++++++++++
 arch/x86/xen/p2m.c                 |   2 +
 arch/x86/xen/pci-swiotlb-xen.c     |   2 +
 arch/x86/xen/platform-pci-unplug.c |  18 +---
 arch/x86/xen/vdso.h                |   2 +
 arch/x86/xen/xen-pvh.S             |  15 +--
 include/xen/interface/memory.h     |   6 --
 include/xen/xen-ops.h              | 133 +++++++++++++++++---------
 16 files changed, 287 insertions(+), 319 deletions(-)

-- 
2.13.7


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

* [PATCH 1/4] xen: move pv irq related functions under CONFIG_XEN_PV umbrella
  2018-07-17 12:01 [PATCH 0/4] xen: various cleanups Juergen Gross
@ 2018-07-17 12:01 ` Juergen Gross
  2018-07-17 19:19   ` Boris Ostrovsky
  2018-07-17 12:01 ` [PATCH 2/4] xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c Juergen Gross
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Juergen Gross @ 2018-07-17 12:01 UTC (permalink / raw)
  To: linux-kernel, xen-devel, x86
  Cc: boris.ostrovsky, hpa, tglx, mingo, Juergen Gross

All functions in arch/x86/xen/irq.c and arch/x86/xen/xen-asm*.S are
specific to PV guests. Include them in the kernel with
CONFIG_XEN_PV only.

Make the PV specific code in arch/x86/entry/entry_*.S dependent on
CONFIG_XEN_PV instead of CONFIG_XEN.

While at it reformat the Makefile to make it more readable.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/entry/entry_32.S |  8 +++++---
 arch/x86/entry/entry_64.S |  8 +++++---
 arch/x86/xen/Makefile     | 41 +++++++++++++++++++++++++++++++----------
 3 files changed, 41 insertions(+), 16 deletions(-)

diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index c371bfee137a..9ab289564dda 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -369,7 +369,7 @@ GLOBAL(__begin_SYSENTER_singlestep_region)
  * will ignore all of the single-step traps generated in this range.
  */
 
-#ifdef CONFIG_XEN
+#ifdef CONFIG_XEN_PV
 /*
  * Xen doesn't set %esp to be precisely what the normal SYSENTER
  * entry point expects, so fix it up before using the normal path.
@@ -807,7 +807,7 @@ ENTRY(spurious_interrupt_bug)
 	jmp	common_exception
 END(spurious_interrupt_bug)
 
-#ifdef CONFIG_XEN
+#ifdef CONFIG_XEN_PV
 ENTRY(xen_hypervisor_callback)
 	pushl	$-1				/* orig_ax = -1 => not a system call */
 	SAVE_ALL
@@ -888,11 +888,13 @@ ENTRY(xen_failsafe_callback)
 	_ASM_EXTABLE(3b, 8b)
 	_ASM_EXTABLE(4b, 9b)
 ENDPROC(xen_failsafe_callback)
+#endif /* CONFIG_XEN_PV */
 
+#ifdef CONFIG_XEN
 BUILD_INTERRUPT3(xen_hvm_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
 		 xen_evtchn_do_upcall)
+#endif
 
-#endif /* CONFIG_XEN */
 
 #if IS_ENABLED(CONFIG_HYPERV)
 
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 73a522d53b53..dbcd507c6ac6 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -1049,7 +1049,7 @@ ENTRY(do_softirq_own_stack)
 	ret
 ENDPROC(do_softirq_own_stack)
 
-#ifdef CONFIG_XEN
+#ifdef CONFIG_XEN_PV
 idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0
 
 /*
@@ -1129,11 +1129,13 @@ ENTRY(xen_failsafe_callback)
 	ENCODE_FRAME_POINTER
 	jmp	error_exit
 END(xen_failsafe_callback)
+#endif /* CONFIG_XEN_PV */
 
+#ifdef CONFIG_XEN
 apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
 	xen_hvm_callback_vector xen_evtchn_do_upcall
+#endif
 
-#endif /* CONFIG_XEN */
 
 #if IS_ENABLED(CONFIG_HYPERV)
 apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
@@ -1150,7 +1152,7 @@ idtentry debug			do_debug		has_error_code=0	paranoid=1 shift_ist=DEBUG_STACK
 idtentry int3			do_int3			has_error_code=0
 idtentry stack_segment		do_stack_segment	has_error_code=1
 
-#ifdef CONFIG_XEN
+#ifdef CONFIG_XEN_PV
 idtentry xennmi			do_nmi			has_error_code=0
 idtentry xendebug		do_debug		has_error_code=0
 idtentry xenint3		do_int3			has_error_code=0
diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
index d83cb5478f54..f723b5aa8f74 100644
--- a/arch/x86/xen/Makefile
+++ b/arch/x86/xen/Makefile
@@ -12,25 +12,46 @@ endif
 # Make sure early boot has no stackprotector
 nostackp := $(call cc-option, -fno-stack-protector)
 CFLAGS_enlighten_pv.o		:= $(nostackp)
-CFLAGS_mmu_pv.o		:= $(nostackp)
+CFLAGS_mmu_pv.o			:= $(nostackp)
 
-obj-y		:= enlighten.o multicalls.o mmu.o irq.o \
-			time.o xen-asm.o xen-asm_$(BITS).o \
-			grant-table.o suspend.o platform-pci-unplug.o
+obj-y				+= enlighten.o
+obj-y				+= multicalls.o
+obj-y				+= mmu.o
+obj-y				+= time.o
+obj-y				+= grant-table.o
+obj-y				+= suspend.o
+obj-y				+= platform-pci-unplug.o
 
-obj-$(CONFIG_XEN_PVHVM)		+= enlighten_hvm.o mmu_hvm.o suspend_hvm.o
-obj-$(CONFIG_XEN_PV)			+= setup.o apic.o pmu.o suspend_pv.o \
-						p2m.o enlighten_pv.o mmu_pv.o
-obj-$(CONFIG_XEN_PVH)			+= enlighten_pvh.o
+obj-$(CONFIG_XEN_PVHVM)		+= enlighten_hvm.o
+obj-$(CONFIG_XEN_PVHVM)		+= mmu_hvm.o
+obj-$(CONFIG_XEN_PVHVM)		+= suspend_hvm.o
 
-obj-$(CONFIG_EVENT_TRACING) += trace.o
+obj-$(CONFIG_XEN_PV)		+= setup.o
+obj-$(CONFIG_XEN_PV)		+= apic.o
+obj-$(CONFIG_XEN_PV)		+= pmu.o
+obj-$(CONFIG_XEN_PV)		+= suspend_pv.o
+obj-$(CONFIG_XEN_PV)		+= p2m.o
+obj-$(CONFIG_XEN_PV)		+= enlighten_pv.o
+obj-$(CONFIG_XEN_PV)		+= mmu_pv.o
+obj-$(CONFIG_XEN_PV)		+= irq.o
+obj-$(CONFIG_XEN_PV)		+= xen-asm.o
+obj-$(CONFIG_XEN_PV)		+= xen-asm_$(BITS).o
+
+obj-$(CONFIG_XEN_PVH)		+= enlighten_pvh.o
+obj-$(CONFIG_XEN_PVH)	 	+= xen-pvh.o
+
+obj-$(CONFIG_EVENT_TRACING)	+= trace.o
 
 obj-$(CONFIG_SMP)		+= smp.o
 obj-$(CONFIG_XEN_PV_SMP)  	+= smp_pv.o
 obj-$(CONFIG_XEN_PVHVM_SMP)  	+= smp_hvm.o
+
 obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o
+
 obj-$(CONFIG_XEN_DEBUG_FS)	+= debugfs.o
+
 obj-$(CONFIG_XEN_DOM0)		+= vga.o
+
 obj-$(CONFIG_SWIOTLB_XEN)	+= pci-swiotlb-xen.o
+
 obj-$(CONFIG_XEN_EFI)		+= efi.o
-obj-$(CONFIG_XEN_PVH)	 	+= xen-pvh.o
-- 
2.13.7


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

* [PATCH 2/4] xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c
  2018-07-17 12:01 [PATCH 0/4] xen: various cleanups Juergen Gross
  2018-07-17 12:01 ` [PATCH 1/4] xen: move pv irq related functions under CONFIG_XEN_PV umbrella Juergen Gross
@ 2018-07-17 12:01 ` Juergen Gross
  2018-07-17 12:01 ` [PATCH 3/4] xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM Juergen Gross
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Juergen Gross @ 2018-07-17 12:01 UTC (permalink / raw)
  To: linux-kernel, xen-devel, x86
  Cc: boris.ostrovsky, hpa, tglx, mingo, Juergen Gross

There are some PV specific functions in arch/x86/xen/mmu.c which can
be moved to mmu_pv.c. This in turn enables us to make multicalls.c
dependent on CONFIG_XEN_PV.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/xen/Makefile          |   2 +-
 arch/x86/xen/mmu.c             | 186 -----------------------------------------
 arch/x86/xen/mmu_pv.c          | 138 ++++++++++++++++++++++++++++++
 include/xen/interface/memory.h |   6 --
 include/xen/xen-ops.h          | 133 +++++++++++++++++++----------
 5 files changed, 227 insertions(+), 238 deletions(-)

diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
index f723b5aa8f74..a964f307a266 100644
--- a/arch/x86/xen/Makefile
+++ b/arch/x86/xen/Makefile
@@ -15,7 +15,6 @@ CFLAGS_enlighten_pv.o		:= $(nostackp)
 CFLAGS_mmu_pv.o			:= $(nostackp)
 
 obj-y				+= enlighten.o
-obj-y				+= multicalls.o
 obj-y				+= mmu.o
 obj-y				+= time.o
 obj-y				+= grant-table.o
@@ -34,6 +33,7 @@ obj-$(CONFIG_XEN_PV)		+= p2m.o
 obj-$(CONFIG_XEN_PV)		+= enlighten_pv.o
 obj-$(CONFIG_XEN_PV)		+= mmu_pv.o
 obj-$(CONFIG_XEN_PV)		+= irq.o
+obj-$(CONFIG_XEN_PV)		+= multicalls.o
 obj-$(CONFIG_XEN_PV)		+= xen-asm.o
 obj-$(CONFIG_XEN_PV)		+= xen-asm_$(BITS).o
 
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index 96fc2f0fdbfe..e0e13fe16d37 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -6,12 +6,6 @@
 #include "multicalls.h"
 #include "mmu.h"
 
-/*
- * Protects atomic reservation decrease/increase against concurrent increases.
- * Also protects non-atomic updates of current_pages and balloon lists.
- */
-DEFINE_SPINLOCK(xen_reservation_lock);
-
 unsigned long arbitrary_virt_to_mfn(void *vaddr)
 {
 	xmaddr_t maddr = arbitrary_virt_to_machine(vaddr);
@@ -42,186 +36,6 @@ xmaddr_t arbitrary_virt_to_machine(void *vaddr)
 }
 EXPORT_SYMBOL_GPL(arbitrary_virt_to_machine);
 
-static noinline void xen_flush_tlb_all(void)
-{
-	struct mmuext_op *op;
-	struct multicall_space mcs;
-
-	preempt_disable();
-
-	mcs = xen_mc_entry(sizeof(*op));
-
-	op = mcs.args;
-	op->cmd = MMUEXT_TLB_FLUSH_ALL;
-	MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF);
-
-	xen_mc_issue(PARAVIRT_LAZY_MMU);
-
-	preempt_enable();
-}
-
-#define REMAP_BATCH_SIZE 16
-
-struct remap_data {
-	xen_pfn_t *pfn;
-	bool contiguous;
-	bool no_translate;
-	pgprot_t prot;
-	struct mmu_update *mmu_update;
-};
-
-static int remap_area_pfn_pte_fn(pte_t *ptep, pgtable_t token,
-				 unsigned long addr, void *data)
-{
-	struct remap_data *rmd = data;
-	pte_t pte = pte_mkspecial(mfn_pte(*rmd->pfn, rmd->prot));
-
-	/*
-	 * If we have a contiguous range, just update the pfn itself,
-	 * else update pointer to be "next pfn".
-	 */
-	if (rmd->contiguous)
-		(*rmd->pfn)++;
-	else
-		rmd->pfn++;
-
-	rmd->mmu_update->ptr = virt_to_machine(ptep).maddr;
-	rmd->mmu_update->ptr |= rmd->no_translate ?
-		MMU_PT_UPDATE_NO_TRANSLATE :
-		MMU_NORMAL_PT_UPDATE;
-	rmd->mmu_update->val = pte_val_ma(pte);
-	rmd->mmu_update++;
-
-	return 0;
-}
-
-static int do_remap_pfn(struct vm_area_struct *vma,
-			unsigned long addr,
-			xen_pfn_t *pfn, int nr,
-			int *err_ptr, pgprot_t prot,
-			unsigned int domid,
-			bool no_translate,
-			struct page **pages)
-{
-	int err = 0;
-	struct remap_data rmd;
-	struct mmu_update mmu_update[REMAP_BATCH_SIZE];
-	unsigned long range;
-	int mapped = 0;
-
-	BUG_ON(!((vma->vm_flags & (VM_PFNMAP | VM_IO)) == (VM_PFNMAP | VM_IO)));
-
-	rmd.pfn = pfn;
-	rmd.prot = prot;
-	/*
-	 * We use the err_ptr to indicate if there we are doing a contiguous
-	 * mapping or a discontigious mapping.
-	 */
-	rmd.contiguous = !err_ptr;
-	rmd.no_translate = no_translate;
-
-	while (nr) {
-		int index = 0;
-		int done = 0;
-		int batch = min(REMAP_BATCH_SIZE, nr);
-		int batch_left = batch;
-		range = (unsigned long)batch << PAGE_SHIFT;
-
-		rmd.mmu_update = mmu_update;
-		err = apply_to_page_range(vma->vm_mm, addr, range,
-					  remap_area_pfn_pte_fn, &rmd);
-		if (err)
-			goto out;
-
-		/* We record the error for each page that gives an error, but
-		 * continue mapping until the whole set is done */
-		do {
-			int i;
-
-			err = HYPERVISOR_mmu_update(&mmu_update[index],
-						    batch_left, &done, domid);
-
-			/*
-			 * @err_ptr may be the same buffer as @gfn, so
-			 * only clear it after each chunk of @gfn is
-			 * used.
-			 */
-			if (err_ptr) {
-				for (i = index; i < index + done; i++)
-					err_ptr[i] = 0;
-			}
-			if (err < 0) {
-				if (!err_ptr)
-					goto out;
-				err_ptr[i] = err;
-				done++; /* Skip failed frame. */
-			} else
-				mapped += done;
-			batch_left -= done;
-			index += done;
-		} while (batch_left);
-
-		nr -= batch;
-		addr += range;
-		if (err_ptr)
-			err_ptr += batch;
-		cond_resched();
-	}
-out:
-
-	xen_flush_tlb_all();
-
-	return err < 0 ? err : mapped;
-}
-
-int xen_remap_domain_gfn_range(struct vm_area_struct *vma,
-			       unsigned long addr,
-			       xen_pfn_t gfn, int nr,
-			       pgprot_t prot, unsigned domid,
-			       struct page **pages)
-{
-	if (xen_feature(XENFEAT_auto_translated_physmap))
-		return -EOPNOTSUPP;
-
-	return do_remap_pfn(vma, addr, &gfn, nr, NULL, prot, domid, false,
-			    pages);
-}
-EXPORT_SYMBOL_GPL(xen_remap_domain_gfn_range);
-
-int xen_remap_domain_gfn_array(struct vm_area_struct *vma,
-			       unsigned long addr,
-			       xen_pfn_t *gfn, int nr,
-			       int *err_ptr, pgprot_t prot,
-			       unsigned domid, struct page **pages)
-{
-	if (xen_feature(XENFEAT_auto_translated_physmap))
-		return xen_xlate_remap_gfn_array(vma, addr, gfn, nr, err_ptr,
-						 prot, domid, pages);
-
-	/* We BUG_ON because it's a programmer error to pass a NULL err_ptr,
-	 * and the consequences later is quite hard to detect what the actual
-	 * cause of "wrong memory was mapped in".
-	 */
-	BUG_ON(err_ptr == NULL);
-	return do_remap_pfn(vma, addr, gfn, nr, err_ptr, prot, domid,
-			    false, pages);
-}
-EXPORT_SYMBOL_GPL(xen_remap_domain_gfn_array);
-
-int xen_remap_domain_mfn_array(struct vm_area_struct *vma,
-			       unsigned long addr,
-			       xen_pfn_t *mfn, int nr,
-			       int *err_ptr, pgprot_t prot,
-			       unsigned int domid, struct page **pages)
-{
-	if (xen_feature(XENFEAT_auto_translated_physmap))
-		return -EOPNOTSUPP;
-
-	return do_remap_pfn(vma, addr, mfn, nr, err_ptr, prot, domid,
-			    true, pages);
-}
-EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_array);
-
 /* Returns: 0 success */
 int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
 			       int nr, struct page **pages)
diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c
index 2c30cabfda90..ea4b2f69dfce 100644
--- a/arch/x86/xen/mmu_pv.c
+++ b/arch/x86/xen/mmu_pv.c
@@ -98,6 +98,12 @@ static pud_t level3_user_vsyscall[PTRS_PER_PUD] __page_aligned_bss;
 #endif /* CONFIG_X86_64 */
 
 /*
+ * Protects atomic reservation decrease/increase against concurrent increases.
+ * Also protects non-atomic updates of current_pages and balloon lists.
+ */
+DEFINE_SPINLOCK(xen_reservation_lock);
+
+/*
  * Note about cr3 (pagetable base) values:
  *
  * xen_cr3 contains the current logical cr3 value; it contains the
@@ -2663,6 +2669,138 @@ void xen_destroy_contiguous_region(phys_addr_t pstart, unsigned int order)
 }
 EXPORT_SYMBOL_GPL(xen_destroy_contiguous_region);
 
+static noinline void xen_flush_tlb_all(void)
+{
+	struct mmuext_op *op;
+	struct multicall_space mcs;
+
+	preempt_disable();
+
+	mcs = xen_mc_entry(sizeof(*op));
+
+	op = mcs.args;
+	op->cmd = MMUEXT_TLB_FLUSH_ALL;
+	MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF);
+
+	xen_mc_issue(PARAVIRT_LAZY_MMU);
+
+	preempt_enable();
+}
+
+#define REMAP_BATCH_SIZE 16
+
+struct remap_data {
+	xen_pfn_t *pfn;
+	bool contiguous;
+	bool no_translate;
+	pgprot_t prot;
+	struct mmu_update *mmu_update;
+};
+
+static int remap_area_pfn_pte_fn(pte_t *ptep, pgtable_t token,
+				 unsigned long addr, void *data)
+{
+	struct remap_data *rmd = data;
+	pte_t pte = pte_mkspecial(mfn_pte(*rmd->pfn, rmd->prot));
+
+	/*
+	 * If we have a contiguous range, just update the pfn itself,
+	 * else update pointer to be "next pfn".
+	 */
+	if (rmd->contiguous)
+		(*rmd->pfn)++;
+	else
+		rmd->pfn++;
+
+	rmd->mmu_update->ptr = virt_to_machine(ptep).maddr;
+	rmd->mmu_update->ptr |= rmd->no_translate ?
+		MMU_PT_UPDATE_NO_TRANSLATE :
+		MMU_NORMAL_PT_UPDATE;
+	rmd->mmu_update->val = pte_val_ma(pte);
+	rmd->mmu_update++;
+
+	return 0;
+}
+
+int xen_remap_pfn(struct vm_area_struct *vma, unsigned long addr,
+		  xen_pfn_t *pfn, int nr, int *err_ptr, pgprot_t prot,
+		  unsigned int domid, bool no_translate, struct page **pages)
+{
+	int err = 0;
+	struct remap_data rmd;
+	struct mmu_update mmu_update[REMAP_BATCH_SIZE];
+	unsigned long range;
+	int mapped = 0;
+
+	BUG_ON(!((vma->vm_flags & (VM_PFNMAP | VM_IO)) == (VM_PFNMAP | VM_IO)));
+
+	rmd.pfn = pfn;
+	rmd.prot = prot;
+	/*
+	 * We use the err_ptr to indicate if there we are doing a contiguous
+	 * mapping or a discontigious mapping.
+	 */
+	rmd.contiguous = !err_ptr;
+	rmd.no_translate = no_translate;
+
+	while (nr) {
+		int index = 0;
+		int done = 0;
+		int batch = min(REMAP_BATCH_SIZE, nr);
+		int batch_left = batch;
+
+		range = (unsigned long)batch << PAGE_SHIFT;
+
+		rmd.mmu_update = mmu_update;
+		err = apply_to_page_range(vma->vm_mm, addr, range,
+					  remap_area_pfn_pte_fn, &rmd);
+		if (err)
+			goto out;
+
+		/*
+		 * We record the error for each page that gives an error, but
+		 * continue mapping until the whole set is done
+		 */
+		do {
+			int i;
+
+			err = HYPERVISOR_mmu_update(&mmu_update[index],
+						    batch_left, &done, domid);
+
+			/*
+			 * @err_ptr may be the same buffer as @gfn, so
+			 * only clear it after each chunk of @gfn is
+			 * used.
+			 */
+			if (err_ptr) {
+				for (i = index; i < index + done; i++)
+					err_ptr[i] = 0;
+			}
+			if (err < 0) {
+				if (!err_ptr)
+					goto out;
+				err_ptr[i] = err;
+				done++; /* Skip failed frame. */
+			} else
+				mapped += done;
+			batch_left -= done;
+			index += done;
+		} while (batch_left);
+
+		nr -= batch;
+		addr += range;
+		if (err_ptr)
+			err_ptr += batch;
+		cond_resched();
+	}
+out:
+
+	xen_flush_tlb_all();
+
+	return err < 0 ? err : mapped;
+}
+EXPORT_SYMBOL_GPL(xen_remap_pfn);
+
 #ifdef CONFIG_KEXEC_CORE
 phys_addr_t paddr_vmcoreinfo_note(void)
 {
diff --git a/include/xen/interface/memory.h b/include/xen/interface/memory.h
index 4c5751c26f87..447004861f00 100644
--- a/include/xen/interface/memory.h
+++ b/include/xen/interface/memory.h
@@ -245,12 +245,6 @@ DEFINE_GUEST_HANDLE_STRUCT(xen_memory_map);
 
 
 /*
- * Prevent the balloon driver from changing the memory reservation
- * during a driver critical region.
- */
-extern spinlock_t xen_reservation_lock;
-
-/*
  * Unmaps the page appearing at a particular GPFN from the specified guest's
  * pseudophysical address space.
  * arg == addr of xen_remove_from_physmap_t.
diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h
index fd18c974a619..18803ff76e27 100644
--- a/include/xen/xen-ops.h
+++ b/include/xen/xen-ops.h
@@ -5,6 +5,7 @@
 #include <linux/percpu.h>
 #include <linux/notifier.h>
 #include <linux/efi.h>
+#include <xen/features.h>
 #include <asm/xen/interface.h>
 #include <xen/interface/vcpu.h>
 
@@ -47,6 +48,10 @@ int xen_create_contiguous_region(phys_addr_t pstart, unsigned int order,
 				dma_addr_t *dma_handle);
 
 void xen_destroy_contiguous_region(phys_addr_t pstart, unsigned int order);
+
+int xen_remap_pfn(struct vm_area_struct *vma, unsigned long addr,
+		  xen_pfn_t *pfn, int nr, int *err_ptr, pgprot_t prot,
+		  unsigned int domid, bool no_translate, struct page **pages);
 #else
 static inline int xen_create_contiguous_region(phys_addr_t pstart,
 					       unsigned int order,
@@ -58,10 +63,50 @@ static inline int xen_create_contiguous_region(phys_addr_t pstart,
 
 static inline void xen_destroy_contiguous_region(phys_addr_t pstart,
 						 unsigned int order) { }
+
+static inline int xen_remap_pfn(struct vm_area_struct *vma, unsigned long addr,
+				xen_pfn_t *pfn, int nr, int *err_ptr,
+				pgprot_t prot,  unsigned int domid,
+				bool no_translate, struct page **pages)
+{
+	BUG();
+	return 0;
+}
 #endif
 
 struct vm_area_struct;
 
+#ifdef CONFIG_XEN_AUTO_XLATE
+int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
+			      unsigned long addr,
+			      xen_pfn_t *gfn, int nr,
+			      int *err_ptr, pgprot_t prot,
+			      unsigned int domid,
+			      struct page **pages);
+int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
+			      int nr, struct page **pages);
+#else
+/*
+ * These two functions are called from arch/x86/xen/mmu.c and so stubs
+ * are needed for a configuration not specifying CONFIG_XEN_AUTO_XLATE.
+ */
+static inline int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
+					    unsigned long addr,
+					    xen_pfn_t *gfn, int nr,
+					    int *err_ptr, pgprot_t prot,
+					    unsigned int domid,
+					    struct page **pages)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
+					    int nr, struct page **pages)
+{
+	return -EOPNOTSUPP;
+}
+#endif
+
 /*
  * xen_remap_domain_gfn_array() - map an array of foreign frames by gfn
  * @vma:     VMA to map the pages into
@@ -79,12 +124,25 @@ struct vm_area_struct;
  * Returns the number of successfully mapped frames, or a -ve error
  * code.
  */
-int xen_remap_domain_gfn_array(struct vm_area_struct *vma,
-			       unsigned long addr,
-			       xen_pfn_t *gfn, int nr,
-			       int *err_ptr, pgprot_t prot,
-			       unsigned domid,
-			       struct page **pages);
+static inline int xen_remap_domain_gfn_array(struct vm_area_struct *vma,
+					     unsigned long addr,
+					     xen_pfn_t *gfn, int nr,
+					     int *err_ptr, pgprot_t prot,
+					     unsigned int domid,
+					     struct page **pages)
+{
+	if (xen_feature(XENFEAT_auto_translated_physmap))
+		return xen_xlate_remap_gfn_array(vma, addr, gfn, nr, err_ptr,
+						 prot, domid, pages);
+
+	/* We BUG_ON because it's a programmer error to pass a NULL err_ptr,
+	 * and the consequences later is quite hard to detect what the actual
+	 * cause of "wrong memory was mapped in".
+	 */
+	BUG_ON(err_ptr == NULL);
+	return xen_remap_pfn(vma, addr, gfn, nr, err_ptr, prot, domid,
+			     false, pages);
+}
 
 /*
  * xen_remap_domain_mfn_array() - map an array of foreign frames by mfn
@@ -103,10 +161,18 @@ int xen_remap_domain_gfn_array(struct vm_area_struct *vma,
  * Returns the number of successfully mapped frames, or a -ve error
  * code.
  */
-int xen_remap_domain_mfn_array(struct vm_area_struct *vma,
-			       unsigned long addr, xen_pfn_t *mfn, int nr,
-			       int *err_ptr, pgprot_t prot,
-			       unsigned int domid, struct page **pages);
+static inline int xen_remap_domain_mfn_array(struct vm_area_struct *vma,
+					     unsigned long addr, xen_pfn_t *mfn,
+					     int nr, int *err_ptr,
+					     pgprot_t prot, unsigned int domid,
+					     struct page **pages)
+{
+	if (xen_feature(XENFEAT_auto_translated_physmap))
+		return -EOPNOTSUPP;
+
+	return xen_remap_pfn(vma, addr, mfn, nr, err_ptr, prot, domid,
+			     true, pages);
+}
 
 /* xen_remap_domain_gfn_range() - map a range of foreign frames
  * @vma:     VMA to map the pages into
@@ -120,44 +186,21 @@ int xen_remap_domain_mfn_array(struct vm_area_struct *vma,
  * Returns the number of successfully mapped frames, or a -ve error
  * code.
  */
-int xen_remap_domain_gfn_range(struct vm_area_struct *vma,
-			       unsigned long addr,
-			       xen_pfn_t gfn, int nr,
-			       pgprot_t prot, unsigned domid,
-			       struct page **pages);
-int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
-			       int numpgs, struct page **pages);
-
-#ifdef CONFIG_XEN_AUTO_XLATE
-int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
-			      unsigned long addr,
-			      xen_pfn_t *gfn, int nr,
-			      int *err_ptr, pgprot_t prot,
-			      unsigned domid,
-			      struct page **pages);
-int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
-			      int nr, struct page **pages);
-#else
-/*
- * These two functions are called from arch/x86/xen/mmu.c and so stubs
- * are needed for a configuration not specifying CONFIG_XEN_AUTO_XLATE.
- */
-static inline int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
-					    unsigned long addr,
-					    xen_pfn_t *gfn, int nr,
-					    int *err_ptr, pgprot_t prot,
-					    unsigned int domid,
-					    struct page **pages)
+static inline int xen_remap_domain_gfn_range(struct vm_area_struct *vma,
+					     unsigned long addr,
+					     xen_pfn_t gfn, int nr,
+					     pgprot_t prot, unsigned int domid,
+					     struct page **pages)
 {
-	return -EOPNOTSUPP;
-}
+	if (xen_feature(XENFEAT_auto_translated_physmap))
+		return -EOPNOTSUPP;
 
-static inline int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
-					    int nr, struct page **pages)
-{
-	return -EOPNOTSUPP;
+	return xen_remap_pfn(vma, addr, &gfn, nr, NULL, prot, domid, false,
+			     pages);
 }
-#endif
+
+int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
+			       int numpgs, struct page **pages);
 
 int xen_xlate_map_ballooned_pages(xen_pfn_t **pfns, void **vaddr,
 				  unsigned long nr_grant_frames);
-- 
2.13.7


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

* [PATCH 3/4] xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM
  2018-07-17 12:01 [PATCH 0/4] xen: various cleanups Juergen Gross
  2018-07-17 12:01 ` [PATCH 1/4] xen: move pv irq related functions under CONFIG_XEN_PV umbrella Juergen Gross
  2018-07-17 12:01 ` [PATCH 2/4] xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c Juergen Gross
@ 2018-07-17 12:01 ` Juergen Gross
  2018-07-17 12:01 ` [PATCH 4/4] xen: add SPDX identifier in arch/x86/xen files Juergen Gross
  2018-08-07 13:10 ` [PATCH 0/4] xen: various cleanups Juergen Gross
  4 siblings, 0 replies; 11+ messages in thread
From: Juergen Gross @ 2018-07-17 12:01 UTC (permalink / raw)
  To: linux-kernel, xen-devel, x86
  Cc: boris.ostrovsky, hpa, tglx, mingo, Juergen Gross

Instead of using one large #ifdef CONFIG_XEN_PVHVM in
arch/x86/xen/platform-pci-unplug.c add the object file depending on
CONFIG_XEN_PVHVM being set.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/xen/Makefile              | 2 +-
 arch/x86/xen/platform-pci-unplug.c | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
index a964f307a266..dd2550d33b38 100644
--- a/arch/x86/xen/Makefile
+++ b/arch/x86/xen/Makefile
@@ -19,11 +19,11 @@ obj-y				+= mmu.o
 obj-y				+= time.o
 obj-y				+= grant-table.o
 obj-y				+= suspend.o
-obj-y				+= platform-pci-unplug.o
 
 obj-$(CONFIG_XEN_PVHVM)		+= enlighten_hvm.o
 obj-$(CONFIG_XEN_PVHVM)		+= mmu_hvm.o
 obj-$(CONFIG_XEN_PVHVM)		+= suspend_hvm.o
+obj-$(CONFIG_XEN_PVHVM)		+= platform-pci-unplug.o
 
 obj-$(CONFIG_XEN_PV)		+= setup.o
 obj-$(CONFIG_XEN_PV)		+= apic.o
diff --git a/arch/x86/xen/platform-pci-unplug.c b/arch/x86/xen/platform-pci-unplug.c
index 33a783c77d96..3957946a6cfe 100644
--- a/arch/x86/xen/platform-pci-unplug.c
+++ b/arch/x86/xen/platform-pci-unplug.c
@@ -30,7 +30,6 @@
 #define XEN_PLATFORM_ERR_PROTOCOL -2
 #define XEN_PLATFORM_ERR_BLACKLIST -3
 
-#ifdef CONFIG_XEN_PVHVM
 /* store the value of xen_emul_unplug after the unplug is done */
 static int xen_platform_pci_unplug;
 static int xen_emul_unplug;
@@ -214,4 +213,3 @@ static int __init parse_xen_emul_unplug(char *arg)
 	return 0;
 }
 early_param("xen_emul_unplug", parse_xen_emul_unplug);
-#endif
-- 
2.13.7


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

* [PATCH 4/4] xen: add SPDX identifier in arch/x86/xen files
  2018-07-17 12:01 [PATCH 0/4] xen: various cleanups Juergen Gross
                   ` (2 preceding siblings ...)
  2018-07-17 12:01 ` [PATCH 3/4] xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM Juergen Gross
@ 2018-07-17 12:01 ` Juergen Gross
  2018-08-07 13:10 ` [PATCH 0/4] xen: various cleanups Juergen Gross
  4 siblings, 0 replies; 11+ messages in thread
From: Juergen Gross @ 2018-07-17 12:01 UTC (permalink / raw)
  To: linux-kernel, xen-devel, x86
  Cc: boris.ostrovsky, hpa, tglx, mingo, Juergen Gross

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/xen/efi.c                 | 14 +-------------
 arch/x86/xen/enlighten.c           |  2 ++
 arch/x86/xen/enlighten_hvm.c       |  2 ++
 arch/x86/xen/grant-table.c         | 25 +------------------------
 arch/x86/xen/mmu.c                 |  2 ++
 arch/x86/xen/mmu_pv.c              |  2 ++
 arch/x86/xen/p2m.c                 |  2 ++
 arch/x86/xen/pci-swiotlb-xen.c     |  2 ++
 arch/x86/xen/platform-pci-unplug.c | 16 ++--------------
 arch/x86/xen/vdso.h                |  2 ++
 arch/x86/xen/xen-pvh.S             | 15 ++-------------
 11 files changed, 20 insertions(+), 64 deletions(-)

diff --git a/arch/x86/xen/efi.c b/arch/x86/xen/efi.c
index 1804b27f9632..1fbb629a9d78 100644
--- a/arch/x86/xen/efi.c
+++ b/arch/x86/xen/efi.c
@@ -1,18 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (c) 2014 Oracle Co., Daniel Kiper
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <linux/bitops.h>
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 3b5318505c69..42122e21542b 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0
+
 #ifdef CONFIG_XEN_BALLOON_MEMORY_HOTPLUG
 #include <linux/bootmem.h>
 #endif
diff --git a/arch/x86/xen/enlighten_hvm.c b/arch/x86/xen/enlighten_hvm.c
index 19c1ff542387..0e75642d42a3 100644
--- a/arch/x86/xen/enlighten_hvm.c
+++ b/arch/x86/xen/enlighten_hvm.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0
+
 #include <linux/acpi.h>
 #include <linux/cpu.h>
 #include <linux/kexec.h>
diff --git a/arch/x86/xen/grant-table.c b/arch/x86/xen/grant-table.c
index 92ccc718152d..ecb0d5450334 100644
--- a/arch/x86/xen/grant-table.c
+++ b/arch/x86/xen/grant-table.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
 /******************************************************************************
  * grant_table.c
  * x86 specific part
@@ -8,30 +9,6 @@
  * Copyright (c) 2004-2005, K A Fraser
  * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
  *                    VA Linux Systems Japan. Split out x86 specific part.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation; or, when distributed
- * separately from the Linux kernel or incorporated into other
- * software packages, subject to the following license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this source file (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy, modify,
- * merge, publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
  */
 
 #include <linux/sched.h>
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index e0e13fe16d37..60e9c37fd79f 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0
+
 #include <linux/pfn.h>
 #include <asm/xen/page.h>
 #include <asm/xen/hypercall.h>
diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c
index ea4b2f69dfce..b7ec689320c7 100644
--- a/arch/x86/xen/mmu_pv.c
+++ b/arch/x86/xen/mmu_pv.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0
+
 /*
  * Xen mmu operations
  *
diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
index 159a897151d6..d6d74efd8912 100644
--- a/arch/x86/xen/p2m.c
+++ b/arch/x86/xen/p2m.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0
+
 /*
  * Xen leaves the responsibility for maintaining p2m mappings to the
  * guests themselves, but it must also access and update the p2m array
diff --git a/arch/x86/xen/pci-swiotlb-xen.c b/arch/x86/xen/pci-swiotlb-xen.c
index 37c6056a7bba..33293ce01d8d 100644
--- a/arch/x86/xen/pci-swiotlb-xen.c
+++ b/arch/x86/xen/pci-swiotlb-xen.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0
+
 /* Glue code to lib/swiotlb-xen.c */
 
 #include <linux/dma-mapping.h>
diff --git a/arch/x86/xen/platform-pci-unplug.c b/arch/x86/xen/platform-pci-unplug.c
index 3957946a6cfe..2e794ac9d8e8 100644
--- a/arch/x86/xen/platform-pci-unplug.c
+++ b/arch/x86/xen/platform-pci-unplug.c
@@ -1,22 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
+
 /******************************************************************************
  * platform-pci-unplug.c
  *
  * Xen platform PCI device driver
  * Copyright (c) 2010, Citrix
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
  */
 
 #include <linux/init.h>
diff --git a/arch/x86/xen/vdso.h b/arch/x86/xen/vdso.h
index 861fedfe5230..873c54c488fe 100644
--- a/arch/x86/xen/vdso.h
+++ b/arch/x86/xen/vdso.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
 /* Bit used for the pseudo-hwcap for non-negative segments.  We use
    bit 1 to avoid bugs in some versions of glibc when bit 0 is
    used; the choice is otherwise arbitrary. */
diff --git a/arch/x86/xen/xen-pvh.S b/arch/x86/xen/xen-pvh.S
index ca2d3b2bf2af..b0e471506cd8 100644
--- a/arch/x86/xen/xen-pvh.S
+++ b/arch/x86/xen/xen-pvh.S
@@ -1,18 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
 /*
  * Copyright C 2016, Oracle and/or its affiliates. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 	.code32
-- 
2.13.7


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

* Re: [PATCH 1/4] xen: move pv irq related functions under CONFIG_XEN_PV umbrella
  2018-07-17 12:01 ` [PATCH 1/4] xen: move pv irq related functions under CONFIG_XEN_PV umbrella Juergen Gross
@ 2018-07-17 19:19   ` Boris Ostrovsky
  2018-07-18  4:57     ` Juergen Gross
  0 siblings, 1 reply; 11+ messages in thread
From: Boris Ostrovsky @ 2018-07-17 19:19 UTC (permalink / raw)
  To: Juergen Gross, linux-kernel, xen-devel, x86; +Cc: hpa, tglx, mingo

On 07/17/2018 08:01 AM, Juergen Gross wrote:
> diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
> index d83cb5478f54..f723b5aa8f74 100644
> --- a/arch/x86/xen/Makefile
> +++ b/arch/x86/xen/Makefile
> @@ -12,25 +12,46 @@ endif


>  
>  obj-$(CONFIG_SMP)		+= smp.o
>  obj-$(CONFIG_XEN_PV_SMP)  	+= smp_pv.o
>  obj-$(CONFIG_XEN_PVHVM_SMP)  	+= smp_hvm.o


Is there a reason you did not add space here but did add them below?



> +
>  obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o
> +
>  obj-$(CONFIG_XEN_DEBUG_FS)	+= debugfs.o
> +
>  obj-$(CONFIG_XEN_DOM0)		+= vga.o
> +
>  obj-$(CONFIG_SWIOTLB_XEN)	+= pci-swiotlb-xen.o
> +
>  obj-$(CONFIG_XEN_EFI)		+= efi.o
> -obj-$(CONFIG_XEN_PVH)	 	+= xen-pvh.o


For the series:

Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>



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

* Re: [PATCH 1/4] xen: move pv irq related functions under CONFIG_XEN_PV umbrella
  2018-07-17 19:19   ` Boris Ostrovsky
@ 2018-07-18  4:57     ` Juergen Gross
  0 siblings, 0 replies; 11+ messages in thread
From: Juergen Gross @ 2018-07-18  4:57 UTC (permalink / raw)
  To: Boris Ostrovsky, linux-kernel, xen-devel, x86; +Cc: hpa, tglx, mingo

On 17/07/18 21:19, Boris Ostrovsky wrote:
> On 07/17/2018 08:01 AM, Juergen Gross wrote:
>> diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
>> index d83cb5478f54..f723b5aa8f74 100644
>> --- a/arch/x86/xen/Makefile
>> +++ b/arch/x86/xen/Makefile
>> @@ -12,25 +12,46 @@ endif
> 
> 
>>  
>>  obj-$(CONFIG_SMP)		+= smp.o
>>  obj-$(CONFIG_XEN_PV_SMP)  	+= smp_pv.o
>>  obj-$(CONFIG_XEN_PVHVM_SMP)  	+= smp_hvm.o
> 
> 
> Is there a reason you did not add space here but did add them below?

I felt like the SMP related stuff should be in one group.


Juergen

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

* Re: [PATCH 0/4] xen: various cleanups
  2018-07-17 12:01 [PATCH 0/4] xen: various cleanups Juergen Gross
                   ` (3 preceding siblings ...)
  2018-07-17 12:01 ` [PATCH 4/4] xen: add SPDX identifier in arch/x86/xen files Juergen Gross
@ 2018-08-07 13:10 ` Juergen Gross
  2018-08-07 14:00   ` Boris Ostrovsky
  4 siblings, 1 reply; 11+ messages in thread
From: Juergen Gross @ 2018-08-07 13:10 UTC (permalink / raw)
  To: linux-kernel, xen-devel, x86; +Cc: boris.ostrovsky, hpa, tglx, mingo

On 17/07/18 14:01, Juergen Gross wrote:
> Some Xen related cleanups:
> - move some pv-only code from CONFIG_XEN to CONFIG_XEN_PV
> - use CONFIG_XEN_PVHVM in Makefile instead of #ifdef around a complete source
> - add SPDX identifier where missing
> 
> Juergen Gross (4):
>   xen: move pv irq related functions under CONFIG_XEN_PV umbrella
>   xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c
>   xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM
>   xen: add SPDX identifier in arch/x86/xen files
> 
>  arch/x86/entry/entry_32.S          |   8 +-
>  arch/x86/entry/entry_64.S          |   8 +-
>  arch/x86/xen/Makefile              |  41 ++++++--
>  arch/x86/xen/efi.c                 |  14 +--
>  arch/x86/xen/enlighten.c           |   2 +
>  arch/x86/xen/enlighten_hvm.c       |   2 +
>  arch/x86/xen/grant-table.c         |  25 +----
>  arch/x86/xen/mmu.c                 | 188 +------------------------------------
>  arch/x86/xen/mmu_pv.c              | 140 +++++++++++++++++++++++++++
>  arch/x86/xen/p2m.c                 |   2 +
>  arch/x86/xen/pci-swiotlb-xen.c     |   2 +
>  arch/x86/xen/platform-pci-unplug.c |  18 +---
>  arch/x86/xen/vdso.h                |   2 +
>  arch/x86/xen/xen-pvh.S             |  15 +--
>  include/xen/interface/memory.h     |   6 --
>  include/xen/xen-ops.h              | 133 +++++++++++++++++---------
>  16 files changed, 287 insertions(+), 319 deletions(-)
> 
Boris, any objections?


Juergen

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

* Re: [PATCH 0/4] xen: various cleanups
  2018-08-07 13:10 ` [PATCH 0/4] xen: various cleanups Juergen Gross
@ 2018-08-07 14:00   ` Boris Ostrovsky
  2018-08-07 15:21     ` Juergen Gross
  0 siblings, 1 reply; 11+ messages in thread
From: Boris Ostrovsky @ 2018-08-07 14:00 UTC (permalink / raw)
  To: Juergen Gross, linux-kernel, xen-devel, x86; +Cc: hpa, tglx, mingo

On 08/07/2018 09:10 AM, Juergen Gross wrote:
> On 17/07/18 14:01, Juergen Gross wrote:
>> Some Xen related cleanups:
>> - move some pv-only code from CONFIG_XEN to CONFIG_XEN_PV
>> - use CONFIG_XEN_PVHVM in Makefile instead of #ifdef around a complete source
>> - add SPDX identifier where missing
>>
>> Juergen Gross (4):
>>   xen: move pv irq related functions under CONFIG_XEN_PV umbrella
>>   xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c
>>   xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM
>>   xen: add SPDX identifier in arch/x86/xen files
>>
>>  arch/x86/entry/entry_32.S          |   8 +-
>>  arch/x86/entry/entry_64.S          |   8 +-
>>  arch/x86/xen/Makefile              |  41 ++++++--
>>  arch/x86/xen/efi.c                 |  14 +--
>>  arch/x86/xen/enlighten.c           |   2 +
>>  arch/x86/xen/enlighten_hvm.c       |   2 +
>>  arch/x86/xen/grant-table.c         |  25 +----
>>  arch/x86/xen/mmu.c                 | 188 +------------------------------------
>>  arch/x86/xen/mmu_pv.c              | 140 +++++++++++++++++++++++++++
>>  arch/x86/xen/p2m.c                 |   2 +
>>  arch/x86/xen/pci-swiotlb-xen.c     |   2 +
>>  arch/x86/xen/platform-pci-unplug.c |  18 +---
>>  arch/x86/xen/vdso.h                |   2 +
>>  arch/x86/xen/xen-pvh.S             |  15 +--
>>  include/xen/interface/memory.h     |   6 --
>>  include/xen/xen-ops.h              | 133 +++++++++++++++++---------
>>  16 files changed, 287 insertions(+), 319 deletions(-)
>>
> Boris, any objections?


This series had my R-b, but I was waiting for x86 maintainers to ack the
first patch.

But now that I looked at this again, I wonder whether

+#ifdef CONFIG_XEN
 BUILD_INTERRUPT3(xen_hvm_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
          xen_evtchn_do_upcall)
+#endif


and

+#ifdef CONFIG_XEN
 apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
     xen_hvm_callback_vector xen_evtchn_do_upcall
+#endif


should be under XEN_PVHVM


-boris





-boris

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

* Re: [PATCH 0/4] xen: various cleanups
  2018-08-07 14:00   ` Boris Ostrovsky
@ 2018-08-07 15:21     ` Juergen Gross
  2018-08-07 16:43       ` Boris Ostrovsky
  0 siblings, 1 reply; 11+ messages in thread
From: Juergen Gross @ 2018-08-07 15:21 UTC (permalink / raw)
  To: Boris Ostrovsky, linux-kernel, xen-devel, x86; +Cc: hpa, tglx, mingo

On 07/08/18 16:00, Boris Ostrovsky wrote:
> On 08/07/2018 09:10 AM, Juergen Gross wrote:
>> On 17/07/18 14:01, Juergen Gross wrote:
>>> Some Xen related cleanups:
>>> - move some pv-only code from CONFIG_XEN to CONFIG_XEN_PV
>>> - use CONFIG_XEN_PVHVM in Makefile instead of #ifdef around a complete source
>>> - add SPDX identifier where missing
>>>
>>> Juergen Gross (4):
>>>   xen: move pv irq related functions under CONFIG_XEN_PV umbrella
>>>   xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c
>>>   xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM
>>>   xen: add SPDX identifier in arch/x86/xen files
>>>
>>>  arch/x86/entry/entry_32.S          |   8 +-
>>>  arch/x86/entry/entry_64.S          |   8 +-
>>>  arch/x86/xen/Makefile              |  41 ++++++--
>>>  arch/x86/xen/efi.c                 |  14 +--
>>>  arch/x86/xen/enlighten.c           |   2 +
>>>  arch/x86/xen/enlighten_hvm.c       |   2 +
>>>  arch/x86/xen/grant-table.c         |  25 +----
>>>  arch/x86/xen/mmu.c                 | 188 +------------------------------------
>>>  arch/x86/xen/mmu_pv.c              | 140 +++++++++++++++++++++++++++
>>>  arch/x86/xen/p2m.c                 |   2 +
>>>  arch/x86/xen/pci-swiotlb-xen.c     |   2 +
>>>  arch/x86/xen/platform-pci-unplug.c |  18 +---
>>>  arch/x86/xen/vdso.h                |   2 +
>>>  arch/x86/xen/xen-pvh.S             |  15 +--
>>>  include/xen/interface/memory.h     |   6 --
>>>  include/xen/xen-ops.h              | 133 +++++++++++++++++---------
>>>  16 files changed, 287 insertions(+), 319 deletions(-)
>>>
>> Boris, any objections?
> 
> 
> This series had my R-b, but I was waiting for x86 maintainers to ack the
> first patch.
> 
> But now that I looked at this again, I wonder whether
> 
> +#ifdef CONFIG_XEN
>  BUILD_INTERRUPT3(xen_hvm_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
>           xen_evtchn_do_upcall)
> +#endif
> 
> 
> and
> 
> +#ifdef CONFIG_XEN
>  apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
>      xen_hvm_callback_vector xen_evtchn_do_upcall
> +#endif
> 
> 
> should be under XEN_PVHVM

Hmm, right. Do you want to change that while committing or should I send
V2?


Juergen


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

* Re: [PATCH 0/4] xen: various cleanups
  2018-08-07 15:21     ` Juergen Gross
@ 2018-08-07 16:43       ` Boris Ostrovsky
  0 siblings, 0 replies; 11+ messages in thread
From: Boris Ostrovsky @ 2018-08-07 16:43 UTC (permalink / raw)
  To: Juergen Gross, linux-kernel, xen-devel, x86; +Cc: hpa, tglx, mingo

On 08/07/2018 11:21 AM, Juergen Gross wrote:
> On 07/08/18 16:00, Boris Ostrovsky wrote:
>> On 08/07/2018 09:10 AM, Juergen Gross wrote:
>>> On 17/07/18 14:01, Juergen Gross wrote:
>>>> Some Xen related cleanups:
>>>> - move some pv-only code from CONFIG_XEN to CONFIG_XEN_PV
>>>> - use CONFIG_XEN_PVHVM in Makefile instead of #ifdef around a complete source
>>>> - add SPDX identifier where missing
>>>>
>>>> Juergen Gross (4):
>>>>   xen: move pv irq related functions under CONFIG_XEN_PV umbrella
>>>>   xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c
>>>>   xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM
>>>>   xen: add SPDX identifier in arch/x86/xen files
>>>>
>>>>  arch/x86/entry/entry_32.S          |   8 +-
>>>>  arch/x86/entry/entry_64.S          |   8 +-
>>>>  arch/x86/xen/Makefile              |  41 ++++++--
>>>>  arch/x86/xen/efi.c                 |  14 +--
>>>>  arch/x86/xen/enlighten.c           |   2 +
>>>>  arch/x86/xen/enlighten_hvm.c       |   2 +
>>>>  arch/x86/xen/grant-table.c         |  25 +----
>>>>  arch/x86/xen/mmu.c                 | 188 +------------------------------------
>>>>  arch/x86/xen/mmu_pv.c              | 140 +++++++++++++++++++++++++++
>>>>  arch/x86/xen/p2m.c                 |   2 +
>>>>  arch/x86/xen/pci-swiotlb-xen.c     |   2 +
>>>>  arch/x86/xen/platform-pci-unplug.c |  18 +---
>>>>  arch/x86/xen/vdso.h                |   2 +
>>>>  arch/x86/xen/xen-pvh.S             |  15 +--
>>>>  include/xen/interface/memory.h     |   6 --
>>>>  include/xen/xen-ops.h              | 133 +++++++++++++++++---------
>>>>  16 files changed, 287 insertions(+), 319 deletions(-)
>>>>
>>> Boris, any objections?
>>
>> This series had my R-b, but I was waiting for x86 maintainers to ack the
>> first patch.
>>
>> But now that I looked at this again, I wonder whether
>>
>> +#ifdef CONFIG_XEN
>>  BUILD_INTERRUPT3(xen_hvm_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
>>           xen_evtchn_do_upcall)
>> +#endif
>>
>>
>> and
>>
>> +#ifdef CONFIG_XEN
>>  apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
>>      xen_hvm_callback_vector xen_evtchn_do_upcall
>> +#endif
>>
>>
>> should be under XEN_PVHVM
> Hmm, right. Do you want to change that while committing or should I send
> V2?


This still needs an ack from x86 folks. And include/xen/events.h may
need some additional ifdefery for xen_hvm_callback_vector().

So a v2 (for this patch only) would be good.

-boris


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

end of thread, other threads:[~2018-08-07 16:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-17 12:01 [PATCH 0/4] xen: various cleanups Juergen Gross
2018-07-17 12:01 ` [PATCH 1/4] xen: move pv irq related functions under CONFIG_XEN_PV umbrella Juergen Gross
2018-07-17 19:19   ` Boris Ostrovsky
2018-07-18  4:57     ` Juergen Gross
2018-07-17 12:01 ` [PATCH 2/4] xen: move pv specific parts of arch/x86/xen/mmu.c to mmu_pv.c Juergen Gross
2018-07-17 12:01 ` [PATCH 3/4] xen: link platform-pci-unplug.o only if CONFIG_XEN_PVHVM Juergen Gross
2018-07-17 12:01 ` [PATCH 4/4] xen: add SPDX identifier in arch/x86/xen files Juergen Gross
2018-08-07 13:10 ` [PATCH 0/4] xen: various cleanups Juergen Gross
2018-08-07 14:00   ` Boris Ostrovsky
2018-08-07 15:21     ` Juergen Gross
2018-08-07 16:43       ` Boris Ostrovsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).