System and method for security and privacy aware virtual machine checkpointing

Information

  • Patent Grant
  • 9552495
  • Patent Number
    9,552,495
  • Date Filed
    Monday, June 29, 2015
    9 years ago
  • Date Issued
    Tuesday, January 24, 2017
    7 years ago
Abstract
A checkpointing method for creating a file representing a restorable state of a virtual machine in a computing system, comprising identifying processes executing within the virtual machine that may store confidential data, and marking memory pages and files that potentially contain data stored by the identified processes; or providing an application programming interface for marking memory regions and files within the virtual machine that contain confidential data stored by processes; and creating a checkpoint file, by capturing memory pages and files representing a current state of the computing system, which excludes information from all of the marked memory pages and files.
Description
FIELD OF THE INVENTION

The present technology relates to the field of virtual machine security, and in particular security of checkpoint information stored in physical persistent memory.


BACKGROUND OF THE INVENTION

Virtualization technology is being widely adopted in grid and cloud computing platforms [31, 34, 23, 28] to improve server consolidation and reduce operating costs. On one hand, virtual machines (VMs) help improve security through greater isolation and more transparent malware analysis and intrusion detection [22, 24, 27, 10, 11, 14, 17, 29, 26, 19]. On the other hand, virtualization also gives rise to new challenges in maintaining security and privacy in virtualized environments. Although significant advances have been made in developing techniques to secure the execution of VMs, a number of challenges remain unaddressed.


VM checkpointing refers to the act of saving a permanent snapshot (or checkpoint) of a VM's state at an instant in time. Virtual Machine (VM) checkpointing enables a user to capture a snapshot of a running VM on persistent storage. A VM's state includes, at the minimum, its memory image and CPU execution state and possibly additional states such as virtual disk contents. The checkpoint can be later used for various purposes such as restoring the VM to a previous state, recovering a long-running process after a crash, distributing a VM image with a preset execution state among multiple users, archiving a VM's execution record, conducting forensic examination, etc. Most hypervisors such as VMware (VMware Inc.), Hyper-V (Microsoft, Inc.), VirtualBox (Oracle Inc.), KVM [35], and Xen (Xen.org) support VM checkpointing.


Despite the above benefits, VM checkpoints can drastically prolong the lifetime and vulnerability of sensitive information. Checkpoints are stored on persistent storage and contain the VM's physical memory contents at a given time instant. Data that should normally be discarded quickly after processing, such as passwords (especially clear text passwords), credit card numbers, health records, or trade secrets, can now be saved forever in persistent storage through VM checkpointing.


This vulnerability can be demonstrated using a common scenario of entering credit card information in a website. As shown in FIG. 4, the FireFox browser was started inside a VirtualBox VM. The browser was then connected to www.amazon.com, “my account” clicked to add credit card information, the number 9149239648 entered into the credit card number field, and then checkpointing was performed. When searching through the checkpoint file with a hex editor, the credit card number entered earlier was located. In some of experiments, the checkpoint file contains the string “addCreditCard-Number=9149239648”, which can enable an attacker to locate the credit card number easily by searching for the string “CreditCard” in the checkpoint. Furthermore, even if the checkpointing is performed after the browser terminates, the credit card number can still be located in the checkpoint file, likely because the browser's memory was not cleared before the browser terminated. In other words, the common advice to “close your browser after logging out” may give users a false sense of security. Many users are not aware that their input data may still reside in memory even after the application that has processed such data terminates. Such users may mistakenly assume that checkpointing the VM is safe simply because the application has terminated.


Passwords in the memory of xterm terminal emulator (both running and terminated) were also identified in the checkpoint file.


Besides memory, even checkpointing a VM's disk may also end up storing users' confidential data in the snapshot. For example, Balduzzi et. al [36] analyzed 5303 public Amazon EC2 snapshots and found that many of them contain sensitive information such as passwords, browser history, and deleted files.


Previous work on minimizing data lifetime has focused on clearing the deallocated memory (also known as memory scrubbing). Chow et al. [6] and Garfinkel et al. [12] discussed in depth the problem of sensitive data being stored in memory, and observed that the sensitive data may linger in memory for extended periods and hence may be exposed to compromise. In [7], authors proposed a multi-level approach to clearing deallocated memory at the application, compiler, library, and system levels. A similar mechanism is included in Windows operating systems, which uses system idle time to clear deallocated memory pages [30]. Also, in Unix systems, it is common to clear memory before reuse [12]. However, simply clearing deallocated memory does not solve our problem because memory pages that have not been deallocated may contain sensitive information and such information may be checkpointed. As a result, SPARC also clears the memory pages of the excluded processes in checkpoints. Selectively clearing memory pages during checkpointing is much more challenging than scrubbing only deallocated memory because multiple processes may share the same memory pages (e.g. shared libraries) and we must ensure that excluding one process will not affect other processes when the VM is restored.


Garfinkel et al. [12] also proposes to encrypt sensitive information in the memory and clear the sensitive information by simply discarding the key. However, encrypting sensitive information in memory can add significant overheads to access the information and may still expose sensitive information if the VM is checkpointed at the moment when some program decrypts the sensitive information.


Features protecting virtual disk, memory, and checkpoints have found their way into research prototypes as well as commercial virtualization products. Garfinkel et al. [13] developed a hypervisor-based trusted computing platform that uses trusted hardware features such as encrypted disks and the use of a secure counter to protect against file system rollback attacks, to permit systems with varying security requirements to execute side-by-side on the same hardware platform. The platform's privacy features include encrypted disks and the use of a secure counter to protect against file system rollback attacks in which the state of a file is rolled back. [15] and [2] also suggested encrypting checkpoints. However, encrypting the checkpoint alone is insufficient because (1) it still prolongs the lifetime of confidential data that should normally be quickly destroyed after use; (2) when the VM is restored, the checkpoint will be decrypted and loaded into the memory of the VM, thus exposing the confidential data again; (3) the checkpoint file may be shared by multiple users, thus increasing the likelihood of data leakage.


VMware ACE [2], VMware Infrastructure [33], and VirtualBox [25] allow users to exclude the entire memory from being checkpointed. However, none of them provides a level of granularity that we do by selectively excluding processes from the checkpointed memory. Davidoff et al. [9] retrieved clear text passwords from the physical memory of a Linux system. Their work aimed to show that the physical RAM may retain sensitive information even after the system has been powered off, and the attacker with physical access to the system can steal information through cold boot memory dumping attacks. However, with checkpoints, the problem is significantly more severe: in the RAM, the amount of time the sensitive information persists in the memory after the machine is powered off, is limited by the RAM's ability to retain information in absence of power. However, the checkpoints are saved to the disk and the information stored in the checkpoints can persist for long time. Also, they assume that the attacker has physical access to the system, but we do not.


Several prior works have employed VM checkpointing to enable execution replay for intrusion analysis and OS debugging. Dunlap et al. [11] proposed an intrusion detection mechanism called ReVirt which allows instruction-by-instruction replay of the guest OS execution. King et al. [18] used ReVirt and disk logging to implement an OS debugger. However, neither work attempts to address data lifetime issues raised by VM checkpointing.


SUMMARY OF THE INVENTION

To address the limitations of traditional checkpointing technologies, two approaches are provided to prevent users' confidential data from being stored in VM checkpoints. The first is an application-transparent approach for situations when it is not possible to modify the applications that handle confidential data. The approach seeks to identify processes that store confidential data and to exclude all the memory pages and files that potentially contain data accessed by these processes from the checkpoint file. While transparent, this approach results in the termination of applications when the VM is later restored. The second approach is an application-visible approach which preserves the application, but not the confidential data, upon VM restoration. The key idea is to provide the application programmers with an API that allows them to mark the memory regions and files that contain confidential data, and to be notified by the hypervisor when VM checkpointing or restoration events occur. Thus an application can adapt its execution and the visibility of confidential data to checkpoint/restore events. In both approaches, we assume that the VM is not compromised when the checkpointing is performed. A cooperative application may also store a time-varying code along with variable or contingent data, which permits the application to determine whether data is stale or has been restored. This, in turn permits blanking or corruption of the respective data in the checkpoint file, to the extent it is present, without interference with the application, since the application will ignore the contents if the data is restored or stale in any case.


The key challenge with both approaches is to exhaustively exclude or sanitize all VM contents that contain confidential data and to ensure that the VM's stability and consistency are maintained when the VM is restored from the checkpoints. Similar approaches can be used to prevent confidential data from being stored in disk checkpoints or other local, remote or distributed storage media.


Application-Transparent Approach for Excluding Confidential Data


An application-transparent approach is investigated for privacy-aware checkpointing for cases where it is not possible to modify a VM's applications, such as Web browsers, Email clients, Terminals etc.


Since the internal semantics of the application, such as data structures handling confidential information, are not known, the best one can do to exclude confidential information from checkpoints is to exclude the entire memory footprint of the application in both user and kernel space. This approach ensures that, when the VM is later restored from the sanitized checkpoint, the original applications that handled confidential information will no longer resume. Developing an application-transparent approach is challenging because processes and the operating system can have complex dependencies. Specifically, we expect the following requirements to be met in order to safely exclude entire applications from VM checkpoints: (1) During checkpointing, the stability of any processes currently executing in the VM should not be affected; (2) Checkpointing should exhaustively identify and exclude all memory regions accessed by applications that handle confidential information; (3) After restoration, processes that did not have any dependencies (such as inter-process communication) with the excluded application should resume normally; (4) The mechanism should not compromise the security of the VM and the hypervisor.



FIG. 2B gives the high-level architecture of the proposed application-transparent approach, which works with both hosted and native hypervisors. A special process called the guest service inside the VM collects physical addresses of memory pages that belong to the applications being excluded from the VM checkpoint. When checkpointing is initiated, another special process in the hypervisor, called the exclusion service, requests the guest service to provide the collected physical addresses of memory pages to be excluded. The exclusion service then relays the addresses to the checkpointer in the hypervisor, which in turn zeros out the specified pages in the checkpoint file.


Another option is to monitor the user input stream, or more generally selectively from the I/O stream from non-program memory sources during a session. The selection of sources, such as user keyboard input, is such that a reasonable assumption may be applied that any such information contains information that might be private, though exceptions may be provided. The stream is then searched or cross correlated with the checkpoint files, and memory locations that include “copies” of the stream are then tagged as possible private information. In some cases, this will be highly disruptive to a restoration of a checkpoint file, since this may void the state of an application, and therefore is best applied to applications whose particular state is not desired to be restored.


To demonstrate the feasibility of the application-transparent approach, a prototype called SPARC—a Security and Privacy AwaRe Checkpointing system [38] was developed. SPARC ensures that all memory footprint of the excluded process, such as virtual memory pages, TTY buffers, and network packets, are cleared. FIGS. 1A and 1B show an example where a user enters a credit card number into the FireFox web browser and the checkpoint is performed as soon as the credit card number is entered. FIG. 1A gives the screenshot of a VM restored using VirtualBox's default mechanism. FIG. 1B gives the screenshot of the VM restored using SPARC in which Firefox and the information processed by Firefox (such as the credit card number entered) are excluded from being checkpointed. SPARC also handles dynamic changes to virtual-to-physical memory mappings while checkpointing is in progress (since memory pages can be swapped in and out of disks), by freezing all user space processes, except the guest service.


The performance of the SPARC prototype was evaluated on a number of real-world applications. FIGS. 5A and 5B compare the execution time of performing checkpointing and restoration using SPARC and the VirtualBox's default mechanism. All experiments were conducted on a host with Intel Dual CPU 2.26 GHz processor and 2 GB of RAM, and running Ubuntu Linux 10.4 kernel version 2.6.32, and a guest VM with 800 MB of memory, a single processor, and Ubuntu Linux 9.10 kernel version 2.6.31. Each data point is an average of execution time over 5 runs. The experimental results show that the prototype imposes 0:5%-7:1% overhead on checkpointing, 1:4%-2:5% overhead on restoration, and 1%-5:3% overall overhead.


Designing a Process Container to Facilitate Privacy-Aware Checkpointing


The sensitive data processed by a process may reside in a number of memory locations such as process memory, the deallocated pages, TTY buffers, the socket/pipe/FIFO buffers etc. Currently, disparate locations in the VM's kernel memory must be examined in order to identify memory pages related to a process. To ease the identification of process-specific pages, a lightweight process container may be provided that cleanly encapsulates the state of each process (or process groups). Processes running inside the container will be excluded from being checkpointed. The design of such a container also makes traditional techniques for taint analysis easier and more efficient. Existing container mechanisms [20, 37] do not provide adequate support for memory tracking and exclusion for operations such as VM checkpointing.


Accounting for Inter-Process Dependencies


Processes may communicate with each other directly or in-directly through mechanisms such as sockets, pipes, FIFO buffers etc. As a result, excluding a process may affect other processes that communicate with it after restoration. In addition, non-system-critical processes that have interacted with the excluded process may obtain sensitive information from the excluded process, and hence also need to be excluded. Techniques may therefore be provided to account for such inter-process dependencies while maintaining system stability after restoration. All processes that depend upon the excluded process should be exhaustively identified. One possible solution is to monitor the establishment of inter-process dependencies using hooks in the guest kernel and analyze this information to derive inter-process dependencies. This approach, however, may miss some external dependencies that could occur when some the corresponding code paths have not been executed before checkpointing. For example, this approach cannot detect the dependency where the excluded process writes to a file before checkpointing and another process accesses the file after restoration. This issue may be addressed by combining both static analysis and dynamic tracking.


Ensuring Consistent Storage


A process being excluded from checkpoint file may be performing a write operation on a file or a database when checkpointing is performed. If the memory pages are simply cleared of the process from the checkpoints and the process killed during restoration, the file or the database could be left in an inconsistent state after restoration. Privacy-aware checkpointing could compound this problem by introducing I/O operations that do not complete after restoration. One approach to solving this problem is to checkpoint the specific files that have been closed by the process, and after restoration, roll back such files to a prior consistent state. Another approach is to track all the I/O operations on files opened by the excluded process and undo those operations upon VM restoration.


Security Analysis


Potential attacks that may specifically target privacy-aware checkpointing may also be identified. For example, the attacker may use privacy-aware checkpointing to hide their activities by excluding their malicious applications. This can affect intrusion detection techniques that rely on replaying checkpoints (e.g. [11]). Such potential attacks may be identified through formal verification, i.e., formally modeling the system and the attackers' behavior, and checking if the system conforms to desirable security properties.


Application-Visible Approach for Excluding Confidential Data


The application-transparent approach described above for privacy-aware checkpointing is useful when the applications within the VMs cannot be modified. Since the semantics of the application internals are unknown, this approach requires that the application be terminated when the VM is later restored, because the integrity of the application cannot be guaranteed upon resumption from a sanitized checkpoint. However, in some situations it may be desirable to keep the application alive after the VM is restored.


Ideally, one would prefer that the application can determine on its own as to what internal state to reset and what to retain after a VM restoration event. To do so, firstly, an application needs to keep track of all the internal application state that contains confidential data so that it can be excluded from the checkpoint. Secondly, after a VM is restored from a checkpoint, the application needs to be able to resume execution safely, even though some of its internal state (containing confidential data) was excluded from the checkpoint. Finally, some of the application's confidential data may be stored in the guest OS in the form of internal kernel state, such as network packets, I/O buffers etc. Thus a VM checkpointing should ensure that such kernel state is excluded from the checkpoint and that the kernel can resume safely after VM's restoration.


To address the above challenges, an application-visible approach is provided, which preserves the application, but not its confidential data, when a VM is restored from the checkpoint. As the name suggests, the basic idea is to expose the VM checkpointing and restoration operations to the applications within the VM through an application programmer interface (API). The API allows an application to specify the memory regions that contain confidential data before a privacy-aware checkpointing operation occurs and to resume normally with integrity once the VM is restored from a sanitized checkpoint. Specifically, the API will (a) allow applications to register confidential memory, which will not be checkpointed or transmitted without explicit permission of the applications; (b) inform applications just before checkpointing to allow applications to transition to a “safe” state; (c) inform applications after checkpointing completes to allow applications to resume safely; and (d) inform applications after the VM is restored from a checkpoint so that applications can restart safely.


While an application can use the API above to register the memory location of its confidential data, it is still possible that other memory locations that are not registered become tainted by the confidential data during normal processing by the application. Information flow analysis may be performed to automatically register all variables that may store the registered data. In addition, the application also constantly interacts with the guest kernel by invoking system calls and exchanging data for I/O operations. Thus confidential data may also reside in the kernel memory at the time the checkpointing is initiated. Therefore, the checkpointer should exclude the application's footprint that may be present in kernel memory, not just in user space memory.


One approach is as follows. When checkpointing is initiated, the kernel will temporarily pause new system calls and I/O requests from the application and complete (or flush) any pending I/O operations such as disk I/O, network packets, display buffers, etc. The kernel will also zero out all I/O buffers after the completion of the I/O operations to prevent data leakage through buffer reuse. Once the kernel memory is sanitized of application's confidential data, the VM checkpointing operation can be allowed to proceed. Scrubbing the kernel memory in this manner could potentially add non-trivial latency to the start of checkpointing.


The technique permits application programmers to use a privacy-aware checkpointing API, to help applications retain greater control over their confidential data and execution state during VM checkpointing and after VM restoration. Specifically, by making the checkpointing mechanism visible to the applications, leakage of confidential data from the VM can be prevented without compromising the application's stability after the VM is restored. In addition, the technique will enable programmers to exclude confidential data that cannot be specified by users of the application, such as encryption keys processed within the program.


It is therefore an object to provide a security and privacy aware VM checkpointing mechanism, which enables users to selectively exclude processes and terminal applications that contain users' confidential and private information from being checkpointed. The technology helps minimize the lifetime of confidential information by preventing unintended checkpointing of process-specific memory contents. A prototype of the technology using the VirtualBox hypervisor and Linux VM and tested it over a number of applications. This imposes only 1:02%-5:29% of overhead with common application workloads in testing.


The technology can also exclude confidential disk information from being checkpointed. VMs are designed in which the state of each process is cleanly encapsulated. This helps avoid scrubbing process-specific information from disparate locations in OS memory. In addition, process containers can tightly isolate the entire state of a process and hence simplify the task of identifying and destroying sensitive information. Finally, the technology assumes that the hypervisor and the VM have existing runtime protection mechanisms against malicious intrusions and focuses on exclusively selective exclusion of confidential process information from checkpoints. Potential attacks on the technology that may specifically target the technology to hide the attacker's activities, may be identified, and counter-measures developed.





BRIEF DESCRIPTION OF THE FIGURES


FIG. 1A shows VM restored using VirtualBox's default checkpointing mechanism;



FIG. 1B shows VM restored using SPARC with FireFox excluded;



FIGS. 2A and 2B shows the Architecture of SPARC with an application aware and application transparent approach, respectively;



FIG. 3 shows the Teletype (TTY) subsystem architecture;



FIG. 4 shows a scenario where the credit card number is checkpointed;



FIGS. 5A and 5B show experimental results of SPARC and VirtualBox's default checkpointing mechanism; and



FIG. 6 shows a hardware overview.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present technology provides techniques to address some of the security and privacy issues in VM checkpointing. VM checkpointing saves a persistent snapshot (or a checkpoint) of the entire memory and disk state of a VM in execution.


Security and Privacy AwaRe Checkpointing (SPARC) is a mechanism that enables users to selectively exclude processes and terminal applications that contain sensitive data from being checkpointed. Selective exclusion is performed by the hypervisor by sanitizing those memory pages in the checkpoint file that belong to the excluded applications. SPARC poses only 1.02-5.29% of overhead with common application workloads, if most pages are dirty before checkpointing is performed, in a commodity Linux operating system.


SPARC enables users to exclude specific applications, which contain users' confidential and private information, from being checkpointed by the hypervisor. For example, a user may wish to exclude a web browser application from being checkpointed because the user may enter his password and credit card number using the browser. Moreover, SPARC enables users to exclude terminal applications on which applications processing sensitive information are running from being checkpointed. A SPARC prototype based on the VirtualBox 3.1.2 OSE hypervisor and Ubuntu Linux 9.10 guest (kernel v2.6.31) was implemented.


