【PCIE】completion timeout disable功能总结

news2024/9/30 3:31:37

在这里插入图片描述

在PCI Express(PCIe)总线上进行I/O数据交换时,会使用Transaction layer packets(TLP)来将数据从一个端点传输到另一个端点。当发生一些错误或异常情况时,可能会导致一个TLP包没有被正常处理,从而出现"completion timeout"的情况。

具体来说,completion timeout是指PCIe端点收到一个TLP包后,并没有在指定的时间内完成对该包的处理和回复响应,从而导致系统的错误处理机制进入超时状态。这个超时时间一般设定为50毫秒,如果在超时时间内没有收到相应的 completion status,则认为 TLP 数据包未被正确执行。

导致TLP包出现completion timeout的情况比较多,例如可能是由于线路噪声、电力不足、驱动程序或硬件故障、总线带宽过载等原因引起,需要根据具体情况进行调查和解决。

在发现completion timeout的情况下,需要尽快进行故障排查和分析,以避免TLP包导致的系统稳定性问题和数据的不一致性问题。

通常情况下,completion timeout的TLP包是从Root Complex(RC)端发送到Endpoint(EP)端,因为EP端需要在指定时间内完成对TLP的处理和回复响应。如果EP在规定时间内无法回复响应,则会触发completion timeout的超时机制。需要注意的是,超时机制是由RC来检测和处理的,EP不会直接检测completion timeout。

一般情况下,RC端在发送TLP包时都会指定一个timeout值,以保证EP在指定的时间内能够完成对TLP的处理和响应。如果EP端无法在指定时间内完成相关操作,或者响应超时,则会触发completion timeout的超时机制,这时RC端会根据timeout值来判断是否需要重试。

当然,虽然一般情况下completion timeout的TLP包是从RC端发送到EP端的,但在其他一些情况下,也可能会存在从EP端发送到RC端的TLP超时包。比如在进行DMA数据传输时,如果EP端没有正确地响应TLP包,则会导致DMA传输超时,从而也会触发TLP超时机制。

以下是completion timeout机制的过程:

  1. Endpoint(EP)向Root Complex(RC)发送一个Completion TLP包(包含写操作或发送DMA请求等),并在packet中指定completion timeout阈值。这个阈值表示需要在这个时间段内完成相应的操作。

  2. RC 端收到Completion TLP包后,开始等待EP端回应Completion Acknowledge TLP包,并启动计时器来监控超时时间的到期。计时器是由RC端来管理的,它会在预定的时间到达时触发一个异常,警告系统处理器超时。

  3. 如果RC在预期的时间内收到了Completion Acknowledge TLP,它会正常处理这个信息并停止计时器。

  4. 如果RC在规定的时间内没有收到Completion Acknowledge TLP,计时器超时,RC会判定为completion timeout超时。在此阶段,RC端将会清理已执行的操作,然后返回错误状态给客户端并重新尝试进行操作(有时候也会由客户端自己来重试)。

  5. 一旦客户端收到了失败的结果,它可以根据需要调整阈值以改进所需操作的执行效率,并重新发起操作。

在这个过程中,EP端主要负责向RC发送数据请求并等待RC的响应,而RC则负责检测completion timeout并采取相应的解决措施。通过这个机制,可以有效避免因为超时等其他异常情况导致的数据不一致性或者错误,从而保证数据交换的高效和稳定。

completion timeout机制是在EP端设置的。EP端通过在TLP包中设置completion timeout值来告诉RC端需要等待多久以获得响应,如果RC端在超时时间内没有收到EP端的响应,则会触发completion timeout机制,RC端会通过重试来尝试重新获取响应。这种机制可以更好地保证数据交换的及时性和稳定性。

需要注意的是,由于RC端是无法知道EP端的最大响应时间,所以EP不能将completion timeout设置成一个非常大的值,否则会导致RC在等待过程中出现异常。通常来说,EP应该将completion timeout值根据通信的数据量和存储器容量等因素来设置,以保证操作的稳定性和效率,并避免出现超时问题。

总之,completion timeout机制是一种在EP端设置的机制,以确保数据操作的稳定性和及时性,并避免出现超时的问题。

命令:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/807984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BOB_1.0.1靶机详解

BOB_1.0.1靶机详解 靶机下载地址:https://download.vulnhub.com/bob/Bob_v1.0.1.ova 这个靶机是一个相对简单的靶机,很快就打完了。 找到ip地址后对IP进行一个单独的扫描,发现ssh端口被改到25468了,等会儿登陆时候需要用到。 目…

砖墙(力扣)Map + 思维 JAVA

你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和相等。 你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你…

无涯教程-jQuery - Puff方法函数

吹气效果可以与show/hide/toggle一起使用。通过按比例放大元素并同时隐藏它,可以形成粉扑效果。 Puff - 语法 selector.hide|show|toggle( "puff", {arguments}, speed ); 这是所有参数的描述- model - 效果的模式。可以是"显…

3D Tiles官方示例资源下载链接

本文列出Cesium官方提供的 3D Tiles 1.0和1.1规范的9个示例切块集(tileset)。 有关如何使用本地服务器托管这些示例的详细信息,请参阅 INSTRUCTIONS.md。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 1、Metadata Granularities …

使用 Docker 快速上手 Stability AI 的 SDXL 1.0 正式版

