All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH WIP 0/5] xen/arm: grant_table, blkfront and blkback
@ 2012-07-04 11:14 ` Stefano Stabellini
  0 siblings, 0 replies; 10+ messages in thread
From: Stefano Stabellini @ 2012-07-04 11:14 UTC (permalink / raw)
  To: xen-devel; +Cc: linux-kernel, Stefano Stabellini, Ian Campbell, David Vrabel

Hi all,
this patch series initializes the grant_table and xenbus on ARM.
It also get blkfront and blkback to compile and run properly.

With this patch series and the corresponding xen patch series applied, I
am able to boot a Linux domU with a root filesystem on a xen PV disk.


Stefano Stabellini (5):
      xen/arm: initialize grant_table on ARM
      xen/arm: set xen_platform_pci_unplug to XEN_UNPLUG_ALL
      xen/arm: implement alloc/free_xenballooned_pages with alloc_pages/kfree
      xen: allow privcmd for hvm guests
      xen/arm: compile blkfront and blkback

 arch/arm/include/asm/hypervisor.h    |    6 +++++
 arch/arm/xen/enlighten.c             |   39 +++++++++++++++++++++++++++++++++-
 drivers/block/xen-blkback/blkback.c  |    1 +
 drivers/block/xen-blkfront.c         |    1 +
 drivers/xen/grant-table.c            |    2 +-
 drivers/xen/xenfs/privcmd.c          |    7 ------
 include/xen/interface/hvm/params.h   |    4 ++-
 include/xen/interface/io/protocols.h |    3 ++
 8 files changed, 53 insertions(+), 10 deletions(-)


git://xenbits.xen.org/people/sstabellini/linux-pvhvm.git xenarmv7-3

Cheers,

Stefano

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

* [PATCH WIP 0/5] xen/arm: grant_table, blkfront and blkback
@ 2012-07-04 11:14 ` Stefano Stabellini
  0 siblings, 0 replies; 10+ messages in thread
From: Stefano Stabellini @ 2012-07-04 11:14 UTC (permalink / raw)
  To: xen-devel; +Cc: linux-kernel, Stefano Stabellini, Ian Campbell, David Vrabel

Hi all,
this patch series initializes the grant_table and xenbus on ARM.
It also get blkfront and blkback to compile and run properly.

With this patch series and the corresponding xen patch series applied, I
am able to boot a Linux domU with a root filesystem on a xen PV disk.


Stefano Stabellini (5):
      xen/arm: initialize grant_table on ARM
      xen/arm: set xen_platform_pci_unplug to XEN_UNPLUG_ALL
      xen/arm: implement alloc/free_xenballooned_pages with alloc_pages/kfree
      xen: allow privcmd for hvm guests
      xen/arm: compile blkfront and blkback

 arch/arm/include/asm/hypervisor.h    |    6 +++++
 arch/arm/xen/enlighten.c             |   39 +++++++++++++++++++++++++++++++++-
 drivers/block/xen-blkback/blkback.c  |    1 +
 drivers/block/xen-blkfront.c         |    1 +
 drivers/xen/grant-table.c            |    2 +-
 drivers/xen/xenfs/privcmd.c          |    7 ------
 include/xen/interface/hvm/params.h   |    4 ++-
 include/xen/interface/io/protocols.h |    3 ++
 8 files changed, 53 insertions(+), 10 deletions(-)


git://xenbits.xen.org/people/sstabellini/linux-pvhvm.git xenarmv7-3

Cheers,

Stefano

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

* [PATCH WIP 1/5] xen/arm: initialize grant_table on ARM
  2012-07-04 11:14 ` Stefano Stabellini
  (?)
@ 2012-07-04 11:15 ` Stefano Stabellini
  -1 siblings, 0 replies; 10+ messages in thread
From: Stefano Stabellini @ 2012-07-04 11:15 UTC (permalink / raw)
  To: xen-devel; +Cc: linux-kernel, stefano.stabellini, Ian.Campbell, david.vrabel

