[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen/arm: p2m: Don't create new table when the mapping is removed
On 12/19/2013 09:38 AM, Ian Campbell wrote: > On Wed, 2013-12-18 at 17:31 +0000, Julien Grall wrote: >> When Xen is removing/relinquishing mapping, it will create second/third >> tables >> if they don't exist. >> >> Non-existent table means the address range was never mapped, so Xen can >> safely >> skip them. >> >> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx> >> >> --- >> Release: This is an improvement for Xen 4.4. It will save time during >> relinquish phase and avoid dummy allocation. >> The downside is the patch is modifying p2m loop which is used everywhere. >> --- >> xen/arch/arm/p2m.c | 22 ++++++++++++++++++++-- >> 1 file changed, 20 insertions(+), 2 deletions(-) >> >> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c >> index d24a6fc..9ef8819 100644 >> --- a/xen/arch/arm/p2m.c >> +++ b/xen/arch/arm/p2m.c >> @@ -246,10 +246,12 @@ static int create_p2m_entries(struct domain *d, >> cur_first_offset = ~0, >> cur_second_offset = ~0; >> unsigned long count = 0; >> + bool_t populate = (op == INSERT || op == ALLOCATE); >> >> spin_lock(&p2m->lock); >> >> - for(addr = start_gpaddr; addr < end_gpaddr; addr += PAGE_SIZE) >> + addr = start_gpaddr; >> + while ( addr < end_gpaddr ) >> { >> if ( cur_first_page != p2m_first_level_index(addr) ) >> { >> @@ -265,8 +267,15 @@ static int create_p2m_entries(struct domain *d, >> >> if ( !first[first_table_offset(addr)].p2m.valid ) >> { >> + if ( !populate ) >> + { >> + addr += FIRST_SIZE; > > I think this subtly does the wrong thing if addr is not FIRST_SIZE > aligned, which it might be on the first iteration. That will skip the > start of the next 1st level block. > > I think addr needs to be rounded up to the next first boundary. Right, I will send a new version of this patch. -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |