2019-09-11 02:37:21

by Zenghui Yu

[permalink] [raw]
Subject: [PATCH 2/2] KVM: arm/arm64: Print the EC hex value with its exact width

EC is the bits [31:26] of ESR_ELx on arm64 (HSR on arm). Print the
hex value with its exact width (8).

Signed-off-by: Zenghui Yu <[email protected]>
---
virt/kvm/arm/trace.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/virt/kvm/arm/trace.h b/virt/kvm/arm/trace.h
index 204d210d01c2..022b0a060034 100644
--- a/virt/kvm/arm/trace.h
+++ b/virt/kvm/arm/trace.h
@@ -42,7 +42,7 @@ TRACE_EVENT(kvm_exit,
__entry->vcpu_pc = vcpu_pc;
),

- TP_printk("%s: HSR_EC: 0x%04x (%s), PC: 0x%08lx",
+ TP_printk("%s: HSR_EC: 0x%02x (%s), PC: 0x%08lx",
__print_symbolic(__entry->ret, kvm_arm_exception_type),
__entry->esr_ec,
__print_symbolic(__entry->esr_ec, kvm_arm_exception_class),
--
2.19.1



2019-09-11 08:33:46

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH 2/2] KVM: arm/arm64: Print the EC hex value with its exact width

On Wed, 11 Sep 2019 03:33:36 +0100,
Zenghui Yu <[email protected]> wrote:
>
> EC is the bits [31:26] of ESR_ELx on arm64 (HSR on arm). Print the
> hex value with its exact width (8).
>
> Signed-off-by: Zenghui Yu <[email protected]>
> ---
> virt/kvm/arm/trace.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/virt/kvm/arm/trace.h b/virt/kvm/arm/trace.h
> index 204d210d01c2..022b0a060034 100644
> --- a/virt/kvm/arm/trace.h
> +++ b/virt/kvm/arm/trace.h
> @@ -42,7 +42,7 @@ TRACE_EVENT(kvm_exit,
> __entry->vcpu_pc = vcpu_pc;
> ),
>
> - TP_printk("%s: HSR_EC: 0x%04x (%s), PC: 0x%08lx",
> + TP_printk("%s: HSR_EC: 0x%02x (%s), PC: 0x%08lx",
> __print_symbolic(__entry->ret, kvm_arm_exception_type),
> __entry->esr_ec,
> __print_symbolic(__entry->esr_ec, kvm_arm_exception_class),

Although you're right that 8 bits ought to be enough, this is a change
to the output of the tracepoint, which userspace could (does?) parse.
I'm thus reluctant to change anything there, knowing that we don't
lose any information, and just print two extra zeroes.

Am I missing anything?

Thanks,

M.

--
Jazz is not dead, it just smells funny.

2019-09-11 09:23:53

by Zenghui Yu

[permalink] [raw]
Subject: Re: [PATCH 2/2] KVM: arm/arm64: Print the EC hex value with its exact width

Hi Marc,

On 2019/9/11 16:31, Marc Zyngier wrote:
> On Wed, 11 Sep 2019 03:33:36 +0100,
> Zenghui Yu <[email protected]> wrote:
>>
>> EC is the bits [31:26] of ESR_ELx on arm64 (HSR on arm). Print the
>> hex value with its exact width (8).
>>
>> Signed-off-by: Zenghui Yu <[email protected]>
>> ---
>> virt/kvm/arm/trace.h | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/virt/kvm/arm/trace.h b/virt/kvm/arm/trace.h
>> index 204d210d01c2..022b0a060034 100644
>> --- a/virt/kvm/arm/trace.h
>> +++ b/virt/kvm/arm/trace.h
>> @@ -42,7 +42,7 @@ TRACE_EVENT(kvm_exit,
>> __entry->vcpu_pc = vcpu_pc;
>> ),
>>
>> - TP_printk("%s: HSR_EC: 0x%04x (%s), PC: 0x%08lx",
>> + TP_printk("%s: HSR_EC: 0x%02x (%s), PC: 0x%08lx",
>> __print_symbolic(__entry->ret, kvm_arm_exception_type),
>> __entry->esr_ec,
>> __print_symbolic(__entry->esr_ec, kvm_arm_exception_class),
>
> Although you're right that 8 bits ought to be enough, this is a change
> to the output of the tracepoint, which userspace could (does?) parse.

Well-written userspace tools should only parse the low 8 bits (if they
do parse). But even if the high bits are parsed, they're always 0.
So I don't think this change will have a bad impact on userspace.

> I'm thus reluctant to change anything there, knowing that we don't
> lose any information, and just print two extra zeroes.

Anyway this is not a fix, feel free to ignore it if you're worried about
that there might be some issues ;)

> Am I missing anything?

No.


Thanks,
zenghui

2019-09-11 15:38:47

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH 2/2] KVM: arm/arm64: Print the EC hex value with its exact width

On Wed, 11 Sep 2019 10:19:05 +0100,
Zenghui Yu <[email protected]> wrote:
>
> Hi Marc,
>
> On 2019/9/11 16:31, Marc Zyngier wrote:
> > On Wed, 11 Sep 2019 03:33:36 +0100,
> > Zenghui Yu <[email protected]> wrote:
> >>
> >> EC is the bits [31:26] of ESR_ELx on arm64 (HSR on arm). Print the
> >> hex value with its exact width (8).
> >>
> >> Signed-off-by: Zenghui Yu <[email protected]>
> >> ---
> >> virt/kvm/arm/trace.h | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/virt/kvm/arm/trace.h b/virt/kvm/arm/trace.h
> >> index 204d210d01c2..022b0a060034 100644
> >> --- a/virt/kvm/arm/trace.h
> >> +++ b/virt/kvm/arm/trace.h
> >> @@ -42,7 +42,7 @@ TRACE_EVENT(kvm_exit,
> >> __entry->vcpu_pc = vcpu_pc;
> >> ),
> >> - TP_printk("%s: HSR_EC: 0x%04x (%s), PC: 0x%08lx",
> >> + TP_printk("%s: HSR_EC: 0x%02x (%s), PC: 0x%08lx",
> >> __print_symbolic(__entry->ret, kvm_arm_exception_type),
> >> __entry->esr_ec,
> >> __print_symbolic(__entry->esr_ec, kvm_arm_exception_class),
> >
> > Although you're right that 8 bits ought to be enough, this is a change
> > to the output of the tracepoint, which userspace could (does?) parse.
>
> Well-written userspace tools should only parse the low 8 bits (if they
> do parse). But even if the high bits are parsed, they're always 0.
> So I don't think this change will have a bad impact on userspace.

The problem is that we don't only cater for well written SW. We also
support the broken stuff, unfortunately.

Thanks,

M.

--
Jazz is not dead, it just smells funny.