From patchwork Tue Apr 11 05:55:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saurabh Singh Sengar X-Patchwork-Id: 7988 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2356567vqo; Mon, 10 Apr 2023 23:06:31 -0700 (PDT) X-Google-Smtp-Source: AKy350bW1xr2PrZrWeaGUXfFKo8KXHWlu7b/+3xWMGNdGbDPwRiXWycAxi6RDjInbnMpvlLFN5P4 X-Received: by 2002:aa7:d48a:0:b0:504:a257:4d3 with SMTP id b10-20020aa7d48a000000b00504a25704d3mr5082425edr.11.1681193191593; Mon, 10 Apr 2023 23:06:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681193191; cv=none; d=google.com; s=arc-20160816; b=F6QbhLEbZYErxcfTndwjr2Yfu0zinAmR/ZOZA5i73om2jeOGjq7CS2qzyrk0u4XDpv YSEODYasEbWQ7GpxicgRftfTuKDjoC89s6t3Ao5IKppThxj86p3TaCFWOX5T4wGdiJbe OmR7jGtKwu5dCBVePl90JDBI7LMCfbB8su0vw0MiXEnNoFco5YU8l3W9DW9VEVFJCHWM UUU8wU4coSq4Bt1kaTk1r4ACGZWgx+QlXlhSFAtA45CbW2Ejf+LSK7q3vAx7i1/bTc1S Nsg04AVYKofBY1beAAtvNEd8W6Y62pT75CV81s6ayvBKkFlBd4+eprouVAFA2W9ivv9x JF4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:to:from:dkim-signature :dkim-filter; bh=BUwSLsXfYVsGNrHJTEz77cf8Go462e5WitqMNoWYPGg=; b=TidDGqsTvV9gGiaG3txn706oKoLBK1Qy3OsTccZWZenaqTGOh/nZeBtaCPJ2WbofHB 31AOTpe3ucRBALWtByZiPEWk1gYn9OP1H0Y+25hbAfSSQJMuixSuP4JOF448qc2GxjFb yETfueD+juHVFGOft7YQMBVr0QhBK96zVEiZwvVDIa1bo1vJB/KkOm4pgRxbP4RNf2TG g3aDVt5rmzPnDjSaF5CzBjGMfEFHkEYCD4Nhdefge3rK9MEHYMb+XvWQhDVoA0JgDSaJ DXhZxeNLoG1Fa9isdzOHQUT7Z6757QIVc5+zs40zMoYspsjd4sTwB/18+k3A2K/jtqtc olqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=Rzze8Dqg; 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=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z5-20020a50eb45000000b004fe95e96aefsi10792434edp.586.2023.04.10.23.06.07; Mon, 10 Apr 2023 23:06:31 -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=@linux.microsoft.com header.s=default header.b=Rzze8Dqg; 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=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230032AbjDKFzk (ORCPT + 99 others); Tue, 11 Apr 2023 01:55:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229771AbjDKFzi (ORCPT ); Tue, 11 Apr 2023 01:55:38 -0400 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E415910CA; Mon, 10 Apr 2023 22:55:37 -0700 (PDT) Received: from linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net (linux.microsoft.com [13.77.154.182]) by linux.microsoft.com (Postfix) with ESMTPSA id EBD822174E48; Mon, 10 Apr 2023 22:55:35 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com EBD822174E48 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1681192536; bh=BUwSLsXfYVsGNrHJTEz77cf8Go462e5WitqMNoWYPGg=; h=From:To:Subject:Date:From; b=Rzze8DqgI69GfOLVOwx8ULBAFUUblB3YT6tCaqRndRRa5MzcTKCr6/MAIXIplBQYi wOoho4UOLibP8Q96Jjjfk/Qy2CaMysxh0URsmLt2KDm4wtM4AY8BnmTQ1bgu/Xo0Pn hqazn2eaTetSlZozkqtUnZL8eopNe3PFeTy8lw0w= From: Saurabh Sengar To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, arnd@arndb.de, tiala@microsoft.com, mikelley@microsoft.com, linux-kernel@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-arch@vger.kernel.org, jgross@suse.com, mat.jonczyk@o2.pl Subject: [PATCH v5 0/5] Hyper-V VTL support Date: Mon, 10 Apr 2023 22:55:27 -0700 Message-Id: <1681192532-15460-1-git-send-email-ssengar@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 X-Spam-Status: No, score=-15.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_PASS,URI_TRY_3LD,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762858832242315223?= X-GMAIL-MSGID: =?utf-8?q?1762858832242315223?= This patch series introduces support for Virtual Trust Level (VTL) in Hyper-V systems. It provide a foundation for the implementation of Hyper-V VSM support in the Linux kernel, providing a secure platform for the development and deployment of applications. Virtual Secure Mode (VSM) is a critical aspect of the security infrastructure in Hyper-V systems. It provides a set of hypervisor capabilities and enlightenments that enable the creation and management of new security boundaries within operating system software. The VSM achieves and maintains isolation through Virtual Trust Levels, which are hierarchical, with higher levels being more privileged than lower levels. Please refer to this link for further information: https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/tlfs/vsm This patch series adds the initialization of the x86 platform for VTL systems. This also adds the VTL early bootup code for initializing and bringing up secondary cpus to targeted VTL context. In VTL, AP has to start directly in the 64-bit mode, bypassing the usual 16-bit -> 32-bit -> 64-bit mode transition sequence that occurs after waking up an AP with SIPI whose vector points to the 16-bit AP startup trampoline code. Currently only VTL level supprted is '2'. This patch series is tested extensively on VTL2 systems. [V5] - __u64/__u16 -> u64/u16 [V4] - Move HYPERV_VTL_MODE definition from arch/x86/Kconfig to drivers/hv/Kconfig - Move Kconfig changes before its getting used - Replace initial_stack with current->thread.sp as per recent upstream changes [V3] - Break in to 5 patches - hv_init_vp_context_t -> hv_init_vp_context - HYPERV_VTL -> HYPERV_VTL_MODE - Modify description of HYPERV_VTL_MODE - VTL 0 and VTL 2 -> VTL0 and VTL2 - Remove casting for this_cpu_ptr pointer [V2] - Remove the code for reserve 1 IRQ. - boot_cpu_has -> cpu_feature_enabled. - Improved commit message for 0002 patch. - Improved Kconfig flag description for HYPERV_VTL. - Removed hv_result as a wrapper around hv_do_hypercall(). - The value of output[0] copied to a local variable before returning. Saurabh Sengar (5): x86/init: Make get/set_rtc_noop() public x86/hyperv: Add VTL specific structs and hypercalls x86/hyperv: Make hv_get_nmi_reason public Drivers: hv: Kconfig: Add HYPERV_VTL_MODE x86/hyperv: VTL support for Hyper-V arch/x86/hyperv/Makefile | 1 + arch/x86/hyperv/hv_vtl.c | 227 +++++++++++++++++++++++++++++ arch/x86/include/asm/hyperv-tlfs.h | 75 ++++++++++ arch/x86/include/asm/mshyperv.h | 15 ++ arch/x86/include/asm/x86_init.h | 2 + arch/x86/kernel/cpu/mshyperv.c | 6 +- arch/x86/kernel/x86_init.c | 4 +- drivers/hv/Kconfig | 24 +++ include/asm-generic/hyperv-tlfs.h | 4 + 9 files changed, 351 insertions(+), 7 deletions(-) create mode 100644 arch/x86/hyperv/hv_vtl.c