Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Oct 2009 15:58:25 +0300
From:      Alexandr Rybalko <ray@dlink.ua>
To:        Mark Tinguely <tinguely@casselton.net>, freebsd-arm@freebsd.org
Subject:   Re: [ARM+NFS] panic while copying across NFS
Message-ID:  <20091023155825.381728f4.ray@dlink.ua>
In-Reply-To: <200910071636.n97GaF11095976@casselton.net>
References:  <20091007114612.00408f53.ray@dlink.ua> <200910071636.n97GaF11095976@casselton.net>

next in thread | previous in thread | raw e-mail | index | archive | help

Hi Mark!
With your patch works fine.


# dd if=/swap.file of=/mnt/swap.file bs=1M
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 231.294150 secs (4642322 bytes/sec)


But still slow. Maybe someone know why slow? (Marvell 88F5182 rev A2)



On Wed, 7 Oct 2009 11:36:15 -0500 (CDT)
Mark Tinguely <tinguely@casselton.net> wrote:

>> 
>> (CC -arm and -current removed)
>> 
>> Have you tried to remove the dangling allocations? I can't say that this
>> will change anything, I would just feel better to eliminate them.
>> 
>> 		----
>> 
>> Revisions 181296 and  195779 added the cache fixes.
>> 
>> Below are a couple more. We should remove the dangling allocations so
>> they do not un-necessarily turn off the cache in the future.
>> 
>> 		----
>> 
>> Index: arm/arm/vm_machdep.c
>> ===================================================================
>> --- arm/arm/vm_machdep.c	(revision 196359)
>> +++ arm/arm/vm_machdep.c	(working copy)
>> @@ -172,6 +172,9 @@ sf_buf_free(struct sf_buf *sf)
>>  	 if (sf->ref_count == 0) {
>>  		 TAILQ_INSERT_TAIL(&sf_buf_freelist, sf, free_entry);
>>  		 nsfbufsused--;
>> +		 pmap_kremove(sf->kva);
>> +		 sf->m = NULL;
>> +		 LIST_REMOVE(sf, list_entry);
>>  		 if (sf_buf_alloc_want > 0)
>>  			 wakeup_one(&sf_buf_freelist);
>>  	 }
>> @@ -452,9 +455,12 @@ arm_unmap_nocache(void *addr, vm_size_t size)
>>  
>>  	size = round_page(size);
>>  	i = (raddr - arm_nocache_startaddr) / (PAGE_SIZE);
>> -	for (; size > 0; size -= PAGE_SIZE, i++)
>> +	for (; size > 0; size -= PAGE_SIZE, i++) {
>>  		arm_nocache_allocated[i / BITS_PER_INT] &= ~(1 << (i % 
>>  		    BITS_PER_INT));
>> +		pmap_kremove(raddr);
>> +		raddr += PAGE_SIZE;
>> +	}
>>  }
>>  
>>  #ifdef ARM_USE_SMALL_ALLOC


-- 
Alexandr Rybalko <ray@dlink.ua>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091023155825.381728f4.ray>