From patchwork Mon Mar 20 10:03:35 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: 72068 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1130602wrt; Mon, 20 Mar 2023 03:20:59 -0700 (PDT) X-Google-Smtp-Source: AK7set/Qxiyywmw+8Zd/akVYaNn8YTPBstTcV+LXSXZpbRJrGmdCW4eDyZsqoyx8+j4QWNQesm9V X-Received: by 2002:a17:90a:355:b0:237:24a8:c5e2 with SMTP id 21-20020a17090a035500b0023724a8c5e2mr18129159pjf.40.1679307659595; Mon, 20 Mar 2023 03:20:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679307659; cv=none; d=google.com; s=arc-20160816; b=AotWdtNYjfNobFBXDbZ4+1Tl5HFSC+IzyRG7lJC7Y5pU1fGLIKgyK6FcrC4fqCZE0T mpfwNwG9ymY3lXTW8v76isiVDrUfRYSSEg465QW65piujtDmWT2h+mlNroTY9E5pz3jU EDI48OpNvIg8ZxS50lAd5zORqzMDQ4/J7CzI5Cm/JZ/ILNQ3JVS02LtkYHfXZ937IyLc P3gXfOpc7XRJybcXt4TrGB9mfENdxNhs/00fscEPyPwd3Cg4bxU5oR5IPaL69PVFYNbb +PfY0/v91u6sYEWg3fNSf7dj8KvheHxLXxiXr5TXgkl2urUkKSZPs3WNY1Cz2bgCDxJx sCOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :to:from:dkim-signature:dkim-filter; bh=j33V+lRmdypNPo/5POd8iHHMbdWcF0C+HhIy3rM9JsQ=; b=Pua996E+CO/MNSZOJ03CTRuBxNgQ7Bv8waWJoRtA2rzVSsNkyzu0HGFoONZ5IbtvtW hTGF79ULRL2ue/VMuwyc5sOwRYe4bfhINIwY77iBDlWZDPo1vdNY7AAspdlb/9+TPbrp H4ckG6Z1VL0Dkl5svB0ZK8YvaRcGO5+3gvTVRbtKTiE/uy6NnHYu8shbQVBolOGcFIzq mV6h5MZGctr9Pq8nA6riFtbzv6+msn06PvU/naBbHEYxZeP0wHOVqC1LRfq2yJ82hRiz oy8E9+lrRyXycODEGDK+xP+aq+c0zbmPMUspOPf7CXFGPyRe6EXSYsu8Wi/A2AIiAPRe e3hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=ESMBxJZY; 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 k69-20020a638448000000b0050bfa82c243si10753723pgd.17.2023.03.20.03.20.45; Mon, 20 Mar 2023 03:20:59 -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=ESMBxJZY; 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 S230014AbjCTKEt (ORCPT + 99 others); Mon, 20 Mar 2023 06:04:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34238 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229879AbjCTKEb (ORCPT ); Mon, 20 Mar 2023 06:04:31 -0400 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 07814EA; Mon, 20 Mar 2023 03:03:56 -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 EB15520FAED2; Mon, 20 Mar 2023 03:03:42 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com EB15520FAED2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1679306623; bh=j33V+lRmdypNPo/5POd8iHHMbdWcF0C+HhIy3rM9JsQ=; h=From:To:Subject:Date:In-Reply-To:References:From; b=ESMBxJZYw40VCUfdJROv7RmM5GvMMN2gzq31Bg27l4d/egS9G9b0VRZHGOuKDuHBo ffyGHGor7Mi/xlJfykXSuM+vU9sd+qeBuScV4MpVveGBZHjM13NTL91mUzQVBaWBgk auJL0ulT2pGUmTtI6ebNIeYMM8KdL8rqfHuuNc6U= 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 Subject: [PATCH v3 2/5] x86/hyperv: Add VTL specific structs and hypercalls Date: Mon, 20 Mar 2023 03:03:35 -0700 Message-Id: <1679306618-31484-3-git-send-email-ssengar@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1679306618-31484-1-git-send-email-ssengar@linux.microsoft.com> References: <1679306618-31484-1-git-send-email-ssengar@linux.microsoft.com> X-Spam-Status: No, score=-19.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760881708432532302?= X-GMAIL-MSGID: =?utf-8?q?1760881708432532302?= Add structs and hypercalls required to enable VTL support on x86. Signed-off-by: Saurabh Sengar Reviewed-by: Michael Kelley --- arch/x86/include/asm/hyperv-tlfs.h | 75 ++++++++++++++++++++++++++++++ include/asm-generic/hyperv-tlfs.h | 4 ++ 2 files changed, 79 insertions(+) diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h index 0b73a809e9e1..0b0b4e9a4318 100644 --- a/arch/x86/include/asm/hyperv-tlfs.h +++ b/arch/x86/include/asm/hyperv-tlfs.h @@ -713,6 +713,81 @@ union hv_msi_entry { } __packed; }; +struct hv_x64_segment_register { + __u64 base; + __u32 limit; + __u16 selector; + union { + struct { + __u16 segment_type : 4; + __u16 non_system_segment : 1; + __u16 descriptor_privilege_level : 2; + __u16 present : 1; + __u16 reserved : 4; + __u16 available : 1; + __u16 _long : 1; + __u16 _default : 1; + __u16 granularity : 1; + } __packed; + __u16 attributes; + }; +} __packed; + +struct hv_x64_table_register { + __u16 pad[3]; + __u16 limit; + __u64 base; +} __packed; + +struct hv_init_vp_context { + u64 rip; + u64 rsp; + u64 rflags; + + struct hv_x64_segment_register cs; + struct hv_x64_segment_register ds; + struct hv_x64_segment_register es; + struct hv_x64_segment_register fs; + struct hv_x64_segment_register gs; + struct hv_x64_segment_register ss; + struct hv_x64_segment_register tr; + struct hv_x64_segment_register ldtr; + + struct hv_x64_table_register idtr; + struct hv_x64_table_register gdtr; + + u64 efer; + u64 cr0; + u64 cr3; + u64 cr4; + u64 msr_cr_pat; +} __packed; + +union hv_input_vtl { + u8 as_uint8; + struct { + u8 target_vtl: 4; + u8 use_target_vtl: 1; + u8 reserved_z: 3; + }; +} __packed; + +struct hv_enable_vp_vtl { + u64 partition_id; + u32 vp_index; + union hv_input_vtl target_vtl; + u8 mbz0; + u16 mbz1; + struct hv_init_vp_context vp_context; +} __packed; + +struct hv_get_vp_from_apic_id_in { + u64 partition_id; + union hv_input_vtl target_vtl; + u8 res[7]; + u32 apic_ids[]; +} __packed; + #include #endif diff --git a/include/asm-generic/hyperv-tlfs.h b/include/asm-generic/hyperv-tlfs.h index b870983596b9..87258341fd7c 100644 --- a/include/asm-generic/hyperv-tlfs.h +++ b/include/asm-generic/hyperv-tlfs.h @@ -146,6 +146,7 @@ union hv_reference_tsc_msr { /* Declare the various hypercall operations. */ #define HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE 0x0002 #define HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST 0x0003 +#define HVCALL_ENABLE_VP_VTL 0x000f #define HVCALL_NOTIFY_LONG_SPIN_WAIT 0x0008 #define HVCALL_SEND_IPI 0x000b #define HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX 0x0013 @@ -165,6 +166,8 @@ union hv_reference_tsc_msr { #define HVCALL_MAP_DEVICE_INTERRUPT 0x007c #define HVCALL_UNMAP_DEVICE_INTERRUPT 0x007d #define HVCALL_RETARGET_INTERRUPT 0x007e +#define HVCALL_START_VP 0x0099 +#define HVCALL_GET_VP_ID_FROM_APIC_ID 0x009a #define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_SPACE 0x00af #define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_LIST 0x00b0 #define HVCALL_MODIFY_SPARSE_GPA_PAGE_HOST_VISIBILITY 0x00db @@ -218,6 +221,7 @@ enum HV_GENERIC_SET_FORMAT { #define HV_STATUS_INVALID_PORT_ID 17 #define HV_STATUS_INVALID_CONNECTION_ID 18 #define HV_STATUS_INSUFFICIENT_BUFFERS 19 +#define HV_STATUS_VTL_ALREADY_ENABLED 134 /* * The Hyper-V TimeRefCount register and the TSC