On 25/07/2025 4:06 pm, Edwin Török wrote:
> diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c
> index 7be79c2d00..713311a1ac 100644
> --- a/xen/arch/x86/cpu/vpmu.c
> +++ b/xen/arch/x86/cpu/vpmu.c
> @@ -160,6 +160,31 @@ static inline struct vcpu *choose_hwdom_vcpu(void)
>      return hardware_domain->vcpu[idx];
>  }
>  
> +static inline void vpmu_convert_regs(struct xen_pmu_regs *r, uint64_t *flags,
> +                                     struct vcpu *sampled,
> +                                     const struct cpu_user_regs *cur_regs) {
> +  r->ip = cur_regs->rip;
> +  r->sp = cur_regs->rsp;
> +  r->flags = cur_regs->rflags;
> +
> +  if (!is_hvm_vcpu(sampled)) {
> +    r->ss = cur_regs->ss;
> +    r->cs = cur_regs->cs;
> +    if (!(sampled->arch.flags & TF_kernel_mode))
> +      *flags |= PMU_SAMPLE_USER;
> +  } else {
> +    struct segment_register seg;
> +
> +    hvm_get_segment_register(sampled, x86_seg_cs, &seg);
> +    r->cs = seg.sel;
> +    hvm_get_segment_register(sampled, x86_seg_ss, &seg);
> +    r->ss = seg.sel;
> +    r->cpl = seg.dpl;
> +    if (!(sampled->arch.hvm.guest_cr[0] & X86_CR0_PE))
> +      *flags |= PMU_SAMPLE_REAL;
> +  }
> +}
> +

This is fine in principle, except that you're changing the style away
from Xen style.

I can fix it on commit, but it's going to collide massively later in the
series.

~Andrew

Reply via email to