From: konrad.wilk@oracle.com (Konrad Rzeszutek Wilk)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 07/24] xen/arm: Xen detection and shared_info page mapping
Date: Fri, 14 Sep 2012 09:08:07 -0400 [thread overview]
Message-ID: <20120914130807.GK25249@phenom.dumpdata.com> (raw)
In-Reply-To: <1347621207-11294-7-git-send-email-stefano.stabellini@eu.citrix.com>
On Fri, Sep 14, 2012 at 12:13:09PM +0100, Stefano Stabellini wrote:
> Check for a node in the device tree compatible with "xen,xen", if it is
> present set xen_domain_type to XEN_HVM_DOMAIN and continue
> initialization.
>
> Map the real shared info page using XENMEM_add_to_physmap with
> XENMAPSPACE_shared_info.
>
> Changes in v4:
>
> - simpler parsing of Xen version in the compatible DT node.
>
> Changes in v3:
>
> - use the "xen,xen" notation rather than "arm,xen";
> - add an additional check on the presence of the Xen version.
>
> Changes in v2:
>
> - replace pr_info with pr_debug.
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> ---
> arch/arm/xen/enlighten.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 61 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
> index c535540..6a0217d 100644
> --- a/arch/arm/xen/enlighten.c
> +++ b/arch/arm/xen/enlighten.c
> @@ -5,6 +5,9 @@
> #include <asm/xen/hypervisor.h>
> #include <asm/xen/hypercall.h>
> #include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/of_irq.h>
> +#include <linux/of_address.h>
>
> struct start_info _xen_start_info;
> struct start_info *xen_start_info = &_xen_start_info;
> @@ -33,3 +36,61 @@ int xen_remap_domain_mfn_range(struct vm_area_struct *vma,
> return -ENOSYS;
> }
> EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_range);
> +
> +/*
> + * see Documentation/devicetree/bindings/arm/xen.txt for the
> + * documentation of the Xen Device Tree format.
> + */
> +static int __init xen_guest_init(void)
> +{
> + struct xen_add_to_physmap xatp;
> + static struct shared_info *shared_info_page = 0;
> + struct device_node *node;
> + int len;
> + const char *s = NULL;
> + const char *version = NULL;
> + const char *xen_prefix = "xen,xen-";
> +
> + node = of_find_compatible_node(NULL, NULL, "xen,xen");
> + if (!node) {
> + pr_debug("No Xen support\n");
> + return 0;
> + }
> + s = of_get_property(node, "compatible", &len);
> + if (strlen(xen_prefix) + 3 < len &&
> + !strncmp(xen_prefix, s, strlen(xen_prefix)))
If we have version '4.3.1' won't this trip us over?
Or if we only have 'major' and 'minor', then won't '4.11' trip us
over too?
> + version = s + strlen(xen_prefix);
> + if (version == NULL) {
> + pr_debug("Xen version not found\n");
> + return 0;
> + }
> + xen_domain_type = XEN_HVM_DOMAIN;
> +
> + if (!shared_info_page)
> + shared_info_page = (struct shared_info *)
> + get_zeroed_page(GFP_KERNEL);
> + if (!shared_info_page) {
> + pr_err("not enough memory\n");
> + return -ENOMEM;
> + }
> + xatp.domid = DOMID_SELF;
> + xatp.idx = 0;
> + xatp.space = XENMAPSPACE_shared_info;
> + xatp.gpfn = __pa(shared_info_page) >> PAGE_SHIFT;
> + if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp))
> + BUG();
> +
> + HYPERVISOR_shared_info = (struct shared_info *)shared_info_page;
> +
> + /* xen_vcpu is a pointer to the vcpu_info struct in the shared_info
> + * page, we use it in the event channel upcall and in some pvclock
> + * related functions. We don't need the vcpu_info placement
> + * optimizations because we don't use any pv_mmu or pv_irq op on
> + * HVM.
> + * The shared info contains exactly 1 CPU (the boot CPU). The guest
> + * is required to use VCPUOP_register_vcpu_info to place vcpu info
> + * for secondary CPUs as they are brought up. */
> + per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0];
> + return 0;
> +}
> +core_initcall(xen_guest_init);
> --
> 1.7.2.5
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: arnd@arndb.de, linux@arm.linux.org.uk, catalin.marinas@arm.com,
linaro-dev@lists.linaro.org,
linux-arm-kernel@lists.infradead.org, tim@xen.org,
Ian.Campbell@citrix.com, xen-devel@lists.xensource.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 07/24] xen/arm: Xen detection and shared_info page mapping
Date: Fri, 14 Sep 2012 09:08:07 -0400 [thread overview]
Message-ID: <20120914130807.GK25249@phenom.dumpdata.com> (raw)
In-Reply-To: <1347621207-11294-7-git-send-email-stefano.stabellini@eu.citrix.com>
On Fri, Sep 14, 2012 at 12:13:09PM +0100, Stefano Stabellini wrote:
> Check for a node in the device tree compatible with "xen,xen", if it is
> present set xen_domain_type to XEN_HVM_DOMAIN and continue
> initialization.
>
> Map the real shared info page using XENMEM_add_to_physmap with
> XENMAPSPACE_shared_info.
>
> Changes in v4:
>
> - simpler parsing of Xen version in the compatible DT node.
>
> Changes in v3:
>
> - use the "xen,xen" notation rather than "arm,xen";
> - add an additional check on the presence of the Xen version.
>
> Changes in v2:
>
> - replace pr_info with pr_debug.
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> ---
> arch/arm/xen/enlighten.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 61 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
> index c535540..6a0217d 100644
> --- a/arch/arm/xen/enlighten.c
> +++ b/arch/arm/xen/enlighten.c
> @@ -5,6 +5,9 @@
> #include <asm/xen/hypervisor.h>
> #include <asm/xen/hypercall.h>
> #include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/of_irq.h>
> +#include <linux/of_address.h>
>
> struct start_info _xen_start_info;
> struct start_info *xen_start_info = &_xen_start_info;
> @@ -33,3 +36,61 @@ int xen_remap_domain_mfn_range(struct vm_area_struct *vma,
> return -ENOSYS;
> }
> EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_range);
> +
> +/*
> + * see Documentation/devicetree/bindings/arm/xen.txt for the
> + * documentation of the Xen Device Tree format.
> + */
> +static int __init xen_guest_init(void)
> +{
> + struct xen_add_to_physmap xatp;
> + static struct shared_info *shared_info_page = 0;
> + struct device_node *node;
> + int len;
> + const char *s = NULL;
> + const char *version = NULL;
> + const char *xen_prefix = "xen,xen-";
> +
> + node = of_find_compatible_node(NULL, NULL, "xen,xen");
> + if (!node) {
> + pr_debug("No Xen support\n");
> + return 0;
> + }
> + s = of_get_property(node, "compatible", &len);
> + if (strlen(xen_prefix) + 3 < len &&
> + !strncmp(xen_prefix, s, strlen(xen_prefix)))
If we have version '4.3.1' won't this trip us over?
Or if we only have 'major' and 'minor', then won't '4.11' trip us
over too?
> + version = s + strlen(xen_prefix);
> + if (version == NULL) {
> + pr_debug("Xen version not found\n");
> + return 0;
> + }
> + xen_domain_type = XEN_HVM_DOMAIN;
> +
> + if (!shared_info_page)
> + shared_info_page = (struct shared_info *)
> + get_zeroed_page(GFP_KERNEL);
> + if (!shared_info_page) {
> + pr_err("not enough memory\n");
> + return -ENOMEM;
> + }
> + xatp.domid = DOMID_SELF;
> + xatp.idx = 0;
> + xatp.space = XENMAPSPACE_shared_info;
> + xatp.gpfn = __pa(shared_info_page) >> PAGE_SHIFT;
> + if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp))
> + BUG();
> +
> + HYPERVISOR_shared_info = (struct shared_info *)shared_info_page;
> +
> + /* xen_vcpu is a pointer to the vcpu_info struct in the shared_info
> + * page, we use it in the event channel upcall and in some pvclock
> + * related functions. We don't need the vcpu_info placement
> + * optimizations because we don't use any pv_mmu or pv_irq op on
> + * HVM.
> + * The shared info contains exactly 1 CPU (the boot CPU). The guest
> + * is required to use VCPUOP_register_vcpu_info to place vcpu info
> + * for secondary CPUs as they are brought up. */
> + per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0];
> + return 0;
> +}
> +core_initcall(xen_guest_init);
> --
> 1.7.2.5
next prev parent reply other threads:[~2012-09-14 13:08 UTC|newest]
Thread overview: 148+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-14 11:12 [PATCH v4 00/24] Introduce Xen support on ARM (based on 3.6-rc5) Stefano Stabellini
2012-09-14 11:12 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 01/24] arm: initial Xen support Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 02/24] xen/arm: hypercalls Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 12:57 ` Konrad Rzeszutek Wilk
2012-09-14 12:57 ` Konrad Rzeszutek Wilk
2012-09-14 13:45 ` Marc Zyngier
2012-09-14 13:45 ` Marc Zyngier
2012-09-14 14:02 ` Stefano Stabellini
2012-09-14 14:02 ` Stefano Stabellini
2012-09-14 14:05 ` Marc Zyngier
2012-09-14 14:05 ` Marc Zyngier
2012-09-14 11:13 ` [PATCH v4 03/24] xen/arm: page.h definitions Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 04/24] xen/arm: sync_bitops Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 05/24] xen/arm: empty implementation of grant_table arch specific functions Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 06/24] docs: Xen ARM DT bindings Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:01 ` Konrad Rzeszutek Wilk
2012-09-14 13:01 ` Konrad Rzeszutek Wilk
2012-09-14 13:01 ` Konrad Rzeszutek Wilk
2012-09-14 14:26 ` Stefano Stabellini
2012-09-14 14:26 ` Stefano Stabellini
2012-09-14 14:26 ` Stefano Stabellini
2012-09-17 13:33 ` Rob Herring
2012-09-17 13:33 ` Rob Herring
2012-09-17 14:12 ` Stefano Stabellini
2012-09-17 14:12 ` Stefano Stabellini
2012-09-17 14:12 ` Stefano Stabellini
2012-09-18 14:50 ` Dave Martin
2012-09-18 14:50 ` Dave Martin
2012-09-14 11:13 ` [PATCH v4 07/24] xen/arm: Xen detection and shared_info page mapping Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:08 ` Konrad Rzeszutek Wilk [this message]
2012-09-14 13:08 ` Konrad Rzeszutek Wilk
2012-09-14 14:44 ` Stefano Stabellini
2012-09-14 14:44 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 08/24] xen/arm: Introduce xen_pfn_t for pfn and mfn types Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 09/24] xen/arm: Introduce xen_ulong_t for unsigned long Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:04 ` Konrad Rzeszutek Wilk
2012-09-14 13:04 ` Konrad Rzeszutek Wilk
2012-09-14 11:13 ` [PATCH v4 10/24] xen/arm: compile and run xenbus Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:03 ` Konrad Rzeszutek Wilk
2012-09-14 13:03 ` Konrad Rzeszutek Wilk
2012-09-17 11:05 ` Stefano Stabellini
2012-09-17 11:05 ` Stefano Stabellini
2012-09-17 13:56 ` Konrad Rzeszutek Wilk
2012-09-17 13:56 ` Konrad Rzeszutek Wilk
2012-09-17 13:29 ` Konrad Rzeszutek Wilk
2012-09-17 13:29 ` Konrad Rzeszutek Wilk
2012-09-17 13:45 ` Stefano Stabellini
2012-09-17 13:45 ` Stefano Stabellini
2012-09-17 14:06 ` Konrad Rzeszutek Wilk
2012-09-17 14:06 ` Konrad Rzeszutek Wilk
2012-09-14 11:13 ` [PATCH v4 11/24] xen: do not compile manage, balloon, pci, acpi, pcpu and cpu_hotplug on ARM Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 12/24] xen/arm: introduce CONFIG_XEN " Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 18:18 ` Sergei Shtylyov
2012-09-14 18:18 ` Sergei Shtylyov
2012-09-17 10:57 ` Stefano Stabellini
2012-09-17 10:57 ` Stefano Stabellini
2012-09-17 12:07 ` Sergei Shtylyov
2012-09-17 12:07 ` Sergei Shtylyov
2012-09-17 14:02 ` Konrad Rzeszutek Wilk
2012-09-17 14:02 ` Konrad Rzeszutek Wilk
2012-09-17 14:16 ` Stefano Stabellini
2012-09-17 14:16 ` Stefano Stabellini
2012-09-17 14:05 ` Stefano Stabellini
2012-09-17 14:05 ` Stefano Stabellini
2012-09-17 14:30 ` Stefano Stabellini
2012-09-17 14:30 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 13/24] xen/arm: get privilege status Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 14/24] xen/arm: initialize grant_table on ARM Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:10 ` Konrad Rzeszutek Wilk
2012-09-14 13:10 ` Konrad Rzeszutek Wilk
2012-09-14 14:56 ` Stefano Stabellini
2012-09-14 14:56 ` Stefano Stabellini
2012-09-14 15:08 ` Ian Campbell
2012-09-14 15:08 ` Ian Campbell
2012-09-14 15:29 ` Stefano Stabellini
2012-09-14 15:29 ` Stefano Stabellini
2012-09-14 15:34 ` Ian Campbell
2012-09-14 15:34 ` Ian Campbell
2012-09-14 11:13 ` [PATCH v4 15/24] xen/arm: receive Xen events " Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:14 ` Konrad Rzeszutek Wilk
2012-09-14 13:14 ` Konrad Rzeszutek Wilk
2012-09-14 11:13 ` [PATCH v4 16/24] xen: clear IRQ_NOAUTOEN and IRQ_NOREQUEST Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 14:02 ` Marc Zyngier
2012-09-14 14:02 ` Marc Zyngier
2012-09-14 14:13 ` Stefano Stabellini
2012-09-14 14:13 ` Stefano Stabellini
2012-09-14 14:20 ` Marc Zyngier
2012-09-14 14:20 ` Marc Zyngier
2012-09-14 14:28 ` Stefano Stabellini
2012-09-14 14:28 ` Stefano Stabellini
2012-09-14 14:31 ` Marc Zyngier
2012-09-14 14:31 ` Marc Zyngier
2012-09-14 11:13 ` [PATCH v4 17/24] xen/arm: implement alloc/free_xenballooned_pages with alloc_pages/kfree Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 18/24] xen: allow privcmd for HVM guests Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 19/24] xen/arm: compile blkfront and blkback Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:12 ` Konrad Rzeszutek Wilk
2012-09-14 13:12 ` Konrad Rzeszutek Wilk
2012-09-14 11:13 ` [PATCH v4 20/24] xen/arm: compile netback Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 21/24] arm/v2m: initialize arch_timers even if v2m_timer is not present Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 12:27 ` Pawel Moll
2012-09-14 12:27 ` Pawel Moll
2012-09-14 12:48 ` Stefano Stabellini
2012-09-14 12:48 ` Stefano Stabellini
2012-09-14 13:03 ` Pawel Moll
2012-09-14 13:03 ` Pawel Moll
2013-01-07 17:21 ` Stefano Stabellini
2013-01-07 17:21 ` Stefano Stabellini
2013-01-07 17:32 ` Marc Zyngier
2013-01-07 17:32 ` Marc Zyngier
2013-01-07 19:21 ` Stefano Stabellini
2013-01-07 19:21 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 22/24] xen: missing includes Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 11:13 ` [PATCH v4 23/24] xen: update xen_add_to_physmap interface Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:13 ` Konrad Rzeszutek Wilk
2012-09-14 13:13 ` Konrad Rzeszutek Wilk
2012-09-14 11:13 ` [PATCH v4 24/24] MAINTAINERS: add myself as Xen ARM maintainer Stefano Stabellini
2012-09-14 11:13 ` Stefano Stabellini
2012-09-14 13:09 ` Konrad Rzeszutek Wilk
2012-09-14 13:09 ` Konrad Rzeszutek Wilk
2012-09-14 13:21 ` [PATCH v4 00/24] Introduce Xen support on ARM (based on 3.6-rc5) Konrad Rzeszutek Wilk
2012-09-14 13:21 ` Konrad Rzeszutek Wilk
2012-09-14 13:56 ` Stefano Stabellini
2012-09-14 13:56 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120914130807.GK25249@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.