Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1377022imm; Fri, 22 Jun 2018 15:50:21 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIvCqoQdpHuN8ocS7CJa7j+SF+Sm8VgReaui2VG8SqWmqkNUR3BKqfZjlW+VSVgATjjkCcE X-Received: by 2002:a65:62c7:: with SMTP id m7-v6mr2435792pgv.286.1529707821109; Fri, 22 Jun 2018 15:50:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529707821; cv=none; d=google.com; s=arc-20160816; b=yGaERTQcmOpX3Vz9ecED2ht3bXugwrm/7o48eQq/vRYsV8RcbdKFO0dp9ubM7PObC2 HVuBdyBBZ0lGgO66MWJsJfltmFbLAVZ6YEMT68xDg07nrNUIDHhnJ/5mevFIXBa+Vo6I tl9aLqKxfsRrKrVRd4uXQRqWnuacWLYIp8Z+98JoTQI9O8H0Ljw3XK4YYLn6xdIxi4PX rcKr1NzdV4nvBFeJ3WafCb/FcD5msil/GFyl864CgLGgzGuutHf9zcsop1MEk9qTJgR2 cuvlYBZm57QCI6chmMUbJlPDfFJNTZ9VW/HCDC9vzAnixMOWTlyJTtqPllElWN06L4Sy 7tBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=QxKNCsT1qQNjdIf+IKGhrIodaMIaNGA/UbcD+aG7qCA=; b=sm8XvYiv1au9NK/2SJY76GfQhw/lVl94AWi4s/U39ZKQJPnZGZT/x1wt/UFyqKj2ZZ 4MPCg+4rkgAF6NkBbXUhfFgCJdIUKaJpZq1//PAUpMceSQyP7oLUhsaABxjpfqS/5qRI R8qIUJSzMAJR9M6XGXUWVUTpD8nP8KrSnm3E0XOfpAx3nkTUloaPMHK9/jJbtt6tXtwv P9uZqN6JaBnDAlBfdX4gpIpP7Zyc+q3yYjq8Rz54qP3m3yEwBvdtHgL6v9v5C/r65n1h hDvqLxhCp0MsLcFV4b32N0gissMxhRYexUeAD5vN1G7DuI6qoyio1ecCw/SbvUN6kVHr WJYg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id y40-v6si8451716pla.470.2018.06.22.15.50.06; Fri, 22 Jun 2018 15:50:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1754859AbeFVWta (ORCPT + 99 others); Fri, 22 Jun 2018 18:49:30 -0400 Received: from mga17.intel.com ([192.55.52.151]:52517 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754643AbeFVWmu (ORCPT ); Fri, 22 Jun 2018 18:42:50 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Jun 2018 15:42:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,259,1526367600"; d="scan'208";a="234843470" Received: from rchatre-s.jf.intel.com ([10.54.70.76]) by orsmga005.jf.intel.com with ESMTP; 22 Jun 2018 15:42:48 -0700 From: Reinette Chatre To: tglx@linutronix.de, fenghua.yu@intel.com, tony.luck@intel.com, vikas.shivappa@linux.intel.com Cc: gavin.hindman@intel.com, jithu.joseph@intel.com, dave.hansen@intel.com, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org, Reinette Chatre , kbuild-all@01.org, tipbuild@zytor.com Subject: [PATCH V7 40/41] x86/intel_rdt: Fix passing of value to 32-bit register Date: Fri, 22 Jun 2018 15:42:31 -0700 Message-Id: <2a3c3a9a1107224af78e6eaa6a7eabda71a4e5dd.1529706536.git.reinette.chatre@intel.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 0-day kbuild test robot reported the following issue: arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c: In function 'pseudo_lock_fn': >> arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c:363:1: warning: unsupported size for integer register } ^ >> arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c:363:1: warning: unsupported size for integer register vim +363 arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c 361 wake_up_interruptible(&plr->lock_thread_wq); 362 return 0; > 363 } 364 The issue is earlier in the code, and in more locations, where (in 32-bit) a u64 variable (i below) is used as the value of a 32-bit register: asm volatile("mov (%0,%1,1), %%eax\n\t" : : "r" (mem_r), "r" (i) : "%eax", "memory"); The behavior in this case would be that only the 32 bit lower part of the variable is passed. The variable is used as a counter in a for loop that iterates over the pseudo-locked region and its maximum value is thus the largest size of a pseudo-locked region. No pseudo-locked region currently supported would need more than 32-bits for its size. There is thus no potential for harm in the current state when using the u64 variable, but this should be fixed. Modify the variable with which the registers are initialized to be 64-bit when used for 64-bit register and 32-bit when used for 32-bit register. Fixes: 0438fb1aebf4 ("x86/intel_rdt: Pseudo-lock region creation/removal core") Reported-by: lkp@intel.com Signed-off-by: Reinette Chatre Signed-off-by: Thomas Gleixner Cc: kbuild-all@01.org Cc: tipbuild@zytor.com Cc: fenghua.yu@intel.com Cc: tony.luck@intel.com Cc: hpa@zytor.com Link: https://lkml.kernel.org/r/5773274f9947c4d8becbabd2655bd1628f060147.1529474468.git.reinette.chatre@intel.com --- arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c b/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c index 0d44dc1f7146..a1670e50d6ce 100644 --- a/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c +++ b/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c @@ -415,7 +415,11 @@ static int pseudo_lock_fn(void *_rdtgrp) struct rdtgroup *rdtgrp = _rdtgrp; struct pseudo_lock_region *plr = rdtgrp->plr; u32 rmid_p, closid_p; +#ifdef CONFIG_X86_64 u64 i; +#else + u32 i; +#endif #ifdef CONFIG_KASAN /* * The registers used for local register variables are also used @@ -870,7 +874,11 @@ static int measure_cycles_lat_fn(void *_plr) { struct pseudo_lock_region *plr = _plr; u64 start, end; +#ifdef CONFIG_X86_64 u64 i; +#else + u32 i; +#endif #ifdef CONFIG_KASAN /* * The registers used for local register variables are also used @@ -924,7 +932,11 @@ static int measure_cycles_perf_fn(void *_plr) struct pseudo_lock_region *plr = _plr; unsigned long long l2_hits, l2_miss; u64 l2_hit_bits, l2_miss_bits; +#ifdef CONFIG_X86_64 u64 i; +#else + u32 i; +#endif #ifdef CONFIG_KASAN /* * The registers used for local register variables are also used -- 2.17.0