本篇文章,我们聊聊如何使用 Docker 来本地部署使用 Stability AI 刚刚推出的 SDXL 1.0,新一代的开源图片生成模型,以及在当前如何高效的使用显卡进行推理。 写在前面 好久没有写 Stable Diffusion 相关的内容了,趁着 SDXL 刚刚推…

k8s一站式使用笔记

前言 个人感觉比较磨心态,要坐住,因为细节太多,建议:一遍看个大概,二遍回来细品,不要当成任务,把握零碎时间 一、k8s安装 1、配置准备 硬件要求 内存:2GB或更多RAMCPU: 2核CPU或更…

Linux 之 systemctl

systemctl 可以控制软件(一般指服务)的启动、关闭、开机自启动 能被systemctl 管理的软件,一般也称 服务 系统内置服务均可被 systemctl 控制第三方软件,如果 自动注册了 可被systemctl 控制第三方软件,如果没有自动…

OS-08-事件驱动:C10M是如何实现的?

08-事件驱动:C10M是如何实现的? 你好,我是陶辉。 上一讲介绍了广播与组播这种一对多通讯方式,从这一讲开始,我们回到主流的一对一通讯方式。 早些年我们谈到高并发,总是会提到C10K,这是指服务…

golang反射获取结构体的值和修改值

功能:根据id和反射技术封装 创建和更新人的查询 一、代码二、演示 一、代码 package coryCommonimport ("context""errors""github.com/gogf/gf/v2/container/gvar""github.com/tiger1103/gfast/v3/internal/app/system/dao&qu…

Simulink仿真模块 - Data Type Conversion

Data Type Conversion将输入信号转换为指定的数据类型 在仿真库中的位置为:Simulink / 常用模块 Simulink / Signal Attributes 模型为: 说明 Data Type Conversion 模块可将任何 Simulink 数据类型的输入信号转换为您指定的数据类型。 注意 要通过指定模块参数来控…

防御第五次作业

一、结合以下问题对当天内容进行总结 1. 什么是恶意软件? 可以指代病毒、蠕虫、特洛伊木马、勒索软件、间谍软件、广告软件和其他类型的有害软件。恶意软件的主要区别在于它必须是故意为恶;任何无意间造成损害的软件均不视为恶意软件。恶意软件的总体目…

每天一个电商API分享:获取买家订单列表 API buyer_order_list

API name:buyer_order_list 功能介绍:此接口用于获取买家购买的商品订单列表,返回订单ID等数据。需要买家进行cookie授权。 请求参数: 请求参数:page1&tab_codeall 参数说明:page:页码 tab_code:all,…

教雅川学缠论03-分型

原著作者将K线走势分成四中类型,这四中类型,就叫做分型,注意,分型是K线的组合(至少3个K线),如下 下面我们以2023年7月武汉控股日K示例 四个分型用图来表示的话,还是很简单的&…

FPGA学习——查找表(LUT)

查找表又名LUT,英文全称 Look Up Table。查找表有多个输入端口,但只有一个输出端口。 查找表功能上类似于存储体,可以把输入看作地址线,地址对应的“表项”看作输出。 按照输入端口个数的不同,查找表又可具体细分为L…

【RTT驱动框架分析02】-串口驱动分析

串口驱动学习 0.串口驱动的使用方法 //定义一个时间 struct rt_event system_event; #define SYS_EVENT_UART_RX_FINISH 0x00000001 /* UART receive data finish event *//*串口接收回调函数 Receive data callback function */ static rt_err_t uart_input(rt_device_t …

centos7安装tomcat

安装tomcat 必须依赖 JDK 环境,一定要提前装好JDK保证可以使用 一、下载安装包 到官网下载 上传到linux 服务器 二、安装tomcat 创建tomcat 文件夹 mkdir -p /usr/local/tomcat设置文件夹权限 chmod 757 tomcat将安装包上传至 新建文件夹 解压安装包 tar zx…

乐划锁屏充分发挥强创新能力,打造内容业新生态

乐划锁屏作为新型内容媒体,在这一市场有着众多独特的优势,不仅能够通过多场景的联动给内容创作者带来了更多可能性,还促进了更多优质作品的诞生,为用户带来更加丰富多彩的锁屏使用体验。 作为OPPO系统原生的OS应用,乐划锁屏一直致力于打造为用户提供至美内容的内容平台,吸引了全…

Echarts入门实例

Echarts是一个基于JavaScript的开源可视化库,用于构建交互式和可定制的图表和图形。它由百度开发并维护,提供了丰富多样的图表类型和强大的功能,使开发者能够简单快速地创建各种各样的数据可视化。 Echarts支持常见的图表类型,如折…

730. 机器人跳跃问题

输入样例1: 5 3 4 3 2 4输出样例1: 4输入样例2: 3 4 4 4输出样例2: 4输入样例3: 3 1 6 4输出样例3: 3代码 //首先我们要分情况讨论 //1.后面的大:EE-(h-E)2E-h //2.后面的小:…

idea插件开发-自定义语言03-Parse and PSI

在 IntelliJ 平台中解析文件是一个两步过程: 首先,构建抽象语法树 (AST),定义程序的结构。AST 节点由 IDE 在内部创建,具体是由类ASTNode类来创建的。 每个 AST 节点都有一个关联的元素类弄IElementType实例,元素类型…