Thread (6 messages) 6 messages, 2 authors, 2012-11-15

[RFC PATCH 0/3] introduce static_vm for ARM-specific static mapped area

From: JoonSoo Kim <hidden>
Date: 2012-11-15 13:22:08
Also in: linux-mm, lkml

Hello, Russell.
Thanks for review.

2012/11/15 Russell King - ARM Linux [off-list ref]:
On Thu, Nov 15, 2012 at 01:55:51AM +0900, Joonsoo Kim wrote:
quoted
In current implementation, we used ARM-specific flag, that is,
VM_ARM_STATIC_MAPPING, for distinguishing ARM specific static mapped area.
The purpose of static mapped area is to re-use static mapped area when
entire physical address range of the ioremap request can be covered
by this area.

This implementation causes needless overhead for some cases.
In what cases?
For example, assume that there is only one static mapped area and
vmlist has 300 areas.
Every time we call ioremap, we check 300 areas for deciding whether it
is matched or not.
Moreover, even if there is no static mapped area and vmlist has 300 areas,
every time we call ioremap, we check 300 areas in now.
quoted
We unnecessarily iterate vmlist for finding matched area even if there
is no static mapped area. And if there are some static mapped areas,
iterating whole vmlist is not preferable.
Why not?  Please put some explanation into your message rather than
just statements making unexplained assertions.
If we construct a extra list for static mapped area, we can eliminate
above mentioned overhead.
With a extra list, if there is one static mapped area,
we just check only one area and proceed next operation quickly.
quoted
Another reason for doing this work is for removing architecture dependency
on vmalloc layer. I think that vmlist and vmlist_lock is internal data
structure for vmalloc layer. Some codes for debugging and stat inevitably
use vmlist and vmlist_lock. But it is preferable that they are used outside
of vmalloc.c as least as possible.
The vmalloc layer is also made available for ioremap use, and it is
intended that architectures hook into this for ioremap support.
Yes.
But, I think that it is preferable to use well-defined vmalloc API rather than
directly manipulating low-level data structure. IMHO, if there is no suitable
vmalloc API, making new one is better than directly manipulating
low-level data structure. It makes vmalloc code more maintainable.

I'm not expert, so please let me know what I missed.

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help