From owner-freebsd-current Sat Mar 1 18: 6:18 2003 Delivered-To: freebsd-current@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 931) id AF8B937B401; Sat, 1 Mar 2003 18:06:15 -0800 (PST) Date: Sat, 1 Mar 2003 20:06:15 -0600 From: Juli Mallett To: Hiten Pandya Cc: current@FreeBSD.org Subject: Re: Possible patch for limiting APs at startup Message-ID: <20030301200615.A63428@FreeBSD.org> References: <20030302015353.GA68661@unixdaemons.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <20030302015353.GA68661@unixdaemons.com>; from hiten@unixdaemons.com on Sat, Mar 01, 2003 at 08:53:53PM -0500 Organisation: The FreeBSD Project X-Alternate-Addresses: , , , , X-Towel: Yes X-Negacore: Yes X-Title: Code Maven Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG * De: Hiten Pandya [ 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 - 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