Excluding an Application from Checkpoint


SPARC enables users to specify applications they wish to exclude from being checkpointed. Such applications are typically applications that may process sensitive information (e.g. FireFox, Internet Explorer, Email clients, etc). VirtualBox checkpointing creates two files: a .sav file which stores the contents of the VM's physical memory, and a .vdi file which stores the disk image. For efficiency, when checkpointing the disk image, instead of cloning the entire disk, VirtualBox freezes the current disk and creates a new differencing disk to which all subsequent write operations are redirected. Exclusion of physical memory of specific applications from being checkpointed is a particular focus. Disk checkpointing issues may be analogously handled.


Again, consider the example where a user has entered a credit card number into the FireFox web browser. If the user performs checkpointing after the credit card number is entered, then the credit card number may be stored in the checkpoint even if FireFox has been terminated or is being used to access other URLs. SPARC would let the user exclude FireFox from being checkpointed, i.e., data processed by FireFox will not be stored in the checkpoints (but the corresponding memory pages will not be cleared from RAM in order not to affect the current execution of processes). FIG. 1A gives the screenshot of a VM restored using VirtualBox's default mechanism, in which checkpointing is performed as soon as the user enters his or her credit card number. FIG. 1B gives the screenshot of the VM restored using SPARC in which FireFox and the information processed by FireFox are excluded from checkpointing.



FIG. 2A gives the high-level architecture of SPARC. First, the user selects a list of applications that he or she wishes to exclude from being checkpointed. Next, a special process called the guest service in the VM invokes custom system calls to identify and collect physical addresses of memory pages that belong to the application being excluded, such as process memory, page cache pages, etc. Custom syscalls were used for ease of prototyping and can be easily replaced with a more transparent and extensible ioctl interface. Checkpointing is initiated from another special process called the host service located at the host system. The host service sends a notification to the guest service that checkpointing has been requested. The guest service replies with the collected physical addresses of memory pages that need to be excluded. The host service then relays the addresses to the hypervisor which in turn commences the checkpoint. The checkpointer in the hypervisor uses the received physical addresses to determine which memory to clear in the say file. To ensure that VM can be restored successfully, excluding a process should not affect other processes. As a result, memory pages that are shared by multiple processes will not be excluded from being checkpointed.


Excluding Process Physical Memory


In the virtual address space of a process in Linux, the program code segment stores the executable code of the program. The uninitialized and initialized data sections store uninitialized and initialized static variables, respectively. The heap contains dynamically allocated memory. The memory-mapped region for shared libraries section contains shared libraries mapped into the memory of the process. The stack contains information about function calls in progress e.g., local variables of functions.


SPARC identifies and collects information about memory pages that belong to a process with ID pid and excludes those pages from the checkpoint. First, the guest service invokes a system call that locates the struct task struct associated with each process, which links together all information of a process e.g. memory, open files, terminal, and pending signals. This structure contains field struct mm struct *mm which points to the structure containing virtual memory information of a process. The mm struct contains fields unsigned long start code and unsigned long end code which point to the beginning and ending addresses of the process' code segment respectively, and struct vm area struct * mmap which points to the head of the list of vm area structs where each vm area struct represents a segment of process virtual memory. The vm area struct contains fields unsigned long vm start and unsigned long vm end which point to the beginning and ending addresses of the segment within the virtual process memory space, struct file * vm file which points to the corresponding file descriptor if the segment represents a memory mapped file (e.g. library or otherwise NULL), and struct vm area struct *vm next which points to the next segment. The system call then traverses a list of vm area structs and compares the vm start and vm end against start code and end code. If they match, then the memory segment represents an executable image, and hence is skipped because it cannot contain sensitive information and clearing the executable image may affect other processes which share the same in-memory executable image. Also, it checks if vm file is NULL and if so adds the address to the list; otherwise, the segment represents a shared library mapped into memory, and is skipped over because it may affect other processes which have mapped the same library into memory.


The process file system (procfs) is a virtual file system that enables access and modification of kernel parameters from the user space through a file-like interface. For example, the user can find out the previously described process virtual memory information by reading file/proc/pid/maps. The guest service converts the virtual address of each page into the physical address based on file /proc/pid/pagemap in the procfs. For each virtual page of the process, this file contains e.g., a 64-bit integer which encodes a bit indicating whether the page is resident in the physical memory and if so the physical address of the page. To avoid affecting other processes in the system, all resident pages which are being mapped more than once are skipped. To determine the number of times a physical page has been mapped, the guest service checks the file /proc/kpagecount which contains an array that records the number of times each physical page has been mapped.


Finally, the physical address of each page is sent to the host service which in turn relays the address to the hypervisor. When VirtualBox creates a memory checkpoint, prior to saving a physical page to the .sav file, SPARC checks if the physical address of the page matches one of the received addresses. If not, it saves the contents of the page to the checkpoint. Otherwise, it saves a page containing all 0's. To implement this behavior in the VirtualBox, the function pgmSavePages( ), which saves the VM's physical memory in checkpoints, was modified.


Because pages are constantly swapped between the disk and the physical memory, the virtual-to-physical memory mappings of a process may change after collecting the physical addresses. This may result in excluding the wrong memory contents. This is overcome by freezing all user space processes except the guest service. This is achieved by using the freeze processes( ) function of the Linux kernel and preventing the guest service from freezing by setting its PF NOFREEZE flag. Once the checkpointing completes, all processes are unfrozen with the thaw processes( ) function, and the execution proceeds as normal. When the VM is restored, the guest service detects the restoration event and sends the SIGKILL signal to each target process whose memory contents were previously excluded during checkpointing. This SIGKILL signal is useful to allow the guest kernel to clean up any residual state (other than memory) for excluded processes before the VM resumes. Finally, the guest service unfreezes the remaining processes and the execution proceeds as normal.


If, prior to the checkpoint, the target process deallocates pages containing sensitive information, these page can no longer be identified and cleared. Hence, the function free pages( ) which deallocates pages is modified, to zero out any page belonging to the target process prior to deallocation.


Excluding Pages of a Process in the Page Cache


Page cache is used by the kernel to speed up disk operations by caching disk data in the main memory. Page cache speeds up disk operations as follows. When data is read from the disk, a page is allocated in the physical memory and is filled with corresponding data from the disk. Thus, all subsequent reads targeted at the same disk location can quickly access the data in the main memory. Subsequent write operations to the disk location simply modify the page in the page cache. The kernel, after some delay, synchronizes the page with the disk. Every disk operation in Linux goes through the page cache (except for the swap device or files opened with O DIRECT flag) [5].


If the process performs disk I/O operations, the sensitive information read from and written to the disk may reside in the page cache. For example, when searching for any string using the Google search engine through a web browser, it was found that the string appears in the kernel's page cache, possibly because Google caches suggestions for frequent searches on the local disk. Moreover, when a process terminates, the page cache retains some of the pages of the terminated process for a period of time in case that the same data is accessed by another process in the near future. Even when the page is evicted, the page contents will remain in the free memory pool until overwritten.


SPARC excludes the cached pages of the target process in the checkpoints as follows. First, it locates the file descriptor table of the target process (struct fdtable * fdt). The file descriptor table contains field struct file ** fd which is an array of opened file descriptors and struct fd set *open fds which points to the structure containing information about open file descriptors. If open fds contains a set bit for file descriptor i, we examine location i in array fd and refer to the field struct* fd entry which points to the directory entry associated with a file descriptor. The directory entry contains a field struct inode* d inode which points to the inode associated with the directory entry. Reference is then made to field struct address space i mapping* of the inode, which contains information about pages in the page cache that cache information of the file represented by the file descriptor. Next, function pagevec lookup( ) is called, which takes as a parameter the i mapping field of the inode and an object of type struct pagevec that contains an array pages of page descriptors. Function pagevec lookup( ) uses the i mapping field of the inode to identify all pages in the page cache which cache the data of the file represented by the file descriptor and fills the pages field of page vec with page descriptors of such pages. The page descriptors are then converted to physical addresses of the pages, the addresses transferred to the host service, and they are cleared similarly to the process physical pages.


Note that when a process closes a file descriptor, the descriptor is removed from the descriptor table of the process. As a result, if the process closes the descriptor prior to checkpointing, the above approach will fail to detect the associated pages in the page cache. To counter this, whenever a file descriptor is closed, all pages are evicted and cleared from the page cache associated with the inode of the closed file descriptor.


Even after a page is being evicted from page cache (remove from page cache( )), the physical memory pages may still retain sensitive data belonging to the target process. Hence SPARC sanitizes (zeros out) each evicted page that was originally brought into the cache on behalf of the target process.


Finally, the (cleared) pages in the page cache may also be used by other processes. To avoid affecting the processes which rely on these pages, when the VM is restored (but before the processes are thawed), all pages used by the target processes are flushed from the page cache.


Excluding Pipe Buffers


