On March 18th, Linux 3.3 was released and it featured a number of interesting Xen related features.
- Re-engineered how tools can perform hypercalls – by using a standard interface (/dev/xen/privcmd instead of using /proc/xen/privcmd)
- Backends (netback, blkback) can now function in HVM mode. This means that a device driver domain can be in charge of a device (say network) and a subset of the network (netback). What is exciting about this it allows for security by isolation – so if one domain is compromised it does not affect the other domains. Both Qubes and NSA Research Center have been focusing on this functionality and it is exciting to see components of this goal taking shape!
- My pet peeve: graphics not working. The Xen architecture makes an interesting sandbox for making drivers compatible with other platforms. This is due to the fact that the when device drivers DMA data, the “bus†address (so the address used on PCI chipsets) is different from the “physical†(the address used by the CPU) address. This mapping is common on other platforms besides x86 – SPARC, or PPC. The x86 architecture usually has a 1:1 mapping (so “phys†== “busâ€) – and both nouveau and radeon drivers weren’t using th full gamma of the PCI API to take advantage of that. The TTM DMA pool driver does that and now PCI (example: ATI ES1000) and PCIe cards can function properly under Xen – the remaining piece is to hookup this to the AGP API, but it not clear if there is that much huge demand for that.
- Thanks for the XenDoc day a lot of documentation was added to the kernel and the XenBus code was cleaned up.
Also some pretty serious bug fixes were put in:
- A fix in the spinlock code: if you build the kernel for fewer than 256 CPUs corruption of the spinlock occurs and a crash will ensure.
- We fixed a long-uptime bug when using the radeon or nouveau driver. The user would see: “ WARNING: at arch/x86/xen/mmu.c:475 xen_make_pte†and things started to mysteriously break.
- Hardening of the XenBus code to deal with bad frontends.
That is it for now. The Linux 3.4 merge window has opened. Expect to see another blog post from in the near future, with detail on what will go in Linux 3.4. The good news is that some of these items have been requested by many of you for some time!
A thank you to the contributors of this release
- Annie Li (7):
- xen/granttable: Introducing grant table V2 stucture
- xen/granttable: Refactor some code
- xen/granttable: Grant tables V2 implementation
- xen/granttable: Keep code format clean
- xen/granttable: Improve comments for function pointers
- xen/granttable: Support sub-page grants
- xen/granttable: Support transitive grants
Bastian Blank (5):
- xen: Add privcmd device driver
- xen: Add xenbus device driver
- xen: Add xenbus_backend device
- xen/privcmd: Remove unused support for arch specific privcmp mmap
- xen/xenbus-frontend: Make error message more clear
Daniel De Graaf (10):
- xen/gntalloc: Change gref_lock to a mutex
- xen/gnt{dev,alloc}: reserve event channels for notify
- xen/event: Add reference counting to event channels
- xen/events: prevent calling evtchn_get on invalid channels
- xen/gntalloc: release grant references on page free
- xen/gntalloc: fix reference counts on multi-page mappings
- xenbus: Support HVM backends
- xenbus: Use grant-table wrapper functions
- xen/grant-table: Support mappings required by blkback
- xen/netback: Enable netback on HVM guests
David Vrabel (3):
- xen: document balloon driver sysfs files
- xen: document backend sysfs files
- x86: xen: size struct xen_spinlock to always fit in arch_spinlock_t
Ian Campbell (3):
- xen/xenbus: Reject replies with payload > XENSTORE_PAYLOAD_MAX.
- xenbus: maximum buffer size is XENSTORE_PAYLOAD_MAX
- xen/xenbus: don’t reimplement kvasprintf via a fixed size buffer
Jan Beulich (2):
- Xen: consolidate and simplify struct xenbus_driver instantiation
- xenbus_dev: add missing error check to watch handling
Jeremy Fitzhardinge (1):
- Xen: update MAINTAINER info
Jerome Glisse (8):
- drm/ttm: remove userspace backed ttm object support
- drm/ttm: remove split btw highmen and lowmem page
- drm/ttm: remove unused backend flags field
- drm/ttm: use ttm put pages function to properly restore cache attribute
- drm/ttm: test for dma_address array allocation failure
- drm/ttm: merge ttm_backend and ttm_tt V5
- drm/ttm: introduce callback for ttm_tt populate & unpopulate V4
- ttm: fix agp since ttm tt rework
Julia Lawall (1):
- xen-gntalloc: introduce missing kfree
Kay Sievers (1):
- xen-balloon: convert sysdev_class to a regular subsystem
Konrad Rzeszutek Wilk (24):
- xen/blk[front|back]: Squash blkif_request_rw and blkif_request_discard together
- xen/blk[front|back]: Enhance discard support with secure erasing support.
- xen/blkback: Move processing of BLKIF_OP_DISCARD from dispatch_rw_block_io
- swiotlb: Expose swiotlb_nr_tlb function to modules
- drm/ttm: provide dma aware ttm page pool code V9
- drm/radeon/kms: enable the ttm dma pool if swiotlb is on V4
- drm/nouveau: enable the ttm dma pool when swiotlb is active V3
- xen/xenbus-frontend: Fix compile error with randconfig
- xen/xenbus: Fix compile error – missing header for xen_initial_domain()
- drm/ttm/dma: Only call set_pages_array_wb when the page is not in WB pool.
- drm/ttm/dma: Fix accounting error when calling ttm_mem_global_free_page and don’t try to free freed pages.
- x86/PCI: Expand the x86_msi_ops to have a restore MSIs.
- xen/pciback: Move the PCI_DEV_FLAGS_ASSIGNED ops to the “[un|]bind”
- xen/pciback: Fix “device has been assigned to X domain!” warning
- xen/pciback: Expand the warning message to include domain id.
- xen/mmu: Fix compile errors introduced by x86/memblock mismerge.
- xen/balloon: Move the registration from device to subsystem.
- ttm/dma: Remove the WARN() which is not useful.
- xen/granttable: Disable grant v2 for HVM domains.
- xen/bootup: During bootup suppress XENBUS: Unable to read cpu state
- xen/smp: Fix CPU online/offline bug triggering a BUG: scheduling while atomic.
- xen/pci[front|back]: Use %d instead of %1x for displaying PCI devfn.
- xen/setup: Remove redundant filtering of PTE masks.
- xen/pat: Disable PAT support for now.
Li Dongyang (1):
- xen-blkback: convert hole punching to discard request on loop devices
Maxim Uvarov (1):
- xen: Make XEN_MAX_DOMAIN_MEMORY have more sensible defaults
Stefano Stabellini (1):
- xen pvhvm: do not remap pirqs onto evtchns if !xen_have_vector_callback
Tejun Heo (1):
- memblock: Fix alloc failure due to dumb underflow protection in memblock_find_in_range_node()
Thomas Meyer (1):
- xen-blkfront: Use kcalloc instead of kzalloc to allocate array
Tony Luck (1):
- xen/ia64: fix build breakage because of conflicting u64 guest handles