All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandru Elisei <alexandru.elisei@arm.com>
To: catalin.marinas@arm.com, will@kernel.org,
	linux-arm-kernel@lists.infradead.org, maz@kernel.org,
	james.morse@arm.com, suzuki.poulose@arm.com,
	kvmarm@lists.cs.columbia.edu, mark.rutland@arm.com
Subject: [PATCH v3 0/5] arm64: Treat ESR_ELx as a 64-bit register
Date: Mon, 25 Apr 2022 12:44:39 +0100	[thread overview]
Message-ID: <20220425114444.368693-1-alexandru.elisei@arm.com> (raw)

The ESR_EL{1,2} registers were originally 32-bit, then were extended to
64-bit with the upper 32 bits RES0, and in ARM DDI 0487H.a the FEAT_LS64
feature was added which now makes use of the upper bits. This series aims
to teach Linux to treat it consistently as a 64-bit register with the goal
of making it easier to add support in the future for features that use the
upper 32 bits.

Patches #1 ("arm64: Make ESR_ELx_xVC_IMM_MASK compatible with assembly")
and #2 ("arm64: compat: Do not treat syscall number as ESR_ELx for a bad
syscall") are fixes for some minor issues which I found while working on
changing ESR_ELx to 64-bit.

Patches #3 ("arm64: Treat ESR_ELx as a 64bit register") and #4 ("KVM:
arm64: Treat ESR_EL2 as a 64-bit register") are where the ESR_ELx registers
are changed to 64-bit. I chose to make the KVM changes a separate patch
because KVM prefers to use u64 for the registers.

And in patch #5 ("KVM: arm64: uapi: Add kvm_debug_exit_arch.hsr_high") I
add a new field to the user API struct kvm_debug_exit_arch that represents
the higher 32 bits, and a flag to go with it (details in the patch).

Tested by running ltp for a few hours (minimal changes from the previous
version) and kvm-unit-tests on a rockpro64.

Changes in v3:

* Rebased on top of v5.18-rc4
* Clear kvm_run->flags in kvm_arch_vcpu_ioctl_run() in patch #5 ("KVM:
  arm64: uapi: Add kvm_debug_exit_arch.hsr_high")
* Documented KVM_DEBUG_ARCH_HSR_HIGH_VALID.

Changes in v2:

* Added the KVM_DEBUG_ARCH_HSR_HIGH_VALID kvm_run flag to patch #5 ("KVM:
  arm64: uapi: Add kvm_debug_exit_arch.hsr_high"), and updated the commit
  message to match (Marc)
* Rebased on top of v5.18-rc3.


Alexandru Elisei (5):
  arm64: Make ESR_ELx_xVC_IMM_MASK compatible with assembly
  arm64: compat: Do not treat syscall number as ESR_ELx for a bad
    syscall
  arm64: Treat ESR_ELx as a 64-bit register
  KVM: arm64: Treat ESR_EL2 as a 64-bit register
  KVM: arm64: uapi: Add kvm_debug_exit_arch.hsr_high

 Documentation/virt/kvm/api.rst          |  2 +
 arch/arm64/include/asm/debug-monitors.h |  4 +-
 arch/arm64/include/asm/esr.h            |  8 +--
 arch/arm64/include/asm/exception.h      | 28 +++++-----
 arch/arm64/include/asm/kvm_emulate.h    |  6 +--
 arch/arm64/include/asm/kvm_host.h       |  2 +-
 arch/arm64/include/asm/kvm_ras.h        |  2 +-
 arch/arm64/include/asm/system_misc.h    |  4 +-
 arch/arm64/include/asm/traps.h          | 12 ++---
 arch/arm64/include/uapi/asm/kvm.h       |  2 +
 arch/arm64/kernel/debug-monitors.c      | 12 ++---
 arch/arm64/kernel/entry-common.c        |  6 +--
 arch/arm64/kernel/fpsimd.c              |  6 +--
 arch/arm64/kernel/hw_breakpoint.c       |  4 +-
 arch/arm64/kernel/kgdb.c                |  6 +--
 arch/arm64/kernel/probes/kprobes.c      |  4 +-
 arch/arm64/kernel/probes/uprobes.c      |  4 +-
 arch/arm64/kernel/sys_compat.c          |  2 +-
 arch/arm64/kernel/traps.c               | 66 +++++++++++------------
 arch/arm64/kvm/arm.c                    |  1 +
 arch/arm64/kvm/handle_exit.c            | 16 +++---
 arch/arm64/kvm/hyp/include/hyp/switch.h |  2 +-
 arch/arm64/kvm/hyp/nvhe/sys_regs.c      |  2 +-
 arch/arm64/kvm/hyp/vgic-v3-sr.c         |  4 +-
 arch/arm64/kvm/inject_fault.c           |  4 +-
 arch/arm64/kvm/sys_regs.c               |  4 +-
 arch/arm64/mm/fault.c                   | 70 ++++++++++++-------------
 27 files changed, 145 insertions(+), 138 deletions(-)