Initialize the grant table mapping it at HVM_PARAM_GRANT_START_PFN.
After the grant table is initialized, call xenbus_probe (if not dom0).

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 arch/arm/xen/enlighten.c           |   18 ++++++++++++++++++
 drivers/xen/grant-table.c          |    2 +-
 include/xen/interface/hvm/params.h |    4 +++-
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index ddacecf..6901e37 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -1,9 +1,13 @@
 #include <xen/xen.h>
 #include <xen/interface/xen.h>
 #include <xen/interface/memory.h>
+#include <xen/interface/hvm/params.h>
 #include <asm/xen/hypervisor.h>
 #include <asm/xen/hypercall.h>
 #include <xen/features.h>
+#include <xen/grant_table.h>
+#include <xen/hvm.h>
+#include <xen/xenbus.h>
 
 #include <linux/module.h>
 
@@ -133,6 +137,7 @@ static void __init xen_hvm_init_shared_info(void)
 	int cpu;
 	struct xen_add_to_physmap xatp;
 	static struct shared_info *shared_info_page = 0;
+	uint64_t val;
 
 	xen_setup_features();
 	if (xen_feature(XENFEAT_dom0))
@@ -171,6 +176,19 @@ static void __init xen_hvm_init_shared_info(void)
 	for_each_online_cpu(cpu) {
 		per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu];
 	}
+
+	if (!xen_hvm_resume_frames) {
+		if (hvm_get_parameter(HVM_PARAM_GRANT_START_PFN, &val) >= 0)
+			xen_hvm_resume_frames = val << PAGE_SHIFT;
+		else {
+			printk(KERN_ERR "error getting "
+					"HVM_PARAM_GRANT_START_PFN");
+			return;
+		}
+	}
+	gnttab_init();
+	if (!xen_initial_domain())
+		xenbus_probe(NULL);
 }
 core_initcall(xen_hvm_init_shared_info);
 
diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index db3964b..766fc35 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -58,7 +58,7 @@
 
 static grant_ref_t **gnttab_list;
 static unsigned int nr_grant_frames;
-static unsigned int boot_max_nr_grant_frames;
+static unsigned int boot_max_nr_grant_frames = 1;
 static int gnttab_free_count;
 static grant_ref_t gnttab_free_head;
 static DEFINE_SPINLOCK(gnttab_list_lock);
diff --git a/include/xen/interface/hvm/params.h b/include/xen/interface/hvm/params.h
index 1b4f923..e51269b 100644
--- a/include/xen/interface/hvm/params.h
+++ b/include/xen/interface/hvm/params.h
@@ -94,6 +94,8 @@
 #define HVM_PARAM_CONSOLE_PFN    17
 #define HVM_PARAM_CONSOLE_EVTCHN 18
 
-#define HVM_NR_PARAMS          19
+#define HVM_PARAM_GRANT_START_PFN 30
+
+#define HVM_NR_PARAMS          31
 
 #endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
-- 
1.7.2.5


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

* [PATCH WIP 2/5] xen/arm: set xen_platform_pci_unplug to XEN_UNPLUG_ALL
  2012-07-04 11:14 ` Stefano Stabellini
  (?)
  (?)
@ 2012-07-04 11:15 ` Stefano Stabellini
  2012-07-04 11:25   ` David Vrabel
  -1 siblings, 1 reply; 10+ messages in thread
From: Stefano Stabellini @ 2012-07-04 11:15 UTC (permalink / raw)
  To: xen-devel; +Cc: linux-kernel, stefano.stabellini, Ian.Campbell, david.vrabel

Set xen_platform_pci_unplug to XEN_UNPLUG_ALL by default to make
blkfront happy. The parameter doesn't make sense on ARM and should be
removed.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 arch/arm/xen/enlighten.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 6901e37..a6dc9eb 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -8,6 +8,7 @@
 #include <xen/grant_table.h>
 #include <xen/hvm.h>
 #include <xen/xenbus.h>
+#include <xen/platform_pci.h>
 
 #include <linux/module.h>
 
@@ -33,7 +34,7 @@ __read_mostly int xen_have_vector_callback;
 EXPORT_SYMBOL_GPL(xen_have_vector_callback);
 
 /* XXX: to be removed */
-int xen_platform_pci_unplug;
+int xen_platform_pci_unplug = XEN_UNPLUG_ALL;
 EXPORT_SYMBOL_GPL(xen_platform_pci_unplug);
 
 #define FOREIGN_MAP_BUFFER 0x90000000UL
-- 
1.7.2.5


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

* [PATCH WIP 3/5] xen/arm: implement alloc/free_xenballooned_pages with alloc_pages/kfree
  2012-07-04 11:14 ` Stefano Stabellini
                   ` (2 preceding siblings ...)
  (?)
@ 2012-07-04 11:15 ` Stefano Stabellini
  -1 siblings, 0 replies; 10+ messages in thread
