From patchwork Wed Jan 16 17:58:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Keith Busch X-Patchwork-Id: 10766611 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 BEA2A1390 for ; Wed, 16 Jan 2019 18:00:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AD1AE2F0EC for ; Wed, 16 Jan 2019 18:00:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9F11B2F0F2; Wed, 16 Jan 2019 18:00:01 +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=unavailable 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 37BF82F0EC for ; Wed, 16 Jan 2019 18:00:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DC5D98E0006; Wed, 16 Jan 2019 12:59:43 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C9B3A8E000D; Wed, 16 Jan 2019 12:59:43 -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 A52298E000A; Wed, 16 Jan 2019 12:59:43 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by kanga.kvack.org (Postfix) with ESMTP id 5C6EC8E000A for ; Wed, 16 Jan 2019 12:59:43 -0500 (EST) Received: by mail-pg1-f199.google.com with SMTP id d71so4363938pgc.1 for ; Wed, 16 Jan 2019 09:59:43 -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=LDxe+yVu0lOGlnJY9yYDyXlJo/q3OIrUnN6/6s2AWNw=; b=RteJr1FvLqyidLh+ju1iM690PHNYFFD6i8ppKusRN/IM+pWM0FdVeEwXIji91nVfZ2 +5xa01BV1ptJ3QUiw9neQGqhm0ZCS7o5MZY2NYXVoXlgUsJNcQT7CDCE81ktyqqL8e/b trNN0M+1P6bBQCdmz1Cb6fl/Ph4Ou1s+IDPo4HORFDy+lC/Kiv8s6RHiQAKQqGiV0mPY bJNIO6k3Lxj9Xc8PWzh7azii8qISZkQFpjCXlC+ekcqZbuKUvZlzZ5MODxdnkFBHDbyD UnEYRegkrnCDPyZx03UyvRSzRXGl0U6saAo4C/jWx31toz95dIwka63wWWe6c7HKqUjz Qjng== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of keith.busch@intel.com designates 192.55.52.88 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: AJcUukcKX4elD7v7PUQQpYb0pytguYC/73YoamvrppXgTsFm1KoVjcRg Gaz/0mf1zqlvKn6pQwD/6Mra2AVXGtA9y/X9jBcdU/rhjZaCyLlLM3vaTUl6AMWhjhx5mTfxJDw Ww/tOnqsyqBvltu305kjP5ofcNfzY4PcFzcVurbrrCPXEh63980kF933BYUAoc7+NZQ== X-Received: by 2002:a63:8149:: with SMTP id t70mr10150078pgd.172.1547661583031; Wed, 16 Jan 2019 09:59:43 -0800 (PST) X-Google-Smtp-Source: ALg8bN7r3X6btQ9rjI0ctXqqFYDV3bTZ/BfFrcJgZbBLBK0szYIAXIbSpKiBLICAtq6e6Pl6TRdB X-Received: by 2002:a63:8149:: with SMTP id t70mr10150023pgd.172.1547661582128; Wed, 16 Jan 2019 09:59:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547661582; cv=none; d=google.com; s=arc-20160816; b=gH7utQt1OIW7zfxAzJylUE9SQrtJw//ahhA4xPgGBInOFSZn4doltoDJqlt2mvaEdE lFEPe7PhxnEEMUwqJtYdWzatB7b9d2//t6cSZlgfEwMi/ADdvDXiZOOIR/80j2/N1L8y ZLjjQhv1zFjs9X87p4lkA+2t5bPiy8/8c0RXcxX3uXQcTHvU3zayGPq4X2/mrq/h6LEe Rxx5qU49VzcgiOpN/TJhG9lPDlZu4yeAsZIbI8dJrU/hcjdc8eGnnDvlSp+bPIOrqCNC PI9Xu4STJXD3WRn7QPv8ClPcNDsaBEbQFbj3JC8YoOtPK2kcq2oUsxIOy8gjWvXQ+5ci XZIA== 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=LDxe+yVu0lOGlnJY9yYDyXlJo/q3OIrUnN6/6s2AWNw=; b=vPvC+ZkuOh1N67MWW2A4vGbjnVuxsLr8PXxXnyx5olxHZHR4fYAj0vWfZKP/xhfrl0 qg9NJK38SSYq2aYVfjGq4L9MY2YNxyIh1Q7KiWT564qudwuIC8TWcFFUJFzE5ngf+Va1 S0X6ui8WNDgWxQgAraE4zdeI8ZKfFEFX8S6yrgXcypqCThsQxb858/tO2KMTiPXt7UDD t7OJvJXych5U69Vg4pDRdVsrz3KaEMTGvpSCGYAeUOFZsaX9379yVhHXcj/RbSPioWTO zMvGmhnVtgGI+qkmu6Wq9F9GJqqZ+dmxF/fkmU3h9hYu1FXsDxVl3CzBo0BCI7AfqQ2N BxqQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of keith.busch@intel.com designates 192.55.52.88 as permitted sender) smtp.mailfrom=keith.busch@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from mga01.intel.com (mga01.intel.com. [192.55.52.88]) by mx.google.com with ESMTPS id d18si6701527pgm.212.2019.01.16.09.59.41 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Jan 2019 09:59:42 -0800 (PST) Received-SPF: pass (google.com: domain of keith.busch@intel.com designates 192.55.52.88 as permitted sender) client-ip=192.55.52.88; Authentication-Results: mx.google.com; spf=pass (google.com: domain of keith.busch@intel.com designates 192.55.52.88 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 fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jan 2019 09:59:41 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,487,1539673200"; d="scan'208";a="117227797" Received: from unknown (HELO localhost.lm.intel.com) ([10.232.112.69]) by fmsmga008.fm.intel.com with ESMTP; 16 Jan 2019 09:59:40 -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: [PATCHv4 09/13] acpi/hmat: Register performance attributes Date: Wed, 16 Jan 2019 10:58:00 -0700 Message-Id: <20190116175804.30196-10-keith.busch@intel.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20190116175804.30196-1-keith.busch@intel.com> References: <20190116175804.30196-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/hmat/Kconfig | 1 + drivers/acpi/hmat/hmat.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/drivers/acpi/hmat/Kconfig b/drivers/acpi/hmat/Kconfig index a4034d37a311..20a0e96ba58a 100644 --- a/drivers/acpi/hmat/Kconfig +++ b/drivers/acpi/hmat/Kconfig @@ -2,6 +2,7 @@ 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/hmat.c b/drivers/acpi/hmat/hmat.c index efb33c74d1a3..45e20dc677f9 100644 --- a/drivers/acpi/hmat/hmat.c +++ b/drivers/acpi/hmat/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); } }