From patchwork Sat Oct 24 09:25:59 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yinghai Lu X-Patchwork-Id: 55705 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n9O9QQg5029961 for ; Sat, 24 Oct 2009 09:26:26 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751886AbZJXJ0U (ORCPT ); Sat, 24 Oct 2009 05:26:20 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752223AbZJXJ0U (ORCPT ); Sat, 24 Oct 2009 05:26:20 -0400 Received: from hera.kernel.org ([140.211.167.34]:46514 "EHLO hera.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751886AbZJXJ0T (ORCPT ); Sat, 24 Oct 2009 05:26:19 -0400 Received: from [192.168.101.9] (adsl-75-36-250-116.dsl.pltn13.sbcglobal.net [75.36.250.116]) (authenticated bits=0) by hera.kernel.org (8.14.3/8.14.3) with ESMTP id n9O9QGHd008582 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 24 Oct 2009 09:26:20 GMT X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.95.2 at hera.kernel.org Message-ID: <4AE2C827.8040905@kernel.org> Date: Sat, 24 Oct 2009 02:25:59 -0700 From: Yinghai Lu User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: Jesse Barnes CC: "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Ingo Molnar Subject: [PATCH] pci: only release that resource index is less than 3 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Index: linux-2.6/drivers/pci/setup-bus.c =================================================================== --- linux-2.6.orig/drivers/pci/setup-bus.c +++ linux-2.6/drivers/pci/setup-bus.c @@ -344,9 +344,14 @@ static struct resource *find_free_bus_re * if there is no child under that, we should release * and use it. don't need to reset it, pbus_size_* will * set it again + * need to be less 3, otherwise can not write it to + * bridge, also need to avoid releasing it from + * transparent bus path */ - if (!r->child && !release_resource(r)) - return r; + if (i < 3 && !r->child) { + if (!release_resource(r)) + return r; + } } } return NULL;