From: Stefano Stabellini @ 2012-07-04 11:15 UTC (permalink / raw)
  To: xen-devel; +Cc: linux-kernel, stefano.stabellini, Ian.Campbell, david.vrabel

Only until we get the balloon driver to work.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 arch/arm/xen/enlighten.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index a6dc9eb..924c9aa 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -199,3 +199,21 @@ int __init xen_guest_init(void)
 	return 0;
 }
 EXPORT_SYMBOL(xen_guest_init);
+
+/* XXX: only until balloon is properly working */
+int alloc_xenballooned_pages(int nr_pages, struct page **pages, bool highmem)
+{
+	*pages = alloc_pages(highmem ? GFP_HIGHUSER : GFP_KERNEL,
+			get_order(nr_pages));
+	if (*pages == NULL)
+		return -ENOMEM;
+	return 0;
+}
+EXPORT_SYMBOL(alloc_xenballooned_pages);
+
+void free_xenballooned_pages(int nr_pages, struct page **pages)
+{
+	kfree(*pages);
+	*pages = NULL;
+}
+EXPORT_SYMBOL(free_xenballooned_pages);
-- 
1.7.2.5


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

* [PATCH WIP 4/5] xen: allow privcmd for hvm guests
  2012-07-04 11:14 ` Stefano Stabellini
                   ` (3 preceding siblings ...)
  (?)
@ 2012-07-04 11:15 ` Stefano Stabellini
  -1 siblings, 0 replies; 10+ messages in thread
From: Stefano Stabellini @ 2012-07-04 11:15 UTC (permalink / raw)
  To: xen-devel; +Cc: linux-kernel, stefano.stabellini, Ian.Campbell, david.vrabel

Ian's initial XENMAPSPACE_gmfn_foreign implementation is enough to get
privcmd mmap to work for XENFEAT_auto_translated_physmap guests.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 drivers/xen/xenfs/privcmd.c |    7 -------
 1 files changed, 0 insertions(+), 7 deletions(-)

diff --git a/drivers/xen/xenfs/privcmd.c b/drivers/xen/xenfs/privcmd.c
index c200b49..5c2b9e9 100644
--- a/drivers/xen/xenfs/privcmd.c
+++ b/drivers/xen/xenfs/privcmd.c
@@ -387,13 +387,6 @@ static int privcmd_mmap(struct file *file, struct vm_area_struct *vma)
 {
 	//printk(KERN_CRIT "privcmd_mmap\n");
 
-	/* Unsupported for auto-translate guests. */
-	if (xen_feature(XENFEAT_auto_translated_physmap))
-	{
-		printk(KERN_CRIT "privcmd_mmap -- no auto translated..\n");
-		return -ENOSYS;
-	}
-
 	/* DONTCOPY is essential for Xen because copy_page_range doesn't know
 	 * how to recreate these mappings */
 	vma->vm_flags |= VM_RESERVED | VM_IO | VM_DONTCOPY | VM_PFNMAP;
-- 
1.7.2.5


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

* [PATCH WIP 5/5] xen/arm: compile blkfront and blkback
  2012-07-04 11:14 ` Stefano Stabellini
                   ` (4 preceding siblings ...)
  (?)
@ 2012-07-04 11:15 ` Stefano Stabellini
  -1 siblings, 0 replies; 10+ messages in thread
