[PATCH 7/8] s390: mv s390 sysctls into their own file under arch/s390 dir

Joel Granados posted 8 patches 10 months ago
There is a newer version of this series
[PATCH 7/8] s390: mv s390 sysctls into their own file under arch/s390 dir
Posted by joel granados 10 months ago
Move s390 sysctls (spin_retry and userprocess_debug) into their own
files under arch/s390. We create two new sysctl tables
(2390_{fault,spin}_sysctl_table) which will be initialized with
arch_initcall placing them after their original place in proc_root_init.

This is part of a greater effort to move ctl tables into their
respective subsystems which will reduce the merge conflicts in
kerenel/sysctl.c.

Signed-off-by: joel granados <joel.granados@kernel.org>
---
 arch/s390/lib/spinlock.c | 23 +++++++++++++++++++++++
 arch/s390/mm/fault.c     | 17 +++++++++++++++++
 kernel/sysctl.c          | 18 ------------------
 3 files changed, 40 insertions(+), 18 deletions(-)

diff --git a/arch/s390/lib/spinlock.c b/arch/s390/lib/spinlock.c
index a81a01c44927..4483fdc9d472 100644
--- a/arch/s390/lib/spinlock.c
+++ b/arch/s390/lib/spinlock.c
@@ -17,6 +17,10 @@
 #include <asm/alternative.h>
 #include <asm/asm.h>
 
+#if defined(CONFIG_SMP)
+#include <linux/sysctl.h>
+#endif
+
 int spin_retry = -1;
 
 static int __init spin_retry_init(void)
@@ -37,6 +41,25 @@ static int __init spin_retry_setup(char *str)
 }
 __setup("spin_retry=", spin_retry_setup);
 
