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: [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) 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
WARNING: multiple messages have this Message-ID (diff)
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: linkBe 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).