From: Stefano Stabellini @ 2012-07-04 11:15 UTC (permalink / raw)
  To: xen-devel; +Cc: linux-kernel, stefano.stabellini, Ian.Campbell, david.vrabel

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 arch/arm/include/asm/hypervisor.h    |    6 ++++++
 drivers/block/xen-blkback/blkback.c  |    1 +
 drivers/block/xen-blkfront.c         |    1 +
 include/xen/interface/io/protocols.h |    3 +++
 4 files changed, 11 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/include/asm/hypervisor.h

diff --git a/arch/arm/include/asm/hypervisor.h b/arch/arm/include/asm/hypervisor.h
new file mode 100644
index 0000000..b90d9e5
--- /dev/null
+++ b/arch/arm/include/asm/hypervisor.h
@@ -0,0 +1,6 @@
+#ifndef _ASM_ARM_HYPERVISOR_H
+#define _ASM_ARM_HYPERVISOR_H
+
+#include <asm/xen/hypervisor.h>
+
+#endif
diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c
index fbffdf0..78ce4c0 100644
--- a/drivers/block/xen-blkback/blkback.c
+++ b/drivers/block/xen-blkback/blkback.c
@@ -45,6 +45,7 @@
 
 #include <xen/events.h>
 #include <xen/page.h>
+#include <xen/xen.h>
 #include <asm/xen/hypervisor.h>
 #include <asm/xen/hypercall.h>
 #include "common.h"
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index 9fd3ee2..dd1589e 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -56,6 +56,7 @@
 #include <xen/interface/io/protocols.h>
 
 #include <asm/xen/hypervisor.h>
