KVM: s390: Generalize access to IPTE controls
This patch generalizes access to the IPTE controls, which is a part of SCA. This is to prepare for upcoming introduction of Extended SCA support. Signed-off-by: Eugene (jno) Dvurechenski <jno@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
parent
f7ba1d3426
commit
605145103a
@ -259,7 +259,7 @@ struct aste {
|
|||||||
|
|
||||||
int ipte_lock_held(struct kvm_vcpu *vcpu)
|
int ipte_lock_held(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
union ipte_control *ic = &vcpu->kvm->arch.sca->ipte_control;
|
union ipte_control *ic = kvm_s390_get_ipte_control(vcpu->kvm);
|
||||||
|
|
||||||
if (vcpu->arch.sie_block->eca & 1)
|
if (vcpu->arch.sie_block->eca & 1)
|
||||||
return ic->kh != 0;
|
return ic->kh != 0;
|
||||||
@ -274,7 +274,7 @@ static void ipte_lock_simple(struct kvm_vcpu *vcpu)
|
|||||||
vcpu->kvm->arch.ipte_lock_count++;
|
vcpu->kvm->arch.ipte_lock_count++;
|
||||||
if (vcpu->kvm->arch.ipte_lock_count > 1)
|
if (vcpu->kvm->arch.ipte_lock_count > 1)
|
||||||
goto out;
|
goto out;
|
||||||
ic = &vcpu->kvm->arch.sca->ipte_control;
|
ic = kvm_s390_get_ipte_control(vcpu->kvm);
|
||||||
do {
|
do {
|
||||||
old = READ_ONCE(*ic);
|
old = READ_ONCE(*ic);
|
||||||
while (old.k) {
|
while (old.k) {
|
||||||
@ -296,7 +296,7 @@ static void ipte_unlock_simple(struct kvm_vcpu *vcpu)
|
|||||||
vcpu->kvm->arch.ipte_lock_count--;
|
vcpu->kvm->arch.ipte_lock_count--;
|
||||||
if (vcpu->kvm->arch.ipte_lock_count)
|
if (vcpu->kvm->arch.ipte_lock_count)
|
||||||
goto out;
|
goto out;
|
||||||
ic = &vcpu->kvm->arch.sca->ipte_control;
|
ic = kvm_s390_get_ipte_control(vcpu->kvm);
|
||||||
do {
|
do {
|
||||||
old = READ_ONCE(*ic);
|
old = READ_ONCE(*ic);
|
||||||
new = old;
|
new = old;
|
||||||
@ -311,7 +311,7 @@ static void ipte_lock_siif(struct kvm_vcpu *vcpu)
|
|||||||
{
|
{
|
||||||
union ipte_control old, new, *ic;
|
union ipte_control old, new, *ic;
|
||||||
|
|
||||||
ic = &vcpu->kvm->arch.sca->ipte_control;
|
ic = kvm_s390_get_ipte_control(vcpu->kvm);
|
||||||
do {
|
do {
|
||||||
old = READ_ONCE(*ic);
|
old = READ_ONCE(*ic);
|
||||||
while (old.kg) {
|
while (old.kg) {
|
||||||
@ -328,7 +328,7 @@ static void ipte_unlock_siif(struct kvm_vcpu *vcpu)
|
|||||||
{
|
{
|
||||||
union ipte_control old, new, *ic;
|
union ipte_control old, new, *ic;
|
||||||
|
|
||||||
ic = &vcpu->kvm->arch.sca->ipte_control;
|
ic = kvm_s390_get_ipte_control(vcpu->kvm);
|
||||||
do {
|
do {
|
||||||
old = READ_ONCE(*ic);
|
old = READ_ONCE(*ic);
|
||||||
new = old;
|
new = old;
|
||||||
|
@ -340,4 +340,9 @@ void kvm_s390_clear_bp_data(struct kvm_vcpu *vcpu);
|
|||||||
void kvm_s390_prepare_debug_exit(struct kvm_vcpu *vcpu);
|
void kvm_s390_prepare_debug_exit(struct kvm_vcpu *vcpu);
|
||||||
void kvm_s390_handle_per_event(struct kvm_vcpu *vcpu);
|
void kvm_s390_handle_per_event(struct kvm_vcpu *vcpu);
|
||||||
|
|
||||||
|
/* support for Basic/Extended SCA handling */
|
||||||
|
static inline union ipte_control *kvm_s390_get_ipte_control(struct kvm *kvm)
|
||||||
|
{
|
||||||
|
return &kvm->arch.sca->ipte_control;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user