Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp3060700ybk; Mon, 18 May 2020 16:49:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYPnLp1EnU9jdrK5optXmoiw+ZyhmSxqMrU8Ezc15a8Fa3gUcNwRI/JwYcQRvYcoTNhNy5 X-Received: by 2002:a05:6402:cb1:: with SMTP id cn17mr15376482edb.382.1589845753615; Mon, 18 May 2020 16:49:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589845753; cv=none; d=google.com; s=arc-20160816; b=PSWlY4lJrF3ZKSRDvkBSZfIJqkWp3Lq1Z9N2nN3h7pZEbsWRu9/hkMglX88WUIcor9 MAIq61aB/Y29PJBdYhfFTTptgmqmwkrKUTQk5JvOaleWB4AfbmpbR0VtjhasTC/UhYGW 4xxfMGZ3dQ7NoC95TshXWVMjI736dtPDd8sW3JEcyMf1bQ/q9UFQFYP1hJn6QXAekvc4 a9oEsFJn+t9lwtkT2mQpm1j4EJjK7R2ze6TrGpJH7fvIb7HOYKrdzvRkh61oMIDGMC/o xJjEwGTK2Df+2dS9PiMQxpd3oXpg553vMYFnJ+wlWyMkovkDTSIuC12Vuvl2v2XML2pk dJ8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:ironport-sdr:ironport-sdr; bh=EndPtCmz8+MFW5OUx2ldjlRvBUzrjoAySM3w5MZPu5o=; b=F4lkw1CeUMW8xLtJSfheiOxsU8fLiTUg40oLd1G3FuVcBX5akOKdsh96QjgCDAehlV MpRlTQss3pmDmBTpmD04uk2lLF12+fXwEsQflcioi7ZqcUTfTGu0ZV7okvazEu+rK1J2 Ty7G6I79WSZRpaV+il178wm+lX8ksklvAyO5j5/E77GBWdFj4LJRyJ8PWnYN2bQNB0Dc yq/c3NbqiznaarK5hL5YjuhXoXfuaz+cbjPCvCgj+1uNFIIsOAmMzkanaB58wZxxVJ3q JgiDTIiAB0tQezsJRjacRtQ/IPv88MeJVdKOeo88i+XuglWSVudXEMnBmQL2PxtWsSA+ go9Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id sa22si371594ejb.8.2020.05.18.16.48.51; Mon, 18 May 2020 16:49:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727055AbgERXrM (ORCPT + 99 others); Mon, 18 May 2020 19:47:12 -0400 Received: from mga02.intel.com ([134.134.136.20]:65332 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726407AbgERXrL (ORCPT ); Mon, 18 May 2020 19:47:11 -0400 IronPort-SDR: g65yWyhMttA7y5QOyv3VV1i2cLBo5kM2bIsYzksNudIXyzPzAu2v4B229IDGyzEgKee40Zaxt6 n97a+A32Pgvw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2020 16:47:10 -0700 IronPort-SDR: hzkNRsA5YxnyVVLVGPojc7+D/kblfsBETGf48zqR4ky2qe6/Rf46tZ5UtqL/zB7cixjkR+X8qd ZorESJkERWUg== X-IronPort-AV: E=Sophos;i="5.73,408,1583222400"; d="scan'208";a="288757520" Received: from rchatre-s.jf.intel.com ([10.54.70.76]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2020 16:47:08 -0700 From: Reinette Chatre To: tglx@linutronix.de, fenghua.yu@intel.com, bp@alien8.de, tony.luck@intel.com Cc: kuo-lang.tseng@intel.com, ravi.v.shankar@intel.com, mingo@redhat.com, babu.moger@amd.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org, Reinette Chatre Subject: [PATCH V5 0/4] x86/resctrl: Enable user to view and select thread throttling mode Date: Mon, 18 May 2020 16:46:45 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org V4 upstream submission available from: https://lore.kernel.org/lkml/cover.1589652468.git.reinette.chatre@intel.com Patches apply against x86/cache branch commit 0c4d5ba1b998e of tip repo at git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git Changes since V4: - Pick up Babu's "Reviewed-by" tags. - Three checks are performed before the MBA_CFG register is updated from its cache. Move all checks to the same if statement. (Babu) - Remove unnecessary return statement when there is only a switch statement in the function that is already handling all cases. (Babu) - Remove "mode" local variable from rdtgroup_mode_write(). This variable was previously used to create shorter lines with the original strcmp() code that was removed in patch 4/4. - Andy pointed out that the repeated assignment to rdtgrp->mode could be replaced by a single assignment after all the checks. This was initially rejected because it would let the "RDT_MODE_PSEUDO_LOCKED" assignment slip through. Even so, Andy's feedback revealed that the new changes unintentionally let a user's attempt at setting the mode to pseudo-locked be silently ignored where it previously reported an error. Restore original user space behavior by returning success when user attempts to change any mode when it is already the current mode (including pseudo-locked) and returning failure when user attempts to set the mode to pseudo-locked. After this change it is possible to follow Andy's original suggestion of using a single assignment. (Andy) V3 upstream submission available from: https://lore.kernel.org/lkml/cover.1588808537.git.reinette.chatre@intel.com Patches apply against x86/cache branch of tip repo at git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git Changes since V3: - Maintain the thread throttling mode as a property ("arch_throttle_mode") of the memory bandwidth allocation resource instead of calling a function that queries the system's model each time this information is needed. Use this new property generically throughout with the goal of being independent of architecture. (Babu) - Remove "intel" from thread_throttle_mode_init_intel_rw() and thread_throttle_mode_init_intel_ro() in anticipation of usage by other architectures. - Use function parameter to update_mba_cfg() directly instead of having local variable point to it. (Fenghua) - Remove unnecessary additional check whether platform supports feature from the "thread_throttle_mode" callback. The file will only be accessible on platforms that support the feature. - Rework commit message of first patch to be more complete regarding support of all architectures after incorporating AMD feedback. - View the thread throttle mode with rdtgroup mutex held since it is using cached information that may be changed concurrently. - Remove unnecessary empty line. (Babu) V2 upstream submission available from: https://lore.kernel.org/lkml/cover.1586801373.git.reinette.chatre@intel.com Changes since V2: - Rebase on top of recently merged series "x86/resctrl: Support wider MBM counters". Small change needed to take into account asm/resctrl_sched.h -> asm/resctrl.h name change. - Fix rST formatting of documentation (resctrl_ui.rst) describing new "thread_throttle_mode" resctrl file. - Use boot_cpu_has() instead of static_cpu_has() when determining what to display to user (slow path). V1 upstream submission available from: https://lore.kernel.org/lkml/cover.1585765499.git.reinette.chatre@intel.com A notable change since V1 is the inclusion of two additional patches from Fenghua Yu that introduce the new per-thread MBA feature. These changes are added to this series because they are small and closely related to the original submission. The per-thread MBA feature is a hardware advancement that requires no software interface changes. The patches added just enumerate the feature and expose it to userspace by showing "per-thread" in the new resctrl file "thread_throttle_mode" to help user applications fine tune performance. There are currently a few resctrl changes outstanding for upstream inclusion. To support their consideration all outstanding resctrl patches can be viewed at https://github.com/rchatre/linux.git (branch resctrl/next) Changes since V1 (also documented within patches to which they apply): - Rebased on top of James Morse's CDP fix (https://lore.kernel.org/lkml/20200221162105.154163-1-james.morse@arm.com) - Remove RF_UNINITIALIZED (having uninitialized be represented with ones creates too much confusion), replace with an explicit check of rft->fflags in rdtgroup_add_files() (Fenghua Yu) - Rename MBA_THREAD_THROTTLE_MODE to MBA_THROTTLE_MODE_MASK to clarify its use as a mask (Tony Luck) - Introduce explicit MBA_THROTTLE_MODE_MAX instead of implying it is the opposite of min and use these values (min and max) explicitly whenever testing/setting the throttle mode value (Tony Luck) - Add __init attribute to thread_throttle_mode_init_intel_rw() and thread_throttle_mode_init_intel_ro() since they are only needed during initialization (Fenghua Yu) - Remove MBA_CFG MSR reads and error checking so that the patch is simpler and easier to review (Fenghua Yu) - Ensure CPU hotplug lock is taken when writing register on multiple CPUs (Fenghua Yu) - Use CPU mask already maintained as part of domains to determine which CPUs to update MBA register on (Fenghua Yu) - Maintain MBA configuration register contents to support use case when not all CPUs of a package are online when configuration is set from user space - Use seq_puts() instead of seq_printf() when simple strings are printed - Set MBA configuration to default when resctrl is unmounted - Complete rewrite of "thread_throttle_mode" documentation (Tony Luck) - Remove unnecessary checks on user input (Andy Shevchenko) - Change code style surrounding usage of sysfs_match_string() (Andy Shevchenko) From V1 submission: The first patch in this series introduces a new resctrl file, "thread_throttle_mode", on Intel systems that exposes to the user how per-thread values are allocated to a core. This is added in support of newer Intel systems that can be configured to allocate either maximum or minimum throttling of the per-thread CLOS values to the core. Details about the feature can be found in the commit description and in Chapter 9 of the most recent Intel ISE available from https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf The first patch parses user input with the appropriate sysfs API that has not previously been used in resctrl. The second (later in the fourth) patch is added as a subsequent cleanup that switches existing resctrl string parsing code to also use this appropriate API. Fenghua Yu (2): x86/resctrl: Enumerate per-thread MBA x86/resctrl: Enable per-thread MBA Reinette Chatre (2): x86/resctrl: Enable user to view and select thread throttling mode x86/resctrl: Use appropriate API for strings terminated by newline Documentation/x86/resctrl_ui.rst | 22 ++- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kernel/cpu/cpuid-deps.c | 1 + arch/x86/kernel/cpu/resctrl/core.c | 52 ++++++ arch/x86/kernel/cpu/resctrl/internal.h | 49 ++++- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 247 +++++++++++++++++++++++-- arch/x86/kernel/cpu/scattered.c | 1 + 7 files changed, 345 insertions(+), 28 deletions(-) -- 2.21.0