Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Mar 2003 20:06:15 -0600
From:      Juli Mallett <jmallett@FreeBSD.org>
To:        Hiten Pandya <hiten@unixdaemons.com>
Cc:        current@FreeBSD.org
Subject:   Re: Possible patch for limiting APs at startup
Message-ID:  <20030301200615.A63428@FreeBSD.org>
In-Reply-To: <20030302015353.GA68661@unixdaemons.com>; from hiten@unixdaemons.com on Sat, Mar 01, 2003 at 08:53:53PM -0500
References:  <20030302015353.GA68661@unixdaemons.com>

next in thread | previous in thread | raw e-mail | index | archive | help
* De: Hiten Pandya <hiten@unixdaemons.com> [ Data: 2003-03-01 ]
	[ Subjecte: Possible patch for limiting APs at startup ]
> Hello.
> 
> Just as the topic says, do you think this patch is good enough, or gets
> even close to it?  I have tested the patch, and it seems to do it's job
> in the right way.  Some might call it hackery, but it's better than
> nothing I would suppose.

I think your use of "cpus" to refer to APs only is silly, and also that
overriding mp_naps instead of using a real cpus value and using it as
a bounds check akin to MAXCPU, is a bit of the wrong direction.  As you
know, the following is my patch, and it does not work, but I think,
personally, the behaviour is saner, in theory at least :)

%%%
Index: mp_machdep.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/i386/mp_machdep.c,v
retrieving revision 1.203
diff -d -c -r1.203 mp_machdep.c
*** mp_machdep.c	24 Feb 2003 14:36:03 -0000	1.203
--- mp_machdep.c	2 Mar 2003 00:22:58 -0000
***************
*** 249,254 ****
--- 249,259 ----
  /** XXX FIXME: what system files declare these??? */
  extern struct region_descriptor r_gdt, r_idt;
  
+ int	mp_maxcpus = 0;		/* max CPUs; not in BSS so it can be hacked. */
+ TUNABLE_INT("machdep.smp_max_cpus", &mp_maxcpus);
+ SYSCTL_INT(_machdep, OID_AUTO, smp_max_cpus, CTLFLAG_RD,
+ 	   &mp_maxcpus, 1, "Maximum number of CPUs to use.");
+ 
  int	bsp_apic_ready = 0;	/* flags useability of BSP apic */
  int	mp_naps;		/* # of Applications processors */
  int	mp_nbusses;		/* # of busses */
***************
*** 864,874 ****
  		}
  	}
  
! 	/* qualify the numbers */
! 	if (mp_naps > MAXCPU) {
  		printf("Warning: only using %d of %d available CPUs!\n",
! 			MAXCPU, mp_naps);
! 		mp_naps = MAXCPU;
  	}
  
  	/* See if we need to fixup HT logical CPUs. */
--- 869,881 ----
  		}
  	}
  
! 	/* use the smallest number of requested CPUs or CPUs we support. */
! 	if ((mp_maxcpus > 0 && mp_naps > mp_maxcpus) || mp_naps > MAXCPU) {
! 		if (mp_maxcpus <= 0)
! 			mp_maxcpus = MAXCPU;
  		printf("Warning: only using %d of %d available CPUs!\n",
! 			mp_maxcpus, mp_naps);
! 		mp_naps = mp_maxcpus;
  	}
  
  	/* See if we need to fixup HT logical CPUs. */
%%%

Thanx,
juli.
-- 
Juli Mallett <jmallett@FreeBSD.org> - AIM: BSDFlata -- IRC: juli on EFnet
OpenDarwin, Mono, FreeBSD Developer - ircd-hybrid Developer, EFnet addict
FreeBSD on MIPS-Anything on FreeBSD - /* XXX Nothing to see here, now. */

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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