socsvn commit: r268393 - in soc2014/mihai/bhyve-icache-head/sys/amd64: include vmm

mihai at FreeBSD.org mihai at FreeBSD.org
Tue May 20 20:32:07 UTC 2014


Author: mihai
Date: Tue May 20 20:32:05 2014
New Revision: 268393
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=268393

Log:
  soc2014: mihai: sys: amd64: vmm: fix interface naming for instr cache and copyrights

Modified:
  soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_cache.h
  soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_emul.h
  soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm.c
  soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm_instruction_cache.c

Modified: soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_cache.h
==============================================================================
--- soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_cache.h	Tue May 20 19:55:59 2014	(r268392)
+++ soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_cache.h	Tue May 20 20:32:05 2014	(r268393)
@@ -1,15 +1,41 @@
+/*-
+ * Copyright (c) 2014 Mihai Carabas.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
 #ifndef	_VMM_INSTRUCTION_CACHE_H_
 #define	_VMM_INSTRUCTION_CACHE_H_
 
-#ifdef _KERNEL
+struct vm;
+struct vie;
 
-int vmm_init_cached_instruction(void);
-int vmm_cleanup_cached_instruction(void);
-int vmm_add_cached_instruction(struct vm *vm, uint64_t rip, uint64_t cr3,
+int vmm_inst_cache_init(void);
+int vmm_inst_cache_cleanup(void);
+int vm_inst_cache_add(struct vm *vm, uint64_t rip, uint64_t cr3,
 		    struct vie *vie);
-int vmm_get_cached_instruction(struct vm *vm, uint64_t rip, uint64_t cr3,
+int vm_inst_cache_lookup(struct vm *vm, uint64_t rip, uint64_t cr3,
 		    struct vie *vie);
-int vmm_rm_cached_instruction(struct vm *vm, uint64_t rip, uint64_t cr3);
-#endif	/* _KERNEL */
+int vm_inst_cache_delete(struct vm *vm, uint64_t rip, uint64_t cr3);
 
 #endif	/* _VMM_INSTRUCTION_EMUL_H_ */

Modified: soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_emul.h
==============================================================================
--- soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_emul.h	Tue May 20 19:55:59 2014	(r268392)
+++ soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_emul.h	Tue May 20 20:32:05 2014	(r268393)
@@ -138,8 +138,6 @@
 int vmm_decode_instruction(struct vm *vm, int cpuid, uint64_t gla,
 			   enum vie_cpu_mode cpu_mode, struct vie *vie);
 
-#include <machine/vmm_instruction_cache.h>
-
 #endif	/* _KERNEL */
 
 #endif	/* _VMM_INSTRUCTION_EMUL_H_ */

Modified: soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm.c
==============================================================================
--- soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm.c	Tue May 20 19:55:59 2014	(r268392)
+++ soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm.c	Tue May 20 20:32:05 2014	(r268393)
@@ -62,6 +62,7 @@
 
 #include <machine/vmm.h>
 #include <machine/vmm_dev.h>
+#include <machine/vmm_instruction_cache.h>
 
 #include "vmm_ktr.h"
 #include "vmm_host.h"
@@ -291,7 +292,7 @@
 		error = vmm_init();
 		if (error == 0) {
 			vmm_initialized = 1;
-			vmm_init_cached_instruction();
+			vmm_inst_cache_init();
 		}
 		break;
 	case MOD_UNLOAD:
@@ -309,7 +310,7 @@
 			if (error)
 				vmm_initialized = 0;
 
-			vmm_cleanup_cached_instruction();
+			vmm_inst_cache_cleanup();
 		}
 		break;
 	default:
@@ -1116,7 +1117,7 @@
 
 	if (ftype == VM_PROT_WRITE) {
 		/* Remove all the instructions that resides in this page */
-		vmm_rm_cached_instruction(vm, vme->u.paging.gla, vme->u.paging.cr3);
+		vm_inst_cache_delete(vm, vme->u.paging.gla, vme->u.paging.cr3);
 	}
 
 	map = &vm->vmspace->vm_map;
@@ -1161,7 +1162,7 @@
 	vie = &vme->u.inst_emul.vie;
 
 	/* Check to see if the instruction is cached */
-	if (vmm_get_cached_instruction(vm, rip, cr3, vie)) {
+	if (vm_inst_cache_lookup(vm, rip, cr3, vie)) {
 		vie_init(vie);
 
 		/* Fetch, decode and emulate the faulting instruction */
@@ -1178,7 +1179,7 @@
 		    VM_PROT_READ | VM_PROT_EXECUTE, 0);
 
 		/* Cache decoded instruction for further use */
-		vmm_add_cached_instruction(vm, rip, cr3, vie);
+		vm_inst_cache_add(vm, rip, cr3, vie);
 	}
 
 	/* return to userland unless this is an in-kernel emulated device */

