【86】ASPM进入和退出L1

    之前写过一篇power management的介绍,主要是介绍了一下power management的概念,这次主要是介绍下ASPM和ASPM L1机制。

【67】PCIe Power Management和linux对PME的处理_linjiasen的博客-CSDN博客

1、ASPM介绍

    ASPM全称Active State Power Management,是针对Power Management的一种管理机制。所谓“Active State”就是设备在D0状态下进入低功耗模式的管理机制。ASPM是硬件行为,软件只能写function配置空间Link Control Register的ASPM Control比特来disable和允许进入某种L state。

    PCI-PM是软件写function的配置空间的Power Management Control/Status Register来让function进入某种D state。

2、ASPM L1介绍

    如果设备是支持ASPM L1的(link cap reg的bit11-10),ASPM ctrl字段的L1 entry(link ctrl reg的bit1-0)默认是disable的。只有链路两端的component都支持ASPM L1时,software才能enable downstream component的ASPM L1。

    Software必须先使能upstream component的ASPM L1,然后再使能downtown component的ASPM L1。Disable ASPM L1的时候是相反的操作。这点在link control寄存器的ASPM control字段也有说明。

3、PCIe协议对ASPM L1协商的规定

  1. Downstream component必须积累有足够数量的credit才能发起ASPM L1 entry的初始化流程。
  2. 在进入low power link state前,Downstream component必须阻止发送端再从transaction layer发送TLP(包括completion)到data link layer
  3. Downstream component必须等到之前发送的最后一个TLP收到acknowledgement(retry buffer为空)。
  4. Downstream component 反复发送PM_Active_State_Request_L1 DLLP来进行ASPM协商。Downstream component发送PM_Active_State_Request_L1 DLLP的间隔不超过8个(8b/10b)或者32个(128b/130b)idle symbol times。
  5. Downstream component一直发送PM_Active_State_Request_L1 DLLP,直到收到Upstream component回复PM_Request_Ack DLLP或者PM_Active_State_Nak message。在等待Upstream component回复PM_Request_Ack DLLP期间,Downstream component不能发送TLP,可以正常接受Upstream component发送的TLP和DLLP,并回复FC updata DLLP。也就说Downstream component的Transaction Layer进入了inactive,但是data link layer还是active状态。
  6. Upstream component必须立刻响应,接受或者拒绝PM_Active_State_Request_L1请求。Upstream component不停发送PM_Request_Ack DLLP直到detect 链路进入idle。

  4、PCIe EP ASPM L1 entry机制

  1. LinkTX端是idle的(例如,client端没有transmit TLP并没有replay TLP pending),EP controller开启ASPM L1 entry timer开始计时,如果client端有TLP要发送,那么timer会被clear
  2. ASPM L1 entry timer达到时间后(ASPM L1 Entry Timeout Delay Register可以设置,默认是750*16ns=12us),EP controller检查是否有足够的credit
  3. EP controller block新的TLP发送,并且通过TX lane发送PM_Active_State_Request_L1 DLLP
  4. EP controller持续发送PM_Active_State_Request_L1 DLLP直到收到upstream deviceresponse
  5. Upstream component必须立刻对EP controller发出的PM_Active_State_Request做出响应(接收或者拒绝)。
  6. 如果Upstream component拒绝EP controller发出的PM_Active_State_Request,则Upstream component发出PM_Active_State_Nak message(注意NAKmessage,那么EP controllerabortASPM L1 entry并且继续正常发送TLP
  7. 如果Upstream component接受EP controller发出的PM_Active_State_Request,则Upstream component发出PM_Request_Ack DLLP(注意ACKDLLP,然后EP controller会让自己的TX进入electrical idle并进入ASPM L1
  8. Upstream component detect electrical idle后,让自己的TX进入electrical idle

5、PCIe EP ASPM L1 entry例子

(1)systemBIOS设置CPU支持ASPM L1

    设置完毕后,CPU对应Root Port的link cap就支持ASPM L1

 (2)设置CPU和EP两个PF的link ctrl为ASPM L1 Enabled

注意顺序:一定要先CPU,后EPPF0/PF1

设置CPU端口的link ctrl为0x2,L1 Entry Enabled

setpci -s 0:1.0 0x50.b

00

setpci -s 0:1.0 0x50.b=0x2

setpci -s 0:1.0 0x50.b

02

 设置EP芯片的两个PF的link ctrl为0x2,L1 Entry Enabled

setpci -s 1:0.0 0xd0.b

00

setpci -s 1:0.0 0xd0.b=0x2
setpci -s 1:0.0 0xd0.b

02

setpci -s 1:0.1 0xd0.b

00

setpci -s 1:0.1 0xd0.b=0x2

setpci -s 1:0.1 0xd0.b

02

 

(3)等待链路进入idle状态,从串口查看芯片状态

从pcie_status_0 reg(0x7F00814004)的bit24-21为0100b,知道链路在L1状态了

从lower power debug and ctrl reg(0x7F00900C88)的bit26-25为01b,知道是因为ASPM进入的L1。

(6)退出ASPM L1的方法

只要host端访问一下EP,EP就可以退出ASPM L1进入L0。

"L1 PM" 是指在领导层次上的一种职位,代表着在组织中具有高级管理职责和决策权的人员。"substates" 是指在某个大国或地区内的次级分区,如美国的州、中国的省级单位等。 "L1 PM substates" 可以理解为指在领导层次上管理次级分区的职位。具体而言,L1 PM substates 可能是指负责管理某一个国家或地区内各个州、省级单位的高级管理人员。 对于这个问题,具体情况可能会因国家或地区而异。通常情况下,由于各个州或省级单位的治理实际上是在国家或地区的指导和支持下进行的,因此通常会有一个专门的领导层职位负责协调和管理次级分区内的事务。这个职位的职责可能包括: 1. 监督和指导各个州、省级单位的政策执行和绩效评估; 2. 协调不同地区之间的资源分配和合作事项; 3. 与中央政府或地方政府保持良好的沟通和合作关系; 4. 报告各个州、省级单位的工作进展和问题,制定相应的解决方案; 5. 确保各个地区遵守国家或地区的法律法规,并协调解决可能出现的冲突或问题; 6. 与其他政府部门或外部合作伙伴协调合作,推动地区发展和改革。 总之,L1 PM substates 是指在领导层次上负责管理次级分区的高级管理职位。其职责涉及到协调各个地区之间的工作、资源分配和合作以及保持与中央政府或地方政府的沟通和合作关系,以促进地区的发展和改革。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linjiasen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值