|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 8/8] xen/common: dom0less: introduce common dom0less-build.c
Hi Oleksii,
FYI I know you might not be able to disable HTML in your email client
replies, but just as a heads up, my email client doesn't support HTML at
all so my replies will have your text and my older text mixed up.
On Mon, 5 May 2025, Oleksii Kurochko wrote:
> On 5/2/25 10:53 PM, Stefano Stabellini wrote:
>
> On Fri, 2 May 2025, Oleksii Kurochko wrote:
>
> Part of Arm's dom0less-build.c could be common between architectures which are
> using device tree files to create guest domains. Thereby move some parts of
> Arm's dom0less-build.c to common code with minor changes.
>
> As a part of theses changes the following changes are introduced:
> - Introduce make_arch_nodes() to cover arch-specific nodes. For example, in
> case of Arm, it is PSCI and vpl011 nodes.
> - Introduce set_domain_type() to abstract a way how setting of domain type
> happens. For example, RISC-V won't have this member of arch_domain structure
> as vCPUs will always have the same bitness as hypervisor. In case of Arm, it
> is possible that Arm64 could create 32-bit and 64-bit domains.
> - Introduce init_vuart() to cover details of virtual uart initialization.
> - Introduce init_intc_phandle() to cover some details of interrupt controller
> phandle initialization. As an example, RISC-V could have different name for
> interrupt controller node ( APLIC, PLIC, IMSIC, etc ) but the code in
> domain_handle_dtb_bootmodule() could handle only one interrupt controller
> node name.
> - s/make_gic_domU_node/make_intc_domU_node as GIC is Arm specific naming and
> add prototype of make_intc_domU_node() to dom0less-build.h
>
> The following functions are moved to xen/common/device-tree:
> - Functions which are moved as is:
> - domain_p2m_pages().
> - handle_passthrough_prop().
> - handle_prop_pfdt().
> - scan_pfdt_node().
> - check_partial_fdt().
> - Functions which are moved with some minor changes:
> - alloc_xenstore_evtchn():
> - ifdef-ing by CONFIG_HVM accesses to hvm.params.
> - prepare_dtb_domU():
> - ifdef-ing access to gnttab_{start,size} by CONFIG_GRANT_TABLE.
> - s/make_gic_domU_node/make_intc_domU_node.
> - Add call of make_arch_nodes().
> - domain_handle_dtb_bootmodule():
> - hide details of interrupt controller phandle initialization by calling
> init_intc_phandle().
> - Update the comment above init_intc_phandle(): s/gic/interrupt controller.
> - construct_domU():
> - ifdef-ing by CONFIG_HVM accesses to hvm.params.
> - Call init_vuart() to hide Arm's vpl011_init() details there.
> - Add call of set_domain_type() instead of setting kinfo->arch.type
> explicitly.
>
> Some parts of dom0less-build.c are wraped by #ifdef
> CONFIG_STATIC_{SHMEM,MEMORY}
> as not all archs support these configs.
>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
[...]
> + ret = make_memory_node(kinfo, addrcells, sizecells,
> + kernel_info_get_mem(kinfo));
> + if ( ret )
> + goto err;
> +
> +#ifdef CONFIG_STATIC_SHM
>
> This should not be necessary because there is a stub implementation of
> make_resv_memory_node available in static-shmem.h for the
> !CONFIG_STATIC_SHM case.
>
> But static-shmem.h isn't available on all architectures. Until static-shmem.h
> isn't moved to
> asm-generic or xen folders and then re-used by an architecture we have to
> have #ifdef.
OK let's keep it as is so that we don't need to move static-shmem.h
> + ret = make_resv_memory_node(kinfo, addrcells, sizecells);
> + if ( ret )
> + goto err;
> +#endif
[...]
> + if ( !dt_find_property(node, "xen,static-mem", NULL) )
> + allocate_memory(d, &kinfo);
> +#ifdef CONFIG_STATIC_MEMORY
>
> Also this should not be needed thanks to the stub implementation of
> allocate_static_memory and assign_static_memory_11
>
>
> + else if ( !is_domain_direct_mapped(d) )
> + allocate_static_memory(d, &kinfo, node);
> + else
> + assign_static_memory_11(d, &kinfo, node);
> +#endif
> +
> +#ifdef CONFIG_STATIC_SHM
>
> There is a stub for process_shm too
>
> The same as with make_resv_memory_node(), static-shmem.h header isn't
> available for
> all archs.
> I can return my patches which move static-shmem.h to asm-generic and then
> drop all the ifdef-s connect to it:
> https://lore.kernel.org/xen-devel/0203b98aa6a42aa69e22e7c973320add3ff4bb5d.1736334615.git.oleksii.kurochko@xxxxxxxxx/
> https://lore.kernel.org/xen-devel/0203b98aa6a42aa69e22e7c973320add3ff4bb5d.1736334615.git.oleksii.kurochko@xxxxxxxxx/
>
> Let me know if it is better to do now or should it be better to drop
> #ifdef-ing when an architrecture will require
> static-shmem or static-mem features?
I see Jan's point that they are advanced features probably not needed
initially. So maybe it is better to start with something simpler. I
think it is OK to keep the patch as is.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |