From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vc0-f174.google.com ([209.85.220.174]:55307 "EHLO mail-vc0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752456Ab2H2QCq (ORCPT ); Wed, 29 Aug 2012 12:02:46 -0400 MIME-Version: 1.0 In-Reply-To: <20120829101423.GA18856@ram-ThinkPad-T61> References: <1340736849-14875-1-git-send-email-yinghai@kernel.org> <1340736849-14875-3-git-send-email-yinghai@kernel.org> <20120829101423.GA18856@ram-ThinkPad-T61> Date: Wed, 29 Aug 2012 09:02:44 -0700 Message-ID: Subject: Re: [PATCH -v12 02/15] resources: Add probe_resource() From: Yinghai Lu To: Ram Pai Cc: Linus Torvalds , Bjorn Helgaas , Benjamin Herrenschmidt , Tony Luck , David Miller , x86 , Dominik Brodowski , Andrew Morton , Greg Kroah-Hartman , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-pci-owner@vger.kernel.org List-ID: On Wed, Aug 29, 2012 at 3:14 AM, Ram Pai wrote: > @@ -718,12 +727,12 @@ void insert_resource_expand_to_fit(struct resource *root, struct resource *new) > */ > int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size) > { > - struct resource *tmp, *parent = res->parent; > + struct resource *tmp, *parent; > resource_size_t end = start + size - 1; > int result = -EBUSY; > > write_lock(&resource_lock); > - > + parent = res->parent; > if (!parent) > goto skip; yes, in the v7 of probe_resource() patch that I sent before, introduced _adjust_resource solved the problem. @@ -741,14 +741,13 @@ void insert_resource_expand_to_fit(struc * arguments. Returns 0 on success, -EBUSY if it can't fit. * Existing children of the resource are assumed to be immutable. */ -int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size) +static int __adjust_resource(struct resource *res, resource_size_t start, + resource_size_t size) { struct resource *tmp, *parent = res->parent; resource_size_t end = start + size - 1; int result = -EBUSY; - write_lock(&resource_lock); - if (!parent) goto skip; @@ -776,9 +775,19 @@ skip: result = 0; out: - write_unlock(&resource_lock); return result; } +int adjust_resource(struct resource *res, resource_size_t start, + resource_size_t size) +{ + int ret; + + write_lock(&resource_lock); + ret = __adjust_resource(res, start, size); + write_unlock(&resource_lock); + + return ret; +} EXPORT_SYMBOL(adjust_resource); static void __init __reserve_region_with_split(struct resource *root,