Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp87162imj; Wed, 13 Feb 2019 05:12:00 -0800 (PST) X-Google-Smtp-Source: AHgI3IZTmf2+Ur01VfIGso6MXWUpLlkGaTUXFT0Uoo6yGdNlkNWCazfbJUVFDsqMyOzQ3ZjGpX50 X-Received: by 2002:a63:fa10:: with SMTP id y16mr437697pgh.88.1550063520251; Wed, 13 Feb 2019 05:12:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550063520; cv=none; d=google.com; s=arc-20160816; b=XuLvn8jwNORVMS1rcNAmtRcCGeGmVxxsHhPCYvMJhoMJN/54sEVcPL6UTGxztVlLPI 6c19PK2uwcC4maybeOjiNONaGazSpudZ9OFBsxDSCskoEd1FozGRJJuAyXIxLVNm096+ ymwX08CLjXHGQkPq+f4PpTCndRaR7V3wpTfvUHvCp+/ihz4+HvNwT668hWrBK27hyy8g XsAweb8q1R3qUcNyT5XtKvBQVb75sHkLNGUqSRVgk79C5H+YyIk/gkW4cdgfdUZvWVnq p3c0OwJnU3bb6jiGElwcapG4ME7qXDybj4ZpKuUFRB1rVCpARhJQO1la5RlgEnliyTC1 zTCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=Izvgryl2iiTiX+PEw/PVUMFMisAtBv+xAMEzVWOHECE=; b=cDFSsjwimEYRuvZuep/vYhVdF7jPE2KkEoXbtuKleKqYluAyJfMLjkRnR9A9olZPhf vcyf+77zNyI3mheTZU4+pwyH0c3zW35GCGfBkXW3EOpNmK/p/YTFI4lT32ZAh9wShctP Mf45M39TT5/2nc1O2ui96awG7j5644XXPI90MWulk+S2wIrkU91vEXLT0HCiwktU2TTI iC+Vdi+JNfpbZIlth0rJomoqknXYjhCFL3dkfTC6NA+VK1HN9HuZEhvAxq6MnMuXf/sF XMxkuYbzfYKQuXMdAP5MgATQ96HVHWcVTllTHE1XhEDlJ1TB1DLuYwaVPq+gRCp+ikVD iRnw== 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c139si3044435pfb.281.2019.02.13.05.11.44; Wed, 13 Feb 2019 05:12:00 -0800 (PST) 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390585AbfBMIow (ORCPT + 99 others); Wed, 13 Feb 2019 03:44:52 -0500 Received: from mail-lj1-f195.google.com ([209.85.208.195]:33928 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731887AbfBMIow (ORCPT ); Wed, 13 Feb 2019 03:44:52 -0500 Received: by mail-lj1-f195.google.com with SMTP id v14-v6so1303187ljv.1 for ; Wed, 13 Feb 2019 00:44:50 -0800 (PST) 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:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Izvgryl2iiTiX+PEw/PVUMFMisAtBv+xAMEzVWOHECE=; b=O7X7oXV0SybTExzB0JDE9W9Li0qAoiPZxU6p54bRMFMq8pJGCLiOjXWvZ7OgmE7+4Q AnOX230SmXJ4gXKRdPuVnaDIijxgUaCVnZs25GB3PDuTVnt6Qx3EIWrAP53XnrYg+rkc NwVkGAy5EF5mYdaxBHcFIdXxiaFi2MHbty08CZj5eKbvKTqN8gQBjoeYhaHdYP81TccV vBks26EtJB+6z0LQOTT7oAcPb+dVXCq8PeRSepkmfIiKskBwFoLYsmGUDtjy3+mXDf33 94rtSy8BXx3WSvxXyigiyCp4hqNZm7PSX6r5ufPh/Hr6gdAXAhqXZZvE9v5PbdzcjSOr v7yw== X-Gm-Message-State: AHQUAuazQwgso7MHuAMIQDswHLrEriz1CVG2YA1Jm9WCA6rr9E73/EXM GLnn6t1Ii8HaDY4RRfF52toZjVCW X-Received: by 2002:a2e:4942:: with SMTP id b2-v6mr4487935ljd.168.1550047489794; Wed, 13 Feb 2019 00:44:49 -0800 (PST) Received: from xi.terra (c-74bee655.07-184-6d6c6d4.bbcust.telenor.se. [85.230.190.116]) by smtp.gmail.com with ESMTPSA id t14sm347210lft.96.2019.02.13.00.44.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 13 Feb 2019 00:44:48 -0800 (PST) Received: from johan by xi.terra with local (Exim 4.91) (envelope-from ) id 1gtq9q-0002gA-9M; Wed, 13 Feb 2019 09:44:42 +0100 Date: Wed, 13 Feb 2019 09:44:42 +0100 From: Johan Hovold To: Atish Patra Cc: Johan Hovold , Rob Herring , Albert Ou , Jason Cooper , Alan Kao , Dmitriy Cherkasov , Andreas Schwab , Daniel Lezcano , "linux-kernel@vger.kernel.org" , Marc Zyngier , Palmer Dabbelt , Paul Walmsley , Anup Patel , "linux-riscv@lists.infradead.org" , Thomas Gleixner Subject: Re: [v4 PATCH 8/8] RISC-V: Assign hwcap as per comman capabilities. Message-ID: <20190213084442.GD28278@localhost> References: <1549969812-22502-1-git-send-email-atish.patra@wdc.com> <1549969812-22502-9-git-send-email-atish.patra@wdc.com> <20190212112534.GB28278@localhost> <61766631-42f4-ec25-3b5c-ae892da44ccb@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <61766631-42f4-ec25-3b5c-ae892da44ccb@wdc.com> User-Agent: Mutt/1.11.3 (2019-02-01) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 12, 2019 at 11:58:10AM -0800, Atish Patra wrote: > On 2/12/19 3:25 AM, Johan Hovold wrote: > > On Tue, Feb 12, 2019 at 03:10:12AM -0800, Atish Patra wrote: > >> Currently, we set hwcap based on first valid hart from DT. This may not > >> be correct always as that hart might not be current booting cpu or may > >> have a different capability. > >> > >> Set hwcap as the capabilities supported by all possible harts with "okay" > >> status. > >> > >> Signed-off-by: Atish Patra > >> --- > >> arch/riscv/kernel/cpufeature.c | 41 ++++++++++++++++++++++------------------- > >> 1 file changed, 22 insertions(+), 19 deletions(-) > >> > >> diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c > >> index e7a4701f..a1e4fb34 100644 > >> --- a/arch/riscv/kernel/cpufeature.c > >> +++ b/arch/riscv/kernel/cpufeature.c > >> @@ -20,6 +20,7 @@ > >> #include > >> #include > >> #include > >> +#include > >> > >> unsigned long elf_hwcap __read_mostly; > >> #ifdef CONFIG_FPU > >> @@ -42,28 +43,30 @@ void riscv_fill_hwcap(void) > >> > >> elf_hwcap = 0; > >> > >> - /* > >> - * We don't support running Linux on hertergenous ISA systems. For > >> - * now, we just check the ISA of the first "okay" processor. > >> - */ > >> for_each_of_cpu_node(node) { > >> - if (riscv_of_processor_hartid(node) >= 0) > >> - break; > >> - } > >> - if (!node) { > >> - pr_warn("Unable to find \"cpu\" devicetree entry\n"); > >> - return; > >> - } > >> + unsigned long this_hwcap = 0; > >> > >> - if (of_property_read_string(node, "riscv,isa", &isa)) { > >> - pr_warn("Unable to find \"riscv,isa\" devicetree entry\n"); > >> - of_node_put(node); > >> - return; > >> - } > >> - of_node_put(node); > >> + if (riscv_of_processor_hartid(node) < 0) > >> + continue; > >> > > >> - for (i = 0; i < strlen(isa); ++i) > >> - elf_hwcap |= isa2hwcap[(unsigned char)(isa[i])]; > >> + if (of_property_read_string(node, "riscv,isa", &isa)) { > >> + pr_warn("Unable to find \"riscv,isa\" devicetree entry\n"); > >> + return; > > > > Did you want "continue" here to continue processing the other harts? > > Hmm. If a cpu node doesn't have isa in DT, that means DT is wrong. A > "continue" here will let user space use other harts just with a warning > message? > > Returning here will not set elf_hwcap which forces the user to fix the > DT. I am not sure what should be the defined behavior in this case. > > Any thoughts ? The problem is that the proposed code might still set elf_hwcap -- it all depends on the order of the hart nodes in dt (i.e. it will only be left unset if the first node is malformed). For that reason, I'd say it's better to either bail out (hard or at least with elf_hwcap unset) or to continue processing the other nodes. The former might break current systems with malformed dt, though. And since the harts are expected to have the same ISA, continuing the processing while warning and ignoring the malformed node might be acceptable. Johan