+#if defined(CONFIG_SMP)
+static const struct ctl_table s390_spin_sysctl_table[] = {
+	{
+		.procname	= "spin_retry",
+		.data		= &spin_retry,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec,
+	},
+};
+
+static int __init init_s390_spin_sysctls(void)
+{
+	register_sysctl_init("kernel", s390_spin_sysctl_table);
+	return 0;
+}
+arch_initcall(init_s390_spin_sysctls);
+#endif
+
 struct spin_wait {
 	struct spin_wait *next, *prev;
 	int node_id;
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 9b681f74dccc..507da355bf68 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -175,6 +175,23 @@ static void dump_fault_info(struct pt_regs *regs)
 
 int show_unhandled_signals = 1;
 
+static const struct ctl_table s390_fault_sysctl_table[] = {
+	{
+		.procname	= "userprocess_debug",
+		.data		= &show_unhandled_signals,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec,
+	},
+};
+
+static int __init init_s390_fault_sysctls(void)
+{
+	register_sysctl_init("kernel", s390_fault_sysctl_table);
+	return 0;
+}
+arch_initcall(init_s390_fault_sysctls);
+
 void report_user_fault(struct pt_regs *regs, long signr, int is_mm_fault)
 {
 	static DEFINE_RATELIMIT_STATE(rs, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index b63d53e592d8..7f505f9ace87 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -1702,15 +1702,6 @@ static const struct ctl_table kern_table[] = {
 		.extra1		= SYSCTL_ZERO,
 		.extra2		= SYSCTL_MAXOLDUID,
 	},
-#ifdef CONFIG_S390
-	{
-		.procname	= "userprocess_debug",
-		.data		= &show_unhandled_signals,
-		.maxlen		= sizeof(int),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec,
-	},
-#endif
 	{
 		.procname	= "ngroups_max",
 		.data		= (void *)&ngroups_max,
@@ -1791,15 +1782,6 @@ static const struct ctl_table kern_table[] = {
 		.proc_handler	= proc_dointvec,
 	},
 #endif
-#if defined(CONFIG_S390) && defined(CONFIG_SMP)
-	{
-		.procname	= "spin_retry",
-		.data		= &spin_retry,
-		.maxlen		= sizeof (int),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec,
-	},
-#endif
 #if	defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
 	{
 		.procname	= "acpi_video_flags",

-- 
2.44.2
Re: [PATCH 7/8] s390: mv s390 sysctls into their own file under arch/s390 dir
Posted by Heiko Carstens 10 months ago
On Tue, Feb 18, 2025 at 10:56:23AM +0100, joel granados wrote:
> Move s390 sysctls (spin_retry and userprocess_debug) into their own
> files under arch/s390. We create two new sysctl tables
> (2390_{fault,spin}_sysctl_table) which will be initialized with
> arch_initcall placing them after their original place in proc_root_init.
> 
> This is part of a greater effort to move ctl tables into their
> respective subsystems which will reduce the merge conflicts in
> kerenel/sysctl.c.
  ^^^^^^^
typo

> diff --git a/arch/s390/lib/spinlock.c b/arch/s390/lib/spinlock.c
> index a81a01c44927..4483fdc9d472 100644
> --- a/arch/s390/lib/spinlock.c
> +++ b/arch/s390/lib/spinlock.c
> @@ -17,6 +17,10 @@
>  #include <asm/alternative.h>
>  #include <asm/asm.h>
>  
> +#if defined(CONFIG_SMP)
> +#include <linux/sysctl.h>
> +#endif
> +
...
> +#if defined(CONFIG_SMP)
> +static const struct ctl_table s390_spin_sysctl_table[] = {
> +	{
> +		.procname	= "spin_retry",
> +		.data		= &spin_retry,
> +		.maxlen		= sizeof(int),
> +		.mode		= 0644,
> +		.proc_handler	= proc_dointvec,
> +	},
> +};
> +
> +static int __init init_s390_spin_sysctls(void)
> +{
> +	register_sysctl_init("kernel", s390_spin_sysctl_table);
> +	return 0;
> +}
> +arch_initcall(init_s390_spin_sysctls);
> +#endif

I see that you want to keep the existing CONFIG_SMP behaviour, but since a
long time s390 enforces CONFIG_SMP=y (this was obviously never reflected in
kernel/sysctl.c).
Therefore the above ifdefs should be removed, and in addition the include
statement should be added to the other linux includes at the top of the file.
Re: [PATCH 7/8] s390: mv s390 sysctls into their own file under arch/s390 dir
Posted by Joel Granados 10 months ago
On Tue, Feb 18, 2025 at 03:08:21PM +0100, Heiko Carstens wrote:
> On Tue, Feb 18, 2025 at 10:56:23AM +0100, joel granados wrote:
> > Move s390 sysctls (spin_retry and userprocess_debug) into their own
> > files under arch/s390. We create two new sysctl tables
> > (2390_{fault,spin}_sysctl_table) which will be initialized with
> > arch_initcall placing them after their original place in proc_root_init.
> > 
> > This is part of a greater effort to move ctl tables into their
> > respective subsystems which will reduce the merge conflicts in
> > kerenel/sysctl.c.
>   ^^^^^^^
> typo
Fixed

> 
> > diff --git a/arch/s390/lib/spinlock.c b/arch/s390/lib/spinlock.c
> > index a81a01c44927..4483fdc9d472 100644
> > --- a/arch/s390/lib/spinlock.c
> > +++ b/arch/s390/lib/spinlock.c
> > @@ -17,6 +17,10 @@
> >  #include <asm/alternative.h>
> >  #include <asm/asm.h>
> >  
> > +#if defined(CONFIG_SMP)
> > +#include <linux/sysctl.h>
> > +#endif
> > +
> ...
> > +#if defined(CONFIG_SMP)
> > +static const struct ctl_table s390_spin_sysctl_table[] = {
> > +	{
> > +		.procname	= "spin_retry",
> > +		.data		= &spin_retry,
> > +		.maxlen		= sizeof(int),
> > +		.mode		= 0644,
> > +		.proc_handler	= proc_dointvec,
> > +	},
> > +};
> > +
> > +static int __init init_s390_spin_sysctls(void)
> > +{
> > +	register_sysctl_init("kernel", s390_spin_sysctl_table);
> > +	return 0;
> > +}
> > +arch_initcall(init_s390_spin_sysctls);
> > +#endif
> 
> I see that you want to keep the existing CONFIG_SMP behaviour, but since a
> long time s390 enforces CONFIG_SMP=y (this was obviously never reflected in
> kernel/sysctl.c).
> Therefore the above ifdefs should be removed, and in addition the include
> statement should be added to the other linux includes at the top of the file.
I'll add these changes to my V2

Thx for the review

-- 

Joel Granados