Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp1608709ybf; Thu, 27 Feb 2020 14:26:40 -0800 (PST) X-Google-Smtp-Source: APXvYqzU8EvsAgIjJfLqw6OkbhYShA0SrQbrs+HmrtgVJMRvOBjyjuCzAYos7rT7mXnaSGx3mf0+ X-Received: by 2002:a9d:2c2:: with SMTP id 60mr920037otl.208.1582842400695; Thu, 27 Feb 2020 14:26:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582842400; cv=none; d=google.com; s=arc-20160816; b=nEGsatqtXe3SNb7MAS/M/REOeBX5AtEuiFajrcRQkVrLbd/M38LXNPugA5nY2C874S dpjnuMhDTYozndhT5a1FbzaEIrwn9s4uKpIMjwWMaO8a8fDVrF/6T4bSsc0SpVaqsZHu KVVS1XPJlGl16ZdiuUwXMBQPhFlZWHzY8CoCCrKiJ82EHT5IvsjXN33JPSN4gvoEzSEY Dheu1Q1F4fOjtW/2zhx4AOqBqjjtJRkfSmOyLqZdiFHHl4mO48Hvt1xindd5rauzTR1w Ozr5bXGZp7HFmV7W/wHz0VICnh6J2CKxrOS8fzoIk7ah2/ChqqLBm1pHsTpAasGGZkQE wmVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=6Zkou0nN1ZjlDhTffguvOt4fPQSRPxfPqvG9iRwJKkQ=; b=cEtqRglQsbk/0Dlwj72p9iTbrTKGt3zibOlO5wD0XR1OjZqxiVWMdQsnJXiQCcfLEJ dA7ElyZTfq9IR8HK40SWvU0IkZokayaWg/jVlTttx6THD4KdYsZu4FDTAYwDyr0EBTlf AJrou+HqwDjQNwtC7MqBjGwVluPIf3ufVeeg3YpaU/fnnCyWvvTKqH8ZaTlp1XS3k2do uEYJR+ZpGSDRZXLyVdvPhHSpYufphM86l5UzsXhcKVCdCN5u8vA01ZnWuoIKQFVaRSkz ZB/MY/EzHJc8J67/xcHDEnLeVfmg2Wm/Tn6bJb68wa7ZojyUThQQL+iHhL+E34QmQ1E3 IJuQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o18si372245otk.80.2020.02.27.14.26.28; Thu, 27 Feb 2020 14:26:40 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730144AbgB0WZU (ORCPT + 99 others); Thu, 27 Feb 2020 17:25:20 -0500 Received: from cloudserver094114.home.pl ([79.96.170.134]:43956 "EHLO cloudserver094114.home.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729735AbgB0WZU (ORCPT ); Thu, 27 Feb 2020 17:25:20 -0500 Received: from 79.184.237.30.ipv4.supernova.orange.pl (79.184.237.30) (HELO kreacher.localnet) by serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer 0.83.341) id fcd830566f8affb9; Thu, 27 Feb 2020 23:25:17 +0100 From: "Rafael J. Wysocki" To: Linux ACPI Cc: LKML , "Rafael J. Wysocki" , Daniel Drake Subject: [PATCH 5/6] ACPI: EC: Simplify acpi_ec_add() Date: Thu, 27 Feb 2020 23:23:40 +0100 Message-ID: <2410193.UcW0be6u46@kreacher> In-Reply-To: <2094703.CetWLLyMuz@kreacher> References: <2094703.CetWLLyMuz@kreacher> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit 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 From: "Rafael J. Wysocki" First, notice that if the device ID in acpi_ec_add() is equal to ACPI_ECDT_HID, boot_ec_is_ecdt must be set, because this means that the device object passed to acpi_ec_add() comes from acpi_ec_ecdt_start() which fails if boot_ec_is_ecdt is unset. Accordingly, boot_ec_is_ecdt need not be set again in that case, so drop that redundant update of it from the code. Next, ec->handle must be a valid ACPI handle right before returning 0 from acpi_ec_add(), because it either is the handle of the device object passed to that function, or it is the boot EC handle coming from acpi_ec_ecdt_start() which fails if it cannot find a valid handle for the boot EC. Moreover, the object with that handle is regarded as a valid representation of the EC in all cases, so there is no reason to avoid the _DEP list update walk if that handle is the boot EC handle. Accordingly, drop the dep_update local variable from acpi_ec_add() and call acpi_walk_dep_device_list() for ec->handle unconditionally before returning 0 from it. Finally, the ec local variable in acpi_ec_add() need not be initialized to NULL and the status local variable declaration can be moved to the block in which it is used, so change the code in accordance with these observations. Signed-off-by: Rafael J. Wysocki --- drivers/acpi/ec.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 3f6127e919ab..4ed0c6155d3f 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c @@ -1608,19 +1608,18 @@ static bool acpi_ec_ecdt_get_handle(acpi_handle *phandle) static int acpi_ec_add(struct acpi_device *device) { - struct acpi_ec *ec = NULL; - bool dep_update = true; - acpi_status status; + struct acpi_ec *ec; int ret; strcpy(acpi_device_name(device), ACPI_EC_DEVICE_NAME); strcpy(acpi_device_class(device), ACPI_EC_CLASS); if (!strcmp(acpi_device_hid(device), ACPI_ECDT_HID)) { - boot_ec_is_ecdt = true; + /* Fast path: this device corresponds to the boot EC. */ ec = boot_ec; - dep_update = false; } else { + acpi_status status; + ec = acpi_ec_alloc(); if (!ec) return -ENOMEM; @@ -1663,16 +1662,16 @@ static int acpi_ec_add(struct acpi_device *device) ret = !!request_region(ec->command_addr, 1, "EC cmd"); WARN(!ret, "Could not request EC cmd io port 0x%lx", ec->command_addr); - if (dep_update) { - /* Reprobe devices depending on the EC */ - acpi_walk_dep_device_list(ec->handle); - } + /* Reprobe devices depending on the EC */ + acpi_walk_dep_device_list(ec->handle); + acpi_handle_debug(ec->handle, "enumerated.\n"); return 0; err: if (ec != boot_ec) acpi_ec_free(ec); + return ret; } -- 2.16.4