Prosecution Insights
Last updated: April 19, 2026
Application No. 17/117,530

HARDWARE-BASED PROTECTION OF VIRTUAL FUNCTION RESOURCES

Non-Final OA §103§112
Filed
Dec 10, 2020
Examiner
LIN, HSING CHUN
Art Unit
2195
Tech Center
2100 — Computer Architecture & Software
Assignee
Ati Technologies Ulc
OA Round
5 (Non-Final)
59%
Grant Probability
Moderate
5-6
OA Rounds
3y 4m
To Grant
99%
With Interview

Examiner Intelligence

Grants 59% of resolved cases
59%
Career Allow Rate
64 granted / 108 resolved
+4.3% vs TC avg
Strong +80% interview lift
Without
With
+79.8%
Interview Lift
resolved cases with interview
Typical timeline
3y 4m
Avg Prosecution
37 currently pending
Career history
145
Total Applications
across all art units

Statute-Specific Performance

§101
17.1%
-22.9% vs TC avg
§103
35.8%
-4.2% vs TC avg
§102
6.5%
-33.5% vs TC avg
§112
34.0%
-6.0% vs TC avg
Black line = Tech Center average estimate • Based on career data from 108 resolved cases

Office Action

§103 §112
DETAILED ACTION The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . Claims 1, 3-9, and 11-20 are pending in this application. Information Disclosure Statement 3. The IDS filed on 10/30/2025 has been considered. Response to Arguments Applicant’s arguments regarding the rejections of claims 1-20 under 35 U.S.C. 112b have been fully considered and are persuasive. The rejections have been withdrawn. However, new 35 U.S.C. 112b rejections are applied to claims 1, 3-9, and 11-20. Applicant's arguments regarding the 35 U.S.C. 103 rejections of claims 1, 3-9, and 11-20 have been considered, but are unpersuasive. Regarding the 35 U.S.C. 103 rejection, the applicant argues the following in the remarks: Neither Brownlow, Shanbhogue, nor a combination of the two discloses or suggests a processing unit that determines a state of a virtual function from a set of states that are each associated with a predetermined combination of resource subsets of a processing unit. For example, Brownlow, Shanbhogue, nor a combination of the two discloses or suggests that, at the time of determining the state of a virtual function, there is a set of potential states for a virtual function that are each associated with a corresponding combination of resource subsets. Rather, the cited art discloses assigning logical partitions only after a state is determined. That is to say, Brownlow does not disclose or suggest, when determining the state of the virtual function, that each potential state for a virtual function is associated with a corresponding logical partition. The dependent claims are allowable. Examiner has thoroughly considered Applicant' s arguments, but respectfully finds them unpersuasive for at least the following reasons: As to point (a), the examiner respectfully disagrees. The claims do not recite that at the time of determining the state of the virtual function that each state of the set of states is associated with a corresponding predetermined combination of resource subsets. The claims do not recite the timing of when each state of the set of states is associated with a corresponding predetermined combination of resource subsets. As to point (b), the examiner respectfully disagrees. Applicant's arguments regarding dependent claims fail to comply with 37 CFR 1.111(b) because they amount to a general allegation that the dependent claims define a patentable invention without specifically pointing out how the language of the dependent claims patentably distinguishes them from the references. 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. Claims 1, 3-9, and 11-20 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. As per claims 1, 9 and 17 (line numbers refer to claim 1): Lines 7-16 recite “determining a state of the virtual function from a set of states, wherein each state of the set of states is associated with a corresponding predetermined combination of resource subsets…selectively enables access, by the virtual function, to a predetermined combination of resource subsets….corresponding to the determined state of the virtual function” and it is unclear if the set of states are regarding states of the virtual function or something else. Since it is unclear if the set of states are regarding states of the virtual function, it is unclear which predetermined combination of resource subsets corresponds to the determined state of the virtual function. Claims 3-8, 11-16, and 18-20 are dependent claims of claims 1, 9, and 17 and fail to resolve the deficiencies of claims 1, 9, and 17, so they are rejected for the same reasons as claims 1, 9, and 17 above. Claim Rejections - 35 USC § 103 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. Claims 1, 9, 17, and 18 are rejected under 35 U.S.C. 103 as being unpatentable over Brownlow et al. (US 20120192178 A1 hereinafter Brownlow) in view of Shanbhogue (US 20200159969 A1 hereinafter Shanbhogue). Brownlow and Shanbhogue were cited in a previous office action. As per claim 1, Brownlow teaches an apparatus comprising: a plurality of hardware resources configured to store information, the plurality of hardware resources including a plurality of resource subsets (Fig. 1; [0022] The hypervisor 110 may create and manage logical partitions, such as virtual servers 112, 113. A logical partition may be a subset of the resources of the hardware server 102 that is virtualized as a separate virtual server… The hypervisor 110 may map the hardware of the hardware server 102 to the virtual servers 112, 113. For example, the processors 130-132 may be mapped to the virtual processors 120, 121; the memory 133-135 may be mapped to the virtual memory 122, 123, and the I/O adapters 136-138 may be mapped to the virtual I/O adapters 124-125; [0028] Each of the logical partitions 206-208 may execute an operating system (not shown) and client applications (not shown); Since a logical partition executes an operating system and client applications, the logical partition must store information in order to execute them.); and physical function circuitry configured to execute a virtual function using the information stored in the plurality of hardware resources ([0040] the PF manager 318 may configure the first physical function 324 to host multiple instances of a first virtual function, such as the first instance of the first virtual function 330 and the Mth instance of the first virtual function 331, where M is greater than 1; [0024] the hypervisor 204 may use a first physical function 230 of the hardware I/O adapter 202 to provide a first instance of a first virtual function 232, a second instance of a first virtual function 233, and an Nth instance of a first virtual function 234 to the logical partitions 206-208; [0028] In operation, the PF manager 220 may enable the first virtual function instances 232-234 from the first physical function 230. The PF manager 220 may enable the second virtual function 235 from the second physical function 231. The virtual functions 232-235 may be enabled based on a user provided configuration. Each of the logical partitions 206-208 may execute an operating system (not shown) and client applications (not shown); [0041] the hypervisor 304 may assign the pre-configured virtual functions 330-335 to a logical partition (e.g., the local partition 311) to enable client applications that are executing in the logical partition to perform I/O operations.); and a processing unit configured to: determine a state of the virtual function from a set of states, wherein each state of the set of states is associated with a corresponding predetermined combination of resource subsets of the plurality of resource subsets of a plurality of predetermined combinations of resource subsets of the plurality of resource subsets; and execute a host that selectively enables access, by the virtual function, to a predetermined combination of resource subsets of the plurality of resource subsets of the plurality of predetermined combinations of resource subsets of the plurality of resource subsets corresponding to the determined state of the virtual function (Fig. 1; [0004] The entry of the table may correspond to a virtual function hosted by a hardware input/output (I/O) adapter. The entry includes a state of the virtual function. The program code may be executable by the processor to send a reset command to reset the virtual function at the hardware I/O adapter in response to determining that the state of the virtual function comprises a reset pending state; [0005] The computer usable program code may be executable by the processor to identify a first logical partition that is associated with the first virtual function. The computer usable program code may be executable by the processor to retrieve first data corresponding to the first virtual function from a table in response to determining that the first logical partition has initiated a shutdown process; [0017] For example, a portion of the internal resources of the hardware I/O adapter, such as one or more queues, may be assigned to a virtual function. The virtual function may be assigned to a logical partition to enable the logical partition to perform I/O operations. After the logical partition is shutdown, the internal resources that the virtual function was using may be left in an intermediate state. The virtual function may be reset to enable the internal resources that were assigned to the virtual function, such as the one or more queues, to be reset to an initial state from the intermediate state. After the virtual function is reset, the virtual function may be assigned to another logical partition; [0031] a hypervisor 304 may be coupled to hardware devices, such as a hardware I/O adapter 302, an I/O hub 306, processors 308; [0041] During the runtime, the hypervisor 304 may assign the pre-configured virtual functions 330-335 to a logical partition (e.g., the local partition 311) to enable client applications that are executing in the logical partition to perform I/O operations; [0029] One or both of the hypervisor 204 and the dispatchable hypervisor 290 may reset the virtual function and reset the portion of the internal resources of the hardware I/O adapter that are allocated to the virtual function. Resetting the virtual function may enable the virtual function to be assigned to another logical partition; [0022] The hypervisor 110 may create and manage logical partitions, such as virtual servers 112, 113. A logical partition may be a subset of the resources of the hardware server 102 that is virtualized as a separate virtual server. Each of the virtual servers 112, 113 may have its own set of virtual resources, similar to a physical server. For example, the first virtual server 112 may include virtual processors 120, virtual memory 122, and virtual I/O adapters 124. Virtual server 113 may include virtual processors 121, virtual memory 123, and virtual I/O adapters 125. The hypervisor 110 may map the hardware of the hardware server 102 to the virtual servers 112, 113; A logical partition is a combination of resource subsets since each logical partition is mapped to a subset of processors, a subset of memory, and a subset of I/O adaptors. There are multiple states disclosed including a state during runtime where a virtual function is assigned to a logical partition to perform I/O operations and a state where the virtual function is reset and thus the virtual function is enabled to access a different logical partition.). Brownlow fails to teach execute a host driver that selectively enables access, by the virtual function, to a predetermined combination of resource subsets of the plurality of resource subsets of the plurality of predetermined combinations of resource subsets of the plurality of resource subsets corresponding to the determined state of the virtual function, wherein the processing unit includes the plurality of hardware resources. However, Shanbhogue teaches execute a host driver that selectively enables access, by the virtual function, to a predetermined combination of resource subsets of the plurality of resource subsets of the plurality of predetermined combinations of resource subsets of the plurality of resource subsets corresponding to the determined state of the virtual function (Fig. 2a; [0050] In embodiments, the device driver 214 includes support of a device management protocol to cause the device interface 206 to be placed in a default unlocked state, a locked state to prevent changes to be made to the device interface 206, or an operational state to enable access to device registers of the device 204 by the VM 211 or DMA from the device 204 to memory address spaces of the VM 211. In addition, the device driver 214, in support of the device management protocol, is to receive from the device interface 206 a configuration report of the device interface 206; instruct the device interface 206 to move into the operational state from the locked state when the device 204 is assigned to the VM 211. Furthermore, the device driver 214 may instruct the device interface 206 to move into the unlocked state when removing the device interface 206 from being assigned to the VM 211, thereby stopping access by the VM 211 to the device registers of the device 204 and DMA by the device 204 to memory spaces of the VM 211; [0033] a device 101, e.g., a host; [0044] In embodiments, a device interface, e.g., the device interface 206, may be a physical function, a virtual function; [0048] The device interface 206 is, at interaction 316, to receive a request to move the device interface 206 to the operational state from the locked state, after the device interface report has been validated by the trusted VM 211. Additional operations may be performed. The device interface 206 is, at interaction 317, to determine memory mapped input-output (MMIO) resources mapping between the trusted VM 211 and the device 204. In detail, the device interface 206 is to determine if the MMIO resources mapped into the VM matches the MMIO resources configuration as reported in the device interface report. The device interface 206 is, at interaction 318, to receive an allocation of the memory address spaces of the trusted VM 211 for the device interface 206 to host the MMIO resources; [0110] Device interface assignment involves following steps…(4) If configurations are acceptable then accept the MMIO and DMA mappings to enable access to the device registers and to enable DMA from device to TD memory; [0045] A VF is usually assigned to a child partition like a TD in a virtualized environment. To address the scalability issues with SR-IOV, a further PCIe extension has been defined called scalable IOV which provides similar sharing and assignment of device resources to child partitions like a TD; [0110] Device interface assignment involves following steps: (1) Configuring and locking the interface using LOCK_INTERFACE_REQUEST; (2) Obtaining a DEVICE_INTERFACE_REPORT using GET_DEVICE_INTERFACE_REPORT: (3) Verifying the configuration reported by the device in DEVICE_INTERFACE_REPORT; (4) If configurations are acceptable then accept the MMIO and DMA mappings to enable access to the device registers and to enable DMA from device to TD memory; and (5) If the configurations are acceptable then starting the interface using START_INTERFACE_REQUEST; [0111-0112] Step 1: Configure and Lock Interface—…TD allocates GPA space for hosting MMIO resources of the VDEV, and requests VMM to map MMIO resources for the VDEV (provides it the GPA ranges); [0119-0120] Step 5: Start the Interface to Move it to RUN State—… VMM executes START_INTERFACE_REQUEST method on the device for requested device interface/s, moving it/them to “Run” state; [0057] the trusted VM 211 is a first trusted VM, the device interface 206 is a first device interface, the VM 213 is a second trusted VM managed by the hypervisor 202, and the resource arbitration module 203 is further to assign a second device interface, e.g., the device interface 208 of the device 204 to the second trusted VM 213 to move the device interface 208 to the operational state.), wherein the processing unit includes the plurality of hardware resources ([0041] In embodiments, the computing platform 200 includes one or more VMs, e.g., a VM 211, managed by the hypervisor 202, which is operated on one or more processors 201; [0020] an operational state to enable access to device registers of the device by the VM or direct memory access (DMA) from the device to memory address spaces of the VM). It would have been obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to have combined Brownlow with the teachings of Shanbhogue to improve security (see Shanbhogue [0050] When the VM 211 is a trusted VM, the device driver 214 may cause the device interface to be placed in the unlocked state, the locked state, or the operational state in a secure manner.). As per claim 9, it is a method claim of claim 1, so it is rejected for similar reasons. As per claim 17, Brownlow teaches an apparatus comprising: physical function circuitry configured to execute a virtual function using information stored in a plurality of hardware resources, the plurality of hardware resources including a plurality of resource subsets (Fig. 1; [0040] the PF manager 318 may configure the first physical function 324 to host multiple instances of a first virtual function, such as the first instance of the first virtual function 330 and the Mth instance of the first virtual function 331, where M is greater than 1; [0024] the hypervisor 204 may use a first physical function 230 of the hardware I/O adapter 202 to provide a first instance of a first virtual function 232, a second instance of a first virtual function 233, and an Nth instance of a first virtual function 234 to the logical partitions 206-208; [0028] In operation, the PF manager 220 may enable the first virtual function instances 232-234 from the first physical function 230. The PF manager 220 may enable the second virtual function 235 from the second physical function 231. The virtual functions 232-235 may be enabled based on a user provided configuration. Each of the logical partitions 206-208 may execute an operating system (not shown) and client applications (not shown); [0041] the hypervisor 304 may assign the pre-configured virtual functions 330-335 to a logical partition (e.g., the local partition 311) to enable client applications that are executing in the logical partition to perform I/O operations; [0022] The hypervisor 110 may create and manage logical partitions, such as virtual servers 112, 113. A logical partition may be a subset of the resources of the hardware server 102 that is virtualized as a separate virtual server… The hypervisor 110 may map the hardware of the hardware server 102 to the virtual servers 112, 113. For example, the processors 130-132 may be mapped to the virtual processors 120, 121; the memory 133-135 may be mapped to the virtual memory 122, 123, and the I/O adapters 136-138 may be mapped to the virtual I/O adapters 124-125); a processing unit configured to selectively enable access, by the virtual function, to a predetermined combination of resource subsets of the plurality of resource subsets of a plurality of predetermined combinations of resource subsets of the plurality of resource subsets corresponding to a first state of the virtual function determined from a set of states, wherein each state of the set of states is associated with a corresponding predetermined combination of resource subsets of the plurality of resource subsets of the plurality of predetermined combinations of resource subsets of the plurality of resource subsets (Fig. 1; [0004] The entry of the table may correspond to a virtual function hosted by a hardware input/output (I/O) adapter. The entry includes a state of the virtual function. The program code may be executable by the processor to send a reset command to reset the virtual function at the hardware I/O adapter in response to determining that the state of the virtual function comprises a reset pending state; [0005] The computer usable program code may be executable by the processor to identify a first logical partition that is associated with the first virtual function. The computer usable program code may be executable by the processor to retrieve first data corresponding to the first virtual function from a table in response to determining that the first logical partition has initiated a shutdown process in response to determining that the first logical partition has initiated a shutdown process; [0017] For example, a portion of the internal resources of the hardware I/O adapter, such as one or more queues, may be assigned to a virtual function. The virtual function may be assigned to a logical partition to enable the logical partition to perform I/O operations. After the logical partition is shutdown, the internal resources that the virtual function was using may be left in an intermediate state. The virtual function may be reset to enable the internal resources that were assigned to the virtual function, such as the one or more queues, to be reset to an initial state from the intermediate state. After the virtual function is reset, the virtual function may be assigned to another logical partition; [0041] During the runtime, the hypervisor 304 may assign the pre-configured virtual functions 330-335 to a logical partition (e.g., the local partition 311) to enable client applications that are executing in the logical partition to perform I/O operations; [0029] One or both of the hypervisor 204 and the dispatchable hypervisor 290 may reset the virtual function and reset the portion of the internal resources of the hardware I/O adapter that are allocated to the virtual function. Resetting the virtual function may enable the virtual function to be assigned to another logical partition; [0022] The hypervisor 110 may create and manage logical partitions, such as virtual servers 112, 113. A logical partition may be a subset of the resources of the hardware server 102 that is virtualized as a separate virtual server. Each of the virtual servers 112, 113 may have its own set of virtual resources, similar to a physical server. For example, the first virtual server 112 may include virtual processors 120, virtual memory 122, and virtual I/O adapters 124. Virtual server 113 may include virtual processors 121, virtual memory 123, and virtual I/O adapters 125. The hypervisor 110 may map the hardware of the hardware server 102 to the virtual servers 112, 113). Brownlow fails to teach execute a host driver that selectively enables access, by the virtual function, to a predetermined combination of resource subsets of the plurality of resource subsets of a plurality of predetermined combinations of resource subsets of the plurality of resource subsets corresponding to a first state of the virtual function determined from a set of states; and a state machine configured to determine the first state of the virtual function. However, Shanbhogue teaches execute a host driver that selectively enables access, by the virtual function, to a predetermined combination of resource subsets of the plurality of resource subsets of a plurality of predetermined combinations of resource subsets of the plurality of resource subsets corresponding to a first state of the virtual function determined from a set of states ([0050] In embodiments, the device driver 214 includes support of a device management protocol to cause the device interface 206 to be placed in a default unlocked state, a locked state to prevent changes to be made to the device interface 206, or an operational state to enable access to device registers of the device 204 by the VM 211 or DMA from the device 204 to memory address spaces of the VM 211. In addition, the device driver 214, in support of the device management protocol, is to receive from the device interface 206 a configuration report of the device interface 206; instruct the device interface 206 to move into the operational state from the locked state when the device 204 is assigned to the VM 211. Furthermore, the device driver 214 may instruct the device interface 206 to move into the unlocked state when removing the device interface 206 from being assigned to the VM 211, thereby stopping access by the VM 211 to the device registers of the device 204 and DMA by the device 204 to memory spaces of the VM 211; [0033] a device 101, e.g., a host; [0044] In embodiments, a device interface, e.g., the device interface 206, may be a physical function, a virtual function; [0048] The device interface 206 is, at interaction 316, to receive a request to move the device interface 206 to the operational state from the locked state, after the device interface report has been validated by the trusted VM 211. Additional operations may be performed. The device interface 206 is, at interaction 317, to determine memory mapped input-output (MMIO) resources mapping between the trusted VM 211 and the device 204. In detail, the device interface 206 is to determine if the MMIO resources mapped into the VM matches the MMIO resources configuration as reported in the device interface report. The device interface 206 is, at interaction 318, to receive an allocation of the memory address spaces of the trusted VM 211 for the device interface 206 to host the MMIO resources; [0110] Device interface assignment involves following steps…(4) If configurations are acceptable then accept the MMIO and DMA mappings to enable access to the device registers and to enable DMA from device to TD memory; [0045] A VF is usually assigned to a child partition like a TD in a virtualized environment. To address the scalability issues with SR-IOV, a further PCIe extension has been defined called scalable IOV which provides similar sharing and assignment of device resources to child partitions like a TD; [0110] Device interface assignment involves following steps: (1) Configuring and locking the interface using LOCK_INTERFACE_REQUEST; (2) Obtaining a DEVICE_INTERFACE_REPORT using GET_DEVICE_INTERFACE_REPORT: (3) Verifying the configuration reported by the device in DEVICE_INTERFACE_REPORT; (4) If configurations are acceptable then accept the MMIO and DMA mappings to enable access to the device registers and to enable DMA from device to TD memory; and (5) If the configurations are acceptable then starting the interface using START_INTERFACE_REQUEST; [0111-0112] Step 1: Configure and Lock Interface—…TD allocates GPA space for hosting MMIO resources of the VDEV, and requests VMM to map MMIO resources for the VDEV (provides it the GPA ranges); [0119-0120] Step 5: Start the Interface to Move it to RUN State—… VMM executes START_INTERFACE_REQUEST method on the device for requested device interface/s, moving it/them to “Run” state; [0057] the trusted VM 211 is a first trusted VM, the device interface 206 is a first device interface, the VM 213 is a second trusted VM managed by the hypervisor 202, and the resource arbitration module 203 is further to assign a second device interface, e.g., the device interface 208 of the device 204 to the second trusted VM 213 to move the device interface 208 to the operational state); and a state machine configured to determine the first state of the virtual function ([0044] In embodiments, a device interface, e.g., the device interface 206, may be a physical function, a virtual function, or an assignable device interface (ADI). Furthermore, the device interface 206 may operate in various states, e.g., 3 different states, an UNLOCKED state 231, a LOCKED state 233, and a RUN state 235, according to a state machine 230 as shown in FIG. 2(b). In some other embodiments, there may be more than 3 states, or states called different names. For example, an UNLOCKED state 231 may be referred to as an unlocked state, a LOCKED state 233 may be referred to as a locked state, and a RUN state 235 may be referred to as an operational state. In some embodiments there may be an ERROR state that is entered from RUN or LOCKED state on encountering an error.). It would have been obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to have combined Brownlow with the teachings of Shanbhogue to improve security (see Shanbhogue [0050] When the VM 211 is a trusted VM, the device driver 214 may cause the device interface to be placed in the unlocked state, the locked state, or the operational state in a secure manner.). As per claim 18, Brownlow and Shanbhogue teaches the apparatus of claim 17. Brownlow teaches selectively enable access to a second predetermined combination of resource subsets of the plurality of resource subsets of the plurality of predetermined combinations of resource subsets of the plurality of resource subsets by the virtual function in response to determining a second state of the virtual function, wherein the first state is different from the second state and wherein the predetermined combination of resource subsets of the plurality of resource subsets is different from the second predetermined combination of resource subsets of the plurality of resource subsets (Fig. 1; [0017] For example, a portion of the internal resources of the hardware I/O adapter, such as one or more queues, may be assigned to a virtual function. The virtual function may be assigned to a logical partition to enable the logical partition to perform I/O operations. After the logical partition is shutdown, the internal resources that the virtual function was using may be left in an intermediate state. The virtual function may be reset to enable the internal resources that were assigned to the virtual function, such as the one or more queues, to be reset to an initial state from the intermediate state. After the virtual function is reset, the virtual function may be assigned to another logical partition; [0041] During the runtime, the hypervisor 304 may assign the pre-configured virtual functions 330-335 to a logical partition (e.g., the local partition 311) to enable client applications that are executing in the logical partition to perform I/O operations; [0029] One or both of the hypervisor 204 and the dispatchable hypervisor 290 may reset the virtual function and reset the portion of the internal resources of the hardware I/O adapter that are allocated to the virtual function. Resetting the virtual function may enable the virtual function to be assigned to another logical partition; [0022] The hypervisor 110 may create and manage logical partitions, such as virtual servers 112, 113. A logical partition may be a subset of the resources of the hardware server 102 that is virtualized as a separate virtual server. Each of the virtual servers 112, 113 may have its own set of virtual resources, similar to a physical server. For example, the first virtual server 112 may include virtual processors 120, virtual memory 122, and virtual I/O adapters 124. Virtual server 113 may include virtual processors 121, virtual memory 123, and virtual I/O adapters 125.). Additionally, Shanbhogue teaches wherein the host driver is configured to selectively enable access to a second predetermined combination of resource subsets of the plurality of resource subsets of the plurality of predetermined combinations of resource subsets of the plurality of resource subsets by the virtual function in response to the state machine determining a second state of the virtual function ([0050] In embodiments, the device driver 214 includes support of a device management protocol to cause the device interface 206 to be placed in a default unlocked state, a locked state to prevent changes to be made to the device interface 206, or an operational state to enable access to device registers of the device 204 by the VM 211 or DMA from the device 204 to memory address spaces of the VM 211; [0033] a device 101, e.g., a host; [0044] In embodiments, a device interface, e.g., the device interface 206, may be a physical function, a virtual function, or an assignable device interface (ADI). Furthermore, the device interface 206 may operate in various states, e.g., 3 different states, an UNLOCKED state 231, a LOCKED state 233, and a RUN state 235, according to a state machine 230 as shown in FIG. 2(b). In some other embodiments, there may be more than 3 states, or states called different names. For example, an UNLOCKED state 231 may be referred to as an unlocked state, a LOCKED state 233 may be referred to as a locked state, and a RUN state 235 may be referred to as an operational state; [0110] Device interface assignment involves following steps…(4) If configurations are acceptable then accept the MMIO and DMA mappings to enable access to the device registers and to enable DMA from device to TD memory; [0045] A VF is usually assigned to a child partition like a TD in a virtualized environment. To address the scalability issues with SR-IOV, a further PCIe extension has been defined called scalable IOV which provides similar sharing and assignment of device resources to child partitions like a TD; [0061] This is the default state of the device interface 206. In the unlocked state, the OS 212 or the VMM configures the device interface 206, e.g., a PF, VF, or ADI, to be assigned to a TD; [0108] The following provide descriptions on how the VMM uses the protocol and messages disclosed so far to do device interface assignment and removal from TDs.). Claims 3, 11, and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Brownlow and Shanbhogue, as applied to claims 1, 9, and 18 above, in view of Asaro (US 20190004840 A1 hereinafter Asaro). Asaro was cited in a previous office action. As per claim 3, Brownlow and Shanbhogue teach the apparatus of claim 1. Shanbhogue teaches wherein the plurality of resource subsets includes a second subset to implement at least one context register, a fourth subset to implement at least one mailbox register ([0034] The interface 131 may include one or more registers, such as a capability header register, an authentication header register, an authentication capability register, an authentication status register, an authentication control register, a write data mailbox register, a read data mailbox register, or some other registers.). Brownlow and Shanbhogue fail to teach wherein the plurality of resource subsets includes a first subset to implement a frame buffer, a third subset to implement a doorbell. However, Asaro wherein the plurality of resource subsets includes a first subset to implement a frame buffer, a third subset to implement a doorbell (Fig. 4; [0049] The VF configuration space 414 includes a frame buffer BAR 418, a doorbell BAR 420, and a register BAR 422;). It would have been obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to have combined Brownlow and Shanbhogue with the teachings of Asaro to provide the beneficial functions of the frame buffer, which stores video frames, and the doorbell which stores a pointer to commands which allows the commands to be fetched (see Asaro [0048] The doorbell memory 214 stores a pointer to commands in system memory and the command processor 213 causes those commands to be fetched for processing by the graphics processing pipeline 134 and/or by the compute units 132 for general purpose GPU computing when the VF associated with the VM becomes the current active function. As per claim 11, it is a method claim of claim 3, so it is rejected for similar reasons. As per claim 19, it is an apparatus claim of claim 3, so it is rejected for similar reasons. Claims 4, 7, 12, and 15 are rejected under 35 U.S.C. 103 as being unpatentable over Brownlow, Shanbhogue, and Asaro, as applied to claims 3 and 11 above, in view of Asaro (US 20190018699 A1 hereinafter Asaro2). Asaro2 was cited in a previous office action. As per claim 4, Brownlow, Shanbhogue, and Asaro teach the apparatus of claim 3. Brownlow teaches wherein the determined state of the virtual function comprises one of: a second state of the virtual function that is used for 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 ([0029] One or both of the hypervisor 204 and the dispatchable hypervisor 290 may reset the virtual function and reset the portion of the internal resources of the hardware I/O adapter that are allocated to the virtual function. Resetting the virtual function may enable the virtual function to be assigned to another logical partition; [0040] the PF manager 318 may configure the first physical function 324 to host multiple instances of a first virtual function; [0041] During the runtime, the hypervisor 304 may assign the pre-configured virtual functions 330-335 to a logical partition (e.g., the local partition 311) to enable client applications that are executing in the logical partition to perform I/O operations.). Additionally, Shanbhogue teaches a first state that is a default state of the virtual function ([0044] the device interface 206 may be placed in the unlocked state 231 as a default state of the device 204; [0044] In embodiments, a device interface, e.g., the device interface 206, may be a physical function, a virtual function). Brownlow, Shanbhogue, and Asaro fail to teach a second state of the virtual function that is used for initialization, re-initialization, and reset of the virtual function However, Asaro2 teaches a second state of the virtual function that is used for initialization, re-initialization, and reset of the virtual function ([0051] In response to receiving the virtual function-function level reset request, the APD 116 performs a virtual function-function level reset for the hung function. Generally, the virtual function-function level reset sets the state of the specified virtual function back to a pre-initialization state so that the work being performed for that virtual function is stopped and so that the corresponding virtual machine can again initialize that virtual function. Among other things, the virtual function-function level reset interrupts the in flight work in the APD 116, and also includes clearing state and data for the virtual function in the APD 116, so that the function can be re-initialized; claim 6 placing the virtual function into a state in which the virtual function is ready to be initialized). It would have been obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to have combined Brownlow, Shanbhogue, and Asaro with the teachings of Asaro2 to recover from a hang (see Abstract A technique for recovering from a hang in a virtualized accelerated processing device (“APD”) is provided. In the virtualization scheme, different virtual machines are assigned different “time-slices” in which to use the APD. When a time-slice expires, the APD stops operations for a current VM and starts operations for another VM. To stop operations on the APD, a virtualization scheduler sends a request to idle the APD. The APD responds by completing work and idling. If one or more portions of the APD do not complete this idling process before a timeout expires, then a hang occurs. In response to the hang, the virtualization scheduler informs the hypervisor that a hang has occurred. The hypervisor performs a function level reset on the APD and informs the VM that the hang has occurred. The VM responds by stopping command issue to the APD and re-initializing the APD for the function.). As per claim 7, Brownlow, Shanbhogue, Asaro, and Asaro2 the apparatus of claim 4. Shanbhogue teaches wherein the host driver is configured to, in response to the virtual function being in the third state, enable access to each resource subset of the plurality of resource subsets by the virtual function based on at least one of a risk level, a security level, and a threat level associated with the resource subsets ([0050] When the VM 211 is a trusted VM, the device driver 214 may cause the device interface to be placed in the unlocked state, the locked state, or the operational state in a secure manner; [0161] move the device interface into the operational state from the locked state when the device is assigned to the VM and further authorized by a security credential provided by the VM, and further reject untrusted access to register state of the device when in locked state; [0033] a device 101, e.g., a host; [0045] The PF is the primary function of the device and is usually assigned to the root or parent partition in a virtualized environment. The VF shares one or more physical resources wof the device—such as memory, network port, storage volume, etc.—with the PF and other VFs on the device; [0044] In embodiments, a device interface, e.g., the device interface 206, may be a physical function, a virtual function, or an assignable device interface (ADI). Furthermore, the device interface 206 may operate in various states, e.g., 3 different states, an UNLOCKED state 231, a LOCKED state 233, and a RUN state 235, according to a state machine 230 as shown in FIG. 2(b). In some other embodiments, there may be more than 3 states, or states called different names. For example, an UNLOCKED state 231 may be referred to as an unlocked state, a LOCKED state 233 may be referred to as a locked state, and a RUN state 235 may be referred to as an operational state. In some embodiments there may be an ERROR state that is entered from RUN or LOCKED state on encountering an error. In the ERROR state the interface may not be operational and may only respond to a protocol message request to stop the interface and move to UNLOCKED state. In detail, the device interface 206 may be placed in the unlocked state 231 as a default state of the device 204, a locked state 233 to prevent changes to be made to the device interface 206, or an operational state, e.g., the RUN state 235, to enable access to device registers of the device 204 by the VM 211 or direct memory access (DMA) from the device 204 to memory address spaces of the VM 211; [0046] When the device interface 206 is in the operational state, the device 204 is to accept trusted transaction level packets (TLPs) from the trusted VM 211 or to generate trusted TLPs to be sent to the trusted VM 211; [0048] The device interface 206 is, at interaction 316, to receive a request to move the device interface 206 to the operational state from the locked state, after the device interface report has been validated by the trusted VM 211. Additional operations may be performed. The device interface 206 is, at interaction 317, to determine memory mapped input-output (MMIO) resources mapping between the trusted VM 211 and the device 204. In detail, the device interface 206 is to determine if the MMIO resources mapped into the VM matches the MMIO resources configuration as reported in the device interface report. The device interface 206 is, at interaction 318, to receive an allocation of the memory address spaces of the trusted VM 211 for the device interface 206 to host the MMIO resources). As per claim 12, it is a method claim of claim 4, so it is rejected for similar reasons. As per claim 15, it is a method claim of claim 7, so it is rejected for similar reasons. Claim 20 is rejected under 35 U.S.C. 103 as being unpatentable over Brownlow and Shanbhogue, as applied to claim 17 above, in view of Asaro2. As per claim 20, Brownlow and Shanbhogue teach the apparatus of claim 17. Brownlow teaches wherein the determined state of the virtual function comprises one of: a second state of the virtual function that is used for 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 ([0029] One or both of the hypervisor 204 and the dispatchable hypervisor 290 may reset the virtual function and reset the portion of the internal resources of the hardware I/O adapter that are allocated to the virtual function. Resetting the virtual function may enable the virtual function to be assigned to another logical partition; [0040] the PF manager 318 may configure the first physical function 324 to host multiple instances of a first virtual function; [0041] During the runtime, the hypervisor 304 may assign the pre-configured virtual functions 330-335 to a logical partition (e.g., the local partition 311) to enable client applications that are executing in the logical partition to perform I/O operations.). Additionally, Shanbhogue teaches a first state that is a default state of the virtual function ([0044] the device interface 206 may be placed in the unlocked state 231 as a default state of the device 204; [0044] In embodiments, a device interface, e.g., the device interface 206, may be a physical function, a virtual function). Brownlow and Shanbhogue fail to teach a second state of the virtual function that is used for initialization, re-initialization, and reset of the virtual function. However, Asaro2 teaches a second state of the virtual function that is used for initialization, re-initialization, and reset of the virtual function ([0051] In response to receiving the virtual function-function level reset request, the APD 116 performs a virtual function-function level reset for the hung function. Generally, the virtual function-function level reset sets the state of the specified virtual function back to a pre-initialization state so that the work being performed for that virtual function is stopped and so that the corresponding virtual machine can again initialize that virtual function. Among other things, the virtual function-function level reset interrupts the in flight work in the APD 116, and also includes clearing state and data for the virtual function in the APD 116, so that the function can be re-initialized; claim 6 placing the virtual function into a state in which the virtual function is ready to be initialized). It would have been obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to have combined Brownlow and Shanbhogue with the teachings of Asaro2 to recover from a hang (see Abstract A technique for recovering from a hang in a virtualized accelerated processing device (“APD”) is provided. In the virtualization scheme, different virtual machines are assigned different “time-slices” in which to use the APD. When a time-slice expires, the APD stops operations for a current VM and starts operations for another VM. To stop operations on the APD, a virtualization scheduler sends a request to idle the APD. The APD responds by completing work and idling. If one or more portions of the APD do not complete this idling process before a timeout expires, then a hang occurs. In response to the hang, the virtualization scheduler informs the hypervisor that a hang has occurred. The hypervisor performs a function level reset on the APD and informs the VM that the hang has occurred. The VM responds by stopping command issue to the APD and re-initializing the APD for the function.). Allowable Subject Matter Claims 5, 6, 8, 13, 14, and 16 would be allowable if rewritten to overcome the rejection(s) under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), 2nd paragraph, set forth in this Office action and to include all of the limitations of the base claim and any intervening claims. Conclusion Any inquiry concerning this communication or earlier communications from the examiner should be directed to HSING CHUN LIN whose telephone number is (571)272-8522. The examiner can normally be reached Mon - Fri 9AM-5PM. 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, Aimee Li can be reached at (571) 272-4169. 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. /H.L./Examiner, Art Unit 2195 /Aimee Li/Supervisory Patent Examiner, Art Unit 2195
Read full office action

