From patchwork Thu Jul 14 21:29:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elliot Berman X-Patchwork-Id: 12918489 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 9EF6DC43334 for ; Thu, 14 Jul 2022 21:31:31 +0000 (UTC) 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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: 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: List-Owner; bh=tLtNh+WbreR/LT78PQ6tCW4XmH3mNVKXG/lMwtK/CGA=; b=Dehxudat5fgMVn TyDIiMT89y65ZusSW5bOJ05kIGDup6BfYN6gLQjA81jDadPeFWFDkpYUAAU6s3DW6cp/tM0BrnhtP 3THtdFHgrfTvbbgeuVpdx9cd2zgiyDlZEqqvkvW8YFGGwpDyLHsSu9NMk+Wh3mHy01avpDaal8x5Y wIG5WXrXR9FNZNpr2mbQigxSOB+Kit8xu/oOu9VdBe4n65A52BgWhvtl9VBPN2ZSz99iWq/1gklj6 LNATvIWHK/356DqU493gRqI2ooWSXWbboeYdJeObfWyOgTHQjLH17BUb0rF+o+AKu0SI1QnaY5Rik n2H4AuUUm9gTifAxGU+A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oC6Pc-001eBe-PD; Thu, 14 Jul 2022 21:30:20 +0000 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oC6PZ-001e5E-Gj for linux-arm-kernel@lists.infradead.org; Thu, 14 Jul 2022 21:30:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1657834217; x=1689370217; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ohTWDd1PCrHN5v0aqrbVJeHwH3BlN0RoL4tMpz77sGI=; b=xoVfRCweRUF++9xnSHrQ+VNV6eBDgH8eV/TNH1s74X1031bhQ2CzZM/6 u01RYFR4Jn0fuqHOVQrK4YuY2EeqSuZDx2k5vLpgMTjm5G1Jt5r76IS3T l6C9dYKvBCMlPJeSrz3dNSgvNCSqI8hbwgoUYbwLx+yOtsCj4KSwjfyl7 Y=; Received: from unknown (HELO ironmsg01-sd.qualcomm.com) ([10.53.140.141]) by alexa-out-sd-02.qualcomm.com with ESMTP; 14 Jul 2022 14:30:04 -0700 X-QCInternal: smtphost Received: from nasanex01b.na.qualcomm.com ([10.46.141.250]) by ironmsg01-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jul 2022 14:30:03 -0700 Received: from hu-eberman-lv.qualcomm.com (10.49.16.6) by nasanex01b.na.qualcomm.com (10.46.141.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Thu, 14 Jul 2022 14:30:03 -0700 From: Elliot Berman To: Bjorn Andersson , CC: Elliot Berman , Trilok Soni , Murali Nalajala , Srivatsa Vaddagiri , Carl van Schaik , Andy Gross , , Lorenzo Pieralisi , Sudeep Holla , "Marc Zyngier" , Rob Herring , "Krzysztof Kozlowski" , Jonathan Corbet , Will Deacon , Catalin Marinas , , Subject: [PATCH v2 00/11] Gunyah Hypervisor drivers Date: Thu, 14 Jul 2022 14:29:29 -0700 Message-ID: <20220714212940.2988436-1-quic_eberman@quicinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220223233729.1571114-1-quic_eberman@quicinc.com> References: <20220223233729.1571114-1-quic_eberman@quicinc.com> MIME-Version: 1.0 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) To nasanex01b.na.qualcomm.com (10.46.141.250) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220714_143017_609403_F9948223 X-CRM114-Status: GOOD ( 15.88 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Gunyah is a Type-1 hypervisor independent of any high-level OS kernel, and runs in a higher CPU privilege level. It does not depend on any lower-privileged OS kernel/code for its core functionality. This increases its security and can support a much smaller trusted computing base than Type-2 hypervisors. This series adds the initial support for Gunyah hypercalls, IPC via message queues, communication with the Gunyah Resource Manager to enable Gunyah's paravirtualized console. Gunyah is an open source hypervisor. The source repo is available at https://github.com/quic/gunyah-hypervisor. This series enables guest awareness of Gunyah and establishes the basic architecture of Gunyah capabilities in the Linux kernel. As an end-to-end use case, a TTY driver for the Gunyah-based console is added which can demonstrate communication with the resource manager. In a future series, we intend to add support for loading secondary VMs. To self-test the console driver without other VMs, reads and writes to /dev/ttyGH0 will be sent to /dev/ttyGH1 via the hypervisor. In a system with multiple VMs, a secondary VM could use ttyGH0 as its boot console. The primary VM would be able to access that secondary VM's console via a ttyGHx. Changes in v2: - DT bindings clean up - Switch hypercalls to follow SMCCC Elliot Berman (11): docs: gunyah: Introduce Gunyah Hypervisor dt-bindings: Add binding for gunyah hypervisor arm64: gunyah: Add Gunyah hypercalls ABI gunyah: Common types and error codes for Gunyah hypercalls virt: gunyah: Add sysfs nodes virt: gunyah: Add capabilities bus and devices gunyah: msgq: Add Gunyah message queues gunyah: rsc_mgr: Add resource manager RPC core gunyah: rsc_mgr: Add auxiliary devices for console gunyah: rsc_mgr: Add RPC for console services gunyah: Add tty console driver for RM Console Serivces .../ABI/testing/sysfs-hypervisor-gunyah | 37 + .../bindings/firmware/gunyah-hypervisor.yaml | 84 +++ Documentation/virt/gunyah/index.rst | 99 +++ Documentation/virt/gunyah/message-queue.rst | 52 ++ Documentation/virt/index.rst | 1 + MAINTAINERS | 12 + arch/arm64/include/asm/gunyah.h | 142 ++++ drivers/virt/Kconfig | 1 + drivers/virt/Makefile | 1 + drivers/virt/gunyah/Kconfig | 24 + drivers/virt/gunyah/Makefile | 8 + drivers/virt/gunyah/device.c | 108 +++ drivers/virt/gunyah/gunyah_private.h | 18 + drivers/virt/gunyah/msgq.c | 223 ++++++ drivers/virt/gunyah/rsc_mgr.c | 682 ++++++++++++++++++ drivers/virt/gunyah/rsc_mgr.h | 56 ++ drivers/virt/gunyah/rsc_mgr_console.c | 405 +++++++++++ drivers/virt/gunyah/rsc_mgr_rpc.c | 151 ++++ drivers/virt/gunyah/sysfs.c | 176 +++++ include/linux/gunyah.h | 133 ++++ include/linux/gunyah_rsc_mgr.h | 45 ++ 21 files changed, 2458 insertions(+) create mode 100644 Documentation/ABI/testing/sysfs-hypervisor-gunyah create mode 100644 Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml create mode 100644 Documentation/virt/gunyah/index.rst create mode 100644 Documentation/virt/gunyah/message-queue.rst create mode 100644 arch/arm64/include/asm/gunyah.h create mode 100644 drivers/virt/gunyah/Kconfig create mode 100644 drivers/virt/gunyah/Makefile create mode 100644 drivers/virt/gunyah/device.c create mode 100644 drivers/virt/gunyah/gunyah_private.h create mode 100644 drivers/virt/gunyah/msgq.c create mode 100644 drivers/virt/gunyah/rsc_mgr.c create mode 100644 drivers/virt/gunyah/rsc_mgr.h create mode 100644 drivers/virt/gunyah/rsc_mgr_console.c create mode 100644 drivers/virt/gunyah/rsc_mgr_rpc.c create mode 100644 drivers/virt/gunyah/sysfs.c create mode 100644 include/linux/gunyah.h create mode 100644 include/linux/gunyah_rsc_mgr.h