IP Library Granted Patent US 11,210,239
Granted Patent B2
US 11,210,239 · App. 16/741,905 · Granted Dec 28, 2021

Protection key management and prefixing in virtual address space legacy emulation system

Inventor: Jan Jaeger (Wallisellen, CH)
Assignee: LzLabsGmbH
G06F12/1475G06F12/145G06F12/1466G06F21/00G06F21/79G06F2212/1052
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 11,210,239
App. No.
16/741,905
Granted
Dec 28, 2021
Kind
B2
Abstract

A system is described to provide protection key access control in a system whose operating system and processor were not designed to provide a protection key memory access control mechanism. Such a system can be applied to an emulator or to enable a system that executes native applications to be interoperable with a legacy system that employs protection key memory access control.

Claims (39)

1. A method of implementing protection key memory access control in a computing system having a processor not adapted to support protection key memory access control, the processor executing an operating system that manages virtual memory, the processor adapted to execute user processes comprising tasks, the method comprising:

assigning a contiguous range of addressable virtual memory containing blocks to each user process;

assigning a first virtual address mapping in the contiguous range of addressable virtual memory to a specific task with a storage access key assigned to the specific task;

determining whether the specific task is authorized to use a second storage access key, and, if the specific task is authorized, assigning a second virtual address mapping to the specific task and the different storage access key;

setting an indicator that a page associated with said different storage key is valid; and

upon execution of a computer instruction of the specific task using any storage access key:

generating a virtual address associated with the specific task;

determining whether the virtual address associated with the specific task lies within the first or second virtual address mapping; and

if the address lies within the first or second virtual address mapping:

generating a segmentation fault;

verifying that said storage access key has a value of zero or that said task is authorized to access the virtual address using that said storage access key; and

upon said verifying, changing native protection settings associated with the page stored in the virtual memory and associated with the task to allow access to the associated virtual address.

2. The method of claim 1 , wherein the blocks comprise 4K blocks.

3. The method of claim 1 , wherein the segmentation fault comprises indicating that the page corresponding to the virtual address is not present in physical memory.

4. The method of claim 1 , wherein the segmentation fault comprises indicating that the task is attempting to write to the page which is present in memory with a read only access permission setting.

5. The method of claim 1 , wherein the segmentation fault comprises indicating that the task is attempting to read the page without a matching access permission setting.

6. The method of claim 1 , wherein changing native protection settings associated with the page stored in the addressable virtual memory and associated with the task comprises setting the value of bit zero of a corresponding page table entry to indicate that the physical page comprising the data is present in memory.

7. The method of claim 1 , further comprising invoking the MPROTECT( ) function to change native protection settings associated with the page stored in the addressable virtual memory and associated with the specific task.

8. The method of claim 1 , wherein changing native protection settings comprises changing access control bits.

9. The method of claim 1 , further comprising, in response to the segmentation fault, executing a routine to change a state of the page stored in the addressable virtual memory and associated with the specific task from not-present to present.

10. A computing system comprising:

a processor not adapted to support protection key memory access control, the processor executing an operating system that manages addressable virtual memory, the processor adapted to execute user processes comprising tasks; and

a non-transient memory storing instructions which, when executed on the processor, cause the processor to:

assign to a user process, a contiguous range of addressable virtual memory containing blocks and assign a storage key to each block;

assign a first virtual address mapping in the contiguous range of addressable virtual memory to a specific task with a storage access key assigned to the specific task;

determine whether the specific task is authorized to use a different storage access key, and if the specific task is authorized, assign a second virtual address mapping to the specific task and different storage access key;

set an indicator that a page associated with said different storage key is valid; and

upon execution of a computer instruction of the specific task using any storage access key:

generate a virtual address associated with the specific task;

determine whether the virtual address associated with the specific task lies within the first or second virtual address mapping; and

if the address lies within the first or second virtual address mapping:

generate a segmentation fault;

verify that said storage access key used to execute the specific task has a value of zero or that said task is authorized to access the virtual address in the addressable virtual memory using that said storage access key; and

upon said verifying, change protection settings associated with the page stored in the virtual memory and associated with the task to allow access to the associated virtual address.

11. The system of claim 10 , wherein the blocks comprise 4K blocks.

12. The system of claim 10 , wherein the segmentation fault comprises an indication that the page corresponding to the virtual address is not present in physical memory.

13. The system of claim 10 , wherein the segmentation fault comprises an indication that the task is attempting to write to the page which is present in memory with a read only access permission setting.

14. The system of claim 10 , wherein the segmentation fault comprises an indication that the task is attempting to read the page without a matching access permission setting.

15. The system of claim 10 , further comprising, in response to the segmentation fault, executing a routine to change a state of the page stored in the addressable virtual memory and associated with the specific task from not-present to present.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2020
From: JAEGER, JAN
To: LZLABS GMBH
Reel/Frame 051505/0986 →
Continuity (5)
Continuation 15949312 · Apr 10, 2018
Continuation 15691874 · Aug 31, 2017
Continuation 15162288 · May 23, 2016
Continuation PCTIB2015059646 · Dec 15, 2015
Related Publication 20200151115A1 · May 14, 2020