linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable
@ 2024-06-17  7:51 Shaoqin Huang
  2024-06-17  7:51 ` [PATCH v1 1/2] KVM: arm64: Allow BT field " Shaoqin Huang
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Shaoqin Huang @ 2024-06-17  7:51 UTC (permalink / raw)
  To: Oliver Upton, Marc Zyngier, kvmarm
  Cc: Shaoqin Huang, Catalin Marinas, James Morse, kvm,
	linux-arm-kernel, linux-kernel, linux-kselftest, Paolo Bonzini,
	Shuah Khan, Suzuki K Poulose, Will Deacon, Zenghui Yu

In this patch series, we try to make more register fields writable like
ID_AA64PFR1_EL1.BT since this can benifit the migration between some of the
machines which have different BT values.

Changelog:
----------
RFCv1 -> v1:
  * Fix the compilation error.
  * Delete the machine specific information and make the description more
    generable.

RFCv1: https://lore.kernel.org/all/20240612023553.127813-1-shahuang@redhat.com/

Shaoqin Huang (2):
  KVM: arm64: Allow BT field in ID_AA64PFR1_EL1 writable
  KVM: selftests: aarch64: Add writable test for ID_AA64PFR1_EL1

 arch/arm64/kvm/sys_regs.c                         | 2 +-
 tools/testing/selftests/kvm/aarch64/set_id_regs.c | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

-- 
2.40.1



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v1 1/2] KVM: arm64: Allow BT field in ID_AA64PFR1_EL1 writable
  2024-06-17  7:51 [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Shaoqin Huang
@ 2024-06-17  7:51 ` Shaoqin Huang
  2024-06-17  7:51 ` [PATCH v1 2/2] KVM: selftests: aarch64: Add writable test for ID_AA64PFR1_EL1 Shaoqin Huang
  2024-06-17 17:40 ` [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Oliver Upton
  2 siblings, 0 replies; 5+ messages in thread
From: Shaoqin Huang @ 2024-06-17  7:51 UTC (permalink / raw)
  To: Oliver Upton, Marc Zyngier, kvmarm
  Cc: Shaoqin Huang, James Morse, Suzuki K Poulose, Zenghui Yu,
	Catalin Marinas, Will Deacon, linux-arm-kernel, linux-kernel

When migrating between some of the ARM machines, the BT field value in
ID_AA64PFR1_EL1 register is different and not writable. This causes
migration failed.

The BT field means Branch Target Identification mechanism support in
AArch64 state. The value 0 means BT is not implemented, the value 1
means BT is implemented.

Here is an example of the migration if the BT value is different:
* On Migration Src, the BT value is 0.
* On Migration Dst, the BT value is 1.

As it defined in the ftr_id_aa64dfr0, the samller value is safe. So if
we make the BT field writable, on the Migration Dst the BT field will
be overrided with value 0.
---
 arch/arm64/kvm/sys_regs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index c9f4f387155f..958e4d251535 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -2292,7 +2292,7 @@ static const struct sys_reg_desc sys_reg_descs[] = {
 		   ID_AA64PFR0_EL1_GIC |
 		   ID_AA64PFR0_EL1_AdvSIMD |
 		   ID_AA64PFR0_EL1_FP), },
-	ID_SANITISED(ID_AA64PFR1_EL1),
+	ID_WRITABLE(ID_AA64PFR1_EL1, ID_AA64PFR1_EL1_BT),
 	ID_UNALLOCATED(4,2),
 	ID_UNALLOCATED(4,3),
 	ID_WRITABLE(ID_AA64ZFR0_EL1, ~ID_AA64ZFR0_EL1_RES0),
