From patchwork Tue Apr 4 09:00:59 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: 7683 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2877921vqo; Tue, 4 Apr 2023 02:03:01 -0700 (PDT) X-Google-Smtp-Source: AKy350aANA99ocns7C3qPk0+QWrus+6b5P3IujFKB9KvgNLzAM6QwYfYgeJjUFtR1AXpq68vgMNx X-Received: by 2002:a17:907:9801:b0:932:8dc:5bf4 with SMTP id ji1-20020a170907980100b0093208dc5bf4mr1801977ejc.61.1680598981048; Tue, 04 Apr 2023 02:03:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680598981; cv=none; d=google.com; s=arc-20160816; b=pHzfP6ufFZ9f1MbU6BWEi4wiiSKUDMcS27TinGE+5ocjmoanLyn8Q+m4/EUW3Lf9TF nONoD5BF62fLrg3tVv7OIcgQEiatuB5k4ZTgpxtwirAB/BxiVRnhPY8LEVkZRR2mIPU6 H2/DqXYMaqcYM7LGzXXxY/bqM3sLdzdMcR5XsUq4egX8QICLib+aqMzeNHGeNoZH8uEd lPgJ7v22CAnPSEftXe45GFhZ1V2K3bGHV+qFkrzgURq3X1yYUW5UXjJr9XATBN28omTF W/jaelYe74mpG7rgauY+oPi0aCkVH9gI2xjCqzap2hjIcDrJBjgUYT8COJhwfJ9xV9iV 17zQ== 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=dLfbqlPMal8+oV3kkCGkQ3uaW2UIpJDauSTLoOM/cLU=; b=Kc1cW0UKA9TNz36Ehmv8lOXOIugg8s7w3a+PBfCCEm48NQ3BIkGdFTBkRqIzkfvngE 1jvDFINlpRrsIvkFcoC2o1ZLSr3gZYiNZu2gOzZ9alKNsN5QzG6OX8tWEw9QpzSi/8xU KW9ycbSFx1cK2KO3eFvdY8fZrHnJabom9UgLmkjPD/14ygHQ5bRuV9RJlf1CL7ECrlkL SaHA6635I7SMMaI8x40/yd4OcKaxlSE4QruECzbf9nFBGnUvYuBAXkE2GeE3CpFeXNIN g3pv51V43XddzgqSwUfJWsrpdvumTBd/qtX2DEdRD5DNr5fDXfUZilsO+nLuf6/O7vd/ b8LQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=r8sXIGQl; 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 gr26-20020a170906e2da00b0092f97d1a8efsi7516108ejb.504.2023.04.04.02.02.35; Tue, 04 Apr 2023 02:03:01 -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=r8sXIGQl; 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 S234192AbjDDJBV (ORCPT + 99 others); Tue, 4 Apr 2023 05:01:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233891AbjDDJBL (ORCPT ); Tue, 4 Apr 2023 05:01:11 -0400 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B8A4B1FDE; Tue, 4 Apr 2023 02:01:09 -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 E8EC5210DD83; Tue, 4 Apr 2023 02:01:08 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com E8EC5210DD83 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1680598869; bh=dLfbqlPMal8+oV3kkCGkQ3uaW2UIpJDauSTLoOM/cLU=; h=From:To:Subject:Date:From; b=r8sXIGQloCBaDbqMcyJS8VSFfeuJhclCiRjayLdPdGalbHi1O0VljcG1FU6qXNwSZ wDOOSGJfCeq5w39b2wcG5QLMCr/GRIfYvlldG6fb30fCSfAp18e1iHG3k6dylsWpVB rPws80ojQmo0qxJEg8a4DDNc2MppohKQUNAwUoGI= 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 v4 0/5] Hyper-V VTL support Date: Tue, 4 Apr 2023 02:00:59 -0700 Message-Id: <1680598864-16981-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?1762235757042043597?= X-GMAIL-MSGID: =?utf-8?q?1762235757042043597?= 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. [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 x86/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