一种linux系统下显卡故障快速复现的方法技术方案

技术编号:32164430 阅读:67 留言:0更新日期:2022-02-08 15:18
本申请公开了一种linux系统下显卡故障快速复现的方法,利用linux内核提供的sysfs文件系统向显卡驱动注入测试参数,根据不同的测试参数在显卡驱动中根据需要进行各种调试。本发明专利技术首先要构建linux操作系统内核编译环境,然后编写向显卡驱动注入测试参数的源代码文件,最后在显卡驱动中需要复现、调试显卡故障的位置添加测试项,在测试项中获取测试参数并进行各种调试。采用本发明专利技术可以动态调试linux操作系统显卡驱动各个功能模块,快速复现显卡故障。对于类似于“GPU lockup”这一类复现故障概率很低的问题,往往要在严苛的环境下进行长时间的测试才能复现故障,而本发明专利技术可以动态改变环形缓冲区中的显示命令以及原始渲染数据,快速复现此类出现概率很低的显卡故障。速复现此类出现概率很低的显卡故障。速复现此类出现概率很低的显卡故障。

【技术实现步骤摘要】
一种linux系统下显卡故障快速复现的方法


[0001]本申请涉及显卡故障复现
,尤其涉及一种linux系统下显卡故障快速复现的方法。

技术介绍

[0002]显卡是个人计算机的基础组成部分之一,将计算机系统需要的显示信息进行转换,并向显示器提供逐行或隔行扫描信号,控制显示器的正确显示。显卡读取CPU存储在系统内存上的显示指令进行绘图计算,并将计算结果输出到显存。因为显卡具有独立的存储单元、计算单元、逻辑控制单元,所以当显示系统出现故障,尤其是当故障指向显卡时,故障调试起来非常困难。
[0003]近年来,随着芯片以及各种硬件的不断发展,对基础软件尤其是操作系统适配硬件的需求越来越越多,在此过程中显示系统在实际应用中出现的问题也越来越多。基于硬件平台的操作系统显示问题调试,尤其是与显卡交互的部分,对于开源显卡驱动由于得不到硬件厂商的技术支持的问题,目前没有好用的调试方法。由于GPU内部处理结果无法向操作系统报告更多有用的信息,当出现类似于“GPU lockup”导致显示器黑屏时,无法了解是由于显卡驱动、显卡硬件还是操作系统核心导致的显示问题,导致对于此类问题的定位就无从下手。

技术实现思路

