Message ID | 20210909013818.1191270-5-rananta@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: arm64: selftests: Introduce arch_timer selftest | expand |
Hi Raghu, On Thu, Sep 09, 2021 at 01:38:04AM +0000, Raghavendra Rao Ananta wrote: > With the inclusion of sysreg.h, that brings in system register > encodings, it would be redundant to re-define register encodings > again in processor.h to use it with ARM64_SYS_REG for the KVM > functions such as set_reg() or get_reg(). Hence, add helper macro, > ARM64_SYS_KVM_REG, that converts SYS_* definitions in sysreg.h > into ARM64_SYS_REG definitions. > > Signed-off-by: Raghavendra Rao Ananta <rananta@google.com> > --- > .../selftests/kvm/include/aarch64/processor.h | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/aarch64/processor.h > index bed4ffa70905..ac8b63f8aab7 100644 > --- a/tools/testing/selftests/kvm/include/aarch64/processor.h > +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h > @@ -26,6 +26,20 @@ > > #define ID_AA64DFR0_EL1 3, 0, 0, 5, 0 > > +/* > + * ARM64_SYS_KVM_REG(sys_reg_id): Helper macro to convert > + * SYS_* register definitions in sysreg.h to use in KVM > + * calls such as get_reg() and set_reg(). > + */ > +#define ARM64_SYS_KVM_REG(sys_reg_id) \ nit: KVM_ARM64_SYS_REG() perhaps? Dunno which is more readable. > +({ \ > + ARM64_SYS_REG(sys_reg_Op0(sys_reg_id), \ > + sys_reg_Op1(sys_reg_id), \ > + sys_reg_CRn(sys_reg_id), \ > + sys_reg_CRm(sys_reg_id), \ > + sys_reg_Op2(sys_reg_id)); \ > +}) > + Could you also switch all current users of ARM64_SYS_REG() in the KVM selftests directory in this commit? You can also drop the system register encodings defined in processor.h -- Thanks, Oliver
On Thu, Sep 09, 2021 at 01:38:04AM +0000, Raghavendra Rao Ananta wrote: > With the inclusion of sysreg.h, that brings in system register > encodings, it would be redundant to re-define register encodings > again in processor.h to use it with ARM64_SYS_REG for the KVM > functions such as set_reg() or get_reg(). Hence, add helper macro, > ARM64_SYS_KVM_REG, that converts SYS_* definitions in sysreg.h > into ARM64_SYS_REG definitions. > > Signed-off-by: Raghavendra Rao Ananta <rananta@google.com> > --- > .../selftests/kvm/include/aarch64/processor.h | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/aarch64/processor.h > index bed4ffa70905..ac8b63f8aab7 100644 > --- a/tools/testing/selftests/kvm/include/aarch64/processor.h > +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h > @@ -26,6 +26,20 @@ > > #define ID_AA64DFR0_EL1 3, 0, 0, 5, 0 > > +/* > + * ARM64_SYS_KVM_REG(sys_reg_id): Helper macro to convert > + * SYS_* register definitions in sysreg.h to use in KVM > + * calls such as get_reg() and set_reg(). > + */ > +#define ARM64_SYS_KVM_REG(sys_reg_id) \ > +({ \ > + ARM64_SYS_REG(sys_reg_Op0(sys_reg_id), \ > + sys_reg_Op1(sys_reg_id), \ > + sys_reg_CRn(sys_reg_id), \ > + sys_reg_CRm(sys_reg_id), \ > + sys_reg_Op2(sys_reg_id)); \ > +}) I don't think we need the ({ }), do we? Anyway, Reviewed-by: Andrew Jones <drjones@redhat.com> Thanks, drew > + > /* > * Default MAIR > * index attribute > -- > 2.33.0.153.gba50c8fa24-goog >
On Wed, Sep 8, 2021 at 8:02 PM Oliver Upton <oupton@google.com> wrote: > > Hi Raghu, > > On Thu, Sep 09, 2021 at 01:38:04AM +0000, Raghavendra Rao Ananta wrote: > > With the inclusion of sysreg.h, that brings in system register > > encodings, it would be redundant to re-define register encodings > > again in processor.h to use it with ARM64_SYS_REG for the KVM > > functions such as set_reg() or get_reg(). Hence, add helper macro, > > ARM64_SYS_KVM_REG, that converts SYS_* definitions in sysreg.h > > into ARM64_SYS_REG definitions. > > > > Signed-off-by: Raghavendra Rao Ananta <rananta@google.com> > > --- > > .../selftests/kvm/include/aarch64/processor.h | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/aarch64/processor.h > > index bed4ffa70905..ac8b63f8aab7 100644 > > --- a/tools/testing/selftests/kvm/include/aarch64/processor.h > > +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h > > @@ -26,6 +26,20 @@ > > > > #define ID_AA64DFR0_EL1 3, 0, 0, 5, 0 > > > > +/* > > + * ARM64_SYS_KVM_REG(sys_reg_id): Helper macro to convert > > + * SYS_* register definitions in sysreg.h to use in KVM > > + * calls such as get_reg() and set_reg(). > > + */ > > +#define ARM64_SYS_KVM_REG(sys_reg_id) \ > > nit: KVM_ARM64_SYS_REG() perhaps? Dunno which is more readable. > > > +({ \ > > + ARM64_SYS_REG(sys_reg_Op0(sys_reg_id), \ > > + sys_reg_Op1(sys_reg_id), \ > > + sys_reg_CRn(sys_reg_id), \ > > + sys_reg_CRm(sys_reg_id), \ > > + sys_reg_Op2(sys_reg_id)); \ > > +}) > > + > Heh, I came up with the logic faster than picking a name for the macro. I guess KVM_ARM64_SYS_REG may be more readable, just for the fact that it begins with KVM_. I'll change it. Regards, Raghavendra > Could you also switch all current users of ARM64_SYS_REG() in the KVM > selftests directory in this commit? You can also drop the system > register encodings defined in processor.h > I did that in a separate patch, but I can squash it here to avoid confusion. Regards, Raghavendra > -- > Thanks, > Oliver
On Thu, Sep 9, 2021 at 12:04 AM Andrew Jones <drjones@redhat.com> wrote: > > On Thu, Sep 09, 2021 at 01:38:04AM +0000, Raghavendra Rao Ananta wrote: > > With the inclusion of sysreg.h, that brings in system register > > encodings, it would be redundant to re-define register encodings > > again in processor.h to use it with ARM64_SYS_REG for the KVM > > functions such as set_reg() or get_reg(). Hence, add helper macro, > > ARM64_SYS_KVM_REG, that converts SYS_* definitions in sysreg.h > > into ARM64_SYS_REG definitions. > > > > Signed-off-by: Raghavendra Rao Ananta <rananta@google.com> > > --- > > .../selftests/kvm/include/aarch64/processor.h | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/aarch64/processor.h > > index bed4ffa70905..ac8b63f8aab7 100644 > > --- a/tools/testing/selftests/kvm/include/aarch64/processor.h > > +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h > > @@ -26,6 +26,20 @@ > > > > #define ID_AA64DFR0_EL1 3, 0, 0, 5, 0 > > > > +/* > > + * ARM64_SYS_KVM_REG(sys_reg_id): Helper macro to convert > > + * SYS_* register definitions in sysreg.h to use in KVM > > + * calls such as get_reg() and set_reg(). > > + */ > > +#define ARM64_SYS_KVM_REG(sys_reg_id) \ > > +({ \ > > + ARM64_SYS_REG(sys_reg_Op0(sys_reg_id), \ > > + sys_reg_Op1(sys_reg_id), \ > > + sys_reg_CRn(sys_reg_id), \ > > + sys_reg_CRm(sys_reg_id), \ > > + sys_reg_Op2(sys_reg_id)); \ > > +}) > > > I don't think we need the ({ }), do we? Anyway, > I guess we don't. Must have left it there while I was trying a few things. Will clean it up. Regards, Raghavendra > Reviewed-by: Andrew Jones <drjones@redhat.com> > > Thanks, > drew > > > + > > /* > > * Default MAIR > > * index attribute > > -- > > 2.33.0.153.gba50c8fa24-goog > > >
diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/aarch64/processor.h index bed4ffa70905..ac8b63f8aab7 100644 --- a/tools/testing/selftests/kvm/include/aarch64/processor.h +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h @@ -26,6 +26,20 @@ #define ID_AA64DFR0_EL1 3, 0, 0, 5, 0 +/* + * ARM64_SYS_KVM_REG(sys_reg_id): Helper macro to convert + * SYS_* register definitions in sysreg.h to use in KVM + * calls such as get_reg() and set_reg(). + */ +#define ARM64_SYS_KVM_REG(sys_reg_id) \ +({ \ + ARM64_SYS_REG(sys_reg_Op0(sys_reg_id), \ + sys_reg_Op1(sys_reg_id), \ + sys_reg_CRn(sys_reg_id), \ + sys_reg_CRm(sys_reg_id), \ + sys_reg_Op2(sys_reg_id)); \ +}) + /* * Default MAIR * index attribute
With the inclusion of sysreg.h, that brings in system register encodings, it would be redundant to re-define register encodings again in processor.h to use it with ARM64_SYS_REG for the KVM functions such as set_reg() or get_reg(). Hence, add helper macro, ARM64_SYS_KVM_REG, that converts SYS_* definitions in sysreg.h into ARM64_SYS_REG definitions. Signed-off-by: Raghavendra Rao Ananta <rananta@google.com> --- .../selftests/kvm/include/aarch64/processor.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+)