Skip to content

Commit d9a3a09

Browse files
author
Martin Schwidefsky
committed
s390/kvm: remove dependency on struct save_area definition
Replace the offsets based on the struct area_area with the offset constants from asm-offsets.c based on the struct _lowcore. Signed-off-by: Martin Schwidefsky <[email protected]>
1 parent 019d6be commit d9a3a09

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

arch/s390/kernel/asm-offsets.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ int main(void)
181181
OFFSET(__LC_PSW_SAVE_AREA, _lowcore, psw_save_area);
182182
OFFSET(__LC_PREFIX_SAVE_AREA, _lowcore, prefixreg_save_area);
183183
OFFSET(__LC_FP_CREG_SAVE_AREA, _lowcore, fpt_creg_save_area);
184+
OFFSET(__LC_TOD_PROGREG_SAVE_AREA, _lowcore, tod_progreg_save_area);
184185
OFFSET(__LC_CPU_TIMER_SAVE_AREA, _lowcore, cpu_timer_save_area);
185186
OFFSET(__LC_CLOCK_COMP_SAVE_AREA, _lowcore, clock_comp_save_area);
186187
OFFSET(__LC_AREGS_SAVE_AREA, _lowcore, access_regs_save_area);

arch/s390/kvm/kvm-s390.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2270,37 +2270,37 @@ int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long gpa)
22702270
u64 clkcomp;
22712271
int rc;
22722272

2273+
px = kvm_s390_get_prefix(vcpu);
22732274
if (gpa == KVM_S390_STORE_STATUS_NOADDR) {
22742275
if (write_guest_abs(vcpu, 163, &archmode, 1))
22752276
return -EFAULT;
2276-
gpa = SAVE_AREA_BASE;
2277+
gpa = 0;
22772278
} else if (gpa == KVM_S390_STORE_STATUS_PREFIXED) {
22782279
if (write_guest_real(vcpu, 163, &archmode, 1))
22792280
return -EFAULT;
2280-
gpa = kvm_s390_real_to_abs(vcpu, SAVE_AREA_BASE);
2281-
}
2282-
rc = write_guest_abs(vcpu, gpa + offsetof(struct save_area, fp_regs),
2281+
gpa = px;
2282+
} else
2283+
gpa -= __LC_FPREGS_SAVE_AREA;
2284+
rc = write_guest_abs(vcpu, gpa + __LC_FPREGS_SAVE_AREA,
22832285
vcpu->arch.guest_fpregs.fprs, 128);
2284-
rc |= write_guest_abs(vcpu, gpa + offsetof(struct save_area, gp_regs),
2286+
rc |= write_guest_abs(vcpu, gpa + __LC_GPREGS_SAVE_AREA,
22852287
vcpu->run->s.regs.gprs, 128);
2286-
rc |= write_guest_abs(vcpu, gpa + offsetof(struct save_area, psw),
2288+
rc |= write_guest_abs(vcpu, gpa + __LC_PSW_SAVE_AREA,
22872289
&vcpu->arch.sie_block->gpsw, 16);
2288-
px = kvm_s390_get_prefix(vcpu);
2289-
rc |= write_guest_abs(vcpu, gpa + offsetof(struct save_area, pref_reg),
2290+
rc |= write_guest_abs(vcpu, gpa + __LC_PREFIX_SAVE_AREA,
22902291
&px, 4);
2291-
rc |= write_guest_abs(vcpu,
2292-
gpa + offsetof(struct save_area, fp_ctrl_reg),
2292+
rc |= write_guest_abs(vcpu, gpa + __LC_FP_CREG_SAVE_AREA,
22932293
&vcpu->arch.guest_fpregs.fpc, 4);
2294-
rc |= write_guest_abs(vcpu, gpa + offsetof(struct save_area, tod_reg),
2294+
rc |= write_guest_abs(vcpu, gpa + __LC_TOD_PROGREG_SAVE_AREA,
22952295
&vcpu->arch.sie_block->todpr, 4);
2296-
rc |= write_guest_abs(vcpu, gpa + offsetof(struct save_area, timer),
2296+
rc |= write_guest_abs(vcpu, gpa + __LC_CPU_TIMER_SAVE_AREA,
22972297
&vcpu->arch.sie_block->cputm, 8);
22982298
clkcomp = vcpu->arch.sie_block->ckc >> 8;
2299-
rc |= write_guest_abs(vcpu, gpa + offsetof(struct save_area, clk_cmp),
2299+
rc |= write_guest_abs(vcpu, gpa + __LC_CLOCK_COMP_SAVE_AREA,
23002300
&clkcomp, 8);
2301-
rc |= write_guest_abs(vcpu, gpa + offsetof(struct save_area, acc_regs),
2301+
rc |= write_guest_abs(vcpu, gpa + __LC_AREGS_SAVE_AREA,
23022302
&vcpu->run->s.regs.acrs, 64);
2303-
rc |= write_guest_abs(vcpu, gpa + offsetof(struct save_area, ctrl_regs),
2303+
rc |= write_guest_abs(vcpu, gpa + __LC_CREGS_SAVE_AREA,
23042304
&vcpu->arch.sie_block->gcr, 128);
23052305
return rc ? -EFAULT : 0;
23062306
}

0 commit comments

Comments
 (0)