ia64/xen-unstable

changeset 3748:31070c4d28c6

bitkeeper revision 1.1159.1.555 (42094892MsTPGiy_x_uFbwMVQuq4Qg)

Fix the synchronization issues between xend and the device model at
startup time.

Initialize the shared page in the hypervisor. Otherwise, the hypervisor
might try to inject spurious interrupts into the guest due to
uninitialized data.

Signed-off-by: Xin B Li <xin.b.li@intel.com>
Signed-off-by: Arun Sharma <arun.sharma@intel.com>
Signed-off-by: ian@xensource.com
author iap10@labyrinth.cl.cam.ac.uk
date Tue Feb 08 23:17:38 2005 +0000 (2005-02-08)
parents b1937df6cdee
children 8518c7b4c3f3
files tools/ioemu/iodev/main.cc tools/ioemu/memory/misc_mem.cc tools/python/xen/xend/XendDomainInfo.py xen/arch/x86/vmx_vmcs.c
line diff
     1.1 --- a/tools/ioemu/iodev/main.cc	Tue Feb 08 22:41:47 2005 +0000
     1.2 +++ b/tools/ioemu/iodev/main.cc	Tue Feb 08 23:17:38 2005 +0000
     1.3 @@ -1781,6 +1781,7 @@ int bxmain () {
     1.4  // wxWindows under win32.
     1.5  int main (int argc, char *argv[])
     1.6  {
     1.7 +  daemon(0, 0);
     1.8    bx_startup_flags.argc = argc;
     1.9    bx_startup_flags.argv = argv;
    1.10  #if BX_WITH_SDL && defined(WIN32)
     2.1 --- a/tools/ioemu/memory/misc_mem.cc	Tue Feb 08 22:41:47 2005 +0000
     2.2 +++ b/tools/ioemu/memory/misc_mem.cc	Tue Feb 08 23:17:38 2005 +0000
     2.3 @@ -189,9 +189,6 @@ BX_MEM_C::init_memory(int memsize)
     2.4      shared_page = xc_map_foreign_range(xc_handle, domid, PAGE_SIZE, 
     2.5                                         PROT_READ|PROT_WRITE, 
     2.6                                         page_array[nr_pages - 1]);
     2.7 -
     2.8 -    /* Initialize shared page */
     2.9 -    memset(shared_page, 0, PAGE_SIZE);
    2.10  }
    2.11  #endif // #if BX_PROVIDE_CPU_MEMORY
    2.12  
     3.1 --- a/tools/python/xen/xend/XendDomainInfo.py	Tue Feb 08 22:41:47 2005 +0000
     3.2 +++ b/tools/python/xen/xend/XendDomainInfo.py	Tue Feb 08 23:17:38 2005 +0000
     3.3 @@ -855,7 +855,7 @@ class XendDomainInfo:
     3.4                        + " -f %s" % device_config
     3.5                        + " -d %d" % self.dom
     3.6                        + " -p %d" % device_channel['port1']
     3.7 -                      + " -m %s &" % memory)
     3.8 +                      + " -m %s" % memory)
     3.9          return deferred
    3.10  
    3.11      def device_create(self, dev_config):
     4.1 --- a/xen/arch/x86/vmx_vmcs.c	Tue Feb 08 22:41:47 2005 +0000
     4.2 +++ b/xen/arch/x86/vmx_vmcs.c	Tue Feb 08 23:17:38 2005 +0000
     4.3 @@ -142,6 +142,10 @@ int vmx_setup_platform(struct exec_domai
     4.4      mpfn = phys_to_machine_mapping(gpfn);
     4.5      p = map_domain_mem(mpfn << PAGE_SHIFT);
     4.6      ASSERT(p != NULL);
     4.7 +
     4.8 +    /* Initialise shared page */
     4.9 +    memset(p, 0, PAGE_SIZE);
    4.10 +
    4.11      d->arch.arch_vmx.vmx_platform.shared_page_va = (unsigned long) p;
    4.12  
    4.13      return 0;