Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5693197rwl; Tue, 4 Apr 2023 02:07:33 -0700 (PDT) X-Google-Smtp-Source: AKy350beK9OvJN27MfvIskuAPO+5ANTZfHzdV1bmjg9Am0qvEve/eWuUNTcOKrFaE0efLTE9mvpi X-Received: by 2002:a17:902:fa0d:b0:1a1:d655:1ce4 with SMTP id la13-20020a170902fa0d00b001a1d6551ce4mr1683161plb.38.1680599253094; Tue, 04 Apr 2023 02:07:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680599253; cv=none; d=google.com; s=arc-20160816; b=KKx0fmR/q38O0ZVMTAibNC5dIv+vUee4o4k4xvjbBSDAoc3BPZnenh6GAogyJMsZPL rd5+iGjdTbUwiv3k3g0gkqWjHf2welb+3tvjpRHwdBBhMx1hbOJWHVS6o4NmpqMUdaZi s2PDrOznwlvrStk1qriv6smgEbi2AxffIKUQeA0XBDw9mq/r3T9WPf/aL86K5g1wBbIS RSf6XuXs80Nnl0ZwNbmKuxsZlyCEC0gKJhTknHlQ06RdpoEXZiPKQeCYi0IL1vwwQiwV wYgg6VqmgVE+OikSDFs/6vVFTAxmqQAnPjLKRF4Yvm01lHXIN1JZSGqcYUYh9wPBEiAS S0HQ== 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=Tfb5WkFLz58zOqZyiYU2NircAhPZU3AOqffdnGjnjq0=; b=V0vC3Jvfiv6pi+27CFDTbJF5YmtzJGNuG/5M8U6k2dBRFHxI9Sk0VS6XBNNj487M4G Q8HZbmZAtiIz4n4sa+CyLnHdlQEncTVxbDzDTgT3iRzy0I4RTUdY4sLiujDH2oOoNn/+ znfu1QMmqmd/FOtyHM9M6zRge/pTGEJlTimqWmFlIe3/RkWg29vt4w2fqTbqb2VPj6VT qNKg6BhvJ4mC4c/Gm7DfQBdnQTrJ8LP/KHBBvaXU/1bQ0jImWfGAt/KPHJ8LCXgK8rip LMXl+wx9pWYRQXCMMMzJs5V328c9YkGyN76nr684pr9BsaEPA26EfrhND/uvD3vtm//R JSdw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=HrBaoEvc; 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 y12-20020a17090322cc00b0019f2506251dsi10478234plg.190.2023.04.04.02.07.20; Tue, 04 Apr 2023 02:07:33 -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=HrBaoEvc; 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 S234234AbjDDJBX (ORCPT + 99 others); Tue, 4 Apr 2023 05:01:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233903AbjDDJBL (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 B8B291FE6; 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 297AC210DD8D; Tue, 4 Apr 2023 02:01:09 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 297AC210DD8D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1680598869; bh=Tfb5WkFLz58zOqZyiYU2NircAhPZU3AOqffdnGjnjq0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=HrBaoEvcIE9l1TZt+1TgiVhPlORE3mnycp6P/yc6X/Wxbn7guyS/t5KFa/DEAzGe2 PJIvS/LTQ/8bcEBOTJfjx6tjYrY4nZryGFcfynp+5Dck6esP9wshf1pjt1ectzjlxn 87W6/zoj935+cGXQ19lrKODc77AED3dB5/NnYVKk= 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 2/5] x86/hyperv: Add VTL specific structs and hypercalls Date: Tue, 4 Apr 2023 02:01:01 -0700 Message-Id: <1680598864-16981-3-git-send-email-ssengar@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1680598864-16981-1-git-send-email-ssengar@linux.microsoft.com> References: <1680598864-16981-1-git-send-email-ssengar@linux.microsoft.com> X-Spam-Status: No, score=-17.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,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 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 -- 2.34.1