ARM64上开启MTE

简介: ARM64上开启MTE

参考

软件版本

Qemu:8.0.0

Linux:6.5

GCC: 13.2.1

内核配置

参考arch/arm64/Kconfig:

  • CONFIG_ARM64_AS_HAS_MTE: 当编译器支持memtag时,这个宏辉自动设置
  • CONFIG_ARM64_MTE: 需要手动配置,默认就是y

Qemu启动参数

示例:

sudo /home/pengdl/work/Qemu_env/qemu-8.0.0/build/bin/qemu-system-aarch64 \
        -M virt,gic-version=3,virtualization=on,type=virt,mte=on \
        -cpu max -nographic -m 16G \
        -smp 16 \
        -object memory-backend-ram,id=mem0,size=8G  \
        -object memory-backend-ram,id=mem1,size=8G  \
        -numa node,memdev=mem0,cpus=0-7,nodeid=0 \
        -numa node,memdev=mem1,cpus=8-15,nodeid=1 \
        -kernel ./linux-6.5/arch/arm64/boot/Image.gz \
        -append "noinitrd root=/dev/vda rootfstype=ext4 rw console=ttyAMA0 crashkernel=256M" \
        -nographic \
        -netdev user,id=eth0,hostfwd=tcp::8080-:22 -device virtio-net-device,netdev=eth0 \
        -fsdev local,security_model=passthrough,id=fsdev0,path=/home/pengdl/work/Qemu_env/aarch64/share \
        -device virtio-9p-pci,id=fs1,fsdev=fsdev0,mount_tag=hostshare \
        -drive if=none,format=qcow2,file=/home/pengdl/work/Qemu_env/aarch64/qcow2/slave1.qcow2,id=hd0 \
        -device virtio-blk-device,drive=hd0 \

在内核启动日志中可以看到:

[    0.000000][    T0] Detected PIPT I-cache on CPU0
[    0.000000][    T0] CPU features: detected: Address authentication (architected QARMA5 algorithm)
[    0.000000][    T0] CPU features: detected: GIC system register CPU interface
[    0.000000][    T0] CPU features: detected: HCRX_EL2 register
[    0.000000][    T0] CPU features: detected: Virtualization Host Extensions
[    0.000000][    T0] CPU features: detected: Hardware dirty bit management
[    0.000000][    T0] CPU features: detected: Memory Tagging Extension
[    0.000000][    T0] CPU features: detected: Asymmetric MTE Tag Check Fault
[    0.000000][    T0] CPU features: detected: Spectre-v4
[    0.000000][    T0] MTE: enabled in synchronous mode at EL1
[    0.000000][    T0] alternatives: applying boot alternatives
[    0.000000][    T0] kasan: KernelAddressSanitizer initialized (hw-tags, mode=sync, vmalloc=on, stacktrace=on)
# cat /proc/cpuinfo
...
processor       : 15
BogoMIPS        : 125.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit ilrcpc flagm ssbs sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svef32mm svef64mm svebf16 i8mm bf16 dgh rng bti mte mte3 sme smei16i64 smef64f64 smei8i32 smef16f32 smeb16f32 smef32f32 smefa64
CPU implementer : 0x00
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0x051
CPU revision    : 0
相关文章
|
存储 传感器 安全
「Arm Arch」 初识 Arm(下)
「Arm Arch」 初识 Arm(下)
1452 0
|
11月前
|
关系型数据库 分布式数据库 数据库
|
机器学习/深度学习 前端开发 数据可视化
神奇的streamlit (哇 原来深度学习还可以这样玩)
神奇的streamlit (哇 原来深度学习还可以这样玩)
神奇的streamlit (哇 原来深度学习还可以这样玩)
|
人工智能 并行计算 开发者
CUDA重大更新:原生Python可直接编写高性能GPU程序
NVIDIA在2025年GTC大会上宣布CUDA并行计算平台正式支持原生Python编程,消除了Python开发者进入GPU加速领域的技术壁垒。这一突破通过重新设计CUDA开发模型,引入CUDA Core、cuPyNumeric、NVMath Python等核心组件,实现了Python与GPU加速的深度集成。开发者可直接用Python语法进行高性能并行计算,显著降低门槛,扩展CUDA生态,推动人工智能、科学计算等领域创新。此更新标志着CUDA向更包容的语言生态系统转型,未来还将支持Rust、Julia等语言。
871 3
CUDA重大更新:原生Python可直接编写高性能GPU程序
时间序列平稳性的双重假设检验:KPSS与ADF方法比较研究
时间序列分析中,确定序列的平稳性至关重要。本文介绍如何使用KPSS检验和Dickey-Fuller检验验证序列平稳性。KPSS假设数据非平稳,而Dickey-Fuller假设数据平稳。通过构造平稳(白噪声)和非平稳(随机游走)序列并进行检验,展示了两种方法的应用。KPSS适用于检测围绕趋势的平稳性,Dickey-Fuller则用于检验单位根。建议同时使用两者以确保结论可靠。
806 4
时间序列平稳性的双重假设检验:KPSS与ADF方法比较研究
|
网络安全 Apache 开发工具
图解Git——服务器上的Git《Pro Git》
Git 远程仓库及通信协议简介:远程仓库为团队协作提供平台,支持共享代码。常见形式为裸仓库,仅保存 Git 元数据。Git 支持多种协议,包括本地协议(适合局域网)、HTTP/HTTPS(推荐智能 HTTP,安全易用)、SSH(企业内部协作首选)和 Git 协议(高效只读访问)。选择协议需根据协作需求、安全性和配置难度权衡。此外,搭建 Git 服务器涉及创建裸仓库、上传至服务器、初始化共享仓库等步骤。生成 SSH 公钥、配置服务器及使用 GitWeb 或 GitLab 等工具可进一步增强功能。第三方托管服务如 GitHub 提供便捷的托管选项,适合快速启动和开源项目。总结而言,自行运行服务器提
857 11
win10 蓝牙开关消失 设备管理器“设备描述符请求失败”
win10 蓝牙开关消失 设备管理器“设备描述符请求失败”
769 1
win10 蓝牙开关消失 设备管理器“设备描述符请求失败”
macbookpro触摸板突然失灵按压无震动反馈和回弹感
macbookpro触摸板突然失灵按压无震动反馈和回弹感
1239 0
|
消息中间件 Linux
Linux0.11 管道(十一)
Linux0.11 管道(十一)
248 0