Aaro Koskinen
7fccfc00c0
[ARM] 5450/1: Flush only the needed range when unmapping a VMA
...
When unmapping N pages (e.g. shared memory) the amount of TLB flushes
done can be (N*PAGE_SIZE/ZAP_BLOCK_SIZE)*N although it should be N at
maximum. With PREEMPT kernel ZAP_BLOCK_SIZE is 8 pages, so there is a
noticeable performance penalty when unmapping a large VMA and the system
is spending its time in flush_tlb_range().
The problem is that tlb_end_vma() is always flushing the full VMA
range. The subrange that needs to be flushed can be calculated by
tlb_remove_tlb_entry(). This approach was suggested by Hugh Dickins,
and is also used by other arches.
The speed increase is roughly 3x for 8M mappings and for larger mappings
even more.
Signed-off-by: Aaro Koskinen <Aaro.Koskinen@nokia.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-04-15 10:01:02 +01:00
..
2009-03-25 10:13:57 +00:00
2009-03-12 19:25:02 +00:00
2008-08-02 21:32:35 +01:00
2009-02-01 11:01:22 +05:30
2008-08-02 21:32:35 +01:00
2009-01-06 15:59:10 -08:00
2008-08-02 21:32:35 +01:00
2008-12-04 09:21:55 +00:00
2008-09-01 12:06:27 +01:00
2008-08-02 21:32:35 +01:00
2009-01-14 19:56:50 -08:00
2008-08-02 21:32:35 +01:00
2009-03-26 23:10:11 +00:00
2008-09-25 15:35:28 +01:00
2008-08-02 21:32:35 +01:00
2008-11-27 12:38:21 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-09-01 12:06:23 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-10-23 12:53:32 +01:00
2009-03-15 21:01:21 -04:00
2009-01-02 12:34:55 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2009-03-28 20:30:18 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2009-03-15 21:01:20 -04:00
2008-08-02 21:32:35 +01:00
2008-08-07 09:55:48 +01:00
2008-08-02 21:32:35 +01:00
2008-10-20 18:27:03 +02:00
2008-09-01 12:06:26 +01:00
2008-08-02 21:32:35 +01:00
2008-08-07 09:55:48 +01:00
2008-08-02 21:32:35 +01:00
2009-03-15 21:01:21 -04:00
2008-08-07 09:39:37 +01:00
2009-02-12 10:59:44 +00:00
2008-08-02 21:32:35 +01:00
2008-11-30 11:45:54 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-11-29 19:14:31 +00:00
2008-08-02 21:32:35 +01:00
2009-01-14 19:56:50 -08:00
2008-08-02 21:32:35 +01:00
2008-08-15 08:35:42 -07:00
2008-08-02 21:32:35 +01:00
2009-03-15 21:01:21 -04:00
2008-09-01 12:06:26 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-09-06 12:10:45 +01:00
2009-03-15 21:01:21 -04:00
2008-08-02 21:32:35 +01:00
2008-11-29 18:49:55 +00:00
2009-01-08 12:04:47 +00:00
2008-08-07 09:55:48 +01:00
2009-02-19 11:27:19 +00:00
2008-08-02 21:32:35 +01:00
2008-12-14 13:22:51 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2009-03-25 13:10:01 +02:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-09-13 21:35:55 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-10-09 21:31:56 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2009-03-26 23:10:11 +00:00
2008-12-15 22:13:26 +00:00
2008-08-02 21:32:35 +01:00
2009-02-12 10:59:43 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2009-02-01 11:01:22 +05:30
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2009-04-08 20:35:57 +01:00
2008-12-01 14:54:57 +00:00
2009-02-15 22:43:33 -08:00
2008-08-02 21:32:35 +01:00
2008-10-01 17:24:04 +01:00
2008-08-02 21:32:35 +01:00
2009-04-02 19:05:11 -07:00
2009-02-12 13:21:17 +00:00
2008-08-02 21:32:35 +01:00
2008-09-04 09:46:11 +01:00
2008-11-27 12:37:59 +00:00
2008-08-02 21:32:35 +01:00
2009-02-01 11:01:23 +05:30
2009-03-26 23:10:11 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2009-02-12 13:21:17 +00:00
2008-08-02 21:32:35 +01:00
2008-08-07 09:55:48 +01:00
2009-04-15 10:01:02 +01:00
2009-03-25 13:10:01 +02:00
2008-08-02 21:32:35 +01:00
2009-02-12 13:21:15 +00:00
2008-08-02 21:32:35 +01:00
2008-11-29 18:49:55 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-08-12 19:54:07 +01:00
2009-02-19 11:26:24 +00:00
2009-02-12 10:59:43 +00:00
2008-08-02 21:32:35 +01:00
2008-08-02 21:32:35 +01:00
2008-09-06 12:10:45 +01:00
2008-08-02 21:32:35 +01:00