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>
index | next in thread | previous in thread | raw e-mail
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? Alanhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F0E9A31.5070401>