[0004]本申请提供一种linux系统下显卡故障快速复现的方法,能够快速复现显卡故障导致的显示问题。
[0005]有鉴于此,本申请提供了一种linux系统下显卡故障快速复现的方法,包括以下步骤:步骤S1、构建linux操作系统内核编译环境;步骤S2、编写调试代码,包括get_inject.c文件和测试项test(),所述get_inject.c文件中的代码包括用于生成用户层向显卡驱动注入测试参数的sysfs文件,以及用于显卡驱动获取用户层注入的测试参数的get_inject()函数,所述测试项test()在显卡驱动中需要复现以及调试显卡故障的位置设置,用于调用get_inject()函数获取用户层注入的测试参数和根据参数进行测试操作;步骤S3、在测试项test()中调用get_inject()获取用户层注入的测试参数并且根据测试参数进行测试。
[0006]可选地,所述步骤S1构建内核编译环境的步骤包括:在linux操作系统中安装内核源码包;根据源码包安装后产生的spec文件,从linux操作系统yum源安装编译依赖。
[0007]可选地,用于生成用户层向显卡驱动注入测试参数的sysfs文件的代码位于get_inject.c文件中。
[0008]可选地,所述sysfs文件系统通过系统调用向显卡驱动注入测试参数。
[0009]可选地,所述显卡驱动通过环形命令流和GPU进行通信。
[0010]可选地,所述测试项test()预先在显卡驱动中的添加位置包括设置在显卡驱动的初始化过程中、设置在渲染命令流解析的过程中、设置在存储渲染命令流的内存分配过程中以及设置在CPU向显卡写渲染命令的过程中。从以上技术方案可以看出,本申请具有以下优点:本专利技术一种linux系统下显卡故障快速复现的方法,利用linux内核提供的sysfs文件系统向显卡驱动注入测试参数,根据不同的测试参数可以在显卡驱动中根据需要进行各种调试。本专利技术首先要构建linux操作系统内核编译环境,然后编写向显卡驱动注入测试参数的源代码文件,最后在显卡驱动中需要复现、调试显卡故障的位置添加测试项,在测试项中获取测试参数并进行各种调试。采用本专利技术可以动态调试linux系统显卡驱动各个功能模块,快速复现显卡故障。对于类似于“GPU lockup”这一类复现故障概率很低的问题,往往要在严苛的环境下进行长时间的测试才能复现故障,可以利用本专利技术动态改变显卡驱动的环形缓冲区中的显示命令以及原始渲染数据,快速复现出此类概率很低的显卡故障。本专利技术的灵活之处在与可以在显卡驱动中需要复现、调试显卡故障的位置设置测试项,并且根据测试要求提供测试参数,可以在操作系统运行的过程中动态测试显卡故障。也可以通过脚本进行大量的自动化测试以及问题调试,大大的提高问题解决的效率。
附图说明
[0011]为了更清楚地表达说明本专利技术实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012]图1为本说明书实施例中linux系统下显卡故障快速复现的方法的步骤示意图;图2为本说明书实施例中内核系统调用流程图;图3为本说明书实施例中显卡驱动与GPU通信流程图。
具体实施方式
[0013]为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0014]本申请实施例适用于基于国产硬件平台的linux操作系统,硬件平台包括但不限于飞腾、龙芯、申威等架构。下面,以国产中标麒麟操作系统为例,对本申请的方法做出详细介绍。
[0015]参见图1,本专利技术的技术方案包括以下步骤:步骤S1,在国产中标麒麟操作系统(以下称中标麒麟操作系统)上构建中标麒麟操作系统内核编译环境。本实施例使用龙芯处理器作为硬件平台,其他硬件平台做相应的调整即可,方法是:
1、在中标麒麟操作系统上下载中标麒麟操作系统内核源码包,本实施例使用kernel

3.10.0

3.nd7.17.src.rpm,使用rpm软件安装源码包。
[0016]2、使用yum软件根据源码包安装后产生的spec文件,从中标麒麟操作系统yum源安装编译依赖。
[0017]步骤S2,编写调试代码,也即显卡故障快速复现方法的代码get_inject.c文件。方法是:1、在get_inject.c文件中使用中标麒麟操作系统内核数据结kobj_attribute向用户层提供可编辑的多个具有不同名字的sysfs文件,在用户层编辑此sysfs文件向显卡驱动注入测试参数。测试参数可以根据实际情况灵活定义,即可以是0或1之类的实现开关功能,也可以是一串显卡渲染命令字符串,或者其他功能的测试参数。在本实施例中通过代码生成一个名为error的sysfs文件,error的值是0或1。
[0018]2、在get_inject.c文件中定义用于显卡驱动获取用户层注入的测试参数的get_inject()函数,在get_inject()函数中可以做一些参数的类型转换、错误检查等额外的功能。在本实施例中get_inject()函数返回步骤1中error文件的值。
[0019]3、在显卡驱动中需要复现、调试显卡故障的位置设置测试项test()。此测试项test()中包括两部分内容:一,调用get_inject()函数获取用户层注入的测试参数;二,根据参数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种linux系统下显卡故障快速复现的方法,其特征在于,包括以下步骤:步骤S1、构建linux操作系统内核编译环境;步骤S2、编写调试代码,包括get_inject.c文件和测试项test(),所述get_inject.c文件中的代码包括用于生成用户层向显卡驱动注入测试参数的sysfs文件,以及用于显卡驱动获取用户层注入的测试参数的get_inject()函数,所述测试项test()在显卡驱动中需要复现以及调试显卡故障的位置设置,用于调用get_inject()函数获取用户层注入的测试参数和根据参数进行测试操作;步骤S3、在测试项test()中调用get_inject()获取用户层注入的测试参数并且根据测试参数进行测试。2.根据权利要求1所述的linux系统下显卡故障快速复现的方法,其特征在于,所述步骤S1构建内核编译环境的步骤包括:在linux操作系统中安装内核源码包...

【专利技术属性】
技术研发人员:高晴峰徐斌丁成山胡志伟崔国旗
申请(专利权)人:中标软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1