From patchwork Mon Apr 23 09:16:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 133989 Delivered-To: patch@linaro.org Received: by 10.46.151.6 with SMTP id r6csp761742lji; Mon, 23 Apr 2018 02:17:10 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/DGin5cvDVj0tvvRB4F4rCE04coFYAEIpArQPCpEaGqhDyJAvx1RnP8kBdopP6tv4gkBBB X-Received: by 10.99.107.8 with SMTP id g8mr16401167pgc.271.1524475030184; Mon, 23 Apr 2018 02:17:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524475030; cv=none; d=google.com; s=arc-20160816; b=cs4m54G0b+Nk9bRAXmkH3G+i3vkYLgq2xVIb6+QEqYeZjyhwlss8j7YgB+xJdBwa4K NNdRcXYQmVZefs4/EAYq94XABEkhJu7+zLtO6FkiZVIR2eENAYSJ+OmLTGSsJP5G67OJ qVitPf5Ed40bj05lhqrhj3AWR+qFWhRuSzrp12XNsXaUIDJBp6ROkUYRORwWc03n+EVq bN8c3XjYKNNfi+DOhoHKCR4Yp3nRlRUcrfELHiurF0okELss35N3goae3hqUMIRbj9b4 eAL/Gzj9q2molzY4Qmci7t3TkiR0AaftmUzC4gt6P05Uvy7GAEBB44ORc4Pjlmx85L0s qNNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=+uNxr0zctRRL6A+gBEJqqh1QN09NMHTQYOH0GkQdFJw=; b=rb9I3B5UWOgjYq8aWgFhNrpcvnNb8HsSADS0XmvCXxQNk+rVzpIzq3x8K5UECTM693 4maz7/KmCBmwK/8nrXqkISBRSLepHjlENkI55cwTmJpm5VSpqjibbJH3bCrNpBQsPI/B KgYLnPlK1kvB01+7Gq18/9XTPeXa1mpLnplCmxcAVS4zlVhEN6F/SbGV86DkpPSKGPio XHigTEK/GtV+1OA0ZtC3Nj85wGZLdeh6MiebNhZ8thN00T9L5jTixXIRO9F3vAv3M9jN 7CSF1LnMkBa2vsWtzywxqSH5hnqqU60D5sv67vNbDBPkqrkjJXHbfzyDak+HCipQtgmt KsHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=eCTocTS2; spf=pass (google.com: best guess record for domain of linux-acpi-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-acpi-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p6si10740646pfk.357.2018.04.23.02.17.09; Mon, 23 Apr 2018 02:17:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-acpi-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=eCTocTS2; spf=pass (google.com: best guess record for domain of linux-acpi-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-acpi-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754174AbeDWJRJ (ORCPT + 8 others); Mon, 23 Apr 2018 05:17:09 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:43308 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754481AbeDWJRE (ORCPT ); Mon, 23 Apr 2018 05:17:04 -0400 Received: by mail-wr0-f194.google.com with SMTP id v15-v6so21022407wrm.10 for ; Mon, 23 Apr 2018 02:17:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=IO542E+sIPZSo/jIRw9koDWoZgBmQql9TQ3+GTpd1Nc=; b=eCTocTS24KGhpLSsWXoH6Cs0eUy9hMU7Sl06LHbfqaHChLktSvhCH7geGEsZTdZema wgul1TloViERYUJx/efGZT+24ROEnA474foNt78j6jJ1g/MY1M9PgnrHBi8FeOyrCFWZ WMet6WKr8AYmaPuiRx2H8iVRVq3TH0Wnp5SDU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=IO542E+sIPZSo/jIRw9koDWoZgBmQql9TQ3+GTpd1Nc=; b=D+eO+nDPGONX7lKhKG3bwJZD52gq30cdUrLYWj8vrwbqJzW1aobIW3JSg2rRuYkCns OcKW+arTksKR7ua7VRhL7LyEFIMry1qkhePw6Vk5lGs1wC9U3teEMLUhK++IRiqY3+kG xhg4FG8GWbhc03NqXaVKKppaXbeWreNVc1XgkKWnYbUdLbxXf5wY1ehoSXtlNlCAITVb eBqbiwIatIBghUHmOMnu9IQhTZzX7av6ZlUfkjH3lPOyv53+5L56poRbAALQt2dQdlEO l3oHmjmRcIO7sRrkP7bXVmUo1/Zrk+RmJ0uVhNSzavUcLWrz3JiPl81paCOwc4lP5OBj qE3g== X-Gm-Message-State: ALQs6tAKd6lGyU8wBkHfbjxKRQ28n6tkSKC3hCG6NecTlVjN9yneyZhW PKwvM47jFFYNHCKMA59V8qVZnA== X-Received: by 2002:adf:e549:: with SMTP id z9-v6mr10411296wrm.186.1524475023488; Mon, 23 Apr 2018 02:17:03 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:3995:5470:200:1aff:fe1b:b328]) by smtp.gmail.com with ESMTPSA id 39-v6sm18567634wry.89.2018.04.23.02.17.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Apr 2018 02:17:02 -0700 (PDT) From: Ard Biesheuvel To: rjw@rjwysocki.net Cc: lenb@kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, arnd@arndb.de, broonie@kernel.org, lorenzo.pieralisi@arm.com, bill.fletcher@linaro.org, linux-arm-kernel@lists.infradead.org, graeme.gregory@linaro.org, Ard Biesheuvel Subject: [PATCH v2] ACPI / button: make module loadable when booted in non-ACPI mode Date: Mon, 23 Apr 2018 11:16:56 +0200 Message-Id: <20180423091656.26257-1-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.17.0 Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org Modules such as nouveau.ko and i915.ko have a link time dependency on acpi_lid_open(), and due to its use of acpi_bus_register_driver(), the button.ko module that provides it is only loadable when booted in ACPI mode. However, the ACPI button driver can be built into the core kernel as well, in which case the dependency can always be satisfied, and the dependent modules can be loaded regardless of whether the system was booted in ACPI mode or not. So let's fix this asymmetry by making the ACPI button driver loadable as a module even if not booted in ACPI mode, so it can provide the acpi_lid_open() symbol in the same way as when built into the kernel. Signed-off-by: Ard Biesheuvel --- v2: invert acpi_disabled logic and move comment into __acpi_bus_register_driver Could we perhaps get this into -stable as well? It is not a classic regression, but it completely breaks, e.g., Fedora when booting in DT mode on an ARM system. drivers/acpi/button.c | 24 +++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) -- 2.17.0 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c index e1eee7a60fad..f33242e4fe6c 100644 --- a/drivers/acpi/button.c +++ b/drivers/acpi/button.c @@ -635,4 +635,26 @@ module_param_call(lid_init_state, NULL, 0644); MODULE_PARM_DESC(lid_init_state, "Behavior for reporting LID initial state"); -module_acpi_driver(acpi_button_driver); +static int __acpi_bus_register_driver(struct acpi_driver *driver) +{ + /* + * Modules such as nouveau.ko and i915.ko have a link time dependency + * on acpi_lid_open(), and would therefore not be loadable on ACPI + * capable kernels booted in non-ACPI mode if we use the ordinary + * acpi_bus_[un]register_driver routines here (which only work when + * booted in ACPI mode) and build this driver as a module. So provide + * our own versions instead. + */ + if (acpi_disabled) + return 0; + return acpi_bus_register_driver(driver); +} + +static void __acpi_bus_unregister_driver(struct acpi_driver *driver) +{ + if (!acpi_disabled) + acpi_bus_unregister_driver(driver); +} + +module_driver(acpi_button_driver, __acpi_bus_register_driver, + __acpi_bus_unregister_driver);