8 个版本
0.1.7 | 2024 年 7 月 16 日 |
---|---|
0.1.6 | 2024 年 7 月 16 日 |
0.1.5 | 2024 年 6 月 27 日 |
0.1.1 | 2024 年 5 月 22 日 |
0.1.0 | 2024 年 4 月 28 日 |
#728 in Rust 模式
3,386 每月下载量
在 ostd 中使用
74KB
1.5K SLoC
介绍 tdx-guest
tdx-guest 提供 Intel® Trust Domain Extensions (Intel® TDX) 客户端 API 的 Rust 实现,支持 TDX 客户端特定的指令、结构和函数。
TDCALL 实现
叶号 | 规范中的名称 | 描述 | 是否实现 | 接口函数名称 | TDX 版本 |
---|---|---|---|---|---|
0 | TDG.VP.VMCALL | 调用宿主 VM 服务 | ✅ | 请参阅 TDVMCALL 实现 | 1.0, 1.5 |
1 | TDG.VP.INFO | 获取 TD 执行环境信息 | ✅ | get_tdinfo |
1.0, 1.5 |
2 | TDG.MR.RTMR.EXTEND | 扩展 TD 运行时测量寄存器 | ✅ | extend_rtmr |
1.0, 1.5 |
3 | TDG.VP.VEINFO.GET | 获取最近 #VE 异常的虚拟化异常信息 | ✅ | get_veinfo |
1.0, 1.5 |
4 | TDG.MR.REPORT | 创建 TD 的加密报告 | ✅ | get_report |
1.0, 1.5 |
5 | TDG.VP.CPUIDVE.SET | 控制 CPUID 指令执行时 #VE 的交付 | ✅ | set_cpuidve |
1.0, 1.5 |
6 | TDG.MEM.PAGE.ACCEPT | 将挂起的私有页面接受到 TD 中 | ✅ | accept_page |
1.0, 1.5 |
7 | TDG.VM.RD | 读取 TD 范围元数据字段 | ✅ | read_td_metadata |
1.0, 1.5 |
8 | TDG.VM.WR | 写入 TD 范围元数据字段 | ✅ | write_td_metadata |
1.0, 1.5 |
9 | TDG.VP.RD | 读取 VCPU 范围元数据字段 | ❌ | - | 1.5 |
10 | TDG.VP.WR | 写入 VCPU 范围元数据字段 | ❌ | - | 1.5 |
11 | TDG.SYS.RD | 读取 TDX 模块全局范围元数据字段 | ❌ | - | 1.5 |
12 | TDG.SYS.RDALL | 读取所有可读的 TDX 模块全局范围元数据字段 | ❌ | - | 1.5 |
18 | TDG.SERVTD.RD | 读取目标 TD 元数据字段 | ✅ | read_servetd |
1.5 |
20 | TDG.SERVTD.WR | 写入目标 TD 元数据字段 | ✅ | write_servetd |
1.5 |
22 | TDG.MR.VERIFYREPORT | 验证当前平台生成的 TD 加密报告 | ✅ | verify_report |
1.5 |
23 | TDG.MEM.PAGE.ATTR.RD | 读取 TD 私有页面的 GPA 映射和属性 | ✅ | read_page_attr |
1.5 |
24 | TDG.MEM.PAGE.ATTR.WR | 写入私有页面的属性 | ✅ | write_page_attr |
1.5 |
25 | TDG.VP.ENTER | 进入 L2 VCPU 操作 | ❌ | - | 1.5 |
26 | TDG.VP.INVEPT | 使选定的 L2 VM 的缓存的 EPT 映射无效 | ❌ | - | 1.5 |
27 | TDG.VP.INVVPID | 使 L2 VM 中选定页面的缓存的转换无效 | ❌ | - | 1.5 |
TDVMCALL 实现
子函数号 | 规范中的子函数名称 | 是否实现 | 接口函数名称 | TDX 版本 |
---|---|---|---|---|
0x10000 | 获取TdVmCallInfo | ✅ | get_tdvmcall_info |
1.0, 1.5 |
0x10001 | 映射GPA | ✅ | map_gpa |
1.0, 1.5 |
0x10002 | 获取报价 | ✅ | get_quote |
1.0, 1.5 |
0x10003 | 报告致命错误 | ❌ | - | 1.0, 1.5 |
0x10004 | 设置事件通知中断 | ✅ | setup_event_notify_interrupt |
1.0, 1.5 |
0x10005 | 服务 | ✅ | get_td_service |
1.5 |
子函数编号位15:0 | 规范中的子函数名称 | 是否实现 | 接口函数名称 | TDX 版本 |
---|---|---|---|---|
10 | 指令.CPUID | ✅ | cpuid |
1.0, 1.5 |
12 | 指令.HLT | ✅ | hlt |
1.0, 1.5 |
30 | 指令.IO | ✅ | io_read , io_write |
1.0, 1.5 |
31 | 指令.RDMSR | ✅ | rdmsr |
1.0, 1.5 |
32 | 指令.WRMSR | ✅ | wrmsr |
1.0, 1.5 |
48 | #VE.RequestMMIO | ✅ | read_mmio , write_mmio |
1.0, 1.5 |
54 | 指令.WBINVD | ✅ | 执行缓存操作 |
1.0, 1.5 |
65 | 指令.PCONFIG | ❌ | - | 1.0, 1.5 |
依赖项
~15MB
~315K SLoC