DETAILED ACTION
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on March 25, 2025 has been entered.
Response to Amendment
The Amendment filed March 25, 2025 has been entered. Claims 1-3 and 5-24 remain pending in the application.
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 § 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.
Claims 1-3, 5, 7-8, 10, 12-18, and 20-24 are rejected under 35 U.S.C. 103 as being unpatentable over Agarwal et al. (US 2018/0189104) and Sharma et al. (US 2021/0200568).
Regarding claim 1, Agarwal et al. disclose:
An apparatus, comprising:
an interface to memory ([0099] System memory 610 is coupled to controller hub 615 through memory interface 616); and
a processor comprising circuitry (FIG. 1 Processor 100) configured to:
receive a command for an operation (FIG. 4 step 402 Receive ENG (Addressed to MMIO of SWQ) to be performed by another device ([0034] Modern and emerging accelerator devices and high-performance I/O devices; [0093] A core 202 can transmit an ENQCMD/S message 304 with an MMIO address for a SWQ 254 associated with a device (here, PCIe EP 212));
determine an identifier of an address space ([0061] a. Identity of the address space of the client that executed this instruction. For this disclosure, the “Process Address Space Identifier” (PASID) can be the client address-space identity. Depending on the software usage, PASID can be used for any of the type of clients (process, container, VM, etc.)) of a process ([0034] “Clients” in this context could be multiple user-mode (ring-3) applications that are submitting direct user-mode i/o requests to the device, multiple kernel-mode (ring-0) drivers running in multiple virtual machines (VMs) sharing the same device, multiple software agents running in multiple containers (with OSs supporting container technologies), any combination of above (ring-3 applications inside a VM, Containers hardened by running them in a VM, etc.)) associated with the command (FIG. 4 ENQ); and
determine whether to accept or reject the command for the another device ([0093] The ENQCMD/s message 304 is indexed to the VSWQ 302 within the I/O bridge 204. The VSWQ can provide a success/retry message 306 to the core 202. The VSWQ 302 can send the ENQCMD/S message 310 on to the SWQ 254 as-is. The SWQ 254 can then send a success/retry message 312 back to the VSWQ 302 in the I/O bridge 204 to update the credit counter; [0057] ENQCMD/S status encoding in EFLAGS.ZF encoding: [0058] 0: success (request queued to specified SWQ) [0059] 1: reject (request not accepted due to capacity/QoS reasons)) based on an operand of the command ([0063] c. Command Payload that is specific to the target device. The command payload is read from the source operand and conveyed as is by the instruction in the ENQCMD/S; [0065] At the ingress of device SWQ check if there is space in the SWQ to accept the request. If there is no space, drop the request and return a completion indicating “Reject/Retry” in completion status), a Quality of Service (QoS) quota value for the identifier of the address space of the process ([0066] If there is space to accept command to the SWQ, perform any needed device specific admission control based on the attributes in the request (such as PASID, Privilege, or SWQ_PREG address to which the request is routed) and various device-specific QoS settings for specific clients. If the admission control method determines that the request cannot be accepted to the SWQ, the request is dropped and a completion is returned with a completion status of “Reject/Retry.”; it is noted than PASID is part of the source operand, see [0061])…
Agarwal et al. do not appear to explicitly tach “an a QoS threshold.” However Sharma et al. disclose:
…and a QoS threshold ([0016] The definition of the QOS includes a specified value or range of values of one or more measurable levels of the service that is provided by the service provider. The definition of the QOS can include a low threshold and/or a high threshold of the measurable level of service).
Agarwal et al. and Sharma et al. are analogous art because Agarwal et al. teach optimized work submission to high performance I/O devices and Sharma et al. teach quality of service for memory commands.
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention, having the teachings of Agarwal et al. and Sharma et al. before him/her, to modify the teachings of Agarwal et al. with the QoS thresholds of Sharma et al. because setting QoS thresholds would provide a metric with which to reject a command when the device-specific QoS is not being met.
Regarding claim 2, Agarwal et al. further disclose:
The apparatus of claim 1, wherein the command is to atomically submit a work descriptor to the another device ([0003] These new instructions, called ENQCMD & ENQCMDS, addresses the SWQ using a MMIO address, which in turn produces an atomic non-posted write transaction towards the device. This transaction carries with it a descriptor and associated information about the work that the client is attempting to submit to the device; [0063] use the actual ENQCMD/S command to carry the device specific work descriptor).
Regarding claim 3, Agarwal et al. further disclose:
The apparatus of claim 1, wherein the command is to comprise indications of:
the operation ([0063] use the actual ENQCMD/S command to carry the device specific work descriptor), a source address ([0073] c. Execute ENQCMD/S with the memory virtual address of descriptor as source and the virtual address to which the SWQ_PREG is mapped as the destination), a destination address for a device specific register of the another device ([0052] to destination SWQ address (MMIO address); [0044] a SWQ Portal Register (SWQ_PREG) in the MMIO space of the device), and the identifier of the address space of the process ([0061] a. Identity of the address space of the client that executed this instruction. For this disclosure, the “Process Address Space Identifier” (PASID) can be the client address-space identity).
Claims 15-17 and 22-24 recite claims substantially similar to claims 1-3 and are rejected under the same rationale.
Regarding claim 5, Sharma et al. further disclose:
The apparatus of claim 1, wherein the QoS threshold comprises one or more of a bandwidth quota threshold, an operations per second (OPS) quota threshold, or a utilization quota threshold, wherein the QoS quota value (corresponding to various device-specific QoS settings for specific clients taught by Agarwal et al. above) comprises one or more of a bandwidth quota allocated to the identifier (i.e. PASID of client) of the address space of the process, an OPS quota allocated to the identifier of the address space of the process, or a percent utilization of the another device allocated to the identifier of the address space of the process ([0016] As used herein, an SLA is a commitment between a service provider and a client. The SLA defines aspects of the service that is provided by the service provider. For instance, the SLA can define a quality of service (QOS) that is provided to the client (i.e., QoS quota value). The definition of the QOS includes a specified value or range of values of one or more measurable levels of the service that is provided by the service provider. The definition of the QOS can include a low threshold and/or a high threshold of the measurable level of service (i.e., the QoS threshold). Examples of measurable levels of service include the amount of data that can be read from and written to one or more memory devices in a given time period (i.e., a bandwidth quota; bandwidth quota threshold is the low/high threshold), I/O per time period (i.e., an OPS quota; OPS quota threshold is the low/high threshold) and in terms of throughput (e.g., MB) per time period (i.e., a…utilization of the another device; a utilization quota threshold is the low/high threshold), etc.).
Agarwal et al. and Sharma et al. do not appear to explicitly teach "a percentage" utilization. However, one of ordinary skill in the art before the effective filing date of the claimed invention would understand that a percentage is a unit of measurement used to express a proportion. Expressing the utilization of the another device as a percentage would provide a clear way for describing how much of the another device is being utilized.
Claim 18 recites limitations similar to claims 4 and 5 and is rejected under the same rationale.
Regarding claim 7, Agarwal et al. further disclose:
determine an amount of resources to be used by the another device in performing the operation ([0059] 1: reject (request not accepted due to capacity/QoS reasons), wherein the command is further rejected based on the amount of resources exceeding the QoS quota value ([0066] If there is space to accept command to the SWQ, perform any needed device specific admission control based on the attributes in the request (such as PASID, Privilege, or SWQ_PREG address to which the request is routed) and various device-specific QoS settings for specific clients. If the admission control method determines that the request cannot be accepted to the SWQ, the request is dropped and a completion is returned with a completion status of “Reject/Retry.”).
Regarding claim 8, the combination of Agarwal et al. in view of Sharma et al. further disclose:
The apparatus of claim 1, wherein the circuitry is configured to:
return, to the process, an indication that the command was rejected [0057] ENQCMD/S status encoding in EFLAGS.ZF encoding:…[0059] 1: reject (request not accepted due to capacity/QoS reasons));
receive, from the process, a second instance of the command for the operation to be performed by the another device ([0074] d. … If retry status, either retry from step-C; [0073] c. Execute ENQCMD/S); and
execute, based on the QoS quota value for the identifier of the address space of the process ([0066] If there is space to accept command to the SWQ, perform any needed device specific admission control based on the attributes in the request (such as PASID, Privilege, or SWQ_PREG address to which the request is routed) and various device-specific QoS settings for specific clients. If the admission control method determines that the request cannot be accepted to the SWQ, the request is dropped and a completion is returned with a completion status of “Reject/Retry.”) and the QoS threshold for the identifier of the address space of the process (based on not exceeding the thresholds discloses by Sharma et al.), the second instance of the command to submit the second instance of the command to a shared work queue of the another device based on a non-posted memory write ([0003] ENQCMD & ENQCMDS, addresses the SWQ using a MMIO address, which in turn produces an atomic non-posted write transaction towards the device. This transaction carries with it a descriptor and associated information about the work that the client is attempting to submit to the device. When this transaction arrives at the SWQ, the device then makes a decision on whether it can successfully enqueue the work or not depending on a number of device/client/SWQ specific conditions).
Claim 20 recites limitations similar to claim 8 and is rejected under the same rationale.
Regarding claim 10, Agarwal et al. further disclose:
The apparatus of claim 8, wherein the circuitry is configured to:
return, to the process, an indication that the second instance of the command was submitted to the shared work queue ([0067] If the above checks result in the non-posted write command to be accepted to the SWQ, a completion is returned with completion status of “Successful Completion”. The command queued to the SWQ is processed/dispatched based on the device-specific scheduling model internal to the device).
Regarding claim 12, Sharma et al. further disclose:
The apparatus of claim 1, wherein the QoS quota value is based on a predetermined quota value associated with the identifier of the address space of the process ([0016] As used herein, an SLA is a commitment between a service provider and a client. The SLA defines aspects of the service that is provided by the service provider. For instance, the SLA can define a quality of service (QOS) that is provided to the client (i.e., QoS quota value). The definition of the QOS includes a specified value or range of values of one or more measurable levels of the service that is provided by the service provider).
Regarding claim 13, Agarwal et al. further disclose:
The apparatus of claim 1, wherein the process is associated with one or more of:
(i) an application, (ii) a container, (iii) a virtual machine ([0034] “Clients” in this context could be multiple user-mode (ring-3) applications that are submitting direct user-mode i/o requests to the device, multiple kernel-mode (ring-0) drivers running in multiple virtual machines (VMs) sharing the same device, multiple software agents running in multiple containers (with OSs supporting container technologies), any combination of above (ring-3 applications inside a VM, Containers hardened by running them in a VM, etc.)), or (iv) a microservice.
Regarding claim 14, Agarwal et al. further disclose:
The apparatus of claim 1, wherein the another device comprises a Peripheral Component Interconnect Express (PCIe) device ([0093] a device (here, PCIe EP 212)), a Compute Express Link (CXL) device, or a Universal Chiplet Interconnect Express (UCIe) device.
Regarding claim 21, Sharma et al. further disclose:
The method of claim 18, wherein the QoS quota value is based on a predetermined quota value associated with the identifier of the address space of the process, wherein the QoS quota value, the predetermined quota value, and the QoS threshold are based on a service level agreement (SLA) ([0016] As used herein, an SLA is a commitment between a service provider and a client. The SLA defines aspects of the service that is provided by the service provider. For instance, the SLA can define a quality of service (QOS) that is provided to the client. The definition of the QOS includes a specified value or range of values of one or more measurable levels of the service that is provided by the service provider. The definition of the QOS can include a low threshold and/or a high threshold of the measurable level of service. Examples of measurable levels of service include the amount of data that can be read from and written to one or more memory devices in a given time period, I/O per time period and in terms of throughput (e.g., MB) per time period, etc.).
Allowable Subject Matter
Claims 6, 9, 11, and 19 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims as discussed in the Non-Final Office Action mailed August 25, 2025.
Response to Arguments
Applicant's arguments filed March 25, 2026 have been fully considered but they are not persuasive.
Applicant's arguments fail to comply with 37 CFR 1.111(b) because they amount to a general allegation that the claims define a patentable invention without specifically pointing out how the language of the claims patentably distinguishes them from the references. Additionally Agarwal et al. disclose the amended claims as discussed in claim 1 above.
Conclusion
All claims are identical to or patentably indistinct from, or have unity of invention with claims in the application prior to the entry of the submission under 37 CFR 1.114 (that is, restriction (including a lack of unity of invention) would not be proper) and all claims could have been finally rejected on the grounds and art of record in the next Office action if they had been entered in the application prior to entry under 37 CFR 1.114. Accordingly, THIS ACTION IS MADE FINAL even though it is a first action after the filing of a request for continued examination and the submission under 37 CFR 1.114. See MPEP § 706.07(b). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to TRACY A WARREN whose telephone number is (571)270-7288. The examiner can normally be reached M-Th 7:30am-5pm, Alternate F.
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, Arpan P. Savla can be reached at 571-272-1077. 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.
/TRACY A WARREN/ Primary Examiner, Art Unit 2137