-- 
2.36.0

_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

WARNING: multiple messages have this Message-ID (diff)
From: Alexandru Elisei <alexandru.elisei@arm.com>
To: catalin.marinas@arm.com, will@kernel.org,
	linux-arm-kernel@lists.infradead.org, maz@kernel.org,
	james.morse@arm.com, suzuki.poulose@arm.com,
	kvmarm@lists.cs.columbia.edu, mark.rutland@arm.com
Subject: [PATCH v3 0/5] arm64: Treat ESR_ELx as a 64-bit register
Date: Mon, 25 Apr 2022 12:44:39 +0100	[thread overview]
Message-ID: <20220425114444.368693-1-alexandru.elisei@arm.com> (raw)

The ESR_EL{1,2} registers were originally 32-bit, then were extended to
64-bit with the upper 32 bits RES0, and in ARM DDI 0487H.a the FEAT_LS64
feature was added which now makes use of the upper bits. This series aims
to teach Linux to treat it consistently as a 64-bit register with the goal
of making it easier to add support in the future for features that use the
upper 32 bits.

Patches #1 ("arm64: Make ESR_ELx_xVC_IMM_MASK compatible with assembly")
and #2 ("arm64: compat: Do not treat syscall number as ESR_ELx for a bad
syscall") are fixes for some minor issues which I found while working on
changing ESR_ELx to 64-bit.

Patches #3 ("arm64: Treat ESR_ELx as a 64bit register") and #4 ("KVM:
arm64: Treat ESR_EL2 as a 64-bit register") are where the ESR_ELx registers
are changed to 64-bit. I chose to make the KVM changes a separate patch
because KVM prefers to use u64 for the registers.

And in patch #5 ("KVM: arm64: uapi: Add kvm_debug_exit_arch.hsr_high") I
add a new field to the user API struct kvm_debug_exit_arch that represents
the higher 32 bits, and a flag to go with it (details in the patch).

Tested by running ltp for a few hours (minimal changes from the previous
version) and kvm-unit-tests on a rockpro64.

Changes in v3:

* Rebased on top of v5.18-rc4
* Clear kvm_run->flags in kvm_arch_vcpu_ioctl_run() in patch #5 ("KVM:
  arm64: uapi: Add kvm_debug_exit_arch.hsr_high")
* Documented KVM_DEBUG_ARCH_HSR_HIGH_VALID.

Changes in v2:

* Added the KVM_DEBUG_ARCH_HSR_HIGH_VALID kvm_run flag to patch #5 ("KVM:
  arm64: uapi: Add kvm_debug_exit_arch.hsr_high"), and updated the commit
  message to match (Marc)
* Rebased on top of v5.18-rc3.