+#include <asm/xen/mmu.h>
 
 enum blkif_state {
 	BLKIF_STATE_DISCONNECTED,
diff --git a/include/xen/interface/io/protocols.h b/include/xen/interface/io/protocols.h
index 01fc8ae..e85cc64 100644
--- a/include/xen/interface/io/protocols.h
+++ b/include/xen/interface/io/protocols.h
@@ -5,6 +5,7 @@
 #define XEN_IO_PROTO_ABI_X86_64     "x86_64-abi"
 #define XEN_IO_PROTO_ABI_IA64       "ia64-abi"
 #define XEN_IO_PROTO_ABI_POWERPC64  "powerpc64-abi"
+#define XEN_IO_PROTO_ABI_ARM	    "arm-abi"
 
 #if defined(__i386__)
 # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_X86_32
@@ -14,6 +15,8 @@
 # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_IA64
 #elif defined(__powerpc64__)
 # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_POWERPC64
+#elif defined(__arm__)
+# define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_ARM
 #else
 # error arch fixup needed here
 #endif
-- 
1.7.2.5


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

* Re: [PATCH WIP 2/5] xen/arm: set xen_platform_pci_unplug to XEN_UNPLUG_ALL
  2012-07-04 11:15 ` [PATCH WIP 2/5] xen/arm: set xen_platform_pci_unplug to XEN_UNPLUG_ALL Stefano Stabellini
@ 2012-07-04 11:25   ` David Vrabel
  2012-07-04 11:27     ` Stefano Stabellini
  0 siblings, 1 reply; 10+ messages in thread
From: David Vrabel @ 2012-07-04 11:25 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: xen-devel@lists.xensource.com, linux-kernel@vger.kernel.org,
	Ian Campbell

On 04/07/12 12:15, Stefano Stabellini wrote:
> Set xen_platform_pci_unplug to XEN_UNPLUG_ALL by default to make
> blkfront happy. The parameter doesn't make sense on ARM and should be
> removed.

Why is this parameter nonsensical on ARM?  ARM systems can have PCI devices.

David

> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> ---
>  arch/arm/xen/enlighten.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
> index 6901e37..a6dc9eb 100644
> --- a/arch/arm/xen/enlighten.c
> +++ b/arch/arm/xen/enlighten.c
> @@ -8,6 +8,7 @@
>  #include <xen/grant_table.h>
>  #include <xen/hvm.h>
>  #include <xen/xenbus.h>
> +#include <xen/platform_pci.h>
>  
>  #include <linux/module.h>
>  
> @@ -33,7 +34,7 @@ __read_mostly int xen_have_vector_callback;
>  EXPORT_SYMBOL_GPL(xen_have_vector_callback);
>  
>  /* XXX: to be removed */
> -int xen_platform_pci_unplug;
> +int xen_platform_pci_unplug = XEN_UNPLUG_ALL;
>  EXPORT_SYMBOL_GPL(xen_platform_pci_unplug);
>  
>  #define FOREIGN_MAP_BUFFER 0x90000000UL


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

* Re: [PATCH WIP 2/5] xen/arm: set xen_platform_pci_unplug to XEN_UNPLUG_ALL
  2012-07-04 11:25   ` David Vrabel
@ 2012-07-04 11:27     ` Stefano Stabellini
  2012-07-04 11:49       ` Ian Campbell
  0 siblings, 1 reply; 10+ messages in thread
From: Stefano Stabellini @ 2012-07-04 11:27 UTC (permalink / raw)
  To: David Vrabel
  Cc: Stefano Stabellini, xen-devel@lists.xensource.com,
	linux-kernel@vger.kernel.org, Ian Campbell

On Wed, 4 Jul 2012, David Vrabel wrote:
> On 04/07/12 12:15, Stefano Stabellini wrote:
> > Set xen_platform_pci_unplug to XEN_UNPLUG_ALL by default to make
> > blkfront happy. The parameter doesn't make sense on ARM and should be
> > removed.
> 
> Why is this parameter nonsensical on ARM?  ARM systems can have PCI devices.

Because we shouldn't assume the presence of a PCI bus on ARM. Moreover
it would be nice to avoid the ugly unplug protocol entirely if we can.

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

* Re: [PATCH WIP 2/5] xen/arm: set xen_platform_pci_unplug to XEN_UNPLUG_ALL
  2012-07-04 11:27     ` Stefano Stabellini
@ 2012-07-04 11:49       ` Ian Campbell
  0 siblings, 0 replies; 10+ messages in thread
From: Ian Campbell @ 2012-07-04 11:49 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: David Vrabel, xen-devel@lists.xensource.com,
	linux-kernel@vger.kernel.org

On Wed, 2012-07-04 at 12:27 +0100, Stefano Stabellini wrote:
> On Wed, 4 Jul 2012, David Vrabel wrote:
> > On 04/07/12 12:15, Stefano Stabellini wrote:
> > > Set xen_platform_pci_unplug to XEN_UNPLUG_ALL by default to make
> > > blkfront happy. The parameter doesn't make sense on ARM and should be
> > > removed.
> > 
> > Why is this parameter nonsensical on ARM?  ARM systems can have PCI devices.
> 
> Because we shouldn't assume the presence of a PCI bus on ARM. Moreover
> it would be nice to avoid the ugly unplug protocol entirely if we can.

Also "pci" here refers to the "platform_pci" device not to PCI devices
in general.

SO I think this option is indeed nonsensical at least until such a time
as we have HVM like ARM guests (i.e. ones with a DM emulating specific
platforms) which require a PCI device which serves as the "you are
running under Xen" hook intp to the non-PV aware OSes driver subsystem.
And it's not clear that when we have such guests that a platform pci
device will be the correct solution on ARM anyway.

Ian.



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

end of thread, other threads:[~2012-07-04 11:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-04 11:14 [PATCH WIP 0/5] xen/arm: grant_table, blkfront and blkback Stefano Stabellini
2012-07-04 11:14 ` Stefano Stabellini
2012-07-04 11:15 ` [PATCH WIP 1/5] xen/arm: initialize grant_table on ARM Stefano Stabellini
2012-07-04 11:15 ` [PATCH WIP 2/5] xen/arm: set xen_platform_pci_unplug to XEN_UNPLUG_ALL Stefano Stabellini
2012-07-04 11:25   ` David Vrabel
2012-07-04 11:27     ` Stefano Stabellini
2012-07-04 11:49       ` Ian Campbell
2012-07-04 11:15 ` [PATCH WIP 3/5] xen/arm: implement alloc/free_xenballooned_pages with alloc_pages/kfree Stefano Stabellini
2012-07-04 11:15 ` [PATCH WIP 4/5] xen: allow privcmd for hvm guests Stefano Stabellini
2012-07-04 11:15 ` [PATCH WIP 5/5] xen/arm: compile blkfront and blkback Stefano Stabellini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.