-- 
2.40.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v1 2/2] KVM: selftests: aarch64: Add writable test for ID_AA64PFR1_EL1
  2024-06-17  7:51 [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Shaoqin Huang
  2024-06-17  7:51 ` [PATCH v1 1/2] KVM: arm64: Allow BT field " Shaoqin Huang
@ 2024-06-17  7:51 ` Shaoqin Huang
  2024-06-17 17:40 ` [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Oliver Upton
  2 siblings, 0 replies; 5+ messages in thread
From: Shaoqin Huang @ 2024-06-17  7:51 UTC (permalink / raw)
  To: Oliver Upton, Marc Zyngier, kvmarm
  Cc: Shaoqin Huang, James Morse, Suzuki K Poulose, Zenghui Yu,
	Paolo Bonzini, Shuah Khan, linux-arm-kernel, kvm, linux-kselftest,
	linux-kernel

Add test for the BT field in the ID_AA64PFR1_EL1 register.

Signed-off-by: Shaoqin Huang <shahuang@redhat.com>
---
 tools/testing/selftests/kvm/aarch64/set_id_regs.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tools/testing/selftests/kvm/aarch64/set_id_regs.c b/tools/testing/selftests/kvm/aarch64/set_id_regs.c
index 16e2338686c1..5381b8ec5562 100644
--- a/tools/testing/selftests/kvm/aarch64/set_id_regs.c
+++ b/tools/testing/selftests/kvm/aarch64/set_id_regs.c
@@ -133,6 +133,11 @@ static const struct reg_ftr_bits ftr_id_aa64pfr0_el1[] = {
 	REG_FTR_END,
 };
 
+static const struct reg_ftr_bits ftr_id_aa64pfr1_el1[] = {
+	REG_FTR_BITS(FTR_LOWER_SAFE, ID_AA64PFR1_EL1, BT, 0),
+	REG_FTR_END,
+};
+
 static const struct reg_ftr_bits ftr_id_aa64mmfr0_el1[] = {
 	REG_FTR_BITS(FTR_LOWER_SAFE, ID_AA64MMFR0_EL1, ECV, 0),
 	REG_FTR_BITS(FTR_LOWER_SAFE, ID_AA64MMFR0_EL1, EXS, 0),
@@ -199,6 +204,7 @@ static struct test_feature_reg test_regs[] = {
 	TEST_REG(SYS_ID_AA64ISAR1_EL1, ftr_id_aa64isar1_el1),
 	TEST_REG(SYS_ID_AA64ISAR2_EL1, ftr_id_aa64isar2_el1),
 	TEST_REG(SYS_ID_AA64PFR0_EL1, ftr_id_aa64pfr0_el1),
+	TEST_REG(SYS_ID_AA64PFR1_EL1, ftr_id_aa64pfr1_el1),
 	TEST_REG(SYS_ID_AA64MMFR0_EL1, ftr_id_aa64mmfr0_el1),
 	TEST_REG(SYS_ID_AA64MMFR1_EL1, ftr_id_aa64mmfr1_el1),
 	TEST_REG(SYS_ID_AA64MMFR2_EL1, ftr_id_aa64mmfr2_el1),
-- 
2.40.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable
  2024-06-17  7:51 [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Shaoqin Huang
  2024-06-17  7:51 ` [PATCH v1 1/2] KVM: arm64: Allow BT field " Shaoqin Huang
  2024-06-17  7:51 ` [PATCH v1 2/2] KVM: selftests: aarch64: Add writable test for ID_AA64PFR1_EL1 Shaoqin Huang
@ 2024-06-17 17:40 ` Oliver Upton
  2024-06-18  5:55   ` Shaoqin Huang
  2 siblings, 1 reply; 5+ messages in thread
From: Oliver Upton @ 2024-06-17 17:40 UTC (permalink / raw)
  To: Shaoqin Huang
  Cc: Marc Zyngier, kvmarm, Catalin Marinas, James Morse, kvm,
	linux-arm-kernel, linux-kernel, linux-kselftest, Paolo Bonzini,
	Shuah Khan, Suzuki K Poulose, Will Deacon, Zenghui Yu

On Mon, Jun 17, 2024 at 03:51:29AM -0400, Shaoqin Huang wrote:
> In this patch series, we try to make more register fields writable like
> ID_AA64PFR1_EL1.BT since this can benifit the migration between some of the
> machines which have different BT values.
> 
> Changelog:
> ----------
> RFCv1 -> v1:
>   * Fix the compilation error.
>   * Delete the machine specific information and make the description more
>     generable.

Can you please address Marc's feedback?

If we only make things writable a field at a time it's going to take
forever to catch up w/ the architecture.

https://lore.kernel.org/kvmarm/86zfrpjkt6.wl-maz@kernel.org/

-- 
Thanks,
Oliver


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable
  2024-06-17 17:40 ` [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Oliver Upton
@ 2024-06-18  5:55   ` Shaoqin Huang
  0 siblings, 0 replies; 5+ messages in thread
From: Shaoqin Huang @ 2024-06-18  5:55 UTC (permalink / raw)
  To: Oliver Upton
  Cc: Marc Zyngier, kvmarm, Catalin Marinas, James Morse, kvm,
	linux-arm-kernel, linux-kernel, linux-kselftest, Paolo Bonzini,
	Shuah Khan, Suzuki K Poulose, Will Deacon, Zenghui Yu

Hi Oliver,

On 6/18/24 01:40, Oliver Upton wrote:
> On Mon, Jun 17, 2024 at 03:51:29AM -0400, Shaoqin Huang wrote:
>> In this patch series, we try to make more register fields writable like
>> ID_AA64PFR1_EL1.BT since this can benifit the migration between some of the
>> machines which have different BT values.
>>
>> Changelog:
>> ----------
>> RFCv1 -> v1:
>>    * Fix the compilation error.
>>    * Delete the machine specific information and make the description more
>>      generable.
> 
> Can you please address Marc's feedback?
> 
> If we only make things writable a field at a time it's going to take
> forever to catch up w/ the architecture.
> 
> https://lore.kernel.org/kvmarm/86zfrpjkt6.wl-maz@kernel.org/

Ok. I will update the patch series again with tackling the full register.

Thanks,
Shaoqin

> 

-- 
Shaoqin



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-06-18  5:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-17  7:51 [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Shaoqin Huang
2024-06-17  7:51 ` [PATCH v1 1/2] KVM: arm64: Allow BT field " Shaoqin Huang
2024-06-17  7:51 ` [PATCH v1 2/2] KVM: selftests: aarch64: Add writable test for ID_AA64PFR1_EL1 Shaoqin Huang
2024-06-17 17:40 ` [PATCH v1 0/2] KVM: arm64: Making BT Field in ID_AA64PFR1_EL1 writable Oliver Upton
2024-06-18  5:55   ` Shaoqin Huang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).