mbox series

[RFC,0/5] Exception handling in HYP mode on ARMv7-A

Message ID 20211024235808.1926508-1-jim.posen@gmail.com
Headers show
Series Exception handling in HYP mode on ARMv7-A | expand

Message

Jim Posen Oct. 24, 2021, 11:58 p.m. UTC
Currently, when U-Boot is running in hypervisor mode on ARMv7-A CPUs
with virtualization extensions, the exception handling does not work.
A couple things need to change which are detailed in my earlier
message to the u-boot mailing list with the subject "Exception
handling in HYP mode on ARMv7-A".

I have verified that this patch series works on the ODroid XU4 and
the Raspberry Pi 3B in Aarch32 mode when running in hypervisor mode.
One simple way to verify is by running the miscellaneous "exception"
command (CMD_EXCEPTION).


Jim Posen (5):
  Compile for ARMv7-A with virtualization extensions
  Hypervisor mode interrupt vector table
  Set HVBAR register correctly
  Remove dead code
  Fix PC adjustment logic in exception handlers

 arch/arm/Makefile                 |   4 +
 arch/arm/cpu/armv7/start.S        |   5 ++
 arch/arm/include/asm/u-boot-arm.h |  14 ++--
 arch/arm/lib/interrupts.c         |  26 +++---
 arch/arm/lib/relocate.S           |   8 ++
 arch/arm/lib/vectors.S            | 129 +++++++++++++++++++++++-------
 arch/arm/mach-bcm283x/Kconfig     |   3 +
 arch/arm/mach-exynos/Kconfig      |   1 +
 8 files changed, 139 insertions(+), 51 deletions(-)

Comments

Tom Rini Nov. 23, 2021, 3:24 p.m. UTC | #1
On Sun, Oct 24, 2021 at 07:58:03PM -0400, Jim Posen wrote:

> Currently, when U-Boot is running in hypervisor mode on ARMv7-A CPUs
> with virtualization extensions, the exception handling does not work.
> A couple things need to change which are detailed in my earlier
> message to the u-boot mailing list with the subject "Exception
> handling in HYP mode on ARMv7-A".
> 
> I have verified that this patch series works on the ODroid XU4 and
> the Raspberry Pi 3B in Aarch32 mode when running in hypervisor mode.
> One simple way to verify is by running the miscellaneous "exception"
> command (CMD_EXCEPTION).
> 
> 
> Jim Posen (5):
>   Compile for ARMv7-A with virtualization extensions
>   Hypervisor mode interrupt vector table
>   Set HVBAR register correctly
>   Remove dead code
>   Fix PC adjustment logic in exception handlers
> 
>  arch/arm/Makefile                 |   4 +
>  arch/arm/cpu/armv7/start.S        |   5 ++
>  arch/arm/include/asm/u-boot-arm.h |  14 ++--
>  arch/arm/lib/interrupts.c         |  26 +++---
>  arch/arm/lib/relocate.S           |   8 ++
>  arch/arm/lib/vectors.S            | 129 +++++++++++++++++++++++-------
>  arch/arm/mach-bcm283x/Kconfig     |   3 +
>  arch/arm/mach-exynos/Kconfig      |   1 +
>  8 files changed, 139 insertions(+), 51 deletions(-)

This all seems fine, but I don't know enough about the specifics here to
comment on the implementation.  Is there any we we could also test this
via QEMU for example?
Jim Posen Nov. 24, 2021, 7:44 p.m. UTC | #2
I sent a new version of the patch series with a couple of fixes and


instructions for testing with QEMU.

On Tue, Nov 23, 2021 at 10:24 AM Tom Rini <trini@konsulko.com> wrote:

> On Sun, Oct 24, 2021 at 07:58:03PM -0400, Jim Posen wrote:
>
> > Currently, when U-Boot is running in hypervisor mode on ARMv7-A CPUs
> > with virtualization extensions, the exception handling does not work.
> > A couple things need to change which are detailed in my earlier
> > message to the u-boot mailing list with the subject "Exception
> > handling in HYP mode on ARMv7-A".
> >
> > I have verified that this patch series works on the ODroid XU4 and
> > the Raspberry Pi 3B in Aarch32 mode when running in hypervisor mode.
> > One simple way to verify is by running the miscellaneous "exception"
> > command (CMD_EXCEPTION).
> >
> >
> > Jim Posen (5):
> >   Compile for ARMv7-A with virtualization extensions
> >   Hypervisor mode interrupt vector table
> >   Set HVBAR register correctly
> >   Remove dead code
> >   Fix PC adjustment logic in exception handlers
> >
> >  arch/arm/Makefile                 |   4 +
> >  arch/arm/cpu/armv7/start.S        |   5 ++
> >  arch/arm/include/asm/u-boot-arm.h |  14 ++--
> >  arch/arm/lib/interrupts.c         |  26 +++---
> >  arch/arm/lib/relocate.S           |   8 ++
> >  arch/arm/lib/vectors.S            | 129 +++++++++++++++++++++++-------
> >  arch/arm/mach-bcm283x/Kconfig     |   3 +
> >  arch/arm/mach-exynos/Kconfig      |   1 +
> >  8 files changed, 139 insertions(+), 51 deletions(-)
>
> This all seems fine, but I don't know enough about the specifics here to
> comment on the implementation.  Is there any we we could also test this
> via QEMU for example?
>
> --
> Tom
>