lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAAhSdy1EXTmuCvMp4HK0Ozg42Zw2XzCjaS7kGi-aXQ__r=taPw@mail.gmail.com>
Date: Mon, 23 Dec 2024 13:44:50 +0530
From: Anup Patel <anup@...infault.org>
To: guoren@...nel.org
Cc: paul.walmsley@...ive.com, palmer@...belt.com, bjorn@...osinc.com, 
	conor@...nel.org, leobras@...hat.com, peterz@...radead.org, 
	parri.andrea@...il.com, will@...nel.org, longman@...hat.com, 
	boqun.feng@...il.com, arnd@...db.de, alexghiti@...osinc.com, 
	ajones@...tanamicro.com, rkrcmar@...tanamicro.com, 
	linux-riscv@...ts.infradead.org, linux-kernel@...r.kernel.org, 
	Guo Ren <guoren@...ux.alibaba.com>
Subject: Re: [PATCH 0/3] riscv: Add PARAVIRT_SPINLOCKS support

On Sun, Dec 22, 2024 at 9:09 AM <guoren@...nel.org> wrote:
>
> From: Guo Ren <guoren@...ux.alibaba.com>
>
> Paravirtualized spinlocks allow a unfair qspinlock to replace the
> ticket-lock or native fair qspinlock implementation with something
> virtualization-friendly, for example, halt the virtual CPU rather
> than spinning.
>
> You could observe the paravirt qspinlock internal work situation with
> /sys/kernel/debug/tracing/trace:
>
> ls /sys/kernel/debug/tracing/events/paravirt/
>  enable   filter   pv_kick  pv_wait
>
> echo 1 > /sys/kernel/debug/tracing/events/paravirt/enable
> cat /sys/kernel/debug/tracing/trace
>  entries-in-buffer/entries-written: 33927/33927   #P:12
>
>                                 _-----=> irqs-off/BH-disabled
>                                / _----=> need-resched
>                               | / _---=> hardirq/softirq
>                               || / _--=> preempt-depth
>                               ||| / _-=> migrate-disable
>                               |||| /     delay
>            TASK-PID     CPU#  |||||  TIMESTAMP  FUNCTION
>               | |         |   |||||     |         |
>              sh-100     [001] d..2.    28.312294: pv_wait: cpu 1 out of wfi
>          <idle>-0       [000] d.h4.    28.322030: pv_kick: cpu 0 kick target cpu 1
>              sh-100     [001] d..2.    30.982631: pv_wait: cpu 1 out of wfi
>          <idle>-0       [000] d.h4.    30.993289: pv_kick: cpu 0 kick target cpu 1
>              sh-100     [002] d..2.    44.987573: pv_wait: cpu 2 out of wfi
>          <idle>-0       [000] d.h4.    44.989000: pv_kick: cpu 0 kick target cpu 2
>          <idle>-0       [003] d.s3.    51.593978: pv_kick: cpu 3 kick target cpu 4
>       rcu_sched-15      [004] d..2.    51.595192: pv_wait: cpu 4 out of wfi
> lock_torture_wr-115     [004] ...2.    52.656482: pv_kick: cpu 4 kick target cpu 2
> lock_torture_wr-113     [002] d..2.    52.659146: pv_wait: cpu 2 out of wfi
> lock_torture_wr-114     [008] d..2.    52.659507: pv_wait: cpu 8 out of wfi
> lock_torture_wr-114     [008] d..2.    52.663503: pv_wait: cpu 8 out of wfi
> lock_torture_wr-113     [002] ...2.    52.666128: pv_kick: cpu 2 kick target cpu 8
> lock_torture_wr-114     [008] d..2.    52.667261: pv_wait: cpu 8 out of wfi
> lock_torture_wr-114     [009] .n.2.    53.141515: pv_kick: cpu 9 kick target cpu 11
> lock_torture_wr-113     [002] d..2.    53.143339: pv_wait: cpu 2 out of wfi
> lock_torture_wr-116     [007] d..2.    53.143412: pv_wait: cpu 7 out of wfi
> lock_torture_wr-118     [000] d..2.    53.143457: pv_wait: cpu 0 out of wfi
> lock_torture_wr-115     [008] d..2.    53.143481: pv_wait: cpu 8 out of wfi
> lock_torture_wr-117     [011] d..2.    53.143522: pv_wait: cpu 11 out of wfi
> lock_torture_wr-117     [011] ...2.    53.143987: pv_kick: cpu 11 kick target cpu 8
> lock_torture_wr-115     [008] ...2.    53.144269: pv_kick: cpu 8 kick target cpu 7
>
> This series is split from [1].
>
> [1]: https://lore.kernel.org/linux-riscv/20231225125847.2778638-1-guoren@kernel.org/
>
> Guo Ren (3):
>   RISC-V: paravirt: Add pvqspinlock KVM backend
>   RISC-V: paravirt: Add pvqspinlock frontend
>   RISC-V: paravirt: pvqspinlock: Add trace point for pv_kick/wait

This should be an RFC series until the corresponding SBI extension
is frozen. AFAIK, no one has posted any SBI extension in this context
on any of the RVI mailing lists.

Please work with the PRS TG and Hypervisors SIG for the proposed
SBI extension.

Regards,
Anup


>
>  arch/riscv/Kconfig                            | 12 +++
>  arch/riscv/include/asm/Kbuild                 |  1 -
>  arch/riscv/include/asm/kvm_vcpu_sbi.h         |  1 +
>  arch/riscv/include/asm/qspinlock.h            | 35 +++++++++
>  arch/riscv/include/asm/qspinlock_paravirt.h   | 28 +++++++
>  arch/riscv/include/asm/sbi.h                  |  5 ++
>  arch/riscv/include/uapi/asm/kvm.h             |  1 +
>  arch/riscv/kernel/Makefile                    |  1 +
>  arch/riscv/kernel/qspinlock_paravirt.c        | 74 +++++++++++++++++++
>  arch/riscv/kernel/setup.c                     |  4 +
>  .../kernel/trace_events_filter_paravirt.h     | 60 +++++++++++++++
>  arch/riscv/kvm/Makefile                       |  1 +
>  arch/riscv/kvm/vcpu_sbi.c                     |  4 +
>  arch/riscv/kvm/vcpu_sbi_pvlock.c              | 57 ++++++++++++++
>  14 files changed, 283 insertions(+), 1 deletion(-)
>  create mode 100644 arch/riscv/include/asm/qspinlock.h
>  create mode 100644 arch/riscv/include/asm/qspinlock_paravirt.h
>  create mode 100644 arch/riscv/kernel/qspinlock_paravirt.c
>  create mode 100644 arch/riscv/kernel/trace_events_filter_paravirt.h
>  create mode 100644 arch/riscv/kvm/vcpu_sbi_pvlock.c
>
> --
> 2.40.1
>
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