Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1940419imm; Wed, 16 May 2018 05:33:08 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrNvGxT+HDhux3Cd8WEYBaG8bCtH8CJSbJisS/Alzbj9IajBt3uuF4ZeqanLjCfTN7QSeO5 X-Received: by 2002:a65:5647:: with SMTP id m7-v6mr587657pgs.177.1526473987947; Wed, 16 May 2018 05:33:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526473987; cv=none; d=google.com; s=arc-20160816; b=HImjDXTPRjRqydom5tGYgaCcSQHVh3NunyIRquuJh02L0NyCN+QanvFfVRQI7Wod8w V2d8rA43LgMlYh5t36tDaPQgfCUUGkWJKXwwa23uxQTR3EJAVoPjZaMIdajF8WT7r7I1 dEwRP/tIV2Dli7YxSPwfZ5RwC1MLAzJp+tIIt8jEIc6dl48VZMjpaTiiGWNtn06zCHGB QQJ6++5hLxHJkC2MEI0vy0da2RN49BOmpRVR62HmU7NJYzQGy8y19J8FfBPYNmCvZc0Z C+u7QzIR1F5M+p0v4CvwOcvD/RDoeVzsu9LJnVn2vtq0IX+0rU9JzG6JXxLVbbfjUjWC EXrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=GJ0a8sr516zyEkhQQ35CXtAlwemWOMQh+XHiilEii4w=; b=B4lUJK9662BLyIS/jFkyApu3TKuN0sgLvM2mSb9khx+oZA1TE3kFNWbB8q7FMuoLYq E/9uRyI8bwSwHLtiCBR5+tBSF5I8nHhm69EDwLr+ZtObI3/8+rk6BzqdQylxZZS8RRhX zpNxSTR8ygMugKZ+uL8xhZ4VyTSQd6MD+WUWbQ3JjFzgKSnszpX7hoGcrq4Xf3nBoIxy 8K2r48wWXUunQlnY4eHnpwoxRMRXOjH/Wz9kKsC42QO8S2XyAP3p73uI5ACpsy1ZN4Up kiry06+GQwcN6JZVdNpS8lgj3sD9vYzSUqiV80YnElSzQh0wr3UkCXYff7cunOXksef9 P7aw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 127-v6si2632738pfe.49.2018.05.16.05.32.52; Wed, 16 May 2018 05:33:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752241AbeEPMcb (ORCPT + 99 others); Wed, 16 May 2018 08:32:31 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:55448 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752026AbeEPMc3 (ORCPT ); Wed, 16 May 2018 08:32:29 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 49687859A3; Wed, 16 May 2018 12:32:29 +0000 (UTC) Received: from jason-ThinkPad-T450s.redhat.com (ovpn-12-64.pek2.redhat.com [10.72.12.64]) by smtp.corp.redhat.com (Postfix) with ESMTP id C21092166BAD; Wed, 16 May 2018 12:32:24 +0000 (UTC) From: Jason Wang To: mst@redhat.com, jasowang@redhat.com Cc: kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, jfreimann@redhat.com, wexu@redhat.com, tiwei.bie@intel.com Subject: [RFC V4 PATCH 0/8] Packed ring layout for vhost Date: Wed, 16 May 2018 20:32:13 +0800 Message-Id: <1526473941-16199-1-git-send-email-jasowang@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Wed, 16 May 2018 12:32:29 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Wed, 16 May 2018 12:32:29 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'jasowang@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi all: This RFC implement packed ring layout. The code were tested with Tiwei's RFC V3 ahttps://lkml.org/lkml/2018/4/25/34. Some fixups and tweaks were needed on top of Tiwei's code to make it run for event index. Pktgen reports about 20% improvement on PPS (event index is off). More testing is ongoing. Notes for tester: - Start from this version, vhost need qemu co-operation to work correctly. Or you can comment out the packed specific code for GET/SET_VRING_BASE. Changes from V3: - Fix math on event idx checking - Sync last avail wrap counter through GET/SET_VRING_BASE - remove desc_event prefix in the driver/device structure Changes from V2: - do not use & in checking desc_event_flags - off should be most significant bit - remove the workaround of mergeable buffer for dpdk prototype - id should be in the last descriptor in the chain - keep _F_WRITE for write descriptor when adding used - device flags updating should use ADDR_USED type - return error on unexpected unavail descriptor in a chain - return false in vhost_ve_avail_empty is descriptor is available - track last seen avail_wrap_counter - correctly examine available descriptor in get_indirect_packed() - vhost_idx_diff should return u16 instead of bool Changes from V1: - Refactor vhost used elem code to avoid open coding on used elem - Event suppression support (compile test only). - Indirect descriptor support (compile test only). - Zerocopy support. - vIOMMU support. - SCSI/VSOCK support (compile test only). - Fix several bugs Jason Wang (8): vhost: move get_rx_bufs to vhost.c vhost: hide used ring layout from device vhost: do not use vring_used_elem vhost_net: do not explicitly manipulate vhost_used_elem vhost: vhost_put_user() can accept metadata type virtio: introduce packed ring defines vhost: packed ring support vhost: event suppression for packed ring drivers/vhost/net.c | 136 ++---- drivers/vhost/scsi.c | 62 +-- drivers/vhost/vhost.c | 861 ++++++++++++++++++++++++++++++++----- drivers/vhost/vhost.h | 47 +- drivers/vhost/vsock.c | 42 +- include/uapi/linux/virtio_config.h | 9 + include/uapi/linux/virtio_ring.h | 32 ++ 7 files changed, 928 insertions(+), 261 deletions(-) -- 2.7.4