Pipes and FIFOs are mechanisms commonly used for implementing producer/consumer relationship between two processes. A pipe enables communication between the parent and the child processes. A parent process creates a pipe by issuing a pipe( ) system call. The system call returns two file descriptors. Any data written the first file descriptor (e.g. via the write( ) system call) can be read from the second descriptor (e.g. with the read( ) system call. Shell programs make use of pipes to connect output of one process to the input of another (e.g. “1s|grep myinfo”). FireFox browser also uses pipes to trace malloc memory allocations.


FIFOs are similar to pipes but allow communication of two unrelated processes. A FIFO is created via mkfifo( ) system call, which takes the name of the FIFO as one of the parameters. Once created, the FIFO appears like a regular file on the file system, but behaves like a pipe: the producer process opens the FIFO “file” for writing and the consumer process for reading. For example, in a terminal, a user can create a FIFO called myfifo with command mkfifo myfifo. Issuing command echo “Data lifetime is important”>myfifo will write the string “Data lifetime is important” to the buffer of myfifo. Subsequent command cat myfifo will remove the string from the buffer of myfifo and print “Data lifetime is important”. FIFOs are frequently used by the Google Chrome to implement communications between the renderer process and the browser process [16].


Data exchanged via pipes and FIFOs flows through a pipe buffer in the kernel. Thus, if the target process makes use of pipes and/or FIFOs, the corresponding pipe buffers should also be sanitized. Each pipe buffer is implemented using a struct pipe buffer structure, which contains a field page pointing to the page descriptor of a page storing the actual inter-process data.


Pipe buffers are sanitized as follows. First the file descriptors opened by the process which represent pipes and FIFOs are located, in a manner similar to identifying file descriptors representing regular files, except that the S ISFIFO macro is called, which takes the i mode field of the inode and returns true if the file descriptor represents a pipe or a FIFO. If the macro returns true, the struct pipe inode info *i pipe field of the inode is referred to. This field contains array struct pipe buffer bufs[PIPE BUFFERS] of all pipe buffers owned by the pipe. The array is then traversed and the physical address of the page associated with each pipe buffer determined.


Excluding Socket Buffers


All application-level network communication takes place through network sockets. With each socket, the kernel associates a list of socket buffers (sk buffs) which contain data exchanged over the socket. If a process sends or receives sensitive information via an open socket (e.g. through read( ) and write( ) system calls), the information may be stored in the sk buffs of the sockets used by the process. Therefore, when excluding a process, all sockets opened by the process are detected the memory associated with sk buffs sanitized.


Identifying all descriptors of a process that represent sockets is similar to detecting pipes and FIFOs, except that the S ISSOCK macro is used. The struct socket *SOCKET I(struct inode *inode) function is used to look up struct socket structure associated with the inode of the socket file descriptor. The socket structure contains the field struct sock *sk, which contains a queue of sending sk buffs called sk write queue and a queue of receiving sk buffs called sk receive queue; both have the type struct sk buff head. These two queues from the sk buff head are then gone through. Each sk buff contains field unsigned char *data which points to the data carried by the sk buff. The contents of the data fields of each sk buff in the checkpoints are cleared, every time when the sk buff is released. For each sk buff in these two queues, virt to phys( ) macro is used to translate the virtual address of the tt sk buff to the corresponding physical address and transfer the address to the host service.


GUI Related Issues


It is common for processes to display sensitive information on the screen. When a VM is restored, but before the target process is terminated, the information displayed by the process may linger on the screen for a brief moment. To address the problem, at checkpointing time, the XCreateWindow( ) API provided by X-Windows is invoked to visually cover the windows of the target processes with black rectangles. When the checkpoint completes, the rectangles are removed and the user continues using the process. When the VM is restored, the windows remain covered. The windows are removed briefly after sending the SIGKILL signals to the target processes and unfreezing the processes. To detect all windows of a given process, the list of all open windows is traversed, and the windows' NET WM PID property—the process ID of the process owning the window, is checked.


SPARC also enables a user to choose the process to exclude from checkpointing by clicking on the process window. When the user clicks the window, SPARC automatically checks the NET WM PID property of the window and the process is then excluded as previously described. To enable this functionality, some code was borrowed from xwininfo [3], xprop [4], and slock [1] utilities.


Note that the buffers belonging to the X-windows, GTK, and other GUI components may also contain sensitive information of the process encoded in a different format. Currently pages in the checkpoints that contain clear text are zeroed out. Zeroing out pages that contain sensitive information with different formats can use a similar approach.


Excluding Terminal Applications


Applications running on terminals may take confidential data as inputs and output confidential data on the terminal. As a result, terminals where the excluded applications are running should also be excluded from being checkpointed.


In Linux, there are two main types of terminals: virtual consoles and pseudo terminals. A system typically contains 7 virtual consoles (named tty1-tty7); the first 6 consoles usually provide a text terminal interface consisting of the login and shell, and the 7th console usually provides a graphical interface. Pseudo terminal applications emulate a text terminal within some other graphical system. A typical pseudo terminal application such as xterm forks off a shell process (e.g. bash). When the user runs a command (e.g. 1s), the shell forks off a child process and replaces the child's executable image with the code of the specified command. In all terminal types, by default, the child process inherits the terminal of its parent process. In this paper, we consider two of the most often used terminals: virtual consoles and terminal emulators.


All terminals rely on the Teletype (TTY) subsystem in the kernel. FIG. 3 shows the architecture of the TTY subsystem where arrows indicate the flow of data. The uppermost layer of the TTY subsystem is the TTY core, which arbitrates the flow of data between user space and TTY. The data received by the TTY core is sent to TTY line discipline drivers, which usually convert data to a protocol specific format such as PPP or Bluetooth. Finally, the data is sent to the TTY driver, which converts the data to the hardware specific format and sends it to the hardware. There are three types of TTY drivers: console, serial port, and pseudo terminal (pty). All data received by the TTY driver from the hardware flows back up to the line disciplines and finally to the TTY core where it can be retrieved from the user space. Sometimes the TTY core and the TTY driver communicate directly [8].


Identifying Terminals where a Processes is Running


The terminal on which a process is running is identified as follows. First, the list of task structs associated with the process and refer to the field struct signal struct *signal which points to the structure containing signal related information of the process is traversed. The struct signal struct contains field struct tty struct *tty, which links together all information related to an instance of TTY subsystem. The tty struct contains field char name [64] which stores the name of the terminal where process P is running. If the process is running on the virtual console, then the name is “ttyxx” where “xx” is a number. Otherwise, if the process is running on a pseudo terminal, then the name is “ptsxx”.


Once the terminal name where the process is running is determined, all other processes which are running on the same terminal are identified. Such processes will also be excluded from being checkpointed because the corresponding terminal is excluded. This is achieved by traversing the list of task structs and checking if the signal→tty→name field matches that of the tty struct of a target process. If so, the process is excluded.


If the process is running on a pseudo terminal, the pseudo terminal application (e.g. xterm) is also excluded because it may contain the input or output information of the process. The terminal application is usually not attached to the same terminal as the target process. However, the terminal application can be detected by following the task struct * real parent pointer which points to the task struct of a parent process, until the terminal application is reached. The terminal application and all its descendants are then excluded as described above.


Excluding TTY Information


An instance of the TTY subsystem associated with the console/pseudo terminal is sanitized by clearing the buffers at every level shown in FIG. 3. The tty struct representing the TTY subsystem contains all such buffers.


When excluding a virtual console, the associated tty struct is located as follows. Array vc cons of type struct vc is traversed. This structure contains a field struct vc data * d which points to the structure containing console related information including int vc num which represents the console number. If vc num matches the number of the excluded console, then the field tty struct * vc tty which points to the tty struct associated with the console is referred to.


Next, the information stored in the relevant tty structs is used to find all buffers associated with the TTY subsystem. The TTY core uses structure tty buffer to buffer the information received from the user space. The buffer includes field char buf ptr which points to the character buffer and field size which stores the size of the buffer. The tty struct contains field buf, which contains pointers to lists of all tty buffers associated with the TTY core. TTY line discipline drivers use three buffers: read buf, write buf, and echo buf. read buf stores the data received from the TTY driver, write buf stores the data received from the TTY core, which needs to be written to the TTY device, and echo buf stores the characters received from the device which need to be echoed back to the device. In experiments, no information buffered in the console driver was found. Next the physical addresses of the aforementioned buffers are obtained and send the addresses along with buffer sizes to the host service.


Excluding TTY subsystems of pseudo terminals is slightly more complex because the pseudo terminal driver (also known as pty) must be sanitized. The pseudo terminal driver is a specialized interprocess communication channel consisting of two cooperating virtual character devices: pseudo terminal master (ptm) and pseudo terminal slave (pts). Data written to the ptm is readable from the pts and vice-versa. Therefore, in a terminal emulator, a parent process can open the ptm end of the pty and control the I/O of its child processes that use the pts end as their terminal device i.e. stdin, stdout, and stderr streams. Both pts and ptm devices are associated with tty struct structure. The pts tty struct can be located by examining the field signal→tty→name of the task struct associated with children processes of the pseudo terminal application e.g. the bash shell process forked by xterm. The tty struct * link field of the pts tty struct points to the tty struct of the ptm device. The buffers of both tty structs must be cleared. The rest of the operations are similar to operations involved in excluding a virtual console.


Sensitive data may persist in the TTY subsystem buffers even after they are deallocated. Hence, to prevent such data from being checkpointed we modify functions: buffer free( ) and tty buffer free all( ) to sanitize the tty buffers on deallocation, static inline ssize t do tty write( ) and void free tty struct( ) to sanitize write buf and echo buf, and n tty close( ) to sanitize the read buf.


Experiments

The following experiments were performed.


First an xterm terminal application was run, a string entered into the xterm prompt and, the VM checkpointed. The string appeared in the .sav file 6 times. After clearing the memory of xterm and its child process bash, the string appeared in the .sav file 3 times. After zeroing out xterm, bash, and the associated TTY buffers, the string no longer appeared in the file.


In the second experiment, xterm was used to run the “su” program which is used to gain root privileges, the password entered into the su's prompt, and a checkpoint created. The string appeared twice. Clearing xterm, bash, and su processes had no effect on the number of appearances. Once we cleared the TTY buffers the string disappeared.


Performance Results


The performance of SPARC was evaluated on a number of applications that may process sensitive information: FireFox web browser, ThunderBird email client, Evince document viewer, Gedit text editor, OpenOffice Writer word processor, Skype VOIP application, Gnote desktop notes software, and Xterm terminal emulator. All experiments were conducted on a host system with Intel Dual CPU 2.26 GHz processor and 2 GB of RAM, and running Ubuntu Linux 10.4 kernel version 2.6.32, and a guest VM with 800 MB of memory, a single processor, and Ubuntu Linux 9.10 kernel version 2.6.31.









TABLE 1







Execution time for performing checkpointing


using VirtualBox's checkpointing mechanism.









Execution Time (seconds)




















Open





Operations
Firefox
Thunderbird
Evince
Gedit
Office
Skype
Gnote
Xterm


















Checkpointing
16.13
16.38
16.91
16.65
15.76
16.59
17.18
17.40


Restoration
10.45
12.18
13.02
9.91
10.49
10.30
9.97
12.05
















TABLE 2







Execution time for performing checkpointing using SPARC.









Execution Time (seconds)






















Open






Operations
Firefox
Thunderbird
Evince
Gedit
Office
Skype
Gnote
Xterm




















1
Receive checkpoint
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00



notification from host


2
Identify processes
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.03



running on a terminal


3
Freeze all user
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01



processes


4
Get physical page
0.11
0.10
0.10
0.10
0.08
0.08
0.09
0.14



addresses of the



process


5
Get page cache pages
0.04
0.03
0.04
0.05
0.03
0.04
0.03
0.06



of the process


6
Get physical addresses
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.06



of TTY buffers


7
Get physical addresses
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00



of pipe buffers


8
Get physical addresses
0.02
0.03
0.02
0.02
0.02
0.02
0.02
0.03



of socket buffers


9
Send physical address
0.01
0.00
0.00
0.00
0.00
0.00
0.00
0.00



information to host


10
Notify host service that
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.04



all addresses were sent


11
Receive notification that
0.01
0.01
0.02
0.01
0.00
0.00
0.00
0.00



snapshot is complete


12
Unfreeze processes
0.04
0.03
0.04
0.04
0.05
0.04
0.03
0.02


13
Send checkpoint
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00



notification to the guest



service


14
Receive physical
0.35
0.30
0.34
0.32
0.29
0.32
0.30
0.40



address from the guest



service


15
Receive notification that
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.04



addresses were sent


16
Create checkpoint with
16.96
16.20
16.48
17.25
15.76
16.08
16.61
17.02



the process excluded


17
Notify the guest that the
0.10
0.10
0.05
0.10
0.09
0.08
0.11
0.10



checkpointing is



completed


18
Receive notification that
0.04
0.04
0.04
0.04
0.04
0.04
0.04
0.04



the checkpointing is



completed


19
Kill the excluded
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00



processes


20
Flush the page cache
0.11
0.11
0.10
0.07
0.14
0.12
0.07
0.08


21
Unfreeze processes
0.10
0.08
0.09
0.11
0.09
0.05
0.08
0.05


22
Checkpointing
16.70
16.82
17.15
17.92
16.40
16.72
17.26
17.97


23
Restoration
10.71
12.41
13.26
10.13
10.76
10.52
10.17
12.22









Tables 1 and 2 give the execution time when performing checkpointing using VirtualBox's default mechanism and using SPARC, respectively. Each data point reported is an average of execution time over 5 runs. Note that the time it takes for VirtualBox to perform checkpointing depends on the number of memory pages that are dirty; the more pages are dirty, the longer time the checkpointing is performed. In our experiments, prior to checkpointing, we run a program which allocates large amounts of memory and fills the memory with random data. The average sizes of .sav file after checkpointing is around 630 MB. The column heading “Operations” in these two tables gives the various operations performed. In particular, in Table 1(b), operations 1-12 and 13-18 are conducted by the guest and host services to perform checkpointing respectively, operations 19-21 are performed by the guest service to restore the VM. Rows 22 and 23 in Table 1(b) give the overall checkpointing time and the over overall restoration time, respectively. Note that, because some of the operations are performed in parallel by the guest and the host service, the numbers in row 22 are slightly higher than the actual execution time.


Observe from Tables 1(a) and 1(b) that, SPARC imposes 0:51%-7:01% overhead on checkpointing, 1:38%-2:51% overhead on restoration, and 1:02%-5:29% of overall overhead. The overheads of SPARC can be further reduced by using system-specific optimizations. For example, in VirtualBox the overhead of communication between host and guest services can likely be reduced by using the Host-Guest communication mechanism. This however, comes with cost of added implementation complexity.


Hardware Overview



FIG. 6 (see U.S. Pat. No. 7,702,660, expressly incorporated herein by reference), shows a block diagram that illustrates a computer system 400 upon which an embodiment may be implemented. Computer system 400 includes a bus 402 or other communication mechanism for communicating information, and a processor 404 coupled with bus 402 for processing information. Computer system 400 also includes a main memory 406, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 402 for storing information and instructions to be executed by processor 404. Main memory 406 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 404. Computer system 400 further includes a read only memory (ROM) 408 or other static storage device coupled to bus 402 for storing static information and instructions for processor 404. A storage device 410, such as a magnetic disk or optical disk, is provided and coupled to bus 402 for storing information and instructions. The computer system may also employ non-volatile memory, such as FRAM and/or MRAM.


The computer system may include a graphics processing unit (GPU), which, for example, provides a parallel processing system which is architected, for example, as a single instruction-multiple data (SIMD) processor. Such a GPU may be used to efficiently compute transforms and other readily parallelized and processed according to mainly consecutive unbranched instruction codes.


Computer system 400 may be coupled via bus 402 to a display 412, such as a liquid crystal display (LCD), for displaying information to a computer user. An input device 414, including alphanumeric and other keys, is coupled to bus 402 for communicating information and command selections to processor 404. Another type of user input device is cursor control 416, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 404 and for controlling cursor movement on display 412. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.


As discussed above, the present technology provides an alternate or supplemental user input system and method, which may advantageously be used in conjunction with other user interface functions which employ the same camera or cameras.


The technology is related to the use of computer system 400 for implementing the techniques described herein. According to one embodiment, those techniques are performed by computer system 400 in response to processor 404 executing one or more sequences of one or more instructions contained in main memory 406. Such instructions may be read into main memory 406 from another machine-readable medium, such as storage device 410. Execution of the sequences of instructions contained in main memory 406 causes processor 404 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions for implementation. Thus, embodiments of are not limited to any specific combination of hardware circuitry and software.


The term “machine-readable medium” as used herein refers to any medium that participates in providing data that causes a machine to operation in a specific fashion. In an embodiment implemented using computer system 400, various machine-readable media are involved, for example, in providing instructions to processor 404 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, semiconductor devices, optical or magnetic disks, such as storage device 410. Volatile media includes dynamic memory, such as main memory 406. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 402. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications. All such media must be tangible to enable the instructions carried by the media to be detected by a physical mechanism that reads the instructions into a machine. Wireless or wired communications, using digitally modulated electromagnetic waves are preferred.


Common forms of machine-readable media include, for example, hard disk (or other magnetic medium), CD-ROM, DVD-ROM (or other optical or magnetoptical medium), semiconductor memory such as RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read. Various forms of machine-readable media may be involved in carrying one or more sequences of one or more instructions to processor 404 for execution.


For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over the Internet through an automated computer communication network. An interface local to computer system 400, such as an Internet router, can receive the data and communicate using a wireless Ethernet protocol (e.g., IEEE-802.11n) to a compatible receiver, and place the data on bus 402. Bus 402 carries the data to main memory 406, from which processor 404 retrieves and executes the instructions. The instructions received by main memory 406 may optionally be stored on storage device 410 either before or after execution by processor 404.


Computer system 400 also includes a communication interface 418 coupled to bus 402. Communication interface 418 provides a two-way data communication coupling to a network link 420 that is connected to a local network 422. For example, communication interface 418 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 418 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 418 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.


Network link 420 typically provides data communication through one or more networks to other data devices. For example, network link 420 may provide a connection through local network 422 to a host computer 424 or to data equipment operated by an Internet Service Provider (ISP) 426. ISP 426 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 428. Local network 422 and Internet 428 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 420 and through communication interface 418, which carry the digital data to and from computer system 400, are exemplary forms of carrier waves transporting the information.


Computer system 400 can send messages and receive data, including program code, through the network(s), network link 420 and communication interface 418. In the Internet example, a server 430 might transmit a requested code for an application program through Internet 428, ISP 426, local network 422 and communication interface 418.


The received code may be executed by processor 404 as it is received, and/or stored in storage device 410, or other non-volatile storage for later execution.


U.S. 2012/0173732, expressly incorporated herein by reference, discloses various embodiments of computer systems, the elements of which may be combined or subcombined according to the various permutations.


In this description, several preferred embodiments were discussed. It is understood that this broad invention is not limited to the embodiments discussed herein, but rather is composed of the various combinations, subcombinations and permutations thereof of the elements disclosed herein. The invention is limited only by the following claims.


References (Each of the following references is expressly incorporated herein by reference in its entirety.)

  • [1] slock. tools.suckless.org/slock.
  • [2] Vmware ace virtualization suite. www.vmware.com/products/ace/.
  • [3] Xfree86. www.xfree86.org/4.2.0/xwininfo.1.html.
  • [4] Xfree86. www.xfree86.org/current/xprop.1.html.
  • [5] D. P. Bovet and M. C. Ph. Understanding the Linux Kernel, Third Edition. O'Reilly Media, 3 edition, November 2005.
  • [6] J. Chow, B. Pfaff, T. Garfinkel, K. Christopher, and M. Rosenblum. Understanding data lifetime via whole system simulation. In Proceedings of USENIX Security Symposium, pages 22-22, 2004.
  • [7] J. Chow, B. Pfaff, T. Garfinkel, and M. Rosenblum. Shredding your garbage: reducing data lifetime through secure deallocation. In Proceedings of the USENIX Security Symposium, pages 22-22, 2005.
  • [8] J. Corbet, A. Rubini, and G. Kroah-Hartman. Linux Device Drivers, 3rd Edition. O'Reilly Media, Inc., 2005.
  • [9] S. Davidoff. Cleartext passwords in linux memory. www.philosecurity.org, 2008.
  • [10] A. Dinaburg, P. Royal, M. Sharif, and W. Lee. Ether: malware analysis via hardware virtualization extensions. In 15th ACM conference on Computer and communications security, pages 51-62, 2008.
  • [11] G. W. Dunlap, S. T. King, S. Cinar, M. A. Basrai, and P. M. Chen. Revirt: Enabling intrusion analysis through virtual-machine logging and replay. In Proceedings of the 2002 Symposium on Operating Systems Design and Implementation (OSDI), pages 211-224, 2002.
  • [12] T. Garfinkel, B. Pfaff, J. Chow, and M. Rosenblum. Data lifetime is a systems problem. In Proc. of ACM SIGOPS European workshop. ACM, 2004.
  • [13] T. Garfinkel, B. Pfaff, J. Chow, M. Rosenblum, and D. Boneh. Terra: a virtual machine-based platform for trusted computing. pages 193-206. ACM Press, 2003.
  • [14] T. Garfinkel and M. Rosenblum. A virtual machine introspection based architecture for intrusion detection. In Proc. Network and Distributed Systems Security Symposium, pages, pages 191-206, 2003.
  • [15] T. Garfinkel and M. Rosenblum. When virtual is harder than real: security challenges in virtual machine based computing environments. In Proceedings of the 10th conference on Hot Topics in Operating Systems, pages 20-20, 2005.
  • [16] Google Corp. Inter-process communication. dev.chromium.org/developers/design-documents/inter-process-communication.
  • [17] A. Joshi, S. T. King, G. W. Dunlap, and P. M. Chen. Detecting past and present intrusions through vulnerability-specific predicates. In Proceedings of the twentieth ACM symposium on Operating systems principles, pages 91-104, 2005.
  • [18] S. T. King, G. W. Dunlap, and P. M. Chen. Debugging operating systems with time-traveling virtual machines. pages 1-15, 2005.
  • [19] K. Kourai and S. Chiba. Hyperspector: Virtual distributed monitoring environments for secure intrusion detection. In ACM/USENIX International Conference on Virtual Execution Environments, pages 197-207, 2005.
  • [20] D. Lezcano. Linux containers. lxc.sourceforge.net/lxc.html.
  • [21] Microsoft Corp. Hyper-v server 2008 r2.www.microsoft.com/hyper-v-server/en/us/overview.aspx.
  • [22] A. M. Nguyen, N. Schear, H. Jung, A. Godiyal, S. T. King, and H. D. Nguyen. Mavmm: Lightweight and purpose built vmm for malware analysis. In Annual Computer Security Applications Conference, pages 441-450, 2009.
  • [23] D. Nurmi, R. Wolski, C. Grzegorczyk, G. Obertelli, S. Soman, L. Youseff, and D. Zagorodnov. The eucalyptus open-source cloud-computing system. In Proceedings of the 9th IEEE/ACM International Symposium on Cluster Computing and the Grid, pages 124-131, 2009.
  • [24] D. A. S. d. Oliveira and S. F. Wu. Protecting kernel code and data with a virtualization-aware collaborative operating system. In Annual Computer Security Applications Conference, pages 451-460, 2009.
  • [25] Oracle Corp. Virtualbox. www.VirtualBox.org.
  • [26] B. D. Payne, M. Carbone, M. Sharif, and W. Lee. Lares: An architecture for secure active monitoring using virtualization. In IEEE Symposium on Security and Privacy, pages 233-247, 2008.
  • [27] R. Riley, X. Jiang, and D. Xu. Guest-transparent prevention of kernel rootkits with vmm-based memory shadowing. In the 11th international symposium on Recent Advances in Intrusion Detection, pages 1-20, 2008.
  • [28] N. Santos, K. P. Gummadi, and R. Rodrigues. Towards trusted cloud computing. In HOTCLOUD, 2009.
  • [29] A. Seshadri, M. Luk, N. Qu, and A. Perrig. Secvisor: a tiny hypervisor to provide lifetime kernel code integrity for commodity uses. In Proceedings of Twenty-First ACM SIGOPS symposium on Operating Systems Principles, pages 335-350, 2007.
  • [30] D. A. Solomon and M. Russinovich. Inside Microsoft Windows 2000. Microsoft Press, 2000.
  • [31] VMware.Cloud computing.www.vmware.com/solutions/cloud-computing/.
  • [32] VMware Inc. www.vmware.com/.
  • [33] VMware Inc. Vmware infrastructure. www.vmware.com/landing_pages/discover.html.
  • [34] Xen. Xen cloud platform—advanced virtualization infrastructure for the clouds. www.xen.org/products/cloudxen.html.
  • [35] A. Kivity, Y. Kamay, D. Laor, U. Lublin, and A. Liguori. kvm: the linux virtual machine monitor. In Proc. of the Linux Symposium, pages 225-230, June 2007.
  • [36] M. Balduzzi, J. Zaddach, D. Balzarotti, E. Kirda, and S. Loureiro. A security analysis of amazon's elastic compute cloud service. In ACM Symposium on Applied Computing, pages 1427-1434, 2012.
  • [37] OpenVZ. Container-based Virtualization for Linux, www.openvz.com/.
  • [38] M. I. Gofman, R. Luo, P. Yang, and K. Gopalan. SPARC: A security and privacy aware virtual machine checkpointing mechanism. In Proceedings of the 10th annual ACM Workshop on Privacy in the Electronic Society (WPES), in conjunction with the ACM Conference on Computer and Communications Security (CCS), pages 115-124, 2011.

Claims
  • 1. A method of preventing restoration of private information from a checkpoint creation within a virtual machine, comprising: (a) identifying all memory occupied by data from at least one application executing under control of a hypervisor of the virtual machine in a memory space of a computer, with a guest process;(b) determining inter-process dependencies with the guest process;(c) identifying kernel state memory pages which represent an internal kernel state of a kernel;(d) upon initiation of checkpoint creation, requesting from the guest process the identified physical identifying memory addresses of the memory pages that belong to the at least one of:memory pages that belong to the at least one application, by the guest process,memory pages the belong to processes that depend on the at least one application based on the determined inter-process dependencies, by the guest process, andkernel state memory pages, and providing the requested identified physical memory addresses of the memory pages that belong to the at least one application to the hypervisor;(e) at least one of obscuring and segregating at least a portion of information in the memory pages corresponding to the received identification of the memory addresses;(f) persistently storing a checkpoint file representing a state of the hypervisor with the at least a portion of the memory pages corresponding to the received identification of the memory addresses at least one of obscured and segregated; and(g) restoring a prior state of the hypervisor from the persistently stored checkpoint file, wherein the restored prior state of the hypervisor is sufficient to resume operation of the virtual machine, other than the at least one application and the processes that depend on the at least one application.
  • 2. The method according to claim 1, wherein the virtual machine has a user space which supports user processes and a kernel space which supports kernel processes, and wherein all user space processes within the virtual machine are frozen, except the guest process, between the initiation of the checkpoint creation and said persistently storing the checkpoint file.
  • 3. The method according to claim 1, wherein the inter-process dependencies comprise information in teletype (TTY) buffers, socket buffers, pipe buffers, and first-in first-out (FIFO) buffers.
  • 4. The method according to claim 1, wherein a process container is provided to encapsulate all memory pages and files associated with the at least one application, wherein the memory pages within the process container are excluded from the checkpoint file.
  • 5. The method according to claim 1, wherein a process container is provided to encapsulate all memory pages and files associated with a respective at least one application, wherein the memory pages and files within the process container are separately stored within a respective checkpoint file.
  • 6. The method according to claim 1, wherein the checkpoint file is encrypted.
  • 7. The method according to claim 1, further comprising determining the inter-process dependencies for the at least one application executing within the virtual machine by a static analysis.
  • 8. The method according to claim 1, further comprising determining the inter-process dependencies for a plurality of applications executing within the virtual machine by static analysis and dynamic analysis.
  • 9. The method according to claim 1, further comprising determining a status of a communication of the at least one application, and deferring initiation of checkpoint creation with respect to the at least one application until completion of the communication.
  • 10. The method according to claim 1, further comprising: communicating a message to the at least one application prior to initiation of checkpoint creation;assuming a safe state by the at least one application, in which confidential information is removed from the memory pages within the persistently stored checkpoint file; andwherein said restoring a prior state of the hypervisor comprises reverting the at least one application to a normal operation state absent the removed confidential information.
  • 11. The method according to claim 10, further comprising: after restoring the prior state of the virtual machine from the persistently stored checkpoint file informing the at least one application that the virtual machine is restored.
  • 12. The method according to claim 1, further comprising, before persistently storing the checkpoint file: initiating a checkpointing process;sanitizing kernel space memory by pausing system calls and I/O requests from the at least one application by the kernel;completing or flushing any pending I/O operations of the at least one application; andremoving data from all I/O buffers after the completion of the I/O operations.
  • 13. The method according to claim 1, further comprising: (a) monitoring an input-output data stream communication from non-program memory sources during a computing session, and storing a series of states representing activities of the at least one application with respect to respective associated input-output data stream communications;(b) an least one of searching and cross correlating the checkpoint file with data from the monitored input-output data stream communication;(c) tagging instances of data within the checkpoint file based on a match or cross correlation of portions of the checkpoint file with data from the monitored input-output data stream communication; and(d) restoring the virtual machine to substantially resume operation, based on the persistently stored checkpoint file, wherein a state of the at least one application is rolled back to a state prior to a respective monitored input-output data stream communication.
  • 14. A method of preserving privacy of information during a checkpoint restoration process of a virtual machine, comprising: (a) monitoring an input-output data stream communication from non-program memory sources during a computing session prior to creation of a checkpoint file, and storing data representing a series of states representing activities of at least one application executing on the virtual machine with respect to their associated input-output data stream communications;(b) at least one of searching and cross correlating a created checkpoint file with the data from the monitored input-output data stream communication;(c) tagging instances of data within the created checkpoint file based on at least one of a match and a cross correlation of portions of the created checkpoint file with the data from the monitored input-output data stream communication; and(d) restoring the virtual machine to substantially resume operation, based on the created checkpoint file, wherein a state of the at least one application is rolled back to a state prior to a respective monitored input-output data stream communication based on at least the tagged instances of data.
  • 15. The method according to claim 14, wherein a process container is provided to encapsulate all memory pages and files associated with the at least one application, wherein the memory pages within the process container are at least one of excluded from and obscured within, the checkpoint file.
  • 16. The method according to claim 14, further comprising: determining inter-process dependencies for the at least one application executing within the virtual machine by static analysis and dynamic analysis; andtagging at least a portion of instances of data within the created checkpoint file dependent on the inert-process dependencies.
  • 17. The method according to claim 14, further comprising determining a status of a communication of the at least one application, and deferring a creation of the checkpoint file with respect to the at least one application until completion of the communication.
  • 18. The method according to claim 14, further comprising: prior to creation of the checkpoint file:communicating a message to the at least one application;assuming a safe state by the at least one application, in which private information is removed from the memory pages which are to be captured within the created checkpoint file;sanitizing kernel space memory by pausing system calls and I/O requests from the at least one application by the kernel;at least one of completing and flushing any pending I/O operations of the at least one application; andremoving data from all I/O buffers after the completion of the I/O operations;creating the checkpoint file; andafter creating the checkpoint file;reverting the at least one application to a normal operation state;restoring an operation state of the virtual machine from the checkpoint file; andinforming the at least one application that the virtual machine is restored from a checkpoint file.
  • 19. A method of checkpoint creation by a hypervisor of a virtual machine having at least one transaction processing application executing in the virtual machine under control of the hypervisor, comprising: (a) identifying memory pages occupied by: (i) data from the at least one application, by a guest process;(ii) data from processes having inter-process dependencies with the at least one application, by the guest process; and(iii) data which represents an internal kernel state of a kernel;(b) at least one of obscuring and segregating at least a portion of information in the identified memory pages representing data associated with particular user sessions of use of the at least one application;(c) persistently storing a checkpoint file representing a state of the virtual machine with the at least a portion of the memory pages corresponding to the received identification of the memory pages at least one of obscured and segregated; and(d) restoring a prior state of the virtual machine from the persistently stored checkpoint file, wherein the restored prior state of the hypervisor is sufficient to resume operation of the virtual machine, other than the particular user sessions of use of the at least one application.
  • 20. The method according to claim 19, further comprising, prior to identifying the memory pages: assuming a safe state by the at least one application, in which data associated with user sessions of use of the at least one application is removed from the memory pages;sanitizing kernel space pages by pausing system calls and I/O requests from the at least one application by the kernel;at least one of completing and flushing any pending I/O operations of the at least one application; andremoving data from all I/O buffers after the completion of the I/O operations.
CROSS REFERENCE TO RELATED APPLICATION

The present application is a Continuation of U.S. patent application Ser. No. 14/040,820, filed Sep. 30, 2013, now U.S. Pat. No. 9,069,782, issued Jun. 30, 2015, which is a non-provisional of, and claims benefit of priority from, U.S. Provisional Patent Application Ser. No. 61/708,232, filed Oct. 1, 2012, the entirety of which is expressly incorporated herein by reference in its entirety.

STATEMENT OF GOVERNMENT INTEREST

This invention was made with government support under CNS-0845832, awarded by the National Science Foundation. The government has certain rights in the invention.

US Referenced Citations (1754)
Number Name Date Kind
4247892 Lawrence Jan 1981 A
4514846 Federico et al. Apr 1985 A
4584639 Hardy Apr 1986 A
4625081 Lotito et al. Nov 1986 A
4665520 Strom et al. May 1987 A
4674038 Brelsford et al. Jun 1987 A
4916605 Beardsley et al. Apr 1990 A
4987532 Noguchi Jan 1991 A
5165031 Pruul et al. Nov 1992 A
5170340 Prokop et al. Dec 1992 A
5175679 Allen et al. Dec 1992 A
5179702 Spix et al. Jan 1993 A
5191651 Halim et al. Mar 1993 A
5222217 Blount et al. Jun 1993 A
5237684 Record et al. Aug 1993 A
5261089 Coleman et al. Nov 1993 A
5276876 Coleman et al. Jan 1994 A
5305056 Salgado et al. Apr 1994 A
5305454 Record et al. Apr 1994 A
5319773 Britton et al. Jun 1994 A
5319774 Ainsworth et al. Jun 1994 A
5327532 Ainsworth et al. Jul 1994 A
5347632 Filepp et al. Sep 1994 A
5355484 Record et al. Oct 1994 A
5363505 Maslak et al. Nov 1994 A
5410684 Ainsworth et al. Apr 1995 A
5410700 Fecteau et al. Apr 1995 A
5421012 Khoyi et al. May 1995 A
5446904 Belt et al. Aug 1995 A
5530868 Record et al. Jun 1996 A
5551033 Foster et al. Aug 1996 A
5592670 Pletcher Jan 1997 A
5606668 Shwed Feb 1997 A
5608720 Biegel et al. Mar 1997 A
5613060 Britton et al. Mar 1997 A
5625821 Record et al. Apr 1997 A
5758072 Filepp et al. May 1998 A
5765004 Foster et al. Jun 1998 A
5822564 Chilton et al. Oct 1998 A
5903766 Walker et al. May 1999 A
5905855 Klaiber et al. May 1999 A
6016500 Waldo et al. Jan 2000 A
6075938 Bugnion et al. Jun 2000 A
6094528 Jordan Jul 2000 A
6112304 Clawson Aug 2000 A
6115712 Islam et al. Sep 2000 A
6178504 Fieres et al. Jan 2001 B1
6186677 Angel et al. Feb 2001 B1
6195676 Spix et al. Feb 2001 B1
6199100 Filepp et al. Mar 2001 B1
6199198 Graham Mar 2001 B1
6223293 Foster et al. Apr 2001 B1
6243716 Waldo et al. Jun 2001 B1
6247027 Chaudhry et al. Jun 2001 B1
6275852 Filepp et al. Aug 2001 B1
6289382 Bowman-Amuah Sep 2001 B1
6301673 Foster et al. Oct 2001 B1
6317438 Trebes, Jr. Nov 2001 B1
6321366 Tseng et al. Nov 2001 B1
6332163 Bowman-Amuah Dec 2001 B1
6339832 Bowman-Amuah Jan 2002 B1
6353881 Chaudhry et al. Mar 2002 B1
6360193 Stoyen Mar 2002 B1
6378068 Foster et al. Apr 2002 B1
6397379 Yates, Jr. et al. May 2002 B1
6421739 Holiday Jul 2002 B1
6430570 Judge et al. Aug 2002 B1
6430649 Chaudhry et al. Aug 2002 B1
6434568 Bowman-Amuah Aug 2002 B1
6434628 Bowman-Amuah Aug 2002 B1
6438594 Bowman-Amuah Aug 2002 B1
6438677 Chaudhry et al. Aug 2002 B1
6442663 Sun et al. Aug 2002 B1
6442748 Bowman-Amuah Aug 2002 B1
6453463 Chaudhry et al. Sep 2002 B1
6460067 Chaudhry et al. Oct 2002 B1
6463457 Armentrout et al. Oct 2002 B1
6463526 Chaudhry et al. Oct 2002 B1
6463582 Lethin et al. Oct 2002 B1
6477580 Bowman-Amuah Nov 2002 B1
6477665 Bowman-Amuah Nov 2002 B1
6493730 Lewis et al. Dec 2002 B1
6496850 Bowman-Amuah Dec 2002 B1
6502102 Haswell et al. Dec 2002 B1
6502135 Munger et al. Dec 2002 B1
6502213 Bowman-Amuah Dec 2002 B1
6510352 Badavas et al. Jan 2003 B1
6523027 Underwood Feb 2003 B1
6523059 Schmidt Feb 2003 B1
6529909 Bowman-Amuah Mar 2003 B1
6529948 Bowman-Amuah Mar 2003 B1
6539396 Bowman-Amuah Mar 2003 B1
6546397 Rempell Apr 2003 B1
6549949 Bowman-Amuah Apr 2003 B1
6549959 Yates et al. Apr 2003 B1
6550057 Bowman-Amuah Apr 2003 B1
6571282 Bowman-Amuah May 2003 B1
6578068 Bowman-Amuah Jun 2003 B1
6601192 Bowman-Amuah Jul 2003 B1
6601233 Underwood Jul 2003 B1
6601234 Bowman-Amuah Jul 2003 B1
6606660 Bowman-Amuah Aug 2003 B1
6609128 Underwood Aug 2003 B1
6615199 Bowman-Amuah Sep 2003 B1
6615253 Bowman-Amuah Sep 2003 B1
6618761 Munger et al. Sep 2003 B2
6625751 Starovic et al. Sep 2003 B1
6633878 Underwood Oct 2003 B1
6636242 Bowman-Amuah Oct 2003 B2
6640238 Bowman-Amuah Oct 2003 B1
6640244 Bowman-Amuah Oct 2003 B1
6640249 Bowman-Amuah Oct 2003 B1
6643650 Slaughter et al. Nov 2003 B1
6658451 Chaudhry et al. Dec 2003 B1
6684398 Chaudhry et al. Jan 2004 B2
6691250 Chandiramani et al. Feb 2004 B1
6701514 Haswell et al. Mar 2004 B1
6704862 Chaudhry et al. Mar 2004 B1
6704873 Underwood Mar 2004 B1
6715145 Bowman-Amuah Mar 2004 B1
6718438 Lewis et al. Apr 2004 B2
6718486 Roselli et al. Apr 2004 B1
6718535 Underwood Apr 2004 B1
6718538 Mathiske Apr 2004 B1
6721944 Chaudhry et al. Apr 2004 B2
6732363 Chaudhry et al. May 2004 B1
6742015 Bowman-Amuah May 2004 B1
6742123 Foote May 2004 B1
6754855 Denninghoff et al. Jun 2004 B1
6760736 Waldo et al. Jul 2004 B2
6760815 Traversat et al. Jul 2004 B1
6760825 Sexton et al. Jul 2004 B1
6763440 Traversat et al. Jul 2004 B1
6763452 Yates, Jr. et al. Jul 2004 B1
6772296 Mathiske Aug 2004 B1
6779107 Yates Aug 2004 B1
6788688 Trebes, Jr. Sep 2004 B2
6788980 Johnson Sep 2004 B1
6789077 Slaughter et al. Sep 2004 B1
6789126 Saulpaugh et al. Sep 2004 B1
6789181 Yates et al. Sep 2004 B1
6792466 Saulpaugh et al. Sep 2004 B1
6795966 Lim et al. Sep 2004 B1
6826616 Larson et al. Nov 2004 B2
6826748 Hohensee et al. Nov 2004 B1
6832367 Choi et al. Dec 2004 B1
6834310 Munger et al. Dec 2004 B2
6837427 Overhultz et al. Jan 2005 B2
6839759 Larson et al. Jan 2005 B2
6842906 Bowman-Amuah Jan 2005 B1
6850979 Saulpaugh et al. Feb 2005 B1
6854115 Traversat et al. Feb 2005 B1
6862594 Saulpaugh et al. Mar 2005 B1
6865657 Traversat et al. Mar 2005 B1
6868447 Slaughter et al. Mar 2005 B1
6874066 Traversat et al. Mar 2005 B2
6895460 Desoli et al. May 2005 B2
6898618 Slaughter et al. May 2005 B1
6898791 Chandy et al. May 2005 B1
6907473 Schmidt et al. Jun 2005 B2
6907546 Haswell et al. Jun 2005 B1
6912708 Wallman et al. Jun 2005 B2
6917976 Slaughter et al. Jul 2005 B1
6918084 Slaughter et al. Jul 2005 B1
6934755 Saulpaugh et al. Aug 2005 B1
6934832 Van Dyke et al. Aug 2005 B1
6938130 Jacobson et al. Aug 2005 B2
6941410 Traversat et al. Sep 2005 B1
6941545 Reese et al. Sep 2005 B1
6950875 Slaughter et al. Sep 2005 B1
6954923 Yates, Jr. et al. Oct 2005 B1
6957237 Traversat et al. Oct 2005 B1
6970869 Slaughter et al. Nov 2005 B1
6973493 Slaughter et al. Dec 2005 B1
6973646 Bordawekar et al. Dec 2005 B1
6978462 Adler et al. Dec 2005 B1
7003770 Pang et al. Feb 2006 B1
7010573 Saulpaugh et al. Mar 2006 B1
7013456 Van Dyke et al. Mar 2006 B1
7016966 Saulpaugh et al. Mar 2006 B1
7020532 Johnson et al. Mar 2006 B2
7020697 Goodman et al. Mar 2006 B1
7021535 Overhultz et al. Apr 2006 B2
7028306 Boloker et al. Apr 2006 B2
7047394 Van Dyke et al. May 2006 B1
7051192 Chaudhry et al. May 2006 B2
7065549 Sun et al. Jun 2006 B2
7065574 Saulpaugh et al. Jun 2006 B1
7065633 Yates, Jr. et al. Jun 2006 B1
7069421 Yates, Jr. et al. Jun 2006 B1
7072967 Saulpaugh et al. Jul 2006 B1
7080078 Slaughter et al. Jul 2006 B1
7089374 Tremblay et al. Aug 2006 B2
7093004 Bernardin et al. Aug 2006 B2
7093086 van Rietschote Aug 2006 B1
7100195 Underwood Aug 2006 B1
7111290 Yates, Jr. et al. Sep 2006 B1
7131026 Denninghoff et al. Oct 2006 B2
7137016 Nalawadi et al. Nov 2006 B2
7137110 Reese et al. Nov 2006 B1
7146305 van der Made Dec 2006 B2
7159211 Jalan et al. Jan 2007 B2
7168076 Chaudhry et al. Jan 2007 B2
7185319 Kaler et al. Feb 2007 B2
7185323 Nair et al. Feb 2007 B2
7188180 Larson et al. Mar 2007 B2
7188251 Slaughter et al. Mar 2007 B1
7191440 Cota-Robles et al. Mar 2007 B2
7191441 Abbott et al. Mar 2007 B2
7200705 Santos et al. Apr 2007 B2
7200848 Slaughter et al. Apr 2007 B1
7203477 Coppinger et al. Apr 2007 B2
7203485 Coppinger et al. Apr 2007 B2
7206805 McLaughlin, Jr. Apr 2007 B1
7206903 Moir et al. Apr 2007 B1
7213047 Yeager et May 2007 B2
7213246 van Rietsc May 2007 B1
7228404 Patel et al. Jun 2007 B1
7234076 Daynes et al. Jun 2007 B2
7237140 Nakamura et al. Jun 2007 B2
7243267 Klemm et al. Jul 2007 B2
7243356 Saulpaugh et al. Jul 2007 B1
7249280 Lamport et al. Jul 2007 B2
7254390 Coppinger et al. Aug 2007 B2
7254608 Yeager et al. Aug 2007 B2
7254806 Yates, Jr. et al. Aug 2007 B1
7260543 Saulpaugh et al. Aug 2007 B1
7269693 Tremblay et al. Sep 2007 B2
7269694 Tremblay et al. Sep 2007 B2
7275183 Santos et al. Sep 2007 B2
7275246 Yates, Jr. et al. Sep 2007 B1
7286815 Coppinger et al. Oct 2007 B2
7289964 Bowman-Amuah Oct 2007 B1
7293267 Fresko Nov 2007 B1
7302609 Matena et al. Nov 2007 B2
7307526 Rajapakse et al. Dec 2007 B2
7328243 Yeager et al. Feb 2008 B2
7330844 Stoyen Feb 2008 B2
7334154 Lorch et al. Feb 2008 B2
7356679 Le et al. Apr 2008 B1
7363288 Santos et al. Apr 2008 B2
7366880 Chaudhry et al. Apr 2008 B2
7370064 Yousefi'zadeh May 2008 B2
7370091 Slaughter et al. May 2008 B1
7370360 van der Made May 2008 B2
7373451 Lam et al. May 2008 B2
7374096 Overhultz et al. May 2008 B2
7380039 Miloushev et al. May 2008 B2
7380051 Birrell et al. May 2008 B2
7382264 Rajapakse et al. Jun 2008 B2
7389383 Tremblay et al. Jun 2008 B2
7395333 Saulpaugh et al. Jul 2008 B1
7395536 Verbeke et al. Jul 2008 B2
7398349 Birrell et al. Jul 2008 B2
7398533 Slaughter et al. Jul 2008 B1
7409584 Denninghoff et al. Aug 2008 B2
7409719 Armstrong et al. Aug 2008 B2
7412518 Duigou et al. Aug 2008 B1
7412520 Sun Aug 2008 B2
7418504 Larson et al. Aug 2008 B2
7421698 Fresko Sep 2008 B2
7426721 Saulpaugh et al. Sep 2008 B1
7437606 Janakiraman et al. Oct 2008 B2
7437614 Haswell et al. Oct 2008 B2
7444644 Slaughter et al. Oct 2008 B1
7448079 Tremain Nov 2008 B2
7458082 Slaughter et al. Nov 2008 B1
7467198 Goodman et al. Dec 2008 B2
7467202 Savchuk Dec 2008 B2
7467333 Keeton et al. Dec 2008 B2
7478278 Archer et al. Jan 2009 B2
7480761 Birrell et al. Jan 2009 B2
7484208 Nelson Jan 2009 B1
7490151 Munger et al. Feb 2009 B2
7512769 Lowell et al. Mar 2009 B1
7516365 Lev Apr 2009 B2
7516366 Lev et al. Apr 2009 B2
7529897 Waldspurger et al. May 2009 B1
7533141 Nadgir et al. May 2009 B2
7533229 van Rietschote May 2009 B1
7546600 Tumer et al. Jun 2009 B2
7548946 Saulpaugh et al. Jun 2009 B1
7549167 Huang et al. Jun 2009 B1
7549579 Overhultz et al. Jun 2009 B2
7552312 Archer et al. Jun 2009 B2
7552434 Turner et al. Jun 2009 B2
7562369 Salamone et al. Jul 2009 B1
7568025 Vasudeva Jul 2009 B2
7574588 Chaudhry et al. Aug 2009 B2
7577834 Traversat et al. Aug 2009 B1
7590972 Axelrod et al. Sep 2009 B2
7594168 Rempell Sep 2009 B2
7596790 Moakley Sep 2009 B2
7603392 Ben-Yehuda et al. Oct 2009 B2
7603440 Grabowski et al. Oct 2009 B1
7607129 Rosu et al. Oct 2009 B2
7610510 Agarwal et al. Oct 2009 B2
7613749 Flynn, Jr. et al. Nov 2009 B2
7613929 Cohen et al. Nov 2009 B2
7624383 Barr et al. Nov 2009 B2
7653833 Miller et al. Jan 2010 B1
7657419 van der Made Feb 2010 B2
7669040 Dice Feb 2010 B2
7669081 Lett et al. Feb 2010 B2
7676456 Suganuma et al. Mar 2010 B2
7680919 Nelson Mar 2010 B2
7681075 Havemose et al. Mar 2010 B2
7685251 Houlihan et al. Mar 2010 B2
7689676 Vinberg et al. Mar 2010 B2
7689859 Westenberg Mar 2010 B2
7698465 Lamport Apr 2010 B2
7702660 Chan et al. Apr 2010 B2
7707583 Schmidt et al. Apr 2010 B2
7716492 Saulpaugh et al. May 2010 B1
7721138 Lyadvinsky et al. May 2010 B1
7721139 Castro et al. May 2010 B2
7730364 Chang et al. Jun 2010 B2
7734607 Grinstein et al. Jun 2010 B2
7734859 Daniel et al. Jun 2010 B2
7743126 Russell Jun 2010 B2
7743389 Mahalingam et al. Jun 2010 B2
7747730 Harlow Jun 2010 B1
7747814 Green Jun 2010 B2
7752459 Cowan et al. Jul 2010 B2
7760743 Shokri et al. Jul 2010 B2
7779298 Challenger et al. Aug 2010 B2
7783779 Scales et al. Aug 2010 B1
7783914 Havemose Aug 2010 B1
7805761 Ray et al. Sep 2010 B2
7810081 Dickenson et al. Oct 2010 B2
7814142 Mamou et al. Oct 2010 B2
7814295 Inglett et al. Oct 2010 B2
7814470 Mamou et al. Oct 2010 B2
7817981 Coppinger et al. Oct 2010 B2
7818510 Tremblay et al. Oct 2010 B2
7822410 Coppinger et al. Oct 2010 B2
7831787 Yueh Nov 2010 B1
7836215 Fuente Nov 2010 B2
7836303 Levy et al. Nov 2010 B2
7839803 Snelgrove et al. Nov 2010 B1
7840787 De Pauw et al. Nov 2010 B2
7844954 Venkitachalam et al. Nov 2010 B2
7849450 Rydh et al. Dec 2010 B1
7849624 Holt et al. Dec 2010 B2
7865872 Chamieh et al. Jan 2011 B2
7865893 Omelyanchuk et al. Jan 2011 B1
7870424 Okabe Jan 2011 B2
7873869 Darrington et al. Jan 2011 B2
7877436 Arimilli et al. Jan 2011 B2
7882216 Houlihan et al. Feb 2011 B2
7890689 Lam et al. Feb 2011 B2
7899788 Chandhok et al. Mar 2011 B2
7899915 Reisman Mar 2011 B2
7900003 Ben-Yehuda et al. Mar 2011 B2
7904664 Tremblay et al. Mar 2011 B2
7904746 Nakamura et al. Mar 2011 B2
7908255 Detlefs et al. Mar 2011 B2
7908653 Brickell et al. Mar 2011 B2
7917596 Chan et al. Mar 2011 B2
7921211 Larson et al. Apr 2011 B2
7921686 Bagepalli et al. Apr 2011 B2
7925791 Ellis et al. Apr 2011 B2
7925850 Waldspurger et al. Apr 2011 B1
7930733 Iftode et al. Apr 2011 B1
7933990 Munger et al. Apr 2011 B2
7934020 Xu et al. Apr 2011 B1
7934035 Miloushev et al. Apr 2011 B2
7937547 Liu et al. May 2011 B2
7937618 Dorai et al. May 2011 B2
7941402 Smits May 2011 B2
7941647 Yates, Jr. et al. May 2011 B2
7941698 Aggarwal et al. May 2011 B1
7941799 Easton et al. May 2011 B2
7945654 Larson et al. May 2011 B2
7953588 Altman et al. May 2011 B2
7958558 Leake et al. Jun 2011 B1
7962137 Coppinger et al. Jun 2011 B2
7962545 Knauerhase et al. Jun 2011 B2
7962620 Safari et al. Jun 2011 B2
7962703 Shah et al. Jun 2011 B1
7962798 Locasto et al. Jun 2011 B2
7962909 Klaiber Jun 2011 B1
7966519 Aggarwal et al. Jun 2011 B1
7966614 Chodroff et al. Jun 2011 B2
7970736 Ben-Yehuda et al. Jun 2011 B2
7971015 Waldspurger et al. Jun 2011 B2
7975138 Andrade Jul 2011 B2
7975165 Shneorson et al. Jul 2011 B2
7975176 Bak et al. Jul 2011 B2
7979846 Grechanik et al. Jul 2011 B2
7984304 Waldspurger et al. Jul 2011 B1
7987274 Larson et al. Jul 2011 B2
7987491 Reisman Jul 2011 B2
8001232 Saulpaugh et al. Aug 2011 B1
8001342 Armstrong et al. Aug 2011 B2
8001505 Bist et al. Aug 2011 B2
8006079 Goodson et al. Aug 2011 B2
8010495 Kuznetzov et al. Aug 2011 B1
8011010 Michael et al. Aug 2011 B2
8019964 Greiner et al. Sep 2011 B2
8020099 Lu Sep 2011 B1
8028071 Mahalingam et al. Sep 2011 B1
8037112 Nath et al. Oct 2011 B2
8037202 Yeager et al. Oct 2011 B2
8037278 Greiner et al. Oct 2011 B2
8037350 Aggarwal et al. Oct 2011 B1
8041760 Mamou et al. Oct 2011 B2
8041922 Greiner et al. Oct 2011 B2
8041923 Greiner et al. Oct 2011 B2
8051181 Larson et al. Nov 2011 B2
8055940 Ellis et al. Nov 2011 B2
8060553 Mamou et al. Nov 2011 B2
8065240 Jung et al. Nov 2011 B2
8065504 Yates, Jr. et al. Nov 2011 B2
8069218 Tormasov et al. Nov 2011 B1
8069374 Panigrahy et al. Nov 2011 B2
8074055 Yates, Jr. et al. Dec 2011 B1
8078854 Vick et al. Dec 2011 B2
8078910 Backensto et al. Dec 2011 B1
8082405 Greiner et al. Dec 2011 B2
8082468 Backensto et al. Dec 2011 B1
8082481 Casper et al. Dec 2011 B2
8082491 Abdelaziz et al. Dec 2011 B1
8086811 Gainey, Jr. et al. Dec 2011 B2
8090452 Johnson et al. Jan 2012 B2
8102071 Catlin Jan 2012 B2
8103674 de Moura et al. Jan 2012 B2
8103851 Greiner et al. Jan 2012 B2
8108455 Yeager et al. Jan 2012 B2
8108662 Darrington et al. Jan 2012 B2
8108722 Havemose et al. Jan 2012 B1
8108855 Dias et al. Jan 2012 B2
8117372 Daniel et al. Feb 2012 B2
8117417 Greiner et al. Feb 2012 B2
8117496 Bashir et al. Feb 2012 B2
8117554 Grechishkin et al. Feb 2012 B1
8121828 Yates, Jr. et al. Feb 2012 B2
8122434 Kostadinov et al. Feb 2012 B2
8127060 Doll et al. Feb 2012 B2
8127121 Yates, Jr. et al. Feb 2012 B2
8127412 Gleichauf et al. Mar 2012 B2
8131845 Vasudeva Mar 2012 B1
8131851 Harlow Mar 2012 B2
8135796 Slaughter et al. Mar 2012 B1
8140565 D'Angelo et al. Mar 2012 B2
8140905 Beaty et al. Mar 2012 B2
8140907 Beaty et al. Mar 2012 B2
8145945 Lee Mar 2012 B2
8151083 Greiner et al. Apr 2012 B2
8156373 Zheng et al. Apr 2012 B2
8161172 Reisman Apr 2012 B2
8161321 Zheng et al. Apr 2012 B2
8161479 Sedukhin et al. Apr 2012 B2
8166477 Tormasov Apr 2012 B1
8166693 Hughes et al. May 2012 B2
8171301 Seguin et al. May 2012 B2
8171338 Agesen et al. May 2012 B2
8176364 Havemose May 2012 B1
8181150 Szpak et al. May 2012 B2
8181182 Martin May 2012 B1
8185502 Irisawa et al. May 2012 B2
8190574 Barnes et al. May 2012 B2
8195722 Havemose et al. Jun 2012 B1
8195739 Bernardin et al. Jun 2012 B2
8195774 Lambeth et al. Jun 2012 B2
8195984 Alberi et al. Jun 2012 B2
8196139 Easton et al. Jun 2012 B2
8196205 Gribble et al. Jun 2012 B2
8200771 Ganesh et al. Jun 2012 B2
8201169 Venkitachalam et al. Jun 2012 B2
8204082 Jungck et al. Jun 2012 B2
8205120 Heidasch et al. Jun 2012 B2
8205194 Fries et al. Jun 2012 B2
8209524 Ferren et al. Jun 2012 B2
8209680 Le et al. Jun 2012 B1
8214191 Ferren et al. Jul 2012 B2
8214367 Baratto et al. Jul 2012 B2
8214622 Blandy et al. Jul 2012 B2
8214686 Ueda Jul 2012 B2
8214829 Neogi et al. Jul 2012 B2
8219063 Rogel et al. Jul 2012 B2
8219947 Bist et al. Jul 2012 B2
8225314 Martins et al. Jul 2012 B2
8233882 Rogel Jul 2012 B2
8239340 Hanson Aug 2012 B2
8239633 Wood et al. Aug 2012 B2
8239646 Colbert et al. Aug 2012 B2
8239649 Gainey, Jr. et al. Aug 2012 B2
8244954 Ganesh et al. Aug 2012 B2
8245013 Ganesh et al. Aug 2012 B2
8245083 Van Der Merwe et al. Aug 2012 B2
8250405 Elnozahy Aug 2012 B2
8255651 Liu et al. Aug 2012 B2
8260904 Nelson Sep 2012 B2
8261233 Szpak et al. Sep 2012 B2
8266125 Wester et al. Sep 2012 B2
8266275 Xu et al. Sep 2012 B2
8266276 Vasudeva Sep 2012 B1
8266404 Waldspurger et al. Sep 2012 B2
8266607 Burka et al. Sep 2012 B2
8271950 Bharadwaj Sep 2012 B2
8271990 De et al. Sep 2012 B2
8276127 Rydh et al. Sep 2012 B2
8280944 Laadan et al. Oct 2012 B2
8280974 Herington Oct 2012 B2
8281317 Backensto et al. Oct 2012 B1
8281318 Chanda et al. Oct 2012 B2
8285999 Ghose et al. Oct 2012 B1
8286174 Schmidt et al. Oct 2012 B1
8295834 Coppinger et al. Oct 2012 B2
8295835 Coppinger et al. Oct 2012 B2
8296419 Khanna et al. Oct 2012 B1
8296551 Bugnion Oct 2012 B2
8296759 Hutchins et al. Oct 2012 B1
8301672 Jiva et al. Oct 2012 B2
8301700 Havemose Oct 2012 B1
8302094 Rogel et al. Oct 2012 B2
8307187 Chawla et al. Nov 2012 B2
8312224 Elnozahy Nov 2012 B2
8315991 Mandagere et al. Nov 2012 B2
8321558 Sirota et al. Nov 2012 B1
8321643 Vaghani et al. Nov 2012 B1
8321948 Robinson et al. Nov 2012 B2
8326449 Hartz et al. Dec 2012 B2
8327350 Chess et al. Dec 2012 B2
8332632 Iftode et al. Dec 2012 B2
8332689 Timashev et al. Dec 2012 B2
8332824 Shemenzon et al. Dec 2012 B2
8335906 Greiner et al. Dec 2012 B2
8341749 Rogel Dec 2012 B2
8346726 Liu et al. Jan 2013 B2
8346891 Safari et al. Jan 2013 B2
8347140 Backensto et al. Jan 2013 B1
8347288 Brandwine Jan 2013 B1
8352801 Van Der Merwe et al. Jan 2013 B2
8356314 Sprunk Jan 2013 B2
8370493 Sirota et al. Feb 2013 B2
8370530 Tripathi et al. Feb 2013 B2
8370802 Pacifici et al. Feb 2013 B2
8370811 Grechanik et al. Feb 2013 B2
8370814 Grechanik et al. Feb 2013 B2
8370837 Emelianov et al. Feb 2013 B2
8370838 Omelyanchuk et al. Feb 2013 B1
8375188 Shah et al. Feb 2013 B1
8381028 Elnozahy Feb 2013 B2
8381032 Burn et al. Feb 2013 B2
8381224 Huetter et al. Feb 2013 B2
8386428 Kuznetzov et al. Feb 2013 B2
8386594 Underwood et al. Feb 2013 B2
8386838 Byan Feb 2013 B1
8386853 Alberi et al. Feb 2013 B2
8392838 Chawla et al. Mar 2013 B2
8397032 Elnozahy Mar 2013 B2
8401940 Havemose Mar 2013 B1
8401941 Havemose Mar 2013 B1
8402305 Havemose Mar 2013 B1
8402318 Nieh et al. Mar 2013 B2
8402464 Dice et al. Mar 2013 B2
8407428 Cheriton et al. Mar 2013 B2
8407455 Christie et al. Mar 2013 B2
8407518 Nelson et al. Mar 2013 B2
8413145 Chou et al. Apr 2013 B2
8417885 Chou et al. Apr 2013 B2
8417916 Greiner et al. Apr 2013 B2
8423959 Petras Apr 2013 B1
8423961 Byers et al. Apr 2013 B2
8424005 Strom et al. Apr 2013 B2
8429362 Natanzon et al. Apr 2013 B1
8433682 Ngo Apr 2013 B2
8433951 Havemose et al. Apr 2013 B1
8434093 Larimore et al. Apr 2013 B2
8438256 Rogel et al. May 2013 B2
8438360 Youngworth May 2013 B2
8438609 Cohen et al. May 2013 B2
8442955 Al Kiswany et al. May 2013 B2
8443069 Bagepalli et al. May 2013 B2
8443367 Taylor et al. May 2013 B1
8446224 Cortadella et al. May 2013 B2
8448022 Scott May 2013 B1
8453120 Ceze et al. May 2013 B2
8458341 Larson et al. Jun 2013 B2
8458517 Vermeulen et al. Jun 2013 B1
8458696 Park et al. Jun 2013 B2
8463825 Harty et al. Jun 2013 B1
8464256 Havemose Jun 2013 B1
8468310 Colbert et al. Jun 2013 B2
8468521 Pawlowski Jun 2013 B2
8473594 Astete et al. Jun 2013 B2
8473627 Astete et al. Jun 2013 B2
8473900 Frost Jun 2013 B2
8484732 Chen et al. Jul 2013 B1
8489699 Goggin et al. Jul 2013 B2
8489853 Greiner et al. Jul 2013 B2
8489939 Hiltunen et al. Jul 2013 B2
8495326 Gainey, Jr. et al. Jul 2013 B2
8495633 Easton et al. Jul 2013 B2
8495708 Cohen et al. Jul 2013 B2
8498966 Waghole Jul 2013 B1
8499297 Chen et al. Jul 2013 B2
8504670 Wu et al. Aug 2013 B2
8504696 Larson et al. Aug 2013 B2
8504697 Larson et al. Aug 2013 B2
8504791 Cheriton et al. Aug 2013 B2
8510596 Gupta et al. Aug 2013 B1
8510827 Leake et al. Aug 2013 B1
8516117 Munger et al. Aug 2013 B2
8516131 Larson et al. Aug 2013 B2
8520002 Stambaugh Aug 2013 B2
8521888 Larson et al. Aug 2013 B2
8527462 Talius et al. Sep 2013 B1
8527640 Reisman Sep 2013 B2
8527809 Backensto et al. Sep 2013 B1
8527990 Marathe et al. Sep 2013 B1
8533382 Scales et al. Sep 2013 B2
8533390 Dong et al. Sep 2013 B2
8533663 Moir et al. Sep 2013 B2
8533713 Dong Sep 2013 B2
8539066 Vasudeva Sep 2013 B1
8539137 Protassov et al. Sep 2013 B1
8539262 Huang et al. Sep 2013 B2
8539434 Vertes Sep 2013 B2
8539488 Havemose Sep 2013 B1
8548146 Soo et al. Oct 2013 B2
8548790 Tylutki Oct 2013 B2
8549210 Hunter et al. Oct 2013 B2
8549241 Scales et al. Oct 2013 B2
8549313 Seguin et al. Oct 2013 B2
8549646 Stavrou et al. Oct 2013 B2
8554899 Larson et al. Oct 2013 B2
8554900 Nelson Oct 2013 B2
8554981 Schmidt et al. Oct 2013 B2
8560705 Larson et al. Oct 2013 B2
8560772 Piszczek et al. Oct 2013 B1
8560816 Moir et al. Oct 2013 B2
8561045 Porras et al. Oct 2013 B2
8561046 Song et al. Oct 2013 B2
8566640 Timashev et al. Oct 2013 B2
8572247 Larson et al. Oct 2013 B2
8572613 Brandwine Oct 2013 B1
8572735 Ghosh et al. Oct 2013 B2
8572876 Shekarri et al. Nov 2013 B2
8576881 Jungck et al. Nov 2013 B2
8577845 Nguyen et al. Nov 2013 B2
8578000 Van Wie et al. Nov 2013 B2
8584101 Moon et al. Nov 2013 B2
8584127 Yoshida Nov 2013 B2
8588179 Fujino Nov 2013 B2
8589406 Lillibridge Nov 2013 B2
8595191 Prahlad et al. Nov 2013 B2
8601483 He et al. Dec 2013 B2
8607039 Filali-Adib et al. Dec 2013 B2
8607242 Clarke Dec 2013 B2
8612802 Havemose Dec 2013 B1
8621180 Greiner et al. Dec 2013 B2
8621183 Hohmuth et al. Dec 2013 B2
8621275 Havemose Dec 2013 B1
8621283 Van Der Merwe et al. Dec 2013 B2
8621496 Madampath Dec 2013 B2
8622839 McKenzie et al. Jan 2014 B1
8627000 Green et al. Jan 2014 B2
8627143 Ranganathan et al. Jan 2014 B2
8631066 Lim et al. Jan 2014 B2
8631216 Greiner et al. Jan 2014 B2
8631248 Cowan et al. Jan 2014 B2
8631456 Reisman Jan 2014 B2
8639599 Havemose Jan 2014 B1
8645240 Havemose Feb 2014 B1
8645754 Backensto et al. Feb 2014 B1
8645958 Huetter et al. Feb 2014 B2
8656077 Miloushev et al. Feb 2014 B2
8656412 Kashyap Feb 2014 B2
8661457 Kashyap Feb 2014 B2
8667066 Havemose Mar 2014 B1
8671085 Dhamankar et al. Mar 2014 B2
8677352 Hiltgen et al. Mar 2014 B2
8683004 Bauer Mar 2014 B2
8694821 Griffith et al. Apr 2014 B2
8694828 Nelson et al. Apr 2014 B2
8706992 Liu et al. Apr 2014 B2
8713268 Dillow et al. Apr 2014 B2
8713273 Waldspurger et al. Apr 2014 B2
8713362 Griffith et al. Apr 2014 B2
8719520 Piszczek et al. May 2014 B1
8719849 Madampath May 2014 B1
8725782 Starks et al. May 2014 B2
8726078 Havemose May 2014 B1
8726251 Kalogeropulos et al. May 2014 B2
8739164 Chung et al. May 2014 B2
8745098 Havemose et al. Jun 2014 B1
8745442 Havemose Jun 2014 B1
8745601 Carlson et al. Jun 2014 B1
8752048 Backensto et al. Jun 2014 B1
8752049 Backensto et al. Jun 2014 B1
8775871 Backensto et al. Jul 2014 B1
8776038 Larimore et al. Jul 2014 B2
8782365 Mooring et al. Jul 2014 B1
8782434 Ghose Jul 2014 B1
8782435 Ghose Jul 2014 B1
8782632 Chigurapati et al. Jul 2014 B1
8788792 Yates, Jr. et al. Jul 2014 B2
8789034 Emelyanov et al. Jul 2014 B1
8799119 Havemose Aug 2014 B1
8805788 Gross, IV et al. Aug 2014 B2
8806266 Qu et al. Aug 2014 B1
8818886 Havemose Aug 2014 B1
8826070 Havemose et al. Sep 2014 B1
8826273 Chen Sep 2014 B1
8832682 Xu et al. Sep 2014 B2
8839426 Brueckner et al. Sep 2014 B1
8843643 Larson et al. Sep 2014 B2
8850009 Larson et al. Sep 2014 B2
8856473 van Riel Oct 2014 B2
8856767 Jalan et al. Oct 2014 B2
8862538 Patil et al. Oct 2014 B2
8868506 Bhargava et al. Oct 2014 B1
8868705 Larson et al. Oct 2014 B2
8869139 Le et al. Oct 2014 B2
8875160 Hunt et al. Oct 2014 B2
8880473 Havemose et al. Nov 2014 B1
8881171 Backensto et al. Nov 2014 B1
8893129 Havemose Nov 2014 B1
8893147 Yin et al. Nov 2014 B2
8903705 Douceur et al. Dec 2014 B2
8904189 Ghose Dec 2014 B1
8904516 Larson et al. Dec 2014 B2
8918879 Li et al. Dec 2014 B1
8930705 Ghose et al. Jan 2015 B1
8943201 Larson et al. Jan 2015 B2
8943501 Havemose Jan 2015 B1
8949585 Hiltgen et al. Feb 2015 B2
8966315 Burn et al. Feb 2015 B2
8977736 Nelson Mar 2015 B2
8996912 Havemose et al. Mar 2015 B1
9003229 Havemose Apr 2015 B1
9009212 Sankararaman Apr 2015 B2
9026849 Patterson et al. May 2015 B2
9027003 Weissman et al. May 2015 B2
9027022 Huetter et al. May 2015 B2
9027115 Larson et al. May 2015 B2
9032170 Vaghani et al. May 2015 B2
9032249 Havemose May 2015 B1
9037713 Larson et al. May 2015 B2
9037883 Huang et al. May 2015 B2
9038163 Larson et al. May 2015 B2
9043640 Havemose May 2015 B1
9047178 Talagala et al. Jun 2015 B2
9058599 Havemose Jun 2015 B1
9058600 Havemose Jun 2015 B1
9063821 Emelyanov et al. Jun 2015 B1
9065706 Koinuma et al. Jun 2015 B2
9069782 Yang et al. Jun 2015 B2
9077694 Larson et al. Jul 2015 B2
9077695 Larson et al. Jul 2015 B2
9081602 Omelyanchuk et al. Jul 2015 B1
9086969 Bekiroglu et al. Jul 2015 B2
9092837 Bala et al. Jul 2015 B2
9094399 Larson et al. Jul 2015 B2
9094449 Brueckner et al. Jul 2015 B2
9098347 Hiltgen et al. Aug 2015 B2
9100371 Bagepalli et al. Aug 2015 B2
9100375 Larson et al. Aug 2015 B2
9104624 Timashev et al. Aug 2015 B2
9110722 Adams et al. Aug 2015 B2
9116812 Joshi et al. Aug 2015 B2
9116847 Liu et al. Aug 2015 B2
9117087 Tan et al. Aug 2015 B2
9122765 Chen Sep 2015 B1
9135667 Drees et al. Sep 2015 B2
9141502 Havemose Sep 2015 B2
9141786 Edery et al. Sep 2015 B2
9146764 Wagner Sep 2015 B1
9146819 Banikazemi et al. Sep 2015 B2
9152508 Barnes et al. Oct 2015 B1
9152610 Drees et al. Oct 2015 B2
9158626 Havemose et al. Oct 2015 B1
9164843 Havemose Oct 2015 B1
9164847 Havemose et al. Oct 2015 B1
9183089 Havemose Nov 2015 B1
9189233 Sasanka et al. Nov 2015 B2
9189265 Hiltgen et al. Nov 2015 B2
9189621 Touboul Nov 2015 B2
9195519 Tan et al. Nov 2015 B2
9201737 Backensto et al. Dec 2015 B1
9207934 Larimore et al. Dec 2015 B2
9208030 Mooring et al. Dec 2015 B1
9218278 Talagala et al. Dec 2015 B2
9219755 Touboul Dec 2015 B2
9223967 Ghose Dec 2015 B2
9229758 Ammons et al. Jan 2016 B2
9230122 Ghose Jan 2016 B2
9239765 Block et al. Jan 2016 B2
9251004 Havemose Feb 2016 B1
9256496 Havemose Feb 2016 B1
9262194 Sudhakar Feb 2016 B2
9268602 Prahlad et al. Feb 2016 B2
9268702 Bilas et al. Feb 2016 B2
9280393 Bird et al. Mar 2016 B2
9282166 Markley et al. Mar 2016 B2
9286109 Backensto et al. Mar 2016 B1
9286703 Brumer et al. Mar 2016 B2
9292330 Bonilla et al. Mar 2016 B2
9294282 Potlapally et al. Mar 2016 B1
9304869 Backensto et al. Apr 2016 B1
9311140 Raghu et al. Apr 2016 B2
9311313 Le et al. Apr 2016 B2
9317315 Mehta Apr 2016 B2
9317326 Ramanathan et al. Apr 2016 B2
9323550 Lim et al. Apr 2016 B2
9323556 Wagner Apr 2016 B2
9323623 Havemose Apr 2016 B1
9323921 Hunt et al. Apr 2016 B2
9329894 Raghu May 2016 B2
9336040 Dong et al. May 2016 B2
9336099 Havemose May 2016 B1
9348652 Raghu May 2016 B2
9354921 Nelson May 2016 B2
9354927 Hiltgen et al. May 2016 B2
9354977 Backensto et al. May 2016 B1
9355161 Havemose May 2016 B1
9356962 Ilieva et al. May 2016 B2
9372732 Adams et al. Jun 2016 B2
9374346 Larson et al. Jun 2016 B2
9378059 Huetter et al. Jun 2016 B2
9384347 Havemose Jul 2016 B1
9386000 Larson et al. Jul 2016 B2
9389893 Raghu Jul 2016 B2
9389933 Baumann et al. Jul 2016 B2
9389959 Backensto et al. Jul 2016 B1
9391801 Raghu Jul 2016 B2
20020002706 Sprunk Jan 2002 A1
20020003884 Sprunk Jan 2002 A1
20020019844 Kurowski et al. Feb 2002 A1
20020032903 Sprunk Mar 2002 A1
20020065776 Calder et al. May 2002 A1
20020065869 Calder et al. May 2002 A1
20020065874 Chien et al. May 2002 A1
20020065876 Chien et al. May 2002 A1
20020065945 Calder et al. May 2002 A1
20020066021 Chien et al. May 2002 A1
20020066022 Calder et al. May 2002 A1
20020069369 Tremain Jun 2002 A1
20020073101 Stoyen Jun 2002 A1
20020073283 Lewis et al. Jun 2002 A1
20020092003 Calder et al. Jul 2002 A1
20020092015 Sprunk et al. Jul 2002 A1
20020093980 Trebes Jul 2002 A1
20020095665 Chaudhry et al. Jul 2002 A1
20020147969 Lethin et al. Oct 2002 A1
20020161884 Munger et al. Oct 2002 A1
20020161925 Munger et al. Oct 2002 A1
20020188653 Sun Dec 2002 A1
20020194388 Boloker et al. Dec 2002 A1
20030005102 Russell Jan 2003 A1
20030018826 Chaudhry et al. Jan 2003 A1
20030028861 Wallman et al. Feb 2003 A1
20030037142 Munger et al. Feb 2003 A1
20030058277 Bowman-Amuah Mar 2003 A1
20030079116 Chaudlhry et al. Apr 2003 A1
20030092972 Mantilla et al. May 2003 A1
20030097278 Mantilla et al. May 2003 A1
20030154284 Bernardin et al. Aug 2003 A1
20030167307 Filepp et al. Sep 2003 A1
20030167342 Munger et al. Sep 2003 A1
20030167421 Klemm Sep 2003 A1
20030182572 Cowan et al. Sep 2003 A1
20030187911 Abd-El-Malek et al. Oct 2003 A1
20030188141 Chaudhry et al. Oct 2003 A1
20030191795 Bernardin et al. Oct 2003 A1
20030208500 Daynes et al. Nov 2003 A1
20030208673 Chaudhry et al. Nov 2003 A1
20030212987 Demuth et al. Nov 2003 A1
20030229900 Reisman Dec 2003 A1
20040007121 Graves et al. Jan 2004 A1
20040015627 Desoli et al. Jan 2004 A1
20040030739 Yousefi'zadeh Feb 2004 A1
20040031058 Reisman Feb 2004 A1
20040055004 Sun et al. Mar 2004 A1
20040088347 Yeager et al. May 2004 A1
20040088348 Yeager et al. May 2004 A1
20040088369 Yeager et al. May 2004 A1
20040088646 Yeager et al. May 2004 A1
20040098154 McCarthy May 2004 A1
20040098447 Verbeke et al. May 2004 A1
20040098485 Larson et al. May 2004 A1
20040103205 Larson et al. May 2004 A1
20040107285 Larson et al. Jun 2004 A1
20040107286 Larson et al. Jun 2004 A1
20040128670 Robinson et al. Jul 2004 A1
20040133640 Yeager et al. Jul 2004 A1
20040148307 Rempell Jul 2004 A1
20040153558 Gunduc et al. Aug 2004 A1
20040158549 Matena et al. Aug 2004 A1
20040162951 Jacobson et al. Aug 2004 A1
20040168030 Traversat et al. Aug 2004 A1
20040172626 Jalan et al. Sep 2004 A1
20040187115 Tremblay et al. Sep 2004 A1
20040187116 Tremblay et al. Sep 2004 A1
20040187123 Tremblay et al. Sep 2004 A1
20040205377 Nakamura et al. Oct 2004 A1
20040205414 Roselli et al. Oct 2004 A1
20040221194 Denninghoff et al. Nov 2004 A1
20040230960 Nair et al. Nov 2004 A1
20040243986 Nishiyama Dec 2004 A1
20040254648 Johnson et al. Dec 2004 A1
20040254962 Kodama et al. Dec 2004 A1
20040254964 Kodama et al. Dec 2004 A1
20040267691 Vasudeva Dec 2004 A1
20050005200 Matena et al. Jan 2005 A1
20050027870 Trebes Feb 2005 A1
20050050545 Moakley Mar 2005 A1
20050055399 Savchuk Mar 2005 A1
20050055588 Nalawadi et al. Mar 2005 A1
20050064849 Coppinger et al. Mar 2005 A1
20050064857 Coppinger et al. Mar 2005 A1
20050064868 Coppinger et al. Mar 2005 A1
20050086211 Mayer Apr 2005 A1
20050086451 Yates, Jr. et al. Apr 2005 A1
20050086650 Yates, Jr. et al. Apr 2005 A1
20050090258 Coppinger et al. Apr 2005 A1
20050113092 Coppinger et al. May 2005 A1
20050125513 Sin-Ling Lam et al. Jun 2005 A1
20050156736 Rajapakse et al. Jul 2005 A1
20050160423 Bantz et al. Jul 2005 A1
20050172018 Devine et al. Aug 2005 A1
20050177635 Schmidt et al. Aug 2005 A1
20050193269 Haswell et al. Sep 2005 A1
20050198303 Knauerhase et al. Sep 2005 A1
20050209930 Coppinger et al. Sep 2005 A1
20050222931 Mamou et al. Oct 2005 A1
20050223109 Mamou et al. Oct 2005 A1
20050228808 Mamou et al. Oct 2005 A1
20050232046 Mamou et al. Oct 2005 A1
20050234969 Mamou et al. Oct 2005 A1
20050235274 Mamou et al. Oct 2005 A1
20050240354 Mamou et al. Oct 2005 A1
20050240592 Mamou et al. Oct 2005 A1
20050246708 Turner et al. Nov 2005 A1
20050251803 Turner et al. Nov 2005 A1
20050256843 Santos et al. Nov 2005 A1
20050257080 Santos et al. Nov 2005 A1
20050257090 Santos et al. Nov 2005 A1
20050262188 Mamou et al. Nov 2005 A1
20050262189 Mamou et al. Nov 2005 A1
20050262190 Mamou et al. Nov 2005 A1
20050262191 Mamou et al. Nov 2005 A1
20050262192 Mamou et al. Nov 2005 A1
20050262193 Mamou et al. Nov 2005 A1
20050262194 Mamou et al. Nov 2005 A1
20050262301 Jacobson et al. Nov 2005 A1
20050268071 Blandy et al. Dec 2005 A1
20050283644 Lorch et al. Dec 2005 A1
20050283659 Lamport et al. Dec 2005 A1
20050289246 Easton et al. Dec 2005 A1
20060010195 Mamou et al. Jan 2006 A1
20060020790 Sprunk Jan 2006 A1
20060021029 Brickell et al. Jan 2006 A1
20060036426 Barr et al. Feb 2006 A1
20060040667 Coppinger et al. Feb 2006 A9
20060041786 Janakiraman et al. Feb 2006 A1
20060053439 Sprunk Mar 2006 A1
20060059253 Goodman et al. Mar 2006 A1
20060069717 Mamou et al. Mar 2006 A1
20060074994 Smits Apr 2006 A1
20060095276 Axelrod et al. May 2006 A1
20060110011 Cohen et al. May 2006 A1
20060112278 Cohen et al. May 2006 A1
20060112279 Cohen et al. May 2006 A1
20060112280 Cohen et al. May 2006 A1
20060122939 Cohen et al. Jun 2006 A1
20060136720 Armstrong et al. Jun 2006 A1
20060136781 Lamport Jun 2006 A1
20060143350 Miloushev et al. Jun 2006 A1
20060143517 Douceur et al. Jun 2006 A1
20060149945 Chaudhry et al. Jul 2006 A1
20060149946 Chaudhry et al. Jul 2006 A1
20060155930 Birrell et al. Jul 2006 A1
20060155931 Birrell et al. Jul 2006 A1
20060184935 Abels et al. Aug 2006 A1
20060184936 Abels et al. Aug 2006 A1
20060184937 Abels et al. Aug 2006 A1
20060195508 Bernardin et al. Aug 2006 A1
20060200632 Tremblay et al. Sep 2006 A1
20060212146 Johnson et al. Sep 2006 A1
20060212750 Denninghoff et al. Sep 2006 A1
20060218563 Grinstein et al. Sep 2006 A1
20060225065 Chandhok et al. Oct 2006 A1
20060230216 Fuente Oct 2006 A1
20060230407 Rosu et al. Oct 2006 A1
20060233367 Birrell et al. Oct 2006 A1
20060259818 Howell et al. Nov 2006 A1
20060265508 Angel et al. Nov 2006 A1
20070005919 van Riel Jan 2007 A1
20070050367 Suganuma et al. Mar 2007 A1
20070050686 Keeton et al. Mar 2007 A1
20070067590 Savagaonkar et al. Mar 2007 A1
20070074258 Wood et al. Mar 2007 A1
20070099683 Panther Trice et al. May 2007 A1
20070120673 Rajapakse et al. May 2007 A1
20070128899 Mayer Jun 2007 A1
20070136579 Levy et al. Jun 2007 A1
20070174910 Zachman et al. Jul 2007 A1
20070174915 Gribble et al. Jul 2007 A1
20070180509 Swartz et al. Aug 2007 A1
20070206611 Shokri et al. Sep 2007 A1
20070226359 Gunduc et al. Sep 2007 A1
20070233880 Nieh et al. Oct 2007 A1
20070234302 Suzuki et al. Oct 2007 A1
20070234337 Suzuki et al. Oct 2007 A1
20070234342 Flynn et al. Oct 2007 A1
20070234356 Martins et al. Oct 2007 A1
20070239804 Armstrong et al. Oct 2007 A1
20070240171 Biro et al. Oct 2007 A1
20070244937 Flynn et al. Oct 2007 A1
20070244962 Laadan et al. Oct 2007 A1
20070245334 Nieh et al. Oct 2007 A1
20070249320 Coppinger et al. Oct 2007 A1
20070254638 Coppinger et al. Nov 2007 A1
20070260733 Havemose et al. Nov 2007 A1
20070266368 Szpak et al. Nov 2007 A1
20070271445 Tremblay et al. Nov 2007 A1
20070271830 Holt et al. Nov 2007 A1
20070276879 Rothman et al. Nov 2007 A1
20070282926 Ben-Yehuda et al. Dec 2007 A1
20070283353 Tremblay et al. Dec 2007 A1
20070288247 Mackay Dec 2007 A1
20080005792 Larson et al. Jan 2008 A1
20080016249 Ellis et al. Jan 2008 A1
20080022276 Coppinger et al. Jan 2008 A1
20080034201 Munger et al. Feb 2008 A1
20080040279 Coppinger et al. Feb 2008 A1
20080040477 Johnson et al. Feb 2008 A1
20080040783 Larson et al. Feb 2008 A1
20080040791 Munger et al. Feb 2008 A1
20080040792 Larson et al. Feb 2008 A1
20080046598 Johnson et al. Feb 2008 A1
20080046699 Pauw et al. Feb 2008 A1
20080052386 Johnson et al. Feb 2008 A1
20080052695 Dickenson et al. Feb 2008 A1
20080059214 Vinberg et al. Mar 2008 A1
20080060077 Cowan et al. Mar 2008 A1
20080104531 Stambaugh May 2008 A1
20080104532 Stambaugh May 2008 A1
20080109756 Stambaugh May 2008 A1
20080109757 Stambaugh May 2008 A1
20080109758 Stambaugh May 2008 A1
20080109759 Stambaugh May 2008 A1
20080109760 Stambaugh May 2008 A1
20080109761 Stambaugh May 2008 A1
20080111818 Stambaugh May 2008 A1
20080120350 Grabowski et al. May 2008 A1
20080120620 Lett et al. May 2008 A1
20080126502 Holt May 2008 A1
20080126505 Holt May 2008 A1
20080126506 Holt May 2008 A1
20080129725 Stambaugh Jun 2008 A1
20080133688 Holt Jun 2008 A1
20080133692 Holt Jun 2008 A1
20080133694 Holt Jun 2008 A1
20080133869 Holt Jun 2008 A1
20080134161 Chamieh et al. Jun 2008 A1
20080140801 Holt Jun 2008 A1
20080140982 Holt Jun 2008 A1
20080141065 Okabe Jun 2008 A1
20080148262 Dice Jun 2008 A1
20080150963 Stambaugh Jun 2008 A1
20080155169 Hiltgen et al. Jun 2008 A1
20080155208 Hiltgen et al. Jun 2008 A1
20080155223 Hiltgen et al. Jun 2008 A1
20080172632 Stambaugh Jul 2008 A1
20080177994 Mayer Jul 2008 A1
20080183882 Flynn et al. Jul 2008 A1
20080184229 Rosu et al. Jul 2008 A1
20080189432 Abali et al. Aug 2008 A1
20080189468 Schmidt et al. Aug 2008 A1
20080189700 Schmidt et al. Aug 2008 A1
20080189769 Casado et al. Aug 2008 A1
20080195840 Archer et al. Aug 2008 A1
20080196026 Azagury et al. Aug 2008 A1
20080201602 Agarwal et al. Aug 2008 A1
20080215796 Lam et al. Sep 2008 A1
20080216073 Yates et al. Sep 2008 A1
20080216168 Larson et al. Sep 2008 A1
20080222415 Munger et al. Sep 2008 A1
20080222604 Murphy Sep 2008 A1
20080234998 Cohen et al. Sep 2008 A1
20080234999 Cohen et al. Sep 2008 A1
20080235000 Cohen et al. Sep 2008 A1
20080235001 Cohen et al. Sep 2008 A1
20080235002 Cohen et al. Sep 2008 A1
20080235711 Cohen et al. Sep 2008 A1
20080235756 Cohen et al. Sep 2008 A1
20080235764 Cohen et al. Sep 2008 A1
20080243935 Castro et al. Oct 2008 A1
20080244535 Nelson et al. Oct 2008 A1
20080244544 Neelakantam et al. Oct 2008 A1
20080244747 Gleichauf et al. Oct 2008 A1
20080250051 Grechanik et al. Oct 2008 A1
20080250265 Chang et al. Oct 2008 A1
20080263114 Nath et al. Oct 2008 A1
20080263658 Michael et al. Oct 2008 A1
20080270199 Chess et al. Oct 2008 A1
20080270838 Dorai et al. Oct 2008 A1
20080288558 De Pauw et al. Nov 2008 A1
20080288747 Inglett et al. Nov 2008 A1
20080294937 Ueda Nov 2008 A1
20080295114 Argade et al. Nov 2008 A1
20080307258 Challenger et al. Dec 2008 A1
20080307414 Alpern et al. Dec 2008 A1
20080313345 Bernardin et al. Dec 2008 A1
20080313364 Flynn et al. Dec 2008 A1
20080320122 Houlihan et al. Dec 2008 A1
20080320123 Houlihan et al. Dec 2008 A1
20080320269 Houlihan et al. Dec 2008 A1
20080320594 Jiang Dec 2008 A1
20090006445 Shemenzon et al. Jan 2009 A1
20090006621 Ellis et al. Jan 2009 A1
20090006710 Daniel et al. Jan 2009 A1
20090007063 Szpak et al. Jan 2009 A1
20090007105 Fries et al. Jan 2009 A1
20090007106 Araujo, Jr. et al. Jan 2009 A1
20090007111 Nelson et al. Jan 2009 A1
20090024851 Andrade Jan 2009 A1
20090031307 Chodroff et al. Jan 2009 A1
20090031309 Lev Jan 2009 A1
20090031310 Lev et al. Jan 2009 A1
20090036125 Coppinger et al. Feb 2009 A1
20090037329 Coppinger et al. Feb 2009 A1
20090037330 Coppinger et al. Feb 2009 A1
20090037585 Miloushev et al. Feb 2009 A1
20090037672 Colbert et al. Feb 2009 A1
20090037680 Colbert et al. Feb 2009 A1
20090042552 Coppinger et al. Feb 2009 A1
20090043700 Coppinger et al. Feb 2009 A1
20090044186 Biro Feb 2009 A1
20090044265 Ghosh et al. Feb 2009 A1
20090063665 Bagepalli et al. Mar 2009 A1
20090064094 Burka et al. Mar 2009 A1
20090064557 Hughes et al. Mar 2009 A1
20090077329 Wood et al. Mar 2009 A1
20090094603 Hiltgen et al. Apr 2009 A1
20090094673 Seguin et al. Apr 2009 A1
20090106256 Safari et al. Apr 2009 A1
20090106424 Safari et al. Apr 2009 A1
20090112616 Jung et al. Apr 2009 A1
20090112617 Jung et al. Apr 2009 A1
20090112620 Jung et al. Apr 2009 A1
20090112621 Jung et al. Apr 2009 A1
20090113109 Nelson et al. Apr 2009 A1
20090113420 Pawlowski Apr 2009 A1
20090113423 Hiltgen et al. Apr 2009 A1
20090118593 Jung et al. May 2009 A1
20090119154 Jung et al. May 2009 A1
20090119493 Venkitachalam et al. May 2009 A1
20090119684 Mahalingam et al. May 2009 A1
20090125904 Nelson May 2009 A1
20090132275 Jung et al. May 2009 A1
20090138945 Savchuk May 2009 A1
20090150883 Tripathi et al. Jun 2009 A1
20090150885 Safari et al. Jun 2009 A1
20090157882 Kashyap Jun 2009 A1
20090158260 Moon et al. Jun 2009 A1
20090164031 Johnson et al. Jun 2009 A1
20090164501 de Moura et al. Jun 2009 A1
20090164848 Heidasch et al. Jun 2009 A1
20090164981 Heidasch et al. Jun 2009 A1
20090165139 Yerazunis et al. Jun 2009 A1
20090182964 Greiner et al. Jul 2009 A1
20090182966 Greiner et al. Jul 2009 A1
20090182971 Greiner et al. Jul 2009 A1
20090182972 Greiner et al. Jul 2009 A1
20090182973 Greiner et al. Jul 2009 A1
20090182974 Greiner et al. Jul 2009 A1
20090182975 Greiner et al. Jul 2009 A1
20090183027 Subhraveti Jul 2009 A1
20090187724 Greiner et al. Jul 2009 A1
20090187728 Greiner et al. Jul 2009 A1
20090187732 Greiner et al. Jul 2009 A1
20090193214 Greiner et al. Jul 2009 A1
20090198762 Arimilli et al. Aug 2009 A1
20090198949 Kuligowski et al. Aug 2009 A1
20090204785 Yates, Jr. et al. Aug 2009 A1
20090204964 Foley et al. Aug 2009 A1
20090204966 Johnson et al. Aug 2009 A1
20090208910 Brueckner et al. Aug 2009 A1
20090210769 Casper et al. Aug 2009 A1
20090216910 Duchesneau Aug 2009 A1
20090216984 Gainey, Jr. et al. Aug 2009 A1
20090217021 Goodson et al. Aug 2009 A1
20090222496 Liu et al. Sep 2009 A1
20090222558 Xu et al. Sep 2009 A1
20090228889 Yoshida Sep 2009 A1
20090230686 Catlin Sep 2009 A1
20090248611 Xu et al. Oct 2009 A1
20090249049 Weissman et al. Oct 2009 A1
20090249357 Chanda et al. Oct 2009 A1
20090249488 Robinson et al. Oct 2009 A1
20090259612 Hanson Oct 2009 A1
20090262741 Jungck et al. Oct 2009 A1
20090282101 Lim et al. Nov 2009 A1
20090282386 Moir et al. Nov 2009 A1
20090288075 Song et al. Nov 2009 A1
20090288084 Astete et al. Nov 2009 A1
20090292858 Lambeth et al. Nov 2009 A1
20090300528 Stambaugh Dec 2009 A1
20090307528 Byers et al. Dec 2009 A1
20090313620 Sedukhin et al. Dec 2009 A1
20090316581 Kashyap et al. Dec 2009 A1
20090319672 Reisman Dec 2009 A1
20090319738 Ben-Yehuda et al. Dec 2009 A1
20090320073 Reisman Dec 2009 A1
20090327471 Astete et al. Dec 2009 A1
20100005258 Westenberg Jan 2010 A1
20100011127 Johnson et al. Jan 2010 A1
20100011238 Nakamura et al. Jan 2010 A1
20100011243 Locasto et al. Jan 2010 A1
20100023703 Christie et al. Jan 2010 A1
20100023704 Christie et al. Jan 2010 A1
20100023706 Christie et al. Jan 2010 A1
20100023707 Hohmuth et al. Jan 2010 A1
20100030878 Grabowski et al. Feb 2010 A1
20100037096 Bum et al. Feb 2010 A1
20100037206 Larimore et al. Feb 2010 A1
20100037235 Larimore et al. Feb 2010 A1
20100042846 Trotter et al. Feb 2010 A1
20100047760 Best et al. Feb 2010 A1
20100070678 Zhang et al. Mar 2010 A1
20100070935 Bist et al. Mar 2010 A1
20100070940 Bist et al. Mar 2010 A1
20100070978 Chawla et al. Mar 2010 A1
20100076604 Johnson et al. Mar 2010 A1
20100077160 Liu et al. Mar 2010 A1
20100082922 George et al. Apr 2010 A1
20100094948 Ganesh et al. Apr 2010 A1
20100095074 Ganesh et al. Apr 2010 A1
20100095075 Ganesh et al. Apr 2010 A1
20100095100 Darrington et al. Apr 2010 A1
20100095152 Darrington et al. Apr 2010 A1
20100103837 Jungck et al. Apr 2010 A1
20100107113 Innes et al. Apr 2010 A1
20100107158 Chen et al. Apr 2010 A1
20100122052 Waldspurger et al. May 2010 A1
20100122073 Narayanaswamy et al. May 2010 A1
20100138830 Astete et al. Jun 2010 A1
20100138841 Dice et al. Jun 2010 A1
20100153662 Vick et al. Jun 2010 A1
20100153674 Park et al. Jun 2010 A1
20100153690 Vick et al. Jun 2010 A1
20100153776 Vick et al. Jun 2010 A1
20100154051 Bauer Jun 2010 A1
20100161559 Patil et al. Jun 2010 A1
20100162249 Shpeisman et al. Jun 2010 A1
20100162250 Adl-Tabatabai et al. Jun 2010 A1
20100169537 Nelson Jul 2010 A1
20100169894 Sheaffer et al. Jul 2010 A1
20100174802 Chan et al. Jul 2010 A1
20100180275 Neogi et al. Jul 2010 A1
20100185590 D'Angelo et al. Jul 2010 A1
20100192220 Heizmann et al. Jul 2010 A1
20100211663 Barboy et al. Aug 2010 A1
20100211681 Chan et al. Aug 2010 A1
20100223499 Panigrahy et al. Sep 2010 A1
20100223616 De et al. Sep 2010 A1
20100235647 Buer Sep 2010 A1
20100241673 Wu et al. Sep 2010 A1
20100241726 Wu Sep 2010 A1
20100241807 Wu et al. Sep 2010 A1
20100251018 Tamura Sep 2010 A1
20100251031 Nieh et al. Sep 2010 A1
20100251363 Todorovic Sep 2010 A1
20100268691 Grinstein et al. Oct 2010 A1
20100274767 Irisawa et al. Oct 2010 A1
20100274890 Patel et al. Oct 2010 A1
20100280996 Gross et al. Nov 2010 A1
20100281195 Daniel et al. Nov 2010 A1
20100287280 Sivan Nov 2010 A1
20100305720 Doll et al. Dec 2010 A1
20100305721 Kostadinov et al. Dec 2010 A1
20100306773 Lee et al. Dec 2010 A1
20100318991 Venkitachalam et al. Dec 2010 A1
20100328064 Rogel Dec 2010 A1
20100330953 Rogel et al. Dec 2010 A1
20100330961 Rogel Dec 2010 A1
20100332630 Harlow Dec 2010 A1
20100332635 Rogel et al. Dec 2010 A1
20100332889 Shneorson et al. Dec 2010 A1
20100333088 Rogel et al. Dec 2010 A1
20110004868 Bharadwaj Jan 2011 A1
20110004935 Moffie et al. Jan 2011 A1
20110010711 Patwardhan Jan 2011 A1
20110016453 Grechanik et al. Jan 2011 A1
20110019647 Fujino Jan 2011 A1
20110023050 Strom et al. Jan 2011 A1
20110029970 Arasaratnam Feb 2011 A1
20110032830 Merwe et al. Feb 2011 A1
20110035358 Naik Feb 2011 A1
20110035513 Jevans et al. Feb 2011 A1
20110041006 Fowler Feb 2011 A1
20110047618 Evans et al. Feb 2011 A1
20110061043 Rydh et al. Mar 2011 A1
20110066786 Colbert Mar 2011 A1
20110067014 Song et al. Mar 2011 A1
20110072430 Mani Mar 2011 A1
20110082996 Wester et al. Apr 2011 A1
20110113208 Jouppi et al. May 2011 A1
20110125951 Youngworth May 2011 A1
20110131183 Chandhok et al. Jun 2011 A1
20110153992 Srinivas et al. Jun 2011 A1
20110156914 Sheharri et al. Jun 2011 A1
20110161730 Van Der Merwe et al. Jun 2011 A1
20110161988 Kashyap Jun 2011 A1
20110162076 Song et al. Jun 2011 A1
20110167087 Larson et al. Jul 2011 A1
20110167194 Scales et al. Jul 2011 A1
20110167195 Scales et al. Jul 2011 A1
20110167196 Scales et al. Jul 2011 A1
20110167298 Lee Jul 2011 A1
20110167416 Sager et al. Jul 2011 A1
20110173441 Bagepalli et al. Jul 2011 A1
20110173615 Easton et al. Jul 2011 A1
20110173698 Polyakov et al. Jul 2011 A1
20110179399 Bekiroglu et al. Jul 2011 A1
20110184993 Chawla et al. Jul 2011 A1
20110185053 Larson et al. Jul 2011 A1
20110185169 Munger et al. Jul 2011 A1
20110185292 Chawla et al. Jul 2011 A1
20110185355 Chawla et al. Jul 2011 A1
20110197022 Green et al. Aug 2011 A1
20110197097 Beaty et al. Aug 2011 A1
20110202927 Miloushev et al. Aug 2011 A1
20110208908 Chou et al. Aug 2011 A1
20110209151 Chung et al. Aug 2011 A1
20110214050 Stambaugh Sep 2011 A1
20110218966 Barnes et al. Sep 2011 A1
20110218968 Liu et al. Sep 2011 A1
20110219419 Reisman Sep 2011 A1
20110225419 Munger et al. Sep 2011 A1
20110231825 Grechanik et al. Sep 2011 A1
20110238775 Wu et al. Sep 2011 A1
20110258625 Waldspurger et al. Oct 2011 A1
20110258692 Morrison et al. Oct 2011 A1
20110264729 Kulgavin Oct 2011 A1
20110270998 Larson et al. Nov 2011 A1
20110271136 Abbot et al. Nov 2011 A1
20110280387 Soo et al. Nov 2011 A1
20110283246 Bist et al. Nov 2011 A1
20110283262 Ceze et al. Nov 2011 A1
20110289345 Agesen et al. Nov 2011 A1
20110289507 Khan et al. Nov 2011 A1
20110296113 Elnozahy Dec 2011 A1
20110296241 Elnozahy Dec 2011 A1
20110296245 Alberi et al. Dec 2011 A1
20110307897 Atterbury et al. Dec 2011 A1
20110320882 Beaty et al. Dec 2011 A1
20120005461 Moir et al. Jan 2012 A1
20120005672 Cervantes et al. Jan 2012 A1
20120011341 Greiner et al. Jan 2012 A1
20120011401 Ranganathan et al. Jan 2012 A1
20120011504 Ahmad et al. Jan 2012 A1
20120011508 Ahmad Jan 2012 A1
20120013408 Cortadella et al. Jan 2012 A1
20120017213 Hunt et al. Jan 2012 A1
20120023209 Fletcher et al. Jan 2012 A1
20120030653 Porras et al. Feb 2012 A1
20120030659 Porras et al. Feb 2012 A1
20120030661 Porras et al. Feb 2012 A1
20120042034 Goggin et al. Feb 2012 A1
20120042086 Larson et al. Feb 2012 A1
20120054332 Sahu et al. Mar 2012 A1
20120054345 Sahu et al. Mar 2012 A1
20120054408 Dong et al. Mar 2012 A1
20120054409 Block et al. Mar 2012 A1
20120054412 Gainey, Jr. et al. Mar 2012 A1
20120060165 Clarke Mar 2012 A1
20120066676 Dong et al. Mar 2012 A1
20120069131 Abelow Mar 2012 A1
20120079368 Abdelaziz et al. Mar 2012 A1
20120084393 Williams et al. Apr 2012 A1
20120084520 Chou et al. Apr 2012 A1
20120084782 Chou et al. Apr 2012 A1
20120089485 Williams et al. Apr 2012 A1
20120089971 Williams et al. Apr 2012 A1
20120096134 Suit Apr 2012 A1
20120096158 Astete et al. Apr 2012 A1
20120096541 Larson et al. Apr 2012 A1
20120102204 Larson et al. Apr 2012 A1
20120102206 Larson et al. Apr 2012 A1
20120102369 Hiltunen et al. Apr 2012 A1
20120110103 Larson et al. May 2012 A1
20120110185 Ganesan et al. May 2012 A1
20120110186 Kapur et al. May 2012 A1
20120117237 Larson et al. May 2012 A1
20120117382 Larson et al. May 2012 A1
20120124285 Soran et al. May 2012 A1
20120137106 Greiner et al. May 2012 A1
20120137286 Schimpf et al. May 2012 A1
20120144005 Quintard Jun 2012 A1
20120144153 Greiner et al. Jun 2012 A1
20120144167 Yates, Jr. et al. Jun 2012 A1
20120144232 Griffith et al. Jun 2012 A1
20120144233 Griffith et al. Jun 2012 A1
20120151225 Huang et al. Jun 2012 A1
20120159101 Miyoshi Jun 2012 A1
20120159462 Leibman et al. Jun 2012 A1
20120159478 Spradlin et al. Jun 2012 A1
20120164613 Jung et al. Jun 2012 A1
20120166758 Greiner et al. Jun 2012 A1
20120173732 Sullivan Jul 2012 A1
20120174104 Neogi et al. Jul 2012 A1
20120179446 Tylutki Jul 2012 A1
20120185855 Cervantes et al. Jul 2012 A1
20120191908 North et al. Jul 2012 A1
20120191942 Blandy et al. Jul 2012 A1
20120192142 Schimpf et al. Jul 2012 A1
20120192207 Kashyap Jul 2012 A1
20120204061 Agesen et al. Aug 2012 A1
20120209822 Prabhakar et al. Aug 2012 A1
20120210042 Lim et al. Aug 2012 A1
20120216045 Seguin et al. Aug 2012 A1
20120216198 Easton et al. Aug 2012 A1
20120218901 Jungck et al. Aug 2012 A1
20120221803 Stabrawa et al. Aug 2012 A1
20120222042 Chess et al. Aug 2012 A1
20120226699 Lillibridge Sep 2012 A1
20120226795 Larson et al. Sep 2012 A1
20120226870 Elnozahy Sep 2012 A1
20120226939 Elnozahy Sep 2012 A1
20120226947 Alberi et al. Sep 2012 A1
20120227041 Lambeth et al. Sep 2012 A1
20120232947 McLachlan et al. Sep 2012 A1
20120233547 McLachlan Sep 2012 A1
20120239624 Barnes et al. Sep 2012 A1
20120239739 Manglik et al. Sep 2012 A1
20120246513 Bum et al. Sep 2012 A9
20120246638 He et al. Sep 2012 A1
20120254286 Harlow Oct 2012 A1
20120254355 Kihara Oct 2012 A1
20120254862 Dong Oct 2012 A1
20120254888 Kalogeropulos et al. Oct 2012 A1
20120260123 Madampath Oct 2012 A1
20120265959 Le et al. Oct 2012 A1
20120266018 Tanaka Oct 2012 A1
20120266132 Coppinger et al. Oct 2012 A1
20120272240 Starks et al. Oct 2012 A1
20120278278 Wester et al. Nov 2012 A1
20120278573 Colbert et al. Nov 2012 A1
20120278793 Jalan et al. Nov 2012 A1
20120284477 Gainey, Jr. et al. Nov 2012 A1
20120284699 Van Der Merwe et al. Nov 2012 A1
20120284714 Venkitachalam et al. Nov 2012 A1
20120284716 Martins et al. Nov 2012 A1
20120290950 Rapaport et al. Nov 2012 A1
20120297246 Liu et al. Nov 2012 A1
20120310888 Kuznetzov et al. Dec 2012 A1
20120311180 Barkey et al. Dec 2012 A1
20120311580 Emelianov et al. Dec 2012 A1
20120324378 Stambaugh Dec 2012 A1
20120324417 Somani et al. Dec 2012 A1
20120324447 Huetter et al. Dec 2012 A1
20120324448 Huetter et al. Dec 2012 A1
20120324449 Huetter et al. Dec 2012 A1
20120324453 Chandramouli et al. Dec 2012 A1
20120331444 Szpak et al. Dec 2012 A1
20130007090 Sankararaman Jan 2013 A1
20130007409 Ganesh et al. Jan 2013 A1
20130007735 Bookman et al. Jan 2013 A1
20130007744 Arasaratnam Jan 2013 A1
20130013795 Larson et al. Jan 2013 A1
20130013953 Eck et al. Jan 2013 A1
20130014226 Larson et al. Jan 2013 A1
20130014227 Larson et al. Jan 2013 A1
20130014228 Munger et al. Jan 2013 A1
20130014259 Gribble et al. Jan 2013 A1
20130019091 Munger et al. Jan 2013 A1
20130019243 Schmidt et al. Jan 2013 A1
20130019280 Larson et al. Jan 2013 A1
20130024645 Cheriton et al. Jan 2013 A1
20130024855 North Jan 2013 A1
20130024940 Hutchins et al. Jan 2013 A1
20130031331 Cheriton et al. Jan 2013 A1
20130036192 Fausak Feb 2013 A1
20130036403 Geist Feb 2013 A1
20130036451 Fausak Feb 2013 A1
20130042150 McNeeney Feb 2013 A1
20130042153 McNeeney Feb 2013 A1
20130046598 Roberts Feb 2013 A1
20130046722 Hanson Feb 2013 A1
20130046948 Vaghani et al. Feb 2013 A1
20130047154 Mehta Feb 2013 A1
20130054807 Sherwood et al. Feb 2013 A1
20130054820 Reisman Feb 2013 A1
20130055009 Patterson et al. Feb 2013 A1
20130055315 Reisman Feb 2013 A1
20130060612 Hurd Mar 2013 A1
20130060947 Nelson Mar 2013 A1
20130060963 Barkey et al. Mar 2013 A1
20130061264 Reisman Mar 2013 A1
20130061273 Reisman Mar 2013 A1
20130064241 Larson et al. Mar 2013 A1
20130067103 Larson et al. Mar 2013 A1
20130067224 Larson et al. Mar 2013 A1
20130067277 Mummidi Mar 2013 A1
20130067526 Reisman Mar 2013 A1
20130073738 Reisman Mar 2013 A1
20130073778 Hunter et al. Mar 2013 A1
20130073823 Hunter et al. Mar 2013 A1
20130073905 Van Der Merwe et al. Mar 2013 A1
20130074065 McNeeney et al. Mar 2013 A1
20130074129 Reisman Mar 2013 A1
20130080732 Nellans et al. Mar 2013 A1
20130086147 Kashyap Apr 2013 A1
20130086347 Liu et al. Apr 2013 A1
20130086367 Gschwind et al. Apr 2013 A1
20130091275 Safari et al. Apr 2013 A1
20130091335 Mulcahy et al. Apr 2013 A1
20130097120 Mummidi Apr 2013 A1
20130097369 Talagala et al. Apr 2013 A1
20130097398 Waldspurger et al. Apr 2013 A1
20130104199 Sprunk Apr 2013 A1
20130110490 Letz et al. May 2013 A1
20130111018 Ammons et al. May 2013 A1
20130111473 Ammons et al. May 2013 A1
20130117337 Dunham May 2013 A1
20130117359 Husain et al. May 2013 A1
20130121154 Guay et al. May 2013 A1
20130124479 Namjoshi et al. May 2013 A1
20130137430 Coppinger et al. May 2013 A1
20130138695 Stanev May 2013 A1
20130145002 Kannan et al. Jun 2013 A1
20130145008 Kannan et al. Jun 2013 A1
20130151494 Dhamankar et al. Jun 2013 A1
20130151846 Baumann et al. Jun 2013 A1
20130151848 Baumann et al. Jun 2013 A1
20130159649 Sherwood et al. Jun 2013 A1
20130159712 Sigworth et al. Jun 2013 A1
20130166716 Safari et al. Jun 2013 A1
20130166886 Sasanka et al. Jun 2013 A1
20130166951 Burn et al. Jun 2013 A1
20130170334 Koinuma et al. Jul 2013 A1
20130179289 Calder et al. Jul 2013 A1
20130179371 Jain et al. Jul 2013 A1
20130179574 Calder et al. Jul 2013 A1
20130179673 Innes et al. Jul 2013 A1
20130179729 Chiu et al. Jul 2013 A1
20130179881 Calder et al. Jul 2013 A1
20130179894 Calder et al. Jul 2013 A1
20130179895 Calder et al. Jul 2013 A1
20130185480 Newell et al. Jul 2013 A1
20130185530 Puttaswamy Naga et al. Jul 2013 A1
20130185667 Harper et al. Jul 2013 A1
20130185716 Yin et al. Jul 2013 A1
20130198334 Ikenaga et al. Aug 2013 A1
20130198459 Joshi et al. Aug 2013 A1
20130198740 Arroyo et al. Aug 2013 A1
20130198742 Kumar et al. Aug 2013 A1
20130204917 Wang et al. Aug 2013 A1
20130204990 Skjolsvold et al. Aug 2013 A1
20130204991 Skjolsvold et al. Aug 2013 A1
20130212068 Talius et al. Aug 2013 A1
20130212162 Somadder Aug 2013 A1
20130212205 Flockhart et al. Aug 2013 A1
20130212321 Talagala et al. Aug 2013 A1
20130212592 Strom et al. Aug 2013 A1
20130218915 Billau et al. Aug 2013 A1
20130219183 Billau et al. Aug 2013 A1
20130219280 Weinstein et al. Aug 2013 A1
20130227236 Flynn et al. Aug 2013 A1
20130238559 Bushman Sep 2013 A1
20130238690 Kashyap Sep 2013 A1
20130246355 Nelson et al. Sep 2013 A1
20130246511 Brown et al. Sep 2013 A1
20130246843 Havemose et al. Sep 2013 A1
20130247070 Larimore et al. Sep 2013 A1
20130254369 Rogel et al. Sep 2013 A1
20130254459 Laplace et al. Sep 2013 A1
20130262587 Munger et al. Oct 2013 A1
20130263132 Colbert et al. Oct 2013 A1
20130263220 Larson et al. Oct 2013 A1
20130263247 Jungck et al. Oct 2013 A1
20130268357 Heath Oct 2013 A1
20130268683 Larson et al. Oct 2013 A1
20130268932 Park et al. Oct 2013 A1
20130275391 Batwara et al. Oct 2013 A1
20130275534 Larson et al. Oct 2013 A1
20130275808 Mcneeney et al. Oct 2013 A1
20130275973 Greenfield et al. Oct 2013 A1
20130276056 Epstein Oct 2013 A1
20130282994 Wires et al. Oct 2013 A1
20130290506 Astete et al. Oct 2013 A1
20130290671 Greiner et al. Oct 2013 A1
20130290781 Chen et al. Oct 2013 A1
20130290782 Chen et al. Oct 2013 A1
20130290960 Astete et al. Oct 2013 A1
20130297854 Gupta et al. Nov 2013 A1
20130297855 Gupta et al. Nov 2013 A1
20130297894 Cohen et al. Nov 2013 A1
20130298135 Hiltunen et al. Nov 2013 A1
20130305023 Gainey, Jr. et al. Nov 2013 A1
20130305242 Wang et al. Nov 2013 A1
20130305246 Goggin et al. Nov 2013 A1
20130305247 Easton et al. Nov 2013 A1
20130306276 Duchesneau Nov 2013 A1
20130311607 Larson et al. Nov 2013 A1
20130311767 Larson et al. Nov 2013 A1
20130311774 Larson et al. Nov 2013 A1
20130311910 Stambaugh Nov 2013 A1
20130311992 Fuente et al. Nov 2013 A1
20130318341 Bagepalli et al. Nov 2013 A1
20130318521 Monaghan et al. Nov 2013 A1
20130322335 Smith Dec 2013 A1
20130325450 Levien et al. Dec 2013 A1
20130325451 Levien et al. Dec 2013 A1
20130325452 Levien et al. Dec 2013 A1
20130325453 Levien et al. Dec 2013 A1
20130325704 Gorman et al. Dec 2013 A1
20130325934 Fausak et al. Dec 2013 A1
20130325998 Hormuth et al. Dec 2013 A1
20130332610 Beveridge Dec 2013 A1
20130332660 Talagala et al. Dec 2013 A1
20130332686 Ishizawa et al. Dec 2013 A1
20130332719 Hormuth et al. Dec 2013 A1
20130339479 Hormuth et al. Dec 2013 A1
20130339714 Hormuth et al. Dec 2013 A1
20130345971 Stamm et al. Dec 2013 A1
20130346988 Bruno et al. Dec 2013 A1
20140006482 Raghu et al. Jan 2014 A1
20140006580 Raghu Jan 2014 A1
20140006581 Raghu Jan 2014 A1
20140007089 Bosch et al. Jan 2014 A1
20140007178 Gillum et al. Jan 2014 A1
20140013059 Joshi et al. Jan 2014 A1
20140013311 Garrett et al. Jan 2014 A1
20140032767 Nelson Jan 2014 A1
20140053269 Ghosh et al. Feb 2014 A1
20140059333 Dixon et al. Feb 2014 A1
20140059362 Huang et al. Feb 2014 A1
20140095821 Yang et al. Apr 2014 A1
20140108864 Madampath Apr 2014 A1
20140115596 Khan et al. Apr 2014 A1
20140142904 Drees et al. May 2014 A1
20140142905 Drees et al. May 2014 A1
20140146055 Bala et al. May 2014 A1
20140149492 Ananthanarayanan et al. May 2014 A1
20140149494 Markley et al. May 2014 A1
20140149591 Bhattacharya et al. May 2014 A1
20140149983 Bonilla et al. May 2014 A1
20140181833 Bird et al. Jun 2014 A1
20140195480 Talagala et al. Jul 2014 A1
20140195564 Talagala et al. Jul 2014 A1
20140201757 Bird et al. Jul 2014 A1
20140207871 Miloushev et al. Jul 2014 A1
20140208153 Havemose Jul 2014 A1
20140240322 Brumer et al. Aug 2014 A1
20140245318 Adams et al. Aug 2014 A1
20140279941 Atkisson Sep 2014 A1
20140281131 Joshi et al. Sep 2014 A1
20140304698 Chigurapati et al. Oct 2014 A1
20140310473 Bilas et al. Oct 2014 A1
20140310708 Lim et al. Oct 2014 A1
20140310810 Brueckner et al. Oct 2014 A1
20140325238 Ghose Oct 2014 A1
20140325239 Ghose Oct 2014 A1
20140325267 Liu et al. Oct 2014 A1
20140331220 Barrat et al. Nov 2014 A1
20140331228 Barrat et al. Nov 2014 A1
20140344315 Larimore et al. Nov 2014 A1
20140351516 Larimore et al. Nov 2014 A1
20140372717 Ciu et al. Dec 2014 A1
20140380039 Larson et al. Dec 2014 A1
20140380405 Forsberg et al. Dec 2014 A1
20140380425 Lockett et al. Dec 2014 A1
20150012570 Le et al. Jan 2015 A1
20150012776 Banikazemi et al. Jan 2015 A1
20150019827 Waldspurger et al. Jan 2015 A1
20150052517 Raghu et al. Feb 2015 A1
20150052521 Raghu Feb 2015 A1
20150052523 Raghu Feb 2015 A1
20150052524 Raghu Feb 2015 A1
20150052525 Raghu Feb 2015 A1
20150058298 Earl et al. Feb 2015 A1
20150058933 Larson et al. Feb 2015 A1
20150066844 Yin et al. Mar 2015 A1
20150074058 Zhao et al. Mar 2015 A1
20150074670 Gerganov Mar 2015 A1
20150074743 Ilieva et al. Mar 2015 A1
20150149999 Ramanathan et al. May 2015 A1
20150160964 Nelson Jun 2015 A1
20150163088 Anschutz Jun 2015 A1
20150178097 Russinovich Jun 2015 A1
20150222604 Ylonen Aug 2015 A1
20150237022 Larson et al. Aug 2015 A1
20150242626 Wang et al. Aug 2015 A1
20150244680 Larson et al. Aug 2015 A1
20150278034 Barnes et al. Oct 2015 A1
20150293791 Adams et al. Oct 2015 A1
20150309883 North Oct 2015 A1
20150310210 Sia et al. Oct 2015 A1
20150317491 Yang et al. Nov 2015 A1
20150331708 Bala et al. Nov 2015 A1
20150331720 Huetter et al. Nov 2015 A1
20150334130 Brueckner et al. Nov 2015 A1
20150341319 Larson et al. Nov 2015 A1
20150356207 Reitman et al. Dec 2015 A1
20150363324 Joshi et al. Dec 2015 A1
20150378766 Beveridge et al. Dec 2015 A1
20150378771 Tarasuk-Levin et al. Dec 2015 A1
20150378785 Tarasuk-Levin et al. Dec 2015 A1
20150378831 Tarasuk-Levin et al. Dec 2015 A1
20150378847 Tarasuk-Levin et al. Dec 2015 A1
20150378940 Bradbury et al. Dec 2015 A1
20150378942 Bradbury et al. Dec 2015 A1
20150381589 Tarasuk-Levin et al. Dec 2015 A1
20160004805 Drees et al. Jan 2016 A1
20160004869 Ismael et al. Jan 2016 A1
20160006756 Ismael et al. Jan 2016 A1
20160012009 Banikazemi et al. Jan 2016 A1
20160019107 North Jan 2016 A1
20160021077 Larson et al. Jan 2016 A1
20160036862 Bagepalli et al. Feb 2016 A1
20160062789 Hiltgen et al. Mar 2016 A1
20160077761 Stabrawa et al. Mar 2016 A1
20160077857 Dong et al. Mar 2016 A1
20160077966 Stabrawa et al. Mar 2016 A1
20160077975 Stabrawa et al. Mar 2016 A1
20160078342 Tang Mar 2016 A1
20160078585 Sheldon et al. Mar 2016 A1
20160092251 Wagner Mar 2016 A1
20160110215 Bonilla et al. Apr 2016 A1
20160110657 Gibiansky et al. Apr 2016 A1
20160117501 Ghose Apr 2016 A1
20160119148 Ghose Apr 2016 A1
20160132333 Dixon et al. May 2016 A1
20160132334 Dixon et al. May 2016 A1
20160132335 Dixon et al. May 2016 A1
20160132336 Dixon et al. May 2016 A1
20160132337 Dixon et al. May 2016 A1
20160134584 Lang et al. May 2016 A1
20160140052 Waldspurger et al. May 2016 A1
20160147631 Magdon-Ismail et al. May 2016 A1
20160147649 Magdon-Ismail et al. May 2016 A1
20160147665 Magdon-Ismail et al. May 2016 A1
20160148403 Brumer et al. May 2016 A1
20160149950 Ashley et al. May 2016 A1
20160150003 Magdon-Ismail et al. May 2016 A1
20160154648 Dixon et al. Jun 2016 A1
20160170849 Cheng et al. Jun 2016 A1
20160179721 Neiger et al. Jun 2016 A1
20160188181 Smith Jun 2016 A1
20160191298 Markley et al. Jun 2016 A1
20160191332 Markley et al. Jun 2016 A1
20160196158 Nipane et al. Jul 2016 A1
20160196426 Hunt et al. Jul 2016 A1
20160210177 Dixon et al. Jul 2016 A1
20160217253 Newman et al. Jul 2016 A1
20160219115 Dong et al. Jul 2016 A1
Non-Patent Literature Citations (38)
Entry
Xfree86. www.xfree86.org/4.2.0/xwininfo.1.html, Apr. 2, 2011.
Xfree86. www.xfree86.org/current/xprop.1.html, Apr. 24, 2011.
D. Lezcano. Linux containers. lxc.sourceforge.net/lxc.html, Feb. 27, 2010.
Slock. tools.suckless.org/slock, 2006-2013.
Vmware ace virtualization suite. www.vmware.com/products/ace, 2013.
J. Chow, B. Pfaff, T. Garfinkel, K. Christopher, and M. Rosenblum. Understanding data lifetime via whole system simulation. In Proceedings of USENIX Security Symposium, pp. 22-22, 2004.
J. Chow, B. Pfaff, T. Garfinkel, and M. Rosenblum. Shredding your garbage: reducing data lifetime through secure leallocation. In Proceedings of the USENIX Security Symposium, pp. 22-22, 2005.
S. Davidoff. Cleartext passwords in linux memory. www.philosecurity.org, 2008.
A. Dinaburg, P. Royal, M. Sharif, and W. Lee. Ether: malware analysis via hardware virtualization extensions. In 15th ACM conference on Computer and communications security, pp. 51-62, 2008.
G. W. Dunlap, S. T. King, S. Cinar, M. A. Basrai, and P. M. Chen. Revirt: Enabling intrusion analysis through virtual-machine logging and replay. In in Proceedings of the 2002 Symposium on Operating Systems Design and Implementation (OSDI), pp. 211-224, 2002.
T. Garfinkel, B. Pfaff, J. Chow, and M. Rosenblum. Data lifetime is a systems problem. In Proc. of ACM SIGOPS European workshop. ACM, 2004.
T. Garfinkel, B. Pfaff, J. Chow, M. Rosenblum, and D. Boneh. Terra: a virtual machine-based platform for trusted computing. pp. 193-206. ACM Press, 2003.
T. Garfinkel and M. Rosenblum. A virtual machine introspection based architecture for intrusion detection. In Proc. Network and Distributed Systems Security Symposium, pages, pp. 191-206, 2003.
T. Garfinkel and M. Rosenblum. When virtual is harder than real: security challenges in virtual machine based aomputing environments. In Proceedings of the 10th conference on Hot Topics in Operating Systems, pp. 20-20, 2005.
Google Corp. Inter-process communication. dev.chromium.org/developers/ design-documents/inter-process-communication, Sep. 27, 2013.
A. Joshi, S. T. King, G. W. Dunlap, and P. M. Chen. Detecting past and present intrusions through vulnerability-specific predicates. In Proceedings of the twentieth ACM symposium on Operating systems principles, pp. 91-104, 2005.
S. T. King, G. W. Dunlap, and P. M. Chen. Debugging operating systems with time-traveling virtual machines. pp. 1-15, 2005.
K. Kourai and S. Chiba. Hyperspector: Virtual distributed monitoring environments for secure intrusion detection. In ACM/USENIX International Conference on Virtual Execution Environments, pp. 197-207, 2005.
Microsoft Corp. Hyper-v server 2008 r2.www.microsoft.com/hyper-v-server/ en/us/overview.aspx 2013.
A. M. Nguyen, N. Schear, H. Jung, A. Godiyal, S. T. King, and H. D. Nguyen. Mavmm: Lightweight and purpose built vmm for malware analysis. In Annual Computer Security Applications Conference, pp. 441-450, 2009.
D. Nurmi, R. Wolski, C. Grzegorczyk, G. Obertelli, S. Soman, L Youseff, and D. Zagorodnov. The eucalyptus open-source cloud-computing system. In Proceedings of the 9th IEEE/ACM International Symposium on Cluster Computing and the Grid, pp. 124-131, 2009.
D. A. S d. Oliveira and S. F. Wu. Protecting kernel code and data with a virtualization-aware collaborative operating system. In Annual Computer Security Applications Conference, pp. 451-460, 2009.
Oracle Corp. Virtualbox. www.VirtualBox.org, Sep. 27, 2013.
B. D. Payne, M. Carbone, M. Sharif, and W. Lee. Lares: An architecture for secure active monitoring using iirtualization. In IEEE Symposium on Security and Privacy, pp. 233-247, 2008.
R. Riley, X. Jiang, and D. Xu. Guest-transparent prevention of kernel rootkits with vmm-based memory shadowing. In the 11th international symposium on Recent Advances in Intrusion Detection, pp. 1-20, 2008.
N. Santos, K. P. Gummadi, and R. Rodrigues. Towards trusted cloud computing. In HOTCLOUD, 2009.
A. Seshadri, M. Luk, N. Qu, and A. Perrig. Secvisor: a tiny hypervisor to provide lifetime kernel code integrity for aommodity uses. In Proceedings of Twenty-First ACM SIGOPS symposium on Operating Systems Principles, pp. 335-350, 2007.
VMware.Cloud computing.www.vmware.com/solutions/cloud-computing, Sep. 27, 2013.
VMware Inc. www.vmware.com, 2013.
VMware Inc. Vmware infrastructure. www.vmware.com/landing—pages/ discover.html, 2013.
Xen. Xen cloud platform—advanced virtualization infrastructure for the clouds. www.xen.org/products/cloudxen.html, 2013.
A. Kivity, Y. Kamay, D. Laor, U. Lublin, and A. Liguori. kvm: the linux virtual machine monitor. In Proc. of the Linux Symposium, pp. 225-230, Jun. 2007.
M. Balduzzi, J. Zaddach, D. Balzarotti, E. Kirda, and S. Loureiro. A security analysis of amazon's elastic compute cloud service. In ACM Symposium on Applied Computing, pp. 1427-1434, 2012.
OpenVZ. Container-based Virtualization for Linux, www.openvz.com, 2013.
M. I. Gofman, R. Luo, P. Yang, and K. Gopalan. SPARC: A security and privacy aware virtual machine checkpointing mechanism. In Proceedings of the 10th annual ACM Workshop on Privacy in the Electronic Society (WPES), in conjunction with the ACM Conference on Computer and Communications Security (CCS), pp. 115-124, 2011.
D. P. Bovet and M. C. Pk Understanding the Linux Kernel, Third Edition. O'Reilly Media, 3 edition, Nov. 2005.
J. Corbet, A. Rubini, and G. Kroah-Hartman. Linux Device Drivers, 3rd Edition. O'Reilly Media, Inc., 2005.
D. A. Solomon and M. Russinovich. Inside Microsoft Windows 2000. Microsoft Press, 2000.
Related Publications (1)
Number Date Country
20150317491 A1 Nov 2015 US
Provisional Applications (1)
Number Date Country
61708232 Oct 2012 US
Continuations (1)
Number Date Country
Parent 14040820 Sep 2013 US
Child 14753800 US