When !MEM_SHARING no useful output is produced. Move the function into
mm/mem_sharing.c while conditionalizing the call to it, thus allowing to
drop it altogether from Arm (and eliminating the need to introduce stubs
on PPC and RISC-V).
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
I wasn't really sure whether introducing a stub in xen/mm.h would be any
better than adding the (further) #ifdef to dump_domains().
We could go further and also eliminate the need for the stub variants
of mem_sharing_get_nr_{shared,saved}_mfns() by moving the
XENMEM_get_sharing_{shared,freed}_pages cases in
{,compat_}arch_memory_op() into the already existing #ifdef-s there.
Returning an error for those sub-ops may be slightly more appropriate
than returning 0 when !MEM_SHARING.
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -1297,10 +1297,6 @@ void free_init_memory(void)
printk("Freed %ldkB init memory.\n", (long)(__init_end-__init_begin)>>10);
}
-void arch_dump_shared_mem_info(void)
-{
-}
-
int steal_page(
struct domain *d, struct page_info *page, unsigned int memflags)
{
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -6265,13 +6265,6 @@ void memguard_unguard_stack(void *p)
map_pages_to_xen((unsigned long)p, virt_to_mfn(p), 1, PAGE_HYPERVISOR_RW);
}
-void arch_dump_shared_mem_info(void)
-{
- printk("Shared frames %u -- Saved frames %u\n",
- mem_sharing_get_nr_shared_mfns(),
- mem_sharing_get_nr_saved_mfns());
-}
-
const struct platform_bad_page *__init get_platform_badpages(unsigned int *array_size)
{
u32 igd_id;
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -2329,3 +2329,10 @@ int mem_sharing_domctl(struct domain *d,
return rc;
}
+
+void arch_dump_shared_mem_info(void)
+{
+ printk("Shared frames %u -- Saved frames %u\n",
+ mem_sharing_get_nr_shared_mfns(),
+ mem_sharing_get_nr_saved_mfns());
+}
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -365,7 +365,9 @@ static void cf_check dump_domains(unsign
}
}
+#ifdef CONFIG_MEM_SHARING
arch_dump_shared_mem_info();
+#endif
rcu_read_unlock(&domlist_read_lock);
}
On 08.08.2023 14:02, Jan Beulich wrote:
> When !MEM_SHARING no useful output is produced. Move the function into
> mm/mem_sharing.c while conditionalizing the call to it, thus allowing to
> drop it altogether from Arm (and eliminating the need to introduce stubs
> on PPC and RISC-V).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
Tamas - any chance of an ack?
Thanks, Jan
> ---
> I wasn't really sure whether introducing a stub in xen/mm.h would be any
> better than adding the (further) #ifdef to dump_domains().
>
> We could go further and also eliminate the need for the stub variants
> of mem_sharing_get_nr_{shared,saved}_mfns() by moving the
> XENMEM_get_sharing_{shared,freed}_pages cases in
> {,compat_}arch_memory_op() into the already existing #ifdef-s there.
> Returning an error for those sub-ops may be slightly more appropriate
> than returning 0 when !MEM_SHARING.
>
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -1297,10 +1297,6 @@ void free_init_memory(void)
> printk("Freed %ldkB init memory.\n", (long)(__init_end-__init_begin)>>10);
> }
>
> -void arch_dump_shared_mem_info(void)
> -{
> -}
> -
> int steal_page(
> struct domain *d, struct page_info *page, unsigned int memflags)
> {
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -6265,13 +6265,6 @@ void memguard_unguard_stack(void *p)
> map_pages_to_xen((unsigned long)p, virt_to_mfn(p), 1, PAGE_HYPERVISOR_RW);
> }
>
> -void arch_dump_shared_mem_info(void)
> -{
> - printk("Shared frames %u -- Saved frames %u\n",
> - mem_sharing_get_nr_shared_mfns(),
> - mem_sharing_get_nr_saved_mfns());
> -}
> -
> const struct platform_bad_page *__init get_platform_badpages(unsigned int *array_size)
> {
> u32 igd_id;
> --- a/xen/arch/x86/mm/mem_sharing.c
> +++ b/xen/arch/x86/mm/mem_sharing.c
> @@ -2329,3 +2329,10 @@ int mem_sharing_domctl(struct domain *d,
>
> return rc;
> }
> +
> +void arch_dump_shared_mem_info(void)
> +{
> + printk("Shared frames %u -- Saved frames %u\n",
> + mem_sharing_get_nr_shared_mfns(),
> + mem_sharing_get_nr_saved_mfns());
> +}
> --- a/xen/common/keyhandler.c
> +++ b/xen/common/keyhandler.c
> @@ -365,7 +365,9 @@ static void cf_check dump_domains(unsign
> }
> }
>
> +#ifdef CONFIG_MEM_SHARING
> arch_dump_shared_mem_info();
> +#endif
>
> rcu_read_unlock(&domlist_read_lock);
> }
>
> On 8 Aug 2023, at 13:02, Jan Beulich <jbeulich@suse.com> wrote:
>
> When !MEM_SHARING no useful output is produced. Move the function into
> mm/mem_sharing.c while conditionalizing the call to it, thus allowing to
> drop it altogether from Arm (and eliminating the need to introduce stubs
> on PPC and RISC-V).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> I wasn't really sure whether introducing a stub in xen/mm.h would be any
> better than adding the (further) #ifdef to dump_domains().
>
> We could go further and also eliminate the need for the stub variants
> of mem_sharing_get_nr_{shared,saved}_mfns() by moving the
> XENMEM_get_sharing_{shared,freed}_pages cases in
> {,compat_}arch_memory_op() into the already existing #ifdef-s there.
> Returning an error for those sub-ops may be slightly more appropriate
> than returning 0 when !MEM_SHARING.
>
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -1297,10 +1297,6 @@ void free_init_memory(void)
> printk("Freed %ldkB init memory.\n", (long)(__init_end-__init_begin)>>10);
> }
>
> -void arch_dump_shared_mem_info(void)
> -{
> -}
> -
Hi Jan,
For the arm part:
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com> #arm
On Tue, 8 Aug 2023, Luca Fancellu wrote:
> > On 8 Aug 2023, at 13:02, Jan Beulich <jbeulich@suse.com> wrote:
> >
> > When !MEM_SHARING no useful output is produced. Move the function into
> > mm/mem_sharing.c while conditionalizing the call to it, thus allowing to
> > drop it altogether from Arm (and eliminating the need to introduce stubs
> > on PPC and RISC-V).
> >
> > Signed-off-by: Jan Beulich <jbeulich@suse.com>
> > ---
> > I wasn't really sure whether introducing a stub in xen/mm.h would be any
> > better than adding the (further) #ifdef to dump_domains().
> >
> > We could go further and also eliminate the need for the stub variants
> > of mem_sharing_get_nr_{shared,saved}_mfns() by moving the
> > XENMEM_get_sharing_{shared,freed}_pages cases in
> > {,compat_}arch_memory_op() into the already existing #ifdef-s there.
> > Returning an error for those sub-ops may be slightly more appropriate
> > than returning 0 when !MEM_SHARING.
> >
> > --- a/xen/arch/arm/mm.c
> > +++ b/xen/arch/arm/mm.c
> > @@ -1297,10 +1297,6 @@ void free_init_memory(void)
> > printk("Freed %ldkB init memory.\n", (long)(__init_end-__init_begin)>>10);
> > }
> >
> > -void arch_dump_shared_mem_info(void)
> > -{
> > -}
> > -
>
> Hi Jan,
>
> For the arm part:
>
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com> #arm
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
© 2016 - 2026 Red Hat, Inc.