IP Library Granted Patent US 10,713,353
Granted Patent B2
US 10,713,353 · App. 16/016,254 · Granted Jul 14, 2020

Separate cores to secure processes from speculative rogue cache loads

Inventors: Michael Wei (Palo Alto, CA); Dan Tsafrir (Sunnyvale, CA); Nadav Amit (Mountain View, CA)
Assignee: VMware, Inc.
G06F21/54G06F12/1009G06F12/1441G06F21/52G06F21/577G06F21/74G06F2212/1044G06F2212/1052G06F2212/657G06F2221/034
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 10,713,353
App. No.
16/016,254
Granted
Jul 14, 2020
Kind
B2
Abstract

The present disclosure addresses the meltdown vulnerability resulting from speculative execution in a multi-core processing system. The operating system (OS) can be loaded for execution on one of several processing cores (OS core), while an application can be loaded for execution on another of the processing cores (application core). The OS core uses process page tables that map the entire kernel address space to physical memory. Conversely, the application core uses pages tables that map only a portion of the kernel address space to physical memory.

Claims (35)

1. A method for executing an application on a computing system, the method comprising:

executing an operating system (OS) on a first processing core selected from among a plurality of processing cores in the computing system;

translating virtual addresses in a first virtual address space of an application received from the first processing core using a first set of page tables that maps an entire user address space of the application and an entire kernel address space of the OS to a physical memory shared by the plurality of processing cores;

executing the application on a second processing core selected from among the plurality of processing cores in the computing system; and

translating virtual addresses in a second virtual address space of the application received from the second processing core using a second set of page tables that maps the entire user address space of the application and at most only a portion of the kernel address space of the OS to the physical memory.

2. The method of claim 1 , wherein the first processing core always uses the first set of process page tables when translating virtual addresses in the first virtual address space of the application.

3. The method of claim 1 , wherein the second processing core always uses the second set of process page tables when translating virtual addresses in the second virtual address space of the application.

4. The method of claim 1 , wherein the application is a 64-bit application.

5. The method of claim 1 , wherein the first and second processing cores are based on a 64-bit architecture.

6. The method of claim 1 , further comprising switching execution from the second processing core to the first processing core in response to occurrence of an interrupt or an exception in the second processing core, and handling the interrupt or exception by the OS that is executing in the first processing core.

7. The method of claim 6 , further comprising the OS accessing the kernel address space using the first set of page tables.

8. The method of claim 6 , further comprising sending a message from the second processing core to the first processing core in response to a system call made by the application on the second processing core and handling the system call in the first processing core.

9. A non-transitory computer-readable storage medium having stored thereon computer executable instructions, which when executed by a computer device, cause the computer device to:

execute an operating system (OS) on a first processing core selected from among a plurality of processing cores comprising the computer device;

translate virtual addresses in a first virtual address space of an application received from the first processing core using a first set of page tables that maps an entire user address space of the application and an entire kernel address space of the OS to a physical memory shared by the plurality of processing cores;

execute the application on a second processing core selected from among the plurality of processing cores comprising the computer device; and

translate virtual addresses in a second virtual address space of the application received from the second processing core using a second set of page tables that maps the entire user address space of the application and at most only a portion of the kernel address space of the OS to the physical memory.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the first processing core always uses the first set of process page tables when translating virtual addresses in the first virtual address space of the application.

11. The non-transitory computer-readable storage medium of claim 9 , wherein the second processing core always uses the second set of process page tables when translating virtual addresses in the second virtual address space of the application.

12. The non-transitory computer-readable storage medium of claim 9 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to switch execution from the second processing core to the first processing core in response to occurrence of an interrupt or an exception in the second processing core, and handle the interrupt or exception by the OS that is executing in the first processing core.

13. The non-transitory computer-readable storage medium of claim 12 , further comprising the OS accessing the kernel address space using the first set of page tables.

14. The non-transitory computer-readable storage medium of claim 12 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to switch execution from the second processing core to the first processing core in response to a system call made by the application on the second processing core and handle the system call in the first processing core.

15. A computer apparatus comprising:

a plurality of processing cores;

a physical memory shared by the plurality of processing cores; and

a computer-readable storage medium comprising instructions for controlling the target processor to be operable to:

execute an operating system (OS) on a first processing core selected from among a plurality of processing cores;

translate virtual addresses in a first virtual address space of an application received from the first processing core using a first set of page tables that maps an entire user address space of the application and an entire kernel address space of the OS to the physical memory;

execute the application on a second processing core selected from among the plurality of processing cores; and

translate virtual addresses in a second virtual address space of the application received from the second processing core using a second set of page tables that maps the entire user address space of the application and at most only a portion of the kernel address space of the OS to the physical memory.

16. The apparatus of claim 15 , wherein the first processing core always uses the first set of process page tables when translating virtual addresses in the first virtual address space of the application.

17. The apparatus of claim 15 , wherein second processing core always uses the second set of process page tables when translating virtual addresses in the second virtual address space of the application.

18. The apparatus of claim 15 , wherein the computer-readable storage medium further comprises instructions for controlling the target processor to be operable to switch execution from the second processing core to the first processing core in response to occurrence of an interrupt or an exception in the second processing core, and handle the interrupt or exception by the OS that is executing in the first processing core.

19. The apparatus of claim 18 , further comprising the OS accessing the kernel address space using the first set of page tables.

20. The apparatus of claim 18 , wherein the computer-readable storage medium further comprises instructions for controlling the target processor to be operable to switch execution from the second processing core to the first processing core in response to a system call made by the application on the second processing core and handle the system call in the first processing core.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2018
From: WEI, MICHAEL; TSAFRIR, DAN; AMIT, NADAV
To: VMWARE INC.
Reel/Frame 046182/0096 →
Continuity (2)
Provisional Application 62627064 · Feb 6, 2018
Related Publication 20190243990A1 · Aug 8, 2019