Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Nov 2013 16:00:01 GMT
From:      dfilter@FreeBSD.ORG (dfilter service)
To:        freebsd-arm@FreeBSD.org
Subject:   Re: arm/183740: commit references a PR
Message-ID:  <201311201600.rAKG01Hn077279@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR arm/183740; it has been noted by GNATS.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: arm/183740: commit references a PR
Date: Wed, 20 Nov 2013 15:53:57 +0000 (UTC)

 Author: ian
 Date: Wed Nov 20 15:53:50 2013
 New Revision: 258392
 URL: http://svnweb.freebsd.org/changeset/base/258392
 
 Log:
   Call cpu_setup() immediately after the page tables are installed.  This
   enables data cache and other chip-specific features.  It was previously
   done via an early SYSINIT, but it was being done after pmap and vm setup,
   and those setups need to use mutexes.  On some modern ARM platforms,
   the ldrex/strex instructions that implement mutexes require the data cache
   to be enabled.
   
   A nice side effect of enabling caching earlier is that it eliminates the
   multi-second pause that used to happen early in boot while physical memory
   and pmap and vm were being set up.  On boards with 1 GB or more of ram
   this pause was very noticible, sometimes 5-6 seconds.
   
   PR:		arm/183740
 
 Modified:
   head/sys/arm/arm/machdep.c
 
 Modified: head/sys/arm/arm/machdep.c
 ==============================================================================
 --- head/sys/arm/arm/machdep.c	Wed Nov 20 13:22:22 2013	(r258391)
 +++ head/sys/arm/arm/machdep.c	Wed Nov 20 15:53:50 2013	(r258392)
 @@ -361,7 +361,6 @@ cpu_startup(void *dummy)
  #endif
  #endif
  
 -	cpu_setup("");
  	identify_arm_cpu();
  
  	printf("real memory  = %ju (%ju MB)\n", (uintmax_t)ptoa(physmem),
 @@ -1431,6 +1430,12 @@ initarm(struct arm_boot_params *abp)
  	cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL * 2));
  
  	/*
 +	 * Now that proper page tables are installed, call cpu_setup() to enable
 +	 * instruction and data caches and other chip-specific features.
 +	 */
 +	cpu_setup("");
 +
 +	/*
  	 * Only after the SOC registers block is mapped we can perform device
  	 * tree fixups, as they may attempt to read parameters from hardware.
  	 */
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 



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