1. 27 May, 2009 2 commits
    • Keir Fraser's avatar
      x86: eliminate hard-coded NR_IRQS · cf5e6f2d
      Keir Fraser authored
      
      ... splitting it into global nr_irqs (determined at boot time) and
      per- domain nr_pirqs (derived from nr_irqs and a possibly command line
      specified value, which probably should later become a per-domain
      config setting).
      
      This has the (desirable imo) side effect of reducing the size of
      struct hvm_irq_dpci from requiring an order-3 page to order-2 (on
      x86-64), which nevertheless still is too large.
      
      However, there is now a variable size bit array on the stack in
      pt_irq_time_out() - while for the moment this probably is okay, it
      certainly doesn't look nice. However, replacing this with a static
      (pre-)allocation also seems less than ideal, because that would
      require at least min(d->nr_pirqs, NR_VECTORS) bit arrays of
      d->nr_pirqs bits, since this bit array is used outside of the
      serialized code region in that function, and keeping the domain's
      event lock acquired across pirq_guest_eoi() doesn't look like a good
      idea either.
      
      The IRQ- and vector-indexed arrays hanging off struct hvm_irq_dpci
      could in fact be changed further to dynamically use the smaller of the
      two ranges for indexing, since there are other assumptions about a
      one-to-one relationship between IRQs and vectors here and elsewhere.
      
      Additionally, it seems to me that struct hvm_mirq_dpci_mapping's
      digl_list and gmsi fields could really be overlayed, which would yield
      significant savings since this structure gets always instanciated in
      form of d->nr_pirqs (as per the above could also be the smaller of
      this and NR_VECTORS) dimensioned arrays.
      Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
      cf5e6f2d
    • Keir Fraser's avatar
      tmem: build fix · e3e8ff02
      Keir Fraser authored
      Signed-off-by: default avatarKeir Fraser <keir.fraser@citrix.com>
      e3e8ff02
  2. 26 May, 2009 14 commits
    • Keir Fraser's avatar
      x86 hvm: Allow cross-vendor migration · 0f1cb96e
      Keir Fraser authored
      
      Intercept #UD and emulate SYSCALL/SYSENTER/SYSEXIT as necessary.
      Signed-off-by: default avatarChristoph Egger <Christoph.Egger@amd.com>
      Signed-off-by: default avatarKeir Fraser <keir.fraser@citrix.com>
      0f1cb96e
    • Keir Fraser's avatar
      blktap2: a completely rewritten blktap implementation · bd5573a6
      Keir Fraser authored
      
      Benefits to blktap2 over the old version of blktap:
      
      * Isolation from xenstore - Blktap devices are now created directly on
         the linux dom0 command line, rather than being spawned in response
         to XenStore events.  This is handy for debugging, makes blktap
         generally easier to work with, and is a step toward a generic
         user-level block device implementation that is not Xen-specific.
      
      * Improved tapdisk infrastructure: simpler request forwarding, new
         request scheduler, request merging, more efficient use of AIO.
      
      * Improved tapdisk error handling and memory management.  No
         allocations on the block data path, IO retry logic to protect
         guests
         transient block device failures.  This has been tested and is known
         to work on weird environments such as NFS soft mounts.
      
      * Pause and snapshot of live virtual disks (see xmsnap script).
      
      * VHD support.  The VHD code in this release has been rigorously
         tested, and represents a very mature implementation of the VHD
         image
         format.
      
      * No more duplication of mechanism with blkback.  The blktap kernel
         module has changed dramatically from the original blktap.  Blkback
         is now always used to talk to Xen guests, blktap just presents a
         Linux gendisk that blkback can export.  This is done while
         preserving the zero-copy data path from domU to physical device.
      
      These patches deprecate the old blktap code, which can hopefully be
      removed from the tree completely at some point in the future.
      Signed-off-by: default avatarJake Wires <jake.wires@citrix.com>
      Signed-off-by: default avatarDutch Meyer <dmeyer@cs.ubc.ca>
      bd5573a6
    • Keir Fraser's avatar
      Transcendent memory ("tmem") for Xen. · 6009f4dd
      Keir Fraser authored
      Tmem, when called from a tmem-capable (paravirtualized) guest, makes
      use of otherwise unutilized ("fallow") memory to create and manage
      pools of pages that can be accessed from the guest either as
      "ephemeral" pages or as "persistent" pages.  In either case, the pages
      are not directly addressible by the guest, only copied to and fro via
      the tmem interface.  Ephemeral pages are a nice place for a guest to
      put recently evicted clean pages that it might need again; these pages
      can be reclaimed synchronously by Xen for other guests or other uses.
      Persistent pages are a nice place for a guest to put "swap" pages to
      avoid sending them to disk.  These pages retain data as long as the
      guest lives, but count against the guest memory allocation.
      
      Tmem pages may optionally be compressed and, in certain cases, can be
      shared between guests.  Tmem also handles concurrency nicely and
      provides limited QoS settings to combat malicious DoS attempts.
      Save/restore and live migration support is not yet provided.
      
      Tmem is primarily targeted for an x86 64-bit hypervisor.  On a 32-bit
      x86 hypervisor, it has limited functionality and testing due to
      limitations of the xen heap.  Nearly all of tmem is
      architecture-independent; three routines remain to be ported to ia64
      and it should work on that architecture too.  It is also structured to
      be portable to non-Xen environments.
      
      Tmem defaults off (for now) and must be enabled with a "tmem" xen boot
      option (and does nothing unless a tmem-capable guest is running).  The
      "tmem_compress" boot option enables compression which takes about 10x
      more CPU but approximately doubles the number of pages that can be
      stored.
      
      Tmem can be controlled via several "xm" commands and many interesting
      tmem statistics can be obtained.  A README and internal specification
      will follow, but lots of useful prose about tmem, as well as Linux
      patches, can be found at http://oss.oracle.com/projects/tmem
      
       .
      Signed-off-by: default avatarDan Magenheimer <dan.magenheimer@oracle.com>
      6009f4dd
    • Keir Fraser's avatar
      ff811c2b
    • Keir Fraser's avatar
      x86 hvm viridian: Provide dummy support for APIC assist page to satisfy Win7. · 93dc12ef
      Keir Fraser authored
      
      From: Tim Deegan <tim.deegan@citrix.com>
      Signed-off-by: default avatarKeir Fraser <keir.fraser@citrix.com>
      93dc12ef
    • Keir Fraser's avatar
    • Keir Fraser's avatar
      xm, xend: passthrough: Add assigned_or_requested_vslot() · e25dc942
      Keir Fraser authored
      
      Add an accessor to simplify accessing vslot if available,
      otherwise requested_vslot.
      Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
      e25dc942
    • Keir Fraser's avatar
      xend: Fix xm pci-detach for inactive devices · b562a316
      Keir Fraser authored
      
      In the case where a device is attached to an inactive domain
      and then removed before the domain is activated it won't have
      a vslot assigned, but it should still be valid to remove it.
      
      I don't think that there are any other cases where vslot can
      be invalid.
      Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
      b562a316
    • Keir Fraser's avatar
    • Keir Fraser's avatar
      Add support for superpages (hugepages) in PV domain · 6a9b5290
      Keir Fraser authored
      
      This patch adds the option "superpages" to the domain configuration
      file. If it is set, the domain is populated using 2M pages.
      
      This code does not support fallback to small pages.  If the domain can
      not be created with 2M pages, the  create will fail.
      
      The patch also includes support for saving and restoring domains with
      the superpage flag set.  However, if a domain has freed small pages
      within its physical page array and then extended the array, the
      restore will fill in those freed pages.  It will then attempt to
      allocate more than its memory limit and will fail.  This is
      significant because apparently Linux does this during boot, thus a
      freshly booted Linux image can not be saved and restored successfully.
      Signed-off-by: default avatarDave McCracken <dcm@mccr.org>
      6a9b5290
    • Keir Fraser's avatar
      minios: replace mktime implementation · 2cda4bd1
      Keir Fraser authored
      
      In the efforts to clarify MiniOS license it came to my attention that
      few portions of MiniOS were taken from other GPL projects, one of them
      is the mktime implementation. This patch replaces the current GPL
      licensed mktime implementation with a different and BSD licensed
      version.
      Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
      2cda4bd1
    • Keir Fraser's avatar
    • Keir Fraser's avatar
      stubdom: 'file' based disk sharing · 1d89b445
      Keir Fraser authored
      
      Allow 'file' based disks, that are blkback based disks, to be shared
      between the guest domain and the stubdom. It does so exploiting the
      same exception introduced in the previous patch "stubdoms phy disks
      sharing". Now we can remove the hack in stubdom-dm that forces "file"
      disks to be opened using blktap instead of blkback.
      Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
      1d89b445
    • Keir Fraser's avatar
      minios: Fix blkfront driver when sector_size != 512 · 0f688ae3
      Keir Fraser authored
      
      The first and last sector as well as the sector number of the request
      is expressed in 512 bytes units, independently from the real sector
      size.
      Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
      0f688ae3
  3. 21 May, 2009 1 commit
  4. 20 May, 2009 7 commits
  5. 19 May, 2009 16 commits