From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH 4/8] HVM save restore: vcpu context support Date: Thu, 11 Jan 2007 11:38:34 -0600 Message-ID: <45A6761A.7020609@linux.vnet.ibm.com> References: <20070111141037.GA2889@edwin-gen.sh.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20070111141037.GA2889@edwin-gen.sh.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "Zhai, Edwin" Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Zhai, Edwin wrote: > [PATCH 4/8] HVM save restore: vcpu context support > > Signed-off-by: Zhai Edwin > > typedef uint64_t tsc_timestamp_t; /* RDTSC timestamp */ > + > +/* > + * World vmcs state > + */ > +struct vmcs_data { > + uint64_t eip; /* execution pointer */ > + uint64_t esp; /* stack pointer */ > + uint64_t eflags; /* flags register */ > + uint64_t cr0; > + uint64_t cr3; /* page table directory */ > + uint64_t cr4; > + uint32_t idtr_limit; /* idt */ > + uint64_t idtr_base; If I read the code correctly, vmcs_data ends up becoming part of: + +#define HVM_CTXT_SIZE 6144 +typedef struct hvm_domain_context { + uint32_t cur; + uint32_t size; + uint8_t data[HVM_CTXT_SIZE]; +} hvm_domain_context_t; +DEFINE_XEN_GUEST_HANDLE(hvm_domain_context_t); Which then gets saved to disk. My first concern would be that struct vmcs_data is not padding safe. How idtr_limit gets padding may change in future versions of GCC which would break the save format. The second is how HVM_CTXT_SIZE gets defined. Not sure there's a great way to address though (although the first issue is definitely fixable). Regards, Anthony Liguori