From owner-freebsd-current@FreeBSD.ORG Fri Sep 21 16:56:59 2012 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F243E106566C; Fri, 21 Sep 2012 16:56:58 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) by mx1.freebsd.org (Postfix) with ESMTP id A7E8B8FC0A; Fri, 21 Sep 2012 16:56:58 +0000 (UTC) Received: from JRE-MBP-2.local (c-50-143-149-8.hsd1.ca.comcast.net [50.143.149.8]) (authenticated bits=0) by vps1.elischer.org (8.14.5/8.14.5) with ESMTP id q8LGuuoU008632 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Fri, 21 Sep 2012 09:56:57 -0700 (PDT) (envelope-from julian@freebsd.org) Message-ID: <505C9C58.3060006@freebsd.org> Date: Fri, 21 Sep 2012 09:56:56 -0700 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 MIME-Version: 1.0 To: Mikolaj Golub References: <5F3C03B6-01D0-42DE-BE9E-323DBDC90C8E@neville-neil.com> <20120921092235.GC66984@gmail.com> In-Reply-To: <20120921092235.GC66984@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Anuranjan Shukla , FreeBSD Current Subject: Proposal for change to kernel linker for fixing a VNET and DPCPU problem. 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: Fri, 21 Sep 2012 16:56:59 -0000 On 9/21/12 2:22 AM, Mikolaj Golub wrote: > On Fri, Sep 07, 2012 at 01:28:16AM -0700, Anuranjan Shukla wrote: >> Hi George, >> Thanks for taking a look. Some answers/comments below. >> >>>> Building FreeBSD without the network stack (network stack as a module) >>>> ---------------------------------------------------------------------- >>>> >>> This would be interesting for many reasons, and I think it would be a good >>> contribution. Does the work you've done in this area handle the VNET >>> stuff that is in the stack as well? That is, how well does the network >>> stack >>> as a module play with the vnet architecture? >> I'll follow up on this one separately. > FYI, there is at least this issue with virtualized global variables in modules: > > http://lists.freebsd.org/pipermail/freebsd-virtualization/2011-July/000737.html > > On archs that use link_elf.c (i.e. all except amd64, which uses > link_elf_obj.c) virtualized global variables in modules can not be > accessed from another modules, because link_elf on a module load does > relocation only for VNET variables defined in this module. > > As it was pointed by Marko Zec, the same issue is with DPCPU. > > The latest patch I have (both for VNET and DPCPU): > > http://people.freebsd.org/~trociny/link_elf.c.pcpu_vnet.patch > > The fix is to make the linker on a module load recognize "external" > VNET/DPCPU variables defined in the previously loaded modules and > relocate them accordingly. For this set_pcpu_list and set_vnet_list > are used, where the addresses of modules 'set_pcpu' and 'set_vnet' > linker sets are stored in. it makes sense to me, but I really am not a linker person.. I think it woul be good to get Doug Rabson to weigh in on it, and maybe john Baldwin.. moving to -current as it's not a "net" issue really..