US12367032B1 - Hot loadable programmable state machine - Google Patents
Hot loadable programmable state machineInfo
- Publication number
- US12367032B1 US12367032B1 US18/171,325 US202318171325A US12367032B1 US 12367032 B1 US12367032 B1 US 12367032B1 US 202318171325 A US202318171325 A US 202318171325A US 12367032 B1 US12367032 B1 US 12367032B1
- Authority
- US
- United States
- Prior art keywords
- patch
- state machine
- hot
- loadable
- programmable state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
Definitions
- a programmable state machine can be programmed to detect failure conditions in a processor or system-on-chip (SOC) to trigger a particular state of the programmable state machine.
- SOC system-on-chip
- the programmable state machine can be programmed to take preventative or other corrective actions.
- the programmable state machine can change states and take corresponding actions.
- the programmable state machine's program is often embedded in a system's BIOS, which requires a system reboot to update the program.
- FIG. 1 is a block diagram of an exemplary system for a hot loadable programmable state machine.
- FIG. 2 is a block diagram of an exemplary hot loadable programmable state machine.
- FIG. 3 is a block diagram of an exemplary hot loadable patch for a programmable state machine.
- FIG. 4 is a flow diagram of an exemplary method for hot loading a program for a programmable state machine.
- the present disclosure is generally directed to a hot loadable programmable state machine.
- implementations of the present disclosure include applying a hot loadable patch to reprogram a programmable state machine.
- the systems and methods described herein can advantageously allow reprogramming a programmable state machine without requiring a system reboot, avoiding a costly downtime for a maintenance cycle.
- the systems and methods described herein also improves the functioning of a computer by allowing faster application of fixes to hardware bugs.
- a controller can receive and apply a hot loadable patch and run the reprogrammed debug circuit without requiring a system reboot.
- a device for a hot loadable programmable state machine includes controller configured to (i) receive a hot loadable patch for a processor firmware, (ii) apply the hot loadable patch to reprogram a programmable state machine for monitoring processor events, and (iii) run the reprogrammed programmable state machine to monitor the processor events.
- the programmable state machine corresponds to a debug circuit for responding to trigger conditions based on the processor events.
- applying the hot loadable patch further includes rewriting instructions in one or more registers associated with the programmable state machine to reprogram the programmable state machine.
- the processor firmware corresponds to microcode.
- the hot loadable patch satisfies a microcode patch size threshold.
- the hot loadable patch includes a fix, utilizing the programmable state machine, for a hardware logic bug.
- the hardware logic bug is not addressable with a current BIOS without a reboot.
- the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine. In some examples, running the reprogrammed programmable state machine does not require a system reboot. In some examples, applying the hot loadable patch further includes utilizing an operating system.
- a system for a hot loadable programmable state machine includes at least one physical processor having a firmware, a debug circuit for the processor corresponding to a programmable state machine for responding to trigger conditions based on processor events, a register for storing a program for the programmable state machine, and a controller.
- the controller is configured to (i) receive a hot loadable patch for a processor firmware, (ii) apply the hot loadable patch without rebooting the system to reprogram the programmable state machine by updating the register, and (iii) run the reprogrammed programmable state machine to monitor the processor events.
- the processor firmware corresponds to microcode and the hot loadable patch satisfies a microcode patch size threshold.
- the hot loadable patch includes a fix, utilizing the programmable state machine, for a hardware logic bug that is not addressable with a current BIOS without a reboot.
- the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine.
- applying the hot loadable patch further includes utilizing an operating system.
- a method for hot loading a programmable state machine includes (i) receiving a hot loadable patch for a processor firmware, (ii) applying the hot loadable patch, wherein the hot loadable patch includes instructions to update at least one register storing a program for a programmable state machine for responding to trigger conditions based on processor events to reprogram the programmable state machine, and (iii) running the reprogrammed programmable state machine to monitor the processor events.
- the processor firmware corresponds to microcode and the hot loadable patch satisfies a microcode patch size threshold.
- the hot loadable patch includes a fix, utilizing the programmable state machine, for a hardware logic bug that is not addressable with a current BIOS without a reboot.
- the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine. In some examples, running the reprogrammed programmable state machine does not require a system reboot.
- FIGS. 1 - 4 detailed descriptions of a hot loadable programmable state machine.
- Detailed descriptions of an example system for a hot loadable programmable state machine will be provided in connection with FIG. 1 .
- Detailed descriptions of an example programmable state machine corresponding to a debug circuit will be provided in connection to FIG. 2 .
- Detailed descriptions of an example hot loadable patch will be provided in connection with FIG. 3 .
- Detailed descriptions of corresponding computer-implemented methods will also be provided in connection with FIG. 4 .
- Examples of memory 120 include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations, or combinations of one or more of the same, and/or any other suitable storage memory.
- RAM Random Access Memory
- ROM Read Only Memory
- HDDs Hard Disk Drives
- SSDs Solid-State Drives
- optical disk drives caches, variations, or combinations of one or more of the same, and/or any other suitable storage memory.
- processor 110 includes a controller 112 , a register 114 , and a debug circuit 130 .
- Controller 112 corresponds to a circuit that can read and apply hot loadable patches, for example for updating a firmware of processor 110 .
- Register 114 corresponds to a local storage of processor 110 for storing a program for debug circuit 130 .
- Debug circuit 130 is a circuit that corresponds to a programmable state machine that monitors for processor events (such as hardware failure conditions) and can take action in response to certain triggers.
- FIG. 1 illustrates debug circuit 130 as part of processor 110 , in some implementations, debug circuit 130 can be separate from processor 110 and/or be part of another subsystem. In some implementations, debug circuit 130 can be programmed (e.g., via register 114 ) as a state machine for responding to processor events, as illustrated in FIG. 2 .
- FIG. 2 illustrates a simplified diagram of a programmable state machine 230 that corresponds to debug circuit 130 .
- programmable state machine 230 includes various states and transitions between the states, such as a state 232 A, a state 232 B, a state 232 C, a state 232 D, and transitions 234 therebetween.
- Programmable state machine 230 can, in response to certain trigger conditions, perform state transitions and produce outputs (e.g., take actions).
- the trigger conditions correspond to hardware bugs, such as logic errors in processor 110 and other errors in subsystems thereof.
- a hardware bug can cause particular trigger conditions to occur.
- the response actions can be corrective and/or preventative of the hardware bugs.
- programmable state machine 230 e.g., debug circuit 130
- debug circuit 130 can be used to implement permanent or semi-permanent workarounds (e.g., solutions that reduce or mitigate errors to within a tolerance, or otherwise fixes errors) for hardware bugs. Rather than redesigning and replacing a hardware component, debug circuit 130 can provide a more feasible and immediate solution to the hardware bugs.
- debug circuit 130 can include hardware components (e.g., logic components such as gates and flops) for implementing a portion or all of programmable state machine 230 .
- Various other portions of programmable state machine 230 can be programmed (e.g., as an updatable program stored in register 114 ).
- FIG. 2 illustrates one example of programmable state machine 230
- programmable state machine 230 can include more or fewer states and other transitions.
- programmable state machine 230 can be reprogrammed into a different layout, for example from a patch, such as illustrated in FIG. 3 , that updates the program stored in register 114 .
- FIG. 3 illustrates a patch 340 that can be used to reprogram a programmable state machine (e.g., programmable state machine 230 and/or debug circuit 130 ).
- patch 340 can be in a hot loadable patch format.
- a hot loadable patch corresponds to a program and/or code that can be applied while system 100 and/or processor 110 is running, for instance without requiring rebooting system 100 .
- a hot loadable patch can be used update certain code such as firmware for processor 110 .
- Patch 340 can conform to hot loadable patch format requirements, such as size or other format requirements for microcode (e.g., a microcode patch data block).
- the processor firmware corresponds to microcode.
- the hot loadable patch satisfies a microcode patch size threshold.
- the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
The disclosed device includes a debug circuit and a controller. The debug circuit corresponds to a programmable state machine for responding to trigger conditions based on processor events. The controller is configured to receive a hot loadable patch for a processor firmware, apply the hot loadable patch to reprogram a programmable state machine for monitoring processor events, and run the reprogrammed programmable state machine to monitor the processor events. Various other methods, systems, and computer-readable media are also disclosed.
Description
Some computer architectures use a programmable state machine for debugging or fixing hardware bugs. For example, a programmable state machine can be programmed to detect failure conditions in a processor or system-on-chip (SOC) to trigger a particular state of the programmable state machine. For a given state, the programmable state machine can be programmed to take preventative or other corrective actions. In response to further trigger conditions, the programmable state machine can change states and take corresponding actions. The programmable state machine's program is often embedded in a system's BIOS, which requires a system reboot to update the program.
The accompanying drawings illustrate a number of exemplary implementations and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the present disclosure.
Throughout the drawings, identical reference characters and descriptions indicate similar, but not necessarily identical, elements. While the exemplary implementations described herein are susceptible to various modifications and alternative forms, specific implementations have been shown by way of example in the drawings and will be described in detail herein. However, the exemplary implementations described herein are not intended to be limited to the particular forms disclosed. Rather, the present disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims.
The present disclosure is generally directed to a hot loadable programmable state machine. As will be explained in greater detail below, implementations of the present disclosure include applying a hot loadable patch to reprogram a programmable state machine. The systems and methods described herein can advantageously allow reprogramming a programmable state machine without requiring a system reboot, avoiding a costly downtime for a maintenance cycle. The systems and methods described herein also improves the functioning of a computer by allowing faster application of fixes to hardware bugs.
As will be described in greater detail below, the instant disclosure describes various systems and methods for hot loading a debug circuit that corresponds to a programmable state machine. A controller can receive and apply a hot loadable patch and run the reprogrammed debug circuit without requiring a system reboot.
In one implementation, a device for a hot loadable programmable state machine includes controller configured to (i) receive a hot loadable patch for a processor firmware, (ii) apply the hot loadable patch to reprogram a programmable state machine for monitoring processor events, and (iii) run the reprogrammed programmable state machine to monitor the processor events.
In some examples, the programmable state machine corresponds to a debug circuit for responding to trigger conditions based on the processor events. In some examples, applying the hot loadable patch further includes rewriting instructions in one or more registers associated with the programmable state machine to reprogram the programmable state machine.
In some examples, the processor firmware corresponds to microcode. In some examples, the hot loadable patch satisfies a microcode patch size threshold. In some examples, the hot loadable patch includes a fix, utilizing the programmable state machine, for a hardware logic bug. In some examples, the hardware logic bug is not addressable with a current BIOS without a reboot.
In some examples, the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine. In some examples, running the reprogrammed programmable state machine does not require a system reboot. In some examples, applying the hot loadable patch further includes utilizing an operating system.
In one implementation, a system for a hot loadable programmable state machine includes at least one physical processor having a firmware, a debug circuit for the processor corresponding to a programmable state machine for responding to trigger conditions based on processor events, a register for storing a program for the programmable state machine, and a controller. In some examples, the controller is configured to (i) receive a hot loadable patch for a processor firmware, (ii) apply the hot loadable patch without rebooting the system to reprogram the programmable state machine by updating the register, and (iii) run the reprogrammed programmable state machine to monitor the processor events.
In some examples, the processor firmware corresponds to microcode and the hot loadable patch satisfies a microcode patch size threshold. In some examples, the hot loadable patch includes a fix, utilizing the programmable state machine, for a hardware logic bug that is not addressable with a current BIOS without a reboot. In some examples, the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine. In some examples, applying the hot loadable patch further includes utilizing an operating system.
In one example, a method for hot loading a programmable state machine includes (i) receiving a hot loadable patch for a processor firmware, (ii) applying the hot loadable patch, wherein the hot loadable patch includes instructions to update at least one register storing a program for a programmable state machine for responding to trigger conditions based on processor events to reprogram the programmable state machine, and (iii) running the reprogrammed programmable state machine to monitor the processor events.
In some examples, the processor firmware corresponds to microcode and the hot loadable patch satisfies a microcode patch size threshold. In some examples, the hot loadable patch includes a fix, utilizing the programmable state machine, for a hardware logic bug that is not addressable with a current BIOS without a reboot. In some examples, the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine. In some examples, running the reprogrammed programmable state machine does not require a system reboot.
Features from any of the implementations described herein can be used in combination with one another in accordance with the general principles described herein. These and other implementations, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims.
The following will provide, with reference to FIGS. 1-4 , detailed descriptions of a hot loadable programmable state machine. Detailed descriptions of an example system for a hot loadable programmable state machine will be provided in connection with FIG. 1 . Detailed descriptions of an example programmable state machine corresponding to a debug circuit will be provided in connection to FIG. 2 . Detailed descriptions of an example hot loadable patch will be provided in connection with FIG. 3 . Detailed descriptions of corresponding computer-implemented methods will also be provided in connection with FIG. 4 .
As illustrated in FIG. 1 , example system 100 includes one or more physical processors, such as processor 110. Processor 110 generally represents any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In some examples, processor 110 accesses and/or modifies data and/or instructions stored in memory 120. Examples of processor 110 include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), graphics processing units (GPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), systems on chip (SoCs), digital signal processors (DSPs), Neural Network Engines (NNEs), accelerators, graphics processing units (GPUs), portions of one or more of the same, variations or combinations of one or more of the same, and/or any other suitable physical processor.
As further illustrated in FIG. 1 , processor 110 includes a controller 112, a register 114, and a debug circuit 130. Controller 112 corresponds to a circuit that can read and apply hot loadable patches, for example for updating a firmware of processor 110. Register 114 corresponds to a local storage of processor 110 for storing a program for debug circuit 130. Debug circuit 130 is a circuit that corresponds to a programmable state machine that monitors for processor events (such as hardware failure conditions) and can take action in response to certain triggers. Although FIG. 1 illustrates debug circuit 130 as part of processor 110, in some implementations, debug circuit 130 can be separate from processor 110 and/or be part of another subsystem. In some implementations, debug circuit 130 can be programmed (e.g., via register 114) as a state machine for responding to processor events, as illustrated in FIG. 2 .
Programmable state machine 230 can, in some examples, start in a default state such as state 232A and monitor processor events (e.g., from processor 110). For example, programmable state machine 230 (e.g., debug circuit 130) can keep watch on certain signals. Based on trigger conditions, such as a particular signal going high/low after a predetermined number of cycles, programmable state machine 230 can transition to another state as well as perform an action. For example, transition 234 from state 232A to state 232C in response to corresponding trigger conditions can include an action, such as flushing a pipeline, stalling a pipeline, sending interrupts (e.g., to another debug circuit), sending other communications, incrementing a counter (which in some examples can be monitored as a trigger condition), etc.
In some examples, the trigger conditions correspond to hardware bugs, such as logic errors in processor 110 and other errors in subsystems thereof. For instance, a hardware bug can cause particular trigger conditions to occur. The response actions can be corrective and/or preventative of the hardware bugs. In some implementations, programmable state machine 230 (e.g., debug circuit 130) can be used to implement permanent or semi-permanent workarounds (e.g., solutions that reduce or mitigate errors to within a tolerance, or otherwise fixes errors) for hardware bugs. Rather than redesigning and replacing a hardware component, debug circuit 130 can provide a more feasible and immediate solution to the hardware bugs.
In some implementations, debug circuit 130 can include hardware components (e.g., logic components such as gates and flops) for implementing a portion or all of programmable state machine 230. Various other portions of programmable state machine 230, such as trigger conditions, transitions, response actions, etc., can be programmed (e.g., as an updatable program stored in register 114). Additionally, although FIG. 2 illustrates one example of programmable state machine 230, in other examples, programmable state machine 230 can include more or fewer states and other transitions. In addition, programmable state machine 230 can be reprogrammed into a different layout, for example from a patch, such as illustrated in FIG. 3 , that updates the program stored in register 114.
As illustrated in FIG. 3 , patch 340 includes a header 342 containing patch info 344, and updates 346. Header 342 corresponds to a header format, for example corresponding to a microcode patch data block header format, to allow patch info 344 to be read or otherwise parsed. Patch info 344 can include, in some implementations, information about types of patch data components to be processed, such as chicken bits (e.g., bits for enabling/disabling certain hardware features), whether updates 346 include valid instructions for the programmable state machine, and other information.
Updates 346 include, in some implementations, a delta for updating a program for the programmable state machine. In some examples, updates 346 include a program to rewrite a prior program. In some examples, updates 346 include instructions for updating the prior program, such as mask data for updating instructions of the prior program (e.g., preserving and/or modifying specified bits in the program).
As illustrated in FIG. 4 , at step 402 one or more of the systems described herein receives a hot loadable patch for a processor firmware. For example, controller 112 receives a hot loadable patch for a firmware for processor 110.
The systems described herein can perform step 402 in a variety of ways. In some implementations, the programmable state machine corresponds to a debug circuit for responding to trigger conditions based on the processor events. In some implementations, the hot loadable patch includes a fix and/or workaround, utilizing the programmable state machine, to address a hardware logic bug. For example, the hot loadable patch can prevent the hardware logic bug from occurring, and/or can reduce or mitigate errors (to within an acceptable tolerance) resulting from the hardware logic bug. In some examples, the hardware logic bug is not addressable with a current BIOS without a reboot. For instance, addressing the hardware logic bug via BIOS can require and updated BIOS and rebooting the system, which can be a long process (e.g., requiring testing the updated BIOS, a rollout process causing system down time, etc.).
Further, in some implementations, the processor firmware corresponds to microcode. For example, the hot loadable patch satisfies a microcode patch size threshold. In some examples, the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine.
At step 404 one or more of the systems described herein applies the hot loadable patch to reprogram a programmable state machine for monitoring processor events. For example, controller 112 applies the hot loadable patch (e.g., to register 114) to reprogram debug circuit 130.
The systems described herein can perform step 404 in a variety of ways. In one example, applying the hot loadable patch further includes utilizing an operating system. In some implementations, applying the hot loadable patch further includes rewriting instructions in one or more registers associated with the programmable state machine to reprogram the programmable state machine.
At step 406 one or more of the systems described herein runs the reprogrammed programmable state machine to monitor the processor events. For example, controller 112 and/or processor 110 can run debug circuit 130 using the updated program in register 114.
The systems described herein can perform step 406 in a variety of ways. In one example, running the reprogrammed programmable state machine does not require a system reboot.
As detailed above, the present disclosure is directed to using a microcode patch to hot load, in one implementation, a Debug State Machine (DSM). The hot loading of a DSM workaround can be done as part of the microcode patch load process. A data block known as PDATA (Patch Data Block) follows the Patch layout in memory. The systems and methods described herein can use an existing software infrastructure and piggyback on microcode patch loading mechanisms.
Whenever there is a bug in a SOC, one way to address the issue is to use the DSM. The DSM can be programmed to detect the failure conditions and take preventive actions. The DSM logic can be applied an image which is embedded in the BIOS. Thus, a customer who needs the workaround has to deploy a new BIOS which contains the fix (e.g., a fix for the DSM logic or a DSM recipe). However, a BIOS deployment cycle can be extremely long and expensive. The customer also suffers a downtime of the systems that need the fix deployed. DSM workarounds to fix silicon issues through an existing patch load mechanism and infrastructure can make QA cycles extremely small, prevents the need for a new BIOS, and prevents downtime when the fix is deployed.
To avoid the BIOS deployment cycle, the systems and methods described herein can use a microcode patch to hot load a DSM workaround. The hot loading of a DSM workaround is done as part of the microcode patch load process. A data block known as PDATA (Patch Data Block) follows the patch layout in memory, which in some implementations can be raw data that does not consume valuable patch code space. The microcode during patch load discovers a hint which indicates the presence of a valid PDATA block. During the patch load, the microcode can load the header byte (e.g., first four bytes) of the PDATA block. If the header byte is non-zero, it can indicate that a valid Patch Data follows the header bytes. The PDATA block can support several components of which DSM hot loading is one feature. The bits of the header can indicate that a valid DSM recipe is available in the PDATA block. The DSM recipe in the PDATA block can follow a format that is adhered to by the patch writer. For example, the PDATA block can include an address of the register for the DSM, and the program patch (e.g., updated values and/or bit masks for calculating updated values) for updating the DSM program.
As detailed above, the computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein. In their most basic configuration, these computing device(s) each include at least one memory device and at least one physical processor.
In some examples, the term “memory device” generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer-readable instructions. In one example, a memory device stores, loads, and/or maintains one or more of the modules and/or circuits described herein. Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations, or combinations of one or more of the same, or any other suitable storage memory.
In some examples, the term “physical processor” generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In one example, a physical processor accesses and/or modifies one or more modules stored in the above-described memory device. Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), systems on a chip (SoCs), digital signal processors (DSPs), Neural Network Engines (NNEs), accelerators, graphics processing units (GPUs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.
In some implementations, the term “computer-readable medium” generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and non-transitory-type media, such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic-storage media (e.g., solid-state drives and flash media), and other distribution systems.
The process parameters and sequence of the steps described and/or illustrated herein are given by way of example only and can be varied as desired. For example, while the steps illustrated and/or described herein are shown or discussed in a particular order, these steps do not necessarily need to be performed in the order illustrated or discussed. The various exemplary methods described and/or illustrated herein can also omit one or more of the steps described or illustrated herein or include additional steps in addition to those disclosed.
The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary implementations disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the spirit and scope of the present disclosure. The implementations disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the present disclosure.
Unless otherwise noted, the terms “connected to” and “coupled to” (and their derivatives), as used in the specification and claims, are to be construed as permitting both direct and indirect (i.e., via other elements or components) connection. In addition, the terms “a” or “an,” as used in the specification and claims, are to be construed as meaning “at least one of.” Finally, for ease of use, the terms “including” and “having” (and their derivatives), as used in the specification and claims, are interchangeable with and have the same meaning as the word “comprising.”
Claims (20)
1. A device comprising:
a controller configured to:
load a hot loadable patch for updating a processor firmware of one or more processors, wherein the one or more processors includes a debug circuit configured as a programmable state machine to respond to processor hardware events of the one or more processors, and wherein the hot loadable patch includes an indicator for a patch data block that includes one or more instructions to update at least one register storing a program for the debug circuit;
reprogram, using the one or more instructions in the patch data block indicated by the hot loadable patch to update the at least one register, the programmable state machine; and
operate the debug circuit to monitor the processor hardware events by running the reprogrammed programmable state machine.
2. The device of claim 1 , wherein the debug circuit is configured to respond to the processor hardware events based on trigger conditions, defined with the reprogrammed programmable state machine.
3. The device of claim 1 , wherein reprogramming the programmable state machine further comprises rewriting instructions in one or more registers of the debug circuit to reprogram the programmable state machine and running the reprogrammed programmable state machine comprises executing the rewritten instructions in the one or more registers.
4. The device of claim 3 , wherein the one or more instructions in the patch data block includes one or more addresses for the one or more registers of the debug circuit.
5. The device of claim 1 , wherein the processor firmware corresponds to microcode, the hot loadable patch satisfies a microcode patch size threshold, and a size of the patch data block is separate from the microcode patch size threshold for the hot loadable patch.
6. The device of claim 1 , wherein the one or more instructions includes a fix, utilizing the programmable state machine, for a hardware logic bug of the one or more processors.
7. The device of claim 6 , wherein the hardware logic bug is not addressable with a current BIOS without a system reboot and running the reprogrammed programmable state machine does not require the system reboot.
8. The device of claim 6 , wherein the fix reduces errors resulting from the hardware logic bug.
9. The device of claim 1 , wherein the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine.
10. The device of claim 1 , wherein applying-loading the hot loadable patch further comprises utilizing an operating system.
11. A system comprising:
at least one physical processor having a firmware;
a debug circuit for the at least one physical processor configured as a programmable state machine for responding to trigger conditions based on processor hardware events of the at least one physical processor;
a register for storing a program for the programmable state machine; and
a controller configured to:
load a hot loadable patch for updating a processor firmware of the at least one physical processor, wherein the hot loadable patch includes an indicator for a patch data block that includes one or more instructions to update the register;
reprogram, using the one or more instructions in the patch data block indicated by the hot loadable patch to update the register, the programmable state machine; and
operate the debug circuit to monitor the processor hardware events by running the reprogrammed programmable state machine.
12. The system of claim 11 , wherein the processor firmware corresponds to microcode, the hot loadable patch satisfies a microcode patch size threshold, and a size of the patch data block is separate from the microcode patch size threshold for the hot loadable patch.
13. The system of claim 11 , wherein one or more instructions includes a fix, utilizing the programmable state machine, for a hardware logic bug of the at least one physical processor that is not addressable with a current BIOS without a reboot.
14. The system of claim 11 , wherein the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine.
15. The system of claim 11 , wherein loading the hot loadable patch further comprises utilizing an operating system.
16. A method comprising:
loading a hot loadable patch for updating a processor firmware of one or more processors, wherein the one or more processors includes a debug circuit configured as a programmable state machine for responding to trigger conditions based on processor hardware events of the one or more processors;
detecting, in response to loading the hot loadable patch, a patch data block indicated by the hot loadable patch, wherein the patch data block includes instructions to update at least one register storing a program for the debug circuit;
reprogramming, using one or more instructions in the patch data block to update the at least one register, the programmable state machine; and
operating the debug circuit to monitor the processor hardware events by running the reprogrammed programmable state machine.
17. The method of claim 16 , wherein the processor firmware corresponds to microcode, the hot loadable patch satisfies a microcode patch size threshold, and a size of the patch data block is separate from the microcode patch size threshold for the hot loadable patch.
18. The method of claim 16 , wherein the one or more instructions includes a fix, utilizing the programmable state machine, for a hardware logic bug that is not addressable with a current BIOS without a reboot.
19. The method of claim 16 , wherein the hot loadable patch includes an indication of a valid program to reprogram the programmable state machine.
20. The method of claim 16 , wherein running the reprogrammed programmable state machine does not require a system reboot.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/171,325 US12367032B1 (en) | 2023-02-17 | 2023-02-17 | Hot loadable programmable state machine |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/171,325 US12367032B1 (en) | 2023-02-17 | 2023-02-17 | Hot loadable programmable state machine |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US12367032B1 true US12367032B1 (en) | 2025-07-22 |
Family
ID=96435066
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US18/171,325 Active 2043-05-15 US12367032B1 (en) | 2023-02-17 | 2023-02-17 | Hot loadable programmable state machine |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US12367032B1 (en) |
Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6075941A (en) * | 1997-01-29 | 2000-06-13 | International Business Machines Corporation | Microcomputer |
| US20040015952A1 (en) * | 2001-04-18 | 2004-01-22 | Domosys Corporation | Method of remotely upgrading firmware in field-deployed devices |
| US7350202B2 (en) * | 1999-05-18 | 2008-03-25 | Welfeld Feliks J | Method for re-programming a firmware state machine during execution |
| US20100332909A1 (en) * | 2009-06-30 | 2010-12-30 | Texas Instruments Incorporated | Circuits, systems, apparatus and processes for monitoring activity in multi-processing systems |
| US8161328B1 (en) * | 2010-05-27 | 2012-04-17 | Western Digital Technologies, Inc. | Debugger interface |
| US20120146658A1 (en) * | 2010-12-09 | 2012-06-14 | Advanced Micro Devices, Inc. | Debug state machine cross triggering |
| US20130007532A1 (en) * | 2011-06-28 | 2013-01-03 | Miller Gary L | Data processing system having a sequence processing unit and method of operation |
| US9335986B1 (en) * | 2013-12-11 | 2016-05-10 | Amazon Technologies, Inc. | Hot patching to update program code and/or variables using a separate processor |
| US20200285461A1 (en) * | 2020-04-06 | 2020-09-10 | Mohan J. Kumar | Microcode(ucode) hot-upgrade method for bare metal cloud deployment |
-
2023
- 2023-02-17 US US18/171,325 patent/US12367032B1/en active Active
Patent Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6075941A (en) * | 1997-01-29 | 2000-06-13 | International Business Machines Corporation | Microcomputer |
| US7350202B2 (en) * | 1999-05-18 | 2008-03-25 | Welfeld Feliks J | Method for re-programming a firmware state machine during execution |
| US20040015952A1 (en) * | 2001-04-18 | 2004-01-22 | Domosys Corporation | Method of remotely upgrading firmware in field-deployed devices |
| US20100332909A1 (en) * | 2009-06-30 | 2010-12-30 | Texas Instruments Incorporated | Circuits, systems, apparatus and processes for monitoring activity in multi-processing systems |
| US8161328B1 (en) * | 2010-05-27 | 2012-04-17 | Western Digital Technologies, Inc. | Debugger interface |
| US20120146658A1 (en) * | 2010-12-09 | 2012-06-14 | Advanced Micro Devices, Inc. | Debug state machine cross triggering |
| US20130007532A1 (en) * | 2011-06-28 | 2013-01-03 | Miller Gary L | Data processing system having a sequence processing unit and method of operation |
| US9335986B1 (en) * | 2013-12-11 | 2016-05-10 | Amazon Technologies, Inc. | Hot patching to update program code and/or variables using a separate processor |
| US20200285461A1 (en) * | 2020-04-06 | 2020-09-10 | Mohan J. Kumar | Microcode(ucode) hot-upgrade method for bare metal cloud deployment |
Non-Patent Citations (6)
| Title |
|---|
| Cao, Qing, et al. "Declarative tracepoints: A programmable and application independent debugging system for wireless sensor networks." Proceedings of the 6th ACM conference on Embedded network sensor systems. 2008. pp. 85-98. (Year: 2008). * |
| Kourfali, Alexandra, and Dirk Stroobandt. "In-circuit debugging with dynamic reconfiguration of FPGA interconnects." ACM Transactions on Reconfigurable Technology and Systems (TRETS) 13.1 (2020): pp. 1-29. (Year: 2020). * |
| Makowski, Dariusz, et al. "Firmware upgrade in xTCA systems." IEEE Transactions on Nuclear Science 60.5 (2013): pp. 3639-3646. (Year: 2013). * |
| Tan, Chu Jay, et al. "Review on firmware." Proceedings of the International Conference on Imaging, Signal Processing and Communication. 2017.pp. 186-190 (Year: 2017). * |
| Vermeulen, Bart. "Functional debug techniques for embedded systems." IEEE Design & Test of Computers 25.3 (2008): pp. 208-215. (Year: 2008). * |
| Villarraga, Carlos. Formal Verification of Firmware-Based System-on-Chip Modules. Diss. Technische Universität Kaiserslautern, 2017. pp. 1-137 (Year: 2017). * |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11340990B2 (en) | System and method to run basic input/output system code from a non-volatile memory express device boot partition | |
| US6564348B1 (en) | Method and apparatus for storing and using chipset built-in self-test signatures | |
| JP5540155B2 (en) | Providing platform independent memory logic | |
| US11972243B2 (en) | Memory device firmware update and activation without memory access quiescence | |
| US11379330B2 (en) | Information handling systems and related methods for testing memory during boot and during operating system (OS) runtime | |
| US11580226B2 (en) | Hybrid firmware code protection | |
| US8806285B2 (en) | Dynamically allocatable memory error mitigation | |
| US8645797B2 (en) | Injecting a data error into a writeback path to memory | |
| US20180060231A1 (en) | Out-of-band data recovery in computing systems | |
| US8650437B2 (en) | Computer system and method of protection for the system's marking store | |
| CN109478135A (en) | Optimized UEFI reboot process | |
| CN111767066A (en) | Method and apparatus for in-situ mitigation of firmware failures | |
| US11080039B2 (en) | Resilient software updates in secure storage devices | |
| US10275299B2 (en) | Efficient transfer of data from CPU to onboard management device | |
| US7665005B2 (en) | In situ processor margin testing | |
| US9250942B2 (en) | Hardware emulation using on-the-fly virtualization | |
| US12367032B1 (en) | Hot loadable programmable state machine | |
| US7290128B2 (en) | Fault resilient boot method for multi-rail processors in a computer system by disabling processor with the failed voltage regulator to control rebooting of the processors | |
| US10776214B1 (en) | System protecting data stored on NVDIMM devices after BIOS update | |
| US20240020032A1 (en) | Option read-only memory firmware-based remediation | |
| US11954498B2 (en) | Dynamic operation code based agnostic analysis of initialization information | |
| US11210188B1 (en) | Systems and methods for processor monitoring and recovery | |
| US12153487B1 (en) | Customizable SoC state reporting | |
| US20260003718A1 (en) | Error handling management core | |
| US20260003709A1 (en) | Error handling management core |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |