2023-04-29 06:43:43

by Nicholas Piggin

[permalink] [raw]
Subject: [PATCH] Remove HAVE_VIRT_CPU_ACCOUNTING_GEN option

This option was created in commit 554b0004d0ec4 ("vtime: Add
HAVE_VIRT_CPU_ACCOUNTING_GEN Kconfig") for architectures to indicate
they support the 64-bit cputime_t required for VIRT_CPU_ACCOUNTING_GEN.

The cputime_t type has since been removed, so this doesn't have any
meaning. Remove it.

Cc: [email protected]
Cc: [email protected]
Cc: Vineet Gupta <[email protected]>
Cc: [email protected]
Cc: Brian Cain <[email protected]>
Cc: [email protected]
Cc: Huacai Chen <[email protected]>
Cc: [email protected]
Cc: Geert Uytterhoeven <[email protected]>
Cc: [email protected]
Cc: Michal Simek <[email protected]>
Cc: Thomas Bogendoerfer <[email protected]>
Cc: [email protected]
Cc: Dinh Nguyen <[email protected]>
Cc: Jonas Bonn <[email protected]>
Cc: Stefan Kristiansson <[email protected]>
Cc: Stafford Horne <[email protected]>
Cc: [email protected]
Cc: "James E.J. Bottomley" <[email protected]>
Cc: Helge Deller <[email protected]>
Cc: [email protected]
Cc: Paul Walmsley <[email protected]>
Cc: Palmer Dabbelt <[email protected]>
Cc: Albert Ou <[email protected]>
Cc: [email protected]
Cc: Yoshinori Sato <[email protected]>
Cc: Rich Felker <[email protected]>
Cc: John Paul Adrian Glaubitz <[email protected]>
Cc: [email protected]
Cc: "David S. Miller" <[email protected]>
Cc: [email protected]
Cc: Richard Weinberger <[email protected]>
Cc: Anton Ivanov <[email protected]>
Cc: Johannes Berg <[email protected]>
Cc: [email protected]
Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: [email protected]
Cc: "H. Peter Anvin" <[email protected]>
Cc: Kevin Hilman <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Signed-off-by: Nicholas Piggin <[email protected]>
---
Hi,

Could we tidy this? I don't know what tree it can go in, timers,
sched, asm-generic, probably doesn't matter.

The only thing this actually does is gate VIRT_CPU_ACCOUNTING_GEN and
NO_HZ_FULL so if your arch has some other issue that requires this
then the documentation needs to change. Any concerns from the archs?
I.e., 32-bit that does *not* define HAVE_VIRT_CPU_ACCOUNTING_GEN
which looks to be:

arc
hexagon
loongarch 32-bit with SMP
m68k
microblaze
mips 32-bit with SMP
nios2
openrisc
parisc 32-bit
riscv 32-bit
sh
sparc 32-bit
um 32-bit
x86 32-bit

Thanks,
Nick
--
arch/Kconfig | 11 -----------
arch/arm/Kconfig | 1 -
arch/csky/Kconfig | 1 -
arch/loongarch/Kconfig | 1 -
arch/mips/Kconfig | 1 -
arch/powerpc/Kconfig | 1 -
arch/xtensa/Kconfig | 1 -
init/Kconfig | 1 -
kernel/time/Kconfig | 2 --
9 files changed, 20 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index 205fd23e0cad..b77b41d25e40 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -869,17 +869,6 @@ config HAVE_VIRT_CPU_ACCOUNTING_IDLE
config ARCH_HAS_SCALED_CPUTIME
bool

-config HAVE_VIRT_CPU_ACCOUNTING_GEN
- bool
- default y if 64BIT
- help
- With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit.
- Before enabling this option, arch code must be audited
- to ensure there are no races in concurrent read/write of
- cputime_t. For example, reading/writing 64-bit cputime_t on
- some 32-bit arches may require multiple accesses, so proper
- locking is needed to protect against concurrent accesses.
-
config HAVE_IRQ_TIME_ACCOUNTING
bool
help
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 0fb4b218f665..9c05f25db4e4 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -123,7 +123,6 @@ config ARM
select HAVE_STACKPROTECTOR
select HAVE_SYSCALL_TRACEPOINTS
select HAVE_UID16
- select HAVE_VIRT_CPU_ACCOUNTING_GEN
select IRQ_FORCED_THREADING
select MODULES_USE_ELF_REL
select NEED_DMA_MAP_STATE
diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig
index 00379a843c37..dd1decc2a22d 100644
--- a/arch/csky/Kconfig
+++ b/arch/csky/Kconfig
@@ -73,7 +73,6 @@ config CSKY
select HAVE_ARCH_MMAP_RND_BITS
select HAVE_ARCH_SECCOMP_FILTER
select HAVE_CONTEXT_TRACKING_USER
- select HAVE_VIRT_CPU_ACCOUNTING_GEN
select HAVE_DEBUG_BUGVERBOSE
select HAVE_DEBUG_KMEMLEAK
select HAVE_DYNAMIC_FTRACE
diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
index f44f6ea54e46..7dc71c89bfae 100644
--- a/arch/loongarch/Kconfig
+++ b/arch/loongarch/Kconfig
@@ -122,7 +122,6 @@ config LOONGARCH
select HAVE_STACKPROTECTOR
select HAVE_SYSCALL_TRACEPOINTS
select HAVE_TIF_NOHZ
- select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP
select IRQ_FORCED_THREADING
select IRQ_LOONGARCH_CPU
select MMU_GATHER_MERGE_VMAS if MMU
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index c2f5498d207f..d84cb8bbee53 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -87,7 +87,6 @@ config MIPS
select HAVE_SPARSE_SYSCALL_NR
select HAVE_STACKPROTECTOR
select HAVE_SYSCALL_TRACEPOINTS
- select HAVE_VIRT_CPU_ACCOUNTING_GEN if 64BIT || !SMP
select IRQ_FORCED_THREADING
select ISA if EISA
select MODULES_USE_ELF_REL if MODULES
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index acffffbd5d77..185195f349d9 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -271,7 +271,6 @@ config PPC
select HAVE_STATIC_CALL if PPC32
select HAVE_SYSCALL_TRACEPOINTS
select HAVE_VIRT_CPU_ACCOUNTING
- select HAVE_VIRT_CPU_ACCOUNTING_GEN
select HUGETLB_PAGE_SIZE_VARIABLE if PPC_BOOK3S_64 && HUGETLB_PAGE
select IOMMU_HELPER if PPC64
select IRQ_DOMAIN
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index 3c6e5471f025..04f1399d9ce8 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -47,7 +47,6 @@ config XTENSA
select HAVE_PERF_EVENTS
select HAVE_STACKPROTECTOR
select HAVE_SYSCALL_TRACEPOINTS
- select HAVE_VIRT_CPU_ACCOUNTING_GEN
select IRQ_DOMAIN
select MODULES_USE_ELF_RELA
select PERF_USE_VMALLOC
diff --git a/init/Kconfig b/init/Kconfig
index 32c24950c4ce..835fb5e78a8f 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -504,7 +504,6 @@ config VIRT_CPU_ACCOUNTING_NATIVE
config VIRT_CPU_ACCOUNTING_GEN
bool "Full dynticks CPU time accounting"
depends on HAVE_CONTEXT_TRACKING_USER
- depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
depends on GENERIC_CLOCKEVENTS
select VIRT_CPU_ACCOUNTING
select CONTEXT_TRACKING_USER
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig
index bae8f11070be..d4325dae1f03 100644
--- a/kernel/time/Kconfig
+++ b/kernel/time/Kconfig
@@ -121,8 +121,6 @@ config NO_HZ_FULL
# We need at least one periodic CPU for timekeeping
depends on SMP
depends on HAVE_CONTEXT_TRACKING_USER
- # VIRT_CPU_ACCOUNTING_GEN dependency
- depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
select NO_HZ_COMMON
select RCU_NOCB_CPU
select VIRT_CPU_ACCOUNTING_GEN
--
2.40.1


2023-04-29 20:15:38

by Palmer Dabbelt

[permalink] [raw]
Subject: Re: [PATCH] Remove HAVE_VIRT_CPU_ACCOUNTING_GEN option

On Fri, 28 Apr 2023 23:33:48 PDT (-0700), [email protected] wrote:
> This option was created in commit 554b0004d0ec4 ("vtime: Add
> HAVE_VIRT_CPU_ACCOUNTING_GEN Kconfig") for architectures to indicate
> they support the 64-bit cputime_t required for VIRT_CPU_ACCOUNTING_GEN.
>
> The cputime_t type has since been removed, so this doesn't have any
> meaning. Remove it.
>
> Cc: [email protected]
> Cc: [email protected]
> Cc: Vineet Gupta <[email protected]>
> Cc: [email protected]
> Cc: Brian Cain <[email protected]>
> Cc: [email protected]
> Cc: Huacai Chen <[email protected]>
> Cc: [email protected]
> Cc: Geert Uytterhoeven <[email protected]>
> Cc: [email protected]
> Cc: Michal Simek <[email protected]>
> Cc: Thomas Bogendoerfer <[email protected]>
> Cc: [email protected]
> Cc: Dinh Nguyen <[email protected]>
> Cc: Jonas Bonn <[email protected]>
> Cc: Stefan Kristiansson <[email protected]>
> Cc: Stafford Horne <[email protected]>
> Cc: [email protected]
> Cc: "James E.J. Bottomley" <[email protected]>
> Cc: Helge Deller <[email protected]>
> Cc: [email protected]
> Cc: Paul Walmsley <[email protected]>
> Cc: Palmer Dabbelt <[email protected]>
> Cc: Albert Ou <[email protected]>
> Cc: [email protected]
> Cc: Yoshinori Sato <[email protected]>
> Cc: Rich Felker <[email protected]>
> Cc: John Paul Adrian Glaubitz <[email protected]>
> Cc: [email protected]
> Cc: "David S. Miller" <[email protected]>
> Cc: [email protected]
> Cc: Richard Weinberger <[email protected]>
> Cc: Anton Ivanov <[email protected]>
> Cc: Johannes Berg <[email protected]>
> Cc: [email protected]
> Cc: Thomas Gleixner <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: Borislav Petkov <[email protected]>
> Cc: Dave Hansen <[email protected]>
> Cc: [email protected]
> Cc: "H. Peter Anvin" <[email protected]>
> Cc: Kevin Hilman <[email protected]>
> Cc: Frederic Weisbecker <[email protected]>
> Signed-off-by: Nicholas Piggin <[email protected]>
> ---
> Hi,
>
> Could we tidy this? I don't know what tree it can go in, timers,
> sched, asm-generic, probably doesn't matter.
>
> The only thing this actually does is gate VIRT_CPU_ACCOUNTING_GEN and
> NO_HZ_FULL so if your arch has some other issue that requires this
> then the documentation needs to change. Any concerns from the archs?
> I.e., 32-bit that does *not* define HAVE_VIRT_CPU_ACCOUNTING_GEN
> which looks to be:
>
> arc
> hexagon
> loongarch 32-bit with SMP
> m68k
> microblaze
> mips 32-bit with SMP
> nios2
> openrisc
> parisc 32-bit
> riscv 32-bit

Nothing's jumping out, though I haven't tested this yet so I'm not 100%.
I assume this isn't aimed for this merge window, given the timing?
Probably best to give this sort of thing time to bake in linux-next, but
I doubt anyone is even paying attention to rv32/NO_HZ_FULL so no big
deal either way on my end.

Acked-by: Palmer Dabbelt <[email protected]> # RISC-V

> sh
> sparc 32-bit
> um 32-bit
> x86 32-bit
>
> Thanks,
> Nick

2023-05-02 14:48:38

by Nicholas Piggin

[permalink] [raw]
Subject: Re: [PATCH] Remove HAVE_VIRT_CPU_ACCOUNTING_GEN option

On Sun Apr 30, 2023 at 6:14 AM AEST, Palmer Dabbelt wrote:
> On Fri, 28 Apr 2023 23:33:48 PDT (-0700), [email protected] wrote:
> > This option was created in commit 554b0004d0ec4 ("vtime: Add
> > HAVE_VIRT_CPU_ACCOUNTING_GEN Kconfig") for architectures to indicate
> > they support the 64-bit cputime_t required for VIRT_CPU_ACCOUNTING_GEN.
> >
> > The cputime_t type has since been removed, so this doesn't have any
> > meaning. Remove it.
> >
> > Cc: [email protected]
> > Cc: [email protected]
> > Cc: Vineet Gupta <[email protected]>
> > Cc: [email protected]
> > Cc: Brian Cain <[email protected]>
> > Cc: [email protected]
> > Cc: Huacai Chen <[email protected]>
> > Cc: [email protected]
> > Cc: Geert Uytterhoeven <[email protected]>
> > Cc: [email protected]
> > Cc: Michal Simek <[email protected]>
> > Cc: Thomas Bogendoerfer <[email protected]>
> > Cc: [email protected]
> > Cc: Dinh Nguyen <[email protected]>
> > Cc: Jonas Bonn <[email protected]>
> > Cc: Stefan Kristiansson <[email protected]>
> > Cc: Stafford Horne <[email protected]>
> > Cc: [email protected]
> > Cc: "James E.J. Bottomley" <[email protected]>
> > Cc: Helge Deller <[email protected]>
> > Cc: [email protected]
> > Cc: Paul Walmsley <[email protected]>
> > Cc: Palmer Dabbelt <[email protected]>
> > Cc: Albert Ou <[email protected]>
> > Cc: [email protected]
> > Cc: Yoshinori Sato <[email protected]>
> > Cc: Rich Felker <[email protected]>
> > Cc: John Paul Adrian Glaubitz <[email protected]>
> > Cc: [email protected]
> > Cc: "David S. Miller" <[email protected]>
> > Cc: [email protected]
> > Cc: Richard Weinberger <[email protected]>
> > Cc: Anton Ivanov <[email protected]>
> > Cc: Johannes Berg <[email protected]>
> > Cc: [email protected]
> > Cc: Thomas Gleixner <[email protected]>
> > Cc: Ingo Molnar <[email protected]>
> > Cc: Borislav Petkov <[email protected]>
> > Cc: Dave Hansen <[email protected]>
> > Cc: [email protected]
> > Cc: "H. Peter Anvin" <[email protected]>
> > Cc: Kevin Hilman <[email protected]>
> > Cc: Frederic Weisbecker <[email protected]>
> > Signed-off-by: Nicholas Piggin <[email protected]>
> > ---
> > Hi,
> >
> > Could we tidy this? I don't know what tree it can go in, timers,
> > sched, asm-generic, probably doesn't matter.
> >
> > The only thing this actually does is gate VIRT_CPU_ACCOUNTING_GEN and
> > NO_HZ_FULL so if your arch has some other issue that requires this
> > then the documentation needs to change. Any concerns from the archs?
> > I.e., 32-bit that does *not* define HAVE_VIRT_CPU_ACCOUNTING_GEN
> > which looks to be:
> >
> > arc
> > hexagon
> > loongarch 32-bit with SMP
> > m68k
> > microblaze
> > mips 32-bit with SMP
> > nios2
> > openrisc
> > parisc 32-bit
> > riscv 32-bit
>
> Nothing's jumping out, though I haven't tested this yet so I'm not 100%.
> I assume this isn't aimed for this merge window, given the timing?

No, maybe the next one though.

> Probably best to give this sort of thing time to bake in linux-next, but
> I doubt anyone is even paying attention to rv32/NO_HZ_FULL so no big
> deal either way on my end.
>
> Acked-by: Palmer Dabbelt <[email protected]> # RISC-V

Thanks,
Nick

2023-05-03 11:08:03

by Frederic Weisbecker

[permalink] [raw]
Subject: Re: [PATCH] Remove HAVE_VIRT_CPU_ACCOUNTING_GEN option

Le Sat, Apr 29, 2023 at 04:33:48PM +1000, Nicholas Piggin a ?crit :
> This option was created in commit 554b0004d0ec4 ("vtime: Add
> HAVE_VIRT_CPU_ACCOUNTING_GEN Kconfig") for architectures to indicate
> they support the 64-bit cputime_t required for VIRT_CPU_ACCOUNTING_GEN.
>
> The cputime_t type has since been removed, so this doesn't have any
> meaning. Remove it.

Well, cputime_t has disappeared but not the u64 type used
for task/cpu time accounting.

But now we have the vtime seqcount. Though we already had it
when we introduced that Kconfig switch so I can't remember why
this was necessary :-(

It _looks_ OK but I might be missing something...

Thanks.