From patchwork Fri Jan 29 16:48:52 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Renninger X-Patchwork-Id: 75759 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o0TGmsFF010520 for ; Fri, 29 Jan 2010 16:48:56 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751479Ab0A2Qs4 (ORCPT ); Fri, 29 Jan 2010 11:48:56 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752331Ab0A2Qsz (ORCPT ); Fri, 29 Jan 2010 11:48:55 -0500 Received: from cantor2.suse.de ([195.135.220.15]:34235 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751479Ab0A2Qsy (ORCPT ); Fri, 29 Jan 2010 11:48:54 -0500 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) by mx2.suse.de (Postfix) with ESMTP id 57F948726A; Fri, 29 Jan 2010 17:48:53 +0100 (CET) From: Thomas Renninger Organization: SUSE Products GmbH To: lenb@kernel.org Subject: [PATCH 2/2] ACPI: acpi_bus_{scan, bus, add}: return -ENODEV if no device was found Date: Fri, 29 Jan 2010 17:48:52 +0100 User-Agent: KMail/1.12.2 (Linux/2.6.32.1-0.0.14.f17927a-desktop; KDE/4.3.1; x86_64; ; ) Cc: linux-acpi@vger.kernel.org, bjorn.helgaas@hp.com, kristen.c.accardi@intel.com MIME-Version: 1.0 Message-Id: <201001291748.52980.trenn@suse.de> Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Fri, 29 Jan 2010 16:48:56 +0000 (UTC) Index: linux-2.6.32-SLE11-SP1/drivers/acpi/scan.c =================================================================== --- linux-2.6.32-SLE11-SP1.orig/drivers/acpi/scan.c +++ linux-2.6.32-SLE11-SP1/drivers/acpi/scan.c @@ -1361,9 +1361,25 @@ static int acpi_bus_scan(acpi_handle han if (child) *child = device; - return 0; + + if (device) + return 0; + else + return -ENODEV; } +/* + * acpi_bus_add and acpi_bus_start + * + * scan a given ACPI tree and (probably recently hot-plugged) + * create and add or starts found devices. + * + * If no devices were found -ENODEV is returned which does not + * mean that this is a real error, there just have been no suitable + * ACPI objects in the table trunk from which the kernel could create + * a device and add/start an appropriate driver. + */ + int acpi_bus_add(struct acpi_device **child, struct acpi_device *parent, acpi_handle handle, int type) @@ -1373,8 +1389,7 @@ acpi_bus_add(struct acpi_device **child, memset(&ops, 0, sizeof(ops)); ops.acpi_op_add = 1; - acpi_bus_scan(handle, &ops, child); - return 0; + return acpi_bus_scan(handle, &ops, child); } EXPORT_SYMBOL(acpi_bus_add); @@ -1388,8 +1403,7 @@ int acpi_bus_start(struct acpi_device *d memset(&ops, 0, sizeof(ops)); ops.acpi_op_start = 1; - acpi_bus_scan(device->handle, &ops, NULL); - return 0; + return acpi_bus_scan(device->handle, &ops, NULL); } EXPORT_SYMBOL(acpi_bus_start); Index: linux-2.6.32-SLE11-SP1/drivers/pci/hotplug/acpiphp_glue.c =================================================================== --- linux-2.6.32-SLE11-SP1.orig/drivers/pci/hotplug/acpiphp_glue.c +++ linux-2.6.32-SLE11-SP1/drivers/pci/hotplug/acpiphp_glue.c @@ -920,12 +920,6 @@ static int acpiphp_bus_add(struct acpiph -ret_val); goto acpiphp_bus_add_out; } - /* - * try to start anyway. We could have failed to add - * simply because this bus had previously been added - * on another add. Don't bother with the return value - * we just keep going. - */ ret_val = acpi_bus_start(device); acpiphp_bus_add_out: