svn commit: r368631 - in head/emulators/kqemu-kmod-devel: . files
Juergen Lock
nox at FreeBSD.org
Sat Sep 20 09:51:05 UTC 2014
Author: nox
Date: Sat Sep 20 09:51:04 2014
New Revision: 368631
URL: http://svnweb.freebsd.org/changeset/ports/368631
QAT: https://qat.redports.org/buildarchive/r368631/
Log:
- Finally import syrinx' fix for 10.0+, it seems to work no worse
than kqemu worked before. [1]
- Fix build on 10/i386.
PR: 184984 [1]
Submitted by: syrinx [1]
Added:
head/emulators/kqemu-kmod-devel/files/patch-z-common-kernel.c (contents, props changed)
head/emulators/kqemu-kmod-devel/files/patch-z-kqemu-freebsd.c (contents, props changed)
Modified:
head/emulators/kqemu-kmod-devel/Makefile
Modified: head/emulators/kqemu-kmod-devel/Makefile
==============================================================================
--- head/emulators/kqemu-kmod-devel/Makefile Sat Sep 20 09:45:04 2014 (r368630)
+++ head/emulators/kqemu-kmod-devel/Makefile Sat Sep 20 09:51:04 2014 (r368631)
@@ -50,11 +50,6 @@ MAKE_CMD_ARGS+= ARCH=x86_64
CFLAGS+= ${DEBUG_FLAGS}
-# Not sure about the exact OSVERSION:
-.if ${OSVERSION} > 1000015
-BROKEN= KPI changes in 10 and up, use bhyve or vbox
-.endif
-
post-patch:
# Apply extra patches from the qemu-devel list; in the unlikely case that
# these cause regressions please define WITHOUT_EXTRA_PATCHES and post
Added: head/emulators/kqemu-kmod-devel/files/patch-z-common-kernel.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/kqemu-kmod-devel/files/patch-z-common-kernel.c Sat Sep 20 09:51:04 2014 (r368631)
@@ -0,0 +1,63 @@
+--- common/kernel.c.orig
++++ common/kernel.c
+@@ -341,7 +341,7 @@ static void kqemu_del_state(struct kqemu
+ }
+ }
+
+-struct kqemu_global_state *kqemu_global_init(int max_locked_pages)
++struct kqemu_global_state * CDECL kqemu_global_init(int max_locked_pages)
+ {
+ struct kqemu_global_state *g;
+
+@@ -354,13 +354,13 @@ struct kqemu_global_state *kqemu_global_
+ return g;
+ }
+
+-void kqemu_global_delete(struct kqemu_global_state *g)
++void CDECL kqemu_global_delete(struct kqemu_global_state *g)
+ {
+ /* XXX: free all existing states ? */
+ kqemu_vfree(g);
+ }
+
+-struct kqemu_state *kqemu_init(struct kqemu_init *d,
++struct kqemu_state * CDECL kqemu_init(struct kqemu_init *d,
+ struct kqemu_global_state *g)
+ {
+ struct kqemu_state *s;
+@@ -756,7 +756,7 @@ struct kqemu_state *kqemu_init(struct kq
+ return NULL;
+ }
+
+-int kqemu_set_phys_mem(struct kqemu_state *s,
++int CDECL kqemu_set_phys_mem(struct kqemu_state *s,
+ const struct kqemu_phys_mem *kphys_mem)
+ {
+ uint64_t start, size, end, addr;
+@@ -951,7 +951,7 @@ static void profile_dump(struct kqemu_st
+ }
+ #endif
+
+-void kqemu_delete(struct kqemu_state *s)
++void CDECL kqemu_delete(struct kqemu_state *s)
+ {
+ uint8_t *s1;
+ struct kqemu_ram_page *rp;
+@@ -990,7 +990,7 @@ void kqemu_delete(struct kqemu_state *s)
+ kqemu_vfree(s1);
+ }
+
+-struct kqemu_cpu_state *kqemu_get_cpu_state(struct kqemu_state *s)
++struct kqemu_cpu_state * CDECL kqemu_get_cpu_state(struct kqemu_state *s)
+ {
+ return &s->cpu_state;
+ }
+@@ -1063,7 +1063,7 @@ static void apic_restore_nmi(struct kqem
+ }\
+ }
+
+-long kqemu_exec(struct kqemu_state *s)
++long CDECL kqemu_exec(struct kqemu_state *s)
+ {
+ const struct monitor_code_header *m = (void *)monitor_code;
+ void (*kernel2monitor)(struct kqemu_state *s) =
Added: head/emulators/kqemu-kmod-devel/files/patch-z-kqemu-freebsd.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/kqemu-kmod-devel/files/patch-z-kqemu-freebsd.c Sat Sep 20 09:51:04 2014 (r368631)
@@ -0,0 +1,44 @@
+--- kqemu-freebsd.c~ 2014-02-07 20:00:33.656255395 +0200
++++ kqemu-freebsd.c 2014-02-08 08:43:19.209100708 +0200
+@@ -105,17 +105,29 @@
+ */
+ struct kqemu_page *CDECL kqemu_alloc_zeroed_page(unsigned long *ppage_index)
+ {
++#if __FreeBSD_version < 1000030
+ pmap_t pmap;
++#endif
+ vm_offset_t va;
+ vm_paddr_t pa;
+
++#if __FreeBSD_version >= 1000030
++ va = kmem_malloc(kernel_arena, PAGE_SIZE, M_ZERO | M_WAITOK);
++#else
+ va = kmem_alloc(kernel_map, PAGE_SIZE);
++#endif
++
+ if (va == 0) {
+ kqemu_log("kqemu_alloc_zeroed_page: NULL\n");
+ return NULL;
+ }
++
++#if __FreeBSD_version >= 1000030
++ pa = vtophys(va);
++#else
+ pmap = vm_map_pmap(kernel_map);
+ pa = pmap_extract(pmap, va);
++#endif
+ /* kqemu_log("kqemu_alloc_zeroed_page: %08x\n", pa); */
+ *ppage_index = pa >> PAGE_SHIFT;
+ return (struct kqemu_page *)va;
+@@ -125,7 +137,11 @@
+ {
+ if (kqemu_debug > 0)
+ kqemu_log("kqemu_free_page(%p)\n", page);
++#if __FreeBSD_version >= 1000030
++ kmem_free(kernel_arena, (vm_offset_t) page, PAGE_SIZE);
++#else
+ kmem_free(kernel_map, (vm_offset_t) page, PAGE_SIZE);
++#endif
+ }
+
+ /* return kernel address of the physical page page_index */
More information about the svn-ports-head
mailing list