[PATCH v3 00/21] paravirt: cleanup and reorg
Juergen Gross
jgross at suse.com
Mon Nov 24 20:42:54 AEDT 2025
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
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xB0DE9DD628BF132F.asc
Type: application/pgp-keys
Size: 3683 bytes
Desc: OpenPGP public key
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20251124/063cb55e/attachment.asc>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20251124/063cb55e/attachment.sig>
More information about the Linuxppc-dev
mailing list