Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp4695671ybh; Tue, 6 Aug 2019 16:28:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqybIcII0nnRjMfP5lzzPcM+zwZBGR3oL5VjFskEUGu65X5Z0joX7F+eIrMuWocsoZYabbDG X-Received: by 2002:a17:90a:970a:: with SMTP id x10mr5660992pjo.12.1565134108076; Tue, 06 Aug 2019 16:28:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565134108; cv=none; d=google.com; s=arc-20160816; b=cpV8E28tWC3odskQlIvpm8xonF3Dx5npGWVy1mi+HrlAz3pukcp0brOBlDpN5cxvrh CU7Nzxed+Fc9MswarUVTgUFK22BH6LVGHgldMMQ60nNDGzW1uuZ0fqnjFEvKNmyqFRwH J2NPP4nNUHAUezAqcb4UnBmhoYh0C896ySKht6tFd48TqY7Bxc7PapVujyMIdEkqhWCe r1pjuRPJmOYiIr9kkQZxqZBtOCZTulqaiNXKkI14opnJsMnYdu6ji7AZFhPDggwc6A+z QLmkp9JuXKZ591JK8bi0ZGIZG+SMd3sx4j0XSzruAXV6pRwiCMn3CBKyenGbP5dfXTDX MWdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date:dkim-signature; bh=V5E/vEU5l0XkioyuorxP6jKxsdFKokFL9ZSrtexRssk=; b=QfX9aTSTPfrJhlfzxuq9wt5NLbLMGPEs2nDvVhxssbCk73GeTu9gqf2ohiHfn0XgQb ORdagGd5BWLUnmXijWSQIKSX5UKIqUO3xSkpRbZD0Zfh7na09od42fxwsnXm3dknGcXS mDAorsHPnbTxy0tDLWVGEmBq67uD4A/fo2H8T5pwSkkMHwun4MK+vdt7bNU1q5Rb4mp0 5I+Rv/gIG3O8AzqQ39cHQr1zW2FeD/4/vv/z/ADIh1xzsh4s1gFNd/7HcLrfv4AfhEfY 0E0/BAvL1C5Uh3WRXDDBEoLFudBgmSPLKQkFahGk4FuBb8K9WnDqNJ/DgPqvYuZllLH8 t61w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=A1NCke0a; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d31si43630232pla.84.2019.08.06.16.28.09; Tue, 06 Aug 2019 16:28:28 -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; dkim=pass header.i=@sifive.com header.s=google header.b=A1NCke0a; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726788AbfHFX1c (ORCPT + 99 others); Tue, 6 Aug 2019 19:27:32 -0400 Received: from mail-ot1-f67.google.com ([209.85.210.67]:34697 "EHLO mail-ot1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726069AbfHFX1c (ORCPT ); Tue, 6 Aug 2019 19:27:32 -0400 Received: by mail-ot1-f67.google.com with SMTP id n5so97001638otk.1 for ; Tue, 06 Aug 2019 16:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=V5E/vEU5l0XkioyuorxP6jKxsdFKokFL9ZSrtexRssk=; b=A1NCke0a/LjS9zvr7+/34vGTAEoKD6Z7pY809prBn3C4amAQe063I+j3pzu6tKiV6N zANesKaI6teNmSxD4Six9jmjo5ZWki6o2jPPLuzPBYmTsteU3evikYzBntcUrMCrwNih fMT7X4BH3MRi92FoB9FhEUSN2I8ak+MseNYgMRrK5gz7m5yvMjVIiYPxMZ8CJ+SOSc24 WOApgJYr3w0NR6neMgEo2AKw3p1ESlkH8TbATHjL6sUvWxVwFcLMPiLAv9yN10H88Fq5 VyjCqs4jI9gSActsyazLApeytbPoBB9RbFPpHL4om+y3U8GG4IiFtdcY+RMibJ0KGWM6 C7zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=V5E/vEU5l0XkioyuorxP6jKxsdFKokFL9ZSrtexRssk=; b=HD9VvjR9NkdBn53K3bKDUrO+5tV4ifQ4BktraUU/MCWFWqyqzrrXIRHHjN8elezzv6 z2DG7Vi0plA5o0G/fVtEjBGvcMmZSdK/TCro5yWTyubRa3qVZNk+2kNKMq/v/9/m1Dd/ jRXyAb2dINtOlA31Z3JIUeq88w6nBMpbR0RjLUniyFnDYgsoyty/k+cITzJR2NRP2stT zLvalkrH7l3hhJ5dgQJL86OChgibDXpZKjXlXfprY5CXqUjLYsHsfzyeNur3vTG9ukzY 3Ek0ydArOre2tmEaRJZNRMV0oSAO/ihzPO0wy4guCl39YAZ/CbuoJce8O8bXY4ARE41j ndBw== X-Gm-Message-State: APjAAAWp6qd+qbzKLypDeyPQ1UyI3M4WAHN4d2wMGzoCnTGoPHmjO1w0 3eYoMj9BKyN4fI8d71GlpVagkQ== X-Received: by 2002:a6b:c081:: with SMTP id q123mr6295296iof.210.1565134051058; Tue, 06 Aug 2019 16:27:31 -0700 (PDT) Received: from localhost (c-73-95-159-87.hsd1.co.comcast.net. [73.95.159.87]) by smtp.gmail.com with ESMTPSA id z19sm97593360ioh.12.2019.08.06.16.27.30 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 06 Aug 2019 16:27:30 -0700 (PDT) Date: Tue, 6 Aug 2019 16:27:30 -0700 (PDT) From: Paul Walmsley X-X-Sender: paulw@viisi.sifive.com To: Atish Patra cc: linux-kernel@vger.kernel.org, Albert Ou , Allison Randal , Anup Patel , Daniel Lezcano , devicetree@vger.kernel.org, Enrico Weigelt , Gary Guo , Greg Kroah-Hartman , Johan Hovold , linux-riscv@lists.infradead.org, Mark Rutland , Palmer Dabbelt , Rob Herring , Thomas Gleixner , Yangtao Li Subject: Re: [PATCH v3 3/5] RISC-V: Fix unsupported isa string info. In-Reply-To: <20190801005843.10343-4-atish.patra@wdc.com> Message-ID: References: <20190801005843.10343-1-atish.patra@wdc.com> <20190801005843.10343-4-atish.patra@wdc.com> User-Agent: Alpine 2.21.9999 (DEB 301 2018-08-15) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 31 Jul 2019, Atish Patra wrote: > Currently, kernel prints a info warning if any of the extensions > from "mafdcsu" is missing in device tree. This is not entirely > correct as Linux can boot with "f or d" extensions if kernel is > configured accordingly. Moreover, it will continue to print the > info string for future extensions such as hypervisor as well which > is misleading. /proc/cpuinfo also doesn't print any other extensions > except "mafdcsu". > > Make sure that info log is only printed only if kernel is configured > to have any mandatory extensions but device tree doesn't describe it. > All the extensions present in device tree and follow the order > described in the RISC-V specification (except 'S') are printed via > /proc/cpuinfo always. > > Signed-off-by: Atish Patra I tested this patch after dropping the CONFIG_ISA_RISCV_C test (see below). Running "cat /proc/cpuinfo" generated the following kernel warnings: [ 73.412626] unsupported ISA extensions "su" in device tree for cpu [0] [ 73.418417] unsupported ISA extensions "su" in device tree for cpu [1] [ 73.424912] unsupported ISA extensions "su" in device tree for cpu [2] [ 73.431425] unsupported ISA extensions "su" in device tree for cpu [3] Seems like the "su" should be dropped from mandatory_ext. What do you think? > --- > arch/riscv/kernel/cpu.c | 47 ++++++++++++++++++++++++++++++++--------- > 1 file changed, 37 insertions(+), 10 deletions(-) > > diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c > index 7da3c6a93abd..9b1d4550fbe6 100644 > --- a/arch/riscv/kernel/cpu.c > +++ b/arch/riscv/kernel/cpu.c > @@ -7,6 +7,7 @@ > #include > #include > #include > +#include > > /* > * Returns the hart ID of the given device tree node, or -ENODEV if the node > @@ -46,11 +47,14 @@ int riscv_of_processor_hartid(struct device_node *node) > > #ifdef CONFIG_PROC_FS > > -static void print_isa(struct seq_file *f, const char *orig_isa) > +static void print_isa(struct seq_file *f, const char *orig_isa, > + unsigned long cpuid) > { > - static const char *ext = "mafdcsu"; > + static const char *mandatory_ext = "mafdcsu"; > const char *isa = orig_isa; > const char *e; > + char unsupported_isa[26] = {0}; > + int index = 0; > > /* > * Linux doesn't support rv32e or rv128i, and we only support booting > @@ -70,27 +74,50 @@ static void print_isa(struct seq_file *f, const char *orig_isa) > isa += 5; > > /* > - * Check the rest of the ISA string for valid extensions, printing those > - * we find. RISC-V ISA strings define an order, so we only print the > + * RISC-V ISA strings define an order, so we only print all the > * extension bits when they're in order. Hide the supervisor (S) > * extension from userspace as it's not accessible from there. > + * Throw a warning only if any mandatory extensions are not available > + * and kernel is configured to have that mandatory extensions. > */ > - for (e = ext; *e != '\0'; ++e) { > - if (isa[0] == e[0]) { > + for (e = mandatory_ext; *e != '\0'; ++e) { > + if (isa[0] != e[0]) { > +#if defined(CONFIG_ISA_RISCV_C) There's no Kconfig option by this name, and we're requiring compressed instruction support as part of the RISC-V Linux baseline. Could you share the rationale behind this? Looks to me like this should be dropped. > + if (isa[0] == 'c') > + continue; > +#endif > +#if defined(CONFIG_FP) > + if ((isa[0] == 'f') || (isa[0] == 'd')) > + continue; > +#endif > + unsupported_isa[index] = e[0]; > + index++; > + } > + /* Only write if part of isa string */ > + if (isa[0] != '\0') { > if (isa[0] != 's') > seq_write(f, isa, 1); > - > isa++; > } > } > + if (isa[0] != '\0') { > + /* Add remainging isa strings */ > + for (e = isa; *e != '\0'; ++e) { > +#if !defined(CONFIG_VIRTUALIZATION) > + if (e[0] != 'h') > +#endif > + seq_write(f, e, 1); > + } > + } > seq_puts(f, "\n"); > > /* > * If we were given an unsupported ISA in the device tree then print > * a bit of info describing what went wrong. > */ > - if (isa[0] != '\0') > - pr_info("unsupported ISA \"%s\" in device tree\n", orig_isa); > + if (unsupported_isa[0]) > + pr_info("unsupported ISA extensions \"%s\" in device tree for cpu [%ld]\n", > + unsupported_isa, cpuid); > } > > static void print_mmu(struct seq_file *f, const char *mmu_type) > @@ -134,7 +161,7 @@ static int c_show(struct seq_file *m, void *v) > seq_printf(m, "processor\t: %lu\n", cpu_id); > seq_printf(m, "hart\t\t: %lu\n", cpuid_to_hartid_map(cpu_id)); > if (!of_property_read_string(node, "riscv,isa", &isa)) > - print_isa(m, isa); > + print_isa(m, isa, cpu_id); > if (!of_property_read_string(node, "mmu-type", &mmu)) > print_mmu(m, mmu); > if (!of_property_read_string(node, "compatible", &compat) > -- > 2.21.0 > > - Paul