Alexandru Elisei (5):
  arm64: Make ESR_ELx_xVC_IMM_MASK compatible with assembly
  arm64: compat: Do not treat syscall number as ESR_ELx for a bad
    syscall
  arm64: Treat ESR_ELx as a 64-bit register
  KVM: arm64: Treat ESR_EL2 as a 64-bit register
  KVM: arm64: uapi: Add kvm_debug_exit_arch.hsr_high

 Documentation/virt/kvm/api.rst          |  2 +
 arch/arm64/include/asm/debug-monitors.h |  4 +-
 arch/arm64/include/asm/esr.h            |  8 +--
 arch/arm64/include/asm/exception.h      | 28 +++++-----
 arch/arm64/include/asm/kvm_emulate.h    |  6 +--
 arch/arm64/include/asm/kvm_host.h       |  2 +-
 arch/arm64/include/asm/kvm_ras.h        |  2 +-
 arch/arm64/include/asm/system_misc.h    |  4 +-
 arch/arm64/include/asm/traps.h          | 12 ++---
 arch/arm64/include/uapi/asm/kvm.h       |  2 +
 arch/arm64/kernel/debug-monitors.c      | 12 ++---
 arch/arm64/kernel/entry-common.c        |  6 +--
 arch/arm64/kernel/fpsimd.c              |  6 +--
 arch/arm64/kernel/hw_breakpoint.c       |  4 +-
 arch/arm64/kernel/kgdb.c                |  6 +--
 arch/arm64/kernel/probes/kprobes.c      |  4 +-
 arch/arm64/kernel/probes/uprobes.c      |  4 +-
 arch/arm64/kernel/sys_compat.c          |  2 +-
 arch/arm64/kernel/traps.c               | 66 +++++++++++------------
 arch/arm64/kvm/arm.c                    |  1 +
 arch/arm64/kvm/handle_exit.c            | 16 +++---
 arch/arm64/kvm/hyp/include/hyp/switch.h |  2 +-
 arch/arm64/kvm/hyp/nvhe/sys_regs.c      |  2 +-
 arch/arm64/kvm/hyp/vgic-v3-sr.c         |  4 +-
 arch/arm64/kvm/inject_fault.c           |  4 +-
 arch/arm64/kvm/sys_regs.c               |  4 +-
 arch/arm64/mm/fault.c                   | 70 ++++++++++++-------------
 27 files changed, 145 insertions(+), 138 deletions(-)

-- 
2.36.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

             reply	other threads:[~2022-04-25 11:45 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-25 11:44 Alexandru Elisei [this message]
2022-04-25 11:44 ` [PATCH v3 0/5] arm64: Treat ESR_ELx as a 64-bit register Alexandru Elisei
2022-04-25 11:44 ` [PATCH v3 1/5] arm64: Make ESR_ELx_xVC_IMM_MASK compatible with assembly Alexandru Elisei
2022-04-25 11:44   ` Alexandru Elisei
2022-04-25 11:44 ` [PATCH v3 2/5] arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall Alexandru Elisei
2022-04-25 11:44   ` Alexandru Elisei
2022-04-25 11:44 ` [PATCH v3 3/5] arm64: Treat ESR_ELx as a 64-bit register Alexandru Elisei
2022-04-25 11:44   ` Alexandru Elisei
2022-04-25 11:44 ` [PATCH v3 4/5] KVM: arm64: Treat ESR_EL2 " Alexandru Elisei
2022-04-25 11:44   ` Alexandru Elisei
2022-04-25 11:44 ` [PATCH v3 5/5] KVM: arm64: uapi: Add kvm_debug_exit_arch.hsr_high Alexandru Elisei
2022-04-25 11:44   ` Alexandru Elisei
2022-04-28 20:59 ` [PATCH v3 0/5] arm64: Treat ESR_ELx as a 64-bit register Marc Zyngier
2022-04-28 20:59   ` Marc Zyngier
2022-04-29 19:19 ` Catalin Marinas
2022-04-29 19:19   ` Catalin Marinas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220425114444.368693-1-alexandru.elisei@arm.com \
    --to=alexandru.elisei@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.com \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.