From owner-freebsd-current@FreeBSD.ORG Tue May 29 17:22:27 2007 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EE99716A400 for ; Tue, 29 May 2007 17:22:27 +0000 (UTC) (envelope-from yar@comp.chem.msu.su) Received: from comp.chem.msu.su (comp.chem.msu.su [158.250.32.97]) by mx1.freebsd.org (Postfix) with ESMTP id 32B8313C447 for ; Tue, 29 May 2007 17:22:25 +0000 (UTC) (envelope-from yar@comp.chem.msu.su) Received: from comp.chem.msu.su (localhost [127.0.0.1]) by comp.chem.msu.su (8.13.4/8.13.4) with ESMTP id l4THMHiq013696; Tue, 29 May 2007 21:22:18 +0400 (MSD) (envelope-from yar@comp.chem.msu.su) Received: (from yar@localhost) by comp.chem.msu.su (8.13.4/8.13.4/Submit) id l4THMDPr013691; Tue, 29 May 2007 21:22:13 +0400 (MSD) (envelope-from yar) Date: Tue, 29 May 2007 21:22:13 +0400 From: Yar Tikhiy To: Scott Long Message-ID: <20070529172213.GG53113@comp.chem.msu.su> References: <20070529131758.GB53113@comp.chem.msu.su> <465C444F.2050505@samsco.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <465C444F.2050505@samsco.org> User-Agent: Mutt/1.5.9i Cc: freebsd-current@freebsd.org Subject: Re: HEADS UP: KBI breakage for Ethernet modules X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2007 17:22:28 -0000 On Tue, May 29, 2007 at 09:18:39AM -0600, Scott Long wrote: > Yar Tikhiy wrote: > >On Sun, May 27, 2007 at 03:51:29PM +0400, Yar Tikhiy wrote: > >>As discussed earlier on -net, I'd like to commit the following > >>patch. It will bring ether_ioctl() into accord with ioctl() WRT > >>the type of the command argument. In our ioctl(), command became > >>an u_long ages ago, but ether_ioctl() has never been fixed. With > >>int and u_long being of different widths on 64-bit arch'es, the > >>discrepancy can get us in trouble sooner or later. > >> > >>In fact, ioctl command coding is very unlikely to change, so it > >>will continue to fit in 32 bits. OTOH, the C compiler should be > >>uneasy about squeezing u_long into int when ether_ioctl() is called > >>from an if_ioctl handler, so this patch will be a little step on > >>the way to a warning-free kernel. > >> > >>This change will inevitably break the kernel interface to network > >>modules, so all of them will need rebuilding. > > > >I received several positive replies and no negative ones, so the > >change has just been committed. In fact, it breaks KBI on 64-bit > >platforms only. (Thanks to Ruslan Ermilov for reminding me about > >that.) Many thanks to those folks who encouraged the change. > > > >Now all Ethernet-related kernel modules need to be rebuilt on 64-bit > >platforms. The conventional "make buildkernel" procedure will take > >care of stock modules, so only 3rd-party modules need some attention. > > > > How does this affect 32-bit compatibility on amd64? It shouldn't at all. The ether_ioctl() function is to be called by Ethernet drivers only, and they get the ioctl command as u_long via their ifnet.if_ioctl handlers. I guess that 32-bit compatibility is provided by an upper layer, such as the socket layer. -- Yar