From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410591; cv=none; d=zohomail.com; s=zohoarc; b=lCZ+RRGtbRy/HpSUT7pPLSHvLpjHKAqxi0n7GV+HpyBO0PoOC2yioER1WuuOYeoxlkZV+s6iCGP+GfplUPhedUPdx/OfclJIjn9ed1zZPaP76SQXUsq1VhjwnkASm4+08AARTvt10iQTsWbgGL2oqv8i258xPuZdwUP0GPjsPUw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410591; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EuegESfmjtOPOYVDWqUdcW99Kxin32wkde1axwvFNOQ=; b=LPjXt15lPedVXn6/hJgDA4nhw/HubaumPbfIjE1HE/DRkVnGHiYiPqHWNXyGPWyOsBDrBhiQ7RlTAitlb39e/EiHCGvZ6r6+cNTDw3pIyH8dpQXHygVUqTxU3tvSSscOsODfyJXCf1/J1/YidhFy+t90K1AK0/AevfkWD1Ao2wM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410591094127.80115315146759; Fri, 19 Jul 2024 10:36:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVR-0004Aj-2a; Fri, 19 Jul 2024 13:34:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3cJSaZggKCj8xifoesjlhpphmf.dpnrfnv-efwfmopohov.psh@flex--whendrik.bounces.google.com>) id 1sUqUH-0002LG-VA for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:41 -0400 Received: from mail-wm1-x349.google.com ([2a00:1450:4864:20::349]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3cJSaZggKCj8xifoesjlhpphmf.dpnrfnv-efwfmopohov.psh@flex--whendrik.bounces.google.com>) id 1sUqUF-0004CP-0M for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:41 -0400 Received: by mail-wm1-x349.google.com with SMTP id 5b1f17b1804b1-427a7a65e7dso7655685e9.1 for ; Fri, 19 Jul 2024 09:29:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406577; x=1722011377; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=EuegESfmjtOPOYVDWqUdcW99Kxin32wkde1axwvFNOQ=; b=0ltkSNuraYIwg7A0L4pjawWGo/7/5zZaMCRNk456a1vjufscT/YsPOw+0zG6OPGLNM cyuKZaBj09PB7LsaBXS+cImRnxkqmTwjvQurByYboycCuswKnxkL4qCjyKet6dZ+6dz/ /qk3sGKXC+Wh8CCd1qcMp6SoALxsXZtVxVsM7B7FjR60/R3W6LEIkwZCX0eUFC9xrem0 3RJxi9OOoh7/jdBVV7Fa44kLh75igd+xyXz1ZkOUdeUUnNfo9Lb7BvPRLDAOfBLXJ+7L usLT0pehaFBsWEKGMjrXgRqbzAMmjtyWUMSXD9M/b17zI4SrjJK4fV83AyJXvdKBrwYZ Bubw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406577; x=1722011377; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=EuegESfmjtOPOYVDWqUdcW99Kxin32wkde1axwvFNOQ=; b=AqhGlN/KfC04y94vaG76HuXZXIk1xJ60/N4eivbr3Nz6gAgIEonwsKOOyXuCh0MnHh 78FPUZ2CRHWmq+zwnuJUP2hg1Z3Wr1P+8gcGGD0ITqMN8IWx8o7rKyqKf6AU85XmZ1wT 2pRa+dK+8a5s3erjPC+UJifRqeKT1AYSEGxuXwapl6f0fCwH2FjAmlQD2+ifw+MxLWV2 13o/hclXMIEizX6lSMJPm03b2IYzmjz64d2lOVrACtJmCrlXlDjDsxm1TEAwRyEQiXZ7 U4rUUDbRTPY7+pAuP3qvXxcivXEy+1ZeK6uBNxm5kv8fQ0Cu1W3Kr0XUNULuQ8vViZBV 0cww== X-Gm-Message-State: AOJu0YzcLinjCdzNFV/4MmLdha/xDzKF8hLxg/HMxbvHLb2qAS79XlEq yj3MrnQDzftP5VBXmn0VCy2qZLkJqrpF+zdpCNkh1qQhZmcnaCwyzVRIaR/IGIkblZCgWkl7U6Z zjfOOw8SPigMkKB+D+Q0Cos79tbN9cj8Ygqrg15TlpQz9jM2nBhZ6K0e5E9EN50R3vEm3OK+ZQS 5XTPIijit/Jza4iXsopxJCQqOaLilhkVNn+JSQUM0Cvw== X-Google-Smtp-Source: AGHT+IFv0AX1gUZXag6niCN+z/eeMcO9hLQ0PBPZwp13D1t/x/HZxPTHu7Fi/4o0Et9+KaOV4SYRmubJNz4xFw== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a05:600c:1c1d:b0:426:6761:2fea with SMTP id 5b1f17b1804b1-427d2ac80c1mr636785e9.3.1721406576860; Fri, 19 Jul 2024 09:29:36 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:21 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-2-whendrik@google.com> Subject: [PATCH v1 1/9] Add Intel RDT device to config. From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::349; envelope-from=3cJSaZggKCj8xifoesjlhpphmf.dpnrfnv-efwfmopohov.psh@flex--whendrik.bounces.google.com; helo=mail-wm1-x349.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:48 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410593176116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Change config to show RDT, add minimal code to the rdt.c module to make sure things still compile. Signed-off-by: Hendrik W=C3=BCthrich --- hw/i386/Kconfig | 4 ++++ hw/i386/meson.build | 1 + hw/i386/rdt.c | 49 +++++++++++++++++++++++++++++++++++++++++++ include/hw/i386/rdt.h | 12 +++++++++++ 4 files changed, 66 insertions(+) create mode 100644 hw/i386/rdt.c create mode 100644 include/hw/i386/rdt.h diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index f4a33b6c08..4dd05ed6f2 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -10,6 +10,9 @@ config SGX bool depends on KVM =20 +config RDT + bool + config PC bool imply APPLESMC @@ -26,6 +29,7 @@ config PC imply QXL imply SEV imply SGX + imply RDT imply TEST_DEVICES imply TPM_CRB imply TPM_TIS_ISA diff --git a/hw/i386/meson.build b/hw/i386/meson.build index 03aad10df7..fdbf5962b5 100644 --- a/hw/i386/meson.build +++ b/hw/i386/meson.build @@ -21,6 +21,7 @@ i386_ss.add(when: 'CONFIG_VMPORT', if_true: files('vmport= .c')) i386_ss.add(when: 'CONFIG_VTD', if_true: files('intel_iommu.c')) i386_ss.add(when: 'CONFIG_SGX', if_true: files('sgx-epc.c','sgx.c'), if_false: files('sgx-stub.c')) +i386_ss.add(when: 'CONFIG_RDT', if_true: files('rdt.c')) =20 i386_ss.add(when: 'CONFIG_ACPI', if_true: files('acpi-common.c')) i386_ss.add(when: 'CONFIG_PC', if_true: files( diff --git a/hw/i386/rdt.c b/hw/i386/rdt.c new file mode 100644 index 0000000000..0a5e95606b --- /dev/null +++ b/hw/i386/rdt.c @@ -0,0 +1,49 @@ +#include "qemu/osdep.h" +#include "hw/i386/rdt.h" +#include +#include "hw/qdev-properties.h" +#include "qemu/typedefs.h" +#include "qom/object.h" +#include "target/i386/cpu.h" +#include "hw/isa/isa.h" + +#define TYPE_RDT "rdt" + +OBJECT_DECLARE_TYPE(RDTState, RDTStateClass, RDT); + +struct RDTState { + ISADevice parent; +}; + +struct RDTStateClass { }; + +OBJECT_DEFINE_TYPE(RDTState, rdt, RDT, ISA_DEVICE); + +static Property rdt_properties[] =3D { + DEFINE_PROP_END_OF_LIST(), +}; + +static void rdt_init(Object *obj) +{ +} + +static void rdt_realize(DeviceState *dev, Error **errp) +{ +} + +static void rdt_finalize(Object *obj) +{ +} + +static void rdt_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->hotpluggable =3D false; + dc->desc =3D "RDT"; + dc->user_creatable =3D true; + dc->realize =3D rdt_realize; + + device_class_set_props(dc, rdt_properties); +} + diff --git a/include/hw/i386/rdt.h b/include/hw/i386/rdt.h new file mode 100644 index 0000000000..45e34d3103 --- /dev/null +++ b/include/hw/i386/rdt.h @@ -0,0 +1,12 @@ +#ifndef HW_RDT_H +#define HW_RDT_H + +#include +#include + +typedef struct RDTState RDTState; +typedef struct RDTStateInstance RDTStateInstance; +typedef struct RDTMonitor RDTMonitor; +typedef struct RDTAllocation RDTAllocation; + +#endif --=20 2.45.2.1089.g2a221341d9-goog From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410562; cv=none; d=zohomail.com; s=zohoarc; b=IQSJxDS8y907tiDUYo64cA7LmsXsmvjIm9MX+jOmE0q4frW3sa0Fl6rmaRduA9cTGrC0iB33f3qz/IR8ieVvwS5oNB0GnOmvOCSYELfTdKkrPY1Xu0XA48Vh+W52mPsPHHegTxdI1T0hrrU5cLM22/pBExtkEb87gW76fkgoQ64= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410562; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZW/1TRXl7m0ZA5No/Rpuot8W2YBPnMu73Yf0ZI7truY=; b=Uk3y4XyoKK11ow07dXIdE5cmzN0s4E8jahh0DamW92NFX7oL3yh77lyu9xFaPFT8GVGIdfxTsooKyXSwko7JyLrW9wxBUiZ5eMr9U0zlqcFGZ8jNpJ0sM1wDzXajYGqcyqf4ZcgXWdAh3YISoHD1Wy62f1hEsSXZEQdJy13kNzI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410562233925.6310543526919; Fri, 19 Jul 2024 10:36:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVP-00041Q-OK; Fri, 19 Jul 2024 13:34:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3c5SaZggKCkI0lirhvmoksskpi.gsquiqy-hiziprsrkry.svk@flex--whendrik.bounces.google.com>) id 1sUqUK-0002XA-SC for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:45 -0400 Received: from mail-wr1-x44a.google.com ([2a00:1450:4864:20::44a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3c5SaZggKCkI0lirhvmoksskpi.gsquiqy-hiziprsrkry.svk@flex--whendrik.bounces.google.com>) id 1sUqUI-0004Ho-53 for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:44 -0400 Received: by mail-wr1-x44a.google.com with SMTP id ffacd0b85a97d-36871eb0a8eso829269f8f.3 for ; Fri, 19 Jul 2024 09:29:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406579; x=1722011379; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=ZW/1TRXl7m0ZA5No/Rpuot8W2YBPnMu73Yf0ZI7truY=; b=vx1xH4s+/e763oZxceJNjjAhJP6s3jr0NWhDx8Ssw3kMQTaQQ69uiPRfFeSBV3AxHb n/N3JECNa5Wii6ASBng9XQ8TID9jCOGWWysKIUTzx3sTlIrJqlh4rHZ89FZ8yFXlWNk1 u8Ww032RCTXfYYnVQ7sd8AkhuN6kgsvgQL+u5XRcyCrN/w5AO9YqjZHQt8nQsFhmCXau VQG7qOqAH4FWCCgGCSVN94ZtBDvD/MPAs5Wfv02/9/7grcYmIJZCOi2bLhTinw+eNYIi r+IjBgPwPqH+BuqLdKiY7V31S3UxfnWSukydi/ZHfZa/Me3wQDBDzG4d4Z2xbh7hVkp5 JsZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406579; x=1722011379; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=ZW/1TRXl7m0ZA5No/Rpuot8W2YBPnMu73Yf0ZI7truY=; b=Dw+sya2Hb0Rle3nGbXZszRP1XiibbFkgEacqyZcDTC/pAZwL8I9X+BxTPhMVsDQA6b 4YuMIh18jKymMZyrMDnsasf4XNUmqxOpp7Oagxhy31snJHKUgn0XAVDrVt+pt7HOGn65 R4iA/04UHNSsaO4UJaP0rhy75jVJ5hY46DZmdiIk8MaTeno3zCz4jj2dIGTygrtAA7TX 4qLup6qnL7XodvlPM7ZnvjLRra0aLdeSGzjyQgnLXpaDpYM7V74MDqDR3+VL13c8eL0O Oors2s/iDJrgbsRL6GDIkeIgBWynjhKgoQjQIlPg6/n6fzBkbAhaAoC3drf1NKhOfbUh F9ew== X-Gm-Message-State: AOJu0YxhGwQmtUAAKiNAZRX/FH7OXkyHcL39Mlra1Zd39t9sXkuPxFrN lEG812r10J6Eiw/IbUQptRFPWO3Tghq9QooN48qgZsmWqVf5fYQqdEGV5hlXb9URWz/2egWXhL/ Kn63vPGgp177VXdWFTcnAE3oatj3P0mFCLL2/mmmfYvkfb2YCKtmr53+ZAjA1IlilH/jiwBeqys aknLJUvhCj2Kmid812anpwmDDuSHTXqaeb2lJnIDhqNw== X-Google-Smtp-Source: AGHT+IGQ7kObEYSbIaHxjCqWvS9YyvimJB1dV3hKVxmB/fVqBU15KuvEC7QzOnmZ8mE7sUg7x7vCGjCyjODQ/g== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a5d:6942:0:b0:367:4e17:3ec6 with SMTP id ffacd0b85a97d-369b674fe1cmr195f8f.2.1721406579302; Fri, 19 Jul 2024 09:29:39 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:22 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-3-whendrik@google.com> Subject: [PATCH v1 2/9] Add state for RDT device. From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::44a; envelope-from=3c5SaZggKCkI0lirhvmoksskpi.gsquiqy-hiziprsrkry.svk@flex--whendrik.bounces.google.com; helo=mail-wr1-x44a.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:48 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410563056116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Add structures and variables needed to emulate Intel RDT, including module-internal sturctures and state in ArchCPU. No functionality yet. Signed-off-by: Hendrik W=C3=BCthrich --- hw/i386/rdt.c | 33 +++++++++++++++++++++++++++++++++ target/i386/cpu.h | 5 +++++ 2 files changed, 38 insertions(+) diff --git a/hw/i386/rdt.c b/hw/i386/rdt.c index 0a5e95606b..cf246ab835 100644 --- a/hw/i386/rdt.c +++ b/hw/i386/rdt.c @@ -7,12 +7,44 @@ #include "target/i386/cpu.h" #include "hw/isa/isa.h" =20 +/* Max counts for allocation masks or CBMs. In other words, the size of re= spective MSRs*/ +#define MAX_L3_MASK_COUNT 128 +#define MAX_L2_MASK_COUNT 48 +#define MAX_MBA_THRTL_COUNT 31 + #define TYPE_RDT "rdt" +#define RDT_NUM_RMID_PROP "rmids" =20 OBJECT_DECLARE_TYPE(RDTState, RDTStateClass, RDT); =20 +struct RDTMonitor { + uint64_t count_local; + uint64_t count_remote; + uint64_t count_l3; +}; + +struct RDTAllocation { + uint32_t active_cos; +}; + +struct RDTStateInstance { + uint32_t active_rmid; + GArray *monitors; + + RDTState *rdtstate; +}; + struct RDTState { ISADevice parent; + + uint32_t rmids; + + GArray *rdtInstances; + GArray *allocations; + + uint32_t msr_L3_ia32_mask_n[MAX_L3_MASK_COUNT]; + uint32_t msr_L2_ia32_mask_n[MAX_L2_MASK_COUNT]; + uint32_t ia32_L2_qos_ext_bw_thrtl_n[MAX_MBA_THRTL_COUNT]; }; =20 struct RDTStateClass { }; @@ -20,6 +52,7 @@ struct RDTStateClass { }; OBJECT_DEFINE_TYPE(RDTState, rdt, RDT, ISA_DEVICE); =20 static Property rdt_properties[] =3D { + DEFINE_PROP_UINT32(RDT_NUM_RMID_PROP, RDTState, rmids, 256), DEFINE_PROP_END_OF_LIST(), }; =20 diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 1e121acef5..bd0bbb75f2 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1987,6 +1987,8 @@ typedef struct CPUArchState { =20 struct kvm_msrs; =20 +struct RDTState; +struct rdtStateInstance; /** * X86CPU: * @env: #CPUX86State @@ -2143,6 +2145,9 @@ struct ArchCPU { struct MemoryRegion *cpu_as_root, *cpu_as_mem, *smram; Notifier machine_done; =20 + /* Help the RDT MSRs find the RDT device */ + struct RDTStateInstance *rdt; + struct kvm_msrs *kvm_msr_buf; =20 int32_t node_id; /* NUMA node this CPU belongs to */ --=20 2.45.2.1089.g2a221341d9-goog From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410567; cv=none; d=zohomail.com; s=zohoarc; b=cIynLmvW6q9ld3scDOBmdLR5J7HGizxL9zyoC+4IzR3sbBsgGOGNqRSlXT5H8kjcU6roPJzem7YTMFV3PEAxW+rwXmR9SrwuCyJExc8tBZ6F3bN0trF9f2ezfiyQAXlEjdGDRm8CzjaLatDedYwC+XzfKEKEmj+CEMormJNvhxE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410567; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Bdpi4qxy6nysCNztiZCnDOGwe5xEskZ2zzdtlW790js=; b=BlIXfio+rkso8fhBknfOTmQmO0Yp+CKa7ura+QaIM7myRd4H5YwyYOkA18RcypDUg6cCZsK8v2Jv6ow8s7a8W8yjz8eKpBJNj40DjtBYu768NCncGHTaplXUaBotkh08W/iy2lGChIFi3KLmL9MNEFmBVR/hLcPoOTt9XqGQvbU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410567828581.349448432986; Fri, 19 Jul 2024 10:36:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVU-0004Os-Dg; Fri, 19 Jul 2024 13:35:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3dZSaZggKCkQ2nktjxoqmuumrk.iuswks0-jk1krtutmt0.uxm@flex--whendrik.bounces.google.com>) id 1sUqUN-0002iX-Pl for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:47 -0400 Received: from mail-yw1-x114a.google.com ([2607:f8b0:4864:20::114a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3dZSaZggKCkQ2nktjxoqmuumrk.iuswks0-jk1krtutmt0.uxm@flex--whendrik.bounces.google.com>) id 1sUqUL-0004KA-2i for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:47 -0400 Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-65026e6285eso52748867b3.3 for ; Fri, 19 Jul 2024 09:29:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406582; x=1722011382; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=Bdpi4qxy6nysCNztiZCnDOGwe5xEskZ2zzdtlW790js=; b=LLkZWVk+c7ytZvqZCYabBg+94rJjMkX148YperyM/DEZHT7gL/7Q3GQAX+9ty17hud jXPyI2LlZ/RT3xp7tPDq4sLnNtSJu1JqKI4SH13tdOKf2tpP9f3FTbpWMfXO8lBJh2Gu ygYyokFRvYwr4l3SzCulGgWdO5gjI0Vb79ogXHEwj4UZUO5NoEne8G71KlkHXDvH4kOz ut8Cf/jwm6PYP0hYf/JCRcPPdF6wsVCTE50fDwZhw//kRGq9M291NNrxkVq4r/v0b1Jm /0QMzmBWeKll9KNsaQaDS2fculF96HQuUHDqYmoKqd1dSTBJ2EvgPTbjeJmlJduUQbfE R4LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406582; x=1722011382; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Bdpi4qxy6nysCNztiZCnDOGwe5xEskZ2zzdtlW790js=; b=LBq3w1QqZWmybmWZo5VOppSTeAy3LIpXbd12CJ9F3Uc5JeHO82M9r9XaoovXuXas2k BIu5q/mbWJXpZPsWhRrMO4z9APDIkHA22CA+OhcvSZ7CvzShYqZsIiQgJPHH33WqEtSU h5F97/l1K71ZqHVozUKeaIYb2EDpykyMTVOk8gfz6G3SLnV0IwtQXzrANb46bVNVVTnt oFR3KuSSyb3XSPIiJwpK9H6P/Z/UJteDgnAUukNbLjovvDxbdVmLBn3pa4D9iM4Xwz6n EPiQBbIQHasp84qQGtsmomzDh8aTEbEsqgVITInwfnJfQENl/Tm5r51pPRbQQ2IA/D3n ypmQ== X-Gm-Message-State: AOJu0Yy67VNIVTLbVlH+ivZ5TWQhIcG52uvDjzl4Ne+/L0TL8LfibKQo +etoD4ZmUxKcS9mpGFDwxdFZ2J3/LcpbMhNhA44spBtQ+bht7n37XMYBdxRlnX4EgF34wjeWTMl WlV2YOm1hwuBlcLNlUouD3phoPIEGjNGEXCJSM+ZVaKCfhAaYD9Bkyk2h30UF0L7zoL16HxAXDE Dpnxx/oJ5KE2t5nWLVbKF5jDhKypJqiijU5yR8WxXZGQ== X-Google-Smtp-Source: AGHT+IGlcqf1STBCidAxMhwY1dOsbDWfoyQvprUg3OY3RwcRe+1LH6DCYrpj54q6mEz8aj/21Q1guY4CW0M2jw== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a05:6902:1003:b0:e03:a22c:df5 with SMTP id 3f1490d57ef6-e087042cc79mr867276.7.1721406581811; Fri, 19 Jul 2024 09:29:41 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:23 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-4-whendrik@google.com> Subject: [PATCH v1 3/9] Add init and realize funciontality for RDT device. From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::114a; envelope-from=3dZSaZggKCkQ2nktjxoqmuumrk.iuswks0-jk1krtutmt0.uxm@flex--whendrik.bounces.google.com; helo=mail-yw1-x114a.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:48 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410568888116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Add code to initialize all necessary state for the RDT device. Signed-off-by: Hendrik W=C3=BCthrich --- hw/i386/rdt.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/hw/i386/rdt.c b/hw/i386/rdt.c index cf246ab835..259dafc963 100644 --- a/hw/i386/rdt.c +++ b/hw/i386/rdt.c @@ -62,10 +62,38 @@ static void rdt_init(Object *obj) =20 static void rdt_realize(DeviceState *dev, Error **errp) { + CPUState *cs =3D first_cpu; + + RDTState *rdtDev =3D RDT(dev); + rdtDev->rdtInstances =3D g_array_new(false, true, sizeof(RDTStateInsta= nce)); + g_array_set_size(rdtDev->rdtInstances, cs->nr_cores); + CPU_FOREACH(cs) { + RDTStateInstance *rdt =3D &g_array_index(rdtDev->rdtInstances, RDT= StateInstance, cs->cpu_index); + + X86CPU *cpu =3D X86_CPU(cs); + rdt->rdtstate =3D rdtDev; + cpu->rdt =3D rdt; + + rdt->monitors =3D g_array_new(false, true, sizeof(RDTMonitor)); + rdt->rdtstate->allocations =3D g_array_new(false, true, sizeof(RDT= Allocation)); + + g_array_set_size(rdt->monitors, rdtDev->rmids); + g_array_set_size(rdt->rdtstate->allocations, rdtDev->rmids); + } } =20 static void rdt_finalize(Object *obj) { + CPUState *cs; + RDTState *rdt =3D RDT(obj); + + CPU_FOREACH(cs) { + RDTStateInstance *rdtInstance =3D &g_array_index(rdt->rdtInstances= , RDTStateInstance, cs->cpu_index); + g_array_free(rdtInstance->monitors, true); + g_array_free(rdtInstance->rdtstate->allocations, true); + } + + g_array_free(rdt->rdtInstances, true); } =20 static void rdt_class_init(ObjectClass *klass, void *data) --=20 2.45.2.1089.g2a221341d9-goog From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410598; cv=none; d=zohomail.com; s=zohoarc; b=UKrwCGUItDsuy9DwsZAhLuIBI6zLThWug7LtGIs/RAzX+nUHSL+Wv1NNHLz/VzbYp9m9dEOzT+JLxsqsTILUKM5b8RrWyTw99aD9hAVpq7yROXr49pkvqLoGiPnZz9lD848sHLNQunuRQ08rsag/XBE5pQGI3oGfFoqIvjcXMUU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410598; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eL5RLnzpAzf7TFLl1U6rQzX+YN9nJj6N45FXkDozc0Q=; b=hJ17YG0ZDjY2mbn/NzSL9AEU8Z+slb3eMEHECpfm4Kf2GfPafWD/ZB3Db59zjqTW6TCPNCR9r/jVpPwm0Npps3ID12EK+GqfdTC7meiHAgHCIIe3/TS/cEuHOe98CQhSMHgn4K70FSkbdbdHE7CTqlVJ7j3lL9SaGz1FKDsOWHY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410598428166.63157847373293; Fri, 19 Jul 2024 10:36:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVQ-00048l-GL; Fri, 19 Jul 2024 13:34:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3d5SaZggKCkY4pmvlzqsowwotm.kwuymu2-lm3mtvwvov2.wzo@flex--whendrik.bounces.google.com>) id 1sUqUO-0002lT-Jf for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:48 -0400 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3d5SaZggKCkY4pmvlzqsowwotm.kwuymu2-lm3mtvwvov2.wzo@flex--whendrik.bounces.google.com>) id 1sUqUL-0004PE-UW for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:48 -0400 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-664ccf0659cso56061607b3.1 for ; Fri, 19 Jul 2024 09:29:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406584; x=1722011384; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=eL5RLnzpAzf7TFLl1U6rQzX+YN9nJj6N45FXkDozc0Q=; b=JFmrCX8f296oNAcNMkNBnmXJVTXLbgoU9oZvHtzDVh0mK4Gf+uQC84ChaR29Uisr7U 9L5cw9HkjM0LE76ufmjNShxGYfr0hmjcm1Xxh+AAp8Qd/NHnrqyEfmWnnq+cudpjOv95 De9/6euNw1NXK0pSQeICzOTBigqCMKz2QfOevsi35eowkSOdwN1H9dbIysrFsfn5oOJr YyThPs080KioDxHZ9nO9uRbts/ioHBcY9OHytRLpvudldG3E+yG9nhgTEwpRWqVlRIEZ b4Rn4HOIXNpSLie98b3vQPXnMGDJ4MBrFJGigsE/lpNHyD14mhPM5xMbEMjc4BwzjnSr C7FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406584; x=1722011384; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=eL5RLnzpAzf7TFLl1U6rQzX+YN9nJj6N45FXkDozc0Q=; b=UTWm11Sqge7RCAn0l6ZQnFXG2QFFfgP0aWHha0eR0jx4ZKGhDk2slVfxv0Ui4H7lMC vZVf0U/URuP1FQ54TG3vjqfpxFY4V00RTf00qGXSB8i8sBHBAdLN3g73QfqV1HIXZuU9 jGt0TRPXWK1WAVFPusQLtsY+nI3pZ6mxtbMZpKO0NPRV9sK0hmYJzpfDUXN5yEjXcJNW KsVNtFY0kap7gHfSP+Z3AzRD142z17d/yodWh9fcRQCyzlv3FDJj3GajrsyQxfHHrLEW ApoYQ9HeOd+h7uG737+hbxkFA9pMKDDD80JCdZrM7yW8EX3JMU5IwD6N7mhmet74rSiW azyg== X-Gm-Message-State: AOJu0Yw/JuD9B7OahJb3KrxOHhtHiJqguc0M7c05cEcO2afab5eIfU2d k9qLpM2ARJRiPdRK1vJhWLbmFLYoNqjcg3Hl/lTDAQh3UmoVS0ZT9rg64j77tI15JCodTwjDLhI Hkj4hT4AqEVTE3eVz4mUGVM2zrt8DX6ApLPy2bBNVehXxMcIKwnPw/SEpPEG+7jzhvAwvXltkJB t4IpxsayBbICSS63jPvV/Oqx6nWvaikiV6l+CytTRqjg== X-Google-Smtp-Source: AGHT+IHHKg6j1+AEXWGqsFZwMZ13q4eDMIJ4oL7BiD6+1uRsdihxgaIIK8LxEHmDDBbHFzd3iR8BzLF/sFNH2A== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a05:690c:f14:b0:62c:ea0b:a44c with SMTP id 00721157ae682-66a6654ba97mr90457b3.2.1721406583914; Fri, 19 Jul 2024 09:29:43 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:24 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-5-whendrik@google.com> Subject: [PATCH v1 4/9] Add RDT functionality From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1149; envelope-from=3d5SaZggKCkY4pmvlzqsowwotm.kwuymu2-lm3mtvwvov2.wzo@flex--whendrik.bounces.google.com; helo=mail-yw1-x1149.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:50 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410599059116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Add RDT code to Associate CLOSID with RMID / set RMID for monitoring, write COS, and read monitoring data. This patch does not add code for the guest to interact through these things with MSRs, only the actual ability for the RDT device to do them. Signed-off-by: Hendrik W=C3=BCthrich --- hw/i386/rdt.c | 124 ++++++++++++++++++++++++++++++++++++++++++ include/hw/i386/rdt.h | 13 +++++ 2 files changed, 137 insertions(+) diff --git a/hw/i386/rdt.c b/hw/i386/rdt.c index 259dafc963..77b7b4f2d4 100644 --- a/hw/i386/rdt.c +++ b/hw/i386/rdt.c @@ -7,6 +7,11 @@ #include "target/i386/cpu.h" #include "hw/isa/isa.h" =20 +/* RDT Monitoring Event Codes */ +#define RDT_EVENT_L3_OCCUPANCY 1 +#define RDT_EVENT_L3_REMOTE_BW 2 +#define RDT_EVENT_L3_LOCAL_BW 3 + /* Max counts for allocation masks or CBMs. In other words, the size of re= spective MSRs*/ #define MAX_L3_MASK_COUNT 128 #define MAX_L2_MASK_COUNT 48 @@ -15,6 +20,9 @@ #define TYPE_RDT "rdt" #define RDT_NUM_RMID_PROP "rmids" =20 +#define QM_CTR_Error (1ULL << 63) +#define QM_CTR_Unavailable (1ULL << 62) + OBJECT_DECLARE_TYPE(RDTState, RDTStateClass, RDT); =20 struct RDTMonitor { @@ -49,6 +57,122 @@ struct RDTState { =20 struct RDTStateClass { }; =20 +bool rdt_associate_rmid_cos(uint64_t msr_ia32_pqr_assoc) { + X86CPU *cpu =3D X86_CPU(current_cpu); + RDTStateInstance *rdt =3D cpu->rdt; + RDTAllocation *alloc; + + uint32_t cos_id =3D (msr_ia32_pqr_assoc & 0xffff0000) >> 16; + uint32_t rmid =3D msr_ia32_pqr_assoc & 0xffff; + + if (cos_id > MAX_L3_MASK_COUNT || cos_id > MAX_L2_MASK_COUNT || + cos_id > MAX_MBA_THRTL_COUNT || rmid > rdt_max_rmid(rdt)) { + return false; + } + + rdt->active_rmid =3D rmid; + + alloc =3D &g_array_index(rdt->rdtstate->allocations, RDTAllocation, rm= id); + + alloc->active_cos =3D cos_id; + + return true; +} + +uint32_t rdt_read_l3_mask(uint32_t pos) +{ + X86CPU *cpu =3D X86_CPU(current_cpu); + RDTStateInstance *rdt =3D cpu->rdt; + + uint32_t val =3D rdt->rdtstate->msr_L3_ia32_mask_n[pos]; + return val; +} + +uint32_t rdt_read_l2_mask(uint32_t pos) +{ + X86CPU *cpu =3D X86_CPU(current_cpu); + RDTStateInstance *rdt =3D cpu->rdt; + + uint32_t val =3D rdt->rdtstate->msr_L2_ia32_mask_n[pos]; + return val; +} + +uint32_t rdt_read_mba_thrtl(uint32_t pos) +{ + X86CPU *cpu =3D X86_CPU(current_cpu); + RDTStateInstance *rdt =3D cpu->rdt; + + uint32_t val =3D rdt->rdtstate->ia32_L2_qos_ext_bw_thrtl_n[pos]; + return val; +} + +void rdt_write_msr_l3_mask(uint32_t pos, uint32_t val) { + X86CPU *cpu =3D X86_CPU(current_cpu); + RDTStateInstance *rdt =3D cpu->rdt; + + rdt->rdtstate->msr_L3_ia32_mask_n[pos] =3D val; +} + +void rdt_write_msr_l2_mask(uint32_t pos, uint32_t val) { + X86CPU *cpu =3D X86_CPU(current_cpu); + RDTStateInstance *rdt =3D cpu->rdt; + + rdt->rdtstate->msr_L2_ia32_mask_n[pos] =3D val; +} + +void rdt_write_mba_thrtl(uint32_t pos, uint32_t val) { + X86CPU *cpu =3D X86_CPU(current_cpu); + RDTStateInstance *rdt =3D cpu->rdt; + + rdt->rdtstate->ia32_L2_qos_ext_bw_thrtl_n[pos] =3D val; +} + +uint32_t rdt_max_rmid(RDTStateInstance *rdt) +{ + RDTState *rdtdev =3D rdt->rdtstate; + return rdtdev->rmids - 1; +} + +uint64_t rdt_read_event_count(RDTStateInstance *rdtInstance, uint32_t rmid= , uint32_t event_id) +{ + CPUState *cs; + RDTMonitor *mon; + RDTState *rdt =3D rdtInstance->rdtstate; + + uint32_t count_l3 =3D 0; + uint32_t count_local=3D 0; + uint32_t count_remote =3D 0; + + if (!rdt) { + return 0; + } + + CPU_FOREACH(cs) { + rdtInstance =3D &g_array_index(rdt->rdtInstances, RDTStateInstance= , cs->cpu_index); + if (rmid >=3D rdtInstance->monitors->len) { + return QM_CTR_Error; + } + mon =3D &g_array_index(rdtInstance->monitors, RDTMonitor, rmid); + count_l3 +=3D mon->count_l3; + count_local +=3D mon->count_local; + count_remote +=3D mon->count_remote; + } + + switch (event_id) { + case RDT_EVENT_L3_OCCUPANCY: + return count_l3 =3D=3D 0 ? QM_CTR_Unavailable : count_l3; + break; + case RDT_EVENT_L3_REMOTE_BW: + return count_remote =3D=3D 0 ? QM_CTR_Unavailable : count_remo= te; + break; + case RDT_EVENT_L3_LOCAL_BW: + return count_local =3D=3D 0 ? QM_CTR_Unavailable : count_local; + break; + default: + return QM_CTR_Error; + } +} + OBJECT_DEFINE_TYPE(RDTState, rdt, RDT, ISA_DEVICE); =20 static Property rdt_properties[] =3D { diff --git a/include/hw/i386/rdt.h b/include/hw/i386/rdt.h index 45e34d3103..8092c5f290 100644 --- a/include/hw/i386/rdt.h +++ b/include/hw/i386/rdt.h @@ -10,3 +10,16 @@ typedef struct RDTMonitor RDTMonitor; typedef struct RDTAllocation RDTAllocation; =20 #endif +bool rdt_associate_rmid_cos(uint64_t msr_ia32_pqr_assoc); + +void rdt_write_msr_l3_mask(uint32_t pos, uint32_t val); +void rdt_write_msr_l2_mask(uint32_t pos, uint32_t val); +void rdt_write_mba_thrtl(uint32_t pos, uint32_t val); + +uint32_t rdt_read_l3_mask(uint32_t pos); +uint32_t rdt_read_l2_mask(uint32_t pos); +uint32_t rdt_read_mba_thrtl(uint32_t pos); + +uint64_t rdt_read_event_count(RDTStateInstance *rdt, uint32_t rmid, uint32= _t event_id); +uint32_t rdt_max_rmid(RDTStateInstance *rdt); + --=20 2.45.2.1089.g2a221341d9-goog From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410545; cv=none; d=zohomail.com; s=zohoarc; b=W7yHPI0q46XjCIABS4dFtRXs8mHQ/RjMYToXvG+7w6yFtRs/mtXj0jda54pqWlLF8YzhEjwKlSZ+SIdCZJEs4MvdIjJaoKEf1gRh0nEK3BkdQWOTcDU0NKvRJ0C+LPbWXMpGtXZWmEVFv4yKY8aLb5VNlbaWM+H/DuuYwilkoFw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410545; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Trplm99Z1aULDWhzH5q5aD7aoAQd1PPsWcyH21okhHs=; b=R1++xFpbcmRVONyvu1zBNvSfrdmL8MB3muy0ufdOtf3np4FwRhSrL0uV69NMvlC4yuKHfdoPvXrLPA/f5xE9q4MYMOvvRlZflraAEbrBeda5q8DpFWh0TpNBejOPWXUiTizL7fivUqh9GULA/uWfZbh3gwngylMoUkcw9MgMq7g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410545150672.0320354451429; Fri, 19 Jul 2024 10:35:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVS-0004Fs-Na; Fri, 19 Jul 2024 13:34:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3eZSaZggKCkg6roxn1suqyyqvo.myw0ow4-no5ovxyxqx4.y1q@flex--whendrik.bounces.google.com>) id 1sUqUR-0002xy-1j for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:57 -0400 Received: from mail-wm1-x34a.google.com ([2a00:1450:4864:20::34a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3eZSaZggKCkg6roxn1suqyyqvo.myw0ow4-no5ovxyxqx4.y1q@flex--whendrik.bounces.google.com>) id 1sUqUO-0004UB-AQ for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:50 -0400 Received: by mail-wm1-x34a.google.com with SMTP id 5b1f17b1804b1-4265464ddc9so8431185e9.1 for ; Fri, 19 Jul 2024 09:29:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406586; x=1722011386; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=Trplm99Z1aULDWhzH5q5aD7aoAQd1PPsWcyH21okhHs=; b=aScLeyn4ICl3wlvBAFqhLpcg8SHpdqlNixLFhreL22M+5rc/f98c1RN1yuTOraMJWy ZwBDuEwrMFf1ci/cw9XF/TnJ/crPd7yAUU5buw8r8Z7fS0yvTMlnV2LPmUht8Mdqmeqp RbxZASzRywbU6BnWR7jYGp5a9BEW1uaer4mEW7z1rIgW6HXot2Lh9QGK7ZiOpcuqiRr8 +lwd5PZSxJDRjqOQdT/wbDhpXd2M+MjZEUdTOIDTcjqlBlnmGX0Yj2QBYhTjqSLsWmuU KFJmxNNQgCeJxVRr0pBSt/UqG1QXuSWG3GNCNGaUH7NuOZoZqAcdTpWvfeTguDc2v8Lq kMSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406586; x=1722011386; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Trplm99Z1aULDWhzH5q5aD7aoAQd1PPsWcyH21okhHs=; b=W8tKBmtNjipPugpjXkr/GaOmWYE19QmSDq4GtZmTpnmYwIFKpdKupAzljKIvAtRgwA yU5h/OU4BDfXi9XY9rU+8bPkVm65zmWhmp37MArWi4b64j/fiLIT8UxHTsHJ9hu1WyDW aSGWCS824km/j51iBw+iOXa6zeXcHaCoGNxY1B+D8u60gVVg4u51Qcn853x2I1HgTOs5 +WZ3W9SWu5vSroAXwnd4VhYKj3TEt0kmHHFSUCZtulzxNh1xQ+14QtaD116FvRSReaNs trH8fyAZ3nFLBkY4DsGwCAbE1pAPSOxbI7ng0/ndykmMYG9A4gDISEfQQGNjukR2d/FV kMpw== X-Gm-Message-State: AOJu0YxYE+3l+abFs7G86DrKLpAFuSZKCxaJBT87wQ+5/D/wHRGC/bjS v8fxsqnkP1TJlAKeedau4bEAGytOl09Hx6mKGksiN47xnTUjGn2ilBK494JklSOKbIFLk2Xcofb T/hkfjs9Ccx2AaHWcPyhP78dPG3a2QwPzorPxB9lB+sbX/aAGmPzf6D9pEQg3nzG6VtXDZCD2Qj U2TQKtOobkTtFr0PcoerY8hDLedaqdHf8XyhDZ6HuQww== X-Google-Smtp-Source: AGHT+IFCv+YVMM4ND7PfSuzkzJpeNK4OFi4OY06S8sH/6TRIjE5ggmufRHZWg5wMkZBhKdOa0TS4MoQv7HHRCw== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a05:600c:1e2a:b0:426:6771:f768 with SMTP id 5b1f17b1804b1-427da8b0fbdmr3605e9.2.1721406585797; Fri, 19 Jul 2024 09:29:45 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:25 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-6-whendrik@google.com> Subject: [PATCH v1 5/9] Add RDT device interface through MSRs From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::34a; envelope-from=3eZSaZggKCkg6roxn1suqyyqvo.myw0ow4-no5ovxyxqx4.y1q@flex--whendrik.bounces.google.com; helo=mail-wm1-x34a.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:50 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410546855116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Implement rdmsr and wrmsr for the following MSRs: * MSR_IA32_PQR_ASSOC * MSR_IA32_QM_EVTSEL * MSR_IA32_QM_CTR * IA32_L3_QOS_Mask_n * IA32_L2_QOS_Mask_n * IA32_L2_QoS_Ext_BW_Thrtl_n This allows for the guest to call RDT-internal functions to associate an RMID with a CLOSID / set an active RMID for monitoring, read monitoring data, and set classes of service. Signed-off-by: Hendrik W=C3=BCthrich --- hw/i386/rdt.c | 8 +++ include/hw/i386/rdt.h | 8 ++- target/i386/cpu.h | 14 +++++ target/i386/tcg/sysemu/misc_helper.c | 80 ++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 1 deletion(-) diff --git a/hw/i386/rdt.c b/hw/i386/rdt.c index 77b7b4f2d4..0d0e5751fc 100644 --- a/hw/i386/rdt.c +++ b/hw/i386/rdt.c @@ -17,6 +17,10 @@ #define MAX_L2_MASK_COUNT 48 #define MAX_MBA_THRTL_COUNT 31 =20 +#define CPUID_10_1_EDX_COS_MAX MAX_L3_MASK_COUNT +#define CPUID_10_2_EDX_COS_MAX MAX_L2_MASK_COUNT +#define CPUID_10_3_EDX_COS_MAX MAX_MBA_THRTL_COUNT + #define TYPE_RDT "rdt" #define RDT_NUM_RMID_PROP "rmids" =20 @@ -57,6 +61,10 @@ struct RDTState { =20 struct RDTStateClass { }; =20 +uint32_t rdt_get_cpuid_10_1_edx_cos_max(void) { return CPUID_10_1_EDX_COS_= MAX; } +uint32_t rdt_get_cpuid_10_2_edx_cos_max(void) { return CPUID_10_2_EDX_COS_= MAX; } +uint32_t rdt_get_cpuid_10_3_edx_cos_max(void) { return CPUID_10_3_EDX_COS_= MAX; } + bool rdt_associate_rmid_cos(uint64_t msr_ia32_pqr_assoc) { X86CPU *cpu =3D X86_CPU(current_cpu); RDTStateInstance *rdt =3D cpu->rdt; diff --git a/include/hw/i386/rdt.h b/include/hw/i386/rdt.h index 8092c5f290..51d36822f0 100644 --- a/include/hw/i386/rdt.h +++ b/include/hw/i386/rdt.h @@ -9,7 +9,12 @@ typedef struct RDTStateInstance RDTStateInstance; typedef struct RDTMonitor RDTMonitor; typedef struct RDTAllocation RDTAllocation; =20 -#endif +uint32_t rdt_get_cpuid_10_1_edx_cos_max(void); + +uint32_t rdt_get_cpuid_10_2_edx_cos_max(void); + +uint32_t rdt_get_cpuid_10_3_edx_cos_max(void); + bool rdt_associate_rmid_cos(uint64_t msr_ia32_pqr_assoc); =20 void rdt_write_msr_l3_mask(uint32_t pos, uint32_t val); @@ -23,3 +28,4 @@ uint32_t rdt_read_mba_thrtl(uint32_t pos); uint64_t rdt_read_event_count(RDTStateInstance *rdt, uint32_t rmid, uint32= _t event_id); uint32_t rdt_max_rmid(RDTStateInstance *rdt); =20 +#endif diff --git a/target/i386/cpu.h b/target/i386/cpu.h index bd0bbb75f2..0b3aca2d02 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -574,6 +574,17 @@ typedef enum X86Seg { #define MSR_IA32_VMX_TRUE_ENTRY_CTLS 0x00000490 #define MSR_IA32_VMX_VMFUNC 0x00000491 =20 +#define MSR_IA32_QM_EVTSEL 0x0c8d +#define MSR_IA32_QM_CTR 0x0c8e +#define MSR_IA32_PQR_ASSOC 0x0c8f + +#define MSR_IA32_L3_CBM_BASE 0x0c90 +#define MSR_IA32_L3_MASKS_END 0x0d0f +#define MSR_IA32_L2_CBM_BASE 0x0d10 +#define MSR_IA32_L2_CBM_END 0x0d4f +#define MSR_IA32_L2_QOS_Ext_BW_Thrtl_BASE 0xd50 +#define MSR_IA32_L2_QOS_Ext_BW_Thrtl_END 0xd80 + #define MSR_APIC_START 0x00000800 #define MSR_APIC_END 0x000008ff =20 @@ -1778,6 +1789,9 @@ typedef struct CPUArchState { uint64_t msr_ia32_feature_control; uint64_t msr_ia32_sgxlepubkeyhash[4]; =20 + uint64_t msr_ia32_qm_evtsel; + uint64_t msr_ia32_pqr_assoc; + uint64_t msr_fixed_ctr_ctrl; uint64_t msr_global_ctrl; uint64_t msr_global_status; diff --git a/target/i386/tcg/sysemu/misc_helper.c b/target/i386/tcg/sysemu/= misc_helper.c index 094aa56a20..e48e6b0da1 100644 --- a/target/i386/tcg/sysemu/misc_helper.c +++ b/target/i386/tcg/sysemu/misc_helper.c @@ -25,6 +25,7 @@ #include "exec/address-spaces.h" #include "exec/exec-all.h" #include "tcg/helper-tcg.h" +#include "hw/i386/rdt.h" #include "hw/i386/apic.h" =20 void helper_outb(CPUX86State *env, uint32_t port, uint32_t data) @@ -293,6 +294,44 @@ void helper_wrmsr(CPUX86State *env) env->msr_bndcfgs =3D val; cpu_sync_bndcs_hflags(env); break; + case MSR_IA32_QM_EVTSEL: + env->msr_ia32_qm_evtsel =3D val; + break; + case MSR_IA32_PQR_ASSOC: + { + env->msr_ia32_pqr_assoc =3D val; + bool res =3D rdt_associate_rmid_cos(val); + if (!res) + goto error; + break; + } + case MSR_IA32_L3_CBM_BASE ... MSR_IA32_L3_MASKS_END: + { + uint32_t pos =3D (uint32_t)env->regs[R_ECX] - MSR_IA32_L3_CBM_BASE; + if (pos >=3D rdt_get_cpuid_10_1_edx_cos_max()) { + goto error; + } + rdt_write_msr_l3_mask(pos, val); + break; + } + case MSR_IA32_L2_CBM_BASE ... MSR_IA32_L2_CBM_END: + { + uint32_t pos =3D (uint32_t)env->regs[R_ECX] - MSR_IA32_L2_CBM_BASE; + if (pos >=3D rdt_get_cpuid_10_2_edx_cos_max()) { + goto error; + } + rdt_write_msr_l2_mask(pos, val); + break; + } + case MSR_IA32_L2_QOS_Ext_BW_Thrtl_BASE ... MSR_IA32_L2_QOS_Ext_BW_Thrt= l_END: + { + uint32_t pos =3D (uint32_t)env->regs[R_ECX] - MSR_IA32_L2_QOS_Ext_= BW_Thrtl_BASE; + if (pos >=3D rdt_get_cpuid_10_3_edx_cos_max()) { + goto error; + } + rdt_write_mba_thrtl(pos, val); + break; + } case MSR_APIC_START ... MSR_APIC_END: { int ret; int index =3D (uint32_t)env->regs[R_ECX] - MSR_APIC_START; @@ -472,6 +511,44 @@ void helper_rdmsr(CPUX86State *env) val =3D (cs->nr_threads * cs->nr_cores) | (cs->nr_cores << 16); break; } + case MSR_IA32_QM_CTR: + val =3D rdt_read_event_count(x86_cpu->rdt, + (env->msr_ia32_qm_evtsel >> 32) & 0xff, + env->msr_ia32_qm_evtsel & 0xff); + break; + case MSR_IA32_QM_EVTSEL: + val =3D env->msr_ia32_qm_evtsel; + break; + case MSR_IA32_PQR_ASSOC: + val =3D env->msr_ia32_pqr_assoc; + break; + case MSR_IA32_L3_CBM_BASE ... MSR_IA32_L3_MASKS_END: + { + uint32_t pos =3D (uint32_t)env->regs[R_ECX] - MSR_IA32_L3_CBM_BASE; + if (pos >=3D rdt_get_cpuid_10_1_edx_cos_max()) { + goto error; + } + val =3D rdt_read_l3_mask(pos); + break; + } + case MSR_IA32_L2_CBM_BASE ... MSR_IA32_L2_CBM_END: + { + uint32_t pos =3D (uint32_t)env->regs[R_ECX] - MSR_IA32_L2_CBM_BASE; + if (pos >=3D rdt_get_cpuid_10_2_edx_cos_max()) { + goto error; + } + val =3D rdt_read_l2_mask(pos); + break; + } + case MSR_IA32_L2_QOS_Ext_BW_Thrtl_BASE ... MSR_IA32_L2_QOS_Ext_BW_Thrt= l_END: + { + uint32_t pos =3D (uint32_t)env->regs[R_ECX] - MSR_IA32_L2_QOS_Ext_= BW_Thrtl_BASE; + if (pos >=3D rdt_get_cpuid_10_3_edx_cos_max()) { + goto error; + } + val =3D rdt_read_mba_thrtl(pos); + break; + } case MSR_APIC_START ... MSR_APIC_END: { int ret; int index =3D (uint32_t)env->regs[R_ECX] - MSR_APIC_START; @@ -499,6 +576,9 @@ void helper_rdmsr(CPUX86State *env) } env->regs[R_EAX] =3D (uint32_t)(val); env->regs[R_EDX] =3D (uint32_t)(val >> 32); +return; +error: + raise_exception_err_ra(env, EXCP0D_GPF, 0, GETPC()); } =20 void helper_flush_page(CPUX86State *env, target_ulong addr) --=20 2.45.2.1089.g2a221341d9-goog From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410544; cv=none; d=zohomail.com; s=zohoarc; b=cihrEZx+5evIWeynkDXplma7Chyho8tqaQhfcgTBwBfhvvqKZ94ZgEdmuRasB7TX7Xrj7Zrh1rvvDbOkYw2W5sH7FA3D8NoFnTO5Pct/B1PeVuJqV40Lq9WB8qPiMIx9VkR5D/zhH+Atx+48BvazfngW2mh+zcF8wA+6w1zQzcY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410544; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LAGJSiOgd9dVOQDbtiYOShQjCMcc/VJ01zFY9NDoXtg=; b=H6SFv4lsp4nMehfDfN+RE6lpNRZYvxsGrQUFwot6vTLGFLEH5+gZIkDiBB24gBkzdtND1WgkVkDiB4l8i4gcj/yaeNb+h8o7zSeAfROhlqLqx0fL+hD7yMdWBFV3qlO/lNoPWHlgRPblD93At8isvxIR8CB8GDjn3sysiFeAiRk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410544715459.91687810486815; Fri, 19 Jul 2024 10:35:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVP-00044c-SX; Fri, 19 Jul 2024 13:34:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3e5SaZggKCko8tqzp3uws00sxq.o0y2qy6-pq7qxz0zsz6.03s@flex--whendrik.bounces.google.com>) id 1sUqUZ-0003On-56 for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:30:01 -0400 Received: from mail-wm1-x34a.google.com ([2a00:1450:4864:20::34a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3e5SaZggKCko8tqzp3uws00sxq.o0y2qy6-pq7qxz0zsz6.03s@flex--whendrik.bounces.google.com>) id 1sUqUP-0004WD-TG for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:29:51 -0400 Received: by mail-wm1-x34a.google.com with SMTP id 5b1f17b1804b1-426703ac975so8547455e9.0 for ; Fri, 19 Jul 2024 09:29:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406588; x=1722011388; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=LAGJSiOgd9dVOQDbtiYOShQjCMcc/VJ01zFY9NDoXtg=; b=IGa9YBI+NxUoMjsEuPiXCUYC78ipBIQ701/fcbgEsvDPrxnu4Tma1KHl2TFToJES3F vI5x2kFojPyhwkRQPHfCtFRzBQX4v1YYKFErXTfvraU9qYLMfAgkzimOD5/eBzg7WnzP Vw412e9QkDY1+8YIxpdbG0MHz1zg9iSoFSskPyfuBBIsQ9kwHeuA3+CWaGpRM8vjRH3e gUyFpjKwCHDkiseu3pRsSoFOOpauELWsOUDCsOTzGgWE4qLm+Q69JM5zcfFQ+lQ05MlQ J83jn9Wo0zGrOfwdxnzc4RLkyieZIw0k8Y8x2QkZnJTh0YpQmNng9QF/Y3YahAsXMcfq wD2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406588; x=1722011388; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=LAGJSiOgd9dVOQDbtiYOShQjCMcc/VJ01zFY9NDoXtg=; b=rZXSaNHuwK3b5fm5OFXpq2eq6EofdGc/fC3oeA6lQTb1ZlnuGyZMo1Tkq3VRFw+e20 EKtfffz7bjlXNulW1n80mIqOg2a56LxGBFcba44ee6Odi9DJa6u4oljaxEYvQAxdh2me UkEixzcemEQ3SNU1mrh+OqkCH/3s2YrkWYW7wgxE+MKguQ06Wtoqx4rIFjM99YR9FxIu j/dsM4UKZ6BCOhcvsa2QvE8mH/h7nsZ5sy3tJV5lo1AMuy9s7GGdwhc10ymByTOvLvCS Gs7z5TuJ3s5q+TKT5LUeRzuV+OBuFISeGV7h2LTGvOhyzs9CgNPNZtgieO3vGOXcuUqk DcKw== X-Gm-Message-State: AOJu0YwV64lCQE/D1rHvZ6BM4uWdQ9HtxF/wszrfwpFI8sDNoLMn6fm5 COt2IDUYOn9F4eC2z1MDARtRk6tUVK/4LJ/rXl4GJL0UQuqdeuJPHnha5UfiTrem4Xr+grWAkxy GZWg7f8GKBUV4Au8WDdVce82n6h5PaYcezoGPoD8M9d0VhxZHFhV96BoiR0rDLHjip0/v2C/gbx DqvLl8BJw7oR6PArfesIFzmTpRDPtVml86hy0Bo5g9gw== X-Google-Smtp-Source: AGHT+IE4rczDTzPH+DQuLYL1ci+PkW1+Az9jJaU6RIzOH5qimA24FyprXqGy3ymr4+EEJ6CgOwMOJPGm/ASY6Q== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a05:600c:5025:b0:426:674a:4e4e with SMTP id 5b1f17b1804b1-427da9b96c5mr1735e9.4.1721406587692; Fri, 19 Jul 2024 09:29:47 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:26 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-7-whendrik@google.com> Subject: [PATCH v1 6/9] Add CPUID enumeration for RDT From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::34a; envelope-from=3e5SaZggKCko8tqzp3uws00sxq.o0y2qy6-pq7qxz0zsz6.03s@flex--whendrik.bounces.google.com; helo=mail-wm1-x34a.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:50 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410546862116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Add CPUID enumeration for intel RDT monitoring and allocation, as well as the flags used in the enumeration code. Signed-off-by: Hendrik W=C3=BCthrich --- hw/i386/rdt.c | 29 ++++++++++++++ include/hw/i386/rdt.h | 29 ++++++++++++++ target/i386/cpu.c | 91 +++++++++++++++++++++++++++++++++++++++++++ target/i386/cpu.h | 5 +++ 4 files changed, 154 insertions(+) diff --git a/hw/i386/rdt.c b/hw/i386/rdt.c index 0d0e5751fc..5ad05f996a 100644 --- a/hw/i386/rdt.c +++ b/hw/i386/rdt.c @@ -17,8 +17,18 @@ #define MAX_L2_MASK_COUNT 48 #define MAX_MBA_THRTL_COUNT 31 =20 +/* RDT L3 Allocation features */ +#define CPUID_10_1_EAX_CBM_LENGTH 0xf +#define CPUID_10_1_EBX_CBM 0x0 +#define CPUID_10_1_ECX_CDP 0x0 // to enable, it would be (1U = << 2) #define CPUID_10_1_EDX_COS_MAX MAX_L3_MASK_COUNT +/* RDT L2 Allocation features*/ +#define CPUID_10_2_EAX_CBM_LENGTH 0xf +#define CPUID_10_2_EBX_CBM 0x0 #define CPUID_10_2_EDX_COS_MAX MAX_L2_MASK_COUNT +/* RDT MBA features */ +#define CPUID_10_3_EAX_THRTL_MAX 89 +#define CPUID_10_3_ECX_LINEAR_RESPONSE (1U << 2) #define CPUID_10_3_EDX_COS_MAX MAX_MBA_THRTL_COUNT =20 #define TYPE_RDT "rdt" @@ -61,8 +71,27 @@ struct RDTState { =20 struct RDTStateClass { }; =20 +uint32_t rdt_get_cpuid_15_0_edx_l3(void) { return CPUID_15_1_EDX_L3_OCCUPA= NCY | CPUID_15_1_EDX_L3_TOTAL_BW | CPUID_15_1_EDX_L3_LOCAL_BW; } + +uint32_t rdt_cpuid_15_1_edx_l3_total_bw_enabled(void) { return CPUID_15_1_= EDX_L3_TOTAL_BW; } +uint32_t rdt_cpuid_15_1_edx_l3_local_bw_enabled(void) { return CPUID_15_1_= EDX_L3_LOCAL_BW; } +uint32_t rdt_cpuid_15_1_edx_l3_occupancy_enabled(void) { return CPUID_15_1= _EDX_L3_OCCUPANCY; } + +uint32_t rdt_cpuid_10_0_ebx_l3_cat_enabled(void) { return CPUID_10_0_EBX_L= 3_CAT; } +uint32_t rdt_cpuid_10_0_ebx_l2_cat_enabled(void) { return CPUID_10_0_EBX_L= 2_CAT; } +uint32_t rdt_cpuid_10_0_ebx_l2_mba_enabled(void) { return CPUID_10_0_EBX_M= BA; } + +uint32_t rdt_get_cpuid_10_1_eax_cbm_length(void) { return CPUID_10_1_EAX_C= BM_LENGTH; } +uint32_t rdt_cpuid_10_1_ebx_cbm_enabled(void) { return CPUID_10_1_EBX_CBM;= } +uint32_t rdt_cpuid_10_1_ecx_cdp_enabled(void) { return CPUID_10_1_ECX_CDP;= } uint32_t rdt_get_cpuid_10_1_edx_cos_max(void) { return CPUID_10_1_EDX_COS_= MAX; } + +uint32_t rdt_get_cpuid_10_2_eax_cbm_length(void) { return CPUID_10_2_EAX_C= BM_LENGTH; } +uint32_t rdt_cpuid_10_2_ebx_cbm_enabled(void) { return CPUID_10_2_EBX_CBM;= } uint32_t rdt_get_cpuid_10_2_edx_cos_max(void) { return CPUID_10_2_EDX_COS_= MAX; } + +uint32_t rdt_get_cpuid_10_3_eax_thrtl_max(void) { return CPUID_10_3_EAX_TH= RTL_MAX; } +uint32_t rdt_cpuid_10_3_eax_linear_response_enabled(void) { return CPUID_1= 0_3_ECX_LINEAR_RESPONSE; } uint32_t rdt_get_cpuid_10_3_edx_cos_max(void) { return CPUID_10_3_EDX_COS_= MAX; } =20 bool rdt_associate_rmid_cos(uint64_t msr_ia32_pqr_assoc) { diff --git a/include/hw/i386/rdt.h b/include/hw/i386/rdt.h index 51d36822f0..74aba33995 100644 --- a/include/hw/i386/rdt.h +++ b/include/hw/i386/rdt.h @@ -4,15 +4,44 @@ #include #include =20 +/* RDT L3 Cache Monitoring Technology */ +#define CPUID_15_0_EDX_L3 (1U << 1) +#define CPUID_15_1_EDX_L3_OCCUPANCY (1U << 0) +#define CPUID_15_1_EDX_L3_TOTAL_BW (1U << 1) +#define CPUID_15_1_EDX_L3_LOCAL_BW (1U << 2) + +/* RDT Cache Allocation Technology */ +#define CPUID_10_0_EBX_L3_CAT (1U << 1) +#define CPUID_10_0_EBX_L2_CAT (1U << 2) +#define CPUID_10_0_EBX_MBA (1U << 3) +#define CPUID_10_0_EDX CPUID_10_0_EBX_L3_CAT | CPUID_10_0_EBX_L2_CAT | CPU= ID_10_0_EBX_MBA + typedef struct RDTState RDTState; typedef struct RDTStateInstance RDTStateInstance; typedef struct RDTMonitor RDTMonitor; typedef struct RDTAllocation RDTAllocation; =20 +uint32_t rdt_get_cpuid_15_0_edx_l3(void); + +uint32_t rdt_cpuid_15_1_edx_l3_total_bw_enabled(void); +uint32_t rdt_cpuid_15_1_edx_l3_local_bw_enabled(void); +uint32_t rdt_cpuid_15_1_edx_l3_occupancy_enabled(void); + +uint32_t rdt_cpuid_10_0_ebx_l3_cat_enabled(void); +uint32_t rdt_cpuid_10_0_ebx_l2_cat_enabled(void); +uint32_t rdt_cpuid_10_0_ebx_l2_mba_enabled(void); + +uint32_t rdt_get_cpuid_10_1_eax_cbm_length(void); +uint32_t rdt_cpuid_10_1_ebx_cbm_enabled(void); +uint32_t rdt_cpuid_10_1_ecx_cdp_enabled(void); uint32_t rdt_get_cpuid_10_1_edx_cos_max(void); =20 +uint32_t rdt_get_cpuid_10_2_eax_cbm_length(void); +uint32_t rdt_cpuid_10_2_ebx_cbm_enabled(void); uint32_t rdt_get_cpuid_10_2_edx_cos_max(void); =20 +uint32_t rdt_get_cpuid_10_3_eax_thrtl_max(void); +uint32_t rdt_cpuid_10_3_eax_linear_response_enabled(void); uint32_t rdt_get_cpuid_10_3_edx_cos_max(void); =20 bool rdt_associate_rmid_cos(uint64_t msr_ia32_pqr_assoc); diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 4688d140c2..c61981bf82 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -42,6 +42,7 @@ #include "hw/boards.h" #include "hw/i386/sgx-epc.h" #endif +#include "hw/i386/rdt.h" =20 #include "disas/capstone.h" #include "cpu-internal.h" @@ -6629,6 +6630,96 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, assert(!(*eax & ~0x1f)); *ebx &=3D 0xffff; /* The count doesn't need to be reliable. */ break; +#ifndef CONFIG_USER_ONLY + case 0xF: + /* Shared Resource Monitoring Enumeration Leaf */ + *eax =3D 0; + *ebx =3D 0; + *ecx =3D 0; + *edx =3D 0; + if (!(env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_PQM)) + break; + assert(cpu->rdt); + /* Non-zero count is ResId */ + switch (count) { + /* Monitoring Resource Type Enumeration */ + case 0: + *edx =3D env->features[FEAT_RDT_15_0_EDX]; + *ebx =3D rdt_max_rmid(cpu->rdt); + break; + /* L3 Cache Monitoring Capability Enumeration Data */ + case 1: + /* Upscaling Factor */ + *ebx =3D 1; + /* MaxRMID */ + *ecx =3D rdt_max_rmid(cpu->rdt); + /* Set L3 Total BW */ + *edx |=3D rdt_cpuid_15_1_edx_l3_total_bw_enabled(); + /* Set L3 Local BW */ + *edx |=3D rdt_cpuid_15_1_edx_l3_local_bw_enabled(); + /* Set L3 Occupancy */ + *edx |=3D rdt_cpuid_15_1_edx_l3_occupancy_enabled(); + break; + default: + break; + } + break; + case 0x10: + /* Shared Resource Director Technology Allocation Enumeration Leaf= */ + *eax =3D 0; + *ebx =3D 0; + *ecx =3D 0; + *edx =3D 0; + if (!(env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_PQE)) + break; + assert(cpu->rdt); + /* Non-zero count is ResId */ + switch (count) { + /* Cache Allocation Technology Available Resource Types */ + case 0: + /* Set L3 CAT */ + *ebx |=3D rdt_cpuid_10_0_ebx_l3_cat_enabled(); + /* Set L2 CAT */ + *ebx |=3D rdt_cpuid_10_0_ebx_l2_cat_enabled(); + /* Set MBA */ + *ebx |=3D rdt_cpuid_10_0_ebx_l2_mba_enabled(); + // *edx =3D env->features[FEAT_RDT_10_0_EBX]; + break; + case 1: + /* Length of capacity bitmask in -1 notation */ + *eax =3D rdt_get_cpuid_10_1_eax_cbm_length(); + /* Capability bit mask */ + *ebx =3D rdt_cpuid_10_1_ebx_cbm_enabled(); + /* Code and Data priotitization */ + *ecx |=3D rdt_cpuid_10_1_ecx_cdp_enabled(); + /* Support for n COS masks (zero-referenced)*/ + *edx =3D rdt_get_cpuid_10_1_edx_cos_max(); + break; + case 2: + /* Length of capacity bitmask in -1 notation */ + *eax =3D rdt_get_cpuid_10_2_eax_cbm_length(); + /* Capability bit mask */ + *ebx =3D rdt_cpuid_10_2_ebx_cbm_enabled(); + /* Support for n COS masks (zero-referenced)*/ + *edx =3D rdt_get_cpuid_10_2_edx_cos_max(); + break; + case 3: + /* Max throttling value -1 (89 means 90) */ + *eax =3D rdt_get_cpuid_10_3_eax_thrtl_max(); + /* Linear response of delay values */ + *ecx =3D rdt_cpuid_10_3_eax_linear_response_enabled(); + /* Max number of CLOS -1 (15 means 16) */ + *edx =3D rdt_get_cpuid_10_3_edx_cos_max(); + break; + default: + *eax =3D 0; + *ebx =3D 0; + *ecx =3D 0; + *edx =3D 0; + break; + } + break; +#endif case 0x1C: if (cpu->enable_pmu && (env->features[FEAT_7_0_EDX] & CPUID_7_0_ED= X_ARCH_LBR)) { x86_cpu_get_supported_cpuid(0x1C, 0, eax, ebx, ecx, edx); diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 0b3aca2d02..12a4b989af 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -673,6 +673,7 @@ typedef enum FeatureWord { FEAT_XSAVE_XSS_HI, /* CPUID[EAX=3D0xd,ECX=3D1].EDX */ FEAT_7_1_EDX, /* CPUID[EAX=3D7,ECX=3D1].EDX */ FEAT_7_2_EDX, /* CPUID[EAX=3D7,ECX=3D2].EDX */ + FEAT_RDT_15_0_EDX, /* CPUID[EAX=3D0xf,ECX=3D0].EDX (RDT CMT/MBM) */ FEATURE_WORDS, } FeatureWord; =20 @@ -843,8 +844,12 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *cp= u, FeatureWord w); #define CPUID_7_0_EBX_INVPCID (1U << 10) /* Restricted Transactional Memory */ #define CPUID_7_0_EBX_RTM (1U << 11) +/* Resource Director Technology Monitoring */ +#define CPUID_7_0_EBX_PQM (1U << 12) /* Memory Protection Extension */ #define CPUID_7_0_EBX_MPX (1U << 14) +/* Resource Director Technology Allocation */ +#define CPUID_7_0_EBX_PQE (1U << 15) /* AVX-512 Foundation */ #define CPUID_7_0_EBX_AVX512F (1U << 16) /* AVX-512 Doubleword & Quadword Instruction */ --=20 2.45.2.1089.g2a221341d9-goog From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410571; cv=none; d=zohomail.com; s=zohoarc; b=e1aF5RMfzIM57P16PDJ+s6LxpGq+N7w0+FoHeCUPST0O9ViYV9uINVdn8kYo3/8xiL6DDtB9/kYlrB8wdLKQaZdcVWwM0f1AzuV0Wl88xxgLfYDuKtE8fU+P7EPmDqOQBMhteJ9TiS+d6ehhj/vh1nmIcO9KkuQONaZ+FzyKAko= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410571; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IoNUsPYmgHKzmPR7JWJUwxpa2sExJSFmT0g3Tjq5GOc=; b=fZMf5hdjtEnFVhghECOoVV34VG8YNPebVartfpbHabPWlkUnrzX5D+n6kxQWkGGbg9DxjI1F1BvrSEBe3uiGXqiLJzlVks9DUYPezye+S0CCyAEEK1h3nxP+kkzMJJASZ0dM3KeQczdrpdof4KV0L+mKwtyEtUyXDylWHwnSAiA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410571720928.663086777204; Fri, 19 Jul 2024 10:36:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVW-0004R1-It; Fri, 19 Jul 2024 13:35:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3fZSaZggKCkwAvs1r5wyu22uzs.q204s08-rs9sz121u18.25u@flex--whendrik.bounces.google.com>) id 1sUqUd-0003RB-7x for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:30:03 -0400 Received: from mail-wm1-x34a.google.com ([2a00:1450:4864:20::34a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3fZSaZggKCkwAvs1r5wyu22uzs.q204s08-rs9sz121u18.25u@flex--whendrik.bounces.google.com>) id 1sUqUX-0004ZV-R3 for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:30:00 -0400 Received: by mail-wm1-x34a.google.com with SMTP id 5b1f17b1804b1-42725d3ae3eso13917935e9.3 for ; Fri, 19 Jul 2024 09:29:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406590; x=1722011390; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=IoNUsPYmgHKzmPR7JWJUwxpa2sExJSFmT0g3Tjq5GOc=; b=ztoUa8lBCPaV01bKW3MHNVZ7DO/eLfpXaf9MW0JaorvjoJOOWuoqypakuB5Ik3h6JZ /liQjGIkO5Dz1jgK+2KKO7vyHPfaHzYPrPB4AE3Hfbo6ePkkM/VlWvs2X+aCgVU6MSiv euzg0FfDlqCPIPUiTeLWVzoccPyqJ+F2EEkejjSmkxc6mXHkREyIRMUr2r1aPjqa8wGc Te67LrsgloBbQfM+v//vgV82fShBtRil79+c4kkwGKOuJ6ND/PtW5z3GnECbAWqiUg8b sST3X37AxaXAjp5AfivMCmy7d/Srtxa6m+WJHeuYgFmFU+QO+S4OVM16CV76iJkagDX8 6Iuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406590; x=1722011390; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=IoNUsPYmgHKzmPR7JWJUwxpa2sExJSFmT0g3Tjq5GOc=; b=f2/8/+cqmBRPqqphVIERSDNJ6y2fifgoTUJZ42y+bu3IdXE98bwBZcK0nxCHmHcIPM 3nGxzEwm1jDWk2T4eIRQZXYVGOnM/n5juLZpsLKRSWlKvAgVRy0hu/mDve0i37Dr22lE AtiwPfyIb3h7m8SuzrSvfUFyoxVqnIbbihtX/L744mh8XsCV1SSjGzIZsFtfVC7p8438 UG2GLyj+S5Y0MX/azzjFQyx5jv9F2idII4+sYIZ6QtjI4OEIuqCBSNcu6HRpxVz5tzx8 BqMvpRCXzrA/1I/Yd7W/BEXcLmZUEWmZCwRfryU1nb123iCGm90+z09dQekdsv+ffHfW w7ug== X-Gm-Message-State: AOJu0Yw+OBBGzrE3ocMtRB9k+CkGlu/FtBeQDScHcwi5+MP99IK1sbb9 dEikti3WWrB99pC0edO2cKCZ4DIsWb75/g+gqfISz812OK8lPh7cd2msZR/71ZO5RNMGRSeLpfb NveITVMFih5vpKb0eZkoXoSU2X/jI5FSsYlGxnw+oYnCoChKMMKmHORwhL4ym8Dm7BjVjHG83aD omfKOa3jamQoIXwNKeWJ0g8ZoL1nqhSblCdUOyfnhqlw== X-Google-Smtp-Source: AGHT+IEcAWmxhWNNuP9Js5a/LU2TuakOKOVQv2oo0CgQUIQ4sbrPFZLKWsEQnzZLpJM665bSO8N8UwnBV2FMQw== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a05:600c:1592:b0:427:d8f1:e29e with SMTP id 5b1f17b1804b1-427daa67d64mr335e9.8.1721406589675; Fri, 19 Jul 2024 09:29:49 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:27 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-8-whendrik@google.com> Subject: [PATCH v1 7/9] Add RDT feature flags. From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::34a; envelope-from=3fZSaZggKCkwAvs1r5wyu22uzs.q204s08-rs9sz121u18.25u@flex--whendrik.bounces.google.com; helo=mail-wm1-x34a.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:50 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410572930116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Add RDT features to feature word / TCG. Signed-off-by: Hendrik W=C3=BCthrich --- target/i386/cpu.c | 30 ++++++++++++++++++++++++++++-- target/i386/cpu.h | 2 ++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index c61981bf82..1cf5e5d5ff 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -864,7 +864,8 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendo= r1, CPUID_7_0_EBX_CLFLUSHOPT | \ CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_MPX | CPUID_7_0_EBX_FSGSBASE = | \ CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_RDSEED |= \ - CPUID_7_0_EBX_SHA_NI | CPUID_7_0_EBX_KERNEL_FEATURES) + CPUID_7_0_EBX_SHA_NI | CPUID_7_0_EBX_KERNEL_FEATURES | \ + CPUID_7_0_EBX_PQM | CPUID_7_0_EBX_PQE) /* missing: CPUID_7_0_EBX_HLE CPUID_7_0_EBX_INVPCID, CPUID_7_0_EBX_RTM */ @@ -900,6 +901,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendo= r1, #define TCG_SGX_12_0_EAX_FEATURES 0 #define TCG_SGX_12_0_EBX_FEATURES 0 #define TCG_SGX_12_1_EAX_FEATURES 0 +#define TCG_RDT_15_0_EDX_FEATURES CPUID_15_0_EDX_L3 =20 #if defined CONFIG_USER_ONLY #define CPUID_8000_0008_EBX_KERNEL_FEATURES (CPUID_8000_0008_EBX_IBPB | \ @@ -1057,7 +1059,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { "fsgsbase", "tsc-adjust", "sgx", "bmi1", "hle", "avx2", NULL, "smep", "bmi2", "erms", "invpcid", "rtm", - NULL, NULL, "mpx", NULL, + "rdt-m", NULL, "mpx", "rdt-a", "avx512f", "avx512dq", "rdseed", "adx", "smap", "avx512ifma", "pcommit", "clflushopt", "clwb", "intel-pt", "avx512pf", "avx512er", @@ -1607,6 +1609,30 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D= { }, .tcg_features =3D TCG_SGX_12_1_EAX_FEATURES, }, + + [FEAT_RDT_10_0_EBX] =3D { + .type =3D CPUID_FEATURE_WORD, + .feat_names =3D { + NULL, "l3-cat", "l2-cat", "mba" + }, + .cpuid =3D { + .eax =3D 0x10, + .needs_ecx =3D true, .ecx =3D 0, + .reg =3D R_EBX, + } + }, + [FEAT_RDT_15_0_EDX] =3D { + .type =3D CPUID_FEATURE_WORD, + .feat_names =3D { + [1] =3D "l3-cmt" + }, + .cpuid =3D { + .eax =3D 0xf, + .needs_ecx =3D true, .ecx =3D 0, + .reg =3D R_EDX, + }, + .tcg_features =3D TCG_RDT_15_0_EDX_FEATURES, + }, }; =20 typedef struct FeatureMask { diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 12a4b989af..bf2f3c07a7 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -673,7 +673,9 @@ typedef enum FeatureWord { FEAT_XSAVE_XSS_HI, /* CPUID[EAX=3D0xd,ECX=3D1].EDX */ FEAT_7_1_EDX, /* CPUID[EAX=3D7,ECX=3D1].EDX */ FEAT_7_2_EDX, /* CPUID[EAX=3D7,ECX=3D2].EDX */ + FEAT_RDT_15_0_EBX, /* CPUID[EAX=3D0xf,ECX=3D0].EBX (RDT CMT/MBM) */ FEAT_RDT_15_0_EDX, /* CPUID[EAX=3D0xf,ECX=3D0].EDX (RDT CMT/MBM) */ + FEAT_RDT_10_0_EBX, /* CPUID[EAX=3D0x10,ECX=3D0].EBX (RDT CAT/MBA) */ FEATURE_WORDS, } FeatureWord; =20 --=20 2.45.2.1089.g2a221341d9-goog From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410544; cv=none; d=zohomail.com; s=zohoarc; b=JQU9Rrq1PJm7Fl+0ga2eo5C9SDEu4xKXuF2QAAt0iUc9JgVPaLi/hijQOovY4YqgCSKvbDxfMdb6CWEBng9xZrAKZP0i90zKvcuV2m2X5ukgepPJ5LeGcA1E6tAoRPf7hB4GnbYahFCCKg91qvZKYtjqKQKfR8h1xZFKN9g6QpE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410544; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ojXTO+gqQjO+YFItkBY171VxHM34+l/GDY7MCVJj9s0=; b=NEskO0UL1UYl43AJncjkgUk9Ok0yNwPP6EXQWKVIhgW2kkWIhcZVGEZ/2OscEh6VBLHCAg5KURTjCKRIWzYNPdcrmHG94jeVAUa0MyKPXfEMK78/j+uAAA6JqpYK/8I/hpx89FOMlwb28zrcYCyf5MAC6V8BsAPOvpubop6EIvw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410544843454.08229171344317; Fri, 19 Jul 2024 10:35:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVT-0004KZ-Hu; Fri, 19 Jul 2024 13:34:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3gJSaZggKCk8Dyv4u8z1x55x2v.t537v3B-uvCv2454x4B.58x@flex--whendrik.bounces.google.com>) id 1sUqUf-0003bD-4Q for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:30:05 -0400 Received: from mail-wr1-x449.google.com ([2a00:1450:4864:20::449]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3gJSaZggKCk8Dyv4u8z1x55x2v.t537v3B-uvCv2454x4B.58x@flex--whendrik.bounces.google.com>) id 1sUqUa-0004b0-TJ for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:30:04 -0400 Received: by mail-wr1-x449.google.com with SMTP id ffacd0b85a97d-36878581685so649744f8f.2 for ; Fri, 19 Jul 2024 09:29:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406592; x=1722011392; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=ojXTO+gqQjO+YFItkBY171VxHM34+l/GDY7MCVJj9s0=; b=ePmxGedKkOiTeAYqJcDtD9WiV7dxItX7Jd/rd//k8TcMTsdAEFvxqSV4apvCJ3FixP gTLcrp41ZH8fCRDM8f6NwwCgMIZLw7xwLYimjij/Kcj5A1j1vuN9qNiADNLpHTuNsPrE oXAZxURqzY/eW1GsPMCEtuc6nFEAcClu0R4fJXR5jZ8uoK7ZLBFGLuOuSC96Xv1CeMlf acF33BhsRrN5IKuROsXUVEFq6oVKsUb/CDi1DBqfkw1m6N5SP07QqG281aqaZqmYEoG0 hzRNUo9W/XoUUANfLqKBbBTr2UAIzmcstDqASBFAZ7ZIYAH6rfS38yTTavlvEBkBQyIP +BYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406592; x=1722011392; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=ojXTO+gqQjO+YFItkBY171VxHM34+l/GDY7MCVJj9s0=; b=PJTcQulUX1WobL5HdI3WHHSueF6Kz64EfyfNVaf3DiX/22AiZpuGzTjrtDrfQG+A+q aINzqwJHa9r9Edp01cEeGEzEtpKLVz6ztyYZKTQPMiZJ97h/3ruJGqMpJiYwhp76Od2a 9sNXrZ6WZ5u2PmWBWZJPULp4F0/XYq9Nln96SxBET1/KEaHo5IeqYAQggD+8AUB86YnM jlUPO1oRQ96uSk4VCAncVI+IaoSR5XcA1pF7YdpFmqrIX+VSPmjhlcrjav/eCRqAj9xB TXpJup6C/E2dD4bmmdNxk9VuQQym2u4wylXG5RbCfW91qRM7OoarBt1iIBxBtSKYREYs 3ejQ== X-Gm-Message-State: AOJu0YwdbA1sDsXtELboL7HxUvCDEsWJ+9aqmSDbwzrg+nSiY50IQpFm 17EnQEtx73+9o6pFuihAGfHUPr6ZQGem7PekulvNAADgqDF+ein9ED244skRvwjfrcPrdmp9MjF C66zkzcwKQbBIDuf0P5SVFjJ3cPpmFJyTaAtYts2QOCkQBzScW6qAE02gmb+sjT4GqJkBlWmc2P kbfz+uY6q78hYVKdPoBqGMdg24TGr4kzu7CK3jGfWREQ== X-Google-Smtp-Source: AGHT+IFp5gGxwdfse0K3H/gM+iZmanS258DPiFCNv3JKrx0NW64k6R9ieMSz1dSPNceUxVn1IgDfId0NEogI/Q== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a5d:460c:0:b0:361:fa84:60bc with SMTP id ffacd0b85a97d-369b67a35c5mr103f8f.12.1721406592281; Fri, 19 Jul 2024 09:29:52 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:28 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-9-whendrik@google.com> Subject: [PATCH v1 8/9] Adjust CPUID level for RDT features From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::449; envelope-from=3gJSaZggKCk8Dyv4u8z1x55x2v.t537v3B-uvCv2454x4B.58x@flex--whendrik.bounces.google.com; helo=mail-wr1-x449.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:51 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410546849116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Adjust minimum CPUID level if RDT monitoring or allocation features are enabled to ensure that CPUID will return them. Signed-off-by: Hendrik W=C3=BCthrich --- target/i386/cpu.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1cf5e5d5ff..482f980a1f 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -7590,6 +7590,16 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **er= rp) if (env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_SGX) { x86_cpu_adjust_level(cpu, &env->cpuid_min_level, 0x12); } + + /* RDT monitoring requires CPUID[0xF] */ + if (env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_PQM) { + x86_cpu_adjust_level(cpu, &env->cpuid_min_level, 0xF); + } + + /* RDT allocation requires CPUID[0x10] */ + if (env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_PQE) { + x86_cpu_adjust_level(cpu, &env->cpuid_min_level, 0x10); + } } =20 /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set = */ --=20 2.45.2.1089.g2a221341d9-goog From nobody Mon Sep 16 19:10:32 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=google.com ARC-Seal: i=1; a=rsa-sha256; t=1721410585; cv=none; d=zohomail.com; s=zohoarc; b=MKgsk1D+3WgFaMXA9d4UP3kwWIN99133+bgQ4mENscUgY+RQn6VTgq0O+1qjOTD/ho6cV/pu4Teq+Bl81fI58e1x1kwWcdyUIY/1K5AHC/eRbqGzsksaq286nKWcrju6W8VQPXZDDwtq3hQyLKCJHbpXCWBKQ6jaQ5d0AYvF/nE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1721410585; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3IYirU62feuJ1ii3Lh9tqpIeml1xUoS8NGP+XxL/lvo=; b=X3XBOytosIAx7oGEIqiGxnDiPx7KnRplltWbABpQ915LAYAvJy85ZtI0Wd0FGH0c4xq0X0YDI/ve6SnhSurOuzqknw13wXG/4QYJvugEVwvhQ0t+YVMsRK0GQxpZIxx+nWYQJ18Ewfubo22LbfqxOMuGxaAK0N2gl4chvYsEFfk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1721410585467864.0130079447903; Fri, 19 Jul 2024 10:36:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sUrVQ-00048s-HI; Fri, 19 Jul 2024 13:34:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3gpSaZggKClEF0x6wA13z77z4x.v759x5D-wxEx4676z6D.7Az@flex--whendrik.bounces.google.com>) id 1sUqUf-0003ap-0U for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:30:05 -0400 Received: from mail-wr1-x44a.google.com ([2a00:1450:4864:20::44a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <3gpSaZggKClEF0x6wA13z77z4x.v759x5D-wxEx4676z6D.7Az@flex--whendrik.bounces.google.com>) id 1sUqUa-0004bA-Sy for qemu-devel@nongnu.org; Fri, 19 Jul 2024 12:30:04 -0400 Received: by mail-wr1-x44a.google.com with SMTP id ffacd0b85a97d-3684ea1537fso718509f8f.1 for ; Fri, 19 Jul 2024 09:29:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721406594; x=1722011394; darn=nongnu.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=3IYirU62feuJ1ii3Lh9tqpIeml1xUoS8NGP+XxL/lvo=; b=ZplJx0VVxk7ZQiSUz/Z5pFOjPS0fgMiRq4gAFuotP0g0KwktMUIEmzQtnkypN2uOKQ Kz+lj1vJuk1qUKmkypMx6ldwJXZi/ThF8RRl3M2wehT7jGs7IeESFN64hn6BrQCQzUpE +7EYf/+OHbvXbaNzZdsrE3Yd4eOrEHVh94CF/BgHH1zcqUFtBMa7ovtDAw2VrbkYp8JB +O8nauRoehkLbXhAAqTmMBvfHW2D0zYzpYzxbOUI3mJVL64c6oNW7PMN0u7BqrTgWVAq LgJ9m2ZXSAHM8oRKy7M+p+tCe1W4QPBSnrOBZMBqj5CXIxlYYRpOJJsxZWF/uALJq85D +3yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721406594; x=1722011394; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=3IYirU62feuJ1ii3Lh9tqpIeml1xUoS8NGP+XxL/lvo=; b=TlTcweyMxYvz7MCdJEF9qLCQWbTXVXDr397ktoaXrxMa4+9GxXgVAVaWYW4oLQHyEH 9WFHs1YmW7IfDzrV4cFEme3ASSfRHOlR/m08RM1H4h+9jK4MGkesV1ZB+pG1Y2jmIuun PY3k6D/v9lYS5F1qR3Od0zT8zadyjGR0RMJdIUT8MJArG783z1avdAj7LjPX2ZMiIsxd J5RzvBP5WkWrsuN8ZVp8CCMfq1C4ThG8mnGEKW1BkbZx+kTNuTVV1WsddfRdoC+cOjqR 4eZ5LqRkLqS2W5tvFlo9arUKy/JITrGfJeWzACS7bpe7dr8HNIIRsTWeqGB7JS9UMfYF 0DRA== X-Gm-Message-State: AOJu0YxfIX1n8fKH4+tzMWK8EhfxVq3cOJ4XSz9+L/Mf2Urp2bIO7zBk B+UF0QouldEwqIPYbpaoIp/9WDCMGp4RvA50sqtZ/5H2E3t5AFmHcI036J/amnqfj3eSYYqIkF3 3SCt0hdeDF8QNOdMms8cCGOxxPxGuWMZKKNyno60hdbzOaXXdZ+dfSU/1SQ4zw+j7YvWkKagCHB 23hMCnesHf6zuv/o/q97+YEJNnrVztgGDKv3JyB051sw== X-Google-Smtp-Source: AGHT+IH3FRwhAEpx8HFgxj/VDYPFO7B2fvunfDp1Bsu2LtKemUUmq+tyzuMdrrsOmjvi84Bvmas+tj6G4wL8jw== X-Received: from whendrik-specialist-workstation.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:967]) (user=whendrik job=sendgmr) by 2002:a05:6000:107:b0:368:15ab:20ea with SMTP id ffacd0b85a97d-369b6797e8dmr97f8f.9.1721406594224; Fri, 19 Jul 2024 09:29:54 -0700 (PDT) Date: Fri, 19 Jul 2024 16:29:29 +0000 In-Reply-To: <20240719162929.1197154-1-whendrik@google.com> Mime-Version: 1.0 References: <20240719162929.1197154-1-whendrik@google.com> X-Mailer: git-send-email 2.45.2.1089.g2a221341d9-goog Message-ID: <20240719162929.1197154-10-whendrik@google.com> Subject: [PATCH v1 9/9] Adjust level for RDT on full_cpuid_auto_level From: Hendrik Wuethrich To: qemu-devel@nongnu.org, eduardo@habkost.net, richard.henderson@linaro.org, marcel.apfelbaum@gmail.com, mst@redhat.com, pbonzini@redhat.com Cc: peternewman@google.com, "=?UTF-8?q?=E2=80=AAHendrik=20W=C3=BCthrich?=" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::44a; envelope-from=3gpSaZggKClEF0x6wA13z77z4x.v759x5D-wxEx4676z6D.7Az@flex--whendrik.bounces.google.com; helo=mail-wr1-x44a.google.com X-Spam_score_int: -95 X-Spam_score: -9.6 X-Spam_bar: --------- X-Spam_report: (-9.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 19 Jul 2024 13:34:50 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @google.com) X-ZM-MESSAGEID: 1721410586920116300 Content-Type: text/plain; charset="utf-8" From: =E2=80=AAHendrik W=C3=BCthrich Make sure that RDT monitoring and allocation features are included in in full_cpuid_auto_level. Signed-off-by: Hendrik W=C3=BCthrich --- target/i386/cpu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 482f980a1f..6f5594d3e2 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -875,6 +875,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendo= r1, #else #define TCG_7_0_ECX_RDPID 0 #endif + #define TCG_7_0_ECX_FEATURES (CPUID_7_0_ECX_UMIP | CPUID_7_0_ECX_PKU | \ /* CPUID_7_0_ECX_OSPKE is dynamic */ \ CPUID_7_0_ECX_LA57 | CPUID_7_0_ECX_PKS | CPUID_7_0_ECX_VAES | \ @@ -7548,6 +7549,8 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **err= p) x86_cpu_adjust_feat_level(cpu, FEAT_C000_0001_EDX); x86_cpu_adjust_feat_level(cpu, FEAT_SVM); x86_cpu_adjust_feat_level(cpu, FEAT_XSAVE); + x86_cpu_adjust_feat_level(cpu, FEAT_RDT_15_0_EDX); + x86_cpu_adjust_feat_level(cpu, FEAT_RDT_10_0_EBX); =20 /* Intel Processor Trace requires CPUID[0x14] */ if ((env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_INTEL_PT)) { --=20 2.45.2.1089.g2a221341d9-goog