17 Dec, 2011

1 commit

  • Access to arbitrary hypercalls is currently provided via xenfs. This
    adds a standard character device to handle this. The support in xenfs
    remains for backward compatibility and uses the device driver code.

    Signed-off-by: Bastian Blank
    Acked-by: Ian Campbell
    Signed-off-by: Konrad Rzeszutek Wilk

    Bastian Blank
     

29 Sep, 2011

1 commit

  • Xen PVHVM needs xen-platform-pci, on the other hand xen-platform-pci is
    useless in any other cases.
    Therefore remove the XEN_PLATFORM_PCI config option and compile
    xen-platform-pci built-in if XEN_PVHVM is selected.

    Changes to v1:

    - remove xen-platform-pci.o and just use platform-pci.o since it is not
    externally visible anymore.

    Signed-off-by: Stefano Stabellini
    Signed-off-by: Konrad Rzeszutek Wilk

    Stefano Stabellini
     

21 Jul, 2011

1 commit

  • * stable/xen-pciback-0.6.3:
    xen/pciback: Have 'passthrough' option instead of XEN_PCIDEV_BACKEND_PASS and XEN_PCIDEV_BACKEND_VPCI
    xen/pciback: Remove the DEBUG option.
    xen/pciback: Drop two backends, squash and cleanup some code.
    xen/pciback: Print out the MSI/MSI-X (PIRQ) values
    xen/pciback: Don't setup an fake IRQ handler for SR-IOV devices.
    xen: rename pciback module to xen-pciback.
    xen/pciback: Fine-grain the spinlocks and fix BUG: scheduling while atomic cases.
    xen/pciback: Allocate IRQ handler for device that is shared with guest.
    xen/pciback: Disable MSI/MSI-X when reseting a device
    xen/pciback: guest SR-IOV support for PV guest
    xen/pciback: Register the owner (domain) of the PCI device.
    xen/pciback: Cleanup the driver based on checkpatch warnings and errors.
    xen/pciback: xen pci backend driver.

    Conflicts:
    drivers/xen/Kconfig

    Konrad Rzeszutek Wilk
     

20 Jul, 2011

1 commit

  • This is the host side counterpart to the frontend driver in
    drivers/pci/xen-pcifront.c. The PV protocol is also implemented by
    frontend drivers in other OSes too, such as the BSDs.

    The PV protocol is rather simple. There is page shared with the guest,
    which has the 'struct xen_pci_sharedinfo' embossed in it. The backend
    has a thread that is kicked every-time the structure is changed and
    based on the operation field it performs specific tasks:

    XEN_PCI_OP_conf_[read|write]:
    Read/Write 0xCF8/0xCFC filtered data. (conf_space*.c)
    Based on which field is probed, we either enable/disable the PCI
    device, change power state, read VPD, etc. The major goal of this
    call is to provide a Physical IRQ (PIRQ) to the guest.

    The PIRQ is Xen hypervisor global IRQ value irrespective of the IRQ
    is tied in to the IO-APIC, or is a vector. For GSI type
    interrupts, the PIRQ==GSI holds. For MSI/MSI-X the
    PIRQ value != Linux IRQ number (thought PIRQ==vector).

    Please note, that with Xen, all interrupts (except those level shared ones)
    are injected directly to the guest - there is no host interaction.

    XEN_PCI_OP_[enable|disable]_msi[|x] (pciback_ops.c)
    Enables/disables the MSI/MSI-X capability of the device. These operations
    setup the MSI/MSI-X vectors for the guest and pass them to the frontend.

    When the device is activated, the interrupts are directly injected in the
    guest without involving the host.

    XEN_PCI_OP_aer_[detected|resume|mmio|slotreset]: In case of failure,
    perform the appropriate AER commands on the guest. Right now that is
    a cop-out - we just kill the guest.

    Besides implementing those commands, it can also

    - hide a PCI device from the host. When booting up, the user can specify
    xen-pciback.hide=(1:0:0)(BDF..) so that host does not try to use the
    device.

    The driver was lifted from linux-2.6.18.hg tree and fixed up
    so that it could compile under v3.0. Per suggestion from Jesse Barnes
    moved the driver to drivers/xen/xen-pciback.

    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Jeremy Fitzhardinge

    Konrad Rzeszutek Wilk
     

