Skip to content

Commit cbd7175

Browse files
wei-w-wangbonzini
authored andcommitted
KVM: x86/pmu: Tweak kvm_pmu_get_msr to pass 'struct msr_data' in
Change kvm_pmu_get_msr() to get the msr_data struct, as the host_initiated field from the struct could be used by get_msr. This also makes this API consistent with kvm_pmu_set_msr. No functional changes. Signed-off-by: Wei Wang <[email protected]> Message-Id: <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 72de5fa commit cbd7175

File tree

5 files changed

+21
-17
lines changed

5 files changed

+21
-17
lines changed

arch/x86/kvm/pmu.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -397,9 +397,9 @@ static void kvm_pmu_mark_pmc_in_use(struct kvm_vcpu *vcpu, u32 msr)
397397
__set_bit(pmc->idx, pmu->pmc_in_use);
398398
}
399399

400-
int kvm_pmu_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *data)
400+
int kvm_pmu_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
401401
{
402-
return kvm_x86_ops.pmu_ops->get_msr(vcpu, msr, data);
402+
return kvm_x86_ops.pmu_ops->get_msr(vcpu, msr_info);
403403
}
404404

405405
int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)

arch/x86/kvm/pmu.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ struct kvm_pmu_ops {
3232
struct kvm_pmc *(*msr_idx_to_pmc)(struct kvm_vcpu *vcpu, u32 msr);
3333
int (*is_valid_rdpmc_ecx)(struct kvm_vcpu *vcpu, unsigned int idx);
3434
bool (*is_valid_msr)(struct kvm_vcpu *vcpu, u32 msr);
35-
int (*get_msr)(struct kvm_vcpu *vcpu, u32 msr, u64 *data);
35+
int (*get_msr)(struct kvm_vcpu *vcpu, struct msr_data *msr_info);
3636
int (*set_msr)(struct kvm_vcpu *vcpu, struct msr_data *msr_info);
3737
void (*refresh)(struct kvm_vcpu *vcpu);
3838
void (*init)(struct kvm_vcpu *vcpu);
@@ -147,7 +147,7 @@ void kvm_pmu_handle_event(struct kvm_vcpu *vcpu);
147147
int kvm_pmu_rdpmc(struct kvm_vcpu *vcpu, unsigned pmc, u64 *data);
148148
int kvm_pmu_is_valid_rdpmc_ecx(struct kvm_vcpu *vcpu, unsigned int idx);
149149
bool kvm_pmu_is_valid_msr(struct kvm_vcpu *vcpu, u32 msr);
150-
int kvm_pmu_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *data);
150+
int kvm_pmu_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info);
151151
int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info);
152152
void kvm_pmu_refresh(struct kvm_vcpu *vcpu);
153153
void kvm_pmu_reset(struct kvm_vcpu *vcpu);

arch/x86/kvm/svm/pmu.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,21 +215,22 @@ static struct kvm_pmc *amd_msr_idx_to_pmc(struct kvm_vcpu *vcpu, u32 msr)
215215
return pmc;
216216
}
217217

218-
static int amd_pmu_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *data)
218+
static int amd_pmu_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
219219
{
220220
struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
221221
struct kvm_pmc *pmc;
222+
u32 msr = msr_info->index;
222223

223224
/* MSR_PERFCTRn */
224225
pmc = get_gp_pmc_amd(pmu, msr, PMU_TYPE_COUNTER);
225226
if (pmc) {
226-
*data = pmc_read_counter(pmc);
227+
msr_info->data = pmc_read_counter(pmc);
227228
return 0;
228229
}
229230
/* MSR_EVNTSELn */
230231
pmc = get_gp_pmc_amd(pmu, msr, PMU_TYPE_EVNTSEL);
231232
if (pmc) {
232-
*data = pmc->eventsel;
233+
msr_info->data = pmc->eventsel;
233234
return 0;
234235
}
235236

arch/x86/kvm/vmx/pmu_intel.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -184,35 +184,38 @@ static struct kvm_pmc *intel_msr_idx_to_pmc(struct kvm_vcpu *vcpu, u32 msr)
184184
return pmc;
185185
}
186186

187-
static int intel_pmu_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *data)
187+
static int intel_pmu_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
188188
{
189189
struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
190190
struct kvm_pmc *pmc;
191+
u32 msr = msr_info->index;
191192

192193
switch (msr) {
193194
case MSR_CORE_PERF_FIXED_CTR_CTRL:
194-
*data = pmu->fixed_ctr_ctrl;
195+
msr_info->data = pmu->fixed_ctr_ctrl;
195196
return 0;
196197
case MSR_CORE_PERF_GLOBAL_STATUS:
197-
*data = pmu->global_status;
198+
msr_info->data = pmu->global_status;
198199
return 0;
199200
case MSR_CORE_PERF_GLOBAL_CTRL:
200-
*data = pmu->global_ctrl;
201+
msr_info->data = pmu->global_ctrl;
201202
return 0;
202203
case MSR_CORE_PERF_GLOBAL_OVF_CTRL:
203-
*data = pmu->global_ovf_ctrl;
204+
msr_info->data = pmu->global_ovf_ctrl;
204205
return 0;
205206
default:
206207
if ((pmc = get_gp_pmc(pmu, msr, MSR_IA32_PERFCTR0))) {
207208
u64 val = pmc_read_counter(pmc);
208-
*data = val & pmu->counter_bitmask[KVM_PMC_GP];
209+
msr_info->data =
210+
val & pmu->counter_bitmask[KVM_PMC_GP];
209211
return 0;
210212
} else if ((pmc = get_fixed_pmc(pmu, msr))) {
211213
u64 val = pmc_read_counter(pmc);
212-
*data = val & pmu->counter_bitmask[KVM_PMC_FIXED];
214+
msr_info->data =
215+
val & pmu->counter_bitmask[KVM_PMC_FIXED];
213216
return 0;
214217
} else if ((pmc = get_gp_pmc(pmu, msr, MSR_P6_EVNTSEL0))) {
215-
*data = pmc->eventsel;
218+
msr_info->data = pmc->eventsel;
216219
return 0;
217220
}
218221
}

arch/x86/kvm/x86.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3148,7 +3148,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
31483148
case MSR_P6_PERFCTR0 ... MSR_P6_PERFCTR1:
31493149
case MSR_P6_EVNTSEL0 ... MSR_P6_EVNTSEL1:
31503150
if (kvm_pmu_is_valid_msr(vcpu, msr_info->index))
3151-
return kvm_pmu_get_msr(vcpu, msr_info->index, &msr_info->data);
3151+
return kvm_pmu_get_msr(vcpu, msr_info);
31523152
msr_info->data = 0;
31533153
break;
31543154
case MSR_IA32_UCODE_REV:
@@ -3316,7 +3316,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
33163316
break;
33173317
default:
33183318
if (kvm_pmu_is_valid_msr(vcpu, msr_info->index))
3319-
return kvm_pmu_get_msr(vcpu, msr_info->index, &msr_info->data);
3319+
return kvm_pmu_get_msr(vcpu, msr_info);
33203320
if (!ignore_msrs) {
33213321
vcpu_debug_ratelimited(vcpu, "unhandled rdmsr: 0x%x\n",
33223322
msr_info->index);

0 commit comments

Comments
 (0)