login
Login
/
Register
Search
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2008
»
March
»
21
Re: [PATCH 1/5] generic __remove_pages() support
view
thread
!MAILaRCHIVE_VOTE_RePLACE
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From:
Badari Pulavarty <pbadari@...>
To: Yasunori Goto <y-goto@...>
Cc: lkml <linux-kernel@...>, <linuxppc-dev@...>, <paulus@...>, Andrew Morton <akpm@...>
Subject:
Re: [PATCH 1/5] generic __remove_pages() support
Date: Friday, March 21, 2008 - 12:55 pm
On Sat, 2008-03-22 at 00:25 +0900, Yasunori Goto wrote:
quoted text
> Badari-san. > > > Index: linux-2.6.25-rc2/mm/memory_hotplug.c > > =================================================================== > > --- linux-2.6.25-rc2.orig/mm/memory_hotplug.c 2008-02-27 12:58:17.000000000 -0800 > > +++ linux-2.6.25-rc2/mm/memory_hotplug.c 2008-02-27 16:06:50.000000000 -0800 > > @@ -102,6 +102,21 @@ static int __add_section(struct zone *zo > > return register_new_memory(__pfn_to_section(phys_start_pfn)); > > } > > > > +static int __remove_section(struct zone *zone, struct mem_section *ms) > > +{ > > + int ret = -EINVAL; > > + > > + if (!valid_section(ms)) > > + return ret; > > + > > + ret = unregister_memory_section(ms); > > + if (ret) > > + return ret; > > + > > + sparse_remove_one_section(zone, ms); > > + return 0; > > +} > > + > > /* > > * Reasonably generic function for adding memory. It is > > * expected that archs that support memory hotplug will > > @@ -135,6 +150,35 @@ int __add_pages(struct zone *zone, unsig > > } > > EXPORT_SYMBOL_GPL(__add_pages); > > > > +int __remove_pages(struct zone *zone, unsigned long phys_start_pfn, > > + unsigned long nr_pages) > > +{ > > + unsigned long i, ret = 0; > > + int sections_to_remove; > > + unsigned long flags; > > + struct pglist_data *pgdat = zone->zone_pgdat; > > + > > + /* > > + * We can only remove entire sections > > + */ > > + BUG_ON(phys_start_pfn & ~PAGE_SECTION_MASK); > > + BUG_ON(nr_pages % PAGES_PER_SECTION); > > + > > + release_mem_region(phys_start_pfn << PAGE_SHIFT, nr_pages * PAGE_SIZE); > > + > > + sections_to_remove = nr_pages / PAGES_PER_SECTION; > > + for (i = 0; i < sections_to_remove; i++) { > > + unsigned long pfn = phys_start_pfn + i*PAGES_PER_SECTION; > > + pgdat_resize_lock(pgdat, &flags); > > + ret = __remove_section(zone, __pfn_to_section(pfn)); > > + pgdat_resize_unlock(pgdat, &flags); > > + if (ret) > > + break; > > + } > > + return ret; > > +} > > +EXPORT_SYMBOL_GPL(__remove_pages); > > Here may be a bug. > __remove_section() is called with pgdat_resize_lock() which is > spin_lock_irqsave(). > > __remove_section() > | > +--> unregister_memory_section() > | > +--> remove_memory_block() > | > +--> unregister_memory() > | > +--> sysdev_unregister() > > sysdev_unregister() calls mutex_lock(). > It might sleep with irq disable, right? > I found BUG()'s messages by this.
Hmm. I think you are right. Let me take a look and see if we can move sysdev_unregister() outside the lock. Thanks for finding it. Thanks, Badari --
unsubscribe notice
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/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[PATCH 0/5] 2.6.25-rc3-mm1 hotplug memory remove updates
, Badari Pulavarty
, (Thu Mar 6, 2:54 pm)
[PATCH 5/5] [PPC] provide walk_memory_resource() for ppc
, Badari Pulavarty
, (Thu Mar 6, 2:59 pm)
[PATCH 4/5] [PPC] update lmb for hotplug memory add/remove
, Badari Pulavarty
, (Thu Mar 6, 2:58 pm)
[PATCH 3/5] [PPC] hotplug memory notifications for ppc
, Badari Pulavarty
, (Thu Mar 6, 2:57 pm)
[PATCH 2/5] [PPC] htab_remove_mapping() error handling
, Badari Pulavarty
, (Thu Mar 6, 2:56 pm)
[PATCH 1/5] generic __remove_pages() support
, Badari Pulavarty
, (Thu Mar 6, 2:55 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Yasunori Goto
, (Fri Mar 21, 11:25 am)
Re: [PATCH 1/5] generic __remove_pages() support
, Badari Pulavarty
, (Fri Mar 21, 12:55 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Dave Hansen
, (Thu Mar 6, 4:54 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Badari Pulavarty
, (Thu Mar 6, 5:42 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Yasunori Goto
, (Thu Mar 6, 9:35 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Badari Pulavarty
, (Fri Mar 7, 12:44 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Badari Pulavarty
, (Fri Mar 7, 12:36 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Randy Dunlap
, (Thu Mar 6, 3:08 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Badari Pulavarty
, (Thu Mar 6, 7:37 pm)
Re: [PATCH 1/5] generic __remove_pages() support
, Badari Pulavarty
, (Thu Mar 6, 3:29 pm)
Navigation
Create content
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Tarkan Erimer
Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3
Jesper Krogh
Re: Linux 2.6.26-rc4
Thomas Gleixner
Re: Linux 2.6.21-rc1
Hugh Dickins
Re: [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin"
git
:
linux-netdev
:
Antonio Almeida
HTB accuracy for high speed
Jarek Poplawski
[PATCH] pkt_sched: Destroy gen estimators under rtnl_lock().
Gerrit Renker
[PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side)
David Miller
[GIT]: Networking
openbsd-misc
:
Colocation donated by:
Who's online
There are currently
4 users
and
854 guests
online.
Online users
zeekec
twitterfollowb
jengalz
mercre40
Syndicate