IP Library Granted Patent US 7,493,498
Granted Patent B1
US 7,493,498 · App. 10/107,784 · Granted Feb 17, 2009

Input/output permission bitmaps for compartmentalized security

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,493,498
App. No.
10/107,784
Granted
Feb 17, 2009
Kind
B1
Abstract

A method and apparatus for selectively executing an I/O instruction. The method includes creating an I/O permission bitmap in a memory and receiving an I/O port number and a security context identification (SCID) value. The method also includes using the SCID value and the I/O port number to access the I/O permission bitmap stored to obtain a permission bit corresponding to the I/O port and executing the I/O instruction dependent upon a value of the permission bit corresponding to the I/O port. The I/O permission bitmap includes a plurality of permission bits. Each of the permission bits corresponds to a different one of a plurality of I/O ports. Each of the permission bits has a value indicating whether access to the corresponding I/O port is allowed. The I/O port number indicates the I/O port referenced by the I/O instruction. The SCID value indicates a security context level of a memory location including the I/O instruction.

Claims (69)

1. A processor adapted for coupling to a memory, the processor being capable of operating at one of a plurality of input/output (I/O) privilege levels, the processor comprising:

an execution unit configured to execute I/O instructions;

a memory management unit (MMU) configured to store data in the memory; and

a bus interface unit (BIU) coupled to receive an input/output (I/O) port number and a security context identification (SCID) value, wherein the I/O port number indicates a number of an input/output (I/O) port referenced by an I/O instruction, wherein the SCID value indicates a security context level of a memory location including the I/O instruction and one of a plurality of input/output (I/O) permission bitmaps stored within the memory, and wherein the SCID value is determined independently of the I/O instruction stored in the memory location, wherein the BIU is configured to use, in response to receiving an enable signal indicating that the I/O instruction is at least as privileged as an operative I/O privilege level being used by the processor, the SCID value and the I/O port number to access the input/output (I/O) permission bitmap indicated by the SCID value to obtain a permission bit corresponding to the I/O port, and to produce an output signal dependent upon a value of the permission bit; and

wherein the execution unit is coupled to receive the output signal and configured to execute the I/O instruction dependent upon the output signal.

2. The processor of claim 1 , wherein one or more of the I/O instructions are stored in the memory.

3. The processor of claim 1 , wherein the MMU is configured to store the data in the memory such that the data are arranged within a plurality of memory pages.

4. The processor of claim 1 , wherein the BIU is connected to the execution unit and the MMU.

5. The processor of claim 1 , wherein the I/O port number is received from the execution unit.

6. The processor of claim 1 , wherein the SCID value is received from the MMU.

7. The processor of claim 1 , wherein the I/O port number and the SCID value are received during execution of the I/O instruction by the execution unit.

8. The processor of claim 1 , wherein the I/O permission bitmap comprises a plurality of permission bits, and wherein each of the permission bits corresponds to a different one of a plurality of I/O ports, and wherein each of the permission bits has a value indicating whether access to the corresponding I/O port is allowed.

9. The processor of claim 1 , further comprising:

a model specific register (MSR) configured to store a base address of the I/O permission bitmap.

10. The processor of claim 9 , wherein the BIU accesses the I/O permission bitmap to obtain the permission bit corresponding to the I/O port number by using the I/O port number as a bit offset from contents of the MSR and into the I/O permission bitmap.

11. The processor of claim 1 , wherein the I/O permission bitmap is a primary I/O permission bitmap, and wherein the primary I/O permission bitmap includes a plurality of secondary I/O permission bitmaps, and wherein each of the secondary I/O permission bitmaps comprises a plurality of permission bits, and wherein each of the permission bits of a given one of the secondary I/O permission bitmaps corresponds to a different one of a plurality of I/O ports, and wherein each of the permission bits has a value indicating whether access to the corresponding I/O port is allowed.

12. The processor of claim 11 , wherein each of the secondary I/O permission bitmaps corresponds to a different one of a plurality of SCID values.

13. The processor of claim 11 , further comprising a model specific register (MSR) configured to store a base address of the primary I/O permission bitmap.

14. The processor of claim 13 , wherein the BIU accesses the I/O permission bitmap to obtain the permission bit corresponding to the I/O port number by using the SCID value as an offset from contents of the MSR into the primary I/O permission bitmap to determine a base address of a corresponding one of the secondary I/O permission bitmaps, and using the I/O port number as a bit offset from the base address of the corresponding one of the secondary I/O permission bitmaps and into the corresponding one of the secondary I/O permission bitmaps.

