[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <dec8ee2c-3a00-4027-b762-aada7bc99bd9@suse.com>
Date: Mon, 24 Nov 2025 10:42:54 +0100
From: Juergen Gross <jgross@...e.com>
To: linux-kernel@...r.kernel.org, x86@...nel.org,
linux-hyperv@...r.kernel.org, virtualization@...ts.linux.dev,
loongarch@...ts.linux.dev, linuxppc-dev@...ts.ozlabs.org,
linux-riscv@...ts.infradead.org, kvm@...r.kernel.org
Cc: Andy Lutomirski <luto@...nel.org>, Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
Dave Hansen <dave.hansen@...ux.intel.com>, "H. Peter Anvin" <hpa@...or.com>,
"K. Y. Srinivasan" <kys@...rosoft.com>,
Haiyang Zhang <haiyangz@...rosoft.com>, Wei Liu <wei.liu@...nel.org>,
Dexuan Cui <decui@...rosoft.com>, Peter Zijlstra <peterz@...radead.org>,
Will Deacon <will@...nel.org>, Boqun Feng <boqun.feng@...il.com>,
Waiman Long <longman@...hat.com>, Jiri Kosina <jikos@...nel.org>,
Josh Poimboeuf <jpoimboe@...nel.org>,
Pawan Gupta <pawan.kumar.gupta@...ux.intel.com>,
Boris Ostrovsky <boris.ostrovsky@...cle.com>,
xen-devel@...ts.xenproject.org, Ajay Kaher <ajay.kaher@...adcom.com>,
Alexey Makhalov <alexey.makhalov@...adcom.com>,
Broadcom internal kernel review list
<bcm-kernel-feedback-list@...adcom.com>, Russell King
<linux@...linux.org.uk>, Catalin Marinas <catalin.marinas@....com>,
Huacai Chen <chenhuacai@...nel.org>, WANG Xuerui <kernel@...0n.name>,
Madhavan Srinivasan <maddy@...ux.ibm.com>,
Michael Ellerman <mpe@...erman.id.au>, Nicholas Piggin <npiggin@...il.com>,
Christophe Leroy <christophe.leroy@...roup.eu>,
Paul Walmsley <pjw@...nel.org>, Palmer Dabbelt <palmer@...belt.com>,
Albert Ou <aou@...s.berkeley.edu>, Alexandre Ghiti <alex@...ti.fr>,
Juri Lelli <juri.lelli@...hat.com>,
Vincent Guittot <vincent.guittot@...aro.org>,
Dietmar Eggemann <dietmar.eggemann@....com>,
Steven Rostedt <rostedt@...dmis.org>, Ben Segall <bsegall@...gle.com>,
Mel Gorman <mgorman@...e.de>, Valentin Schneider <vschneid@...hat.com>,
linux-arm-kernel@...ts.infradead.org, Paolo Bonzini <pbonzini@...hat.com>,
Vitaly Kuznetsov <vkuznets@...hat.com>,
Stefano Stabellini <sstabellini@...nel.org>,
Oleksandr Tyshchenko <oleksandr_tyshchenko@...m.com>,
Daniel Lezcano <daniel.lezcano@...aro.org>, Oleg Nesterov <oleg@...hat.com>
Subject: Re: [PATCH v3 00/21] paravirt: cleanup and reorg
Ping?
I think at least the first 12 patches can just go in.
The others still lack review.
Juergen
On 06.10.25 09:45, Juergen Gross wrote:
> Some cleanups and reorg of paravirt code and headers:
>
> - The first 2 patches should be not controversial at all, as they
> remove just some no longer needed #include and struct forward
> declarations.
>
> - The 3rd patch is removing CONFIG_PARAVIRT_DEBUG, which IMO has
> no real value, as it just changes a crash to a BUG() (the stack
> trace will basically be the same). As the maintainer of the main
> paravirt user (Xen) I have never seen this crash/BUG() to happen.
>
> - The 4th patch is just a movement of code.
>
> - I don't know for what reason asm/paravirt_api_clock.h was added,
> as all archs supporting it do it exactly in the same way. Patch
> 5 is removing it.
>
> - Patches 6-14 are streamlining the paravirt clock interfaces by
> using a common implementation across architectures where possible
> and by moving the related code into common sched code, as this is
> where it should live.
>
> - Patches 15-20 are more like RFC material preparing the paravirt
> infrastructure to support multiple pv_ops function arrays.
> As a prerequisite for that it makes life in objtool much easier
> with dropping the Xen static initializers of the pv_ops sub-
> structures, which is done in patches 15-17.
> Patches 18-20 are doing the real preparations for multiple pv_ops
> arrays and using those arrays in multiple headers.
>
> - Patch 21 is an example how the new scheme can look like using the
> PV-spinlocks.
>
> Changes in V2:
> - new patches 13-18 and 20
> - complete rework of patch 21
>
> Changes in V3:
> - fixed 2 issues detected by kernel test robot
>
> Juergen Gross (21):
> x86/paravirt: Remove not needed includes of paravirt.h
> x86/paravirt: Remove some unneeded struct declarations
> x86/paravirt: Remove PARAVIRT_DEBUG config option
> x86/paravirt: Move thunk macros to paravirt_types.h
> paravirt: Remove asm/paravirt_api_clock.h
> sched: Move clock related paravirt code to kernel/sched
> arm/paravirt: Use common code for paravirt_steal_clock()
> arm64/paravirt: Use common code for paravirt_steal_clock()
> loongarch/paravirt: Use common code for paravirt_steal_clock()
> riscv/paravirt: Use common code for paravirt_steal_clock()
> x86/paravirt: Use common code for paravirt_steal_clock()
> x86/paravirt: Move paravirt_sched_clock() related code into tsc.c
> x86/paravirt: Introduce new paravirt-base.h header
> x86/paravirt: Move pv_native_*() prototypes to paravirt.c
> x86/xen: Drop xen_irq_ops
> x86/xen: Drop xen_cpu_ops
> x86/xen: Drop xen_mmu_ops
> objtool: Allow multiple pv_ops arrays
> x86/paravirt: Allow pv-calls outside paravirt.h
> x86/paravirt: Specify pv_ops array in paravirt macros
> x86/pvlocks: Move paravirt spinlock functions into own header
>
> arch/Kconfig | 3 +
> arch/arm/Kconfig | 1 +
> arch/arm/include/asm/paravirt.h | 22 --
> arch/arm/include/asm/paravirt_api_clock.h | 1 -
> arch/arm/kernel/Makefile | 1 -
> arch/arm/kernel/paravirt.c | 23 --
> arch/arm64/Kconfig | 1 +
> arch/arm64/include/asm/paravirt.h | 14 -
> arch/arm64/include/asm/paravirt_api_clock.h | 1 -
> arch/arm64/kernel/paravirt.c | 11 +-
> arch/loongarch/Kconfig | 1 +
> arch/loongarch/include/asm/paravirt.h | 13 -
> .../include/asm/paravirt_api_clock.h | 1 -
> arch/loongarch/kernel/paravirt.c | 10 +-
> arch/powerpc/include/asm/paravirt.h | 3 -
> arch/powerpc/include/asm/paravirt_api_clock.h | 2 -
> arch/powerpc/platforms/pseries/setup.c | 4 +-
> arch/riscv/Kconfig | 1 +
> arch/riscv/include/asm/paravirt.h | 14 -
> arch/riscv/include/asm/paravirt_api_clock.h | 1 -
> arch/riscv/kernel/paravirt.c | 11 +-
> arch/x86/Kconfig | 8 +-
> arch/x86/entry/entry_64.S | 1 -
> arch/x86/entry/vsyscall/vsyscall_64.c | 1 -
> arch/x86/hyperv/hv_spinlock.c | 11 +-
> arch/x86/include/asm/apic.h | 4 -
> arch/x86/include/asm/highmem.h | 1 -
> arch/x86/include/asm/mshyperv.h | 1 -
> arch/x86/include/asm/paravirt-base.h | 29 ++
> arch/x86/include/asm/paravirt-spinlock.h | 146 ++++++++
> arch/x86/include/asm/paravirt.h | 331 +++++-------------
> arch/x86/include/asm/paravirt_api_clock.h | 1 -
> arch/x86/include/asm/paravirt_types.h | 269 +++++++-------
> arch/x86/include/asm/pgtable_32.h | 1 -
> arch/x86/include/asm/ptrace.h | 2 +-
> arch/x86/include/asm/qspinlock.h | 89 +----
> arch/x86/include/asm/spinlock.h | 1 -
> arch/x86/include/asm/timer.h | 1 +
> arch/x86/include/asm/tlbflush.h | 4 -
> arch/x86/kernel/Makefile | 2 +-
> arch/x86/kernel/apm_32.c | 1 -
> arch/x86/kernel/callthunks.c | 1 -
> arch/x86/kernel/cpu/bugs.c | 1 -
> arch/x86/kernel/cpu/vmware.c | 1 +
> arch/x86/kernel/kvm.c | 11 +-
> arch/x86/kernel/kvmclock.c | 1 +
> arch/x86/kernel/paravirt-spinlocks.c | 26 +-
> arch/x86/kernel/paravirt.c | 42 +--
> arch/x86/kernel/tsc.c | 10 +-
> arch/x86/kernel/vsmp_64.c | 1 -
> arch/x86/kernel/x86_init.c | 1 -
> arch/x86/lib/cache-smp.c | 1 -
> arch/x86/mm/init.c | 1 -
> arch/x86/xen/enlighten_pv.c | 82 ++---
> arch/x86/xen/irq.c | 20 +-
> arch/x86/xen/mmu_pv.c | 100 ++----
> arch/x86/xen/spinlock.c | 11 +-
> arch/x86/xen/time.c | 2 +
> drivers/clocksource/hyperv_timer.c | 2 +
> drivers/xen/time.c | 2 +-
> include/linux/sched/cputime.h | 18 +
> kernel/sched/core.c | 5 +
> kernel/sched/cputime.c | 13 +
> kernel/sched/sched.h | 3 +-
> tools/objtool/arch/x86/decode.c | 8 +-
> tools/objtool/check.c | 78 ++++-
> tools/objtool/include/objtool/check.h | 2 +
> 67 files changed, 659 insertions(+), 827 deletions(-)
> delete mode 100644 arch/arm/include/asm/paravirt.h
> delete mode 100644 arch/arm/include/asm/paravirt_api_clock.h
> delete mode 100644 arch/arm/kernel/paravirt.c
> delete mode 100644 arch/arm64/include/asm/paravirt_api_clock.h
> delete mode 100644 arch/loongarch/include/asm/paravirt_api_clock.h
> delete mode 100644 arch/powerpc/include/asm/paravirt_api_clock.h
> delete mode 100644 arch/riscv/include/asm/paravirt_api_clock.h
> create mode 100644 arch/x86/include/asm/paravirt-base.h
> create mode 100644 arch/x86/include/asm/paravirt-spinlock.h
> delete mode 100644 arch/x86/include/asm/paravirt_api_clock.h
>
Download attachment "OpenPGP_0xB0DE9DD628BF132F.asc" of type "application/pgp-keys" (3684 bytes)
Download attachment "OpenPGP_signature.asc" of type "application/pgp-signature" (496 bytes)
Powered by blists - more mailing lists