必须至少支持一种从 IOMMU 产生中断的方法(MSI 或 WSI)。 IOMMU 实现必须支持 NAPOT 转换连续性的 Svnapot 标准扩展。 虚拟机 Hypervisor 可提供一个 SW 仿真 IOMMU,允许 Guest 管理第一阶段页表,以便对Guest 控制设备访问的内存进行精细控制。 为Guest 提供这种仿真 IOMMU 的 Hypervisor 可以保留对第二阶段地址...
所以我们先看一下NAPOT模式下一个PMP entry的地址寄存器所控制的地址范围是多少。 在上图中,当pmpcfg.A为NAPOT时,从pmpaddr的低位开始寻找连续1的个数。若pmpaddr值为yyyy...yyy0,即连续1的个数为0,则该PMP entry所控制的地址空间为从yyyy...yyy0开始的8个字节若pmpaddr值为yyyy...yy01,即连续1的个数...
1. NAPOT(Naturally Aligned Power-Of-Two) 假设我们要配置一个大小为 4KB 的 NAPOT 区域,从地址 0x80000000 开始: # 设置 pmpaddr0,表示一个 4KB 的 NAPOT 区域(0x80000000 - 0x80000FFF) li t0, 0x80000FF csrw pmpaddr0, t0 li t1, 0x1F # 设置 pmpcfg0,A 字段为 NAPOT,RWX 权限 csrw pmp...
根据《RISC-V指令集手册,第二卷:特权架构,版本1.10》,所有其他hart状态未指定。 Some examples follow using NAPOT address mode. 以下是使用 NAPOT 地址模式的一些示例。 PMP Address Registers The PMP has 8 address registers. Each address register pmpaddrX correlates to the respective pmpXcfg field. Eac...
risc-v中pmpaddr定义的是34bit物理地址的高32bit,所以设置pmpaddr的时候需要将传入的实际物理内存地址左移2bit,即phy_addr << 2, 同时由于TOR模式可以通过2个entry之间的pmpaddr得到受保护的内存大小,而NA4是固定的4bytes大小,故不用在pmpaddr中传入内存大小,但是对于NAPOT模式,除了需要传入物理内存地址,还需要传...
下面是一些使用 NAPOT 地址模式的例子。 PMP 地址寄存器 PMP 有 8 个地址寄存器。每个地址寄存器 pmpaddrX 都与相应的 pmpXcfg字段相关联。每个地址寄存器都包含右移两位的受保护区域的基地址,以实现最小 4 字节对齐。 根据RISC‑V 指令集手册,第二卷:特权架构,版本 1.10,最大编码地址位为 [55:2]...
7. NAPOT模式地址匹配的内存大小需要是2的幂次方,同时最小值为8字节; 8. NA4模式地址匹配的内存大小固定为4字节,属于NAPOT的子集; 9. TOR模式需要使用2组PMP entry才能设置一块内存区域的PMP权限; 10. 内存地址需要右移2位再设置到PMP addr寄存器中; ...
01….1111 NAPOT “2的32次方(4G)”个字节的区域(地址对齐)。由于N级别处理器内核的地址空间为32位,则意味着整个32位地址空间都被覆盖。 注意:上表中的字母a表示任意值。8.3. PMP表项的锁定pmp\<x>cfg寄存器的“L”比特域(第7位)用于控制是否将PMP表项\<x>进行锁定,其要点如下:如果...
The PmpPluginNapot is a specialized PMP implementation, providing only the NAPOT (naturally-aligned poser-of-2 regions) addressing mode. It requires fewer resources and has a less significant timing impact compared to the full PmpPlugin.
The RISC-V architecture has gained support for the Svnapot extension with the “napot” part standing for “naturally aligned power of two”. It allows groups of 4K base pages to be tied together to create larger (“huge”) pages. ...