Patent ID: 7222221
Filing Date: 2007-05-22
Classification: G06F,Y10S

Abstract:
1. A virtual computer system, the virtual computer system comprising: a physical computer system with a first physical processor and a second physical processor; a virtualization software running on the physical computer system, the virtualization software supporting a virtual machine with a first virtual processor and a second virtual processor, the virtual machine running a guest operating system (OS) with a guest OS page table, the virtualization software generating a first shadow page table and a second shadow page table derived from entries in the guest OS page table, the first shadow page table being used by the first physical processor and the second shadow page table being used by the second physical processor, the guest OS page table containing a first primary entry providing an address translation for a first virtual address and the first shadow page table containing a first derived entry that was derived from the first primary entry, the first derived entry also providing an address translation for the first virtual address, the guest OS page table also containing a second primary entry providing an address translation for a second virtual address and the second shadow page table containing a second derived entry that was derived from the second primary entry, the second derived entry also providing an address translation for the second virtual address; a producer associated with the first virtual processor; a first consumer associated with the first virtual processor; a second consumer associated with the second virtual processor; and a patch channel matrix, the patch channel matrix comprising a first patch channel by which the producer communicates information to the first consumer and a second patch channel by which the producer communicates information to the second consumer, wherein the producer responds to a first modification to the first primary entry, the first modification causing a first incoherency between the first primary entry and the first derived entry, the producer writing a first information to the first patch channel indicating that a change has been made to a translation in the guest OS page table for the first virtual address, the first virtual processor executing while the first incoherency exists, wherein the producer responds to a second modification to the second primary entry, the second modification causing a second incoherency between the second primary entry and the second derived entry, the producer writing a second information to the second patch channel indicating that a change has been made to a translation in the guest OS page table for the second virtual address, the second virtual processor executing while the second incoherency exists, wherein the first consumer reads the first information from the first patch channel and, on occurrence of a first coherency event at which the first shadow page table is not to be incoherent with the guest OS page table with respect to the first virtual address, the first consumer eliminates the first incoherency, and wherein the second consumer reads the second information from the second patch channel and, on occurrence of a second coherency event at which the second shadow page table is not to be incoherent with the guest OS page table with respect to the second virtual address, the second consumer eliminates the second incoherency.