Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1803993imu; Wed, 21 Nov 2018 02:08:19 -0800 (PST) X-Google-Smtp-Source: AFSGD/WOgNdzJYNd5dFO84+mUi6sgBviJvf7obMx+ziOI43+PPWcsNysPQ/PXgquw4GshWJlZHJ/ X-Received: by 2002:a63:b34f:: with SMTP id x15mr5468405pgt.243.1542794899493; Wed, 21 Nov 2018 02:08:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542794899; cv=none; d=google.com; s=arc-20160816; b=CPl0w85UVMaTFf702yCNzdJuEbLFRxoNrlKupXw2n3sfsRdds5T5LzUDdTKZBxuLLT 6PesOiNXfUehVg0wtte1zBhuBgetKYTFP4xasu1whef/qSzkHYYBl9ozYBfwCL41RWxh DD108SrzdMLuB10K96Ur7VLZryBZT90CkNXmpgqMU/ZDMqLe+Y+McpzN0Av92nWfaHxt HXzc70iqQSMHCsvY1/08tsxEU/k0ld17a/i7eLQ+yj+AnTnpQ3isk86pJpiGZKjHq7vT c1gjH2cfzmSxZ+x04IhtQKTAZsR5QEen415q/E2cFQ6zd83CTqfoBE1ckV0j2GAPUHmM RfcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=7TV1cyFJrbgSieCjT1TN9utwsb1T51uNoUTa3Wr2Qi8=; b=AHhl5FSYVzuXWCYvzqZcNjPzqoyb19DQrA3Ts+9gqMiq+wBcI2O0yQWMWvq1jZAKeq lm2SGAg1IpgLntYvEpXue5reSoYv+Ze9dGm017fW25JSLQVqhZU+W7ishrk1URGAAPZX TS06QhUD1KnJoWSWnoiD4TEBCAhzChRuX8jJyppcUoJ3OeHS1/wGbGL3ojMY0OtVrTam FWNRpzH3ocdNQiUAiGy2GWhOz8b9Hbbj4M8yAXY89IblJjmHf/pImf4XCq+8EXMpo1n3 RQNYXluaO6GCKgm2RnStTOP3Dl7G2K92iu2Xp0UUwQmoFG7x4bEcqfNUT54AaJaHs6qP icrg== 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ca19si26475722plb.238.2018.11.21.02.08.03; Wed, 21 Nov 2018 02:08:19 -0800 (PST) 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729921AbeKUUjk (ORCPT + 99 others); Wed, 21 Nov 2018 15:39:40 -0500 Received: from mga18.intel.com ([134.134.136.126]:14789 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729792AbeKUUjj (ORCPT ); Wed, 21 Nov 2018 15:39:39 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Nov 2018 02:05:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,260,1539673200"; d="scan'208";a="275727123" Received: from btwcube1.sh.intel.com ([10.67.104.173]) by orsmga005.jf.intel.com with ESMTP; 21 Nov 2018 02:05:48 -0800 From: Tiwei Bie To: mst@redhat.com, jasowang@redhat.com, virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, virtio-dev@lists.oasis-open.org Cc: wexu@redhat.com, jfreimann@redhat.com, maxime.coquelin@redhat.com, tiwei.bie@intel.com Subject: [PATCH net-next v3 12/13] virtio_ring: disable packed ring on unsupported transports Date: Wed, 21 Nov 2018 18:03:29 +0800 Message-Id: <20181121100330.24846-13-tiwei.bie@intel.com> X-Mailer: git-send-email 2.14.5 In-Reply-To: <20181121100330.24846-1-tiwei.bie@intel.com> References: <20181121100330.24846-1-tiwei.bie@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, ccw, vop and remoteproc need some legacy virtio APIs to create or access virtio rings, which are not supported by packed ring. So disable packed ring on these transports for now. Signed-off-by: Tiwei Bie --- drivers/misc/mic/vop/vop_main.c | 13 +++++++++++++ drivers/remoteproc/remoteproc_virtio.c | 13 +++++++++++++ drivers/s390/virtio/virtio_ccw.c | 14 ++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/drivers/misc/mic/vop/vop_main.c b/drivers/misc/mic/vop/vop_main.c index 3633202e18f4..6b212c8b78e7 100644 --- a/drivers/misc/mic/vop/vop_main.c +++ b/drivers/misc/mic/vop/vop_main.c @@ -129,6 +129,16 @@ static u64 vop_get_features(struct virtio_device *vdev) return features; } +static void vop_transport_features(struct virtio_device *vdev) +{ + /* + * Packed ring isn't enabled on virtio_vop for now, + * because virtio_vop uses vring_new_virtqueue() which + * creates virtio rings on preallocated memory. + */ + __virtio_clear_bit(vdev, VIRTIO_F_RING_PACKED); +} + static int vop_finalize_features(struct virtio_device *vdev) { unsigned int i, bits; @@ -141,6 +151,9 @@ static int vop_finalize_features(struct virtio_device *vdev) /* Give virtio_ring a chance to accept features. */ vring_transport_features(vdev); + /* Give virtio_vop a chance to accept features. */ + vop_transport_features(vdev); + memset_io(out_features, 0, feature_len); bits = min_t(unsigned, feature_len, sizeof(vdev->features)) * 8; diff --git a/drivers/remoteproc/remoteproc_virtio.c b/drivers/remoteproc/remoteproc_virtio.c index de21f620b882..183fc42a510a 100644 --- a/drivers/remoteproc/remoteproc_virtio.c +++ b/drivers/remoteproc/remoteproc_virtio.c @@ -214,6 +214,16 @@ static u64 rproc_virtio_get_features(struct virtio_device *vdev) return rsc->dfeatures; } +static void rproc_transport_features(struct virtio_device *vdev) +{ + /* + * Packed ring isn't enabled on remoteproc for now, + * because remoteproc uses vring_new_virtqueue() which + * creates virtio rings on preallocated memory. + */ + __virtio_clear_bit(vdev, VIRTIO_F_RING_PACKED); +} + static int rproc_virtio_finalize_features(struct virtio_device *vdev) { struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); @@ -224,6 +234,9 @@ static int rproc_virtio_finalize_features(struct virtio_device *vdev) /* Give virtio_ring a chance to accept features */ vring_transport_features(vdev); + /* Give virtio_rproc a chance to accept features. */ + rproc_transport_features(vdev); + /* Make sure we don't have any features > 32 bits! */ BUG_ON((u32)vdev->features != vdev->features); diff --git a/drivers/s390/virtio/virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c index 97b6f197f007..406d1f64ad65 100644 --- a/drivers/s390/virtio/virtio_ccw.c +++ b/drivers/s390/virtio/virtio_ccw.c @@ -765,6 +765,17 @@ static u64 virtio_ccw_get_features(struct virtio_device *vdev) return rc; } +static void ccw_transport_features(struct virtio_device *vdev) +{ + /* + * Packed ring isn't enabled on virtio_ccw for now, + * because virtio_ccw uses some legacy accessors, + * e.g. virtqueue_get_avail() and virtqueue_get_used() + * which aren't available in packed ring currently. + */ + __virtio_clear_bit(vdev, VIRTIO_F_RING_PACKED); +} + static int virtio_ccw_finalize_features(struct virtio_device *vdev) { struct virtio_ccw_device *vcdev = to_vc_device(vdev); @@ -791,6 +802,9 @@ static int virtio_ccw_finalize_features(struct virtio_device *vdev) /* Give virtio_ring a chance to accept features. */ vring_transport_features(vdev); + /* Give virtio_ccw a chance to accept features. */ + ccw_transport_features(vdev); + features->index = 0; features->features = cpu_to_le32((u32)vdev->features); /* Write the first half of the feature bits to the host. */ -- 2.14.5