#define ICPT_INT_ENABLE        0x64
 #define ICPT_PV_INSTR  0x68
 #define ICPT_PV_NOTIFY 0x6c
+#define ICPT_PV_PREF   0x70
        __u8    icptcode;               /* 0x0050 */
        __u8    icptstatus;             /* 0x0051 */
        __u16   ihcpu;                  /* 0x0052 */
 
        return kvm_s390_inject_program_int(vcpu, PGM_OPERATION);
 }
 
+static int handle_pv_spx(struct kvm_vcpu *vcpu)
+{
+       u32 pref = *(u32 *)vcpu->arch.sie_block->sidad;
+
+       kvm_s390_set_prefix(vcpu, pref);
+       trace_kvm_s390_handle_prefix(vcpu, 1, pref);
+       return 0;
+}
+
 static int handle_pv_sclp(struct kvm_vcpu *vcpu)
 {
        struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int;
 
 static int handle_pv_notification(struct kvm_vcpu *vcpu)
 {
+       if (vcpu->arch.sie_block->ipa == 0xb210)
+               return handle_pv_spx(vcpu);
        if (vcpu->arch.sie_block->ipa == 0xb220)
                return handle_pv_sclp(vcpu);
 
        case ICPT_PV_NOTIFY:
                rc = handle_pv_notification(vcpu);
                break;
+       case ICPT_PV_PREF:
+               rc = 0;
+               gmap_convert_to_secure(vcpu->arch.gmap,
+                                      kvm_s390_get_prefix(vcpu));
+               gmap_convert_to_secure(vcpu->arch.gmap,
+                                      kvm_s390_get_prefix(vcpu) + PAGE_SIZE);
+               break;
        default:
                return -EOPNOTSUPP;
        }