From: Juergen Lock <qemu-l@jelal.kn-bremen.de>
To: freebsd-emulation@freebsd.org, qemu-devel@nongnu.org
Subject: [Qemu-devel] experimental FreeBSD {k,}qemu port update
Date: Sun, 2 Apr 2006 00:21:52 +0200 [thread overview]
Message-ID: <20060401222151.GA45952@saturn.kn-bremen.de> (raw)
Here is what I have tested on i386 with kqemu. I also tried
-kernel-kqemu with a few linux 2.6 guests but only got panics, one
screenshot of KANOTIX-2006-CeBIT-RC3.iso is at
http://www.mytempdir.com/562050 (all panics looked like that).
As amd64 guests with kqemu/amd64 are not supposed to work yet
I think we can't update the port yet, so i only post the following
for ppl wanting to experiment...
First the patch for emulators/kqemu-kmod, after that after XXXX
the patch for the qemu port, updating it to today's cvs snapshot:
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/emulators/kqemu-kmod/Makefile,v
retrieving revision 1.3
diff -u -r1.3 Makefile
--- Makefile 6 Nov 2005 09:03:02 -0000 1.3
+++ Makefile 1 Apr 2006 22:08:19 -0000
@@ -6,15 +6,14 @@
#
PORTNAME= kqemu
-PORTVERSION= 0.7.2
-PORTREVISION= 1
+PORTVERSION= 1.3.0pre5
CATEGORIES= emulators
MASTER_SITES= http://fabrice.bellard.free.fr/qemu/
PKGNAMESUFFIX= -kmod
DIST_SUBDIR= kqemu
-MAINTAINER= nork@FreeBSD.org
-COMMENT= Kernel Acceralator for QEMU CPU Emulator
+MAINTAINER= nox@jelal.kn-bremen.de
+COMMENT= Kernel Acceralator for QEMU CPU Emulator (development version)
ONLY_FOR_ARCHS= i386 amd64
NO_PACKAGE= "Depends on kernel, and module not redistributable"
@@ -24,7 +23,6 @@
PLIST_FILES+= "@cwd /"
PLIST_FILES+= ${KMODDIR:C,^/,,}/kqemu.ko
-WRKSRC= ${WRKDIR}/${PORTNAME}
MAKEFILE= Makefile.freebsd
.include <bsd.port.pre.mk>
Index: distinfo
===================================================================
RCS file: /home/ncvs/ports/emulators/kqemu-kmod/distinfo,v
retrieving revision 1.2
diff -u -r1.2 distinfo
--- distinfo 22 Jan 2006 09:47:20 -0000 1.2
+++ distinfo 27 Mar 2006 23:06:15 -0000
@@ -1,3 +1,3 @@
-MD5 (kqemu/kqemu-0.7.2.tar.gz) = 02cfdecda90458d6393781496ec6b48b
-SHA256 (kqemu/kqemu-0.7.2.tar.gz) = 4158b2c67603f5256a78d0065d715bde068a457aa58bbfef12dda20fe7f7ad8b
-SIZE (kqemu/kqemu-0.7.2.tar.gz) = 79314
+MD5 (kqemu/kqemu-1.3.0pre5.tar.gz) = 2dc13fa4645a8d7c69f0f42aabf64cf5
+SHA256 (kqemu/kqemu-1.3.0pre5.tar.gz) = 2f2983393a4e007741685ef4e889fc91fe7619a038fc43998d414e441f5813a7
+SIZE (kqemu/kqemu-1.3.0pre5.tar.gz) = 189395
Index: files/patch-kqemu-freebsd.c
===================================================================
RCS file: /home/ncvs/ports/emulators/kqemu-kmod/files/patch-kqemu-freebsd.c,v
retrieving revision 1.2
diff -u -r1.2 patch-kqemu-freebsd.c
--- files/patch-kqemu-freebsd.c 6 Nov 2005 09:03:02 -0000 1.2
+++ files/patch-kqemu-freebsd.c 8 Feb 2006 23:11:32 -0000
@@ -1,506 +1,9 @@
---- kqemu-freebsd.c.orig Sun Aug 14 18:34:06 2005
-+++ kqemu-freebsd.c Thu Nov 3 17:15:47 2005
-@@ -3,32 +3,55 @@
- #include <sys/param.h>
- #include <sys/systm.h>
- #include <sys/conf.h>
-+#include <sys/ctype.h>
-+#include <sys/fcntl.h>
- #include <sys/ioccom.h>
- #include <sys/malloc.h>
- #include <sys/module.h>
-+#if __FreeBSD_version >= 500000
- #include <sys/mutex.h>
-+#endif
- #include <sys/proc.h>
-+#include <sys/resourcevar.h>
-+#if __FreeBSD_version >= 500000
- #include <sys/sched.h>
-+#endif
- #include <sys/signalvar.h>
- #include <sys/kernel.h>
-+#include <sys/sysctl.h>
-+#include <sys/uio.h>
-+#if __FreeBSD_version < 500000
-+#include <sys/buf.h>
-+#endif
-+
- #include <vm/vm.h>
- #include <vm/vm_param.h>
- #include <vm/vm_extern.h>
- #include <vm/pmap.h>
- #include <vm/vm_map.h>
- #include <vm/vm_kern.h>
-+#include <vm/vm_page.h>
-+
- #include <machine/vmparam.h>
- #include <machine/stdarg.h>
-
- #include "kqemu-kernel.h"
-
-+#ifndef KQEMU_MAJOR
-+#define KQEMU_MAJOR 250
-+#endif
-+
- MALLOC_DECLARE(M_KQEMU);
- MALLOC_DEFINE(M_KQEMU, "kqemu", "kqemu buffers");
-
-+int kqemu_debug;
-+SYSCTL_INT(_debug, OID_AUTO, kqemu_debug, CTLFLAG_RW, &kqemu_debug, 0,
-+ "kqemu debug flag");
-+
- #define USER_BASE 0x1000
-
- /* lock the page at virtual address 'user_addr' and return its
-- physical page index. Return -1 if error */
-+ physical page index. Return NULL if error */
- struct kqemu_user_page *CDECL kqemu_lock_user_page(unsigned long *ppage_index,
- unsigned long user_addr)
- {
-@@ -37,14 +60,18 @@
- vm_paddr_t pa = 0;
- int ret;
- pmap_t pmap;
-+#if __FreeBSD_version >= 500000
- ret = vm_map_wire(&vm->vm_map, va, va+PAGE_SIZE, VM_MAP_WIRE_USER);
-+#else
-+ ret = vm_map_user_pageable(&vm->vm_map, va, va+PAGE_SIZE, FALSE);
-+#endif
- if (ret != KERN_SUCCESS) {
-- printf("kqemu_lock_user_page(%08lx) failed, ret=%d\n", user_addr, ret);
-+ kqemu_log("kqemu_lock_user_page(%08lx) failed, ret=%d\n", user_addr, ret);
- return NULL;
- }
- pmap = vm_map_pmap(&vm->vm_map);
- pa = pmap_extract(pmap, va);
-- // printf("kqemu_lock_user_page(%08lx) va=%08x pa=%08x\n", user_addr, va, pa);
-+ /* kqemu_log("kqemu_lock_user_page(%08lx) va=%08x pa=%08x\n", user_addr, va, pa); */
- *ppage_index = pa >> PAGE_SHIFT;
- return (struct kqemu_user_page *)va;
- }
-@@ -54,12 +81,16 @@
- struct vmspace *vm = curproc->p_vmspace;
- vm_offset_t va;
- int ret;
-- // printf("kqemu_unlock_user_page(%08lx)\n", page_index);
-+ /* kqemu_log("kqemu_unlock_user_page(%08lx)\n", page_index); */
- va = (vm_offset_t)page;
-+#if __FreeBSD_version >= 500000
- ret = vm_map_unwire(&vm->vm_map, va, va+PAGE_SIZE, VM_MAP_WIRE_USER);
-+#else
-+ ret = vm_map_user_pageable(&vm->vm_map, va, va+PAGE_SIZE, TRUE);
-+#endif
- #if 0
- if (ret != KERN_SUCCESS) {
-- printf("kqemu_unlock_user_page(%08lx) failed, ret=%d\n", page_index, ret);
-+ kqemu_log("kqemu_unlock_user_page(%08lx) failed, ret=%d\n", page_index, ret);
- }
- #endif
- }
-@@ -76,20 +107,21 @@
-
- va = kmem_alloc(kernel_map, PAGE_SIZE);
- if (va == 0) {
-- printf("kqemu_alloc_zeroed_page: NULL\n");
-- return -1;
-+ kqemu_log("kqemu_alloc_zeroed_page: NULL\n");
-+ return NULL;
- }
- pmap = vm_map_pmap(kernel_map);
- pa = pmap_extract(pmap, va);
-- // printf("kqemu_alloc_zeroed_page: %08x\n", pa);
-+ /* kqemu_log("kqemu_alloc_zeroed_page: %08x\n", pa); */
- *ppage_index = pa >> PAGE_SHIFT;
- return (struct kqemu_page *)va;
- }
-
- void CDECL kqemu_free_page(struct kqemu_page *page)
- {
-- // printf("kqemu_free_page(%08lx)\n", page_index);
-- /* XXX: do it */
-+ if (kqemu_debug > 0)
-+ kqemu_log("kqemu_free_page(%p)\n", page);
-+ kmem_free(kernel_map, (vm_offset_t) page, PAGE_SIZE);
- }
-
- /* return kernel address of the physical page page_index */
-@@ -103,42 +135,29 @@
- GB of physical memory */
- void * CDECL kqemu_vmalloc(unsigned int size)
- {
-- struct vmspace *vm = curproc->p_vmspace;
-- vm_offset_t va = USER_BASE;
-- int rv;
-- if (size % PAGE_SIZE != 0) {
-- printf("kqemu_vmalloc(%d) not a multiple of page size\n", size);
-- return NULL;
-- }
-- rv = vm_map_find(&vm->vm_map, NULL, 0, &va, size, 1,
-- VM_PROT_ALL, VM_PROT_ALL, 0);
-- if (rv != KERN_SUCCESS) {
-- printf("kqemu_vmalloc(%d) failed rv=%d\n", size, rv);
-- return NULL;
-- }
-- printf("kqemu_vmalloc(%d): %08x\n", size, va);
-- return (void *)va;
-+ void *ptr = malloc(size, M_KQEMU, M_WAITOK);
-+ if (kqemu_debug > 0)
-+ kqemu_log("kqemu_vmalloc(%d): %p\n", size, ptr);
-+ return ptr;
- }
-
- void CDECL kqemu_vfree(void *ptr)
- {
-- printf("kqemu_vfree(%p)\n", ptr);
-+ if (kqemu_debug > 0)
-+ kqemu_log("kqemu_vfree(%p)\n", ptr);
-+ free(ptr, M_KQEMU);
- }
-
- /* return the physical page index for a given virtual page */
- unsigned long CDECL kqemu_vmalloc_to_phys(const void *vaddr)
- {
-- struct vmspace *vm = curproc->p_vmspace;
-- vm_paddr_t pa;
-- pmap_t pmap;
--
-- pmap = vm_map_pmap(&vm->vm_map);
-- pa = pmap_extract(pmap, (vm_offset_t)vaddr);
-+ vm_paddr_t pa = vtophys(vaddr);
- if (pa == 0) {
-- printf("kqemu_vmalloc_to_phys(%p)->error\n", vaddr);
-+ kqemu_log("kqemu_vmalloc_to_phys(%p)->error\n", vaddr);
- return -1;
- }
-- printf("kqemu_vmalloc_to_phys(%p)->%08x\n", vaddr, pa);
-+ if (kqemu_debug > 0)
-+ kqemu_log("kqemu_vmalloc_to_phys(%p)->%08x\n", vaddr, pa);
- return pa >> PAGE_SHIFT;
- }
-
-@@ -154,16 +173,48 @@
- {
- }
-
-+#if __FreeBSD_version < 500000
-+static int
-+curpriority_cmp(struct proc *p)
-+{
-+ int c_class, p_class;
-+
-+ c_class = RTP_PRIO_BASE(curproc->p_rtprio.type);
-+ p_class = RTP_PRIO_BASE(p->p_rtprio.type);
-+ if (p_class != c_class)
-+ return (p_class - c_class);
-+ if (p_class == RTP_PRIO_NORMAL)
-+ return (((int)p->p_priority - (int)curpriority) / PPQ);
-+ return ((int)p->p_rtprio.prio - (int)curproc->p_rtprio.prio);
-+}
-+
-+/* return TRUE if a signal is pending (i.e. the guest must stop
-+ execution) */
-+int CDECL kqemu_schedule(void)
-+{
-+ struct proc *p = curproc;
-+ if (curpriority_cmp(p) > 0) {
-+ int s = splhigh();
-+ p->p_priority = MAXPRI;
-+ setrunqueue(p);
-+ p->p_stats->p_ru.ru_nvcsw++;
-+ mi_switch();
-+ splx(s);
-+ }
-+ return issignal(curproc) != 0;
-+}
-+#else
- /* return TRUE if a signal is pending (i.e. the guest must stop
- execution) */
- int CDECL kqemu_schedule(void)
- {
-- // printf("kqemu_schedule\n");
-+ /* kqemu_log("kqemu_schedule\n"); */
- mtx_lock_spin(&sched_lock);
- mi_switch(SW_VOL, NULL);
- mtx_unlock_spin(&sched_lock);
- return SIGPENDING(curthread);
- }
-+#endif
-
- static char log_buf[4096];
-
-@@ -176,47 +227,160 @@
- va_end(ap);
- }
-
-+#define KQEMU_MAX_INSTANCES 4
-+
- struct kqemu_instance {
-- // struct semaphore sem;
-+#if __FreeBSD_version >= 500000
-+ TAILQ_ENTRY(kqemu_instance) kqemu_ent;
-+ struct cdev *kqemu_dev;
-+#endif
-+ /* struct semaphore sem; */
- struct kqemu_state *state;
+Index: kqemu-freebsd.c
+@@ -236,6 +236,7 @@
};
-+static int kqemu_ref_count = 0;
+ static int kqemu_ref_count = 0;
+static int max_locked_pages;
-+
-+#if __FreeBSD_version < 500000
-+static dev_t kqemu_dev;
-+#else
-+static struct clonedevs *kqemuclones;
-+static TAILQ_HEAD(,kqemu_instance) kqemuhead = TAILQ_HEAD_INITIALIZER(kqemuhead);
-+static eventhandler_tag clonetag;
-+#endif
-+
- static d_close_t kqemu_close;
- static d_open_t kqemu_open;
- static d_ioctl_t kqemu_ioctl;
-
- static struct cdevsw kqemu_cdevsw = {
-+#if __FreeBSD_version < 500000
-+ /* open */ kqemu_open,
-+ /* close */ kqemu_close,
-+ /* read */ noread,
-+ /* write */ nowrite,
-+ /* ioctl */ kqemu_ioctl,
-+ /* poll */ nopoll,
-+ /* mmap */ nommap,
-+ /* strategy */ nostrategy,
-+ /* name */ "kqemu",
-+ /* maj */ KQEMU_MAJOR,
-+ /* dump */ nodump,
-+ /* psize */ nopsize,
-+ /* flags */ 0,
-+ /* bmaj */ -1
-+#else
- .d_version = D_VERSION,
- .d_flags = D_NEEDGIANT,
- .d_open = kqemu_open,
- .d_ioctl = kqemu_ioctl,
- .d_close = kqemu_close,
- .d_name = "kqemu"
-+#endif
- };
-
--/* For use with make_dev(9)/destroy_dev(9). */
--static struct cdev *kqemu_dev;
-+#if __FreeBSD_version >= 500000
-+static void
-+#if __FreeBSD_version >= 600034
-+kqemu_clone(void *arg, struct ucred *cred, char *name, int namelen,
-+struct cdev **dev)
-+#else
-+kqemu_clone(void *arg, char *name, int namelen, struct cdev **dev)
-+#endif
-+{
-+ int unit, r;
-+ if (*dev != NULL)
-+ return;
-+
-+ if (strcmp(name, "kqemu") == 0)
-+ unit = -1;
-+ else if (dev_stdclone(name, NULL, "kqemu", &unit) != 1)
-+ return; /* Bad name */
-+ if (unit != -1 && unit > KQEMU_MAX_INSTANCES)
-+ return;
-+
-+ r = clone_create(&kqemuclones, &kqemu_cdevsw, &unit, dev, 0);
-+ if (r) {
-+ *dev = make_dev(&kqemu_cdevsw, unit2minor(unit),
-+ UID_ROOT, GID_WHEEL, 0660, "kqemu%d", unit);
-+ if (*dev != NULL) {
-+ dev_ref(*dev);
-+ (*dev)->si_flags |= SI_CHEAPCLONE;
-+ }
-+ }
-+}
-+#endif
-+
-+static void kqemu_destroy(struct kqemu_instance *ks)
-+{
-+#if __FreeBSD_version >= 500000
-+ struct cdev *dev = ks->kqemu_dev;
-+#endif
-+
-+ if (ks->state) {
-+ kqemu_delete(ks->state);
-+ ks->state = NULL;
-+ }
-+
-+#if __FreeBSD_version >= 500000
-+ dev->si_drv1 = NULL;
-+ TAILQ_REMOVE(&kqemuhead, ks, kqemu_ent);
-+ destroy_dev(dev);
-+#endif
-+ free(ks, M_KQEMU);
-+ --kqemu_ref_count;
-+}
-
- /* ARGSUSED */
- static int
-+#if __FreeBSD_version < 500000
-+kqemu_open(dev_t dev, int flags, int fmt __unused, struct proc *p)
-+{
-+#else
- kqemu_open(struct cdev *dev, int flags, int fmt __unused,
- struct thread *td)
- {
-+ struct proc *p = td->td_proc;
-+#endif
- struct kqemu_instance *ks;
-+
-+#if __FreeBSD_version >= 500000
-+ if (kqemu_ref_count >= KQEMU_MAX_INSTANCES)
-+#else
-+ if (dev->si_drv1 || kqemu_ref_count >= KQEMU_MAX_INSTANCES)
-+#endif
-+ return(EBUSY);
-+
-+ if ((flags & (FREAD|FWRITE)) == FREAD)
-+ return(EPERM);
-+
- ks = malloc(sizeof(struct kqemu_instance), M_KQEMU, M_WAITOK);
- if (ks == NULL) {
-- printf("malloc failed\n");
-+ kqemu_log("malloc failed\n");
- return ENOMEM;
- }
-- ks->state = NULL;
-+ memset(ks, 0, sizeof *ks);
-+#if __FreeBSD_version >= 500000
-+ ks->kqemu_dev = dev;
-+ TAILQ_INSERT_TAIL(&kqemuhead, ks, kqemu_ent);
-+#endif
-+ kqemu_ref_count++;
-+
- dev->si_drv1 = ks;
-+ if (kqemu_debug > 0)
-+ kqemu_log("opened by pid=%d\n", p->p_pid);
- return 0;
- }
-
- /* ARGSUSED */
- static int
-+#if __FreeBSD_version < 500000
-+kqemu_ioctl(dev_t dev, u_long cmd, caddr_t addr,
-+ int flags __unused, struct proc *p)
-+#else
- kqemu_ioctl(struct cdev *dev, u_long cmd, caddr_t addr,
- int flags __unused, struct thread *td)
-+#endif
- {
- int error = 0;
- int ret;
-@@ -231,8 +395,9 @@
- break;
- }
- d1 = *(struct kqemu_init *)addr;
-- printf("ram_base=%p ram_size=%ld\n", d1.ram_base, d1.ram_size);
-- s = kqemu_init(d, 16000);
-+ if (kqemu_debug > 0)
-+ kqemu_log("ram_base=%p ram_size=%ld\n", d1.ram_base, d1.ram_size);
-+ s = kqemu_init(d, max_locked_pages);
- if (s == NULL) {
- error = ENOMEM;
- break;
-@@ -248,9 +413,16 @@
- }
- ctx = kqemu_get_cpu_state(s);
- *ctx = *(struct kqemu_cpu_state *)addr;
-+#if __FreeBSD_version >= 500000
- DROP_GIANT();
-+#endif
- ret = kqemu_exec(s);
-+#if __FreeBSD_version >= 500000
- PICKUP_GIANT();
-+ td->td_retval[0] = ret;
-+#else
-+ p->p_retval[0] = ret;
-+#endif
- *(struct kqemu_cpu_state *)addr = *ctx;
- break;
- }
-@@ -265,10 +437,22 @@
-
- /* ARGSUSED */
- static int
-+#if __FreeBSD_version < 500000
-+kqemu_close(dev_t dev, int flags, int fmt __unused, struct proc *p)
-+{
-+#else
- kqemu_close(struct cdev *dev __unused, int flags, int fmt __unused,
- struct thread *td)
- {
-- return 0;
-+ struct proc *p = td->td_proc;
-+#endif
-+ struct kqemu_instance *ks = (struct kqemu_instance *) dev->si_drv1;
-+
-+ kqemu_destroy(ks);
-+
-+ if (kqemu_debug > 0)
-+ kqemu_log("closed by pid=%d\n", p->p_pid);
-+ return 0;
- }
-
- /* ARGSUSED */
-@@ -276,15 +460,55 @@
- kqemu_modevent(module_t mod __unused, int type, void *data __unused)
- {
- int error = 0;
-+#if __FreeBSD_version < 500000
-+ int rc;
-+#else
-+ struct kqemu_instance *ks;
-+#endif
+ static struct kqemu_global_state *kqemu_gs = NULL;
- switch (type) {
- case MOD_LOAD:
- printf("kqemu version 0x%08x\n", KQEMU_VERSION);
-+ max_locked_pages = physmem / (2 * KQEMU_MAX_INSTANCES);
-+ if (max_locked_pages > 32768)
-+ max_locked_pages = 32768;
-+#if __FreeBSD_version < 500000
-+ if ((rc = cdevsw_add(&kqemu_cdevsw))) {
-+ kqemu_log("error registering cdevsw, rc=%d\n", rc);
-+ error = ENOENT;
-+ break;
-+ }
- kqemu_dev = make_dev(&kqemu_cdevsw, 0,
-- UID_ROOT, GID_WHEEL, 0666, "kqemu");
-+ UID_ROOT, GID_WHEEL, 0660, "kqemu");
-+#else
-+ clone_setup(&kqemuclones);
-+ clonetag = EVENTHANDLER_REGISTER(dev_clone, kqemu_clone, 0, 1000);
-+ if (!clonetag) {
-+ error = ENOMEM;
-+ break;
-+ }
-+#endif
-+ kqemu_log("KQEMU installed, max_instances=%d max_locked_mem=%dkB.\n",
-+ KQEMU_MAX_INSTANCES, max_locked_pages * 4);
-+
-+ kqemu_ref_count = 0;
- break;
- case MOD_UNLOAD:
-+ if (kqemu_ref_count > 0) {
-+ error = EBUSY;
-+ break;
-+ }
-+#if __FreeBSD_version < 500000
- destroy_dev(kqemu_dev);
-+ if ((rc = cdevsw_remove(&kqemu_cdevsw)))
-+ kqemu_log("error unregistering, rc=%d\n", rc);
-+#else
-+ EVENTHANDLER_DEREGISTER(dev_clone, clonetag);
-+ while ((ks = TAILQ_FIRST(&kqemuhead)) != NULL) {
-+ kqemu_destroy(ks);
-+ }
-+ clone_cleanup(&kqemuclones);
-+#endif
- break;
- case MOD_SHUTDOWN:
- break;
+ #if __FreeBSD_version < 500000
XXXX here is the patch for emulators/qemu:
Removed files: files/patch-dyngen.h files/patch-hw-ne2000.c
files/patch-hw-usb-uhci.c files/patch-hw-usb.c
files/patch-sdl.c files/patch-slirp-socket.c
files/patch-slirp_throttle files/patch-target-i386-translate.c
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/emulators/qemu/Makefile,v
retrieving revision 1.47
diff -u -r1.47 Makefile
--- Makefile 26 Mar 2006 15:11:36 -0000 1.47
+++ Makefile 1 Apr 2006 22:04:41 -0000
@@ -6,8 +6,7 @@
#
PORTNAME= qemu
-PORTVERSION= 0.8.0
-PORTREVISION= 5
+PORTVERSION= 0.8.0s.20060401
CATEGORIES= emulators
MASTER_SITES= http://www.qemu.org/:release \
http://people.fruitsalad.org/nox/qemu/:snapshot \
@@ -15,10 +14,8 @@
http://qemu.dad-answers.com/download/qemu/:snapshot \
http://people.brandeis.edu/~jcoiner/qemu_idedma/:idedma \
http://people.freebsd.org/~maho/qemu/:misc
-DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:release
-.if defined (WITH_HACKS_IDEDMA) || defined (WITH_HACKS)
-DISTFILES+= qemu_dma_patch.tar.gz:idedma
-.endif
+DISTNAME= ${PORTNAME}-snapshot-2006-04-01_23
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:snapshot
.if defined (WITH_HACKS_CIRRUS) || defined (WITH_HACKS)
DISTFILES+= patch3_cirrus:misc
.endif
@@ -33,10 +30,11 @@
RUN_DEPENDS+= ${LOCALBASE}/sbin/smbd:${PORTSDIR}/net/samba
.endif
.if defined(WITH_KQEMU)
-BUILD_DEPENDS+= ${LOCALBASE}/include/kqemu/kqemu.h:${PORTSDIR}/emulators/kqemu-kmod
+BUILD_DEPENDS+= kqemu-kmod>=1.3.0pre5:${PORTSDIR}/emulators/kqemu-kmod
.endif
HAS_CONFIGURE= yes
+USE_BZIP2= yes
USE_GMAKE= yes
USE_GETOPT_LONG= yes
USE_SDL= sdl
@@ -48,6 +46,7 @@
ONLY_FOR_ARCHS= amd64 i386
.if defined(WITH_KQEMU)
CONFIGURE_ARGS+= --enable-kqemu
+CONFLICTS= kqemu-kmod-0*
.else
CONFIGURE_ARGS+= --disable-kqemu
.endif
@@ -64,11 +63,9 @@
@${ECHO_MSG} "Notice: you can build qemu with the (alpha!) kqemu accelerator kernel module"
@${ECHO_MSG} "by defining WITH_KQEMU."
.endif
-.if !defined(WITH_HACKS_IDEDMA) && !defined(WITH_HACKS_CIRRUS) && !defined(WITH_HACKS)
+.if !defined(WITH_HACKS_CIRRUS) && !defined(WITH_HACKS)
@${ECHO_MSG} "You can build qemu with some hacks (esp. for speedup)"
@${ECHO_MSG} "by defining WITH_HACKS, or specifically:"
- @${ECHO_MSG} "1. WITH_HACKS_IDEDMA: IDE Bus-master DMA Support by John Coiner"
- @${ECHO_MSG} "http://people.brandeis.edu/~jcoiner/qemu_idedma/qemu_dma_patch.html"
@${ECHO_MSG} "2. WITH_HACKS_CIRRUS: higher speed on large display (cirrus_vga)"
@${ECHO_MSG} "by Juergen Pfennig"
@${ECHO_MSG} "http://lists.gnu.org/archive/html/qemu-devel/2006-01/msg00208.html"
@@ -92,9 +89,6 @@
done
post-patch:
-.if defined(WITH_HACKS_IDEDMA) || defined (WITH_HACKS)
- @cd ${WRKDIR} ; ${TAR} xfz ${DISTDIR}/${DIST_SUBDIR}/qemu_dma_patch.tar.gz ; ${CP} new_qemu_dma_patch/bios.bin ${WRKSRC}/pc-bios; cd ${WRKSRC}; ${PATCH} --quiet -p1 < ../new_qemu_dma_patch/qemu-piix4-udma.patch
-.endif
.if defined(WITH_HACKS_CIRRUS) || defined (WITH_HACKS)
@cd ${WRKSRC} ; ${PATCH} --quiet < ${DISTDIR}/${DIST_SUBDIR}/patch3_cirrus
.endif
Index: distinfo
===================================================================
RCS file: /home/ncvs/ports/emulators/qemu/distinfo,v
retrieving revision 1.27
diff -u -r1.27 distinfo
--- distinfo 21 Jan 2006 23:10:06 -0000 1.27
+++ distinfo 1 Apr 2006 21:51:06 -0000
@@ -1,9 +1,3 @@
-MD5 (qemu/qemu-0.8.0.tar.gz) = eb175b26583280706fe7e4d8910d320d
-SHA256 (qemu/qemu-0.8.0.tar.gz) = de388539ce86971a2cbe8474fca8b6160898c95772e3e6e08a7794d48db32a61
-SIZE (qemu/qemu-0.8.0.tar.gz) = 1497965
-MD5 (qemu/qemu_dma_patch.tar.gz) = 5e339dc201d411af56bad684d3f89338
-SHA256 (qemu/qemu_dma_patch.tar.gz) = cdf74bf5e079d835e100f116d940686b13ec2b7ed6aee5a6a97a4441ea5f2b8f
-SIZE (qemu/qemu_dma_patch.tar.gz) = 25837
-MD5 (qemu/patch3_cirrus) = ebe7ed9fce804c49e024bc93bfdfc810
-SHA256 (qemu/patch3_cirrus) = e862371834b7d895a896fbdb84fd9f70d17b5729a6f6789a48a61504fc941e11
-SIZE (qemu/patch3_cirrus) = 8817
+MD5 (qemu/qemu-snapshot-2006-04-01_23.tar.bz2) = e40bde18f4f9d5b9306002d4bd308255
+SHA256 (qemu/qemu-snapshot-2006-04-01_23.tar.bz2) = eac9c496d9710d1ecf9223ad7be3fbb674788ba81819b81a98337f8a42e09aed
+SIZE (qemu/qemu-snapshot-2006-04-01_23.tar.bz2) = 1286796
Index: files/patch-bsdusb.patch
===================================================================
RCS file: /home/ncvs/ports/emulators/qemu/files/patch-bsdusb.patch,v
retrieving revision 1.1
diff -u -r1.1 patch-bsdusb.patch
--- files/patch-bsdusb.patch 18 Mar 2006 21:23:42 -0000 1.1
+++ files/patch-bsdusb.patch 27 Mar 2006 23:30:53 -0000
@@ -1,8 +1,9 @@
Index: qemu/configure
-@@ -122,6 +122,7 @@
+@@ -122,7 +122,8 @@
*)
oss="yes"
linux="yes"
+ user="yes"
+usb="linux"
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
kqemu="yes"
Index: files/patch-fbsd
===================================================================
RCS file: /home/ncvs/ports/emulators/qemu/files/patch-fbsd,v
retrieving revision 1.4
diff -u -r1.4 patch-fbsd
--- files/patch-fbsd 1 Oct 2005 13:25:09 -0000 1.4
+++ files/patch-fbsd 27 Mar 2006 23:39:21 -0000
@@ -1,5 +1,5 @@
Index: qemu/Makefile
-@@ -13,7 +13,7 @@
+@@ -13,11 +13,14 @@
endif
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1
@@ -8,14 +8,6 @@
for d in $(TARGET_DIRS); do \
$(MAKE) -C $$d $@ || exit 1 ; \
done
-@@ -21,10 +21,13 @@
- ifdef CONFIG_WIN32
- $(MAKE) -C kqemu -f Makefile.winnt
- else
-- $(MAKE) -C kqemu
-+ ( cd kqemu && $(BSD_MAKE) -f Makefile.freebsd )
- endif
- endif
+bsd/libmath.a:
+ ( cd bsd ; $(BSD_MAKE) CC=$(CC) )
@@ -23,7 +15,7 @@
qemu-img$(EXESUF): qemu-img.c block.c block-cow.c block-qcow.c aes.c block-vmdk.c block-cloop.c block-dmg.c block-bochs.c block-vpc.c block-vvfat.c
$(CC) -DQEMU_TOOL $(CFLAGS) $(LDFLAGS) $(DEFINES) -o $@ $^ -lz $(LIBS)
-@@ -33,6 +36,7 @@
+@@ -26,6 +29,7 @@
clean:
# avoid old build problems by removing potentially incorrect old files
@@ -31,25 +23,6 @@
rm -f config.mak config.h op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
rm -f *.o *.a $(TOOLS) dyngen$(EXESUF) TAGS *.pod *~ */*~
$(MAKE) -C tests clean
-@@ -40,7 +44,7 @@
- $(MAKE) -C $$d $@ || exit 1 ; \
- done
- ifdef CONFIG_KQEMU
-- $(MAKE) -C kqemu clean
-+ cd kqemu && $(BSD_MAKE) -f Makefile.freebsd clean
- endif
-
- distclean: clean
-@@ -73,9 +77,6 @@
- for d in $(TARGET_DIRS); do \
- $(MAKE) -C $$d $@ || exit 1 ; \
- done
--ifdef CONFIG_KQEMU
-- cd kqemu ; ./install.sh
--endif
-
- # various test targets
- test speed test2: all
Index: qemu/Makefile.target
@@ -391,8 +391,8 @@
VL_LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
next reply other threads:[~2006-04-01 22:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-01 22:21 Juergen Lock [this message]
2006-04-01 23:36 ` [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update Juergen Lock
2006-04-02 0:22 ` Juergen Lock
2006-04-05 2:41 ` NAKATA Maho
2006-04-09 15:39 ` John's IDE DMA patch and qemu cvs (was: Re: [Qemu-devel] Re: experimental FreeBSD {k, }qemu port update) Juergen Lock
2006-04-09 16:34 ` [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update Juergen Lock
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060401222151.GA45952@saturn.kn-bremen.de \
--to=qemu-l@jelal.kn-bremen.de \
--cc=freebsd-emulation@freebsd.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.