09 Jul, 2011

2 commits

  • …nel/git/djm/tmem into stable/drivers

    * 'xen-tmem-selfballoon-v8' of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem:
    xen: tmem: self-ballooning and frontswap-selfshrinking

    Konrad Rzeszutek Wilk
     
  • This patch introduces two in-kernel drivers for Xen transcendent memory
    ("tmem") functionality that complement cleancache and frontswap. Both
    use control theory to dynamically adjust and optimize memory utilization.
    Selfballooning controls the in-kernel Xen balloon driver, targeting a goal
    value (vm_committed_as), thus pushing less frequently used clean
    page cache pages (through the cleancache code) into Xen tmem where
    Xen can balance needs across all VMs residing on the physical machine.
    Frontswap-selfshrinking controls the number of pages in frontswap,
    driving it towards zero (effectively doing a partial swapoff) when
    in-kernel memory pressure subsides, freeing up RAM for other VMs.

    More detail is provided in the header comment of xen-selfballooning.c.

    Signed-off-by: Dan Magenheimer

    [v8: konrad.wilk@oracle.com: set default enablement depending on frontswap]
    [v7: konrad.wilk@oracle.com: fix capitalization and punctuation in comments]
    [v6: fix frontswap-selfshrinking initialization]
    [v6: konrad.wilk@oracle.com: fix init pr_infos; add comments about swap]
    [v5: konrad.wilk@oracle.com: add NULL to attr list; move inits up to decls]
    [v4: dkiper@net-space.pl: use strict_strtoul plus a few syntactic nits]
    [v3: konrad.wilk@oracle.com: fix potential divides-by-zero]
    [v3: konrad.wilk@oracle.com: add many more comments, fix nits]
    [v2: rebased to linux-3.0-rc1]
    [v2: Ian.Campbell@citrix.com: reorganize as new file (xen-selfballoon.c)]
    [v2: dkiper@net-space.pl: proper access to vm_committed_as]
    [v2: dkiper@net-space.pl: accounting fixes]
    Cc: Jan Beulich
    Cc: Jeremy Fitzhardinge
    Cc:

    Dan Magenheimer
     

18 Jun, 2011

1 commit


27 May, 2011

