CN117891763A - 一种多用户驱动与PCIe设备的信息交互方法和装置 - Google Patents
一种多用户驱动与PCIe设备的信息交互方法和装置 Download PDFInfo
- Publication number
- CN117891763A CN117891763A CN202410071086.0A CN202410071086A CN117891763A CN 117891763 A CN117891763 A CN 117891763A CN 202410071086 A CN202410071086 A CN 202410071086A CN 117891763 A CN117891763 A CN 117891763A
- Authority
- CN
- China
- Prior art keywords
- user
- lock
- drive
- flag bit
- pcie
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000003993 interaction Effects 0.000 title claims abstract description 60
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000002093 peripheral effect Effects 0.000 title description 2
- 230000000875 corresponding effect Effects 0.000 description 24
- 201000002832 Lewy body dementia Diseases 0.000 description 8
- 238000010586 diagram Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/376—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a contention resolving method, e.g. collision detection, collision avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Automation & Control Theory (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种多用户驱动与PCIe设备的信息交互方法和装置,该方法包括:接收用户驱动的PCIe设备访问请求,通过所述用户驱动对应的地址空间读取驱动抢锁标志位;当所述驱动抢锁标志位无效时,确定所述用户驱动抢锁成功,将驱动抢锁标志位置为有效,并将用户驱动对应的抢锁成功标志位置为有效,然后通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令;当访问命令下发完成时,通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,在完成所述访问命令的执行后清除所述寄存器组,并将所述驱动抢锁标志位置为无效。本发明的技术方案提高了多个用户驱动对PCIe设备访问的安全性。
Description
技术领域
本发明属于设备虚拟化领域,特别涉及一种多用户驱动与PCIe设备的信息交互方法和装置。
背景技术
PCIe接口有着广泛的应用场景,如存储场景、AI智能场景等。随着虚拟化场景的应用,多个用户同时使用一个PCIe设备的情况越来越普遍,通常会在一个PCIe设备上虚拟出多个相同功能的设备,同时给主机侧多个用户使用,在每个用户的视角都是一个完整的PCIe设备。例如,在PCIe网卡设备场景中,主机可以同时运行多个用户的驱动程序,多用户驱动同时使用同一个网卡设备。在工作过程中,多用户驱动会通过同一个PCIe链路访问自己用户的网卡信息,诸如用户各自的队列信息和配置项。
在信息交互中,由于使用的是同一个PCIe链路通道,需要保证每个用户都能有访问机会,又要保证互相不影响。在多用户访问时,也需要保证每个用户的数据隐私,当前用户的数据信息不会被其他用户访问。
将实际PCIe设备虚拟化为多个PCIe设备可以通过以下两种方式实现,一种方式是将每个逻辑通道(function)虚拟为一个PCIe设备,主机侧将每个function对应一个用户驱动,每个用户驱动通过function基地址寄存器(BAR)调用PCIe设备业务。以网卡为例,每个用户驱动可以拥有自己独立的网卡和远端进行通讯。另一种方式是将物理功能(PF)中BAR的不同地址段虚拟出多个PCIe设备。两种方式都是利用不同地址空间来虚拟化多个PCIe设备,多function的BAR和PF中BAR的多地址段统称为多地址空间,每个地址空间可以对应主机侧的一个用户驱动。
在当前多地址空间系统中,主机侧多用户驱动和PCIe设备进行信息交互,通常有两种方式,即独立资源信息交互和共享资源信息交互。
独立资源信息交互是在多地址空间设备中,主机驱动通过各自的地址空间通道与设备进行信息交互,每个地址空间拥有各自独立的资源,使得每个用户驱动可以独立与设备进行信息通讯,但在地址空间比较多的时候,资源付出的代价会比较大。参见图1,主机侧多驱动102通过PCIe链路103,访问用户各自的地址空间106,信息通过存储载体108,通过设备内微控制单元MCU 109,完成与设备固件的信息交互。
对于共享资源信息交互,主机侧的多用户驱动共享多地址空间设备的一套资源进行信息交互,多用户驱动通过抢锁与设备进行信息交互。参见图2,多用户驱动都共享存储载体208与设备固件进行信息交互。
当前的多地址空间独立资源信息交互方式,存在如下问题:在设备地址空间数量较多时,设备付出的代价就比较大,资源比较大。多用户驱动同时进行信息交互请求时,需要排队与设备固件进行通讯,导致每个用户驱动的信息交互的时间不可控。
当前的多地址空间共享资源信息交互方式,存在如下问题:每个用户驱动都可以访问共享资源,用户间信息互相可以访问共享资源,没有进行多用户间的数据保护隔离,存在用户信息泄密的风险。此外,不仅是主机侧多用户驱动之间需要抢锁,而且设备固件与用户驱动也要互相抢锁,导致通讯效率低下。
发明内容
本发明的目的在于提供一种多用户驱动与PCIe设备的信息交互方法和装置,旨在实现多个用户驱动和PCIe设备间的安全高效访问。
根据本发明的第一方面,提供了一种多用户驱动与PCIe设备的信息交互方法,包括:
接收用户驱动的PCIe设备访问请求,通过所述用户驱动对应的地址空间读取驱动抢锁标志位;
当所述驱动抢锁标志位无效时,确定所述用户驱动抢锁成功,将所述驱动抢锁标志位置为有效,并将所述用户驱动对应的抢锁成功标志位置为有效,然后通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令;
当访问命令下发完成时,通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,在完成所述访问命令的执行后清除所述寄存器组,并将所述驱动抢锁标志位置为无效。
优选地,在所述通过所述用户驱动对应的地址空间读取驱动抢锁标志位之后,进一步包括:
当所述驱动抢锁标志位有效时,确定所述用户驱动抢锁失败,禁止该用户驱动访问所述寄存器组,并重试读取驱动抢锁标志位的操作。
优选地,所述通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令,进一步包括:
如果是所述用户驱动对PCIe设备的写操作,则将写入命令、地址和数据分别写入所述寄存器组中命令域、地址域和数据域;
如果是所述用户驱动对PCIe设备的读操作,则将读取命令和地址分别写入所述寄存器组中命令域和地址域。
优选地,所述通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,进一步包括:
通过所述用户驱动更新驱动完成标志位,将其置为有效;
当硬件逻辑检测到所述驱动完成标志位跳变为有效时,上报中断给所述微控制单元:
解析所述中断,读取并解析所述寄存器组的访问命令信息,以执行所述访问命令。
优选地,所述清除所述寄存器组,并将所述驱动抢锁标志位置为无效,进一步包括:
当完成访问命令执行后,将固件操作完成标志位置为有效;
当用户驱动通过对应地址空间读取固件操作完成标志位为有效时,确定设备完成命令执行,通过所述用户驱动对应的地址空间将所述驱动抢锁标志位、驱动完成标志位和固件操作完成标志位置为无效,将所述寄存器组清除为初始值。
根据本发明的第二方面,提供了一种多用户驱动与PCIe设备的信息交互装置,包括:
请求单元,用于接收用户驱动的PCIe设备访问请求,通过所述用户驱动对应的地址空间读取驱动抢锁标志位;
下发单元,用于当所述驱动抢锁标志位无效时,确定所述用户驱动抢锁成功,将所述驱动抢锁标志位置为有效,并将所述用户驱动对应的抢锁成功标志位置为有效,然后通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令;
完成单元,用于当访问命令下发完成时,通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,在完成所述访问命令的执行后清除所述寄存器组,并将所述驱动抢锁标志位置为无效。
相比于相关技术,本发明的技术方案具备以下优点:
首先,多用户驱动共享一套资源,以较小的资源代价,实现多个用户驱动和PCIe设备间的安全访问。其次,多用户驱动间进行抢锁,而设备固件不参与抢锁,提高了主机驱动的访问效率。在用户驱动抢到锁后,设备固件可以专门为该用户驱动服务,提高了信息交互时间的可控性。本发明还支持多用户间抢锁超时机制,超时自动释放锁。使得所有用户都有抢锁的机会。此外,多用户驱动间通过多地址空间(多function或多地址段)访问是相互隔离的,相互之间不能访问其他用户的数据,保护用户隐私,提高了安全性。而且支持防攻击安全保护,防止其他用户驱动的恶意攻击,仅有抢到锁的用户可以访问信息交互存储载体。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可以通过在说明书、权利要求书以及附图中所指出的结构和流程来实现和获取。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单介绍,显而易见的是,下面描述中的附图是本发明的某些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
图1是根据相关技术的多地址空间独立资源信息交互图。
图2是根据相关技术的多地址空间共享资源信息交互图。
图3是根据本发明的多用户驱动与PCIe设备的信息交互方法的总体流程图。
图4是根据本发明的信息交互存储载体结构图。
图5是根据本发明的用户驱动和PCIe设备信息交互流程图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
基于以上分析,本发明提出一种多用户驱动与PCIe设备的信息交互方法和装置,使用一套资源实现多用户驱动和PCIe设备进行信息交互,多用户驱动互不影响,实现各个用户驱动间的隐私保护和高效的信息交互。如图2所示,在PCIe系统中,将PCIe设备虚拟出多个同类型设备,主机侧多个用户驱动程序同时使用同一个PCIe设备,每个用户驱动看到的都是一个功能完备的PCIe设备。在工作过程中,每个用户驱动配置各自的虚拟设备,或从虚拟设备获取信息。对于实际的PCIe设备,就是多个用户驱动同时与同一个PCIe设备来进行信息交互。
图2中,主机201中运行多个用户驱动202,同时与PCIe设备204进行信息交互,PCIe控制器205区分多个地址空间206,将所有地址空间全部映射到同一个存储载体208,多用户驱动和多个地址空间一一对应,每个地址空间提供给一个用户驱动访问,各自的地址空间互相隔离,互不影响,多用户驱动可访问的PCIe设备的业务资源独立。以网卡为例,PCIe设备中会有多个队列209进行网卡业务的操作,每个用户驱动拥有自己各自的队列209。
在用户驱动需要配置PCIe设备中各自资源,或者读取各自资源的信息时,用户驱动经过片内总线207向PCIe设备的信息交互存储载体208进行抢锁,抢锁成功后,用户驱动开始向存储载体下发命令,存储载体收到用户驱动的命令后,通知固件MCU 210,该固件执行对应的动作,从存储载体读取命令、解析命令、执行命令,固件执行命令完成后,用户驱动从存储载体读取信息和状态,从而用户驱动完成和设备间的信息交互。
用户驱动可以对PCIe设备进行配置或读取。其中,在用户驱动配置PCIe设备时,MCU从存储载体中读取信息,MCU解析信息后,MCU配置对应用户驱动的队列、表项等内容,MCU最后将写执行状态写入存储载体中,用户驱动查询写执行状态。而当用户驱动读PCIe设备时,MCU解析信息后,MCU读取对应队列、表项信息,并将信息和执行状态写入存储载体中,用户驱动从存储载体读取信息和状态。
在用户驱动A需要访问信息交互存储载体时,用户驱动A向信息交互存储载体申请访问权限。用户驱动A只有在获得授权时,用户驱动A才能访问信息交互存储载体,此时其他用户驱动对信息交互存储载体的访问无效,且其他用户驱动无法查看信息交互存储载体的内容,保证用户驱动A的信息隐私。用户驱动A访问完成后,释放权限,其他用户驱动才能抢到信息交互存储载体的访问权限。
所述信息交互操作支持扩展定义,如扩展定义原子操作、加法操作等。参见图3的流程图,本发明提供的所述多用户驱动与PCIe设备的信息交互方法包括:
步骤1001:接收用户驱动的PCIe设备访问请求,通过所述用户驱动对应的地址空间读取驱动抢锁标志位。
如图4,DLB 303是地址空间对应的驱动抢锁成功标志位(Driver lock bit),DOVB304是驱动下发命令完成标志位,FOVB 305是固件操作完成标志位。寄存器组306是命令承载体,包括命令域、地址域、状态域、数据域,其中命令域存储定义要执行的操作,地址域存储要操作的地址,状态存储固件执行完成后的状态,数据存储操作数据或信息,命令、地址、状态、数据的长度和含义可根据需要进行定义。上述域段的含义、长度可以根据不同应用场景来定义。
以下结合通过图5的具体示例来说明本发明的用户驱动和PCIe设备进行信息交互的方法。在图5的步骤401,用户驱动开始抢锁动作,用户驱动通过对应的地址空间206读取驱动抢锁标志位DLB 302。
步骤1002:当所述驱动抢锁标志位无效时,确定所述用户驱动抢锁成功,将所述驱动抢锁标志位置为有效,并将所述用户驱动对应的抢锁成功标志位置为有效,然后通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令。
在图5的步骤402,用户驱动通过读取DLB 302来判断是否抢到锁,如果DLB无效,表示没有用户驱动正在操作设备,成功抢到锁,进入步骤404,获取信息交互存储载体访问权限,如果DLB有效,表示抢锁失败,进入步骤403。
在步骤403,当用户驱动抢锁失败时,跳回步骤401重试抢锁。
在步骤404,用户驱动抢锁成功后,逻辑硬件将DLB 302置为有效,并将对应用户驱动的抢锁成功标志位DLB303置为有效。在步骤405,用户驱动向寄存器组306写数据下发命令,并持续将命令下发完成。例如,如果是写操作,则将寄存器组306中的命令、地址、数据写完成,将写入命令、地址和数据分别写入所述寄存器组中命令域、地址域和数据域;如果是读操作,则将寄存器组306中的命令、地址写完成,将读取命令和地址分别写入所述寄存器组中命令域和地址域;
其中,对应的用户驱动的抢锁成功标志位DLB 303有效后,其他用户驱动通过其对应地址空间访问信息交互存储载体301时,只能获取到无效数据,以此保护用户间的信息隐私。
步骤1003:当访问命令下发完成时,通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,在完成所述访问命令的执行后清除所述寄存器组,并将所述驱动抢锁标志位置为无效。
在步骤406,用户驱动命令下发完成后,用户驱动更新驱动完成标志DOVB 304置为有效,表示命令下发完成。在步骤407,硬件逻辑检测到DOVB 304跳变为有效,上报中断给MCU 210。
在步骤408,固件解析中断,固件读取寄存器组306信息,解析命令并执行命令。例如,如果是写操作,固件将数据域的内容写入地址对应的空间或表项;如果是读操作,固件读取地址对应的空间数据,写入数据中;最后固件更新读写操作的执行情况到状态域中。固件完成命令执行后,固件将FOVB 305置为有效。
在步骤409,用户驱动通过对应地址空间读取FOVB 305,确定设备完成命令执行,用户驱动获取寄存器组306的状态、数据,完成与设备的信息交互。
在步骤410,用户驱动通过对应地址空间清除DLB 302为无效,用户驱动释放锁。硬件逻辑将对应DLB 303、DOVB 304、FOVB 305都清除为无效,清除寄存器组306为初始值,以使清除完成后,新的用户驱动抢到锁后,读取寄存器组306信息交互存储载体时获取到的是初始值,不会获取到上个用户的数据,保护先前进行操作的用户数据隐私。
在进一步优选的实施例中,当一个用户驱动抢到锁后,设备固件开启超时功能,防止一个用户驱动长时间占用锁,时间超时后,固件可强制此用户释放锁,给其他用户驱动使用。
可见,本发明提出的多用户驱动与PCIe设备的信息交互方法,相比于相关技术具备以下优点:
首先,多用户驱动共享一套资源,以较小的资源代价,实现多个用户驱动和PCIe设备间的安全访问。其次,多用户驱动间进行抢锁,而设备固件不参与抢锁,提高了主机驱动的访问效率。在用户驱动抢到锁后,设备固件可以专门为该用户驱动服务,提高了信息交互时间的可控性。本发明还支持多用户间抢锁超时机制,超时自动释放锁。使得所有用户都有抢锁的机会。此外,多用户驱动间通过多地址空间(多function或多地址段)访问是相互隔离的,相互之间不能访问其他用户的数据,保护用户隐私,提高了安全性。而且支持防攻击安全保护,防止其他用户驱动的恶意攻击,仅有抢到锁的用户可以访问信息交互存储载体。
相应地,本发明在第二方面提供了一种多用户驱动与PCIe设备的信息交互装置,包括:
请求单元,用于接收用户驱动的PCIe设备访问请求,通过所述用户驱动对应的地址空间读取驱动抢锁标志位;
下发单元,用于当所述驱动抢锁标志位无效时,确定所述用户驱动抢锁成功,将所述驱动抢锁标志位置为有效,并将所述用户驱动对应的抢锁成功标志位置为有效,然后通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令;
完成单元,用于当访问命令下发完成时,通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,在完成所述访问命令的执行后清除所述寄存器组,并将所述驱动抢锁标志位置为无效。
上述装置可通过上述第一方面的实施例提供的多用户驱动与PCIe设备的信息交互方法实现,具体的实现方式可以参见第一方面的实施例中的描述,在此不再赘述。
可以理解,上述实施例中描述的电路结构、名称和参数仅为举例。本领域技术人员还可以根据使用需要,对以上多个实施例的结构特征进行容易想到的组合和调整,而不应将本发明的构思限制于上述示例的具体细节。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种多用户驱动与PCIe设备的信息交互方法,其特征在于,包括:
接收用户驱动的PCIe设备访问请求,通过所述用户驱动对应的地址空间读取驱动抢锁标志位;
当所述驱动抢锁标志位无效时,确定所述用户驱动抢锁成功,将所述驱动抢锁标志位置为有效,并将所述用户驱动对应的抢锁成功标志位置为有效,然后通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令;
当访问命令下发完成时,通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,在完成所述访问命令的执行后清除所述寄存器组,并将所述驱动抢锁标志位置为无效。
2.根据权利要求1所述的多用户驱动与PCIe设备的信息交互方法,其特征在于,在所述通过所述用户驱动对应的地址空间读取驱动抢锁标志位之后,进一步包括:
当所述驱动抢锁标志位有效时,确定所述用户驱动抢锁失败,禁止该用户驱动访问所述寄存器组,并重试读取驱动抢锁标志位的操作。
3.根据权利要求1所述的多用户驱动与PCIe设备的信息交互方法,其特征在于,所述通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令,进一步包括:
如果是所述用户驱动对PCIe设备的写操作,则将写入命令、地址和数据分别写入所述寄存器组中命令域、地址域和数据域;
如果是所述用户驱动对PCIe设备的读操作,则将读取命令和地址分别写入所述寄存器组中命令域和地址域。
4.根据权利要求1所述的多用户驱动与PCIe设备的信息交互方法,其特征在于,所述通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,进一步包括:
通过所述用户驱动更新驱动完成标志位,将其置为有效;
当硬件逻辑检测到所述驱动完成标志位跳变为有效时,上报中断给所述微控制单元;
解析所述中断,读取并解析所述寄存器组的访问命令信息,以执行所述访问命令。
5.根据权利要求4所述的多用户驱动与PCIe设备的信息交互方法,其特征在于,所述清除所述寄存器组,并将所述驱动抢锁标志位置为无效,进一步包括:
当完成访问命令执行后,将固件操作完成标志位置为有效;
当用户驱动通过对应地址空间读取固件操作完成标志位为有效时,确定设备完成命令执行,通过所述用户驱动对应的地址空间将所述驱动抢锁标志位、驱动完成标志位和固件操作完成标志位置为无效,将所述寄存器组清除为初始值。
6.一种多用户驱动与PCIe设备的信息交互装置,其特征在于,包括:
请求单元,用于接收用户驱动的PCIe设备访问请求,通过所述用户驱动对应的地址空间读取驱动抢锁标志位;
下发单元,用于当所述驱动抢锁标志位无效时,确定所述用户驱动抢锁成功,将所述驱动抢锁标志位置为有效,并将所述用户驱动对应的抢锁成功标志位置为有效,然后通过所述用户驱动向所述PCIe设备的寄存器组下发访问命令;
完成单元,用于当访问命令下发完成时,通知所述PCIe设备的微控制单元执行所述寄存器组中的访问命令,在完成所述访问命令的执行后清除所述寄存器组,并将所述驱动抢锁标志位置为无效。
7.根据权利要求6所述的多用户驱动与PCIe设备的信息交互装置,其特征在于,所述请求单元,进一步用于:
当所述驱动抢锁标志位有效时,确定所述用户驱动抢锁失败,禁止该用户驱动访问所述寄存器组,并重试读取驱动抢锁标志位的操作。
8.根据权利要求6所述的多用户驱动与PCIe设备的信息交互装置,其特征在于,所述下发单元,进一步用于:
如果是所述用户驱动对PCIe设备的写操作,则将写入命令、地址和数据分别写入所述寄存器组中命令域、地址域和数据域;
如果是所述用户驱动对PCIe设备的读操作,则将读取命令和地址分别写入所述寄存器组中命令域和地址域。
9.根据权利要求6所述的多用户驱动与PCIe设备的信息交互装置,其特征在于,所述完成单元,进一步用于:
通过所述用户驱动更新驱动完成标志位,将其置为有效;
当硬件逻辑检测到所述驱动完成标志位跳变为有效时,上报中断给所述微控制单元;
解析所述中断,读取并解析所述寄存器组的访问命令信息,以执行所述访问命令。
10.根据权利要求9所述的多用户驱动与PCIe设备的信息交互方法,其特征在于,所述完成单元,进一步用于:
当完成访问命令执行后,将固件操作完成标志位置为有效;
当用户驱动通过对应地址空间读取固件操作完成标志位为有效时,确定设备完成命令执行,通过所述用户驱动对应的地址空间将所述驱动抢锁标志位、驱动完成标志位和固件操作完成标志位置为无效,将所述寄存器组清除为初始值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410071086.0A CN117891763A (zh) | 2024-01-17 | 2024-01-17 | 一种多用户驱动与PCIe设备的信息交互方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410071086.0A CN117891763A (zh) | 2024-01-17 | 2024-01-17 | 一种多用户驱动与PCIe设备的信息交互方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117891763A true CN117891763A (zh) | 2024-04-16 |
Family
ID=90651805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410071086.0A Pending CN117891763A (zh) | 2024-01-17 | 2024-01-17 | 一种多用户驱动与PCIe设备的信息交互方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117891763A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140229769A1 (en) * | 2013-02-13 | 2014-08-14 | Lsi Corporation | Methods and structure for single root input/output virtualization enhancement in peripheral component interconnect express systems |
CN116679986A (zh) * | 2023-08-02 | 2023-09-01 | 苏州浪潮智能科技有限公司 | 寄存器的访问方法、装置、服务器、系统及存储介质 |
CN116756070A (zh) * | 2023-08-15 | 2023-09-15 | 无锡沐创集成电路设计有限公司 | PCIe互联系统、数据处理方法、设备、存储介质及产品 |
-
2024
- 2024-01-17 CN CN202410071086.0A patent/CN117891763A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140229769A1 (en) * | 2013-02-13 | 2014-08-14 | Lsi Corporation | Methods and structure for single root input/output virtualization enhancement in peripheral component interconnect express systems |
CN116679986A (zh) * | 2023-08-02 | 2023-09-01 | 苏州浪潮智能科技有限公司 | 寄存器的访问方法、装置、服务器、系统及存储介质 |
CN116756070A (zh) * | 2023-08-15 | 2023-09-15 | 无锡沐创集成电路设计有限公司 | PCIe互联系统、数据处理方法、设备、存储介质及产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11321452B2 (en) | Execution environment virtualization method and apparatus and virtual execution environment access method and apparatus | |
US8612633B2 (en) | Virtual machine fast emulation assist | |
JP5005111B2 (ja) | 複数の論理パーティションと自己仮想化入出力デバイスとのインターフェース接続 | |
US7996484B2 (en) | Non-disruptive, reliable live migration of virtual machines with network data reception directly into virtual machines' memory | |
US8387043B2 (en) | USB port shared control method in a plurality of virtual machines | |
JP4087072B2 (ja) | ストレージシステム及び仮想プライベートボリューム制御方法 | |
US20170177854A1 (en) | Method and Apparatus for On-Demand Isolated I/O Channels for Secure Applications | |
US20110179413A1 (en) | Guest/Hypervisor Interrupt Coalescing for Storage Adapter Virtual Function in Guest Passthrough Mode | |
CN107977251B (zh) | 对在虚拟化系统中的共享寄存器的排他访问 | |
US7853957B2 (en) | Doorbell mechanism using protection domains | |
JP5118706B2 (ja) | トラステッドプラットフォームモジュールを共有するためのシステム及び方法 | |
JPH0689253A (ja) | 汎用のオペレーティング・システム・インターフェースを有するデバイス・ドライバを含むデータ処理システム | |
CN108885572B (zh) | 安全驱动程序平台 | |
CN102177509A (zh) | 虚拟化存储分配方法 | |
US20210096901A1 (en) | Shared memory buffers to submit an interrupt request worklist to a back end virtual machine | |
US20200201691A1 (en) | Enhanced message control banks | |
CN101369258B (zh) | 输入输出控制系统 | |
CN117891763A (zh) | 一种多用户驱动与PCIe设备的信息交互方法和装置 | |
EP3899729B1 (en) | Storing microcode for a virtual function in a trusted memory region | |
KR20140071205A (ko) | 하이퍼바이저를 이용한 프로세스 메모리 보안 시스템 및 방법 | |
CN109753365A (zh) | 一种Windows内核大数据高速通信技术 | |
CN117573041A (zh) | 一种改进vhost-scsi提升虚拟化存储性能的方法 | |
JP2002535745A (ja) | セキュリティクリティカル機能をデータ処理するシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |