EP4260177A1 - Protection matérielle de ressources de fonction virtuelle - Google Patents
Protection matérielle de ressources de fonction virtuelleInfo
- Publication number
- EP4260177A1 EP4260177A1 EP21902835.4A EP21902835A EP4260177A1 EP 4260177 A1 EP4260177 A1 EP 4260177A1 EP 21902835 A EP21902835 A EP 21902835A EP 4260177 A1 EP4260177 A1 EP 4260177A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- virtual function
- subset
- state
- resources
- access
- 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
- 238000012545 processing Methods 0.000 claims abstract description 57
- 239000000872 buffer Substances 0.000 claims abstract description 34
- 230000004044 response Effects 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 20
- 230000006870 function Effects 0.000 abstract description 85
- 230000003863 physical function Effects 0.000 description 28
- 230000008901 benefit Effects 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Definitions
- Processing units such as graphics processing units (GPUs) support virtualization that allows multiple virtual machines to use the hardware resources of the processing unit. Each virtual machine executes as a separate process that uses the hardware resources of the processing unit. Some virtual machines implement an operating system that allows the virtual machine to emulate an actual machine. Other virtual machines are designed to execute code in a platform-independent environment.
- a hypervisor creates and runs the virtual machines, which are also referred to as guest machines or guests.
- the virtual environment implemented on the processing unit provides virtual functions to other virtual components implemented on a physical machine.
- a single physical function implemented in the processing unit is used to support one or more virtual functions. The physical function allocates the virtual functions to different virtual machines on the physical machine on a time-sliced basis.
- the physical function allocates a first virtual function to a first virtual machine in a first time interval and a second virtual function to a second virtual machine in a second, subsequent time interval.
- a physical function in the processing unit supports as many as thirty-one virtual functions, although more or fewer virtual functions are supported in other cases.
- the single root input/output virtualization (SR IOV) specification allows multiple virtual machines (VMs) to share a processor interface to a single bus, such as a peripheral component interconnect express (PCIe) bus. Components access the virtual functions by transmitting requests over the bus.
- PCIe peripheral component interconnect express
- FIG. 1 is a block diagram of a processing system that includes a graphics processing unit (GPU) that implements sharing of physical functions in a virtualized environment according to some embodiments.
- GPU graphics processing unit
- FIG. 2 is a block diagram of a processing system that provide selective access to resources by virtual functions (VFs) according to some embodiments.
- VFs virtual functions
- FIG. 3 is a block diagram of a state machine that is used to determine the state of a VF and selectively enable resource access by the VF according to some embodiments.
- the hardware resources of the GPU are partitioned according to SR-IOV using a physical function (PF) and one or more virtual functions (VFs).
- PF physical function
- VFs virtual functions
- Each virtual function is associated with a single physical function so that the virtual function is implemented using the physical resources and circuitry of the associated physical function.
- PF physical function
- VFs virtual functions
- a physical function is used by native user mode and kernel mode drivers and all virtual functions are disabled. All the GPU resources are mapped to the physical function via trusted access.
- the physical function is used by a hypervisor (host VM) and the GPU exposes a certain number of virtual functions as per the PCIe SR-IOV standard, such as one virtual function per guest VM.
- host VM hypervisor
- Each virtual function is assigned to the guest VM by the hypervisor.
- Subsets of the GPU resources are mapped to the virtual functions and the subsets are partitioned to include a frame buffer, context registers, a doorbell aperture, and one or more mailbox registers used for VF-PF synchronization.
- access to the frame buffer, context registers, and doorbell allocated to the VF is enabled by the host driver.
- the host driver concurrently writes information to the frame buffer, the context registers, or the doorbell on behalf of the VF that owns these resources.
- the content of the resources can become corrupted or race conditions can be created by successive uncoordinated writes to the resources by the VF and the host driver. Corruption or race conditions can also be created during a reset of the VF.
- FIGs. 1 -3 disclose techniques for reducing or avoiding corruption and race conditions in a processing unit resulting from concurrent access by a host driver and a virtual function (VF) to resources allocated to the VF by selectively enabling access to subsets of the resources by the VF depending on an operational state of the processing unit.
- the subsets of the resources include a frame buffer, one or more context registers, a doorbell, and one or more mailbox registers.
- the host driver enables VF access to different subsets of the resources when the processing unit is in different states.
- the states include a first (default) state that disables VF access to the frame buffer, the context registers, and the doorbell, while allowing VF access to the mailbox registers.
- the host driver In a second state, the host driver enables VF access to the frame buffer, the context registers, the doorbell, and the mailbox registers. The second state is used for initialization, re-initialization, and reset of the VF.
- the host driver selectively enables VF access to subsets of the resources based on risk, security, or threat levels associated with the subsets.
- VF access to the frame buffer and the doorbell are enabled in the third set, but VF access to the context registers is disabled due to the relatively high risk associated with allowing access to the context registers.
- the processing unit transitions to the first state in response to failure of a driver or detection of an invalid or malicious driver.
- the host driver enables access to the mailbox registers, frame buffer, and doorbell and disables access to the other registers by the VF until the VF transitions to the first (default) state, e.g., in response to a reset of the driver or instal lation/initial ization of a new driver.
- GPU graphics processing units
- GPGPU general-purpose GPUs
- Al artificial intelligence
- FIG. 1 is a block diagram of a processing system 100 that includes a graphics processing unit (GPU) 105 that implements sharing of physical functions in a virtualized environment according to some embodiments.
- the GPU 105 includes one or more GPU cores 106 that independently execute instructions concurrently or in parallel and one or more shader systems 107 that support 3D graphics or video rendering.
- the shader system 107 can be used to improve visual presentation by increasing graphics rendering frame-per-second scores or patching areas of rendered images where a graphics engine did not accurately render the scene.
- a memory controller 108 provides an interface to a frame buffer 109 that stores frames during the rendering process. Some embodiments of the frame buffer 109 are implemented as a dynamic random access memory (DRAM).
- DRAM dynamic random access memory
- the frame buffer 109 can also be implemented using other types of memory including static random access memory (SRAM), nonvolatile RAM, and the like.
- SRAM static random access memory
- Some embodiments of the GPU 105 include other circuitry such as an encoder format converter, a multiformat video codec, display output circuitry that provides an interface to a display or screen, and audio coprocessor, an audio codec for encoding/decoding audio signals, and the like.
- the processing system 100 also includes a central processing unit (CPU) 115 for executing instructions.
- the CPU 1 15 include multiple processor cores 120, 121 , 122 (collectively referred to herein as “the CPU cores 120- 122”) that can independently execute instructions concurrently or in parallel.
- the GPU 105 operates as a discrete GPU (dGPU) that is connected to the CPU 1 15 via a bus 125 (such as a PCI-e bus) and a northbridge 130.
- the CPU 115 also includes a memory controller 135 that provides an interface between the CPU 115 and a memory 140.
- Some embodiments of the memory 140 are implemented as a DRAM, an SRAM, nonvolatile RAM, and the like.
- the CPU 1 15 executes instructions such as program code 145 stored in the memory 140 and the CPU 115 stores information 150 in the memory 140 such as the results of the executed instructions.
- the CPU 115 is also able to initiate graphics processing by issuing draw calls to the GPU 105.
- a draw call is a command that is generated by the CPU 1 15 and transmitted to the GPU 105 to instruct the GPU 105 render an object in a frame (or a portion of an object).
- a southbridge 155 is connected to the northbridge 130.
- the southbridge 155 provides one or more interfaces 160 to peripheral units associated with the processing system 100.
- Some embodiments of the interfaces 160 include interfaces to peripheral units such as universal serial bus (USB) devices, General Purpose I/O (GPIO), SATA for hard disk drive, serial peripheral bus interfaces like SPI, I2C, and the like.
- the GPU 105 includes a GPU virtual memory management unit with address translation controller (GPU MMU ATC) 165 and the CPU 115 includes a CPU MMU ATC 170.
- the GPU MMU ATC 165 and the CPU MMU ATC 170 provide translation of virtual memory address (VA) to physical memory address (PA) by using a multilevel translation logic and a set of translation tables maintained by operating system kernel mode driver (KMD).
- KMD operating system kernel mode driver
- the GPU MMU ATC 165 and the CPU MMU ATC 170 therefore support virtualization of GPU and CPU cores.
- the GPU 105 has its own memory management unit (MMU) which translates per-process GPU virtual addresses to physical addresses. Each process has separate CPU and GPU virtual address spaces that use distinct page tables.
- the video memory manager manages the GPU virtual address space of all processes and oversees allocating, growing, updating, ensuring residency of memory pages and freeing page tables.
- the GPU 105 also includes one or more physical functions (PFs) 175.
- the physical function 175 is a hardware acceleration function such as multimedia decoding, multimedia encoding, video decoding, video encoding, audio decoding, and audio encoding.
- the virtual environment implemented in the memory 140 supports a physical function and a set of virtual functions (VFs) exposed to the guest VMs.
- the GPU 105 further includes a set of resources (not shown in FIG. 1 in the interest of clarity) that store information associated with processing performed by kernel mode units. Subsets of the set of resources are allocated to store information associated with the virtual functions.
- the subsets of the GPU resources are mapped to the virtual functions and the subsets are partitioned to include a frame buffer, context registers, a doorbell aperture, and one or more mailbox registers used for VF-PF synchronization.
- the physical function 175 executes on behalf of one of the virtual functions for one of the guest VMs based on the information stored in a corresponding one of the subsets, as discussed in detail herein.
- Some embodiments of the GPU 105 execute a host driver that selectively enables access to the resources by the VFs based on an operational state of the GPU 105. For example, the host driver enables access to the mailbox registers for all states of the VF executing on the GPU 105. However, the host driver disables access to the frame buffer, context registers, and doorbell during a first (default) state of the VF. The host driver enables access to the frame buffer, the context registers, and the doorbell during a second state of the VF to allow the VF to perform operations related to initializing, re-initializing, or resetting the VF.
- the VF is executing normally in the third state and so the host driver selectively enables access to the subsets of the resources based on a risk level, a security level, or a threat level associated with the subsets.
- Some embodiments of the host driver enable access to the frame buffer and the doorbell, but disable access to the context registers due to the relatively high risk/threat of exposing the context registers to the VF at runtime, e.g., relative to the lower risks/threats associated with the frame buffer, the doorbell, and the mailbox registers.
- the GPU 105 implements a state machine (not shown in FIG. 1 the interest of clarity) that manages or modifies the states of the VF in the GPU 105.
- FIG. 2 is a block diagram of a processing system 200 that provide selective access to resources by VFs according to some embodiments.
- the processing system 200 is used to implement some embodiments of the processing system 100 shown in FIG. 1 .
- the processing system 200 implements a host driver 205, physical function circuitry 210, and one or more virtual functions (VFs) 215 that execute on the physical function circuitry 210, as discussed herein.
- VFs virtual functions
- the processing system 200 implements a set 220 of resources that are allocated to the VFs 215 executing on the physical function circuitry 210.
- the set 220 is partitioned into subsets of resources that are allocated to different VFs 215.
- the subset of the resources that is reserved for frame buffers is partitioned into a frame buffer subset 221 that is allocated to the VF 215 and one or more other frame buffer subsets 222 that are allocated to other virtual functions.
- the subset of the resources that is reserved for context registers is partitioned into a context subset 225 that is allocated to the VF 215 and one or more other context subsets 226 that are allocated to other virtual functions.
- the subset of the resources that is reserved for doorbells is partitioned into a doorbell 231 that is allocated to the VF 215 and one or more other doorbells 232 that are allocated to other virtual functions.
- the subset of the resources that is reserved for mailbox registers is partitioned into the mailbox subset 235 that is allocated to the VF 215 and one or more other mailbox subsets 236 that are allocated to other virtual functions.
- the host driver 205 provides signaling 240 to the VF 215 (or other virtual functions) that selectively enables the VF 215 with access to the frame buffer 221 , context registers 225, doorbell 231 , and mailbox registers 235 that are allocated to the VF 215.
- the host driver 205 concurrently writes information to one or more of the frame buffer 221 , the context registers 225, or the doorbell 231 on behalf of the VF 215 that owns these registers.
- the content of the resources can become corrupted or race conditions can be created by successive uncoordinated writes to the resources by the VF 215 and the host driver 205.
- Corruption or race conditions can also be created during a reset of the VF 215 and corresponding resources 221 , 225, 231 .
- the host driver 205 therefore uses the signaling 240 to selectively enable subsets of the set 220 of resources based on an operational state of the corresponding VF 215.
- FIG. 3 is a block diagram of a state machine 300 that is used to determine the state of a VF and selectively enable resources access by the VF according to some embodiments.
- the state machine 300 is implemented in some embodiments of the processing system 100 shown in FIG. 1 and the processing system 200 shown in FIG. 2.
- the state machine 300 provides a set of states and defines transitions between the states for the VF.
- the set of states includes a default state 305 that is applied to the VF when the conditions for the other states are not satisfied by the VF.
- the set of states also includes an “all access” state 310 that is used to initialize, re-initialize, or reset of the VF and a “partial access” state 315 that is used during runtime for the VF.
- the state machine 300 places the VF in the default state 305 if there is no other appropriate state for the VF. For example, the state machine 300 places the VF in the default state 305 in response to a world switch when the processing unit stops or suspends execution of the VF and changes to executing another VF.
- the host driver disables access to the frame buffer, the context registers, and the doorbell. The host driver also enables access to the mailbox registers in the default state 305 to support communication between the VF and the PF that implements the VF.
- the state machine 300 modifies the state of the VF to the “all access” state 310 during initialization, re-initialization, or reset of the VF. For example, the state machine 300 places the VF in the “all access” state 310 in response to the processing unit initializing the VF.
- the host driver enables access to the frame buffer, the context registers, the doorbell, and the mailbox registers when the VF is in the “all access” state 310.
- the VF can therefore perform configuration operations related to initiating or resetting the VF by writing information to the frame buffer, the context registers, the doorbell, or the mailbox registers, as necessary. Limiting the “all access” state 310 to time intervals used for initialization, re-initialization, or reset of the VF also reduces the risk of exposing the contents of the registers.
- the state machine 300 detects a failure of a driver associated with the VF or an invalid, unsupported, or malicious driver, e.g., in response to initializing the VF and the corresponding driver, the state machine 300 transitions the VF from the “all access” state 310 to the default state 305.
- the host driver disables access to the frame buffer, the context registers, and the doorbell in the default state 305 to prevent corruption or malicious modification of the contents of these resources.
- the state machine 300 remains in the default state 305 until the current driver is reinitialized with a valid driver or a new driver is loaded, in which case the state machine 300 transitions back to the “all access” state 310 to continue initializing, reinitializing, or resetting the VF.
- the state machine 300 transitions from the “all access” state 310 to the “partial access” state 315 in response to completing initialization, re-initialization, or resetting of the VF.
- the “partial access” state 315 is used during runtime of the VF and access to subsets of the resources is determined based on a risk level, a security level, or a threat level associated with the subsets.
- Some embodiments of the state machine 300 enable access to the frame buffer and the doorbell are enabled in the “partial access” state 315, but disable access to the context registers due to the relatively high risk associated with allowing access to the context registers. However, other combinations of registers are enabled or disabled in other embodiments.
- the state machine 300 transits the state of the VF back to the all access state 310 in response to a driver unload event and transits to the default state 305 in response to end of the usage VF notification or in response to the detection of end of VF usage.
- the state machine 300 transitions the VF from the “all access” state 310 to the default state 305.
- the host driver disables access to the frame buffer, the context registers, and the doorbell in the default state 305 to prevent corruption or malicious modification of the contents of these resources.
- the state machine 300 remains in the default state 305 until a new driver is loaded, in which case the state machine 300 transitions back to the “all access” state 310 to continue initializing, re-initializing, or resetting the VF.
- an apparatus includes: a plurality of resources configured to store information; physical function circuitry configured to execute a virtual function using information stored in the plurality of resources; and a processing unit configured to execute a host driver that selectively enables access to the plurality of resources by the virtual function based on an operational state of the processing unit.
- the processing unit is configured to selectively enable access to different combinations of subsets of the plurality of resources by the virtual function concurrently with the processing unit being in different operational states.
- the subsets of the plurality of resources include a first subset to implement a frame buffer, a second subset to implement at least one context register, a third subset to implement a doorbell, and a fourth subset to implement at least one mailbox register.
- the operational state of the processing unit includes one of: a first state that is a default state of the virtual function, a second state of the virtual function that is used for initialization, re-initialization, and reset of the virtual function, and a third state of the virtual function in which the virtual function is executing on the physical function circuitry.
- the host driver is configured to disable access to the first subset, the second subset, and the third subset by the virtual function and enables access to the fourth subset by the virtual function in response to the virtual function being in the first state.
- the host driver is configured to enable access to the first subset, the second subset, the third subset, and the fourth subset by the virtual function in response to the virtual function being in the second state.
- the host driver is configured to enable access to the subsets of the resources by the virtual function based on at least one of a risk level, a security level, and a threat level associated with the subsets in response to the virtual function being in the third state.
- the host driver is configured to enable access to the first subset, the third subset, and the fourth subset by the virtual function and disables access to the second subset by the virtual function in response to the virtual function being in the third state.
- a method includes: executing, on a physical function circuitry, a virtual function using information stored in a plurality of resources configured to store information; and selectively enabling, at a host driver executing on a processing unit, access to the plurality of resources by the virtual function based on an operational state of the processing unit.
- selectively enabling access to the plurality of resources includes selectively enabling access to different combinations of subsets of the plurality of resources by the virtual function concurrently with the processing unit being in different operational states.
- the subsets of the plurality of resources include a first subset to implement a frame buffer, a second subset to implement at least one context register, a third subset to implement a doorbell, and a fourth subset to implement at least one mailbox register.
- the operational state of the processing unit includes one of: a first state that is a default state of the virtual function, a second state of the virtual function that is used for initialization, re-initialization, and reset of the virtual function, and a third state of the virtual function in which the virtual function is executing on the physical function circuitry.
- selectively enabling access to the plurality of resources includes disabling access to the first subset, the second subset, and the third subset by the virtual function and enabling access to the fourth subset by the virtual function in response to the virtual function being in the first state.
- selectively enabling access to the plurality of resources includes enabling access to the first subset, the second subset, the third subset, and the fourth subset by the virtual function in response to the virtual function being in the second state.
- selectively enabling access to the plurality of resources includes enabling access to the subsets of the resources by the virtual function based on at least one of a risk level, a security level, and a threat level associated with the subsets in response to the virtual function being in the third state.
- selectively enabling access to the plurality of resources includes enabling access to the first subset, the third subset, and the fourth subset by the virtual function and disabling access to the second subset by the virtual function in response to the virtual function being in the third state.
- an apparatus includes: physical function circuitry configured to execute a virtual function using information stored in a plurality of resources; a state machine configured to determine a state of the virtual function; and a processing unit configured to execute a host driver that selectively enables access to the plurality of resources by the virtual function based on the state of the virtual function.
- the host driver is configured to selectively modify access to subsets of the plurality of resources by the virtual function in response to the state machine changing the state of the virtual function.
- the subsets of the plurality of resources include a first subset to implement a frame buffer, a second subset to implement at least one context register, a third subset to implement a doorbell, and a fourth subset to implement at least one mailbox register.
- the state of the virtual function includes one of: a first state that is a default state of the virtual function, a second state of the virtual function that is used for initialization, re-initialization, and reset of the virtual function, and a third state of the virtual function in which the virtual function is executing on the physical function circuitry.
- a computer readable storage medium may include any non-transitory storage medium, or combination of non-transitory storage media, accessible by a computer system during use to provide instructions and/or data to the computer system.
- Such storage media can include, but is not limited to, optical media (e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc), magnetic media (e.g., floppy disc , magnetic tape, or magnetic hard drive), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or Flash memory), or microelectromechanical systems (MEMS)-based storage media.
- optical media e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc
- magnetic media e.g., floppy disc , magnetic tape, or magnetic hard drive
- volatile memory e.g., random access memory (RAM) or cache
- non-volatile memory e.g., read-only memory (ROM)
- the computer readable storage medium may be embedded in the computing system (e.g., system RAM or ROM), fixedly attached to the computing system (e.g., a magnetic hard drive), removably attached to the computing system (e.g., an optical disc or Universal Serial Bus (USB)-based Flash memory), or coupled to the computer system via a wired or wireless network (e.g., network accessible storage (NAS)).
- system RAM or ROM system RAM or ROM
- USB Universal Serial Bus
- NAS network accessible storage
- certain aspects of the techniques described above may implemented by one or more processors of a processing system executing software.
- the software includes one or more sets of executable instructions stored or otherwise tangibly embodied on a non-transitory computer readable storage medium.
- the software can include the instructions and certain data that, when executed by the one or more processors, manipulate the one or more processors to perform one or more aspects of the techniques described above.
- the non-transitory computer readable storage medium can include, for example, a magnetic or optical disk storage device, solid state storage devices such as Flash memory, a cache, random access memory (RAM) or other non-volatile memory device or devices, and the like.
- the executable instructions stored on the non-transitory computer readable storage medium may be in source code, assembly language code, object code, or other instruction format that is interpreted or otherwise executable by one or more processors.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Des fonctions virtuelles sont mises en œuvre à l'aide d'une pluralité de ressources [220] et de circuits de fonction physique [210] qui exécutent une fonction virtuelle [215] à l'aide d'informations stockées dans la pluralité de ressources. Une unité de traitement [105] exécute un pilote hôte [205] qui permet sélectivement l'accès à la pluralité de ressources par la fonction virtuelle sur la base d'un état opérationnel de l'unité de traitement. Dans certains cas, une machine à états [300] détermine un état de la fonction virtuelle et le pilote hôte permet l'accès à la pluralité de ressources par la fonction virtuelle sur la base de l'état de la fonction virtuelle s'exécutant sur l'unité de traitement. Les sous-ensembles de la pluralité de ressources sont utilisés pour mettre en œuvre un tampon de trame [222], un ou plusieurs registres de contexte [225, 226], une sonnette [231], et un ou plusieurs registres de boîte aux lettres [235, 236].
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/117,530 US20220188135A1 (en) | 2020-12-10 | 2020-12-10 | Hardware-based protection of virtual function resources |
PCT/IB2021/061430 WO2022123450A1 (fr) | 2020-12-10 | 2021-12-07 | Protection matérielle de ressources de fonction virtuelle |
Publications (1)
Publication Number | Publication Date |
---|---|
EP4260177A1 true EP4260177A1 (fr) | 2023-10-18 |
Family
ID=81942516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP21902835.4A Pending EP4260177A1 (fr) | 2020-12-10 | 2021-12-07 | Protection matérielle de ressources de fonction virtuelle |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220188135A1 (fr) |
EP (1) | EP4260177A1 (fr) |
JP (1) | JP2023553070A (fr) |
KR (1) | KR20230121072A (fr) |
CN (1) | CN116685947A (fr) |
WO (1) | WO2022123450A1 (fr) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12020344B2 (en) * | 2021-05-25 | 2024-06-25 | Vizzio Technologies Pte. Ltd. | Highly parallel virtualized graphics processors |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070052715A1 (en) * | 2005-09-07 | 2007-03-08 | Konstantin Levit-Gurevich | Device, system and method of graphics processing |
US9363193B2 (en) * | 2013-11-19 | 2016-06-07 | Cavium, Inc. | Virtualized network interface for TCP reassembly buffer allocation |
US10331600B1 (en) * | 2016-03-31 | 2019-06-25 | EMC IP Holding Company LLC | Virtual I/O queuing |
US10176122B2 (en) * | 2016-10-19 | 2019-01-08 | Advanced Micro Devices, Inc. | Direct memory access authorization in a processing system |
CN107977251B (zh) * | 2016-10-21 | 2023-10-27 | 超威半导体(上海)有限公司 | 对在虚拟化系统中的共享寄存器的排他访问 |
US10509666B2 (en) * | 2017-06-29 | 2019-12-17 | Ati Technologies Ulc | Register partition and protection for virtualized processing device |
US10923082B2 (en) * | 2018-10-31 | 2021-02-16 | Ati Technologies Ulc | Maintaining visibility of virtual function in bus-alive, core-off state of graphics processing unit |
CN111506385A (zh) * | 2019-01-31 | 2020-08-07 | Ati科技无限责任公司 | 引擎抢占和复原 |
CN112395071A (zh) * | 2019-08-12 | 2021-02-23 | 北京百度网讯科技有限公司 | 用于资源管理的方法、装置、电子设备和存储介质 |
US11586567B2 (en) * | 2020-01-07 | 2023-02-21 | Vmware, Inc. | Techniques for virtualizing PF-VF mailbox communication in SR-IOV devices |
US11182150B2 (en) * | 2020-01-14 | 2021-11-23 | Pensando Systems Inc. | Zero packet loss upgrade of an IO device |
US20220029929A1 (en) * | 2020-12-08 | 2022-01-27 | Intel Corporation | Technologies that provide policy enforcement for resource access |
-
2020
- 2020-12-10 US US17/117,530 patent/US20220188135A1/en active Pending
-
2021
- 2021-12-07 EP EP21902835.4A patent/EP4260177A1/fr active Pending
- 2021-12-07 WO PCT/IB2021/061430 patent/WO2022123450A1/fr active Application Filing
- 2021-12-07 CN CN202180082888.6A patent/CN116685947A/zh active Pending
- 2021-12-07 JP JP2023534605A patent/JP2023553070A/ja active Pending
- 2021-12-07 KR KR1020237021734A patent/KR20230121072A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
CN116685947A (zh) | 2023-09-01 |
JP2023553070A (ja) | 2023-12-20 |
WO2022123450A1 (fr) | 2022-06-16 |
KR20230121072A (ko) | 2023-08-17 |
US20220188135A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846145B2 (en) | Enabling live migration of virtual machines with passthrough PCI devices | |
JP5608243B2 (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
JP5170782B2 (ja) | ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ | |
US20200409732A1 (en) | Sharing multimedia physical functions in a virtualized environment on a processing unit | |
JP6411494B2 (ja) | 仮想マシンにおけるページフォールトインジェクション | |
US20150178497A1 (en) | Strongly Isolated Malware Scanning Using Secure Virtual Containers | |
US20070052715A1 (en) | Device, system and method of graphics processing | |
US8132167B2 (en) | Context based virtualization | |
US10162657B2 (en) | Device and method for address translation setting in nested virtualization environment | |
KR20130111593A (ko) | 가상화를 통한 스마트 장치의 직접적인 공유 | |
US11003588B2 (en) | Networked input/output memory management unit | |
US11194735B2 (en) | Technologies for flexible virtual function queue assignment | |
US11256530B2 (en) | Targeted page migration for guest virtual machine | |
US10923082B2 (en) | Maintaining visibility of virtual function in bus-alive, core-off state of graphics processing unit | |
US20220188135A1 (en) | Hardware-based protection of virtual function resources | |
US9766918B2 (en) | Virtual system device identification using GPU to host bridge mapping | |
US10140148B1 (en) | Copy based IOMMU emulation for out-of-process emulated devices | |
US20200201691A1 (en) | Enhanced message control banks | |
US10430223B2 (en) | Selective monitoring of writes to protected memory pages through page table switching | |
KR101077908B1 (ko) | 서버 가상화 장치 | |
US20220197679A1 (en) | Modifying device status in single virtual function mode | |
US11188367B2 (en) | Guest operating system physical memory page protection using hypervisor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
17P | Request for examination filed |
Effective date: 20230620 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
DAV | Request for validation of the european patent (deleted) | ||
DAX | Request for extension of the european patent (deleted) |