From: Julien Grall <julien.grall@arm.com>
To: Stefano Stabellini <sstabellini@kernel.org>,
xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <stefanos@xilinx.com>
Subject: Re: [Xen-devel] [PATCH v2 09/10] xen/arm: map reserved-memory regions as normal memory in dom0
Date: Tue, 7 May 2019 20:52:04 +0100 [thread overview]
Message-ID: <bee6a38c-d6bb-46b8-8617-f1f98e73f57f@arm.com> (raw)
Message-ID: <20190507195204.kbQ7US7rv8Hw3GxmVoUuvNWXcJjTdGMDvJUAwjHoMVI@z> (raw)
In-Reply-To: <1556658172-8824-9-git-send-email-sstabellini@kernel.org>
Hi,
On 4/30/19 10:02 PM, Stefano Stabellini wrote:
> reserved-memory regions should be mapped as normal memory. At the
> moment, they get remapped as device memory in dom0 because Xen doesn't
> know any better. Add an explicit check for it.
This part matches the title of the patch but...
>
> reserved-memory regions overlap with memory nodes. The overlapping
> memory is reserved-memory and should be handled accordingly:
> consider_modules and dt_unreserved_regions should skip these regions the
> same way they are already skipping mem-reserve regions.
... this doesn't. They are actually two different things and should be
handled in separate patches.
>
> Signed-off-by: Stefano Stabellini <stefanos@xilinx.com>
> ---
> Changes in v2:
> - fix commit message: full overlap
> - remove check_reserved_memory
> - extend consider_modules and dt_unreserved_regions
> ---
> xen/arch/arm/domain_build.c | 7 +++++++
> xen/arch/arm/setup.c | 36 +++++++++++++++++++++++++++++++++---
> 2 files changed, 40 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 5e7f94c..e5d488d 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1408,6 +1408,13 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
> "WARNING: Path %s is reserved, skip the node as we may re-use the path.\n",
> path);
>
> + /*
> + * reserved-memory ranges should be mapped as normal memory in the
> + * p2m.
> + */
> + if ( !strcmp(dt_node_name(node), "reserved-memory") )
> + p2mt = p2m_mmio_direct_c;
Do we really need this? The default type is already p2m_mmio_direct_c
(see default_p2mt).
> +
> res = handle_device(d, node, p2mt);
> if ( res)
> return res;
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index ccb0f18..908b52c 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -204,6 +204,19 @@ void __init dt_unreserved_regions(paddr_t s, paddr_t e,
> }
> }
>
> + for ( ; i - nr < bootinfo.reserved_mem.nr_banks; i++ )
It took me a bit of time to understand why you do i - nr. I think we
need some comments explaining the new logic.
Longer term (i.e I will not push for it today :)), I think this code
would benefits of using e820-like. It would make the code clearer and
probably more efficient than what we currently have.
> + {
> + paddr_t r_s = bootinfo.reserved_mem.bank[i - nr].start;
> + paddr_t r_e = r_s + bootinfo.reserved_mem.bank[i - nr].size;
> +
> + if ( s < r_e && r_s < e )
> + {
> + dt_unreserved_regions(r_e, e, cb, i+1);
> + dt_unreserved_regions(s, r_s, cb, i+1);
> + return;
> + }
> + }
> +
> cb(s, e);
> }
>
> @@ -390,7 +403,7 @@ static paddr_t __init consider_modules(paddr_t s, paddr_t e,
> {
> const struct bootmodules *mi = &bootinfo.modules;
> int i;
> - int nr_rsvd;
> + int nr;
>
> s = (s+align-1) & ~(align-1);
> e = e & ~(align-1);
> @@ -416,9 +429,9 @@ static paddr_t __init consider_modules(paddr_t s, paddr_t e,
>
> /* Now check any fdt reserved areas. */
>
> - nr_rsvd = fdt_num_mem_rsv(device_tree_flattened);
> + nr = fdt_num_mem_rsv(device_tree_flattened);
>
> - for ( ; i < mi->nr_mods + nr_rsvd; i++ )
> + for ( ; i < mi->nr_mods + nr; i++ )
> {
> paddr_t mod_s, mod_e;
>
> @@ -440,6 +453,23 @@ static paddr_t __init consider_modules(paddr_t s, paddr_t e,
> return consider_modules(s, mod_s, size, align, i+1);
> }
> }
> +
> + /* Now check for reserved-memory regions */
> + nr += mi->nr_mods;
Similar to the previous function, this needs to be documented.
> + for ( ; i - nr < bootinfo.reserved_mem.nr_banks; i++ )
> + {
> + paddr_t r_s = bootinfo.reserved_mem.bank[i - nr].start;
> + paddr_t r_e = r_s + bootinfo.reserved_mem.bank[i - nr].size;
> +
> + if ( s < r_e && r_s < e )
> + {
> + r_e = consider_modules(r_e, e, size, align, i+1);
Coding style: space before and after the operator. Ideally, the rest of
the function should be fixed.
> + if ( r_e )
> + return r_e;
> +
> + return consider_modules(s, r_s, size, align, i+1);
Same here.
> + }
> + }
> return e;
> }
> #endif
>
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2019-05-07 19:52 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-30 21:02 [PATCH v2 0/10] iomem memory policy Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-04-30 21:02 ` [PATCH v2 01/10] xen: add a p2mt parameter to map_mmio_regions Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-02 14:59 ` Jan Beulich
2019-05-02 14:59 ` [Xen-devel] " Jan Beulich
2019-05-02 18:49 ` Stefano Stabellini
2019-05-02 18:49 ` [Xen-devel] " Stefano Stabellini
2019-05-15 13:39 ` Oleksandr
2019-05-15 13:39 ` [Xen-devel] " Oleksandr
2019-04-30 21:02 ` [PATCH v2 02/10] xen: rename un/map_mmio_regions to un/map_regions Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-01 9:22 ` Julien Grall
2019-05-01 9:22 ` [Xen-devel] " Julien Grall
2019-06-17 21:24 ` Stefano Stabellini
2019-06-18 11:05 ` Julien Grall
2019-06-18 20:19 ` Stefano Stabellini
2019-05-02 15:03 ` Jan Beulich
2019-05-02 15:03 ` [Xen-devel] " Jan Beulich
2019-05-02 18:55 ` Stefano Stabellini
2019-05-02 18:55 ` [Xen-devel] " Stefano Stabellini
2019-04-30 21:02 ` [PATCH v2 03/10] xen: extend XEN_DOMCTL_memory_mapping to handle memory policy Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-02 15:12 ` Jan Beulich
2019-05-02 15:12 ` [Xen-devel] " Jan Beulich
2019-06-17 21:28 ` Stefano Stabellini
2019-06-18 8:59 ` Jan Beulich
2019-06-18 20:32 ` Stefano Stabellini
2019-06-18 23:15 ` Stefano Stabellini
2019-06-19 6:53 ` Jan Beulich
2019-05-07 16:41 ` Julien Grall
2019-05-07 16:41 ` [Xen-devel] " Julien Grall
2019-06-17 22:43 ` Stefano Stabellini
2019-06-18 11:13 ` Julien Grall
2019-05-15 14:40 ` Oleksandr
2019-05-15 14:40 ` [Xen-devel] " Oleksandr
2019-04-30 21:02 ` [PATCH v2 04/10] libxc: introduce xc_domain_mem_map_policy Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-04-30 21:02 ` [PATCH v2 05/10] libxl/xl: add memory policy option to iomem Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-01 9:42 ` Julien Grall
2019-05-01 9:42 ` [Xen-devel] " Julien Grall
2019-06-17 22:32 ` Stefano Stabellini
2019-06-18 11:09 ` Julien Grall
2019-06-18 11:15 ` Julien Grall
2019-06-18 22:07 ` Stefano Stabellini
2019-06-18 22:20 ` Julien Grall
2019-06-18 22:46 ` Stefano Stabellini
2019-04-30 21:02 ` [PATCH v2 06/10] xen/arm: extend device_tree_for_each_node Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-07 17:12 ` Julien Grall
2019-05-07 17:12 ` [Xen-devel] " Julien Grall
2019-04-30 21:02 ` [PATCH v2 07/10] xen/arm: make process_memory_node a device_tree_node_func Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-01 9:47 ` Julien Grall
2019-05-01 9:47 ` [Xen-devel] " Julien Grall
2019-04-30 21:02 ` [PATCH v2 08/10] xen/arm: keep track of reserved-memory regions Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-01 10:03 ` Julien Grall
2019-05-01 10:03 ` [Xen-devel] " Julien Grall
2019-06-21 23:47 ` Stefano Stabellini
2019-05-07 17:21 ` Julien Grall
2019-05-07 17:21 ` [Xen-devel] " Julien Grall
2019-04-30 21:02 ` [PATCH v2 09/10] xen/arm: map reserved-memory regions as normal memory in dom0 Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-07 19:52 ` Julien Grall [this message]
2019-05-07 19:52 ` Julien Grall
2019-04-30 21:02 ` [PATCH v2 10/10] xen/arm: add reserved-memory regions to the dom0 memory node Stefano Stabellini
2019-04-30 21:02 ` [Xen-devel] " Stefano Stabellini
2019-05-07 20:15 ` Julien Grall
2019-05-07 20:15 ` [Xen-devel] " Julien Grall
2019-05-10 20:51 ` Stefano Stabellini
2019-05-10 20:51 ` [Xen-devel] " Stefano Stabellini
2019-05-10 21:43 ` Julien Grall
2019-05-10 21:43 ` [Xen-devel] " Julien Grall
2019-05-11 12:40 ` Julien Grall
2019-05-11 12:40 ` [Xen-devel] " Julien Grall
2019-05-20 21:26 ` Stefano Stabellini
2019-05-20 21:26 ` [Xen-devel] " Stefano Stabellini
2019-05-20 22:38 ` Julien Grall
2019-05-20 22:38 ` [Xen-devel] " Julien Grall
2019-06-05 16:30 ` Julien Grall
2019-06-21 23:47 ` Stefano Stabellini
2019-05-16 16:52 ` [PATCH v2 0/10] iomem memory policy Oleksandr
2019-05-16 16:52 ` [Xen-devel] " Oleksandr
2019-06-21 23:48 ` 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=bee6a38c-d6bb-46b8-8617-f1f98e73f57f@arm.com \
--to=julien.grall@arm.com \
--cc=sstabellini@kernel.org \
--cc=stefanos@xilinx.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 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).