From owner-cvs-all@FreeBSD.ORG Sun Mar 21 16:28:38 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E6C9116A4CE; Sun, 21 Mar 2004 16:28:38 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E26E743D1D; Sun, 21 Mar 2004 16:28:38 -0800 (PST) (envelope-from wpaul@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i2M0ScGe047764; Sun, 21 Mar 2004 16:28:38 -0800 (PST) (envelope-from wpaul@repoman.freebsd.org) Received: (from wpaul@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i2M0ScPc047763; Sun, 21 Mar 2004 16:28:38 -0800 (PST) (envelope-from wpaul) Message-Id: <200403220028.i2M0ScPc047763@repoman.freebsd.org> From: Bill Paul Date: Sun, 21 Mar 2004 16:28:38 -0800 (PST) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/i386/i386 vm_machdep.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Mar 2004 00:28:39 -0000 wpaul 2004/03/21 16:28:38 PST FreeBSD src repository Modified files: sys/i386/i386 vm_machdep.c Log: The kthread_create() API is supposed to allow you to create threads with more than the normal amount of stack pages, however the stack pointer always wound up being initialized using KSTACK_PAGES. It should be using td->td_kstack_pages instead. This means that although the vm subsystem would give you all the stack pages you asked for, %esp would always be initialized as if you had just 2 pages, and the rest would go to waste. I wanted to use the 'give me more stack pages' feature of kthread_create() because the Intel 2200BG NDIS driver does an alloca() of about 5000 bytes, which wrecks the stack with the default 2 page size, and I was baffled that no matter how much code I shoved into thread contexts with allegedly larger stacks, the thing would still crash unless I changed KSTACK_PAGES. Note: this bug is present in _ALL_ arches at this point. Peter has promised to merge this fix into all of them. Revision Changes Path 1.233 +4 -3 src/sys/i386/i386/vm_machdep.c