From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754923Ab2LMWSr (ORCPT ); Thu, 13 Dec 2012 17:18:47 -0500 Received: from hydra.sisk.pl ([212.160.235.94]:32828 "EHLO hydra.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754006Ab2LMWSe (ORCPT ); Thu, 13 Dec 2012 17:18:34 -0500 From: "Rafael J. Wysocki" To: ACPI Devel Maling List Cc: Bjorn Helgaas , LKML , linux-pci@vger.kernel.org, Yinghai Lu , Toshi Kani , Myron Stowe , Yijing Wang , Jiang Liu Subject: [PATCH rev.2 0/6] ACPI: Change the ACPI namespace scanning code ordering Date: Thu, 13 Dec 2012 23:15:34 +0100 Message-ID: <1499423.ez5cZl2uAf@vostro.rjw.lan> User-Agent: KMail/4.9.3 (Linux/3.7.0; KDE/4.9.3; x86_64; ; ) In-Reply-To: <8498184.VilrUmatxI@vostro.rjw.lan> References: <8498184.VilrUmatxI@vostro.rjw.lan> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="utf-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi All, On Sunday, December 09, 2012 11:58:42 PM Rafael J. Wysocki wrote: > Hi, > > The following patches change the ordering of the ACPI namespace scanning code > so that all struct acpi_device objects in the given scope are registered before > ACPI drivers are probed against them. They also do some simplifications and > clarifications of the code made possible by this main change. > > This is done for three basic reasons. First, we need the boot ACPI namespace > scanning code to be as similar as reasonably possible to the hot-plug ACPI > namespace scanning code. Second, the ordering of PCI devices enumeration > versus ACPI-backed platform devices registration needs to be such that the PCI > devices in the given scope are all registered first. Finally, when we start to > actually manage ACPI device resources as appropriate (e.g. resolve resource > conflicts properly) we'll need all struct acpi_device nodes to be registered > before any "companion" physical nodes or ACPI drivers are bound to them. > > The patches have been tested on Toshiba Portege R500 without breaking stuff > (I used some additional debug code to verify that the ordering of device > discovery had not been modified by them), but if you see any problems with > them regarding hot-plug, please let me know. > > [1/6] - Separate adding ACPI device objects from probing ACPI drivers. > [2/6] - Change the ordering of PCI root bridge driver registration. > [3/6] - Make acpi_bus_add() and acpi_bus_start() visibly different. > [4/6] - Reduce the usage of struct acpi_bus_ops > [5/6] - Replace struct acpi_bus_ops with an enum type > [6/6] - Change the ordering of acpi_bus_check_add() to avoid unnecessary checks. The second revision is necessary to address problems found by Yijing Wang during testing and explained by Jiang Liu (thanks guys!). The problem is that acpi_walk_namespace() doesn't execute the pre_order_visit callback for the starting handle, so the callback routine has the be executed for it directly, if necessary. I also modified a couple of changelogs to better explain the motivation of the patches. Boot sequence tested on Toshiba Portege R500, but testing on systems with hotplug will be appreciated. Thanks, Rafael -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.