Received: by 2002:a89:48b:0:b0:1f5:f2ab:c469 with SMTP id a11csp798937lqd; Wed, 24 Apr 2024 18:20:57 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVbGtp5jLDrFMRjDVhoUNDbxArkoZwMwqPG533IblY22BPGwNKmu9GE1zUw9di+kFqUIA8PDDMSnlre38ZLyv0xt9GQg0Im1ddAYzuG2Q== X-Google-Smtp-Source: AGHT+IHAdbM4aLSySbY63NQEoKJ46aDJrBZ7+lUEfSEgdPmpBlvDrqys7J5qjaSUQMpBMg3GTtrO X-Received: by 2002:a17:90b:4a03:b0:2ae:d553:6952 with SMTP id kk3-20020a17090b4a0300b002aed5536952mr3747849pjb.4.1714008056945; Wed, 24 Apr 2024 18:20:56 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1714008056; cv=pass; d=google.com; s=arc-20160816; b=tSPPmr2DBuaEgFOs11VZBmHD5uZF2iO/O1OOr+V8SXpg9lbgDaBaZe5iKPIC3efI7B suLO75BWK9HgWMoM0g+XlazhIxbcBVwlwlyY5UH6RzNBU1K1uj/lZKMMZhRaz3K3yk54 fSPp2ZNxN+7g7zPvcgOYzImBQR+6FBifQImzEec/KNmLXDlrjQeFNC/bqYoAUh6PMvQ5 jmrF1fluSgBuj/SEoKtn4n0ImpD5WPPvswZR+n2ZyfloJRg9WCazGWWUMDMe976/Rqha hI1lTCW9CtG99f+96nER7xBPWFBpsShNl2PJMMMYJdkNSIkndFqaYzjV5c79sTO5iiir Rlhg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:in-reply-to:mime-version :list-unsubscribe:list-subscribe:list-id:precedence:user-agent:date :message-id:from:references:cc:to:subject; bh=oREDSZ3VDin0Pbb34Gjfmt9ywF1k0CucrmhKjboPJOg=; fh=VZp1TmRirWKHfcvSXs/7GNT2arr0NEscR983dg+uEWI=; b=U5zX9Uzl1XD8v+4JKRHVuO1paV22PAglLoB+93QYCzwNSmVXeCGSSbsf9Bn6R9jaEQ S0MvBMfpxlGVRwmZyonVQX0w4tXc+RshLHTgSsBRH3woOlG+3NqKIToL7GX7WCUHS9dx soRQcxuFELLY2sZNwx6apqMJAbsOz02FfGUz+dtR/7jV55tYuWfLjFLjy6M7Fdd2pli5 edTbBP6l2CWN4jnzeW1aHogGryGMwxg1BzmXmuBuD268GYEJ2EUqeLfssyyOsioAF62Q brlAzB7HEitjzwbM0S/GQOris0iti2ehSHn9CCD+HDYhHMt4K/gpU1PY7ygDke/GxLRA D2sw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-157902-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-157902-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id ii14-20020a17090b488e00b002ade5fb78dfsi6083420pjb.80.2024.04.24.18.20.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Apr 2024 18:20:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-157902-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-157902-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-157902-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 327ABB2377B for ; Thu, 25 Apr 2024 01:20:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4B610FBF0; Thu, 25 Apr 2024 01:20:40 +0000 (UTC) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47E232599; Thu, 25 Apr 2024 01:20:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.187 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714008039; cv=none; b=dNu2qFvD27vmNZQ/YdDmPoIN6pw5xO9OtEP2k2HDJQNug7We9yyJOuyX3nUFmwAgwLh5wEPtq2FqWCdKMiDdJjyHaPfbO5x2JhXXuJZ4a/JjBi0V0L3fwELInkqeP1hgEzlYtClvFcWoIevWITwBH7dwNm+7lIqrxv9h7W1UUJQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714008039; c=relaxed/simple; bh=zL62D1yctwFMaxehdNJzXgBvgzYkbKTm0HHQpGl9Tf0=; h=Subject:To:CC:References:From:Message-ID:Date:MIME-Version: In-Reply-To:Content-Type; b=DxW2UP44elLFzkVpoc12CZW/5IAFWUEAoF56oltxkrUByPP7y1zXfIOHWFU3uuppCXRxBFN0SDh/T/SkeT2J4MehYFHVTx9iUa3eJORZyzXzDPiNyaOIK8cdlaESeQ81kPyQn25zQqrpaH8ovXRb8Szzy1ME1SMvy4r8AXGwYYk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=45.249.212.187 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.252]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4VPydF6KhCztT1D; Thu, 25 Apr 2024 09:17:21 +0800 (CST) Received: from dggpemm500002.china.huawei.com (unknown [7.185.36.229]) by mail.maildlp.com (Postfix) with ESMTPS id 4C9A7180080; Thu, 25 Apr 2024 09:20:33 +0800 (CST) Received: from [10.174.178.247] (10.174.178.247) by dggpemm500002.china.huawei.com (7.185.36.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 25 Apr 2024 09:20:32 +0800 Subject: Re: [PATCH v7 04/16] ACPI: processor: Move checks and availability of acpi_processor earlier To: Jonathan Cameron CC: Thomas Gleixner , Peter Zijlstra , , , , , , , , , Russell King , "Rafael J . Wysocki" , Miguel Luis , James Morse , Salil Mehta , Jean-Philippe Brucker , Catalin Marinas , Will Deacon , Ingo Molnar , Borislav Petkov , Dave Hansen , , , References: <20240418135412.14730-1-Jonathan.Cameron@huawei.com> <20240418135412.14730-5-Jonathan.Cameron@huawei.com> <0cfc4e2d-65ab-0040-2c7d-fad83f32455b@huawei.com> <20240424181857.00000e0f@Huawei.com> From: Hanjun Guo Message-ID: <56cdbd13-d7c8-4f02-64f0-216b72847e45@huawei.com> Date: Thu, 25 Apr 2024 09:20:31 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In-Reply-To: <20240424181857.00000e0f@Huawei.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemm500002.china.huawei.com (7.185.36.229) On 2024/4/25 1:18, Jonathan Cameron wrote: > On Tue, 23 Apr 2024 19:53:34 +0800 > Hanjun Guo wrote: > >>> @@ -232,6 +263,7 @@ static int acpi_processor_get_info(struct acpi_device *device) >>> acpi_status status = AE_OK; >>> static int cpu0_initialized; >>> unsigned long long value; >>> + int ret; >>> >>> acpi_processor_errata(); >>> >>> @@ -316,10 +348,12 @@ static int acpi_processor_get_info(struct acpi_device *device) >>> * because cpuid <-> apicid mapping is persistent now. >>> */ >>> if (invalid_logical_cpuid(pr->id) || !cpu_present(pr->id)) { >>> - int ret = acpi_processor_hotadd_init(pr); >>> + ret = acpi_processor_hotadd_init(pr, device); >>> >>> if (ret) >>> - return ret; >>> + goto err; >>> + } else { >>> + acpi_processor_set_per_cpu(pr, device); >>> } >>> >>> /* >>> @@ -357,6 +391,10 @@ static int acpi_processor_get_info(struct acpi_device *device) >>> arch_fix_phys_package_id(pr->id, value); >>> >>> return 0; >>> + >>> +err: >>> + per_cpu(processors, pr->id) = NULL; >> >> ... >> >>> + return ret; >>> } >>> >>> /* >>> @@ -365,8 +403,6 @@ static int acpi_processor_get_info(struct acpi_device *device) >>> * (cpu_data(cpu)) values, like CPU feature flags, family, model, etc. >>> * Such things have to be put in and set up by the processor driver's .probe(). >>> */ >>> -static DEFINE_PER_CPU(void *, processor_device_array); >>> - >>> static int acpi_processor_add(struct acpi_device *device, >>> const struct acpi_device_id *id) >>> { >>> @@ -395,28 +431,6 @@ static int acpi_processor_add(struct acpi_device *device, >>> if (result) /* Processor is not physically present or unavailable */ >>> return 0; >>> >>> - BUG_ON(pr->id >= nr_cpu_ids); >>> - >>> - /* >>> - * Buggy BIOS check. >>> - * ACPI id of processors can be reported wrongly by the BIOS. >>> - * Don't trust it blindly >>> - */ >>> - if (per_cpu(processor_device_array, pr->id) != NULL && >>> - per_cpu(processor_device_array, pr->id) != device) { >>> - dev_warn(&device->dev, >>> - "BIOS reported wrong ACPI id %d for the processor\n", >>> - pr->id); >>> - /* Give up, but do not abort the namespace scan. */ >>> - goto err; >>> - } >>> - /* >>> - * processor_device_array is not cleared on errors to allow buggy BIOS >>> - * checks. >>> - */ >>> - per_cpu(processor_device_array, pr->id) = device; >>> - per_cpu(processors, pr->id) = pr; >> >> Nit: seems we need to remove the duplicated >> per_cpu(processors, pr->id) = NULL; in acpi_processor_add(): >> >> --- a/drivers/acpi/acpi_processor.c >> +++ b/drivers/acpi/acpi_processor.c >> @@ -446,7 +446,6 @@ static int acpi_processor_add(struct acpi_device >> *device, >> err: >> free_cpumask_var(pr->throttling.shared_cpu_map); >> device->driver_data = NULL; >> - per_cpu(processors, pr->id) = NULL; > > I don't follow. This path is used if processor_get_info() succeeded and > we later fail. I don't see where the the duplication is? It is! Thanks for the clarification. Thanks Hanjun