Commit 6b802031 authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

Merge tag 'kvm-s390-next-7.1-1' of...

Merge tag 'kvm-s390-next-7.1-1' of https://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD

- ESA nesting support
- 4k memslots
- LPSW/E fix
parents 01f217fa 9b8e8aad
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -9438,6 +9438,14 @@ KVM exits with the register state of either the L1 or L2 guest
depending on which executed at the time of an exit. Userspace must
take care to differentiate between these cases.

8.47 KVM_CAP_S390_VSIE_ESAMODE
------------------------------

:Architectures: s390

The presence of this capability indicates that the nested KVM guest can
start in ESA mode.

9. Known KVM API problems
=========================

+1 −0
Original line number Diff line number Diff line
@@ -656,6 +656,7 @@ struct kvm_arch {
	int user_stsi;
	int user_instr0;
	int user_operexec;
	int allow_vsie_esamode;
	struct s390_io_adapter *adapters[MAX_S390_IO_ADAPTERS];
	wait_queue_head_t ipte_wq;
	int ipte_lock_count;
+1 −2
Original line number Diff line number Diff line
@@ -137,8 +137,7 @@ struct mcck_volatile_info {
struct kvm_s390_sie_block {
	atomic_t cpuflags;		/* 0x0000 */
	__u32 : 1;			/* 0x0004 */
	__u32 prefix : 18;
	__u32 : 1;
	__u32 prefix : 19;
	__u32 ibc : 12;
	__u8	reserved08[4];		/* 0x0008 */
#define PROG_IN_SIE (1<<0)
+5 −0
Original line number Diff line number Diff line
@@ -104,6 +104,11 @@ union pte {
	} tok;
};

#define _SEGMENT_FR_MASK	(_SEGMENT_MASK >> PAGE_SHIFT)
#define _REGION3_FR_MASK	(_REGION3_MASK >> PAGE_SHIFT)
#define _PAGES_PER_SEGMENT	_PAGE_ENTRIES
#define _PAGES_PER_REGION3	(_PAGES_PER_SEGMENT * _CRST_ENTRIES)

/* Soft dirty, needed as macro for atomic operations on ptes */
#define _PAGE_SD 0x002

+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ int kvm_s390_faultin_gfn(struct kvm_vcpu *vcpu, struct kvm *kvm, struct guest_fa
		scoped_guard(read_lock, &kvm->mmu_lock) {
			if (!mmu_invalidate_retry_gfn(kvm, inv_seq, f->gfn)) {
				f->valid = true;
				rc = gmap_link(mc, kvm->arch.gmap, f);
				rc = gmap_link(mc, kvm->arch.gmap, f, slot);
				kvm_release_faultin_page(kvm, f->page, !!rc, f->write_attempt);
				f->page = NULL;
			}
Loading