Files
ack-tegra/include/linux
Yinghai Lu 29f6738609 memblock: free allocated memblock_reserved_regions later
memblock_free_reserved_regions() calls memblock_free(), but
memblock_free() would double reserved.regions too, so we could free the
old range for reserved.regions.

Also tj said there is another bug which could be related to this.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

in that case, when DEBUG_PAGEALLOC, will get panic:

     memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
  BUG: unable to handle kernel paging request at ffff88102febd948
  IP: [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
  PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160
  Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
  CPU 0
  Pid: 0, comm: swapper Not tainted 3.5.0-rc2-next-20120614-sasha #447
  RIP: 0010:[<ffffffff836a5774>]  [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155

See the discussion at https://lkml.org/lkml/2012/6/13/469

So try to allocate with PAGE_SIZE alignment and free it later.

Reported-by: Sasha Levin <levinsasha928@gmail.com>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-11 16:04:50 -07:00
..
2012-05-15 17:30:30 -04:00
2012-05-25 12:46:23 +05:30
2012-05-10 12:00:56 +02:00
2012-05-17 15:36:35 -04:00
2012-05-29 23:28:33 -04:00
2012-05-22 11:32:31 +02:00
2012-05-12 14:28:14 +02:00
2012-06-11 23:57:22 -07:00
2012-06-30 15:56:40 -07:00
2012-05-31 17:49:30 -07:00
2012-05-31 17:49:32 -07:00
2012-05-31 17:49:26 -07:00
2012-05-31 17:49:30 -07:00
2012-05-11 10:56:56 +01:00
2012-07-02 21:10:30 -03:00
2012-05-29 23:28:41 -04:00
2012-05-22 15:20:28 -04:00
2012-05-29 22:33:55 -04:00
2012-05-26 14:17:30 -04:00
2012-06-05 18:38:47 -04:00
2012-05-16 15:17:08 -04:00
2012-05-21 14:31:48 +01:00
2012-06-20 14:39:36 -07:00
2012-05-14 14:15:32 -07:00
2012-06-06 17:08:00 +02:00
2012-05-12 15:53:42 -04:00
2012-06-01 12:58:52 -04:00
2012-06-15 15:30:15 -07:00
2012-05-31 17:49:26 -07:00
2012-06-13 21:16:42 +02:00
2012-05-14 18:53:19 -04:00
2012-05-21 16:16:58 -07:00
2012-05-22 12:16:16 +09:30