15. A computer system, comprising:

a memory for storing data, wherein the data includes I/O instructions;

a processor coupled to the memory, the processor being capable of operating at one of a plurality of input/output (I/O) privilege levels, the processor comprising:

an execution unit configured to execute the I/O instructions;

a memory management unit (MMU) configured to store data in the memory; and

a bus interface unit (BIU) coupled to receive an input/output (I/O) port number and a security context identification (SCID) value, wherein the I/O port number indicates a number of an input/output (I/O) port referenced by an I/O instruction, wherein the SCID value indicates a security context level of a memory location including the I/O instruction and one of a plurality of input/output (I/O) permission bitmaps stored within the memory, and wherein the SCID value is determined independently of the I/O instruction to be stored in the memory location, wherein the BIU is configured to use, in response to receiving an enable signal indicating that the I/O instruction is at least as privileged as an operative I/O privilege level being used by the processor, the SCID value and the I/O port number to access the input/output (I/O) permission bitmap indicated by the SCID value to obtain a permission bit corresponding to the I/O port, and to produce an output signal dependent upon a value of the permission bit; and

wherein the execution unit is coupled to receive the output signal and configured to execute the I/O instruction dependent upon the output signal.

16. A processor adapted for coupling to a memory, the processor being capable of operating at one of a plurality of input/output (I/O) privilege levels, the processor comprising:

an execution unit configured to execute I/O instructions;

a memory management unit (MMU) configured to store data in the memory;

a bus interface unit (BIU) operably coupled between the execution unit and the MMU and the memory to form an interface between the processor and the memory; and

a microcode engine coupled to the execution unit, the MMU, and the BIU, and configured to execute microcode instructions stored in a microcode store, wherein the microcode engine produces controls signals during execution of at least one of the microcode instructions, wherein a portion of the microcode instructions cause the microcode engine to produce controls signals that cause the BIU to:

receive an input/output (I/O) port number, an enable signal indicating that the I/O instruction is at least as privileged as an operative I/O privilege level being used by the processor, and a security context identification (SCID) value, wherein the I/O port number indicates a number of an input/output (I/O) port referenced by an I/O instruction, wherein the SCID value indicates a security context level of a memory location including the I/O instruction and one of a plurality of input/output (I/O) permission bitmaps stored within the memory, and wherein the SCID value is determined independently of the I/O instruction to be stored in the memory location, and

use, in response to receiving the enable signal, the SCID value and the I/O port number to access the input/output (I/O) permission bitmap indicated by the SCID value to obtain a permission bit corresponding to the I/O port, and to produce an output signal dependent upon a value of the permission bit; and

wherein the execution unit is coupled to receive the output signal and configured to execute the I/O instruction dependent upon the output signal.

17. The processor of claim 16 , wherein one or more of the I/O instructions are stored in the memory.

18. The processor of claim 16 , wherein the MMU is configured to store the data in the memory such that the data are arranged within a plurality of memory pages.

19. The processor of claim 16 , wherein the I/O port number is received from the execution unit.

20. The processor of claim 16 , wherein the SCID value is received from the MMU.

21. The processor of claim 16 , wherein the I/O port number and the SCID value are received during execution of the I/O instruction by the execution unit.

22. The processor of claim 16 , wherein the I/O permission bitmap comprises a plurality of permission bits, and wherein each of the permission bits corresponds to a different one of a plurality of I/O ports, and wherein each of the permission bits has a value indicating whether access to the corresponding I/O port is allowed.

23. The processor of claim 16 , further comprising:

a model specific register (MSR) configured to store a base address of the I/O permission bitmap.

24. The processor of claim 22 , wherein the BIU accesses the I/O permission bitmap to obtain the permission bit corresponding to the I/O port number by using the I/O port number as a bit offset from contents of the MSR and into the I/O permission bitmap.

25. The processor of claim 16 , wherein the I/O permission bitmap is a primary I/O permission bitmap, and wherein the primary I/O permission bitmap includes a plurality of secondary I/O permission bitmaps, and wherein each of the secondary I/O permission bitmaps comprises a plurality of permission bits, and wherein each of the permission bits of a given one of the secondary I/O permission bitmaps corresponds to a different one of a plurality of I/O ports, and wherein each of the permission bits has a value indicating whether access to the corresponding I/O port is allowed.

26. The processor of claim 25 , wherein each of the secondary I/O permission bitmaps corresponds to a different one of a plurality of SCID values.

