Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5047341rwl; Mon, 10 Apr 2023 22:56:51 -0700 (PDT) X-Google-Smtp-Source: AKy350bUNKUDG5a9hmdF7S6891aCM7K06AGobBwvegzoZTXfY1mjHtZv8oskYIzWjklwz7ZqL2ei X-Received: by 2002:a17:906:b0cb:b0:921:5cce:6599 with SMTP id bk11-20020a170906b0cb00b009215cce6599mr10215226ejb.41.1681192611623; Mon, 10 Apr 2023 22:56:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681192611; cv=none; d=google.com; s=arc-20160816; b=N69PBURowuNo21nGHTRlWM8BJNqlnhfMorMoMoprfo3gHvdj9fW9rf0KU3un+WAQLN 8bjo0XCb4yfBTsnmwbJNodzxi0cXo8CGx2SQNhjCzH9q55vHJOOTMeaoB+6s33Uto1Jw fo6Se6/8TwSWVXlB2c17bgvI5sOfMgh8q84tmKW7jNLRcRxU+eSd7nFP9GArLDAwHI1i 9DxFCrmAP+U3LB9aqC1SQKouYZyCEtzQYvC2UL8zMccsEA8eXatNbzCz3O8UbNPczPGR SByLGRDGLZDI7i6gk2AYbRb3w1NrF5yRHZrV8QU11vieiPDvf0GG6uNCuloB0LliYcib YAxg== 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k25-20020a05640212d900b004fce4843227si761297edx.328.2023.04.10.22.56.26; Mon, 10 Apr 2023 22:56:51 -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 S230019AbjDKFzj (ORCPT + 99 others); Tue, 11 Apr 2023 01:55:39 -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 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 -- 2.34.1