Proposal for change to kernel linker for fixing a VNET and DPCPU problem.

From: Julian Elischer <julian_at_freebsd.org>
Date: Fri, 21 Sep 2012 09:56:56 -0700
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..
Received on Fri Sep 21 2012 - 14:56:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:30 UTC