Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756026AbbLGQT7 (ORCPT ); Mon, 7 Dec 2015 11:19:59 -0500 Received: from smtp02.citrix.com ([66.165.176.63]:3405 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755961AbbLGQT6 (ORCPT ); Mon, 7 Dec 2015 11:19:58 -0500 X-IronPort-AV: E=Sophos;i="5.20,395,1444694400"; d="scan'208";a="323180647" Date: Mon, 7 Dec 2015 16:19:26 +0000 From: Stefano Stabellini X-X-Sender: sstabellini@kaball.uk.xensource.com To: CC: , , , "Stefano Stabellini" Subject: [PATCH RFC 0/3] Xen on Virtio Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" X-DLP: MIA1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1927 Lines: 43 Hi all, this patch series introduces support for running Linux on top of Xen inside a virtual machine with virtio devices (nested virt scenario). The problem is that Linux virtio drivers use virt_to_phys to get the guest pseudo-physical addresses to pass to the backend, which doesn't work as expected on Xen. Switching the virtio drivers to the dma APIs (dma_alloc_coherent, dma_map/unmap_single and dma_map/unmap_sg) would solve the problem, as Xen support in Linux provides an implementation of the dma API which takes care of the additional address conversions. However using the dma API would increase the complexity of the non-Xen case too. We would also need to keep track of the physical or virtual address in addition to the dma address for each vring_desc to be able to free the memory in detach_buf (see patch #3). Instead this series adds few obvious checks to perform address translations in a couple of key places, without changing non-Xen code paths. You are welcome to suggest improvements or alternative implementations. Thanks, Stefano Stefano Stabellini (3): xen: export xen_phys_to_bus, xen_bus_to_phys and xen_virt_to_bus xen/virtio: allocate a contiguous region to be use as virtio queue xen/virtio_ring: introduce cpu_to_virtio_addr and virtio_addr_to_cpu drivers/virtio/virtio_pci_legacy.c | 19 +++++++++++++++---- drivers/virtio/virtio_ring.c | 9 +++++---- drivers/xen/swiotlb-xen.c | 31 ------------------------------- include/linux/virtio_config.h | 14 ++++++++++++++ include/xen/swiotlb-xen.h | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+), 39 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/