DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph:
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claim(s) 1-20 is/are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
Claim 1 (similarly claim 19) recite: “disabling network optimizations, while maintaining allocation and assignment of a virtual function (“VF”) to the VM and maintaining a virtual peripheral component interconnect (“VPCI”) bus connection between a VF device and hardware resources of a host device, wherein the VF is a virtual instance of a physical network adapter that is exposed inside the VM as the VF device”. The examiner is unclear of the term “network optimizations”.
Description found in PGPub paragraph 31:
“With reference to the example data flow 200 of FIG. 2, at operation 222, VMWP 205 calls VM synthetic network adapter 210 to start disabling network optimizations. Typically, disabling network optimizations includes revoking the VF device and freeing the VF.”
Nowhere in the specification provides details on what would be considered network optimizations, moreover, how network optimizations are disabled. In addition, the examiner is unable to determine/distinguish network optimizations vs. non-network optimizations. Therefore, since network optimizations are unclear, disabling network optimizations are also unclear.
Claim 1 (similarly claims 9 and 19) recites the limitation "the synthetic network adapter". There is insufficient antecedent basis for this limitation in the claim. The examiner is unclear what synthetic network adapter, the synthetic network adapter is referring to.
Claim 9 recite: “prior to retrieving the ID of the VF and the LUID of the VF device, initializing a VM synthetic network adapter, reserving resources, and initiating a power-on-restore function;
wherein initiating the power-on-restore function comprises reading a virtual device (“VDEV”) version, reading a number of saved blocks, and reading virtual function information, wherein reading the virtual function information causes the VM synthetic network adapter to retrieve the ID of the VF and the LUID of the VF device from the runtime repository.”
The examiner is unclear how initiating a power-on-restore function which includes retrieving of the ID of the VF and the LUIC of the VF device is done prior to retrieving the ID of the VF and the LUIC of the VF device.
Claims 2-8, 10-18 and 20 are rejected based on rejection of its corresponding dependent claim.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 1-9 and 11-20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Pfefferle et al. (Pub 20230153140) (hereafter Pfefferle) in view of Dawkins et al. (Pub 20240256320) (hereafter Dawkins).
As per claim 1, Pfefferle teaches:
A system, comprising:
a processing system; and
memory coupled to the processing system, the memory comprising computer executable instructions that, when executed by the processing system, causes the system to perform a modified fast save operation for a virtual machine (“VM”), the modified fast save operation comprising: ([Fig. 2][Paragraph 8], On a host interface of a destination host, functions corresponding to those of the source host are exposed. The VM is then migrated from the source host to the destination host. The VM resumes host interface communication with the host interface of the destination host from the saved state via an emulated path provided by a hypervisor of the destination host. After resuming communication, a passthrough path of communication between the VM and the host interface of the destination host is established.)
disabling network optimizations, while maintaining allocation and assignment of a virtual function (“VF”) to the VM and maintaining a virtual peripheral component interconnect (“VPCI”) bus connection between a VF device and hardware resources of a host device, wherein the VF is a virtual instance of a physical network adapter that is exposed inside the VM as the VF device; ([Paragraph 24], A VM 304 additionally includes one or more functions 314 (e.g., virtual functions (VFs) and/or physical functions (PFs)) that represent allocable subsets of the functionality of devices, such as host interfaces 220. [Paragraph 29], FIG. 4 additionally illustrates that processing node 400a further includes a hypervisor 302a and a host interface 220a, which includes a plurality of physical and/or virtual functions 314 that can be allocated to the VMs 304 of processing node 400a. In this example, the functions 314 of host interface 220a include virtual function 0 (VF0) 314a0 and virtual function 1 (VF1) 314a1 allocated to VM 304a. [Paragraph 25], Hypervisor 302 of host data processing system 200 can present system resources that the various VMs 304 can access (e.g., disks, network adapters, and other platform elements) in a variety of different ways, including as fully virtualized devices, paravirtualized devices, and passthrough devices. In embodiments in which hypervisor 302 presents system resources to VMs 304 utilizing full virtualization, a virtualized physical device can be transparently presented to VMs 304 as fully virtualized emulated device 320. VMs 304 can access an emulated device 320 just like a physical device utilizing the same standard device driver 315 that would be utilized to access the physical device. In embodiments in which the host data processing system 200 implements paravirtualization of hardware devices, OS 310 implements one or more front-end drivers 316 to support access to functions 314 via commands issued to corresponding back-end drivers 322 provided by hypervisor 302. Back-end drivers 322, in turn, access paravirtualized (PV) devices 324 provided by hypervisor 302 that are emulations of the underlying hardware devices. OS 310 can also implement passthrough (or “physical”) drivers 318 that support “passthrough” communication via hypervisor 302 (e.g., utilizing the PCIe standard) between the passthrough drivers 318 and functions 314 without an intervening emulated device 320 or paravirtualized device 324. [Paragraph 33], If desired, hypervisor 302b of processing node 400b may thereafter optionally unplug PV device 324b, thus terminating the emulated path between VM 304a and host interface 220b (block 520). Following either block 518 or, if implemented, optional block 520, the process of FIG. 5 ends at block 522. [Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9. )
causing the VPCI virtual service provider (“VSP”) to save a state of the VF device to a runtime repository; ([Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9.)
saving an identifier (“ID”) of the VF and a locally unique identifier (“LUID”) of the VF device to the runtime repository; and ([Paragraph 38],
instructing a VM switch to save the synthetic network adapter. ([Paragraph 38], Emulated device 724a is a virtualized representation of a physical or virtual function 314 of subsystem S of host interface 720a, which has a Namespace A 716a accessible via a PF/VF controller 1 714a1. As depicted at block 604, based on the availability of the additional connection to host interface 720a via emulated device 724a, the kernel of OS 310 of VM 704a1 automatically configures Subsystem S 706 for multipath communication with host interface 720a. For example, in embodiments in which the OS 310 of VM 704a1 implements the NVMe specification, OS 310 automatically configures a block device for NVMe multipathing if the NVMe Qualified Name (NQN) and namespace identifier (e.g., Namespace ID (NSID), Namespace Globally Unique Identifier (NGUID), Universally Unique Identifier (UUID), or EUI64) of two different controllers of a given subsystem (e.g., controller 0 710a0 and controller 1 710a1 of subsystem S 706) match. Initially, the emulation path through emulated device 724a is configured to have the ANA state “non-optimized” and the passthrough path is configured to have the ANA state “optimized” such that the OS 310 prefers to route I/O traffic to host interface 720a via the passthrough path. [Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9.)
Although Pfefferle teaches VF(s) being associated with a namespace(s) and namespace(s) having a unique identifier(s) that is/are stored.
Pfefferle does not explicitly disclose identifier of the VF.
Dawkins teaches identifier of the VF. ([Paragraph 68-75], In one or more embodiments, a function entry (150) is a data structure that includes any combination, of the following data: (i) an emulated function identifier (151) that uniquely identifies a single emulated physical function (122) or emulated virtual function (123) (non-limiting examples of an identifier include a tag, an alphanumeric entry, a filename, and a row number in table). In one or more embodiments, the emulated function identifier may include some means allowing the device controller intermediary (120) to quickly identify if the emulated function is local (or remote) (e.g., a matching prefix, tag, etc.)… (vi) function operation(s) (156) that describe the processes that may be performed by the function (124, 126) (e.g., one or more capabilities of the peripheral device)… )
It would have been obvious to a person with ordinary skill in the art, before the effective filing date of the invention, to combine the teachings of Pfefferle wherein VM state is saved, allocation/assignment of virtual function (VF)/virtual peripheral component interconnect (VCPI) connection is/are maintained and state of the VF device is saved within a repository by assigning unique identifier to VF namespace, into teaching of Dawkins wherein identifier of the VF is stored within the repository, because this would enhance the teachings of Pfefferle wherein by utilizing unique identifier(s), it allows quick identification of VF (i.e. emulated function is local/remote) by using a naming convention of the VF identifier. (Dawkins paragraph 68-75)
As per claim 2, rejection of claim 1 is incorporated:
Pfefferle teaches wherein causing the VPCI VSP to maintain allocation and assignment of the VF device to the VM and to maintain the VPCI bus connection comprises performing one of:
instructing the VPCI VSP to skip tasks of unassigning and releasing the VF device; skipping sending instructions to the VPCI VSP to unassign and release the VF device; or blocking the VPCI VSP from unassigning and releasing the VF device. ([Paragraph 29], FIG. 4 additionally illustrates that processing node 400a further includes a hypervisor 302a and a host interface 220a, which includes a plurality of physical and/or virtual functions 314 that can be allocated to the VMs 304 of processing node 400a. In this example, the functions 314 of host interface 220a include virtual function 0 (VF0) 314a0 and virtual function 1 (VF1) 314a1 allocated to VM 304a. [Paragraph 27], In accordance with the embodiments described herein, the migration preferably copies the dataset and state of the migrating VM 304 from the host data processing system 200 on which the VM 404 was initially executing (referred to herein as the “source host”) to another host data processing system 200 on which the VM 404 continues its execution (referred to herein as the “destination host”). [Paragraph 32], Hypervisor 302a of processing node 400a also coordinates with hypervisor 302b of processing node 400b to cause host interface 220b of processing node 400b to expose functions VF0 314b0 and VF1 314b1 that correspond respectively to functions VF0 314a0 and VF1 314a1 on host interface 220a of processing node 400a (block 514). Hypervisor 302a of processing node 400a then coordinates migration of VM 304a from processing node 400a to processing node 400b (block 516). As indicated, this migration includes, among other things, suspending execution of the VM 304a on processing node 400a, transferring the state of VM 304a from processing node 400a to processing node 400b, and resuming execution of VM 304a on processing node 400b. As execution of VM 304a is resumed on processing node 400b, any commands issued by DM 402a of VM 304a to host interface 220b are communicating utilizing the emulated path including front-end driver (FED) 316a, a back-end driver (BED) 316b and emulated device 324b provided by hypervisor 302b, and VF1 314b1 of host interface 220b.)
As per claim 3, rejection of claim 1 is incorporated:
Pfefferle teaches wherein the modified fast save operation further comprises: determining whether the VF device remains allocated and assigned. ([Paragraph 29], FIG. 4 additionally illustrates that processing node 400a further includes a hypervisor 302a and a host interface 220a, which includes a plurality of physical and/or virtual functions 314 that can be allocated to the VMs 304 of processing node 400a. In this example, the functions 314 of host interface 220a include virtual function 0 (VF0) 314a0 and virtual function 1 (VF1) 314a1 allocated to VM 304a. [Paragraph 27], In accordance with the embodiments described herein, the migration preferably copies the dataset and state of the migrating VM 304 from the host data processing system 200 on which the VM 404 was initially executing (referred to herein as the “source host”) to another host data processing system 200 on which the VM 404 continues its execution (referred to herein as the “destination host”). [Paragraph 32], Hypervisor 302a of processing node 400a also coordinates with hypervisor 302b of processing node 400b to cause host interface 220b of processing node 400b to expose functions VF0 314b0 and VF1 314b1 that correspond respectively to functions VF0 314a0 and VF1 314a1 on host interface 220a of processing node 400a (block 514). Hypervisor 302a of processing node 400a then coordinates migration of VM 304a from processing node 400a to processing node 400b (block 516). As indicated, this migration includes, among other things, suspending execution of the VM 304a on processing node 400a, transferring the state of VM 304a from processing node 400a to processing node 400b, and resuming execution of VM 304a on processing node 400b. As execution of VM 304a is resumed on processing node 400b, any commands issued by DM 402a of VM 304a to host interface 220b are communicating utilizing the emulated path including front-end driver (FED) 316a, a back-end driver (BED) 316b and emulated device 324b provided by hypervisor 302b, and VF1 314b1 of host interface 220b.)
As per claim 4, rejection of claim 3 incorporated:
Pfefferle teaches wherein causing the VPCI VSP to save the state of the VF device to the runtime repository comprises:
based on a determination that the VF device remains allocated and assigned, calling the VPCI VSP to save the device state of the VF to the runtime repository. ([Paragraph 29], FIG. 4 additionally illustrates that processing node 400a further includes a hypervisor 302a and a host interface 220a, which includes a plurality of physical and/or virtual functions 314 that can be allocated to the VMs 304 of processing node 400a. In this example, the functions 314 of host interface 220a include virtual function 0 (VF0) 314a0 and virtual function 1 (VF1) 314a1 allocated to VM 304a. [Paragraph 27], In accordance with the embodiments described herein, the migration preferably copies the dataset and state of the migrating VM 304 from the host data processing system 200 on which the VM 404 was initially executing (referred to herein as the “source host”) to another host data processing system 200 on which the VM 404 continues its execution (referred to herein as the “destination host”). [Paragraph 32], Hypervisor 302a of processing node 400a also coordinates with hypervisor 302b of processing node 400b to cause host interface 220b of processing node 400b to expose functions VF0 314b0 and VF1 314b1 that correspond respectively to functions VF0 314a0 and VF1 314a1 on host interface 220a of processing node 400a (block 514). Hypervisor 302a of processing node 400a then coordinates migration of VM 304a from processing node 400a to processing node 400b (block 516). As indicated, this migration includes, among other things, suspending execution of the VM 304a on processing node 400a, transferring the state of VM 304a from processing node 400a to processing node 400b, and resuming execution of VM 304a on processing node 400b. As execution of VM 304a is resumed on processing node 400b, any commands issued by DM 402a of VM 304a to host interface 220b are communicating utilizing the emulated path including front-end driver (FED) 316a, a back-end driver (BED) 316b and emulated device 324b provided by hypervisor 302b, and VF1 314b1 of host interface 220b.)
As per claim 5, rejection of claim 1 is incorporated:
Pfefferle teaches wherein saving the ID of the VF and the LUID of the VF device to the runtime repository comprises: triggering a method to write VF information including the ID of the VF and the LUID of the VF device to the runtime repository. ([Paragraph 38], Emulated device 724a is a virtualized representation of a physical or virtual function 314 of subsystem S of host interface 720a, which has a Namespace A 716a accessible via a PF/VF controller 1 714a1. As depicted at block 604, based on the availability of the additional connection to host interface 720a via emulated device 724a, the kernel of OS 310 of VM 704a1 automatically configures Subsystem S 706 for multipath communication with host interface 720a. For example, in embodiments in which the OS 310 of VM 704a1 implements the NVMe specification, OS 310 automatically configures a block device for NVMe multipathing if the NVMe Qualified Name (NQN) and namespace identifier (e.g., Namespace ID (NSID), Namespace Globally Unique Identifier (NGUID), Universally Unique Identifier (UUID), or EUI64) of two different controllers of a given subsystem (e.g., controller 0 710a0 and controller 1 710a1 of subsystem S 706) match. Initially, the emulation path through emulated device 724a is configured to have the ANA state “non-optimized” and the passthrough path is configured to have the ANA state “optimized” such that the OS 310 prefers to route I/O traffic to host interface 720a via the passthrough path. [Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9.)
Dawkins teaches ID of the VF ([Paragraph 68-75], In one or more embodiments, a function entry (150) is a data structure that includes any combination, of the following data: (i) an emulated function identifier (151) that uniquely identifies a single emulated physical function (122) or emulated virtual function (123) (non-limiting examples of an identifier include a tag, an alphanumeric entry, a filename, and a row number in table). In one or more embodiments, the emulated function identifier may include some means allowing the device controller intermediary (120) to quickly identify if the emulated function is local (or remote) (e.g., a matching prefix, tag, etc.)… (vi) function operation(s) (156) that describe the processes that may be performed by the function (124, 126) (e.g., one or more capabilities of the peripheral device)… )
As per claim 6, rejection of claim 1 is incorporated:
Pfefferle teaches wherein the modified fast save operation further comprises: after saving the VM, based on a determination that a VPCI bus interface remains active, freeing the VPCI bus interface, wherein the VPCI bus interface is an interface through which the VPCI bus connection is established. ([Paragraph 31], In response to a determination at block 508 that all prior commands sent by VM 304a to VF0 314a0 via passthrough path 404a have not been completed, the process iterates at block 508 until hypervisor 302a verifies that all prior commands sent by VM 304a to VF0 314a0 via passthrough path 404a have completed. In response to an affirmative determination at block 508, hypervisor 302a hot un-plugs passthrough connection 404a (block 510). In addition, hypervisor 302a saves the state of PV device 324a (block 512). [Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9.)
Dawkins also teaches ([Paragraph 62], A remote device controller (128) may initiate the creation, modification, and elimination of emulated remote function(s) (127) in a system.)
As per claim 7, rejection of claim 6 is incorporated:
Dawkins teaches wherein freeing the VPCI bus interface comprises calling the VPCI VSP to reset the VPCI bus interface. ([Paragraph 62], A remote device controller (128) may initiate the creation, modification, and elimination of emulated remote function(s) (127) in a system.)
As per claim 8, rejection of claim 1 is incorporated:
Dawkins teaches wherein the modified fast save operation further comprises: tearing down a VM synthetic network adapter. ([Paragraph 62], A remote device controller (128) may initiate the creation, modification, and elimination of emulated remote function(s) (127) in a system. [Paragraph 108], Consider a scenario where, at (1), virtual machine A (311A) sends a function command, to the device controller intermediary (320), with function parameters to re-allocate virtual function A (326A) to increase the connection bandwidth capacity (e.g., from 5 Gbps to 7.5 Gbps). At (2), the device controller intermediary (320) receives the function command and makes a first determination that the emulated function identifier (of the function command) identifies the emulated physical function A (322A) existing locally on the device controller intermediary (320). The device controller intermediary (320) performs a lookup in the function policy database (not shown) to identify a function entry with a matching emulated function identifier. Once identified, the device controller intermediary (320) makes a second determination that the requested function operation does not violate the emulated function policy of the function entry. Accordingly, the device controller intermediary (320) forwards the function command to the physical function (324) of the network card interface (305). At (3), the physical function receives the function command and performs the function operation included in the function command (increasing the connection bandwidth capacity of virtual function A (326A) from 5 Gbps to 7.5 Gbps).)
As per claim 9, Pfefferle teaches:
A system, comprising:
a processing system; and
memory coupled to the processing system, the memory comprising computer executable instructions that, when executed by the processing system, causes the system to perform a modified fast restore operation for a virtual machine (“VM”), the modified fast restore operation comprising: ([Fig. 2][Paragraph 8], On a host interface of a destination host, functions corresponding to those of the source host are exposed. The VM is then migrated from the source host to the destination host. The VM resumes host interface communication with the host interface of the destination host from the saved state via an emulated path provided by a hypervisor of the destination host. After resuming communication, a passthrough path of communication between the VM and the host interface of the destination host is established.)
retrieving an identifier (“ID”) of a virtual function (“VF”) and a locally unique identifier (“LUID”) of a VF device from a runtime repository, wherein the VF is a virtual instance of a physical network adapter that is exposed inside the VM as the VF device; ([Paragraph 24], A VM 304 additionally includes one or more functions 314 (e.g., virtual functions (VFs) and/or physical functions (PFs)) that represent allocable subsets of the functionality of devices, such as host interfaces 220. [Paragraph 29], FIG. 4 additionally illustrates that processing node 400a further includes a hypervisor 302a and a host interface 220a, which includes a plurality of physical and/or virtual functions 314 that can be allocated to the VMs 304 of processing node 400a. In this example, the functions 314 of host interface 220a include virtual function 0 (VF0) 314a0 and virtual function 1 (VF1) 314a1 allocated to VM 304a. [Paragraph 25], Hypervisor 302 of host data processing system 200 can present system resources that the various VMs 304 can access (e.g., disks, network adapters, and other platform elements) in a variety of different ways, including as fully virtualized devices, paravirtualized devices, and passthrough devices. In embodiments in which hypervisor 302 presents system resources to VMs 304 utilizing full virtualization, a virtualized physical device can be transparently presented to VMs 304 as fully virtualized emulated device 320. VMs 304 can access an emulated device 320 just like a physical device utilizing the same standard device driver 315 that would be utilized to access the physical device. In embodiments in which the host data processing system 200 implements paravirtualization of hardware devices, OS 310 implements one or more front-end drivers 316 to support access to functions 314 via commands issued to corresponding back-end drivers 322 provided by hypervisor 302. Back-end drivers 322, in turn, access paravirtualized (PV) devices 324 provided by hypervisor 302 that are emulations of the underlying hardware devices. OS 310 can also implement passthrough (or “physical”) drivers 318 that support “passthrough” communication via hypervisor 302 (e.g., utilizing the PCIe standard) between the passthrough drivers 318 and functions 314 without an intervening emulated device 320 or paravirtualized device 324. [Paragraph 33], If desired, hypervisor 302b of processing node 400b may thereafter optionally unplug PV device 324b, thus terminating the emulated path between VM 304a and host interface 220b (block 520). Following either block 518 or, if implemented, optional block 520, the process of FIG. 5 ends at block 522. [Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9. )
causing a virtual peripheral component interconnect (“VPCI”) virtual service provider (“VSP”) to create a VPCI bus interface;
assigning the VF device;
restoring a state of the VF device; and
instructing a VM switch to resume the synthetic network adapter. ([Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9. ([Paragraph 38], Emulated device 724a is a virtualized representation of a physical or virtual function 314 of subsystem S of host interface 720a, which has a Namespace A 716a accessible via a PF/VF controller 1 714a1. As depicted at block 604, based on the availability of the additional connection to host interface 720a via emulated device 724a, the kernel of OS 310 of VM 704a1 automatically configures Subsystem S 706 for multipath communication with host interface 720a. For example, in embodiments in which the OS 310 of VM 704a1 implements the NVMe specification, OS 310 automatically configures a block device for NVMe multipathing if the NVMe Qualified Name (NQN) and namespace identifier (e.g., Namespace ID (NSID), Namespace Globally Unique Identifier (NGUID), Universally Unique Identifier (UUID), or EUI64) of two different controllers of a given subsystem (e.g., controller 0 710a0 and controller 1 710a1 of subsystem S 706) match. Initially, the emulation path through emulated device 724a is configured to have the ANA state “non-optimized” and the passthrough path is configured to have the ANA state “optimized” such that the OS 310 prefers to route I/O traffic to host interface 720a via the passthrough path.)
Although Pfefferle teaches VF(s) being associated with a namespace(s) and namespace(s) having a unique identifier(s) that is/are stored.
Pfefferle does not explicitly disclose identifier of a VF.
Dawkins teaches identifier of a VF. ([Paragraph 68-75], In one or more embodiments, a function entry (150) is a data structure that includes any combination, of the following data: (i) an emulated function identifier (151) that uniquely identifies a single emulated physical function (122) or emulated virtual function (123) (non-limiting examples of an identifier include a tag, an alphanumeric entry, a filename, and a row number in table). In one or more embodiments, the emulated function identifier may include some means allowing the device controller intermediary (120) to quickly identify if the emulated function is local (or remote) (e.g., a matching prefix, tag, etc.)… (vi) function operation(s) (156) that describe the processes that may be performed by the function (124, 126) (e.g., one or more capabilities of the peripheral device)… )
It would have been obvious to a person with ordinary skill in the art, before the effective filing date of the invention, to combine the teachings of Pfefferle wherein VM state is saved, allocation/assignment of virtual function (VF)/virtual peripheral component interconnect (VCPI) connection is/are maintained and state of the VF device is saved within a repository by assigning unique identifier to VF namespace, into teaching of Dawkins wherein identifier of the VF is stored within the repository, because this would enhance the teachings of Pfefferle wherein by utilizing unique identifier(s), it allows quick identification of VF (i.e. emulated function is local/remote) by using a naming convention of the VF identifier. (Dawkins paragraph 68-75)
As per claim 11, rejection of claim 9 is incorporated:
Pfefferle teaches wherein causing the VPCI VSP to create the VPCI bus interface comprises: calling the VPCI VSP to create the VPCI bus interface. ([Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9. [Paragraph 38], Emulated device 724a is a virtualized representation of a physical or virtual function 314 of subsystem S of host interface 720a, which has a Namespace A 716a accessible via a PF/VF controller 1 714a1. As depicted at block 604, based on the availability of the additional connection to host interface 720a via emulated device 724a, the kernel of OS 310 of VM 704a1 automatically configures Subsystem S 706 for multipath communication with host interface 720a. For example, in embodiments in which the OS 310 of VM 704a1 implements the NVMe specification, OS 310 automatically configures a block device for NVMe multipathing if the NVMe Qualified Name (NQN) and namespace identifier (e.g., Namespace ID (NSID), Namespace Globally Unique Identifier (NGUID), Universally Unique Identifier (UUID), or EUI64) of two different controllers of a given subsystem (e.g., controller 0 710a0 and controller 1 710a1 of subsystem S 706) match. Initially, the emulation path through emulated device 724a is configured to have the ANA state “non-optimized” and the passthrough path is configured to have the ANA state “optimized” such that the OS 310 prefers to route I/O traffic to host interface 720a via the passthrough path.)
Dawkins also teaches ([Paragraph 68-75], In one or more embodiments, a function entry (150) is a data structure that includes any combination, of the following data: (i) an emulated function identifier (151) that uniquely identifies a single emulated physical function (122) or emulated virtual function (123) (non-limiting examples of an identifier include a tag, an alphanumeric entry, a filename, and a row number in table). In one or more embodiments, the emulated function identifier may include some means allowing the device controller intermediary (120) to quickly identify if the emulated function is local (or remote) (e.g., a matching prefix, tag, etc.)… (vi) function operation(s) (156) that describe the processes that may be performed by the function (124, 126) (e.g., one or more capabilities of the peripheral device)… [Paragraph 50], In one or more embodiments, a device controller intermediary (120) may include the functionality to act as a system firmware intermediary (SFI) that may intercept, modify, filter, forward, and/or otherwise alter data emanating from (or destined to) a peripheral device (105) based on peripheral communication channels and/or peripheral communication types. [Paragraph 56], In one or more embodiments, the emulated physical function(s) (122) provide a unique channel for each virtual machine (111) to send physical function commands (160). Emulated physical function(s) (122) may be implemented as hardware and/or software. [Paragraph 80], The function command may include an emulated function identifier that specifies an emulated function created by the device controller intermediary.)
As per claim 12, rejection of claim 9 is incorporated:
Dawkins teaches wherein assigning the VF device comprises: assigning the VF device using the ID of the VF and the LUID of the VF device retrieved from the runtime repository. ([Paragraph 43], The computing resources (110) allocated to a virtual machine (111) may be aggregated from one or more computing device(s) (101) and presented as unified “virtual” resources within the virtual machine (111) (e.g., a virtual processor(s) (112), virtual memory (113), virtual storage (114), and virtual peripheral device(s) (115)). [Paragraph 68-75], In one or more embodiments, a function entry (150) is a data structure that includes any combination, of the following data: (i) an emulated function identifier (151) that uniquely identifies a single emulated physical function (122) or emulated virtual function (123) (non-limiting examples of an identifier include a tag, an alphanumeric entry, a filename, and a row number in table). In one or more embodiments, the emulated function identifier may include some means allowing the device controller intermediary (120) to quickly identify if the emulated function is local (or remote) (e.g., a matching prefix, tag, etc.)… (vi) function operation(s) (156) that describe the processes that may be performed by the function (124, 126) (e.g., one or more capabilities of the peripheral device)… [Paragraph 80], The function command may include an emulated function identifier that specifies an emulated function created by the device controller intermediary.)
As per claim 13, rejection of claim 9 is incorporated:
Dawkins teaches wherein creating the VPCI bus interface comprises: after the VF device has been assigned using the ID of the VF and the LUID of the VF device, establishing a connection between the VF device and hardware resources of a host device. ([Paragraph 68-75], In one or more embodiments, a function entry (150) is a data structure that includes any combination, of the following data: (i) an emulated function identifier (151) that uniquely identifies a single emulated physical function (122) or emulated virtual function (123) (non-limiting examples of an identifier include a tag, an alphanumeric entry, a filename, and a row number in table). In one or more embodiments, the emulated function identifier may include some means allowing the device controller intermediary (120) to quickly identify if the emulated function is local (or remote) (e.g., a matching prefix, tag, etc.)… (vi) function operation(s) (156) that describe the processes that may be performed by the function (124, 126) (e.g., one or more capabilities of the peripheral device)… [Paragraph 50], In one or more embodiments, a device controller intermediary (120) may include the functionality to act as a system firmware intermediary (SFI) that may intercept, modify, filter, forward, and/or otherwise alter data emanating from (or destined to) a peripheral device (105) based on peripheral communication channels and/or peripheral communication types. [Paragraph 56], In one or more embodiments, the emulated physical function(s) (122) provide a unique channel for each virtual machine (111) to send physical function commands (160). Emulated physical function(s) (122) may be implemented as hardware and/or software. [Paragraph 50], In one or more embodiments, a device controller intermediary (120) may include the functionality to act as a system firmware intermediary (SFI) that may intercept, modify, filter, forward, and/or otherwise alter data emanating from (or destined to) a peripheral device (105) based on peripheral communication channels and/or peripheral communication types. [Paragraph 56], In one or more embodiments, the emulated physical function(s) (122) provide a unique channel for each virtual machine (111) to send physical function commands (160). Emulated physical function(s) (122) may be implemented as hardware and/or software. [Paragraph 80], The function command may include an emulated function identifier that specifies an emulated function created by the device controller intermediary.)
As per claim 14, rejection of claim 9 is incorporated:
Pfefferle teaches wherein restoring the state of the VF device comprises: calling the VPCI VSP to restore the state of the VF device based on a saved state of the VF device that is stored on the runtime repository. ([Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9. [Paragraph 38], Emulated device 724a is a virtualized representation of a physical or virtual function 314 of subsystem S of host interface 720a, which has a Namespace A 716a accessible via a PF/VF controller 1 714a1. As depicted at block 604, based on the availability of the additional connection to host interface 720a via emulated device 724a, the kernel of OS 310 of VM 704a1 automatically configures Subsystem S 706 for multipath communication with host interface 720a. For example, in embodiments in which the OS 310 of VM 704a1 implements the NVMe specification, OS 310 automatically configures a block device for NVMe multipathing if the NVMe Qualified Name (NQN) and namespace identifier (e.g., Namespace ID (NSID), Namespace Globally Unique Identifier (NGUID), Universally Unique Identifier (UUID), or EUI64) of two different controllers of a given subsystem (e.g., controller 0 710a0 and controller 1 710a1 of subsystem S 706) match. Initially, the emulation path through emulated device 724a is configured to have the ANA state “non-optimized” and the passthrough path is configured to have the ANA state “optimized” such that the OS 310 prefers to route I/O traffic to host interface 720a via the passthrough path.)
As per claim 15, rejection of claim 14 is incorporated:
Pfefferle teaches wherein restoring the state of the VF device further comprises: setting device parameters of the VF device based on VF information including the ID of the VF and the LUID of the VF device. ([Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9. [Paragraph 38], Emulated device 724a is a virtualized representation of a physical or virtual function 314 of subsystem S of host interface 720a, which has a Namespace A 716a accessible via a PF/VF controller 1 714a1. As depicted at block 604, based on the availability of the additional connection to host interface 720a via emulated device 724a, the kernel of OS 310 of VM 704a1 automatically configures Subsystem S 706 for multipath communication with host interface 720a. For example, in embodiments in which the OS 310 of VM 704a1 implements the NVMe specification, OS 310 automatically configures a block device for NVMe multipathing if the NVMe Qualified Name (NQN) and namespace identifier (e.g., Namespace ID (NSID), Namespace Globally Unique Identifier (NGUID), Universally Unique Identifier (UUID), or EUI64) of two different controllers of a given subsystem (e.g., controller 0 710a0 and controller 1 710a1 of subsystem S 706) match. Initially, the emulation path through emulated device 724a is configured to have the ANA state “non-optimized” and the passthrough path is configured to have the ANA state “optimized” such that the OS 310 prefers to route I/O traffic to host interface 720a via the passthrough path.)
Dawkins also teaches ([Paragraph 78], In one or more embodiments, a function command (160) is a data structure that includes an emulated function identifier (151) and/or function parameters (162). In one or more embodiments, function parameters (162) include one or more properties of the function command (160) including, one or more function operation(s) (156) to be performed, unprocessed data (i.e., “input data”), the location of unprocessed, and/or the location to store processed data (i.e., “output data”).)
As per claim 16, rejection of claim 9 is incorporated:
Dawkins teaches wherein the modified fast restore operation further comprises at least one of: setting a first flag indicating that the VF device has been assigned; setting a second flag indicating that the ID of the VF has been allocated; or setting a value of an input/output virtualization offload weight to be a non-zero value. ([Paragraph 62], In one or more embodiments, a remote device controller (128) is software which manages the access and allocation of peripheral device (105) resources to remote virtual machines (111). In one or more embodiments, a remote device controller may maintain a function policy database (121) to track the allocation and utilization of peripheral devices (105) and to enforce any policies specified therein. A remote device controller (128) may initiate the creation, modification, and elimination of emulated remote function(s) (127) in a system. [Paragraph 68-75], In one or more embodiments, a function entry (150) is a data structure that includes any combination, of the following data: (i) an emulated function identifier (151) that uniquely identifies a single emulated physical function (122) or emulated virtual function (123) (non-limiting examples of an identifier include a tag, an alphanumeric entry, a filename, and a row number in table). In one or more embodiments, the emulated function identifier may include some means allowing the device controller intermediary (120) to quickly identify if the emulated function is local (or remote) (e.g., a matching prefix, tag, etc.)… (vi) function operation(s) (156) that describe the processes that may be performed by the function (124, 126) (e.g., one or more capabilities of the peripheral device)… [Paragraph 76], In one or more embodiments, an emulated function policy (157) that includes one or more restrictions, limitations, and/or constraints regarding the usage of the function (124, 126). An emulated function policy (157) may specify that certain physical function (124) function operations (156) are prohibited (e.g., power cycling the device, allocating already-allocated virtual functions (126), changing properties of the peripheral device (105) that would affect all virtual functions (126)).)
As per claim 17, rejection of claim 9 is incorporated:
Pfefferle teaches wherein retrieving the ID of the VF and the LUID of the VF device, assigning the VF device, and restoring the state of the VF device are performed by implementing a retrieve-and-restore-virtual-function function. ([Fig. 2][Paragraph 8], On a host interface of a destination host, functions corresponding to those of the source host are exposed. The VM is then migrated from the source host to the destination host. The VM resumes host interface communication with the host interface of the destination host from the saved state via an emulated path provided by a hypervisor of the destination host. After resuming communication, a passthrough path of communication between the VM and the host interface of the destination host is established. [Paragraph 24], A VM 304 additionally includes one or more functions 314 (e.g., virtual functions (VFs) and/or physical functions (PFs)) that represent allocable subsets of the functionality of devices, such as host interfaces 220. [Paragraph 29], FIG. 4 additionally illustrates that processing node 400a further includes a hypervisor 302a and a host interface 220a, which includes a plurality of physical and/or virtual functions 314 that can be allocated to the VMs 304 of processing node 400a. In this example, the functions 314 of host interface 220a include virtual function 0 (VF0) 314a0 and virtual function 1 (VF1) 314a1 allocated to VM 304a. [Paragraph 25], Hypervisor 302 of host data processing system 200 can present system resources that the various VMs 304 can access (e.g., disks, network adapters, and other platform elements) in a variety of different ways, including as fully virtualized devices, paravirtualized devices, and passthrough devices. In embodiments in which hypervisor 302 presents system resources to VMs 304 utilizing full virtualization, a virtualized physical device can be transparently presented to VMs 304 as fully virtualized emulated device 320. VMs 304 can access an emulated device 320 just like a physical device utilizing the same standard device driver 315 that would be utilized to access the physical device. In embodiments in which the host data processing system 200 implements paravirtualization of hardware devices, OS 310 implements one or more front-end drivers 316 to support access to functions 314 via commands issued to corresponding back-end drivers 322 provided by hypervisor 302. Back-end drivers 322, in turn, access paravirtualized (PV) devices 324 provided by hypervisor 302 that are emulations of the underlying hardware devices. OS 310 can also implement passthrough (or “physical”) drivers 318 that support “passthrough” communication via hypervisor 302 (e.g., utilizing the PCIe standard) between the passthrough drivers 318 and functions 314 without an intervening emulated device 320 or paravirtualized device 324. [Paragraph 33], If desired, hypervisor 302b of processing node 400b may thereafter optionally unplug PV device 324b, thus terminating the emulated path between VM 304a and host interface 220b (block 520). Following either block 518 or, if implemented, optional block 520, the process of FIG. 5 ends at block 522. [Paragraph 41], The process of FIG. 6 proceeds from block 610 to block 612, which illustrates hypervisor 702a saving the state of emulated device 724a. Hypervisor 702a of processing node 700a also coordinates with hypervisor 702b of processing node 700b to cause host interface 720b of processing node 700b to expose functions 314 corresponding to the functions 314 on host interface 220a of processing node 400a (block 614). In the depicted example, the device functions 314 are exposed by a subsystem S 718b via PF/VF controller 0 714b0 and PF/VF controller 1 714b1 associated with namespace A 716b implemented by subsystem S 718b. Hypervisor 702a then coordinates migration of VM 704a1 from processing node 700a to processing node 700b of processing node 700b, as indicated generally in FIG. 9 by arrow 901. This migration includes, among other things, suspending execution of the VM 704a1 on processing node 700a, transferring the state of VM 704a1 from processing node 700a to processing node 700b, and resuming execution of VM 704a1 on processing node 700b. As execution of VM 704a1 is resumed on processing node 700b, any commands issued by VM 704a1 to host interface 720b utilize the emulated path via emulated device 724b of hypervisor 702b, as depicted in FIG. 9. )
Dawkins teaches ID of the VF. ([Paragraph 68-75], In one or more embodiments, a function entry (150) is a data structure that includes any combination, of the following data: (i) an emulated function identifier (151) that uniquely identifies a single emulated physical function (122) or emulated virtual function (123) (non-limiting examples of an identifier include a tag, an alphanumeric entry, a filename, and a row number in table). In one or more embodiments, the emulated function identifier may include some means allowing the device controller intermediary (120) to quickly identify if the emulated function is local (or remote) (e.g., a matching prefix, tag, etc.)… (vi) function operation(s) (156) that describe the processes that may be performed by the function (124, 126) (e.g., one or more capabilities of the peripheral device)… )
As per claim 18, rejection of claim 9 is incorporated:
Dawkins teaches wherein the modified fast restore operation further comprises: after resuming the VM, based on a determination that the VF device has been assigned, causing the VPCI VSP to skip creation of the VPCI bus interface, allocation of the VF, and assignment of the VF device. ([Paragraph 76], In one or more embodiments, an emulated function policy (157) that includes one or more restrictions, limitations, and/or constraints regarding the usage of the function (124, 126). An emulated function policy (157) may specify that certain physical function (124) function operations (156) are prohibited (e.g., power cycling the device, allocating already-allocated virtual functions (126), changing properties of the peripheral device (105) that would affect all virtual functions (126)).)
As per claims 19 and 20, these are method claims corresponding to the system claims 1 and 8-10. Therefore, rejected based on similar rationale.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to DONG U KIM whose telephone number is (571)270-1313. The examiner can normally be reached 9:00am - 5:00pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Bradley Teets can be reached at 5712723338. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/DONG U KIM/Primary Examiner, Art Unit 2197