From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B39C0C07E99 for ; Mon, 12 Jul 2021 14:18:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 921CD610CB for ; Mon, 12 Jul 2021 14:18:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234781AbhGLOVq (ORCPT ); Mon, 12 Jul 2021 10:21:46 -0400 Received: from foss.arm.com ([217.140.110.172]:55818 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233480AbhGLOVp (ORCPT ); Mon, 12 Jul 2021 10:21:45 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E9F3F1FB; Mon, 12 Jul 2021 07:18:56 -0700 (PDT) Received: from e120937-lin.home (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 724FD3F774; Mon, 12 Jul 2021 07:18:53 -0700 (PDT) From: Cristian Marussi To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, virtualization@lists.linux-foundation.org, virtio-dev@lists.oasis-open.org Cc: sudeep.holla@arm.com, james.quinlan@broadcom.com, Jonathan.Cameron@Huawei.com, f.fainelli@gmail.com, etienne.carriere@linaro.org, vincent.guittot@linaro.org, souvik.chakravarty@arm.com, cristian.marussi@arm.com, igor.skalkin@opensynergy.com, peter.hilber@opensynergy.com, alex.bennee@linaro.org, jean-philippe@linaro.org, mikhail.golubev@opensynergy.com, anton.yakovlev@opensynergy.com, Vasyl.Vavrychuk@opensynergy.com, Andriy.Tryshnivskyy@opensynergy.com Subject: [PATCH v6 00/17] Introduce SCMI transport based on VirtIO Date: Mon, 12 Jul 2021 15:18:16 +0100 Message-Id: <20210712141833.6628-1-cristian.marussi@arm.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi all, While reworking this series starting from the work done up to V3 by OpenSynergy, I am keeping the original autorship and list distribution unchanged. The main aim of this rework, as said, is to simplify where possible the SCMI VirtIO support added in V3 by adding at first some new general mechanisms in the SCMI Transport layer. Indeed, after some initial small fixes, patches 05/06/07/08 add such new additional mechanisms to the SCMI core to ease implementation of more complex transports like virtio, while also addressing a few general issues already potentially affecting existing transports. In terms of rework I dropped original V3 patches 05/06/07/08/12 as no more needed, and modified where needed the remaining original patches to take advantage of the above mentioned new SCMI transport features. DT bindings patch has been ported on top of freshly YAML converted arm,scmi bindings. Moreover, since V5 I dropped support for polling mode from the virtio-scmi transport, since it is an optional general mechanism provided by the core to allow transports lacking a completion IRQ to work and it seemed a needless addition/complication in the context of virtio transport. Additionally, in V5 I could also simplify a bit the virtio transport probing sequence starting from the observation that, by the VirtIO spec, in fact, only one single SCMI VirtIO device can possibly exist on a system. The series has been tested using an emulated fake SCMI device and also a proper SCP-fw stack running through QEMU vhost-users, with the SCMI stack compiled, in both cases, as builtin and as a loadable module, running tests against mocked SCMI Sensors using HWMON and IIO interfaces to check the functionality of notifications and sync/async commands. Virtio-scmi support has been exercised in the following testing scenario on a JUNO board: - normal sync/async command transfers - notifications - concurrent delivery of correlated response and delayed responses - out-of-order delivery of delayed responses before related responses - unexpected delayed response delivery for sync commands - late delivery of timed-out responses and delayed responses Some basic regression testing against mailbox transport has been performed for commands and notifications too. No sensible overhead in total handling time of commands and notifications has been observed, even though this series do indeed add a considerable amount of code to execute on TX path. More test and measurements could be needed in these regards. This series is based on top of v5.14-rc1. Any feedback/testing is welcome :D Thanks, Cristian --- V5 --> V6: - removed delegated xfers and its usage - add and use *priv optional parameter in scmi_rx_callback() - made .poll_done and .clear_channel ops optional V4 --> V5: - removed msg raw_payload helpers - reworked msg helpers to use xfer->priv reference - simplified SCMI device probe sequence (one static device) - added new SCMI Kconfig layout - removed SCMI virtio polling support V3 --> V4: - using new delegated xfers support and monotonically increasing tokens in virtio transport - ported SCMI virtio transport DT bindings to YAML format - added virtio-scmi polling support - added delegated xfers support Cristian Marussi (11): firmware: arm_scmi: Avoid padding in sensor message structure firmware: arm_scmi: Fix max pending messages boundary check firmware: arm_scmi: Add support for type handling in common functions firmware: arm_scmi: Remove scmi_dump_header_dbg() helper firmware: arm_scmi: Add transport optional init/exit support firmware: arm_scmi: Introduce monotonically increasing tokens firmware: arm_scmi: Handle concurrent and out-of-order messages firmware: arm_scmi: Add priv parameter to scmi_rx_callback firmware: arm_scmi: Make .clear_channel optional firmware: arm_scmi: Make polling mode optional firmware: arm_scmi: Make SCMI transports configurable Igor Skalkin (4): firmware: arm_scmi: Make shmem support optional for transports firmware: arm_scmi: Add method to override max message number dt-bindings: arm: Add virtio transport for SCMI firmware: arm_scmi: Add virtio transport Peter Hilber (2): firmware: arm_scmi: Add message passing abstractions for transports firmware: arm_scmi: Add optional link_supplier() transport op .../bindings/firmware/arm,scmi.yaml | 8 +- MAINTAINERS | 1 + drivers/firmware/Kconfig | 34 +- drivers/firmware/arm_scmi/Kconfig | 97 +++ drivers/firmware/arm_scmi/Makefile | 8 +- drivers/firmware/arm_scmi/common.h | 94 ++- drivers/firmware/arm_scmi/driver.c | 651 +++++++++++++++--- drivers/firmware/arm_scmi/mailbox.c | 2 +- drivers/firmware/arm_scmi/msg.c | 113 +++ drivers/firmware/arm_scmi/sensors.c | 6 +- drivers/firmware/arm_scmi/smc.c | 3 +- drivers/firmware/arm_scmi/virtio.c | 491 +++++++++++++ include/uapi/linux/virtio_ids.h | 1 + include/uapi/linux/virtio_scmi.h | 24 + 14 files changed, 1389 insertions(+), 144 deletions(-) create mode 100644 drivers/firmware/arm_scmi/Kconfig create mode 100644 drivers/firmware/arm_scmi/msg.c create mode 100644 drivers/firmware/arm_scmi/virtio.c create mode 100644 include/uapi/linux/virtio_scmi.h -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F888C07E99 for ; Mon, 12 Jul 2021 14:21:13 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 67B5661026 for ; Mon, 12 Jul 2021 14:21:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 67B5661026 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:Subject:Cc:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=yOTwSpV7vjLiSbATioyfru+YihtIlJTesO8ir0VQqCQ=; b=2nhXotCV1/rD9D T+qAB4JPJROnou3ctnPIY8IDgj3OAlHOiikWulDyUWskt6f6V2k4QufEutnmfmKkfxIHmJCd//Kfp 3BhPQTim45peAAxVHpxcTDuqAbMx16vvRdtrVK7gKpRnT+MNPCc0SKCY3Gl9VIjgaapCq89XJgRh6 VPrvnUvfMnpctgcMWIvtXwIbGdFtRv3YcwGzkH97TUbvwwCDz/rg8QfstLR1m1lrRO8AGz8TRYiDx fnlspffO5IYxFo9kdOwRcjbCJw0RRsmiRbtCsI+YIHZc8lq17WthAC3PuQ+RuiTrq/mmfgur6a80b JetvvAwPnp68LPlwY3Ww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m2wm6-007U3C-JR; Mon, 12 Jul 2021 14:19:10 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m2wm2-007U1K-AP for linux-arm-kernel@lists.infradead.org; Mon, 12 Jul 2021 14:19:08 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E9F3F1FB; Mon, 12 Jul 2021 07:18:56 -0700 (PDT) Received: from e120937-lin.home (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 724FD3F774; Mon, 12 Jul 2021 07:18:53 -0700 (PDT) From: Cristian Marussi To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, virtualization@lists.linux-foundation.org, virtio-dev@lists.oasis-open.org Cc: sudeep.holla@arm.com, james.quinlan@broadcom.com, Jonathan.Cameron@Huawei.com, f.fainelli@gmail.com, etienne.carriere@linaro.org, vincent.guittot@linaro.org, souvik.chakravarty@arm.com, cristian.marussi@arm.com, igor.skalkin@opensynergy.com, peter.hilber@opensynergy.com, alex.bennee@linaro.org, jean-philippe@linaro.org, mikhail.golubev@opensynergy.com, anton.yakovlev@opensynergy.com, Vasyl.Vavrychuk@opensynergy.com, Andriy.Tryshnivskyy@opensynergy.com Subject: [PATCH v6 00/17] Introduce SCMI transport based on VirtIO Date: Mon, 12 Jul 2021 15:18:16 +0100 Message-Id: <20210712141833.6628-1-cristian.marussi@arm.com> X-Mailer: git-send-email 2.17.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210712_071906_503913_4C4F6814 X-CRM114-Status: GOOD ( 18.17 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi all, While reworking this series starting from the work done up to V3 by OpenSynergy, I am keeping the original autorship and list distribution unchanged. The main aim of this rework, as said, is to simplify where possible the SCMI VirtIO support added in V3 by adding at first some new general mechanisms in the SCMI Transport layer. Indeed, after some initial small fixes, patches 05/06/07/08 add such new additional mechanisms to the SCMI core to ease implementation of more complex transports like virtio, while also addressing a few general issues already potentially affecting existing transports. In terms of rework I dropped original V3 patches 05/06/07/08/12 as no more needed, and modified where needed the remaining original patches to take advantage of the above mentioned new SCMI transport features. DT bindings patch has been ported on top of freshly YAML converted arm,scmi bindings. Moreover, since V5 I dropped support for polling mode from the virtio-scmi transport, since it is an optional general mechanism provided by the core to allow transports lacking a completion IRQ to work and it seemed a needless addition/complication in the context of virtio transport. Additionally, in V5 I could also simplify a bit the virtio transport probing sequence starting from the observation that, by the VirtIO spec, in fact, only one single SCMI VirtIO device can possibly exist on a system. The series has been tested using an emulated fake SCMI device and also a proper SCP-fw stack running through QEMU vhost-users, with the SCMI stack compiled, in both cases, as builtin and as a loadable module, running tests against mocked SCMI Sensors using HWMON and IIO interfaces to check the functionality of notifications and sync/async commands. Virtio-scmi support has been exercised in the following testing scenario on a JUNO board: - normal sync/async command transfers - notifications - concurrent delivery of correlated response and delayed responses - out-of-order delivery of delayed responses before related responses - unexpected delayed response delivery for sync commands - late delivery of timed-out responses and delayed responses Some basic regression testing against mailbox transport has been performed for commands and notifications too. No sensible overhead in total handling time of commands and notifications has been observed, even though this series do indeed add a considerable amount of code to execute on TX path. More test and measurements could be needed in these regards. This series is based on top of v5.14-rc1. Any feedback/testing is welcome :D Thanks, Cristian --- V5 --> V6: - removed delegated xfers and its usage - add and use *priv optional parameter in scmi_rx_callback() - made .poll_done and .clear_channel ops optional V4 --> V5: - removed msg raw_payload helpers - reworked msg helpers to use xfer->priv reference - simplified SCMI device probe sequence (one static device) - added new SCMI Kconfig layout - removed SCMI virtio polling support V3 --> V4: - using new delegated xfers support and monotonically increasing tokens in virtio transport - ported SCMI virtio transport DT bindings to YAML format - added virtio-scmi polling support - added delegated xfers support Cristian Marussi (11): firmware: arm_scmi: Avoid padding in sensor message structure firmware: arm_scmi: Fix max pending messages boundary check firmware: arm_scmi: Add support for type handling in common functions firmware: arm_scmi: Remove scmi_dump_header_dbg() helper firmware: arm_scmi: Add transport optional init/exit support firmware: arm_scmi: Introduce monotonically increasing tokens firmware: arm_scmi: Handle concurrent and out-of-order messages firmware: arm_scmi: Add priv parameter to scmi_rx_callback firmware: arm_scmi: Make .clear_channel optional firmware: arm_scmi: Make polling mode optional firmware: arm_scmi: Make SCMI transports configurable Igor Skalkin (4): firmware: arm_scmi: Make shmem support optional for transports firmware: arm_scmi: Add method to override max message number dt-bindings: arm: Add virtio transport for SCMI firmware: arm_scmi: Add virtio transport Peter Hilber (2): firmware: arm_scmi: Add message passing abstractions for transports firmware: arm_scmi: Add optional link_supplier() transport op .../bindings/firmware/arm,scmi.yaml | 8 +- MAINTAINERS | 1 + drivers/firmware/Kconfig | 34 +- drivers/firmware/arm_scmi/Kconfig | 97 +++ drivers/firmware/arm_scmi/Makefile | 8 +- drivers/firmware/arm_scmi/common.h | 94 ++- drivers/firmware/arm_scmi/driver.c | 651 +++++++++++++++--- drivers/firmware/arm_scmi/mailbox.c | 2 +- drivers/firmware/arm_scmi/msg.c | 113 +++ drivers/firmware/arm_scmi/sensors.c | 6 +- drivers/firmware/arm_scmi/smc.c | 3 +- drivers/firmware/arm_scmi/virtio.c | 491 +++++++++++++ include/uapi/linux/virtio_ids.h | 1 + include/uapi/linux/virtio_scmi.h | 24 + 14 files changed, 1389 insertions(+), 144 deletions(-) create mode 100644 drivers/firmware/arm_scmi/Kconfig create mode 100644 drivers/firmware/arm_scmi/msg.c create mode 100644 drivers/firmware/arm_scmi/virtio.c create mode 100644 include/uapi/linux/virtio_scmi.h -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel