From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DxX93-00032k-Pu for qemu-devel@nongnu.org; Tue, 26 Jul 2005 17:39:26 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DxX92-00031o-8X for qemu-devel@nongnu.org; Tue, 26 Jul 2005 17:39:24 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DxX92-00031K-2q for qemu-devel@nongnu.org; Tue, 26 Jul 2005 17:39:24 -0400 Received: from [84.96.92.55] (helo=smtP.neuf.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DxXEw-0004Kr-GF for qemu-devel@nongnu.org; Tue, 26 Jul 2005 17:45:30 -0400 Received: from [84.99.204.139] by sp604004mt.gpm.neuf.ld (Sun Java System Messaging Server 6.2-2.05 (built Apr 28 2005)) with ESMTP id <0IK900IF47X58TQ0@sp604004mt.gpm.neuf.ld> for qemu-devel@nongnu.org; Tue, 26 Jul 2005 23:34:18 +0200 (CEST) Date: Tue, 26 Jul 2005 23:34:48 +0200 From: Fabrice Bellard Subject: Re: [Qemu-devel] Unknown symbol __PAGE_KERNEL_EXEC In-reply-to: Message-id: <42E6AC78.3070403@bellard.org> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii; format=flowed Content-transfer-encoding: 7BIT References: <1122352134.13708.4.camel@unixadmindazfc2.chh.co.nz> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Hi, I propose this patch: --- kqemu-linux.c 25 Apr 2005 22:14:39 -0000 1.4 +++ kqemu-linux.c 25 Jul 2005 22:17:34 -0000 @@ -28,7 +28,13 @@ #define pfn_to_page(pfn) (mem_map + (pfn)) #endif -#ifndef PAGE_KERNEL_EXEC +#ifdef PAGE_KERNEL_EXEC +#if defined(__i386__) +/* problem : i386 kernels usually don't export __PAGE_KERNEL_EXEC */ +#undef PAGE_KERNEL_EXEC +#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL & ~_PAGE_NX) +#endif +#else #define PAGE_KERNEL_EXEC PAGE_KERNEL #endif Is it working with all kernels and x86/x86_64 ? Fabrice. Pascal Terjan wrote: > On 7/26/05, Darryl Dixon wrote: > >>Hi All, Fabrice, >> >> Compiling the new kqemu-0.7.1 on Fedora Core 4 with kernel >>2.6.12-1.1398_FC4 gives this error: >> >>-------------8<------------------- >>[dixond@unixadmindazfc2 kqemu]$ make >>make -C /lib/modules/2.6.12-1.1398_FC4/build M=`pwd` modules >>make[1]: Entering directory `/usr/src/kernels/2.6.12-1.1398_FC4-i686' >> CC [M] /opt/src/qemu-0.7.1/kqemu/kqemu-linux.o >>cp /opt/src/qemu-0.7.1/kqemu/kqemu-mod-i386.o /opt/src/qemu-0.7.1/kqemu/kqemu-mod.o >> LD [M] /opt/src/qemu-0.7.1/kqemu/kqemu.o >> Building modules, stage 2. >> MODPOST >>Warning: could not find /opt/src/qemu-0.7.1/kqemu/.kqemu-mod.o.cmd >>for /opt/src/qemu-0.7.1/kqemu/kqemu-mod.o >>*** Warning: "__PAGE_KERNEL_EXEC" [/opt/src/qemu-0.7.1/kqemu/kqemu.ko] >>undefined! >> CC /opt/src/qemu-0.7.1/kqemu/kqemu.mod.o >> LD [M] /opt/src/qemu-0.7.1/kqemu/kqemu.ko >>make[1]: Leaving directory `/usr/src/kernels/2.6.12-1.1398_FC4-i686' > > > My understanding of the problem : > on i386, in pgtable.h we have > extern unsigned long long __PAGE_KERNEL, __PAGE_KERNEL_EXEC; > #define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC) > > an there is EXPORT_SYMBOL(__PAGE_KERNEL) but not for __PAGE_KERNEL_EXEC > > on x86_64 : > #define __PAGE_KERNEL_EXEC \ > (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED) > #define MAKE_GLOBAL(x) __pgprot((x) | _PAGE_GLOBAL) > #define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC) > > So, on i386 __PAGE_KERNEL_EXEC is an extern variable wich is not > exported and not a macro. > > I wrote a patch on > http://www.zarb.org/cgi-bin/viewcvs.cgi/plf/SPECS/non-free/dkms-kqemu/kqemu-0.7.1-PAGE_KERNEL_EXEC.patch?rev=1.1&view=markup > but I don't know much kernel stuff so I have no idea how much it is > broken :-) > > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > http://lists.nongnu.org/mailman/listinfo/qemu-devel > >