experimental qemu-devel port update, please test!
Juergen Lock
nox at jelal.kn-bremen.de
Fri Jul 13 20:49:08 UTC 2007
On Thu, Jul 12, 2007 at 01:07:50PM -0500, Craig Boston wrote:
> On Thu, Jul 12, 2007 at 12:52:52PM -0500, Craig Boston wrote:
> > For some reason when the ioctl is issued, curproc points to a totally
> > bogus proc structure. curthread seems to be sane as far as I can tell,
> > but the process it claims to belong to is full of junk.
>
> Aha! The problem isn't that curproc is garbage, but rather that it's
> being interpreted wrong.
>
> struct proc has some extra fields when KSE is #defined. KSE recently
> became a kernel option and was put in the DEFAULTS file, so everyone's
> kernel has it defined. But kqemu is being compiled without it.
>
> I compiled with -DKSE and now kqemu works!
>
Aaah-haah! Thanks for catching this one! :)
> This seems like it would be a common problem for modules compiled
> outside the kernel tree. Is there an established way to get the
> standard configuration options?
>
Good q...
> I'm thinking also about other options like SMP, that for instance
> changes the way mutexes work.
>
> Craig
Okay what do you guys think about the following patch for now:
(the SMP thing might actually be the cause for ports/113430, can
someone verify?)
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/emulators/kqemu-kmod/Makefile,v
retrieving revision 1.17
diff -u -r1.17 Makefile
--- Makefile 29 Jun 2007 15:57:16 -0000 1.17
+++ Makefile 13 Jul 2007 20:36:01 -0000
@@ -7,6 +7,7 @@
PORTNAME= kqemu
PORTVERSION= 1.3.0.p11
+PORTREVISION= 1
CATEGORIES= emulators kld
MASTER_SITES= http://qemu.org/ \
http://fabrice.bellard.free.fr/qemu/ \
@@ -54,6 +55,23 @@
IGNORE= kqemu requires kernel source to be installed
.endif
+.if ${OSVERSION} >= 700024 && !defined(NOKSE)
+# XXX this is wrong if you have `nooption KSE' in your kernel config,
+# please define NOKSE in that case
+CFLAGS+= -DKSE
+.endif
+
+# XXX the following is wrong if you run a custom SMP kernel on a
+# singleprocessor machine (but it probably doesn't really matter)
+KERNCONF!= ${UNAME} -v | ${SED} 's-.*/--'
+NCPU!= ${SYSCTL} -n hw.ncpu 2>/dev/null
+# we know 7.x GENERIC has SMP
+.if ${KERNCONF} == "GENERIC" && ${OSVERSION} >= 700000
+CFLAGS+= -DSMP
+.elif ${NCPU} > 1
+CFLAGS+= -DSMP
+.endif
+
do-build:
@(cd ${BUILD_WRKSRC}/common; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} Makefile ${MAKE_ARGS} ${ALL_TARGET})
@(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${ALL_TARGET})
Index: pkg-descr
===================================================================
RCS file: /home/pcvs/ports/emulators/kqemu-kmod/pkg-descr,v
retrieving revision 1.2
diff -u -r1.2 pkg-descr
--- pkg-descr 28 Aug 2006 22:52:42 -0000 1.2
+++ pkg-descr 2 Jul 2007 18:57:34 -0000
@@ -1,3 +1,3 @@
KQEMU is a qemu accelerator kernel module on x86/amd64.
-WWW: http://qemu.org/qemu-accel.html
+WWW: http://fabrice.bellard.free.fr/qemu/
More information about the freebsd-ports
mailing list