From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IlouV-0001fF-N2 for qemu-devel@nongnu.org; Sat, 27 Oct 2007 12:53:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IlouU-0001f3-BC for qemu-devel@nongnu.org; Sat, 27 Oct 2007 12:53:18 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IlouU-0001f0-3p for qemu-devel@nongnu.org; Sat, 27 Oct 2007 12:53:18 -0400 Received: from nf-out-0910.google.com ([64.233.182.190]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IlouT-0006Dr-G3 for qemu-devel@nongnu.org; Sat, 27 Oct 2007 12:53:17 -0400 Received: by nf-out-0910.google.com with SMTP id 30so1115713nfu for ; Sat, 27 Oct 2007 09:53:16 -0700 (PDT) Message-ID: Date: Sat, 27 Oct 2007 19:53:16 +0300 From: "Blue Swirl" In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_4087_21942967.1193503996202" References: Subject: [Qemu-devel] Re: Faster, generic IO/DMA model with vectored AIO? Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel ------=_Part_4087_21942967.1193503996202 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/27/07, Blue Swirl wrote: > I changed Slirp output to use vectored IO to avoid the slowdown from > memcpy (see the patch for the work in progress, gives a small > performance improvement). But then I got the idea that using AIO would > be nice at the outgoing end of the network IO processing. In fact, > vectored AIO model could even be used for the generic DMA! The benefit > is that no buffering or copying should be needed. I made a sketch of the API, please have a look at the patch. > Each stage would translate the IO list and callback as needed and only > the final stage would perform the IO or memcpy. This would be used in > each stage of the chain memory<->IOMMU<->device<->SLIRP<->host network > device. Of course some kind of host support for vectored AIO for these > devices is required. On target side, devices that can do > scatter/gather DMA would benefit most. Inside Qemu the vectors would use target physical addresses (struct qemu_iovec), but at some point the addresses would change to host pointers suitable for real AIO. ------=_Part_4087_21942967.1193503996202 Content-Type: text/x-diff; name=gdma_aiov.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_f8ad8vjx Content-Disposition: attachment; filename=gdma_aiov.diff SW5kZXg6IHFlbXUvdmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwuaAkyMDA3LTEwLTI3 IDE0OjU4OjA5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5oCTIwMDctMTAtMjcgMTY6NTE6 NDAuMDAwMDAwMDAwICswMDAwCkBAIC03NDYsNiArNzQ2LDg1IEBACiAKICNpbmNsdWRlICJody9p cnEuaCIKIAorLyogR2VuZXJpYyBETUEgQVBJICovCisKK3R5cGVkZWYgdm9pZCBETUFEcml2ZXJD b21wbGV0aW9uRnVuYyh2b2lkICpvcGFxdWUsIGludCByZXQpOworCitzdHJ1Y3QgcWVtdV9pb3Zl YyB7CisgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGlvdl9iYXNlOworICAgIHNpemVfdCBpb3ZfbGVu OworfTsKKwordHlwZWRlZiBzdHJ1Y3QgcWVtdV9idXMgcWVtdV9idXM7CisKK3R5cGVkZWYgc3Ry dWN0IERNQURyaXZlckFJT0NCIHsKKyAgICB2b2lkICpvcGFxdWU7CisgICAgaW50IHR5cGU7Cisg ICAgaW50IG5lbnQ7CisgICAgc3RydWN0IGFpb2NiICoqYWlvY2I7CisgICAgRE1BRHJpdmVyQ29t cGxldGlvbkZ1bmMgKmNiOworICAgIHN0cnVjdCBETUFEcml2ZXJBSU9DQiAqbmV4dDsKK30gRE1B RHJpdmVyQUlPQ0I7CisKK3R5cGVkZWYgdm9pZCBETUFSV0hhbmRsZXIodm9pZCAqb3BhcXVlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqZHN0X3Zl Y3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdF9jb3VudCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFlbXVfaW92ZWMgKnNyY192ZWN0b3IsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfY291bnQpOworCitxZW11X2J1cyAqYnVz X2luaXQodW5zaWduZWQgaW50IGJ1c19iaXRzLCBETUFSV0hhbmRsZXIgbm9ydGhfaGFuZGxlciwK KyAgICAgICAgICAgICAgICAgICB2b2lkICpub3J0aF9oYW5kbGVyX29wYXF1ZSwgRE1BUldIYW5k bGVyIHNvdXRoX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgdm9pZCAqc291dGhfaGFuZGxl cl9vcGFxdWUpOworCisvKiBEaXJlY3Rpb24gQ1BVLT5icmlkZ2UtPmRldmljZS9tZW1vcnkgKi8K K3ZvaWQgYnVzX3J3X3NvdXRoKHFlbXVfYnVzICpidXMsCisgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqZHN0X3ZlY3RvciwKKyAgICAgICAgICAgICAgICAgIGludCBk c3RfY291bnQsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqc3Jj X3ZlY3RvciwKKyAgICAgICAgICAgICAgICAgIGludCBzcmNfY291bnQsCisgICAgICAgICAgICAg ICAgICBpbnQgaXNfd3JpdGUpOworCitzdGF0aWMgaW5saW5lIHZvaWQgYnVzX3JlYWRfc291dGgo cWVtdV9idXMgKmJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgcWVtdV9pb3ZlYyAqZHN0X3ZlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgZHN0X2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBxZW11X2lvdmVjICpzcmNfdmVjdG9yLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBzcmNfY291bnQpCit7CisgICAgYnVzX3J3X3NvdXRoKGJ1cywg ZHN0X3ZlY3RvciwgZHN0X2NvdW50LCBzcmNfdmVjdG9yLCBzcmNfY291bnQsIDApOworfQorc3Rh dGljIGlubGluZSB2b2lkIGJ1c193cml0ZV9zb3V0aChxZW11X2J1cyAqYnVzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqZHN0X3Zl Y3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdF9jb3VudCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFlbXVfaW92 ZWMgKnNyY192ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz cmNfY291bnQpCit7CisgICAgYnVzX3J3X3NvdXRoKGJ1cywgZHN0X3ZlY3RvciwgZHN0X2NvdW50 LCBzcmNfdmVjdG9yLCBzcmNfY291bnQsIDEpOworfQorLyogRnJvbSBkZXZpY2UgdG93YXJkcyBD UFUvbWVtb3J5IChETUEpICovCit2b2lkIGJ1c19yd19ub3J0aChxZW11X2J1cyAqYnVzLAorICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFlbXVfaW92ZWMgKmRzdF92ZWN0b3IsCisgICAg ICAgICAgICAgICAgICBpbnQgZHN0X2NvdW50LAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHFlbXVfaW92ZWMgKnNyY192ZWN0b3IsCisgICAgICAgICAgICAgICAgICBpbnQgc3JjX2Nv dW50LAorICAgICAgICAgICAgICAgICAgaW50IGlzX3dyaXRlKTsKKworc3RhdGljIGlubGluZSB2 b2lkIGJ1c19yZWFkX25vcnRoKHFlbXVfYnVzICpidXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFlbXVfaW92ZWMgKmRzdF92ZWN0b3IsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdF9jb3VudCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqc3JjX3ZlY3RvciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2NvdW50KQoreworICAg IGJ1c19yd19ub3J0aChidXMsIGRzdF92ZWN0b3IsIGRzdF9jb3VudCwgc3JjX3ZlY3Rvciwgc3Jj X2NvdW50LCAwKTsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBidXNfd3JpdGVfbm9ydGgocWVtdV9i dXMgKmJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IHFlbXVfaW92ZWMgKmRzdF92ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBkc3RfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBxZW11X2lvdmVjICpzcmNfdmVjdG9yLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgc3JjX2NvdW50KQoreworICAgIGJ1c19yd19ub3J0aChidXMsIGRz dF92ZWN0b3IsIGRzdF9jb3VudCwgc3JjX3ZlY3Rvciwgc3JjX2NvdW50LCAxKTsKK30KKwogLyog SVNBIGJ1cyAqLwogCiBleHRlcm4gdGFyZ2V0X3BoeXNfYWRkcl90IGlzYV9tZW1fYmFzZTsK ------=_Part_4087_21942967.1193503996202--