Modified: soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm_instruction_cache.c
==============================================================================
--- soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm_instruction_cache.c	Tue May 20 19:55:59 2014	(r268392)
+++ soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm_instruction_cache.c	Tue May 20 20:32:05 2014	(r268393)
@@ -1,4 +1,28 @@
-#ifdef _KERNEL
+/*-
+ * Copyright (c) 2014 Mihai Carabas.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
 
 #include <sys/cdefs.h>
 
@@ -19,7 +43,7 @@
 
 #include <machine/vmparam.h>
 #include <machine/vmm.h>
-
+#include <machine/vmm_instruction_cache.h>
 
 /* Instruction caching */
 
@@ -54,25 +78,27 @@
 static int vmm_cached_instruction_enable = 1;
 
 int
-vmm_init_cached_instruction(void)
+vmm_inst_cache_init(void)
 {
 	int i;
 
 	for (i = 0; i < VIE_CACHE_HASH_SIZE; i++) {
 		LIST_INIT(&vie_cached_hash[i].vie_cached_head);
-		rm_init(&vie_cached_hash[i].vie_cached_lock, "VIE CACHED HASH LOCK");
+		rm_init(&vie_cached_hash[i].vie_cached_lock,
+		    "VIE CACHED HASH LOCK");
 	}
 	return (0);
 }
 
 int
-vmm_cleanup_cached_instruction(void)
+vmm_inst_cache_cleanup(void)
 {
 	struct vie_cached *vie_cached, *vie_cached_safe;
 	int i;
 
 	for (i = 0; i < VIE_CACHE_HASH_SIZE; i++) {
-		LIST_FOREACH_SAFE(vie_cached, &vie_cached_hash[i].vie_cached_head, vie_link, vie_cached_safe)
+		LIST_FOREACH_SAFE(vie_cached, &vie_cached_hash[i].vie_cached_head,
+		    vie_link, vie_cached_safe)
 		{
 			LIST_REMOVE(vie_cached, vie_link);
 			free(vie_cached, M_VIECACHED);
@@ -101,7 +127,8 @@
 			if (temp == 0) {
 				for (i = 0; i < VIE_CACHE_HASH_SIZE; i++) {
 					rm_wlock(&vie_cached_hash[i].vie_cached_lock);
-					LIST_FOREACH_SAFE(vie_cached, &vie_cached_hash[i].vie_cached_head, vie_link, vie_cached_safe)
+					LIST_FOREACH_SAFE(vie_cached, &vie_cached_hash[i].vie_cached_head,
+					    vie_link, vie_cached_safe)
 					{
 						LIST_REMOVE(vie_cached, vie_link);
 						free(vie_cached, M_VIECACHED);
@@ -118,12 +145,14 @@
 
 
 int
-vmm_add_cached_instruction(struct vm *vm, uint64_t rip, uint64_t cr3,
+vm_inst_cache_add(struct vm *vm, uint64_t rip, uint64_t cr3,
 		    struct vie *vie)
 {
-	struct vie_cached *vie_cached = malloc(sizeof(struct vie_cached), M_VIECACHED, M_WAITOK | M_ZERO);
+	struct vie_cached *vie_cached;
 	int hash;
 
+	vie_cached = malloc(sizeof(struct vie_cached), M_VIECACHED, M_WAITOK | M_ZERO);
+
 	/* Check to see if caching is enabled */
 	if (!vmm_cached_instruction_enable)
 		return (0);
@@ -142,7 +171,7 @@
 }
 
 int
-vmm_get_cached_instruction(struct vm *vm, uint64_t rip, uint64_t cr3,
+vm_inst_cache_lookup(struct vm *vm, uint64_t rip, uint64_t cr3,
 		    struct vie *vie)
 {
 	struct vie_cached *vie_cached;
@@ -172,7 +201,7 @@
 }
 
 int
-vmm_rm_cached_instruction(struct vm *vm, uint64_t rip, uint64_t cr3)
+vm_inst_cache_delete(struct vm *vm, uint64_t rip, uint64_t cr3)
 {
 	struct vie_cached *vie_cached;
 	int hash;
@@ -201,4 +230,3 @@
 	rm_wunlock(&vie_cached_hash[hash].vie_cached_lock);
 	return (0);
 }
-#endif	/* _KERNEL */


More information about the svn-soc-all mailing list