Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp3298547pxb; Wed, 14 Apr 2021 02:01:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxWOJ9IQcQaMkmf1Grq3bH4yd+wogaGLSyeShwPcfJcwruMU4F8yCwUBnyi1/R18R5KS6aK X-Received: by 2002:a17:902:ea0d:b029:e6:f01d:9db5 with SMTP id s13-20020a170902ea0db02900e6f01d9db5mr36303633plg.60.1618390887020; Wed, 14 Apr 2021 02:01:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618390887; cv=none; d=google.com; s=arc-20160816; b=WjMLJhNyINT3AXcNZA+rbosh1YeTReGvm+tlpI7BK1MID5Kx/UwY7+cg8KQa7BUil9 JTwc3z0nZlPN7COAwcU7koRmW/QMhsxIXxKXomlxggqJe/9FHHDQzH5KfZCMy/hZqjmz 9vebMOq/cE0ENwXB6a2fNTOHqUhg2Ed5Ld/GStklzUzVLuoATqs1GIITBSI1Gfp4dRj1 OsIlO5wwXYGMgYCLpM2cKboB/WDcklf59Hk9oj14ivdwWTqm1P2BJph4L5UpdB+lDFYo dZBGA0yoYyDP6339k64q3XPoD28cqN0mh+LZlxH4MjteDxJKqUaaa5mYq70r1zLBLhQy XlTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=/DkrO2gUg58Vl2JO3PCW7Y+6kEN3IaedAlHDNnqPV3Y=; b=T6M7g9Adm908nk+DSDOVlkrMYAJd4g2J9Rs28OqEGJLjDU1ETbj40/cMnkOmUpzhwt galyuD8uJaCRwdgzLAu+WGCJPm4FGslPh0NoViKbX3ZTu+3PDskDxXOtFcP/Qq+ML+zo apZZH1Qd9dY0mDbv9kPb5EzEsgmWDPM/3wjsnomLPsZ1wn3wM7lb3kMFAFkUFOozof40 WPFc2Vdo61xIHNMuJ4fIrTf7Y/e6vZPiCtbOif2BYDVsIyBzV5qJUadjy4qMoiuQe6dK 3nu6ocaMvdO8U6Llt29XSHhrtpp5a7rNw1t3OcaVeYR0b4RfWttGz9VMs8w9P5WOu5g4 83eQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.de header.s=amazon201209 header.b=dS2kZyNa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o34si22744720pgm.435.2021.04.14.02.01.14; Wed, 14 Apr 2021 02:01:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.de header.s=amazon201209 header.b=dS2kZyNa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348478AbhDMVvz (ORCPT + 99 others); Tue, 13 Apr 2021 17:51:55 -0400 Received: from smtp-fw-33001.amazon.com ([207.171.190.10]:47320 "EHLO smtp-fw-33001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230491AbhDMVvy (ORCPT ); Tue, 13 Apr 2021 17:51:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.de; i=@amazon.de; q=dns/txt; s=amazon201209; t=1618350695; x=1649886695; h=from:to:cc:subject:date:message-id:mime-version; bh=/DkrO2gUg58Vl2JO3PCW7Y+6kEN3IaedAlHDNnqPV3Y=; b=dS2kZyNa6iLKFD+SrtXiS00y4NFbyAGB11Pe9IF99kgnuxrSPAWk9E/D XNJJluxSWpVmuAr6xjan5J66OF4hEsYMdlr/ZIK77Ra2G+NuvSwG6Wrid QIvzsp8MwVCFVR/gxM25Q5hMEbeP+t5YR1lHMthMln51KOznGsDFqKTjx Q=; X-IronPort-AV: E=Sophos;i="5.82,220,1613433600"; d="scan'208";a="118207171" Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO email-inbound-relay-2b-81e76b79.us-west-2.amazon.com) ([10.25.36.210]) by smtp-border-fw-out-33001.sea14.amazon.com with ESMTP; 13 Apr 2021 21:51:28 +0000 Received: from EX13D28EUC003.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan3.pdx.amazon.com [10.236.137.198]) by email-inbound-relay-2b-81e76b79.us-west-2.amazon.com (Postfix) with ESMTPS id EE0FEA1BE6; Tue, 13 Apr 2021 21:51:25 +0000 (UTC) Received: from uc8bbc9586ea454.ant.amazon.com (10.43.161.39) by EX13D28EUC003.ant.amazon.com (10.43.164.43) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 13 Apr 2021 21:51:16 +0000 From: Siddharth Chandrasekaran To: "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , Wei Liu , Thomas Gleixner , Ingo Molnar , Borislav Petkov , , "H. Peter Anvin" , Paolo Bonzini , "Sean Christopherson" , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , "Joerg Roedel" CC: Siddharth Chandrasekaran , Alexander Graf , Evgeny Iakovlev , Liran Alon , Ioannis Aslanidis , , , Subject: [PATCH v3 0/4] Add support for XMM fast hypercalls Date: Tue, 13 Apr 2021 23:50:53 +0200 Message-ID: X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.43.161.39] X-ClientProxiedBy: EX13D30UWC002.ant.amazon.com (10.43.162.235) To EX13D28EUC003.ant.amazon.com (10.43.164.43) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hyper-V supports the use of XMM registers to perform fast hypercalls. This allows guests to take advantage of the improved performance of the fast hypercall interface even though a hypercall may require more than (the current maximum of) two general purpose registers. The XMM fast hypercall interface uses an additional six XMM registers (XMM0 to XMM5) to allow the caller to pass an input parameter block of up to 112 bytes. Hyper-V can also return data back to the guest in the remaining XMM registers that are not used by the current hypercall. Although the Hyper-v TLFS mentions that a guest cannot use this feature unless the hypervisor advertises support for it, some hypercalls which we plan on upstreaming in future uses them anyway. This patchset adds necessary infrastructure for handling input/output via XMM registers and patches kvm_hv_flush_tlb() to use xmm input arguments. ~ Sid. v3: - Remove inline for kvm_hv_hypercall_{read,write}_xmm() - Fix typo: s/ouput/output/ - Remove sse128_t from kvm_emulate.h - Reword comment to match TLFS wording - Move num XMM registers macro to hyperv-tlfs.h - Stop advertising HV_X64_HYPERCALL_XMM_OUTPUT_AVAILABLE v2: - Remove inline for kvm_hv_hypercall_{read,write}_xmm() - Fix typo: s/ouput/output/ - Remove sse128_t from kvm_emulate.h - Reword comment to match TLFS wording - Move num XMM registers macro to hyperv-tlfs.h - Stop advertising HV_X64_HYPERCALL_XMM_OUTPUT_AVAILABLE Siddharth Chandrasekaran (4): KVM: x86: Move FPU register accessors into fpu.h KVM: hyper-v: Collect hypercall params into struct KVM: x86: kvm_hv_flush_tlb use inputs from XMM registers KVM: hyper-v: Advertise support for fast XMM hypercalls arch/x86/include/asm/hyperv-tlfs.h | 9 +- arch/x86/kvm/emulate.c | 137 +++--------------- arch/x86/kvm/fpu.h | 140 ++++++++++++++++++ arch/x86/kvm/hyperv.c | 222 +++++++++++++++++++---------- arch/x86/kvm/kvm_emulate.h | 3 +- 5 files changed, 309 insertions(+), 202 deletions(-) create mode 100644 arch/x86/kvm/fpu.h -- 2.17.1 Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B Sitz: Berlin Ust-ID: DE 289 237 879