2 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem:
    xen: cleancache shim to Xen Transcendent Memory
    ocfs2: add cleancache support
    ext4: add cleancache support
    btrfs: add cleancache support
    ext3: add cleancache support
    mm/fs: add hooks to support cleancache
    mm: cleancache core ops functions and config
    fs: add field to superblock to support cleancache
    mm/fs: cleancache documentation

    Fix up trivial conflict in fs/btrfs/extent_io.c due to includes

    Linus Torvalds
     
  • This patch provides a shim between the kernel-internal cleancache
    API (see Documentation/mm/cleancache.txt) and the Xen Transcendent
    Memory ABI (see http://oss.oracle.com/projects/tmem).

    Xen tmem provides "hypervisor RAM" as an ephemeral page-oriented
    pseudo-RAM store for cleancache pages, shared cleancache pages,
    and frontswap pages. Tmem provides enterprise-quality concurrency,
    full save/restore and live migration support, compression
    and deduplication.

    A presentation showing up to 8% faster performance and up to 52%
    reduction in sectors read on a kernel compile workload, despite
    aggressive in-kernel page reclamation ("self-ballooning") can be
    found at:

    http://oss.oracle.com/projects/tmem/dist/documentation/presentations/TranscendentMemoryXenSummit2010.pdf

    Signed-off-by: Dan Magenheimer
    Reviewed-by: Jeremy Fitzhardinge
    Cc: Konrad Rzeszutek Wilk
    Cc: Matthew Wilcox
    Cc: Nick Piggin
    Cc: Mel Gorman
    Cc: Rik Van Riel
    Cc: Jan Beulich
    Cc: Chris Mason
    Cc: Andreas Dilger
    Cc: Ted Ts'o
    Cc: Mark Fasheh
    Cc: Joel Becker
    Cc: Nitin Gupta

    Dan Magenheimer
     

13 May, 2011

1 commit


16 Mar, 2011

1 commit

  • The basic functionality of ballooning pages is useful for Xen drivers in
    general. Rather than require a dependency on the balloon module, split
    the functionality that is reused into the core. The balloon module is
    still required to follow ballooning requests from xenstore or to view
    balloon statistics in sysfs.

    Acked-by: Ian Campbell
    Signed-off-by: Daniel De Graaf
    Signed-off-by: Konrad Rzeszutek Wilk

    Daniel De Graaf
     

15 Feb, 2011

1 commit

  • This allows a userspace application to allocate a shared page for
    implementing inter-domain communication or device drivers. These
    shared pages can be mapped using the gntdev device or by the kernel
    in another domain.

    Signed-off-by: Daniel De Graaf
    Signed-off-by: Konrad Rzeszutek Wilk

    Daniel De Graaf
     

14 Jan, 2011

1 commit

  • * 'stable/gntdev' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen/p2m: Fix module linking error.
    xen p2m: clear the old pte when adding a page to m2p_override
    xen gntdev: use gnttab_map_refs and gnttab_unmap_refs
    xen: introduce gnttab_map_refs and gnttab_unmap_refs
    xen p2m: transparently change the p2m mappings in the m2p override
    xen/gntdev: Fix circular locking dependency
    xen/gntdev: stop using "token" argument
    xen: gntdev: move use of GNTMAP_contains_pte next to the map_op
    xen: add m2p override mechanism
    xen: move p2m handling to separate file
    xen/gntdev: add VM_PFNMAP to vma
    xen/gntdev: allow usermode to map granted pages
    xen: define gnttab_set_map_op/unmap_op

    Fix up trivial conflict in drivers/xen/Kconfig

    Linus Torvalds
     

12 Jan, 2011

2 commits


19 Nov, 2010

1 commit


28 Oct, 2010

1 commit

  • Register a pci notifier to add (or remove) pci devices to Xen via
    hypercalls. Xen needs to know the pci devices present in the system to
    handle pci passthrough and even MSI remapping in the initial domain.

    Signed-off-by: Weidong Han
    Signed-off-by: Qing He
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Stefano Stabellini

    Weidong Han
     

21 Oct, 2010

1 commit

  • Without this dependency we get these compile errors:

    linux-next-20101020/drivers/xen/biomerge.c: In function 'xen_biovec_phys_mergeable':
    linux-next-20101020/drivers/xen/biomerge.c:8: error: dereferencing pointer to incomplete type
    linux-next-20101020/drivers/xen/biomerge.c:9: error: dereferencing pointer to incomplete type
    linux-next-20101020/drivers/xen/biomerge.c:11: error: implicit declaration of function '__BIOVEC_PHYS_MERGEABLE'

    Signed-off-by: Konrad Rzeszutek Wilk
    Reported-by: Randy Dunlap

    Konrad Rzeszutek Wilk
     

18 Oct, 2010

1 commit

  • Impact: allow Xen control of bio merging

    When running in Xen domain with device access, we need to make sure
    the block subsystem doesn't merge requests across pages which aren't
    machine physically contiguous. To do this, we define our own
    BIOVEC_PHYS_MERGEABLE. When CONFIG_XEN isn't enabled, or we're not
    running in a Xen domain, this has identical behaviour to the normal
    implementation. When running under Xen, we also make sure the
    underlying machine pages are the same or adjacent.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Konrad Rzeszutek Wilk

    Jeremy Fitzhardinge
     

13 Aug, 2010

1 commit

  • * 'stable/xen-swiotlb-0.8.6' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    x86: Detect whether we should use Xen SWIOTLB.
    pci-swiotlb-xen: Add glue code to setup dma_ops utilizing xen_swiotlb_* functions.
    swiotlb-xen: SWIOTLB library for Xen PV guest with PCI passthrough.
    xen/mmu: inhibit vmap aliases rather than trying to clear them out
    vmap: add flag to allow lazy unmap to be disabled at runtime
    xen: Add xen_create_contiguous_region
    xen: Rename the balloon lock
    xen: Allow unprivileged Xen domains to create iomap pages
    xen: use _PAGE_IOMAP in ioremap to do machine mappings

    Fix up trivial conflicts (adding both xen swiotlb and xen pci platform
    driver setup close to each other) in drivers/xen/{Kconfig,Makefile} and
    include/xen/xen-ops.h

    Linus Torvalds
     

27 Jul, 2010

1 commit

  • This patchset:

    PV guests under Xen are running in an non-contiguous memory architecture.

    When PCI pass-through is utilized, this necessitates an IOMMU for
    translating bus (DMA) to virtual and vice-versa and also providing a
    mechanism to have contiguous pages for device drivers operations (say DMA
    operations).

    Specifically, under Xen the Linux idea of pages is an illusion. It
    assumes that pages start at zero and go up to the available memory. To
    help with that, the Linux Xen MMU provides a lookup mechanism to
    translate the page frame numbers (PFN) to machine frame numbers (MFN)
    and vice-versa. The MFN are the "real" frame numbers. Furthermore
    memory is not contiguous. Xen hypervisor stitches memory for guests
    from different pools, which means there is no guarantee that PFN==MFN
    and PFN+1==MFN+1. Lastly with Xen 4.0, pages (in debug mode) are
    allocated in descending order (high to low), meaning the guest might
    never get any MFN's under the 4GB mark.

    Signed-off-by: Konrad Rzeszutek Wilk
    Acked-by: Jeremy Fitzhardinge
    Cc: FUJITA Tomonori
    Cc: Albert Herranz
    Cc: Ian Campbell

    Konrad Rzeszutek Wilk
     

23 Jul, 2010

1 commit

  • Add the xen pci platform device driver that is responsible
    for initializing the grant table and xenbus in PV on HVM mode.
    Few changes to xenbus and grant table are necessary to allow the delayed
    initialization in HVM mode.
    Grant table needs few additional modifications to work in HVM mode.

    The Xen PCI platform device raises an irq every time an event has been
    delivered to us. However these interrupts are only delivered to vcpu 0.
    The Xen PCI platform interrupt handler calls xen_hvm_evtchn_do_upcall
    that is a little wrapper around __xen_evtchn_do_upcall, the traditional
    Xen upcall handler, the very same used with traditional PV guests.

    When running on HVM the event channel upcall is never called while in
    progress because it is a normal Linux irq handler (and we cannot switch
    the irq chip wholesale to the Xen PV ones as we are running QEMU and
    might have passed in PCI devices), therefore we cannot be sure that
    evtchn_upcall_pending is 0 when returning.
    For this reason if evtchn_upcall_pending is set by Xen we need to loop
    again on the event channels set pending otherwise we might loose some
    event channel deliveries.

    Signed-off-by: Stefano Stabellini
    Signed-off-by: Sheng Yang
    Signed-off-by: Jeremy Fitzhardinge

    Stefano Stabellini
     

10 Sep, 2009

1 commit

  • -fstack-protector uses a special per-cpu "stack canary" value.
    gcc generates special code in each function to test the canary to make
    sure that the function's stack hasn't been overrun.

    On x86-64, this is simply an offset of %gs, which is the usual per-cpu
    base segment register, so setting it up simply requires loading %gs's
    base as normal.

    On i386, the stack protector segment is %gs (rather than the usual kernel
    percpu %fs segment register). This requires setting up the full kernel
    GDT and then loading %gs accordingly. We also need to make sure %gs is
    initialized when bringing up secondary cpus too.

    To keep things consistent, we do the full GDT/segment register setup on
    both architectures.

    Because we need to avoid -fstack-protected code before setting up the GDT
    and because there's no way to disable it on a per-function basis, several
    files need to have stack-protector inhibited.

    [ Impact: allow Xen booting with stack-protector enabled ]

    Signed-off-by: Jeremy Fitzhardinge

    Jeremy Fitzhardinge
     

31 Mar, 2009

3 commits

  • …n/xenfs' and 'for-linus/xen/sys-hypervisor' into for-linus/xen/master

    * for-linus/xen/dev-evtchn:
    xen/dev-evtchn: clean up locking in evtchn
    xen: export ioctl headers to userspace
    xen: add /dev/xen/evtchn driver
    xen: add irq_from_evtchn

    * for-linus/xen/xenbus:
    xen/xenbus: export xenbus_dev_changed
    xen: use device model for suspending xenbus devices
    xen: remove suspend_cancel hook

    * for-linus/xen/xenfs:
    xen: add "capabilities" file

    * for-linus/xen/sys-hypervisor:
    xen: drop kexec bits from /sys/hypervisor since kexec isn't implemented yet
    xen/sys/hypervisor: change writable_pt to features
    xen: add /sys/hypervisor support

    Conflicts:
    drivers/xen/Makefile

    Jeremy Fitzhardinge
     
  • Adds support for Xen info under /sys/hypervisor. Taken from Novell 2.6.27
    backport tree.

    Signed-off-by: Jeremy Fitzhardinge

    Jeremy Fitzhardinge
     
  • This driver is used by application which wish to receive notifications
    from the hypervisor or other guests via Xen's event channel
    mechanism. In particular it is used by the xenstore daemon in domain
    0.

    Signed-off-by: Ian Campbell
    Signed-off-by: Jeremy Fitzhardinge

    Ian Campbell
     

09 Jan, 2009

1 commit

  • The xenfs filesystem exports various interfaces to usermode. Initially
    this exports a file to allow usermode to interact with xenbus/xenstore.

    Traditionally this appeared in /proc/xen. Rather than extending procfs,
    this patch adds a backward-compat mountpoint on /proc/xen, and provides
    a xenfs filesystem which can be mounted there.

    Signed-off-by: Alex Zeffertt
    Signed-off-by: Jeremy Fitzhardinge
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alex Zeffertt
     

05 Sep, 2008

1 commit


25 Aug, 2008

1 commit

  • Note the changes from 2.6.18-xen CPU hotplugging:

    A vcpu_down request from the remote admin via Xenbus both hotunplugs the
    CPU, and disables it by removing it from the cpu_present map, and removing
    its entry in /sys.

    A vcpu_up request from the remote admin only re-enables the CPU, and does
    not immediately bring the CPU up. A udev event is emitted, which can be
    caught by the user if he wishes to automatically re-up CPUs when available,
    or implement a more complex policy.

    Signed-off-by: Alex Nixon
    Acked-by: Jeremy Fitzhardinge
    Signed-off-by: Ingo Molnar

    Alex Nixon
     

27 May, 2008

1 commit


25 Apr, 2008

4 commits

  • The balloon driver allows memory to be dynamically added or removed from the domain,
    in order to allow host memory to be balanced between multiple domains.

    This patch introduces the Xen balloon driver, though it currently only
    allows a domain to be shrunk from its initial size (and re-grown back to
    that size). A later patch will add the ability to grow a domain beyond
    its initial size.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Jeremy Fitzhardinge
     
  • On xen/ia64 and xen/powerpc hypercall arguments are passed by pseudo
    physical address (guest physical address) so that it's necessary to
    convert from virtual address into pseudo physical address. The frame
    work is called xencomm.
    Import arch generic part of xencomm.

    Signed-off-by: Isaku Yamahata
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Isaku Yamahata
     
  • move arch/x86/xen/events.c undedr drivers/xen to share codes
    with x86 and ia64. And minor adjustment to compile.
    ia64/xen also uses events.c

    Signed-off-by: Yaozu (Eddie) Dong
    Signed-off-by: Isaku Yamahata
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Isaku Yamahata
     
  • ia64/xen also uses it too. Move it into common place so that
    ia64/xen can share the code.

    Signed-off-by: Isaku Yamahata
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Isaku Yamahata
     

18 Jul, 2007

2 commits

  • This communicates with the machine control software via a registry
    residing in a controlling virtual machine. This allows dynamic
    creation, destruction and modification of virtual device
    configurations (network devices, block devices and CPUS, to name some
    examples).

    [ Greg, would you mind giving this a review? Thanks -J ]

    Signed-off-by: Ian Pratt
    Signed-off-by: Christian Limpach
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Chris Wright
    Cc: Greg KH

    Jeremy Fitzhardinge
     
  • Add Xen 'grant table' driver which allows granting of access to
    selected local memory pages by other virtual machines and,
    symmetrically, the mapping of remote memory pages which other virtual
    machines have granted access to.

    This driver is a prerequisite for many of the Xen virtual device
    drivers, which grant the 'device driver domain' restricted and
    temporary access to only those memory pages that are currently
    involved in I/O operations.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Ian Pratt
    Signed-off-by: Christian Limpach
    Signed-off-by: Chris Wright

    Jeremy Fitzhardinge