Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp1779619rwd; Fri, 9 Jun 2023 01:55:33 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7el8YdwAvJ9B2sydjH8ghK58oivVwkex+jXMcIak9i38vr6+wSXBrUce7YAcQpRwcNXulT X-Received: by 2002:a05:6a20:9383:b0:110:f65a:13d7 with SMTP id x3-20020a056a20938300b00110f65a13d7mr468141pzh.9.1686300932983; Fri, 09 Jun 2023 01:55:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686300932; cv=none; d=google.com; s=arc-20160816; b=iAqV/w9BUmysNUVZL6RPr1TP/EGwXlb+PLoQrXzXTeR3hCrozp1cvFLEVKe0h0bBnd V719YSO1VkJ0Z441k5Ne5FSWrlMQtHBsR/b7jHLUxLUFDS/pbEzK4aSO422u0sBkQquk ZtK9gzgAbhMas+jVr4a6PxzK7caVZj1GdzNEfKIjiFVgLS7IYymumPfpbKiVfasgnaWN O9+gkM6rw6BZFJrgK/wuG5Yh3n75QVDLI0ywqQ92RYJ2eNTo5Nl9t1cpYNNACoruNqKL fdzQrEm3JPbM+XkhZN/Wx8RCu8XugW6Ix0Jehrw7lmF6QhLJv8oOfrOJfG87RYx7Fg0j mulw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=/6zvj284TK/ReeLDu+eCHJFjJUsRsO5W/UvARj/td+0=; b=nJnwi0Rg9RJnjW5rGA5bu6kz1mJ5hQdY4LDHY0fAfufHao9T3gYNXpxt54LfI4Mhna XPi7/x4uyp2ZMyJer8TVESE5oygWWFnQvt08WA+xS14cNUw+ShmWwyjsc9/zLNh+tzLp g1oaMjLAtC/ZYunmhgDq7iB1RpjTOjJvWqSZQCf3noK5jVGffJkICM5HlSxWKQDmQHRz gPohegQyU6KRfTNuuK+NfO8P9tjdh7Tk/mk2kMlJwi6BhhPcdTQUBlGjTBH+8fCTAhPw wrvgHUzlcFkyhZD5bDLI2TCN7QH1kCTT74cafajc0qWwOiNgWvRDYTkWZbniZl4vgkLq sbFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=QfgxTJiK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q29-20020aa7961d000000b006546d0d5832si2170293pfg.183.2023.06.09.01.55.18; Fri, 09 Jun 2023 01:55:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=QfgxTJiK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241088AbjFIIxL (ORCPT + 99 others); Fri, 9 Jun 2023 04:53:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52776 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239413AbjFIIw0 (ORCPT ); Fri, 9 Jun 2023 04:52:26 -0400 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CCFEE2; Fri, 9 Jun 2023 01:52:23 -0700 (PDT) X-UUID: ef43f1a606a211eeb20a276fd37b9834-20230609 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=/6zvj284TK/ReeLDu+eCHJFjJUsRsO5W/UvARj/td+0=; b=QfgxTJiKCZ12wthOkWrL+EDZSgOTntqWe5eVNXFUJiHMLglsDxO3vBtEN0IY9E5lD9tcTWY67Gz2ZUJlBw0Zi2WGnw/jfMLog2fK1IAjU8q2KxLicR1HCp4ubuaN7xvR2IyYT4ogvFFxyAi8nw/hDiyF1JDicJNJd9tTSOPCPVE=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.26,REQID:1ba6f691-fb5b-458a-a639-a4738b1ddf23,IP:0,U RL:0,TC:0,Content:-25,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:-25 X-CID-META: VersionHash:cb9a4e1,CLOUDID:f7a68f6e-2f20-4998-991c-3b78627e4938,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:1,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_ULS X-UUID: ef43f1a606a211eeb20a276fd37b9834-20230609 Received: from mtkmbs13n2.mediatek.inc [(172.21.101.108)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 847870566; Fri, 09 Jun 2023 16:52:16 +0800 Received: from mtkmbs13n1.mediatek.inc (172.21.101.193) by mtkmbs11n2.mediatek.inc (172.21.101.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Fri, 9 Jun 2023 16:52:15 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkmbs13n1.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Fri, 9 Jun 2023 16:52:15 +0800 From: Yi-De Wu To: Yingshiuan Pan , Ze-Yu Wang , Yi-De Wu , Jonathan Corbet , Catalin Marinas , Will Deacon , Arnd Bergmann , Matthias Brugger , AngeloGioacchino Del Regno CC: , , , , , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Conor Dooley , Trilok Soni , David Bradil , Jade Shih , Miles Chen , Ivan Tseng , My Chuang , Shawn Hsiao , PeiLun Suei , Liju Chen , Willix Yeh Subject: [PATCH v4 0/9] GenieZone hypervisor drivers Date: Fri, 9 Jun 2023 16:52:05 +0800 Message-ID: <20230609085214.31071-1-yi-de.wu@mediatek.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 Content-Type: text/plain X-MTK: N X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series is based on linux-next, tag: next-20230608. GenieZone hypervisor(gzvm) is a type-1 hypervisor that supports various virtual 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 vCPU scheduling, memory management, inter-VM communication and virtio backend support. Changes in v4: - Add macro to set VM as protected without triggering pvmfw in AVF. - Add support to pass dtb config to hypervisor. - Add support for virtual timer. - Add UAPI to pass memory region metadata to hypervisor. - Define our own macros for ARM's interrupt number - Elaborate more on GenieZone hyperivsor in documentation - Fix coding style. - Implement our own module for coverting ipa to pa - Modify the way of initializing device from dt to a more discoverable way - Move refactoring changes into indepedent patches. Changes in v3: https://lore.kernel.org/all/20230512080405.12043-1-yi-de.wu@mediatek.com/ - Refactor: separate arch/arm64/geniezone/gzvm_arch.c into vm.c/vcpu.c/vgic.c - Remove redundant functions - Fix reviewer's comments Changes in v2: https://lore.kernel.org/all/20230428103622.18291-1-yi-de.wu@mediatek.com/ - Refactor: move to drivers/virt/geniezone - Refactor: decouple arch-dependent and arch-independent - Check pending signal before entering guest context - Fix reviewer's comments Initial Commit in v1: https://lore.kernel.org/all/20230413090735.4182-1-yi-de.wu@mediatek.com/ Yi-De Wu (9): docs: geniezone: Introduce GenieZone hypervisor virt: geniezone: Add GenieZone hypervisor support virt: geniezone: Add vcpu support virt: geniezone: Add irqchip support for virtual interrupt injection virt: geniezone: Add irqfd support virt: geniezone: Add ioeventfd support virt: geniezone: Add memory region support virt: geniezone: Add dtb config support virt: geniezone: Add virtual timer support Documentation/virt/geniezone/introduction.rst | 79 +++ MAINTAINERS | 12 + arch/arm64/Kbuild | 1 + arch/arm64/geniezone/Makefile | 9 + arch/arm64/geniezone/gzvm_arch_common.h | 101 ++++ arch/arm64/geniezone/vcpu.c | 124 ++++ arch/arm64/geniezone/vgic.c | 89 +++ arch/arm64/geniezone/vm.c | 218 +++++++ arch/arm64/include/uapi/asm/gzvm_arch.h | 53 ++ drivers/virt/Kconfig | 2 + drivers/virt/geniezone/Kconfig | 16 + drivers/virt/geniezone/Makefile | 11 + drivers/virt/geniezone/gzvm_common.h | 12 + drivers/virt/geniezone/gzvm_ioeventfd.c | 263 +++++++++ drivers/virt/geniezone/gzvm_irqchip.c | 13 + drivers/virt/geniezone/gzvm_irqfd.c | 537 ++++++++++++++++++ drivers/virt/geniezone/gzvm_main.c | 142 +++++ drivers/virt/geniezone/gzvm_vcpu.c | 294 ++++++++++ drivers/virt/geniezone/gzvm_vm.c | 526 +++++++++++++++++ include/linux/gzvm_drv.h | 168 ++++++ include/uapi/asm-generic/Kbuild | 1 + include/uapi/asm-generic/gzvm_arch.h | 10 + include/uapi/linux/gzvm.h | 280 +++++++++ 23 files changed, 2961 insertions(+) create mode 100644 Documentation/virt/geniezone/introduction.rst create mode 100644 arch/arm64/geniezone/Makefile create mode 100644 arch/arm64/geniezone/gzvm_arch_common.h create mode 100644 arch/arm64/geniezone/vcpu.c create mode 100644 arch/arm64/geniezone/vgic.c create mode 100644 arch/arm64/geniezone/vm.c create mode 100644 arch/arm64/include/uapi/asm/gzvm_arch.h create mode 100644 drivers/virt/geniezone/Kconfig create mode 100644 drivers/virt/geniezone/Makefile create mode 100644 drivers/virt/geniezone/gzvm_common.h create mode 100644 drivers/virt/geniezone/gzvm_ioeventfd.c create mode 100644 drivers/virt/geniezone/gzvm_irqchip.c create mode 100644 drivers/virt/geniezone/gzvm_irqfd.c create mode 100644 drivers/virt/geniezone/gzvm_main.c create mode 100644 drivers/virt/geniezone/gzvm_vcpu.c create mode 100644 drivers/virt/geniezone/gzvm_vm.c create mode 100644 include/linux/gzvm_drv.h create mode 100644 include/uapi/asm-generic/gzvm_arch.h create mode 100644 include/uapi/linux/gzvm.h -- 2.18.0