SMMU架构手册之command和event队列(2)

2. 队列项可见语义

        任何生产者(无论SMMU还是软件)必须保证如果消耗者可以看见更新PROD值,那么消耗者也可以看到所有新的队列项。对于SMMU输出队列(Event队列和PRI队列),SMMU写队列数据到内存中,当数据在内存共享域中变得可见,SMMU允许更新的PROD值可见。这是新队列项对消耗者可见的第一步。

        消耗者只能通过观察更新的PROD索引来观察队列中新的有效项在存在。如果消耗者读取一个超出PROD最后索引的队列项,这个项中保含的数据未知。

NOTE: 中断顺序规则也存在。SMMU通过PROD使得队列的更新可见,在此时不会比发送队列中断更后。

NOTE: 在中断到来时,软件不能假定新的队列项存在,而不去首先读取PROD索引。比如,如果之前的中断handler处理掉所有的事件包括第二批,这里下一个中断handler将没有新的队列项处理。

3 Event队列行为

        SMMU可能支持转换错误的配置行为,这使错误事务被STALL,暂停然后恢复,或立即中止并放弃事件。

        Event被记录到event队列来回复配置错误或传入事件相关的转换错误。传入的事务会导致一系列错误或fault,若event消耗得不够快,event队列可能overflow。若event队列满时,STALL错误导致的event不会被丢弃,但当event队列消耗event项且下一个空闲时可以被记录。若event队列满时,其他类型的event被丢弃。

NOTE: ARM期望可能被丢弃的event用于debug。后面章节将根据overflow作准确的队列行为。

        ARM期望系统软件从event队列消耗event项来避免在正常情况下overflow。

        在本文档的所有情况下,当一个event被记录时,若在event队列中对一个新的项有空闲时且队列可写时,event将被记录。队列可写且使能时,没有全局error标志和不会overflow。没有报告的event用来回复STALL事务(比如当没有STALL域,或STALL=0),若没有记录被允许丢弃。当event队列可写,STALL event不会被丢弃并被记录。软件必须消耗来自队列的event来释放空间,否则pending STALL event不会被记录。STALL event不同于其他event。队列以相同环形顺序被填充,这种event不再存在,不会被消耗。

        当多个pending event同时往event队列写时,ARM建议一个实现不会优先non-stall event超过stall=1 event。

        若event产生来回复中止事务,在事务回复返回到client之前event可见。可查看CMD_SYNC,它强制与中止的事务的event可见。

NOTE: 这意味着产生的event以回复中止的事务并作为SMMU event可以被看到,在事务中止被报告给client设备之间。

4 写“commit”记录event

event记录产生被抽象为以下步骤:

  1. 触发event产生,比如一个转换错误;
  2. 在SMMU内部产生event记录;
  3. 决定可能写一个新队列项;
  4. 最后event记录被提交且写到event队列项;
  5. 在event队列里event记录可见:
  1. -记录数据位置的更新对要求的shareability domain可见;
  2. -PROD.WR索引被更新新的记录给软件。在队列的语义上,记录不可见直到写index被更新覆盖新的项。

        第4点表示event将被写入到队列且变成可见。直到commit,event写可能不会发生(比如,若队列满且软件不消耗任何event项,event写将不会commit)。

        若后续write不遭遇外部的abort,被commit在event写在队列中被可见。

        STALL event记录的写必须commit直到队列项可写(队列使能且不满)。若不可写,STALL记录被buffer直到队列可写。

5 event合并

        允许实现合并多个event记录。当多个相同的event产生时,这可能会产生,当单独event不能应用增加的可用信息,这可用来减少event队列的event记录。

        当以下所有条件满足时event可以被合并:

  1. event类型和所有域都相同,除了明确表明的域;
  2. 若存在,STALL域为0。STALL错误记录不再被记录。

        实现不再要求合并任何event,但不再要求支持STE.MEV标志来使能或继承event的合并。

NOTE: 为调试目的,可通过STE.MEV标志disable event的合并。

        软件实现(比如SMMU的虚拟模拟)不要求满足STE.MEV。在guest要求合并被disable后, hypervisor可能造成event被合并。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以在SMU的官方网站或者相关技术论坛上查找SMU技术手册。您也可以在互联网搜索引擎上搜索关键字 "SMU技术手册",以便找到相关资源。此外,您还可以咨询厂商或专业技术人员,他们可能有更详细的帮助和指导。 ### 回答2: 要查找SMaRTS手册,可以采取以下途径: 1. 网络搜索:使用搜索引擎,如谷歌或百度,在搜索栏中输入"SMaRTS技术手册"或"SMaRTS用户手册"。搜索结果中可能会出现相关文档,包括官方网站、论坛、技术社区等资源。 2. 官方网站:找到SMaRTS的官方网站,通常会提供相关的技术手册和文档。在官方网站上,可以浏览产品页面、支持页面或下载页面,寻找与SMaRTS相关的文档。一般会有用户手册、安装指南、技术规格等资源可供查阅。 3. 厂商支持:如果有购买SMaRTS的厂商联系方式,可以直接咨询他们的技术支持团队。他们通常会提供对应的技术手册和文档,或者将您引导至可以获取这些资料的地方。 4. 技术社区和论坛:参与与SMaRTS相关的技术社区和论坛,向其他用户或专家提问,询问他们是否知道如何获取SMaRTS手册。这些社区和论坛通常以技术服务为目的,会提供相关的资源和帮助。 综上所述,通过网络搜索、官方网站、厂商支持和技术社区等方式,您应该能够找到SMaRTS技术手册和相关文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值