Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755686AbZLSAlq (ORCPT ); Fri, 18 Dec 2009 19:41:46 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755028AbZLSAlp (ORCPT ); Fri, 18 Dec 2009 19:41:45 -0500 Received: from smtp1.linux-foundation.org ([140.211.169.13]:50122 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754792AbZLSAlp (ORCPT ); Fri, 18 Dec 2009 19:41:45 -0500 Date: Fri, 18 Dec 2009 16:40:43 -0800 (PST) From: Linus Torvalds X-X-Sender: torvalds@localhost.localdomain To: Yinghai Lu cc: Jesse Barnes , Ingo Molnar , Ivan Kokshaysky , Kenji Kaneshige , Alex Chiang , Bjorn Helgaas , "linux-kernel@vger.kernel.org" , "linux-pci@vger.kernel.org" Subject: Re: [PATCH 2/12] pci: add pci_bridge_release_unused_res and pci_bus_release_unused_bridge_res -v2 In-Reply-To: <4B2C1DA9.4030907@kernel.org> Message-ID: References: <4B2BE9DD.3040504@kernel.org> <4B2BEC1B.9090104@kernel.org> <4B2C1DA9.4030907@kernel.org> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1682 Lines: 51 On Fri, 18 Dec 2009, Yinghai Lu wrote: > > ok, please check attached is right or not > > +static void __release_child_resources(struct resource *r) > +{ > + struct resource *tmp, *p; > + resource_size_t size; > + > + p = r->child; > + r->child = NULL; > + while (p) { > + tmp = p; > + p = p->sibling; > + > + tmp->parent = NULL; > + tmp->sibling = NULL; > + __release_child_resources(tmp); > + > + printk(KERN_DEBUG "release child resource %pR\n", tmp); > + /* need to restore size, and keep flags */ > + size = resource_size(tmp); > + tmp->start = 0; > + tmp->end = size - 1; > + } > +} Ok, this looks mostly right. I do worry about the alignment information: you lose that thing for any resource that had IORESOURCE_STARTALIGN set when you do this thing. That's pretty fundamental to the whole resource code, I suspect we should just finally add a 'alignment' field to the resource struct, so that alignment doesn't get lost when a resource is allocated. (Do a "git grep IORESOURCE_.*ALIGN" to see the kind of stuff I'm talking about, and look at he PCI 'setup-bus.c' code that sets that STARTALIGN thing). So a preliminary ack on the resource.c parts. The rest I'm still a bit dubious about, and the whole "we've lost alignment on the resources" is probably indicative of how none of the resource code has ever really been designed for this kind of "tear down and build back up again" behavior. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/