From patchwork Wed Jan 9 17:43:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Keith Busch X-Patchwork-Id: 10754649 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1F5EC13B4 for ; Wed, 9 Jan 2019 17:48:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 102D128972 for ; Wed, 9 Jan 2019 17:48:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0487928D6D; Wed, 9 Jan 2019 17:48:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8E97B28972 for ; Wed, 9 Jan 2019 17:48:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 75B748E0038; Wed, 9 Jan 2019 12:48:02 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 6BD708E00A6; Wed, 9 Jan 2019 12:48:02 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CD628E0038; Wed, 9 Jan 2019 12:48:02 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id CF98C8E00A6 for ; Wed, 9 Jan 2019 12:48:01 -0500 (EST) Received: by mail-pf1-f198.google.com with SMTP id 82so5732792pfs.20 for ; Wed, 09 Jan 2019 09:48:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=4cS41mm0645F0oPGt+z1xoyu71BBSxW7i0CzyIKciN0=; b=ZQq4SHwODfhq7WN2mkp9sLJ2w9dP82hGvG0JDTlI6p/YCmsGLUqZelIkBtucOh0iq5 rqlCO7QnkvD1IZbHjCm4tqT7pTD51Q6T1fQDdDgS8b49YWmGrpiQDkw/TnlW1DJ3Frk5 mgl9qNXjY4FBkG9IUiYuUE23yA3h8cjkDH7oNsyvlFXvn6PJ10/Sfu9R1IccuFXLQurP lFtYv9JSTqawfZkTXPA6KA+YJ48h9Syo/gJw1FV2d5AgLLwRcU8JznVfG54s864WVj6J mstft+jAvAVQJj/NXEd7usLmOmzNXYh4mKZQVtQpDaV37jwa9L8QhJWWNS5xv/L+6ilE YdyA== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of keith.busch@intel.com designates 134.134.136.100 as permitted sender) smtp.mailfrom=keith.busch@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Gm-Message-State: AJcUuke2GTaOzTFq2KkCyh55EXhPU0dGMk63GK/C8GWoh4BGdG6W1AWE hBV07P8jKUJLS97Fb4OJDJifETltsnaLyYW9kIc6qKje9zLhNDZdKPzOYv5ktLgNhodyK+1w0iH kIgbwhdBF01da0jBhXC8Nu1WiTyezjN2jrMUWz5gIeZcr86im0PvtcjrenKxra0bEcA== X-Received: by 2002:a17:902:714c:: with SMTP id u12mr6904731plm.234.1547056081525; Wed, 09 Jan 2019 09:48:01 -0800 (PST) X-Google-Smtp-Source: ALg8bN6GjSvh4Q8M4+E/+1LbH22eO1CnT4DsQUQS3gJhQU6m5i2SsCxHYBnH8qbTBon8XPtjaRjA X-Received: by 2002:a17:902:714c:: with SMTP id u12mr6904696plm.234.1547056080838; Wed, 09 Jan 2019 09:48:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547056080; cv=none; d=google.com; s=arc-20160816; b=FpuM9SAd9cbVN+LFTeFrNWCsNxqJ0Wn/d0baJ0ArC4NOKS35qjxj1R26duDt5xmNTw rZwe685Ou854VwLDXkgLd0DXhtS+9dng3XYknR67wNXM8xiyAcVpjn3AGDzUMn67Ashs mJn+ixwbHV6c5+XeY8GczkCX2Z4KikjDTK3vj/PhtyBwi28EcX7Uk0l7FQz43TqnLEw3 J0ZrhPTHHvfFr6Rqkuth0py1w9w6k+0uKfxrVNWK/DFnVan3247Vrklg9uR9oeR5sWg+ 0HM1Y5Ye9oLNZgj7buTz16cVl8X7qv00GJobDNELMwc5YH1kb4LDhgn5CDU3fHQNa/6J i5eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=4cS41mm0645F0oPGt+z1xoyu71BBSxW7i0CzyIKciN0=; b=oo8P3//YJ3NWrTfR6gQ6feZG5Hxy8XUw3AQ9xAVkvIMV7ZEDCeoYmc7DUOXtZ2LGc0 U1LlKUo3zoyzN/LFVq5i59I9D5MTcOEAOmnTtAkEDQZgLi4Ikmsz+yrFoEPyiwflZIdi AQA2Wnt7yTVEoiPetxHWenwOHrLzB9OFBrCgNZoHdEl6VsCkXmQmh6Y3j4kMSEeR/GU0 KRXk9NvstDg5oavjDjYb32BRKNeADK3N1zrsB5BJQadDvCYiIC+omr7Zl2zkBVUzXLKW ugewkdCmKxtchRtTFw4ziwEmOt7nxC57qIxDs7lxcBFQ3685O5JqBEIVC1ObMzZtuZfq qKYw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of keith.busch@intel.com designates 134.134.136.100 as permitted sender) smtp.mailfrom=keith.busch@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from mga07.intel.com (mga07.intel.com. [134.134.136.100]) by mx.google.com with ESMTPS id c10si25675731pla.173.2019.01.09.09.48.00 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Jan 2019 09:48:00 -0800 (PST) Received-SPF: pass (google.com: domain of keith.busch@intel.com designates 134.134.136.100 as permitted sender) client-ip=134.134.136.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of keith.busch@intel.com designates 134.134.136.100 as permitted sender) smtp.mailfrom=keith.busch@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jan 2019 09:48:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,458,1539673200"; d="scan'208";a="115485636" Received: from unknown (HELO localhost.lm.intel.com) ([10.232.112.69]) by fmsmga008.fm.intel.com with ESMTP; 09 Jan 2019 09:47:59 -0800 From: Keith Busch To: linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-mm@kvack.org Cc: Greg Kroah-Hartman , Rafael Wysocki , Dave Hansen , Dan Williams , Keith Busch Subject: [PATCHv3 09/13] acpi/hmat: Register performance attributes Date: Wed, 9 Jan 2019 10:43:37 -0700 Message-Id: <20190109174341.19818-10-keith.busch@intel.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20190109174341.19818-1-keith.busch@intel.com> References: <20190109174341.19818-1-keith.busch@intel.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Save the best performace access attributes and register these with the memory's node if HMAT provides the locality table. While HMAT does make it possible to know performance for all possible initiator-target pairings, we export only the best pairings at this time. Signed-off-by: Keith Busch --- drivers/acpi/Kconfig | 1 + drivers/acpi/hmat.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index b102d9f544ee..ac6c38b50916 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -329,6 +329,7 @@ config ACPI_NUMA config ACPI_HMAT bool "ACPI Heterogeneous Memory Attribute Table Support" depends on ACPI_NUMA + select HMEM_REPORTING help Parses representation of the ACPI Heterogeneous Memory Attributes Table (HMAT) and set the memory node relationships and access diff --git a/drivers/acpi/hmat.c b/drivers/acpi/hmat.c index efb33c74d1a3..45e20dc677f9 100644 --- a/drivers/acpi/hmat.c +++ b/drivers/acpi/hmat.c @@ -23,6 +23,8 @@ struct memory_target { struct list_head node; unsigned int memory_pxm; unsigned long p_nodes[BITS_TO_LONGS(MAX_NUMNODES)]; + bool hmem_valid; + struct node_hmem_attrs hmem; }; static __init struct memory_target *find_mem_target(unsigned int m) @@ -108,6 +110,34 @@ static __init void hmat_update_access(u8 type, u32 value, u32 *best) } } +static __init void hmat_update_target(struct memory_target *t, u8 type, + u32 value) +{ + switch (type) { + case ACPI_HMAT_ACCESS_LATENCY: + t->hmem.read_latency = value; + t->hmem.write_latency = value; + break; + case ACPI_HMAT_READ_LATENCY: + t->hmem.read_latency = value; + break; + case ACPI_HMAT_WRITE_LATENCY: + t->hmem.write_latency = value; + break; + case ACPI_HMAT_ACCESS_BANDWIDTH: + t->hmem.read_bandwidth = value; + t->hmem.write_bandwidth = value; + break; + case ACPI_HMAT_READ_BANDWIDTH: + t->hmem.read_bandwidth = value; + break; + case ACPI_HMAT_WRITE_BANDWIDTH: + t->hmem.write_bandwidth = value; + break; + } + t->hmem_valid = true; +} + static __init int hmat_parse_locality(union acpi_subtable_headers *header, const unsigned long end) { @@ -166,6 +196,8 @@ static __init int hmat_parse_locality(union acpi_subtable_headers *header, set_bit(p_node, t->p_nodes); } } + if (t && best) + hmat_update_target(t, type, best); } return 0; } @@ -267,6 +299,8 @@ static __init void hmat_register_targets(void) m = pxm_to_node(t->memory_pxm); for_each_set_bit(p, t->p_nodes, MAX_NUMNODES) register_memory_node_under_compute_node(m, p, 0); + if (t->hmem_valid) + node_set_perf_attrs(m, &t->hmem, 0); kfree(t); } }