Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp822808ybz; Fri, 1 May 2020 09:09:49 -0700 (PDT) X-Google-Smtp-Source: APiQypK/AmupU3tzFm3NL4X1CBVwixhHun7MN+EQZg3XgR0wyH6EtDG9PxnpG1cMf/ZL3b4HWcPD X-Received: by 2002:a17:906:3787:: with SMTP id n7mr3976309ejc.200.1588349389112; Fri, 01 May 2020 09:09:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588349389; cv=none; d=google.com; s=arc-20160816; b=NPdqQcXzzqRVRNm6p/ss75jjZyCJk5deEewwR/SRdksuG7JopD45I6v0zBX/CUNFH3 I1q61uK2qfpphXIRL/bkpxjIOHuXhsKXHqGvJMtsRCrsmYRi3c5zgKp0qD/atxdcHduT cEQClBRK5YdchNxVYB9xB0ryV4THNeIAb3uYgs28bRHFIWsZO1IXGtmoo3JJii+3nVks IsEsGxsHfItCQNwGOkcMXT2fb0NZ9DnaQnyZgKtWsTOAY0ac119tVxbRoJ9O1lx38qby dWGp9y3CQagyGUr1+PQObrdE1JVeo6/ah1WKT3vkfQzqJJ/+MwjYCpOSKGV6l4YliOpY 90Zw== 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=+EhHd5v+SyCNyzI9thuo9qKnmpjuM7utKMk0QW0LYBg=; b=FpuXSbrRv8cxEi/E6F/QvXSZ28MZ0n4660FET921dzcUgznDCN40i/CZ8uPJHr2uiO xNzoLY7gIycsGSUR54wfo7bETy6teXlwbM137hwVc2/SxJtAAiqlH2JcaMJxRXwx/pz6 wM+xxUYbiBreIWoP2AK7h6mMOtZghlMLKRHcWNrUtPYk8W34sbr4RIZrPqQryj+P329V s5nptYYbaeISS1JN3+TmnQUw0PQ/Actkm5Qn2D/PXoekIcvzEKVbN724bHrrFmTbBxs/ xtsP0l+jtupeS+S6vxOtj90oDvMkvF8aQRRx3KCyaYLPNFxe3BJIEmoDJLmp9r5YY0TQ FUOw== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i14si2118072eja.57.2020.05.01.09.09.24; Fri, 01 May 2020 09:09:49 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729634AbgEAQF1 (ORCPT + 99 others); Fri, 1 May 2020 12:05:27 -0400 Received: from foss.arm.com ([217.140.110.172]:43224 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728495AbgEAQF1 (ORCPT ); Fri, 1 May 2020 12:05:27 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B893530E; Fri, 1 May 2020 09:05:26 -0700 (PDT) Received: from bogus (unknown [10.37.12.80]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5A5BC3F68F; Fri, 1 May 2020 09:05:24 -0700 (PDT) Date: Fri, 1 May 2020 17:05:21 +0100 From: Sudeep Holla To: John Garry Cc: "linux-arm-kernel@lists.infradead.org" , Mark Rutland , Lorenzo Pieralisi , Catalin Marinas , Sudeep Holla , "linux-kernel@vger.kernel.org" , Steven Price , "harb@amperecomputing.com" , Will Deacon Subject: Re: [PATCH 5/5] arm/arm64: smccc: Add ARCH_SOC_ID support Message-ID: <20200501160521.GB24840@bogus> References: <20200430114814.14116-1-sudeep.holla@arm.com> <20200430114814.14116-6-sudeep.holla@arm.com> <426ff8ab-9c13-4301-a91e-989c19c4ff58@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <426ff8ab-9c13-4301-a91e-989c19c4ff58@huawei.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 01, 2020 at 04:25:27PM +0100, John Garry wrote: > On 30/04/2020 12:48, Sudeep Holla wrote: > > +static int __init smccc_soc_init(void) > > +{ > > + struct device *dev; > > + int ret, soc_id_rev; > > + struct arm_smccc_res res; > > + static char soc_id_str[8], soc_id_rev_str[12]; > > + > > + if (arm_smccc_get_version() < ARM_SMCCC_VERSION_1_2) > > + return 0; > > + > > + ret = smccc_soc_id_support_check(); > > + if (ret) > > + return ret; > > + > > + arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_SOC_ID, 0, &res); > > + > > + ret = smccc_map_error_codes(res.a0); > > + if (ret) > > + return ret; > > + > > + soc_id_version = res.a0; > > + > > + arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_SOC_ID, 1, &res); > > + > > + ret = smccc_map_error_codes(res.a0); > > + if (ret) > > + return ret; > > + > > + soc_id_rev = res.a0; > > + > > + soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); > > + if (!soc_dev_attr) > > + return -ENOMEM; > > + > > + sprintf(soc_id_str, "0x%04x", IMP_DEF_SOC_ID(soc_id_version)); > > + sprintf(soc_id_rev_str, "0x%08x", soc_id_rev); > > + > > + soc_dev_attr->soc_id = soc_id_str; > > + soc_dev_attr->revision = soc_id_rev_str; > > + > > + soc_dev = soc_device_register(soc_dev_attr); > > + if (IS_ERR(soc_dev)) { > > + ret = PTR_ERR(soc_dev); > > + goto free_soc; > > + } > > + > > + dev = soc_device_to_device(soc_dev); > > + > > Just wondering, what about if the platform already had a SoC driver - now it > could have another one, such that we may have multiple sysfs soc devices, > right? > Yes I had a quick look at that. 1. Such platform has option not to implement this SOC_ID if it doesn't really require it. 2. If the firmware starts implementing it on some variants, then we can distinguish them with compatibles and blacklist them from the other SoC driver if having both is an issue 3. SoC bus layer supports adding multiple SoC ID driver and it may show up as /sys/devices/soc which may or may not be fine. But this happens only if neither [1] nor [2] is done. I am happy to see if there's any solution for this. Any suggestions ? -- Regards, Sudeep