Prosecution Timeline

Dec 10, 2020
Application Filed
Jan 11, 2023
Non-Final Rejection — §103, §112
Apr 24, 2023
Interview Requested
May 01, 2023
Examiner Interview Summary
May 18, 2023
Response Filed
Sep 10, 2023
Final Rejection — §103, §112
Oct 27, 2023
Interview Requested
Nov 03, 2023
Examiner Interview Summary
Dec 13, 2023
Response after Non-Final Action
Jan 08, 2024
Examiner Interview (Telephonic)
Jan 09, 2024
Response after Non-Final Action
Feb 13, 2024
Request for Continued Examination
Feb 20, 2024
Response after Non-Final Action
Sep 29, 2024
Non-Final Rejection — §103, §112
Dec 31, 2024
Response Filed
Apr 14, 2025
Final Rejection — §103, §112
Jun 24, 2025
Response after Non-Final Action
Aug 20, 2025
Request for Continued Examination
Aug 26, 2025
Response after Non-Final Action
Jan 15, 2026
Non-Final Rejection — §103, §112 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12554523
REDUCING DEPLOYMENT TIME FOR CONTAINER CLONES IN COMPUTING ENVIRONMENTS
2y 5m to grant Granted Feb 17, 2026
Patent 12547458
PLATFORM FRAMEWORK ORCHESTRATION AND DISCOVERY
2y 5m to grant Granted Feb 10, 2026
Patent 12468573
ADAPTIVE RESOURCE PROVISIONING FOR A MULTI-TENANT DISTRIBUTED EVENT DATA STORE
2y 5m to grant Granted Nov 11, 2025
Patent 12461785
GRAPHIC-BLOCKCHAIN-ORIENTATED SHARDING STORAGE APPARATUS AND METHOD THEREOF
2y 5m to grant Granted Nov 04, 2025
Patent 12443425
ISOLATED ACCELERATOR MANAGEMENT INTERMEDIARIES FOR VIRTUALIZATION HOSTS
2y 5m to grant Granted Oct 14, 2025
Study what changed to get past this examiner. Based on 5 most recent grants.

AI Strategy Recommendation

Get an AI-powered prosecution strategy using examiner precedents, rejection analysis, and claim mapping.
Powered by AI — typically takes 5-10 seconds

Prosecution Projections

5-6
Expected OA Rounds
59%
Grant Probability
99%
With Interview (+79.8%)
3y 4m
Median Time to Grant
High
PTA Risk
Based on 108 resolved cases by this examiner. Grant probability derived from career allow rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month