mbox series

[v4,00/11] s390/kvm: Handle guest-related program interrupts in KVM

Message ID 20241022120601.167009-1-imbrenda@linux.ibm.com (mailing list archive)
Headers show
Series s390/kvm: Handle guest-related program interrupts in KVM | expand

Message

Claudio Imbrenda Oct. 22, 2024, 12:05 p.m. UTC
This patchseries moves the handling of host program interrupts that
happen while a KVM guest is running into KVM itself.

All program interrupts that happen in the host while a KVM guest is
running are due to DAT exceptions. It is cleaner and more maintainable
to have KVM handle those.

As a side effect, some more cleanups is also possible.

Moreover, this series serves as a foundation for an upcoming series
that will further move as much s390 KVM memory managament as possible
into KVM itself, and away from the rest of the kernel.


v3->v4:
* patch 5: move check for primary ASCE from the interrupt handler to
  the handlers of the specific faults where we expect the ASCE
  indication to be meaningful.
* patch 6: remove enabled_gmap from struct kvm_cpu_arch, since it is
  now unused.
* picked up some R-Bs from Heiko

Claudio Imbrenda (8):
  s390/entry: Remove __GMAP_ASCE and use _PIF_GUEST_FAULT again
  s390/kvm: Remove kvm_arch_fault_in_page()
  s390/mm/gmap: Refactor gmap_fault() and add support for pfault
  s390/mm/gmap: Fix __gmap_fault() return code
  s390/mm/fault: Handle guest-related program interrupts in KVM
  s390/kvm: Stop using gmap_{en,dis}able()
  s390/mm/gmap: Remove gmap_{en,dis}able()
  s390: Remove gmap pointer from lowcore

Heiko Carstens (3):
  s390/mm: Simplify get_fault_type()
  s390/mm: Get rid of fault type switch statements
  s390/mm: Convert to LOCK_MM_AND_FIND_VMA

 arch/s390/Kconfig                 |   1 +
 arch/s390/include/asm/gmap.h      |   3 -
 arch/s390/include/asm/kvm_host.h  |   5 +-
 arch/s390/include/asm/lowcore.h   |   3 +-
 arch/s390/include/asm/processor.h |   5 +-
 arch/s390/include/asm/ptrace.h    |   2 +
 arch/s390/kernel/asm-offsets.c    |   3 -
 arch/s390/kernel/entry.S          |  44 ++-----
 arch/s390/kernel/traps.c          |  23 +++-
 arch/s390/kvm/intercept.c         |   4 +-
 arch/s390/kvm/kvm-s390.c          | 142 +++++++++++++++-------
 arch/s390/kvm/kvm-s390.h          |   8 +-
 arch/s390/kvm/vsie.c              |  17 ++-
 arch/s390/mm/fault.c              | 195 +++++-------------------------
 arch/s390/mm/gmap.c               | 151 +++++++++++++++--------
 15 files changed, 281 insertions(+), 325 deletions(-)

Comments

Heiko Carstens Oct. 22, 2024, 2:45 p.m. UTC | #1
On Tue, Oct 22, 2024 at 02:05:50PM +0200, Claudio Imbrenda wrote:
> This patchseries moves the handling of host program interrupts that
> happen while a KVM guest is running into KVM itself.
> 
> All program interrupts that happen in the host while a KVM guest is
> running are due to DAT exceptions. It is cleaner and more maintainable
> to have KVM handle those.
> 
> As a side effect, some more cleanups is also possible.
> 
> Moreover, this series serves as a foundation for an upcoming series
> that will further move as much s390 KVM memory managament as possible
> into KVM itself, and away from the rest of the kernel.
...
> Claudio Imbrenda (8):
>   s390/entry: Remove __GMAP_ASCE and use _PIF_GUEST_FAULT again
>   s390/kvm: Remove kvm_arch_fault_in_page()
>   s390/mm/gmap: Refactor gmap_fault() and add support for pfault
>   s390/mm/gmap: Fix __gmap_fault() return code
>   s390/mm/fault: Handle guest-related program interrupts in KVM
>   s390/kvm: Stop using gmap_{en,dis}able()
>   s390/mm/gmap: Remove gmap_{en,dis}able()
>   s390: Remove gmap pointer from lowcore
> 
> Heiko Carstens (3):
>   s390/mm: Simplify get_fault_type()
>   s390/mm: Get rid of fault type switch statements
>   s390/mm: Convert to LOCK_MM_AND_FIND_VMA
> 
>  arch/s390/Kconfig                 |   1 +
>  arch/s390/include/asm/gmap.h      |   3 -
>  arch/s390/include/asm/kvm_host.h  |   5 +-
>  arch/s390/include/asm/lowcore.h   |   3 +-
>  arch/s390/include/asm/processor.h |   5 +-
>  arch/s390/include/asm/ptrace.h    |   2 +
>  arch/s390/kernel/asm-offsets.c    |   3 -
>  arch/s390/kernel/entry.S          |  44 ++-----
>  arch/s390/kernel/traps.c          |  23 +++-
>  arch/s390/kvm/intercept.c         |   4 +-
>  arch/s390/kvm/kvm-s390.c          | 142 +++++++++++++++-------
>  arch/s390/kvm/kvm-s390.h          |   8 +-
>  arch/s390/kvm/vsie.c              |  17 ++-
>  arch/s390/mm/fault.c              | 195 +++++-------------------------
>  arch/s390/mm/gmap.c               | 151 +++++++++++++++--------
>  15 files changed, 281 insertions(+), 325 deletions(-)

Series applied, thanks!