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 <[EMAIL PROTECTED]> 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<-------------------
[EMAIL PROTECTED] 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





_______________________________________________
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel

Reply via email to