From: Julien Grall <julien@xen.org>
To: Luca Fancellu <luca.fancellu@arm.com>, xen-devel@lists.xenproject.org
Cc: bertrand.marquis@arm.com, wei.chen@arm.com,
Stefano Stabellini <sstabellini@kernel.org>,
Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH v2 1/4] xen/arm: Move dom0 creation in domain_build.c
Date: Fri, 9 Apr 2021 09:30:00 +0100 [thread overview]
Message-ID: <f6bca491-afdb-df20-c50e-af1c294db91b@xen.org> (raw)
In-Reply-To: <20210408094818.8173-2-luca.fancellu@arm.com>
Hi Luca,
On 08/04/2021 10:48, Luca Fancellu wrote:
> Move dom0 creation and start from setup.c to domain_build.c
> on a dedicate function.
>
> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
> ---
> xen/arch/arm/domain_build.c | 36 ++++++++++++++++++++++++++++++++++++
> xen/arch/arm/setup.c | 29 +----------------------------
> xen/include/asm-arm/setup.h | 1 +
> 3 files changed, 38 insertions(+), 28 deletions(-)
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 374bf655ee..d7c9c7f4d1 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -21,6 +21,7 @@
> #include <asm/device.h>
> #include <asm/kernel.h>
> #include <asm/setup.h>
> +#include <asm/tee/tee.h>
> #include <asm/platform.h>
> #include <asm/psci.h>
> #include <asm/setup.h>
> @@ -2520,6 +2521,41 @@ void __init create_domUs(void)
> }
> }
>
> +struct domain* __init create_dom0(void)
> +{
> + struct domain *dom0;
> + struct xen_domctl_createdomain dom0_cfg = {
> + .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
> + .max_evtchn_port = -1,
> + .max_grant_frames = gnttab_dom0_frames(),
> + .max_maptrack_frames = -1,
> + };
> +
> + /* The vGIC for DOM0 is exactly emulating the hardware GIC */
> + dom0_cfg.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
> + /*
> + * Xen vGIC supports a maximum of 992 interrupt lines.
> + * 32 are substracted to cover local IRQs.
> + */
> + dom0_cfg.arch.nr_spis = min(gic_number_lines(), (unsigned int) 992) - 32;
> + if ( gic_number_lines() > 992 )
> + printk(XENLOG_WARNING "Maximum number of vGIC IRQs exceeded.\n");
> + dom0_cfg.arch.tee_type = tee_get_type();
> + dom0_cfg.max_vcpus = dom0_max_vcpus();
> +
> + if ( iommu_enabled )
> + dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
> +
> + dom0 = domain_create(0, &dom0_cfg, true);
> + if ( IS_ERR(dom0) || (alloc_dom0_vcpu0(dom0) == NULL) )
> + panic("Error creating domain 0\n");
> +
> + if ( construct_dom0(dom0) != 0)
> + panic("Could not set up DOM0 guest OS\n");
> +
> + return dom0;
> +}
> +
I would move the function after...
> int __init construct_dom0(struct domain *d)
... this function so we can mark construct_dom0() static as
create_dom0() is the only caller.
> {
> struct kernel_info kinfo = {};
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 2532ec9739..b405f58996 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -51,7 +51,6 @@
> #include <asm/platform.h>
> #include <asm/procinfo.h>
> #include <asm/setup.h>
> -#include <asm/tee/tee.h>
> #include <xsm/xsm.h>
> #include <asm/acpi.h>
>
> @@ -805,12 +804,6 @@ void __init start_xen(unsigned long boot_phys_offset,
> const char *cmdline;
> struct bootmodule *xen_bootmodule;
> struct domain *dom0;
> - struct xen_domctl_createdomain dom0_cfg = {
> - .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
> - .max_evtchn_port = -1,
> - .max_grant_frames = gnttab_dom0_frames(),
> - .max_maptrack_frames = -1,
> - };
> int rc;
>
> dcache_line_bytes = read_dcache_line_bytes();
> @@ -965,27 +958,7 @@ void __init start_xen(unsigned long boot_phys_offset,
> enable_errata_workarounds();
>
> /* Create initial domain 0. */
> - /* The vGIC for DOM0 is exactly emulating the hardware GIC */
> - dom0_cfg.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
> - /*
> - * Xen vGIC supports a maximum of 992 interrupt lines.
> - * 32 are substracted to cover local IRQs.
> - */
> - dom0_cfg.arch.nr_spis = min(gic_number_lines(), (unsigned int) 992) - 32;
> - if ( gic_number_lines() > 992 )
> - printk(XENLOG_WARNING "Maximum number of vGIC IRQs exceeded.\n");
> - dom0_cfg.arch.tee_type = tee_get_type();
> - dom0_cfg.max_vcpus = dom0_max_vcpus();
> -
> - if ( iommu_enabled )
> - dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
> -
> - dom0 = domain_create(0, &dom0_cfg, true);
> - if ( IS_ERR(dom0) || (alloc_dom0_vcpu0(dom0) == NULL) )
> - panic("Error creating domain 0\n");
> -
> - if ( construct_dom0(dom0) != 0)
> - panic("Could not set up DOM0 guest OS\n");
> + dom0 = create_dom0();
>
> heap_init_late();
>
> diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h
> index 28bf622aa1..e5f5c7ebc6 100644
> --- a/xen/include/asm-arm/setup.h
> +++ b/xen/include/asm-arm/setup.h
> @@ -95,6 +95,7 @@ int acpi_make_efi_nodes(void *fdt, struct membank tbl_add[]);
>
> int construct_dom0(struct domain *d);
> void create_domUs(void);
> +struct domain* create_dom0(void);
>
> void discard_initial_modules(void);
> void fw_unreserved_regions(paddr_t s, paddr_t e,
>
Cheers,
--
Julien Grall
next prev parent reply other threads:[~2021-04-09 8:30 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-08 9:48 [PATCH v2 0/4] xen/arm: Prevent Dom0 to be loaded when using dom0less Luca Fancellu
2021-04-08 9:48 ` [PATCH v2 1/4] xen/arm: Move dom0 creation in domain_build.c Luca Fancellu
2021-04-09 8:30 ` Julien Grall [this message]
2021-04-09 9:51 ` Luca Fancellu
2021-04-08 9:48 ` [PATCH v2 2/4] xen/arm: Handle cases when hardware_domain is NULL Luca Fancellu
2021-04-08 10:17 ` Jan Beulich
2021-04-08 13:11 ` Luca Fancellu
2021-04-08 14:36 ` Jan Beulich
2021-04-08 14:58 ` Luca Fancellu
2021-04-08 9:48 ` [PATCH v2 3/4] xen/arm: Reserve domid 0 for Dom0 Luca Fancellu
2021-04-08 10:46 ` Jan Beulich
2021-04-08 13:12 ` Luca Fancellu
2021-04-08 9:48 ` [PATCH v2 4/4] xen/arm: Prevent Dom0 to be loaded when using dom0less Luca Fancellu
2021-04-09 9:12 ` Julien Grall
2021-04-09 9:56 ` Luca Fancellu
2021-04-09 10:04 ` Julien Grall
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=f6bca491-afdb-df20-c50e-af1c294db91b@xen.org \
--to=julien@xen.org \
--cc=Volodymyr_Babchuk@epam.com \
--cc=bertrand.marquis@arm.com \
--cc=luca.fancellu@arm.com \
--cc=sstabellini@kernel.org \
--cc=wei.chen@arm.com \
--cc=xen-devel@lists.xenproject.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.