From: Manish Jaggi <manish.jaggi@cavium.com>
To: xen-devel@lists.xenproject.org, julien.grall@arm.com,
sstabellini@kernel.org, marc.zyngier@arm.com,
andre.przywara@arm.com
Cc: manish.jaggi@cavium.com
Subject: [PATCH v2 00/17] arm64: Mediate access to GICv3 sysregs at EL2
Date: Tue, 27 Mar 2018 14:37:09 +0530 [thread overview]
Message-ID: <cover.1522135597.git.manish.jaggi@cavium.com> (raw)
This patchset is based on Marc's patchset below.
arm64: KVM: Mediate access to GICv3 sysregs at EL2 [1].
As these patches are ported to xen specifically for cavium errata 30115
few changes are made:
- Xen coding style is used
- group1_enable / group0_enable command line options not used.
CONFIG_CAVIUM_ERRATUM_30115 would enable trapping of group0/1 registers
- check_workaround_cavium_30115 function is used instead to check if emulation
has to be done.
- Not every patch in [1] is ported to xen, ported are ones which are relevant
to Cavium Errata 30115.
- vreg_emulate_XXX functions are defined for emulating g0/g1 registers,
basically these functions wrap calling of read/write functions based on
isread in a separate function.
- read/write_gicreg is replaced by READ/WRITE_SYSREG32 which is already
present in xen code.
Most of the trap code is added in vgic-v3-sr.c. Trap handler function is kept
independent of the usual guest trap handling code.
Cavium 30115 Errata Workaround:
Hypervisor to trap and emulate the following registers:
Group 0: ICC_IAR0_EL1, ICC_EOIR0_EL1, ICC_HPPIR0_EL1, ICC_BPR0_EL1,
ICC_AP0R0_EL1, ICC_IGRPEN0_EL1
Group 1: ICC_IAR1_EL1, ICC_EOIR1_EL1, ICC_HPPIR1_EL1, ICC_BPR1_EL1,
ICC_AP1R0_EL1, ICC_IGRPEN1_EL1
The errata workaround has been validated on Cavium ThunderX1 platform.
Steps to reproduce the errata
- Boot Xen with 2 cores.
- Disable group1 interrupts in domU kernel
- start domU, the kill and start again.
One of the Xen core would hang.
[1] https://www.spinics.net/lists/arm-kernel/msg587082.html
Changes from v1
- removed __ prefix from function names
- Patches have been realigned to map closely with original patchset
Changes from v0
- Added Group0 traps.
- Some cleanups and documentation
Changes from RFC
- Added commit information on ported patches from linux
- Added skip_hyp_tail to control calling leave_hypervisor_tail
- Added CAVIUM_CONFIG_ERRATUM_30115 which will auto enable workaround
Manish Jaggi (17):
arm: Placeholder for handling Group0/1 traps
arm64: vgic-v3: Add ICV_BPR1_EL1 handler
arm64: vgic-v3: Add ICV_IGRPEN1_EL1 handler
arm64: Add accessors for the ICH_APxRn_EL2 registers
Expose ich_read/write_lr in vgic-v3-sr.c
arm64: Add ICV_IAR1_EL1 handler
arm64: vgic-v3: Add ICV_EOIR1_EL1 handler
arm64: vgic-v3: Add ICV_AP1Rn_EL1 handler
arm64: vgic-v3: Add ICV_HPPIR1_EL1 handler
arm64: vgic-v3: Add ICV_BPR0_EL1 handler
arm64: vgic-v3: Add ICV_IGRPEN0_EL1 handler
arm64: vgic-v3: Add misc Group-0 handlers
arm64: cputype: Add MIDR values for Cavium ThunderX1 CPU family
arm64: Add config for Cavium Thunder erratum 30115
arm: Hook workaround handler from traps.c based on Cavium
workaround_30115
arm64: Inject Undef exception in guest if trapping a
write-to-read-only GICv3 access
arm64: Inject undef exception in guest if trapping a
read-from-write-only GICv3 access
docs/misc/arm/silicon-errata.txt | 1 +
xen/arch/arm/Kconfig | 11 +
xen/arch/arm/arm64/Makefile | 1 +
xen/arch/arm/arm64/vgic-v3-sr.c | 866 ++++++++++++++++++++++++++++++++++++
xen/arch/arm/cpuerrata.c | 21 +
xen/arch/arm/traps.c | 31 ++
xen/include/asm-arm/arm64/sysregs.h | 12 +
xen/include/asm-arm/arm64/traps.h | 2 +
xen/include/asm-arm/cpuerrata.h | 1 +
xen/include/asm-arm/cpufeature.h | 3 +-
xen/include/asm-arm/current.h | 3 +-
xen/include/asm-arm/gic_v3_defs.h | 29 ++
xen/include/asm-arm/processor.h | 9 +
13 files changed, 988 insertions(+), 2 deletions(-)
create mode 100644 xen/arch/arm/arm64/vgic-v3-sr.c
--
2.14.1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next reply other threads:[~2018-03-27 9:08 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-27 9:07 Manish Jaggi [this message]
2018-03-27 9:07 ` [PATCH v2 01/17] arm: Placeholder for handling Group0/1 traps Manish Jaggi
2018-03-27 10:01 ` Marc Zyngier
2018-03-27 10:10 ` Manish Jaggi
2018-03-27 10:22 ` Marc Zyngier
2018-03-27 20:16 ` Stefano Stabellini
2018-03-28 0:48 ` Julien Grall
2018-03-28 3:48 ` Manish Jaggi
2018-04-03 15:33 ` Julien Grall
2018-03-27 9:07 ` [PATCH v2 02/17] arm64: vgic-v3: Add ICV_BPR1_EL1 handler Manish Jaggi
2018-03-27 10:30 ` Marc Zyngier
2018-03-27 10:35 ` Manish Jaggi
2018-03-27 10:45 ` Marc Zyngier
2018-03-27 10:56 ` Manish Jaggi
2018-03-27 11:05 ` Marc Zyngier
2018-03-27 11:07 ` Manish Jaggi
2018-03-27 11:11 ` Marc Zyngier
2018-03-27 11:15 ` Manish Jaggi
2018-03-27 11:25 ` Marc Zyngier
2018-03-27 11:27 ` Manish Jaggi
2018-03-27 11:38 ` Marc Zyngier
2018-03-28 3:51 ` Manish Jaggi
2018-04-03 15:59 ` Julien Grall
2018-03-27 9:07 ` [PATCH v2 03/17] arm64: vgic-v3: Add ICV_IGRPEN1_EL1 handler Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 04/17] arm64: Add accessors for the ICH_APxRn_EL2 registers Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 05/17] Expose ich_read/write_lr in vgic-v3-sr.c Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 06/17] arm64: Add ICV_IAR1_EL1 handler Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 07/17] arm64: vgic-v3: Add ICV_EOIR1_EL1 handler Manish Jaggi
2018-03-27 10:18 ` Marc Zyngier
2018-04-02 11:03 ` Manish Jaggi
2018-04-02 11:17 ` Manish Jaggi
2018-04-05 9:40 ` Julien Grall
2018-04-05 19:53 ` Stefano Stabellini
2018-04-06 8:37 ` Manish Jaggi
2018-04-11 14:16 ` Julien Grall
2018-03-27 9:07 ` [PATCH v2 08/17] arm64: vgic-v3: Add ICV_AP1Rn_EL1 handler Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 09/17] arm64: vgic-v3: Add ICV_HPPIR1_EL1 handler Manish Jaggi
2018-03-27 10:56 ` Marc Zyngier
2018-03-27 11:02 ` Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 10/17] arm64: vgic-v3: Add ICV_BPR0_EL1 handler Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 11/17] arm64: vgic-v3: Add ICV_IGRPEN0_EL1 handler Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 12/17] arm64: vgic-v3: Add misc Group-0 handlers Manish Jaggi
2018-03-27 10:58 ` Marc Zyngier
2018-03-27 11:01 ` Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 13/17] arm64: cputype: Add MIDR values for Cavium ThunderX1 CPU family Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 14/17] arm64: Add config for Cavium Thunder erratum 30115 Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 15/17] arm: Hook workaround handler from traps.c based on Cavium workaround_30115 Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 16/17] arm64: if trapping a write-to-read-only GICv3 access inject Undef exception in guest Manish Jaggi
2018-03-27 9:07 ` [PATCH v2 17/17] arm64: if trapping a read-from-write-only GICv3 access inject undef " Manish Jaggi
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=cover.1522135597.git.manish.jaggi@cavium.com \
--to=manish.jaggi@cavium.com \
--cc=andre.przywara@arm.com \
--cc=julien.grall@arm.com \
--cc=marc.zyngier@arm.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.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.