Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Jan 2012 02:30:41 -0600
From:      Alan Cox <alc@rice.edu>
To:        "Jayachandran C." <c.jayachandran@gmail.com>
Cc:        Oleksandr Tymoshenko <gonzo@freebsd.org>, "freebsd-mips@freebsd.org" <freebsd-mips@freebsd.org>
Subject:   Re: MIPS64 modules
Message-ID:  <4F0E9A31.5070401@rice.edu>
In-Reply-To: <CA%2B7sy7DLLpOJRLM646PprS_EcCm64QrEKpyrf2rut=uAJy4Ygg@mail.gmail.com>
References:  <4F0E1965.6060808@freebsd.org> <CA%2B7sy7DLLpOJRLM646PprS_EcCm64QrEKpyrf2rut=uAJy4Ygg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 01/12/2012 01:50, Jayachandran C. wrote:
> On Thu, Jan 12, 2012 at 4:51 AM, Oleksandr Tymoshenko<gonzo@freebsd.org>  wrote:
>>     Modules on MIPS use the same interface as AMD64 modules:
>> sys/kern/link_elf_obj.c. It works for MIPS32 but there is a problem
>> with MIPS64. sys/kern/link_elf_obj.c calls vm_map_find that uses
>> KERNBASE as a map base. As I told - it works for mips32 because
>> KERNBASE for mips32 is located before actual virtual memory area
>> (KERNBASE points to directly-mapped KSEG0 segment). But for MIPS64
>> it's not the case - KERNBASE points to the very end of address space
>> and vm_map_find fails.
>>
>> Using VM_MIN_KERNEL_ADDRESS fixes this problem. So the question is -
>> what should I do? Add #ifdef to link_elf_obj.c as in kmem_init in
>> vm/vm_kern.c or change KERNBASE to VM_MIN_KERNEL_ADDRESS?
> This is probably the right fix for both 32 and 64-bit mips. Using a
> KSEG0 address as argument for vm_map_find is not correct as the kernel
> map does not include that region for mips.
>
> This reminds me of another issue I had seen in kern/link_elf.c, the
> value of linker_kernel_file->address is also set to KERNBASE, but this
> really should be KERNLOADADDR (used in our conf files) for mips.

I was somewhat surprised to find that KERNBASE points to the direct 
map.  What is the virtual address range for a running kernel's code and 
data segments?  In other words, are the kernel code and data segments 
accessed through the direct map even after initialization?

Alan






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F0E9A31.5070401>