Mark Nelson
91eea67c6d
powerpc/mm: Track backing pages allocated by vmemmap_populate()
...
We need to keep track of the backing pages that get allocated by
vmemmap_populate() so that when we use kdump, the dump-capture kernel knows
where these pages are.
We use a simple linked list of structures that contain the physical address
of the backing page and corresponding virtual address to track the backing
pages.
To save space, we just use a pointer to the next struct vmemmap_backing. We
can also do this because we never remove nodes. We call the pointer "list"
to be compatible with changes made to the crash utility.
vmemmap_populate() is called either at boot-time or on a memory hotplug
operation. We don't have to worry about the boot-time calls because they
will be inherently single-threaded, and for a memory hotplug operation
vmemmap_populate() is called through:
sparse_add_one_section()
|
V
kmalloc_section_memmap()
|
V
sparse_mem_map_populate()
|
V
vmemmap_populate()
and in sparse_add_one_section() we're protected by pgdat_resize_lock().
So, we don't need a spinlock to protect the vmemmap_list.
We allocate space for the vmemmap_backing structs by allocating whole pages
in vmemmap_list_alloc() and then handing out chunks of this to
vmemmap_list_populate().
This means that we waste at most just under one page, but this keeps the code
is simple.
Signed-off-by: Mark Nelson <markn@au1.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2010-05-06 16:49:27 +10:00
..
2009-05-15 16:43:41 +10:00
2008-08-04 12:02:00 +10:00
2009-06-16 19:47:27 -07:00
2008-08-04 12:02:00 +10:00
2009-08-03 09:05:00 +01:00
2010-03-18 06:48:29 +01:00
2009-12-12 13:08:14 +01:00
2009-12-11 21:24:44 -07:00
2010-02-17 14:03:15 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2010-02-17 14:03:15 +11:00
2009-06-11 21:02:14 +02:00
2009-02-23 10:48:57 +11:00
2008-08-04 12:02:00 +10:00
2009-12-18 14:54:27 +11:00
2008-08-04 12:02:00 +10:00
2009-01-14 19:56:50 -08:00
2010-05-05 09:11:10 -04:00
2009-11-26 09:16:19 +01:00
2009-01-08 15:51:55 +01:00
2009-08-20 10:29:26 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-02-23 10:48:56 +11:00
2010-03-12 15:52:32 -08:00
2009-11-11 21:43:17 -06:00
2009-11-11 21:43:19 -06:00
2009-11-11 21:43:20 -06:00
2010-05-05 09:27:22 -04:00
2009-08-20 10:12:37 +10:00
2010-02-03 17:39:48 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-02-23 15:53:03 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-12-21 14:21:15 +11:00
2009-12-11 21:24:44 -07:00
2008-12-21 14:21:16 +11:00
2009-07-08 13:50:24 +10:00
2009-09-24 15:31:43 +10:00
2008-12-31 16:52:21 +02:00
2008-08-04 12:02:00 +10:00
2010-03-12 15:52:42 -08:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-11-06 09:22:37 +11:00
2010-02-01 14:00:30 +11:00
2008-08-04 12:02:00 +10:00
2009-10-28 16:13:03 +11:00
2008-08-04 12:02:00 +10:00
2009-08-28 14:24:13 +10:00
2009-11-05 16:49:57 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2010-02-26 18:29:17 +11:00
2009-10-14 16:58:37 +11:00
2009-12-12 22:24:30 -07:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-06-15 21:45:32 -05:00
2009-09-08 17:53:04 -07:00
2009-02-23 10:48:54 +11:00
2010-02-17 14:03:15 +11:00
2009-12-10 20:08:15 -06:00
2008-08-04 12:02:00 +10:00
2010-02-17 14:02:49 +11:00
2008-08-04 12:02:00 +10:00
2009-06-26 14:37:25 +10:00
2009-10-30 17:21:23 +11:00
2010-04-07 18:00:29 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-10-30 17:21:27 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 13:18:17 +10:00
2008-08-04 12:02:00 +10:00
2008-08-18 21:40:03 +02:00
2008-08-04 12:02:00 +10:00
2009-11-11 21:43:18 -06:00
2009-11-11 21:43:18 -06:00
2008-08-04 12:02:00 +10:00
2009-03-11 17:10:14 +11:00
2008-08-04 12:02:00 +10:00
2009-01-08 16:25:12 +11:00
2009-09-24 15:31:43 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 13:18:17 +10:00
2008-08-04 12:02:00 +10:00
2009-12-09 17:10:37 +11:00
2008-08-18 14:22:34 +10:00
2009-01-14 19:56:50 -08:00
2008-08-04 12:02:00 +10:00
2008-12-23 15:13:29 +11:00
2009-01-08 16:25:17 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-12-01 09:33:45 +11:00
2008-08-04 12:02:00 +10:00
2009-03-24 11:02:55 +02:00
2010-03-01 12:35:48 -03:00
2010-03-01 12:35:49 -03:00
2010-03-01 12:35:55 -03:00
2010-03-01 12:36:06 -03:00
2010-03-01 12:36:10 -03:00
2008-08-04 12:02:00 +10:00
2010-03-01 12:35:55 -03:00
2009-12-08 16:02:50 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2010-03-03 07:34:18 -08:00
2009-11-24 14:33:03 +11:00
2008-08-04 12:02:00 +10:00
2009-12-09 17:09:33 +11:00
2009-12-09 17:09:14 +11:00
2008-08-04 12:02:00 +10:00
2009-12-09 17:09:14 +11:00
2009-09-22 07:17:41 -07:00
2009-11-05 16:50:25 +11:00
2009-08-20 10:25:09 +10:00
2009-08-20 10:25:09 +10:00
2010-05-05 09:11:10 -04:00
2009-08-24 20:48:05 -05:00
2009-08-28 14:24:12 +10:00
2009-12-08 15:59:33 +11:00
2010-05-05 09:11:10 -04:00
2009-03-19 12:51:25 +01:00
2009-12-15 16:28:34 +10:30
2009-06-17 00:30:22 -06:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2010-02-16 22:30:04 -07:00
2009-11-13 11:09:31 -07:00
2010-02-16 10:36:26 -07:00
2008-08-04 12:02:00 +10:00
2010-02-19 14:52:32 +11:00
2008-08-04 12:02:00 +10:00
2008-08-20 16:34:57 +10:00
2010-02-17 14:03:15 +11:00
2009-10-30 17:21:28 +11:00
2008-08-20 16:34:59 +10:00
2009-05-02 15:36:10 -07:00
2008-08-04 12:02:00 +10:00
2009-01-08 15:51:55 +01:00
2010-03-09 11:52:52 +11:00
2009-06-11 21:02:17 +02:00
2009-10-30 17:20:58 +11:00
2009-10-30 17:20:58 +11:00
2010-02-03 17:39:48 +11:00
2010-05-06 16:49:26 +10:00
2008-08-04 12:02:00 +10:00
2009-08-28 14:24:15 +10:00
2010-03-12 15:52:42 -08:00
2008-08-04 12:02:00 +10:00
2010-03-05 03:04:08 -06:00
2010-03-05 03:04:08 -06:00
2010-03-05 03:04:08 -06:00
2009-10-30 17:20:57 +11:00
2010-05-06 16:49:27 +10:00
2009-10-30 17:20:57 +11:00
2010-04-07 18:00:30 +10:00
2009-03-20 15:56:57 +11:00
2009-08-20 10:12:35 +10:00
2009-10-30 17:20:58 +11:00
2010-02-20 16:41:46 +00:00
2008-08-04 12:02:00 +10:00
2010-02-19 14:52:32 +11:00
2009-12-06 17:06:19 +01:00
2008-08-04 12:02:00 +10:00
2009-09-24 15:31:39 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-08-28 14:24:12 +10:00
2010-03-16 23:24:06 -05:00
2010-02-17 14:02:47 +11:00
2010-02-17 14:03:17 +11:00
2010-02-14 13:02:45 -07:00
2009-06-15 16:47:26 +10:00
2009-03-11 17:10:17 +11:00
2009-04-07 15:18:58 +10:00
2009-06-15 13:26:21 +10:00
2008-08-04 12:02:00 +10:00
2009-12-09 17:09:32 +11:00
2009-12-09 17:10:37 +11:00
2009-09-24 15:31:49 +10:00
2009-08-27 13:12:51 +10:00
2009-09-02 16:20:41 +10:00
2009-09-24 15:31:49 +10:00
2009-09-02 16:20:41 +10:00
2009-08-27 13:12:51 +10:00
2009-03-24 13:47:33 +11:00
2009-12-08 15:59:33 +11:00
2009-03-24 13:47:34 +11:00
2010-04-07 18:11:43 +10:00
2008-12-30 11:14:06 -06:00
2009-11-11 21:43:20 -06:00
2008-08-04 12:02:00 +10:00
2010-05-05 09:11:10 -04:00
2010-03-05 03:04:08 -06:00
2010-05-05 11:11:56 -04:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-12-14 23:55:32 +01:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-05-21 15:44:25 +10:00
2009-03-02 15:41:30 -08:00
2008-10-15 11:31:54 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-08-28 14:24:16 +10:00
2009-04-02 16:17:36 -05:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-09-23 13:26:52 +02:00
2009-06-11 21:01:52 +02:00
2009-10-29 22:34:14 +09:00
2008-08-04 12:02:00 +10:00
2009-10-12 13:26:31 -07:00
2008-08-04 12:02:00 +10:00
2010-04-13 13:54:39 +10:00
2009-12-14 23:55:32 +01:00
2010-02-17 14:03:15 +11:00
2008-08-04 12:02:00 +10:00
2009-02-23 10:48:57 +11:00
2008-08-04 12:02:00 +10:00
2009-01-08 16:25:12 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-09-06 19:30:15 +01:00
2008-08-04 12:02:00 +10:00
2009-04-01 08:59:16 -07:00
2009-02-23 10:48:57 +11:00
2009-08-28 14:24:10 +10:00
2010-02-17 14:03:16 +11:00
2010-03-19 16:38:16 +11:00
2010-03-12 15:52:32 -08:00
2010-03-12 15:52:32 -08:00
2010-02-17 14:03:17 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-06-11 21:01:52 +02:00
2010-02-01 14:00:30 +11:00
2008-11-06 09:49:28 +11:00
2008-08-04 12:02:00 +10:00
2009-08-20 10:24:56 +10:00
2009-08-20 10:12:41 +10:00
2010-04-07 18:00:47 +10:00
2009-10-28 16:13:04 +11:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-06-11 21:02:14 +02:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-12-12 22:24:31 -07:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2010-03-12 15:52:32 -08:00
2008-08-04 12:02:00 +10:00
2008-11-06 09:49:22 +11:00
2009-08-20 10:12:24 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00
2009-06-06 10:14:22 -06:00
2008-08-04 12:02:00 +10:00
2008-08-04 12:02:00 +10:00