Received: by 2002:a05:7412:b130:b0:e2:908c:2ebd with SMTP id az48csp2130595rdb; Mon, 20 Nov 2023 02:59:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IEKGk5qAUjM7E1fbfwL35YmL1i+9sI1J7VCbOm1u6ZQlCaxSKwLvF6La84INiM5tbQR9JWg X-Received: by 2002:a05:6a20:3d13:b0:187:a9b0:434b with SMTP id y19-20020a056a203d1300b00187a9b0434bmr8662177pzi.4.1700477958819; Mon, 20 Nov 2023 02:59:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700477958; cv=none; d=google.com; s=arc-20160816; b=rq8UjVliuZK3MIF2P88pTn1g77ly5iXLNXFYDvCJsMotN02sLUxdIRTMVFnOIxua7b eHh4j5iVcp4k7kHt9vU3kTLqRpJucMsBP0LEdptr8lO9EphU/oTMeQBuHSS7LAXOg3Ih +71ryxyEkCPuUwnmN3gzFagajqWuV7tjNBr30s+gfjAgYUZ6unnJJ9QCYdYjquvYlCVJ Sme9vIx1Ngrtz4WKbdNTE546409AEVNORwa02T3b82BDuXCEn1o1AIQhE+2NyW40bvLy BhWsoyDytmDAFUKRWIwJ5fxIAtTUqN80pTB/V1IFR6j5cV/05hVoKYLR8JFIGG7TT9+v xAIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=hss0DScungQG3wuEN+tDn4zevM2VhdEJWx+ngv2QB2g=; fh=SOLhUlWGmKBlbXDWqVjVkTQyv+AXclJhbL5GRYCgvFU=; b=uTxtaNPnruDh0oHfayZuTF1JKrezXzoEzaXw0WWEqu2Zrd5TwdRTrCBIbP21PgNQao RmzmhnVd1oEwBg592HZuPEKrFQfYutb/07+0HnWFqqU3qTx1HcNYwLGqYIyUVk7frGxH HbbvMJOlHYYnuop6CxIFr4wf9Ko2vfRXHuMgLkcSic7KEn7iPg7tZfCa6gxwVoFiSy4X 6JtFqv8sPAmqj+X7q9+saUphXODQT04tocfAjJh6VWpftU2BRCo2TxIsIl2sJD6Fcenc gsK1UY09KUBfiWtOhxjPUCmW7CpXb2iB0EN1f6LqmOBAoStRd/fnUE7b9XVHb3dVzP95 VRfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=h5alUNaa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id m66-20020a632645000000b005bd3ca6c398si8168066pgm.736.2023.11.20.02.59.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Nov 2023 02:59:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=h5alUNaa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 4647E805FD76; Mon, 20 Nov 2023 02:59:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232963AbjKTK7A (ORCPT + 99 others); Mon, 20 Nov 2023 05:59:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232789AbjKTK66 (ORCPT ); Mon, 20 Nov 2023 05:58:58 -0500 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A71529C; Mon, 20 Nov 2023 02:58:54 -0800 (PST) Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-5bddf66ed63so2877690a12.1; Mon, 20 Nov 2023 02:58:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700477934; x=1701082734; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=hss0DScungQG3wuEN+tDn4zevM2VhdEJWx+ngv2QB2g=; b=h5alUNaa6bBArrEjXy7zfYJ9s2J+tMGXyqjDyzHuPWqFJK4Dt/RXUtIGQyeS5S0sU6 FSqLZPUpyXNK1nWFqJb/G1hxBQOVIj9II/nOQE/Tgr8GHgWeZbcrNfQW8TsU24fIS2wL hxTkVD8en2hMoLSk8xR6n7H6uT21hzwQzmS0sVxyuPOgbc61giqFLm5tesF1Sm8o5X8A JYCEvP6c3RGsXTKdpk1k09R0Xl0u7vwZX/+MUFCf8O4XFA5X8MFK6ElFGWmd+wFyBqrK HLMmZEP6Ip9cIu9vklH9FJdEm8I4bGz7NgHejFa5O1QzVBJlMmzjyhIXxMM/CTmwmaGV KTow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700477934; x=1701082734; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hss0DScungQG3wuEN+tDn4zevM2VhdEJWx+ngv2QB2g=; b=VsgoOMU+hxuyvKt3gGaMQgz05ChbYmyvbebv41ezDNDr18i64lOSSq1oVPvsn2/riv aUjt5hi2RE03jICFRy/jXmneD1vxKsqxPj4CPHgruXXqhiOHXBhoTqUUeAOXBPHG4emG UE/oPGcEkeYxiJApI9vUV2+1yIT6E8s30UBl2z/EHyL15x2xPd8S6Ktp8VWFooNawp1I fw7fqbQnM3KzROJ7htg0RVhJYuhs6jcS7jhGzo+29yfHKxESibxRUkSCX68oXcruE1KR vNYA8dxWfhKtrD6/fqwrjg/r6MY7FKX9oqLkpg6h+cAhPqan6FiU/G6LlDPdXKqt53VL riog== X-Gm-Message-State: AOJu0YyaZyv7Rh4K1DanXgTeYd9JMiEa3SQJ9kCQEf+ObGxEWoXCSYGT 8Ja9klLM1epqptWLNYD+lUI= X-Received: by 2002:a05:6a20:3d87:b0:187:2b7b:1b87 with SMTP id s7-20020a056a203d8700b001872b7b1b87mr9778084pzi.21.1700477933855; Mon, 20 Nov 2023 02:58:53 -0800 (PST) Received: from archie.me ([103.131.18.64]) by smtp.gmail.com with ESMTPSA id v10-20020aa7850a000000b006be4bb0d2dcsm6010021pfn.149.2023.11.20.02.58.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Nov 2023 02:58:53 -0800 (PST) Received: by archie.me (Postfix, from userid 1000) id 667ED101D8174; Mon, 20 Nov 2023 17:58:51 +0700 (WIB) Date: Mon, 20 Nov 2023 17:58:51 +0700 From: Bagas Sanjaya To: Yi-De Wu , Yingshiuan Pan , Ze-Yu Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Corbet , Catalin Marinas , Will Deacon , Matthias Brugger , AngeloGioacchino Del Regno Cc: Arnd Bergmann , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, David Bradil , Trilok Soni , Jade Shih , Ivan Tseng , My Chuang , Shawn Hsiao , PeiLun Suei , Liju Chen , Willix Yeh , Kevenny Hsieh Subject: Re: [PATCH v7 01/16] docs: geniezone: Introduce GenieZone hypervisor Message-ID: References: <20231116152756.4250-1-yi-de.wu@mediatek.com> <20231116152756.4250-2-yi-de.wu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20231116152756.4250-2-yi-de.wu@mediatek.com> X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 20 Nov 2023 02:59:15 -0800 (PST) On Thu, Nov 16, 2023 at 11:27:41PM +0800, Yi-De Wu wrote: > diff --git a/Documentation/virt/geniezone/introduction.rst b/Documentation/virt/geniezone/introduction.rst > new file mode 100644 > index 000000000000..fb9fa41bcfb8 > --- /dev/null > +++ b/Documentation/virt/geniezone/introduction.rst > @@ -0,0 +1,86 @@ > +.. SPDX-License-Identifier: GPL-2.0 > + > +====================== > +GenieZone Introduction > +====================== > + > +Overview > +======== > +GenieZone hypervisor(gzvm) is a type-1 hypervisor that supports various virtual "... hypervisor (gzvm) ..." > +machine types and provides security features such as TEE-like scenarios and > +secure boot. It can create guest VMs for security use cases and has > +virtualization capabilities for both platform and interrupt. Although the > +hypervisor can be booted independently, it requires the assistance of GenieZone > +hypervisor kernel driver(gzvm-ko) to leverage the ability of Linux kernel for "hypervisor kernel driver (also named gzvm) ..." > +vCPU scheduling, memory management, inter-VM communication and virtio backend > +support. > + > +Supported Architecture > +====================== > +GenieZone now only supports MediaTek ARM64 SoC. > + > +Features > +======== > + > +- vCPU Management > + > +VM manager aims to provide vCPUs on the basis of time sharing on physical CPUs. > +It requires Linux kernel in host VM for vCPU scheduling and VM power management. > + > +- Memory Management > + > +Direct use of physical memory from VMs is forbidden and designed to be dictated > +to the privilege models managed by GenieZone hypervisor for security reason. > +With the help of gzvm-ko, the hypervisor would be able to manipulate memory as s/gzvm-ko/gzvm module/g > +objects. > + > +- Virtual Platform > + > +We manage to emulate a virtual mobile platform for guest OS running on guest > +VM. The platform supports various architecture-defined devices, such as > +virtual arch timer, GIC, MMIO, PSCI, and exception watching...etc. > + > +- Inter-VM Communication > + > +Communication among guest VMs was provided mainly on RPC. More communication > +mechanisms were to be provided in the future based on VirtIO-vsock. > + > +- Device Virtualization > + > +The solution is provided using the well-known VirtIO. The gzvm-ko would > +redirect MMIO traps back to VMM where the virtual devices are mostly emulated. > +Ioeventfd is implemented using eventfd for signaling host VM that some IO > +events in guest VMs need to be processed. > + > +- Interrupt virtualization > + > +All Interrupts during some guest VMs running would be handled by GenieZone > +hypervisor with the help of gzvm-ko, both virtual and physical ones. In case > +there's no guest VM running out there, physical interrupts would be handled by > +host VM directly for performance reason. Irqfd is also implemented using > +eventfd for accepting vIRQ requests in gzvm-ko. > + > +Platform architecture component > +=============================== > + > +- vm > + > +The vm component is responsible for setting up the capability and memory > +management for the protected VMs. The capability is mainly about the lifecycle > +control and boot context initialization. And the memory management is highly > +integrated with ARM 2-stage translation tables to convert VA to IPA to PA under > +proper security measures required by protected VMs. > + > +- vcpu > + > +The vcpu component is the core of virtualizing aarch64 physical CPU runnable, > +and it controls the vCPU lifecycle including creating, running and destroying. > +With self-defined exit handler, the vm component would be able to act > +accordingly before terminated. > + > +- vgic > + > +The vgic component exposes control interfaces to Linux kernel via irqchip, and > +we intend to support all SPI, PPI, and SGI. When it comes to virtual > +interrupts, the GenieZone hypervisor would write to list registers and trigger > +vIRQ injection in guest VMs via GIC. Descriptions for feature lists can be aligned: ---- >8 ---- diff --git a/Documentation/virt/geniezone/introduction.rst b/Documentation/virt/geniezone/introduction.rst index fb9fa41bcfb8b3..f37ddf4e979992 100644 --- a/Documentation/virt/geniezone/introduction.rst +++ b/Documentation/virt/geniezone/introduction.rst @@ -24,63 +24,64 @@ Features - vCPU Management -VM manager aims to provide vCPUs on the basis of time sharing on physical CPUs. -It requires Linux kernel in host VM for vCPU scheduling and VM power management. + VM manager aims to provide vCPUs on the basis of time sharing on physical + CPUs. It requires Linux kernel in host VM for vCPU scheduling and VM power + management. - Memory Management -Direct use of physical memory from VMs is forbidden and designed to be dictated -to the privilege models managed by GenieZone hypervisor for security reason. -With the help of gzvm-ko, the hypervisor would be able to manipulate memory as -objects. + Direct use of physical memory from VMs is forbidden and designed to be + dictated to the privilege models managed by GenieZone hypervisor for security + reason. With the help of gzvm-ko, the hypervisor would be able to manipulate + memory as objects. - Virtual Platform -We manage to emulate a virtual mobile platform for guest OS running on guest -VM. The platform supports various architecture-defined devices, such as -virtual arch timer, GIC, MMIO, PSCI, and exception watching...etc. + We manage to emulate a virtual mobile platform for guest OS running on guest + VM. The platform supports various architecture-defined devices, such as + virtual arch timer, GIC, MMIO, PSCI, and exception watching...etc. - Inter-VM Communication -Communication among guest VMs was provided mainly on RPC. More communication -mechanisms were to be provided in the future based on VirtIO-vsock. + Communication among guest VMs was provided mainly on RPC. More communication + mechanisms were to be provided in the future based on VirtIO-vsock. - Device Virtualization -The solution is provided using the well-known VirtIO. The gzvm-ko would -redirect MMIO traps back to VMM where the virtual devices are mostly emulated. -Ioeventfd is implemented using eventfd for signaling host VM that some IO -events in guest VMs need to be processed. + The solution is provided using the well-known VirtIO. The gzvm-ko would + redirect MMIO traps back to VMM where the virtual devices are mostly + emulated. Ioeventfd is implemented using eventfd for signaling host VM that + some IO events in guest VMs need to be processed. - Interrupt virtualization -All Interrupts during some guest VMs running would be handled by GenieZone -hypervisor with the help of gzvm-ko, both virtual and physical ones. In case -there's no guest VM running out there, physical interrupts would be handled by -host VM directly for performance reason. Irqfd is also implemented using -eventfd for accepting vIRQ requests in gzvm-ko. + All Interrupts during some guest VMs running would be handled by GenieZone + hypervisor with the help of gzvm-ko, both virtual and physical ones. In case + there's no guest VM running out there, physical interrupts would be handled + by host VM directly for performance reason. Irqfd is also implemented using + eventfd for accepting vIRQ requests in gzvm-ko. Platform architecture component =============================== - vm -The vm component is responsible for setting up the capability and memory -management for the protected VMs. The capability is mainly about the lifecycle -control and boot context initialization. And the memory management is highly -integrated with ARM 2-stage translation tables to convert VA to IPA to PA under -proper security measures required by protected VMs. + The vm component is responsible for setting up the capability and memory + management for the protected VMs. The capability is mainly about the + lifecycle control and boot context initialization. And the memory management + is highly integrated with ARM 2-stage translation tables to convert VA to IPA + to PA under proper security measures required by protected VMs. - vcpu -The vcpu component is the core of virtualizing aarch64 physical CPU runnable, -and it controls the vCPU lifecycle including creating, running and destroying. -With self-defined exit handler, the vm component would be able to act -accordingly before terminated. + The vcpu component is the core of virtualizing aarch64 physical CPU runnable, + and it controls the vCPU lifecycle including creating, running and + destroying. With self-defined exit handler, the vm component would be able to + act accordingly before terminated. - vgic -The vgic component exposes control interfaces to Linux kernel via irqchip, and -we intend to support all SPI, PPI, and SGI. When it comes to virtual -interrupts, the GenieZone hypervisor would write to list registers and trigger -vIRQ injection in guest VMs via GIC. + The vgic component exposes control interfaces to Linux kernel via irqchip, + and we intend to support all SPI, PPI, and SGI. When it comes to virtual + interrupts, the GenieZone hypervisor would write to list registers and + trigger vIRQ injection in guest VMs via GIC. Thanks. -- An old man doll... just what I always wanted! - Clara