Skip to content

重构设备树自动地址映射逻辑 #330

@ZR233

Description

@ZR233

背景

当前依赖设备树 reg 属性进行 MMIO 地址自动映射的方案存在局限性。部分设备的 reg 可能用于定义非 MMIO 地址(如配置空间、特殊功能寄存器等),导致映射不准确,可能引发访问异常或设备模拟错误。

重构目标

建立更灵活、可配置的地址映射机制,区分不同虚拟机使用场景,确保 MMIO 映射的准确性与安全性。

设计方案

1. 配置两种基本映射模式(map_method_base)

默认全不映射

适用于全模拟设备或无需直接硬件访问的客户机,所有地址均由虚拟设备模拟处理。

默认全直通

适用于驱动代理型客户机,允许直接访问物理设备地址,仅对特定区域进行拦截或模拟。

2. 默认全直通模式的处理逻辑

初始化阶段,基于物理地址范围(pa-range)创建全局地址范围管理器。

按以下顺序在地址范围内“打洞”(即排除不直通的区域):

客户机内存区域(memory)

模拟设备占用的地址范围

配置文件中明确禁止直通的地址区间

剩余被分割的多个地址区间,将采用直通方式映射到客户机,允许其直接访问对应物理设备。

优势

明确区分模拟与直通场景,减少误映射风险。

通过范围管理机制,灵活支持复杂地址布局。

提升虚拟机对不同设备类型的兼容性与运行稳定性。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions