Patching boot code of read-only memory

US9880856B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9880856-B2
Application numberUS-201414180030-A
CountryUS
Kind codeB2
Filing dateFeb 13, 2014
Priority dateFeb 22, 2013
Publication dateJan 30, 2018
Grant dateJan 30, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

The present disclosure describes apparatuses and techniques for patching boot code of read-only memory (ROM). In some aspects, execution of boot code from a ROM is initiated to start a boot process of a device. Execution of the boot code from the ROM is then interrupted to enable execution of other boot code, such as corrected boot code or additional boot code, from another memory. Once the other boot code is executed, execution of the boot code from the ROM is resumed to continue booting the computing device. By so doing, the corrected boot code or additional boot code can be executed during the boot process effective to patch the boot code stored in the ROM.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: initiating, from a first read-only memory (ROM), execution of first boot code to start a boot process of a computing device, the execution of the first boot code being advanced in accordance with a program counter of a processor executing the first boot code, the first boot code executed directly from the first ROM; accessing, via a hardware-based interrupt manager that is separate from the processor, a second ROM storing a boot-ROM patch including a first predefined address of the first boot code, a second predefined address of the first boot code, and second boot code: monitoring, via the hardware-based interrupt manager, the program counter or the processor until the program counter reaches the first predefined address of the first boot code; interrupting, via the hardware-based interrupt manager and responsive to the program counter reaching the first predefined address of the first boot code, the execution of the first boot code by the processor to enable execution of the second boot code stored in the second ROM; causing, while the execution or the first boot code is interrupted, the processor to execute the second boot code directly from the second ROM: setting the program counter to the second predefined address of the first boot code, the second predefined address being different from the first predefined address effective to prevent execution of at least a portion of the first boot code stored in the first ROM; and resuming, after the second boot code is executed and from the second predefined address to which the program counter is set, the execution of the first boot code directly from the first ROM to continue the boot process of the computing device without executing the portion of the first boot code stored in the first ROM. 2. The method as recited in claim 1 , wherein: the second ROM is one-time-programmable (OTP) memory having fuses into which the first predefined address, second predefined address and second boot code are burned; and other fuses of the OTP memory being burned effective to prevent other addresses or other boot code from being written to the OTP memory. 3. The method as recited in claim 1 , wherein execution of the first boot code is effective to implement an interrupt service routine, the hardware-based interrupt manager interrupts execution of the first boot code by setting an interrupt, and the interrupt service routine causes execution of the second boot code stored in the second ROM responsive to the interrupt being set. 4. The method as recited in claim 3 , further comprising: clearing, via the interrupt service routine, the interrupt set by the hardware-based interrupt manager; setting, via the interrupt service routine, the program counter of the processor to the second predefined address; and; resuming, via the interrupt service routine, the execution of the first boot code from the second predefined address to which the program counter is set. 5. The method as recited in claim 1 , wherein the first boot code is written into the first ROM during manufacture of a device or chip in which the first ROM is embodied. 6. The method as recited in claim 3 , wherein the method further comprises reading, via the interrupt service routine, the second predefined address from the second ROM. 7. The method as recited in claim 3 , wherein the interrupt service routine is dedicated to servicing the interrupt set by the hardware-based interrupt manager and is configured to return the program counter to the second predefined address instead of an address subsequent the first predefined address. 8. A method comprising: initiating execution of first boot code from a read-only memory (ROM), the execution of the first boot code being advanced in accordance with a program counter of a processor executing the first boot code, the first boot code executed by the processor directly from the ROM; accessing, via a hardware-based interrupt manager that is separate from the processor, a first predefined address in a boot-ROM patch, the boot-ROM1 patch stored in a one-time-programmable (OTP) memory; comparing, via the hardware-based interrupt manager, values of the program counter to the first predefined address; interrupting, via the hardware-based interrupt manager and responsive to the program counter reaching the first predefined address, the execution of the first boot code by setting a hardware-based interrupt; executing, via the processor and instead of a portion of the first boot code, second boot code of the boot-ROM patch stored in the OTP memory, the second boot code executed by the processor directly from the OTP memory; and returning, responsive to completing execution of the second boot code and based on a second predefined address stored in the boot-ROM patch, the program counter to the second predefined address effective to resume execution of the first boot code by the processor and directly from the ROM, the second predefined address being different from the first predefined address such that the first boot code is executed without executing the portion of the first boot code stored in the ROM. 9. The method as recited in claim 8 , wherein execution of the first boot code and the second boot code is effective to load a boot loader and the method further comprises, prior to transferring control to the boot loader, verifying a cryptographic signature or cryptographic hash of the boot loader to ensure authenticity of the boot loader. 10. The method as recited in claim 8 , wherein the execution of the first boot code is interrupted by a hardware-based interrupt and the method further comprises, prior to executing the second boot code, clearing the hardware-based interrupt. 11. The method as recited in claim 8 , wherein the portion of the first boot code includes a coding error, and the second predefined address to which the program counter is returned is located subsequent to the coding error in the first boot code such that the coding error is not executed. 12. The method as recited in claim 8 , wherein the first boot code is burned into the ROM and the second boot code is burned into the OTP memory such that execution of the first boot code and the second boot code implements at least part of a trusted boot process. 13. The method as recited in claim 8 , wherein the second predefined address is different from the first predefined address such that execution of at least one line of the first boot code is prevented. 14. A System-on-Chip comprising: a processor configured to execute, in accordance with a program counter, code to hoot a device in which the System-on-Chip is embodied: a read-only memory (ROM) storing first boot code for the device; a one-time-programmable (OTP) memory storing a boot-ROM patch including a first predefined address, a second predefined address, and second boot code for the device; a register configured to store an address for the program counter; and a hardware-based interrupt manager that is separate from the processor and configured to: compare, as the processor executes the first boot code directly from the ROM, values of the program counter to the first predefined address; interrupt execution of the first boot code directly from the ROM in response to one of the program counter values matching the first predefined address; cause the second predefined address stored in the OTP to be written to the register; cause the processor to execute the second boot code directly from the OTP memory; and cause, after the second boot code is executed directly from the OTP memory, the second predefined address in the register

Assignees

Inventors

Classifications

  • Bootstrapping (security arrangements therefor G06F21/57) · CPC title

  • G06F9/4406Primary

    Loading of operating system · CPC title

  • G06F8/66Primary

    of program code stored in read-only memory [ROM] · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9880856B2 cover?
The present disclosure describes apparatuses and techniques for patching boot code of read-only memory (ROM). In some aspects, execution of boot code from a ROM is initiated to start a boot process of a device. Execution of the boot code from the ROM is then interrupted to enable execution of other boot code, such as corrected boot code or additional boot code, from another memory. Once the oth…
Who is the assignee on this patent?
Marvell World Trade Ltd
What technology area does this patent fall under?
Primary CPC classification G06F9/4406. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jan 30 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).