* [PATCH v4 1/2] target/i386: add support for LAM in CPUID enumeration
2024-01-12 6:00 [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
@ 2024-01-12 6:00 ` Binbin Wu
2024-02-23 3:12 ` Zhao Liu
2024-01-12 6:00 ` [PATCH v4 2/2] target/i386: add control bits support for LAM Binbin Wu
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Binbin Wu @ 2024-01-12 6:00 UTC (permalink / raw)
To: qemu-devel, kvm; +Cc: pbonzini, xiaoyao.li, chao.gao, robert.hu, binbin.wu
From: Robert Hoo <robert.hu@linux.intel.com>
Linear Address Masking (LAM) is a new Intel CPU feature, which allows
software to use of the untranslated address bits for metadata.
The bit definition:
CPUID.(EAX=7,ECX=1):EAX[26]
Add CPUID definition for LAM.
Note LAM feature is not supported for TCG of target-i386, LAM CPIUD bit
will not be added to TCG_7_1_EAX_FEATURES.
More info can be found in Intel ISE Chapter "LINEAR ADDRESS MASKING(LAM)"
https://cdrdv2.intel.com/v1/dl/getContent/671368
Signed-off-by: Robert Hoo <robert.hu@linux.intel.com>
Co-developed-by: Binbin Wu <binbin.wu@linux.intel.com>
Signed-off-by: Binbin Wu <binbin.wu@linux.intel.com>
Tested-by: Xuelian Guo <xuelian.guo@intel.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
target/i386/cpu.c | 2 +-
target/i386/cpu.h | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 2524881ce2..fc862dfeb1 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -967,7 +967,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
"fsrc", NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, "amx-fp16", NULL, "avx-ifma",
- NULL, NULL, NULL, NULL,
+ NULL, NULL, "lam", NULL,
NULL, NULL, NULL, NULL,
},
.cpuid = {
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 7f0786e8b9..18ea755644 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -925,6 +925,8 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
#define CPUID_7_1_EAX_AMX_FP16 (1U << 21)
/* Support for VPMADD52[H,L]UQ */
#define CPUID_7_1_EAX_AVX_IFMA (1U << 23)
+/* Linear Address Masking */
+#define CPUID_7_1_EAX_LAM (1U << 26)
/* Support for VPDPB[SU,UU,SS]D[,S] */
#define CPUID_7_1_EDX_AVX_VNNI_INT8 (1U << 4)
--
2.25.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v4 1/2] target/i386: add support for LAM in CPUID enumeration
2024-01-12 6:00 ` [PATCH v4 1/2] target/i386: add support for LAM in CPUID enumeration Binbin Wu
@ 2024-02-23 3:12 ` Zhao Liu
0 siblings, 0 replies; 11+ messages in thread
From: Zhao Liu @ 2024-02-23 3:12 UTC (permalink / raw)
To: Binbin Wu; +Cc: qemu-devel, kvm, pbonzini, xiaoyao.li, chao.gao, robert.hu
On Fri, Jan 12, 2024 at 02:00:41PM +0800, Binbin Wu wrote:
> Date: Fri, 12 Jan 2024 14:00:41 +0800
> From: Binbin Wu <binbin.wu@linux.intel.com>
> Subject: [PATCH v4 1/2] target/i386: add support for LAM in CPUID
> enumeration
> X-Mailer: git-send-email 2.25.1
>
> From: Robert Hoo <robert.hu@linux.intel.com>
>
> Linear Address Masking (LAM) is a new Intel CPU feature, which allows
> software to use of the untranslated address bits for metadata.
>
> The bit definition:
> CPUID.(EAX=7,ECX=1):EAX[26]
>
> Add CPUID definition for LAM.
>
> Note LAM feature is not supported for TCG of target-i386, LAM CPIUD bit
> will not be added to TCG_7_1_EAX_FEATURES.
>
> More info can be found in Intel ISE Chapter "LINEAR ADDRESS MASKING(LAM)"
> https://cdrdv2.intel.com/v1/dl/getContent/671368
>
> Signed-off-by: Robert Hoo <robert.hu@linux.intel.com>
> Co-developed-by: Binbin Wu <binbin.wu@linux.intel.com>
> Signed-off-by: Binbin Wu <binbin.wu@linux.intel.com>
> Tested-by: Xuelian Guo <xuelian.guo@intel.com>
> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
> target/i386/cpu.c | 2 +-
> target/i386/cpu.h | 2 ++
> 2 files changed, 3 insertions(+), 1 deletion(-)
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
>
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 2524881ce2..fc862dfeb1 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -967,7 +967,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
> "fsrc", NULL, NULL, NULL,
> NULL, NULL, NULL, NULL,
> NULL, "amx-fp16", NULL, "avx-ifma",
> - NULL, NULL, NULL, NULL,
> + NULL, NULL, "lam", NULL,
> NULL, NULL, NULL, NULL,
> },
> .cpuid = {
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index 7f0786e8b9..18ea755644 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -925,6 +925,8 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
> #define CPUID_7_1_EAX_AMX_FP16 (1U << 21)
> /* Support for VPMADD52[H,L]UQ */
> #define CPUID_7_1_EAX_AVX_IFMA (1U << 23)
> +/* Linear Address Masking */
> +#define CPUID_7_1_EAX_LAM (1U << 26)
>
> /* Support for VPDPB[SU,UU,SS]D[,S] */
> #define CPUID_7_1_EDX_AVX_VNNI_INT8 (1U << 4)
> --
> 2.25.1
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4 2/2] target/i386: add control bits support for LAM
2024-01-12 6:00 [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
2024-01-12 6:00 ` [PATCH v4 1/2] target/i386: add support for LAM in CPUID enumeration Binbin Wu
@ 2024-01-12 6:00 ` Binbin Wu
2024-01-14 12:09 ` Xiaoyao Li
2024-02-23 3:35 ` Zhao Liu
2024-01-22 8:55 ` [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
` (2 subsequent siblings)
4 siblings, 2 replies; 11+ messages in thread
From: Binbin Wu @ 2024-01-12 6:00 UTC (permalink / raw)
To: qemu-devel, kvm; +Cc: pbonzini, xiaoyao.li, chao.gao, robert.hu, binbin.wu
LAM uses CR3[61] and CR3[62] to configure/enable LAM on user pointers.
LAM uses CR4[28] to configure/enable LAM on supervisor pointers.
For CR3 LAM bits, no additional handling needed:
- TCG
LAM is not supported for TCG of target-i386. helper_write_crN() and
helper_vmrun() check max physical address bits before calling
cpu_x86_update_cr3(), no change needed, i.e. CR3 LAM bits are not allowed
to be set in TCG.
- gdbstub
x86_cpu_gdb_write_register() will call cpu_x86_update_cr3() to update cr3.
Allow gdb to set the LAM bit(s) to CR3, if vcpu doesn't support LAM,
KVM_SET_SREGS will fail as other reserved bits.
For CR4 LAM bit, its reservation depends on vcpu supporting LAM feature or
not.
- TCG
LAM is not supported for TCG of target-i386. helper_write_crN() and
helper_vmrun() check CR4 reserved bit before calling cpu_x86_update_cr4(),
i.e. CR4 LAM bit is not allowed to be set in TCG.
- gdbstub
x86_cpu_gdb_write_register() will call cpu_x86_update_cr4() to update cr4.
Mask out LAM bit on CR4 if vcpu doesn't support LAM.
- x86_cpu_reset_hold() doesn't need special handling.
Signed-off-by: Binbin Wu <binbin.wu@linux.intel.com>
Tested-by: Xuelian Guo <xuelian.guo@intel.com>
---
target/i386/cpu.h | 7 ++++++-
target/i386/helper.c | 4 ++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 18ea755644..598a3fa140 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -261,6 +261,7 @@ typedef enum X86Seg {
#define CR4_SMAP_MASK (1U << 21)
#define CR4_PKE_MASK (1U << 22)
#define CR4_PKS_MASK (1U << 24)
+#define CR4_LAM_SUP_MASK (1U << 28)
#define CR4_RESERVED_MASK \
(~(target_ulong)(CR4_VME_MASK | CR4_PVI_MASK | CR4_TSD_MASK \
@@ -269,7 +270,8 @@ typedef enum X86Seg {
| CR4_OSFXSR_MASK | CR4_OSXMMEXCPT_MASK | CR4_UMIP_MASK \
| CR4_LA57_MASK \
| CR4_FSGSBASE_MASK | CR4_PCIDE_MASK | CR4_OSXSAVE_MASK \
- | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_MASK))
+ | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_MASK \
+ | CR4_LAM_SUP_MASK))
#define DR6_BD (1 << 13)
#define DR6_BS (1 << 14)
@@ -2522,6 +2524,9 @@ static inline uint64_t cr4_reserved_bits(CPUX86State *env)
if (!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_PKS)) {
reserved_bits |= CR4_PKS_MASK;
}
+ if (!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_LAM)) {
+ reserved_bits |= CR4_LAM_SUP_MASK;
+ }
return reserved_bits;
}
diff --git a/target/i386/helper.c b/target/i386/helper.c
index 2070dd0dda..1da7a7d315 100644
--- a/target/i386/helper.c
+++ b/target/i386/helper.c
@@ -219,6 +219,10 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
new_cr4 &= ~CR4_PKS_MASK;
}
+ if (!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_LAM)) {
+ new_cr4 &= ~CR4_LAM_SUP_MASK;
+ }
+
env->cr[4] = new_cr4;
env->hflags = hflags;
--
2.25.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v4 2/2] target/i386: add control bits support for LAM
2024-01-12 6:00 ` [PATCH v4 2/2] target/i386: add control bits support for LAM Binbin Wu
@ 2024-01-14 12:09 ` Xiaoyao Li
2024-02-23 3:35 ` Zhao Liu
1 sibling, 0 replies; 11+ messages in thread
From: Xiaoyao Li @ 2024-01-14 12:09 UTC (permalink / raw)
To: Binbin Wu, qemu-devel, kvm; +Cc: pbonzini, chao.gao, robert.hu
On 1/12/2024 2:00 PM, Binbin Wu wrote:
> LAM uses CR3[61] and CR3[62] to configure/enable LAM on user pointers.
> LAM uses CR4[28] to configure/enable LAM on supervisor pointers.
>
> For CR3 LAM bits, no additional handling needed:
> - TCG
> LAM is not supported for TCG of target-i386. helper_write_crN() and
> helper_vmrun() check max physical address bits before calling
> cpu_x86_update_cr3(), no change needed, i.e. CR3 LAM bits are not allowed
> to be set in TCG.
> - gdbstub
> x86_cpu_gdb_write_register() will call cpu_x86_update_cr3() to update cr3.
> Allow gdb to set the LAM bit(s) to CR3, if vcpu doesn't support LAM,
> KVM_SET_SREGS will fail as other reserved bits.
>
> For CR4 LAM bit, its reservation depends on vcpu supporting LAM feature or
> not.
> - TCG
> LAM is not supported for TCG of target-i386. helper_write_crN() and
> helper_vmrun() check CR4 reserved bit before calling cpu_x86_update_cr4(),
> i.e. CR4 LAM bit is not allowed to be set in TCG.
> - gdbstub
> x86_cpu_gdb_write_register() will call cpu_x86_update_cr4() to update cr4.
> Mask out LAM bit on CR4 if vcpu doesn't support LAM.
> - x86_cpu_reset_hold() doesn't need special handling.
>
> Signed-off-by: Binbin Wu <binbin.wu@linux.intel.com>
> Tested-by: Xuelian Guo <xuelian.guo@intel.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
> target/i386/cpu.h | 7 ++++++-
> target/i386/helper.c | 4 ++++
> 2 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index 18ea755644..598a3fa140 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -261,6 +261,7 @@ typedef enum X86Seg {
> #define CR4_SMAP_MASK (1U << 21)
> #define CR4_PKE_MASK (1U << 22)
> #define CR4_PKS_MASK (1U << 24)
> +#define CR4_LAM_SUP_MASK (1U << 28)
>
> #define CR4_RESERVED_MASK \
> (~(target_ulong)(CR4_VME_MASK | CR4_PVI_MASK | CR4_TSD_MASK \
> @@ -269,7 +270,8 @@ typedef enum X86Seg {
> | CR4_OSFXSR_MASK | CR4_OSXMMEXCPT_MASK | CR4_UMIP_MASK \
> | CR4_LA57_MASK \
> | CR4_FSGSBASE_MASK | CR4_PCIDE_MASK | CR4_OSXSAVE_MASK \
> - | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_MASK))
> + | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_MASK \
> + | CR4_LAM_SUP_MASK))
>
> #define DR6_BD (1 << 13)
> #define DR6_BS (1 << 14)
> @@ -2522,6 +2524,9 @@ static inline uint64_t cr4_reserved_bits(CPUX86State *env)
> if (!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_PKS)) {
> reserved_bits |= CR4_PKS_MASK;
> }
> + if (!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_LAM)) {
> + reserved_bits |= CR4_LAM_SUP_MASK;
> + }
> return reserved_bits;
> }
>
> diff --git a/target/i386/helper.c b/target/i386/helper.c
> index 2070dd0dda..1da7a7d315 100644
> --- a/target/i386/helper.c
> +++ b/target/i386/helper.c
> @@ -219,6 +219,10 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
> new_cr4 &= ~CR4_PKS_MASK;
> }
>
> + if (!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_LAM)) {
> + new_cr4 &= ~CR4_LAM_SUP_MASK;
> + }
> +
> env->cr[4] = new_cr4;
> env->hflags = hflags;
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v4 2/2] target/i386: add control bits support for LAM
2024-01-12 6:00 ` [PATCH v4 2/2] target/i386: add control bits support for LAM Binbin Wu
2024-01-14 12:09 ` Xiaoyao Li
@ 2024-02-23 3:35 ` Zhao Liu
1 sibling, 0 replies; 11+ messages in thread
From: Zhao Liu @ 2024-02-23 3:35 UTC (permalink / raw)
To: Binbin Wu; +Cc: qemu-devel, kvm, pbonzini, xiaoyao.li, chao.gao, robert.hu
On Fri, Jan 12, 2024 at 02:00:42PM +0800, Binbin Wu wrote:
> Date: Fri, 12 Jan 2024 14:00:42 +0800
> From: Binbin Wu <binbin.wu@linux.intel.com>
> Subject: [PATCH v4 2/2] target/i386: add control bits support for LAM
> X-Mailer: git-send-email 2.25.1
>
> LAM uses CR3[61] and CR3[62] to configure/enable LAM on user pointers.
> LAM uses CR4[28] to configure/enable LAM on supervisor pointers.
>
> For CR3 LAM bits, no additional handling needed:
> - TCG
> LAM is not supported for TCG of target-i386. helper_write_crN() and
> helper_vmrun() check max physical address bits before calling
> cpu_x86_update_cr3(), no change needed, i.e. CR3 LAM bits are not allowed
> to be set in TCG.
> - gdbstub
> x86_cpu_gdb_write_register() will call cpu_x86_update_cr3() to update cr3.
> Allow gdb to set the LAM bit(s) to CR3, if vcpu doesn't support LAM,
> KVM_SET_SREGS will fail as other reserved bits.
>
> For CR4 LAM bit, its reservation depends on vcpu supporting LAM feature or
> not.
> - TCG
> LAM is not supported for TCG of target-i386. helper_write_crN() and
> helper_vmrun() check CR4 reserved bit before calling cpu_x86_update_cr4(),
> i.e. CR4 LAM bit is not allowed to be set in TCG.
> - gdbstub
> x86_cpu_gdb_write_register() will call cpu_x86_update_cr4() to update cr4.
> Mask out LAM bit on CR4 if vcpu doesn't support LAM.
> - x86_cpu_reset_hold() doesn't need special handling.
>
> Signed-off-by: Binbin Wu <binbin.wu@linux.intel.com>
> Tested-by: Xuelian Guo <xuelian.guo@intel.com>
> ---
> target/i386/cpu.h | 7 ++++++-
> target/i386/helper.c | 4 ++++
> 2 files changed, 10 insertions(+), 1 deletion(-)
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
>
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index 18ea755644..598a3fa140 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -261,6 +261,7 @@ typedef enum X86Seg {
> #define CR4_SMAP_MASK (1U << 21)
> #define CR4_PKE_MASK (1U << 22)
> #define CR4_PKS_MASK (1U << 24)
> +#define CR4_LAM_SUP_MASK (1U << 28)
>
> #define CR4_RESERVED_MASK \
> (~(target_ulong)(CR4_VME_MASK | CR4_PVI_MASK | CR4_TSD_MASK \
> @@ -269,7 +270,8 @@ typedef enum X86Seg {
> | CR4_OSFXSR_MASK | CR4_OSXMMEXCPT_MASK | CR4_UMIP_MASK \
> | CR4_LA57_MASK \
> | CR4_FSGSBASE_MASK | CR4_PCIDE_MASK | CR4_OSXSAVE_MASK \
> - | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_MASK))
> + | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_MASK \
> + | CR4_LAM_SUP_MASK))
>
> #define DR6_BD (1 << 13)
> #define DR6_BS (1 << 14)
> @@ -2522,6 +2524,9 @@ static inline uint64_t cr4_reserved_bits(CPUX86State *env)
> if (!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_PKS)) {
> reserved_bits |= CR4_PKS_MASK;
> }
> + if (!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_LAM)) {
> + reserved_bits |= CR4_LAM_SUP_MASK;
> + }
> return reserved_bits;
> }
>
> diff --git a/target/i386/helper.c b/target/i386/helper.c
> index 2070dd0dda..1da7a7d315 100644
> --- a/target/i386/helper.c
> +++ b/target/i386/helper.c
> @@ -219,6 +219,10 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
> new_cr4 &= ~CR4_PKS_MASK;
> }
>
> + if (!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_LAM)) {
> + new_cr4 &= ~CR4_LAM_SUP_MASK;
> + }
> +
> env->cr[4] = new_cr4;
> env->hflags = hflags;
>
> --
> 2.25.1
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v4 0/2] Add support for LAM in QEMU
2024-01-12 6:00 [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
2024-01-12 6:00 ` [PATCH v4 1/2] target/i386: add support for LAM in CPUID enumeration Binbin Wu
2024-01-12 6:00 ` [PATCH v4 2/2] target/i386: add control bits support for LAM Binbin Wu
@ 2024-01-22 8:55 ` Binbin Wu
2024-02-22 2:16 ` Binbin Wu
2024-03-25 0:35 ` Binbin Wu
2024-05-22 9:13 ` Paolo Bonzini
2024-05-22 9:20 ` Paolo Bonzini
4 siblings, 2 replies; 11+ messages in thread
From: Binbin Wu @ 2024-01-22 8:55 UTC (permalink / raw)
To: qemu-devel, kvm, pbonzini; +Cc: xiaoyao.li, chao.gao, robert.hu, binbin.wu
Gentle ping...
Please help to review and consider applying the patch series. (The KVM
part has been merged).
On 1/12/2024 2:00 PM, Binbin Wu wrote:
> Linear-address masking (LAM) [1], modifies the checking that is applied to
> *64-bit* linear addresses, allowing software to use of the untranslated
> address bits for metadata and masks the metadata bits before using them as
> linear addresses to access memory.
>
> When the feature is virtualized and exposed to guest, it can be used for
> efficient
> address sanitizers (ASAN) implementation and for optimizations in JITs and
> virtual machines.
>
> The KVM patch series can be found in [2].
>
> [1] Intel ISE https://cdrdv2.intel.com/v1/dl/getContent/671368
> Chapter Linear Address Masking (LAM)
> [2] https://lore.kernel.org/kvm/20230913124227.12574-1-binbin.wu@linux.intel.com
>
> ---
> Changelog
> v4:
> - Add a reviewed-by from Xiaoyao for patch 1.
> - Mask out LAM bit on CR4 if vcpu doesn't support LAM in cpu_x86_update_cr4() (Xiaoyao)
>
> v3:
> - https://lists.gnu.org/archive/html/qemu-devel/2023-07/msg04160.html
>
> Binbin Wu (1):
> target/i386: add control bits support for LAM
>
> Robert Hoo (1):
> target/i386: add support for LAM in CPUID enumeration
>
> target/i386/cpu.c | 2 +-
> target/i386/cpu.h | 9 ++++++++-
> target/i386/helper.c | 4 ++++
> 3 files changed, 13 insertions(+), 2 deletions(-)
>
>
> base-commit: f614acb7450282a119d85d759f27eae190476058
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v4 0/2] Add support for LAM in QEMU
2024-01-22 8:55 ` [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
@ 2024-02-22 2:16 ` Binbin Wu
2024-03-25 0:35 ` Binbin Wu
1 sibling, 0 replies; 11+ messages in thread
From: Binbin Wu @ 2024-02-22 2:16 UTC (permalink / raw)
To: pbonzini; +Cc: qemu-devel, kvm, xiaoyao.li, chao.gao, robert.hu
Ping...
Hi Paolo,
do you have time to have a look at this patchset?
On 1/22/2024 4:55 PM, Binbin Wu wrote:
> Gentle ping...
> Please help to review and consider applying the patch series. (The KVM
> part has been merged).
>
>
> On 1/12/2024 2:00 PM, Binbin Wu wrote:
>> Linear-address masking (LAM) [1], modifies the checking that is
>> applied to
>> *64-bit* linear addresses, allowing software to use of the untranslated
>> address bits for metadata and masks the metadata bits before using
>> them as
>> linear addresses to access memory.
>>
>> When the feature is virtualized and exposed to guest, it can be used for
>> efficient
>> address sanitizers (ASAN) implementation and for optimizations in
>> JITs and
>> virtual machines.
>>
>> The KVM patch series can be found in [2].
>>
>> [1] Intel ISE https://cdrdv2.intel.com/v1/dl/getContent/671368
>> Chapter Linear Address Masking (LAM)
>> [2]
>> https://lore.kernel.org/kvm/20230913124227.12574-1-binbin.wu@linux.intel.com
>>
>> ---
>> Changelog
>> v4:
>> - Add a reviewed-by from Xiaoyao for patch 1.
>> - Mask out LAM bit on CR4 if vcpu doesn't support LAM in
>> cpu_x86_update_cr4() (Xiaoyao)
>>
>> v3:
>> - https://lists.gnu.org/archive/html/qemu-devel/2023-07/msg04160.html
>>
>> Binbin Wu (1):
>> target/i386: add control bits support for LAM
>>
>> Robert Hoo (1):
>> target/i386: add support for LAM in CPUID enumeration
>>
>> target/i386/cpu.c | 2 +-
>> target/i386/cpu.h | 9 ++++++++-
>> target/i386/helper.c | 4 ++++
>> 3 files changed, 13 insertions(+), 2 deletions(-)
>>
>>
>> base-commit: f614acb7450282a119d85d759f27eae190476058
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v4 0/2] Add support for LAM in QEMU
2024-01-22 8:55 ` [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
2024-02-22 2:16 ` Binbin Wu
@ 2024-03-25 0:35 ` Binbin Wu
1 sibling, 0 replies; 11+ messages in thread
From: Binbin Wu @ 2024-03-25 0:35 UTC (permalink / raw)
To: qemu-devel, kvm, pbonzini; +Cc: xiaoyao.li, chao.gao, robert.hu
Ping...
On 1/22/2024 4:55 PM, Binbin Wu wrote:
> Gentle ping...
> Please help to review and consider applying the patch series. (The KVM
> part has been merged).
>
>
> On 1/12/2024 2:00 PM, Binbin Wu wrote:
>> Linear-address masking (LAM) [1], modifies the checking that is
>> applied to
>> *64-bit* linear addresses, allowing software to use of the untranslated
>> address bits for metadata and masks the metadata bits before using
>> them as
>> linear addresses to access memory.
>>
>> When the feature is virtualized and exposed to guest, it can be used for
>> efficient
>> address sanitizers (ASAN) implementation and for optimizations in
>> JITs and
>> virtual machines.
>>
>> The KVM patch series can be found in [2].
>>
>> [1] Intel ISE https://cdrdv2.intel.com/v1/dl/getContent/671368
>> Chapter Linear Address Masking (LAM)
>> [2]
>> https://lore.kernel.org/kvm/20230913124227.12574-1-binbin.wu@linux.intel.com
>>
>> ---
>> Changelog
>> v4:
>> - Add a reviewed-by from Xiaoyao for patch 1.
>> - Mask out LAM bit on CR4 if vcpu doesn't support LAM in
>> cpu_x86_update_cr4() (Xiaoyao)
>>
>> v3:
>> - https://lists.gnu.org/archive/html/qemu-devel/2023-07/msg04160.html
>>
>> Binbin Wu (1):
>> target/i386: add control bits support for LAM
>>
>> Robert Hoo (1):
>> target/i386: add support for LAM in CPUID enumeration
>>
>> target/i386/cpu.c | 2 +-
>> target/i386/cpu.h | 9 ++++++++-
>> target/i386/helper.c | 4 ++++
>> 3 files changed, 13 insertions(+), 2 deletions(-)
>>
>>
>> base-commit: f614acb7450282a119d85d759f27eae190476058
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v4 0/2] Add support for LAM in QEMU
2024-01-12 6:00 [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
` (2 preceding siblings ...)
2024-01-22 8:55 ` [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
@ 2024-05-22 9:13 ` Paolo Bonzini
2024-05-22 9:20 ` Paolo Bonzini
4 siblings, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2024-05-22 9:13 UTC (permalink / raw)
To: Binbin Wu; +Cc: qemu-devel, kvm, pbonzini, xiaoyao.li, chao.gao, robert.hu
Queued, thanks.
Paolo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v4 0/2] Add support for LAM in QEMU
2024-01-12 6:00 [PATCH v4 0/2] Add support for LAM in QEMU Binbin Wu
` (3 preceding siblings ...)
2024-05-22 9:13 ` Paolo Bonzini
@ 2024-05-22 9:20 ` Paolo Bonzini
4 siblings, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2024-05-22 9:20 UTC (permalink / raw)
To: Binbin Wu; +Cc: qemu-devel, kvm, pbonzini, xiaoyao.li, chao.gao, robert.hu
Queued, thanks.
Paolo
^ permalink raw reply [flat|nested] 11+ messages in thread