From patchwork Tue Mar 7 02:39:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Li, Xin3" X-Patchwork-Id: 65241 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp2215989wrd; Mon, 6 Mar 2023 19:25:48 -0800 (PST) X-Google-Smtp-Source: AK7set9POuIWKbkcs00voew8Vn4TqYe6Yt5t3cLSYdRYcFIQ6Rq414Ei4candFervJHkoJ6zGfhC X-Received: by 2002:a05:6a20:6922:b0:cd:a334:a52b with SMTP id q34-20020a056a20692200b000cda334a52bmr10112089pzj.30.1678159548462; Mon, 06 Mar 2023 19:25:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1678159548; cv=none; d=google.com; s=arc-20160816; b=Ac4k8YmIifCOcLuONkWF+Hmzl15BIeVIeofPUHsb/tMwqp/Mrab29wzRSwz4chnujO lAAe0Ua+2vRBUlKPvZ9rUwOcpXpWXaJEsE6VaBYcu3SsW89hGHoKyRNf5o5PX5mVF48o 0r5y0hmpSzB5wEOBFWrxf5cyJ6uQJlasbCEs24m96SL3mRXpFnYZFF8+MvZh7xJdBVLC xZZfBTmvWTRYiRpNcRTko4K2y0qxlyjA6cLgiuSWEWys4Jq2mepwBrtCGJCPcX8vRLwQ r53ji7Mtx+MRlX46tQx2Sm91hT3XUkNQ7ZXerws+nP5pAXwTlsDAzPkadg55VRIhCEKO NmWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+VaUPr04RvGnPD9G9LEI7rZpFLR5XlVkh+7KmqRc0j4=; b=GMzK0q8yyJMuEBsNFVf1XFNzWQ67ibYe238N4rlR8v3OKYdgQY7pes/pIRje3grSBt OWLJCjL/Ye1WD3Lz4I+507uOgizW825Ipr/TfylY/jyEqO11Iy84b45cruosbfb4YiEx qj7WLdhtpB+C0RnfAQ1/Gjo4iCe4gOeQE/Lqp10mRV8lxrlBfFpbPZxr8dg4cut2P7DS R6MnhXBtMc63zUcExafFIE5EjQa6SOXRKsEBgBJPCjE9hAOZ0FwpW57Bm1Gs9T3N5UIf 5ux7BgkW0ln8JrYEWsC+2TfXAL7Pn/FAhqbdvRLgBjMiypoGhKIJPprvZEtdxFtkMn7G TkqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=LafiI9bz; 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=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q27-20020aa7843b000000b005f1cfb6cfa6si10864691pfn.356.2023.03.06.19.25.36; Mon, 06 Mar 2023 19:25:48 -0800 (PST) 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=@intel.com header.s=Intel header.b=LafiI9bz; 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230376AbjCGDGO (ORCPT + 99 others); Mon, 6 Mar 2023 22:06:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230260AbjCGDFb (ORCPT ); Mon, 6 Mar 2023 22:05:31 -0500 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B9EF77D555; Mon, 6 Mar 2023 19:05:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1678158327; x=1709694327; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tP9iIQUbrhMc+5l0AHCXnkXnhn3TgNNmkDoitFhCFbw=; b=LafiI9bzdNuosnC2zyOZuLe/9Fg049JMRQ2ffgp6pehyVkW/Vvj2pLzU L8OokeuAdiuAJr84qvifQfzd4ugs5HuUs3QBhoaZ5mB7rWVxT4rkljoef 4yjghSoVvA/8aqPYcwIp5fsXu9u0pDddPi+HS0eTgwXqRiAs2yicNxhFw GQdpEO90HtAOLgU3bhfuufBZW02jJ8nL8IQwyyO/t2ku+E+ZVdaXsmUCj zKIHO4L3xkFL6ZXAK4d1KVVJ4ybnFi0nHkHmGcNIG0D/ta749HK/fOdBx 9bDNMEvdclWTK9YxbGqsZxCfSa7/RFoS2ori5f2blHLXJn61qolGSStGn A==; X-IronPort-AV: E=McAfee;i="6500,9779,10641"; a="338072434" X-IronPort-AV: E=Sophos;i="5.98,238,1673942400"; d="scan'208";a="338072434" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2023 19:05:15 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10641"; a="676409808" X-IronPort-AV: E=Sophos;i="5.98,238,1673942400"; d="scan'208";a="676409808" Received: from unknown (HELO fred..) ([172.25.112.68]) by orsmga002.jf.intel.com with ESMTP; 06 Mar 2023 19:05:15 -0800 From: Xin Li To: linux-kernel@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, peterz@infradead.org, andrew.cooper3@citrix.com, seanjc@google.com, pbonzini@redhat.com, ravi.v.shankar@intel.com Subject: [PATCH v5 13/34] x86/fred: header file for event types Date: Mon, 6 Mar 2023 18:39:25 -0800 Message-Id: <20230307023946.14516-14-xin3.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230307023946.14516-1-xin3.li@intel.com> References: <20230307023946.14516-1-xin3.li@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED 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?1759677826705583425?= X-GMAIL-MSGID: =?utf-8?q?1759677826705583425?= FRED inherits the Intel VT-x enhancement of classified events with a two-level event dispatch logic. The first-level dispatch is on the event type, not the event vector as used in the IDT architecture. This also means that vectors in different event types are orthogonal, e.g., vectors 0x10-0x1f become available as hardware interrupts. Add a header file for event types, and also use it in . Suggested-by: H. Peter Anvin (Intel) Tested-by: Shan Kang Signed-off-by: Xin Li --- arch/x86/include/asm/event-type.h | 17 +++++++++++++++++ arch/x86/include/asm/vmx.h | 17 +++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 arch/x86/include/asm/event-type.h diff --git a/arch/x86/include/asm/event-type.h b/arch/x86/include/asm/event-type.h new file mode 100644 index 000000000000..fedaa0e492c5 --- /dev/null +++ b/arch/x86/include/asm/event-type.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_X86_EVENT_TYPE_H +#define _ASM_X86_EVENT_TYPE_H + +/* + * Event type codes: these are the same that are used by VTx. + */ +#define EVENT_TYPE_HWINT 0 /* Maskable external interrupt */ +#define EVENT_TYPE_RESERVED 1 +#define EVENT_TYPE_NMI 2 /* Non-maskable interrupt */ +#define EVENT_TYPE_HWFAULT 3 /* Hardware exceptions (e.g., page fault) */ +#define EVENT_TYPE_SWINT 4 /* Software interrupt (INT n) */ +#define EVENT_TYPE_PRIVSW 5 /* INT1 (ICEBP) */ +#define EVENT_TYPE_SWFAULT 6 /* Software exception (INT3 or INTO) */ +#define EVENT_TYPE_OTHER 7 /* FRED: SYSCALL/SYSENTER */ + +#endif diff --git a/arch/x86/include/asm/vmx.h b/arch/x86/include/asm/vmx.h index 498dc600bd5c..8d9b8b0d8e56 100644 --- a/arch/x86/include/asm/vmx.h +++ b/arch/x86/include/asm/vmx.h @@ -15,6 +15,7 @@ #include #include #include +#include #include #define VMCS_CONTROL_BIT(x) BIT(VMX_FEATURE_##x & 0x1f) @@ -372,14 +373,14 @@ enum vmcs_field { #define VECTORING_INFO_DELIVER_CODE_MASK INTR_INFO_DELIVER_CODE_MASK #define VECTORING_INFO_VALID_MASK INTR_INFO_VALID_MASK -#define INTR_TYPE_EXT_INTR (0 << 8) /* external interrupt */ -#define INTR_TYPE_RESERVED (1 << 8) /* reserved */ -#define INTR_TYPE_NMI_INTR (2 << 8) /* NMI */ -#define INTR_TYPE_HARD_EXCEPTION (3 << 8) /* processor exception */ -#define INTR_TYPE_SOFT_INTR (4 << 8) /* software interrupt */ -#define INTR_TYPE_PRIV_SW_EXCEPTION (5 << 8) /* ICE breakpoint - undocumented */ -#define INTR_TYPE_SOFT_EXCEPTION (6 << 8) /* software exception */ -#define INTR_TYPE_OTHER_EVENT (7 << 8) /* other event */ +#define INTR_TYPE_EXT_INTR (EVENT_TYPE_HWINT << 8) /* external interrupt */ +#define INTR_TYPE_RESERVED (EVENT_TYPE_RESERVED << 8) /* reserved */ +#define INTR_TYPE_NMI_INTR (EVENT_TYPE_NMI << 8) /* NMI */ +#define INTR_TYPE_HARD_EXCEPTION (EVENT_TYPE_HWFAULT << 8) /* processor exception */ +#define INTR_TYPE_SOFT_INTR (EVENT_TYPE_SWINT << 8) /* software interrupt */ +#define INTR_TYPE_PRIV_SW_EXCEPTION (EVENT_TYPE_PRIVSW << 8) /* ICE breakpoint - undocumented */ +#define INTR_TYPE_SOFT_EXCEPTION (EVENT_TYPE_SWFAULT << 8) /* software exception */ +#define INTR_TYPE_OTHER_EVENT (EVENT_TYPE_OTHER << 8) /* other event */ /* GUEST_INTERRUPTIBILITY_INFO flags. */ #define GUEST_INTR_STATE_STI 0x00000001