# US 12,117,910 B2 · Virtual device composition in a scalable input/output (I/O) virtualization (S-IOV) architecture

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,117,910 B2
- Document ID: US12117910B2
- Status: Granted
- Kind: B2
- Application number: 17/868,596
- Filed: 2022-07-19
- Published: 2022-11-03
- Granted: 2024-10-15
- Earliest claimed: 2018-08-22
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Nrupal Jani; Manasi Deval; Anjali Singhai Jain; Parthasarathy Sarangam; Mitu Aggarwal; Neerav Parikh; Alexander H. Duyck; Kiran Patil; Rajesh M. Sankaran; Sanjay K. Kumar; Utkarsh Y. Kakaiya; Philip Lantz; Kun Tian
- Web page: https://patentgrep.com/patent/US12117910B2

## CPC

- G06F 11/2023: {Failover techniques}
- G06F 3/0622: {in relation to access}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0673: {Single storage device}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/4856: {resumption being on a different machine, e.g. task migration, virtual machine migration (G06F9/5088 takes precedence)}
- G06F 9/5016: {the resource being the memory}
- G06F 11/2007: {using redundant communication media}
- G06F 13/1668: {Details of memory controller}
- G06F 13/4068: {Electrical coupling}
- G06F 13/4221: {being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus}
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F 15/17331: {Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F 2201/805: Real-time
- G06F 2201/815: Virtual
- G06F 2213/0026: PCI express
- G06F 2213/0058: Bus-related hardware virtualisation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Examples may include a method of instantiating a virtual machine, instantiating a virtual device to transmit data to and receive data from assigned resources of a shared physical device; and assigning the virtual device to the virtual machine, the virtual machine to transmit data to and receive data from the physical device via the virtual device.

## Claims

### Claim 1

A method comprising:
in a processor-executed operating system (OS) compliant with Scalable Input/Output (I/O) Virtualization (S-IOV):
a Virtual Device Composition Module (VDCM) performing:
utilizing a virtual device (VDEV) to transmit data to resources of a shared physical device and receive data from the resources by accessing an Assignable Device Interface (ADI) and
assigning the virtual device to a virtual machine, the virtual machine to access the resources of the shared physical device by accessing the ADI, wherein
the OS comprises the VDCM,
the processor executes the VDCM, and
based on the shared physical device comprising a network controller device, the ADI is associated with receive and transmit queues to store packets.

### Claim 2 (depends on 1)

The method of claim 1, comprising:
associating memory mapped I/O (MMIO) registers with the ADI, wherein the MMIO registers are contained in one or more of address ranges mapped by Peripheral Component Interface (PCI) Express Base Address Registers (BARs) of the virtual device.

### Claim 3 (depends on 1)

The method of claim 1, comprising:
a virtual machine monitor (VMM) creating the virtual machine.

### Claim 4 (depends on 1)

The method of claim 1, wherein the virtual machine to access the resources of the shared physical device by accessing the ADI comprises access to one or more of: transmit/receive queues, command and completion queues, or compute contexts.

### Claim 5 (depends on 1)

The method of claim 1, wherein requests from associated with the ADI are also associated with:
a Requester-ID for a physical function (PF) that is shared with at least one other ADI,
a Process Address Space Identifier (PASID) to distinguish from the at least one other ADI, and
Interrupt Message Storage (IMS) that store interrupt messages for the ADI.

### Claim 6 (depends on 1)

The method of claim 1, wherein based on the shared physical device comprising a storage controller device and the ADI is associated with command and completion queue pairs.

### Claim 7 (depends on 1)

The method of claim 1, wherein based on the shared physical device comprising an accelerator, the ADI is associated with execution contexts.

### Claim 8

At least one non-transitory computer-readable medium comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to:
execute an operating system (OS) compliant with Scalable Input/Output (I/O) Virtualization (S-IOV) to execute a Virtual Device Composition Module (VDCM) to:
utilize a virtual device (VDEV) to transmit data to resources of a shared physical device and receive data from the resources by accessing an Assignable Device Interface (ADI) and
assign the virtual device to a virtual machine, the virtual machine to access the resources of the shared physical device by accessing the ADI, wherein
the OS comprises the VDCM,
the one or more processors execute the VDCM, and
based on the shared physical device comprising a network controller device, the ADI is associated with receive and transmit queues to store packets.

### Claim 9 (depends on 8)

The at least one non-transitory computer-readable medium of claim 8, wherein the memory mapped I/O (MMIO) registers associated with the ADI are contained in one or more of address ranges mapped by Peripheral Component Interface (PCI) Express Base Address Registers (BARs) of the virtual device.

### Claim 10 (depends on 8)

The at least one non-transitory computer-readable medium of claim 8, wherein the virtual machine to access the resources of the shared physical device by accessing the ADI comprises access to one or more of: transmit/receive queues, command and completion queues, or compute contexts.

### Claim 11 (depends on 8)

The at least one non-transitory computer-readable medium of claim 8, wherein requests associated with the ADI are also associated with:
a Requester-ID for a physical function (PF) that is shared with at least one other ADI,
a Process Address Space Identifier (PASID) to distinguish from the at least one other ADI, and
Interrupt Message Storage (IMS) that store interrupt messages for the ADI.

### Claim 12 (depends on 8)

The at least one non-transitory computer-readable medium of claim 8, comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to:
execute a virtual machine monitor (VMM) to create the virtual machine.

### Claim 13 (depends on 8)

The at least one non-transitory computer-readable medium of claim 8, wherein based on the shared physical device comprising a storage controller device, the ADI is associated with command and completion queue pairs.

### Claim 14 (depends on 8)

The at least one non-transitory computer-readable medium of claim 8, wherein based on the shared physical device comprising an accelerator, the ADI is associated with execution contexts.

### Claim 15

An apparatus comprising:
a device comprising resources accessible by a virtual machine as a Scalable Input/Output (I/O) Virtualization (S-IOV) compatible virtual device (VDEV) and by an Assignable Device Interface (ADI), wherein:
a processor-executed operating system (OS) comprises a Virtual Device Composition Module (VDCM),
the processor executes the VDCM, and
based on the device comprising a network controller device, the ADI is associated with receive and transmit queues to store packets.

### Claim 16 (depends on 15)

The apparatus of claim 15, wherein based on the device comprising a graphics processing unit, the ADI is associated with graphics contexts of a virtual-GPU device instance.

### Claim 17 (depends on 15)

The apparatus of claim 15, wherein based on the device comprising a storage controller device, the ADI is associated with command and completion queue pairs.

### Claim 18 (depends on 15)

The apparatus of claim 15, wherein based on the device comprising an accelerator, the ADI is associated with execution contexts.