27. The processor of claim 25 , further comprising a model specific register (MSR) configured to store a base address of the primary I/O permission bitmap.

28. The processor of claim 27 , wherein the BIU accesses the I/O permission bitmap to obtain the permission bit corresponding to the I/O port number by using the SCID value as an offset from contents of the MSR into the primary I/O permission bitmap to determine a base address of a corresponding one of the secondary I/O permission bitmaps, and using the I/O port number as a bit offset from the base address of the corresponding one of the secondary I/O permission bitmaps and into the corresponding one of the secondary I/O permission bitmaps.

29. The processor of claim 16 , wherein the control signals control the operations of the execution unit, the MMU, and the BIU.

30. A computer system, comprising:

a memory for storing data, wherein the data includes input/output (I/O) instructions; and

a processor capable of operating at one of a plurality of input/output (I/O) privilege levels, comprising:

an execution unit configured to execute I/O instructions;

a memory management unit (MMU) configured to store data in the memory;

a bus interface unit (BIU) operably coupled between the execution unit and the memory, and the MMU and the memory, to form an interface between the processor and the memory; and

a microcode engine coupled to the execution unit, the MMU, and the BIU, and configured to execute microcode instructions stored in a microcode store, wherein the microcode engine produces controls signals during execution of at least one of the microcode instructions, wherein a portion of the microcode instructions cause the microcode engine to produce controls signals that cause the BIU to:

receive an enable signal indicating that the I/O instruction is at least as privileged as an operative I/O privilege level being used by the processor, an I/O port number and a security context identification (SCID) value, wherein the I/O port number indicates a number of an I/O port referenced by an I/O instruction, wherein the SCID value indicates a security context level of a memory location including the I/O instruction and one of a plurality of input/output (I/O) permission bitmaps stored within the memory, and wherein the SCID value is determined independently of the I/O instruction to be stored in the memory location, and

use, in response to receiving the enable signal, the SCID value and the I/O port number to access the input/output (I/O) permission bitmap indicated by the SCID value to obtain a permission bit corresponding to the I/O port, and to produce an output signal dependent upon a value of the permission bit; and

wherein the execution unit is coupled to receive the output signal and configured to execute the I/O instruction dependent upon the output signal.

31. A method for selectively executing an input/output (I/O) instruction, the method comprising:

creating a plurality of input/output (I/O) permission bitmaps in a memory, wherein each I/O permission bitmap comprises a plurality of permission bits, and wherein each of the permission bits corresponds to a different one of a plurality of I/O ports, and wherein each of the permission bits has a value indicating whether access to the corresponding I/O port is allowed;

receiving an enable signal indicating that the I/O instruction is at least as privileged as one of a plurality of input/output (I/O) privilege levels being used by the processor, an I/O port number and a security context identification (SCID) value, wherein the I/O port number indicates the I/O port referenced by the I/O instruction, and wherein the SCID value indicates a security context level of a memory location including the I/O instruction and one of the plurality of input/output (I/O) permission bitmaps stored within the memory, and wherein the SCID value is determined independently of the I/O instruction to be stored in the memory location;

using, in response to receiving the enable signal, the SCID value and the I/O port number to access the I/O permission bitmap indicated by the SCID value to obtain a permission bit corresponding to the I/O port; and

executing the I/O instruction dependent upon a value of the permission bit corresponding to the I/O port.

32. The method of claim 31 , further comprising:

storing data including the I/O instruction.

33. The method of claim 32 , wherein storing the data including the I/O instruction further comprises storing the data including the I/O instruction in the memory.

34. The method of claim 33 , wherein storing the data including the I/O instruction in the memory further comprises storing the data including the I/O instruction in the memory such that the data are arranged within a plurality of memory pages.

35. The method of claim 31 , wherein receiving the I/O port number and the SCID value further comprises receiving the I/O port number and the SCID value during execution of the I/O instruction.

36. The method of claim 31 , wherein executing the I/O instruction dependent upon the value of the permission bit corresponding to the I/O port further comprises executing the I/O instruction if the value of the permission bit corresponding to the I/O port indicates access to the I/O port is allowed.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2021
From: GLOBALFOUNDRIES US INC.
To: MEDIATEK INC.
Reel/Frame 055173/0781 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES INC.
Reel/Frame 054636/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2020
From: GLOBALFOUNDRIES INC.
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 054633/0001 →
SECURITY AGREEMENT Recorded Nov 29, 2018
From: GLOBALFOUNDRIES INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049490/0001 →