PERFORCE change 97802 for review

John Baldwin jhb at freebsd.org
Thu May 25 11:28:03 PDT 2006


On Thursday 25 May 2006 04:16, Kip Macy wrote:
> http://perforce.freebsd.org/chv.cgi?CH=97802
> 
> Change 97802 by kmacy at kmacy_storage:sun4v_work on 2006/05/25 08:15:13
> 
> 	only conditionally compile tunable stalling boot

I added it for use on my green laptop back when it had a stick of ram with an 
address that had a bit stuck at 0. :-P  Is it that expensive to lookup a 
single variable in the hints?  I do wonder if this is what makes FreeBSD seem 
to "hang" during early boot after SI_SUB_CPU.

> 
> Affected files ...
> 
> .. //depot/projects/kmacy_sun4v/src/sys/vm/vm_pageq.c#5 edit
> 
> Differences ...
> 
> ==== //depot/projects/kmacy_sun4v/src/sys/vm/vm_pageq.c#5 (text+ko) ====
> 
> @@ -52,7 +52,7 @@
>  
>  static void vm_coloring_init(void);
>  void setPQL2(int *const size, int *const ways);
> -
> +extern int smp_started;
>  struct vpgqueues vm_page_queues[PQ_MAXCOUNT];
>  struct pq_coloring page_queue_coloring;
>  
> @@ -191,10 +191,14 @@
>  vm_page_t
>  vm_pageq_add_new_page(vm_paddr_t pa)
>  {
> +	vm_page_t m;
> +
> +/* 
> + * This virtually unused tunable increases the boot time on sun4v by > 10x
> + */
> +#ifdef ENABLE_PADDR_BLACKLIST
>  	vm_paddr_t bad;
> -	vm_page_t m;
>  	char *cp, *list, *pos;
> -
>  	/*
>  	 * See if a physical address in this page has been listed
>  	 * in the blacklist tunable.  Entries in the tunable are
> @@ -222,16 +226,20 @@
>  		}
>  		freeenv(list);
>  	}
> -
> +#endif
>  	atomic_add_int(&cnt.v_page_count, 1);
>  	m = PHYS_TO_VM_PAGE(pa);
>  	m->phys_addr = pa;
>  	m->flags = 0;
>  	m->pc = (pa >> PAGE_SHIFT) & PQ_COLORMASK;
>  	pmap_page_init(m);
> -	mtx_lock_spin(&vm_page_queue_free_mtx);
> -	vm_pageq_enqueue(m->pc + PQ_FREE, m);
> -	mtx_unlock_spin(&vm_page_queue_free_mtx);
> +	if (!smp_started) {
> +		vm_pageq_enqueue(m->pc + PQ_FREE, m);
> +	} else {
> +		mtx_lock_spin(&vm_page_queue_free_mtx);
> +		vm_pageq_enqueue(m->pc + PQ_FREE, m);
> +		mtx_unlock_spin(&vm_page_queue_free_mtx);
> +	}
>  	return (m);

This seems unrelated?

-- 
John Baldwin


More information about the p4-projects mailing list