qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] experimental FreeBSD {k,}qemu port update


From: Juergen Lock
Subject: [Qemu-devel] experimental FreeBSD {k,}qemu port update
Date: Sun, 2 Apr 2006 00:21:52 +0200
User-agent: Mutt/1.4.2.1i

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=    address@hidden
-COMMENT=       Kernel Acceralator for QEMU CPU Emulator
+MAINTAINER=    address@hidden
+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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]