* [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).