Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Jul 2015 17:07:11 GMT
From:      mihai@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r288159 - in soc2015/mihai/bhyve-on-arm-head: sys/arm/vmm usr.sbin/bhyveloadarm
Message-ID:  <201507091707.t69H7B8T096152@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mihai
Date: Thu Jul  9 17:07:10 2015
New Revision: 288159
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=288159

Log:
  soc2015: mihai: bhyve: sys: arm: vmm: mmu.c: fix bug when len is not multiple of PAGE_SIZE

Modified:
  soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/mmu.c
  soc2015/mihai/bhyve-on-arm-head/usr.sbin/bhyveloadarm/bhyveloadarm.c

Modified: soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/mmu.c
==============================================================================
--- soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/mmu.c	Thu Jul  9 16:43:10 2015	(r288158)
+++ soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/mmu.c	Thu Jul  9 17:07:10 2015	(r288159)
@@ -192,11 +192,15 @@
 	if (arg)
 		l1pd = &vm_hyp->l1pd[0];
 
-	while (len > 0) {
+	while (1) {
 		n = create_lpae_mapping(l1pd, virt_start, phys_start, len, prot);
+
+		if (len <= n)
+			break;
 		len -= n;
 		virt_start += n;
 		phys_start += n;
+		printf("%s n: %d %d\n", __func__, n, len);
 	}
 	return (0);
 }

Modified: soc2015/mihai/bhyve-on-arm-head/usr.sbin/bhyveloadarm/bhyveloadarm.c
==============================================================================
--- soc2015/mihai/bhyve-on-arm-head/usr.sbin/bhyveloadarm/bhyveloadarm.c	Thu Jul  9 16:43:10 2015	(r288158)
+++ soc2015/mihai/bhyve-on-arm-head/usr.sbin/bhyveloadarm/bhyveloadarm.c	Thu Jul  9 17:07:10 2015	(r288159)
@@ -28,6 +28,7 @@
 #define	MB	(1024 * 1024UL)
 #define	GB	(1024 * 1024 * 1024UL)
 #define	BSP	0
+#define KERNEL_IMAGE_NAME_LEN	32
 
 static char *vmname, *progname;
 static struct vmctx *ctx;
@@ -92,20 +93,20 @@
 	int opt, error;
 	int kernel_image_fd;
 	uint64_t kernel_load_address, memory_base_address;
+	char kernel_image_name[KERNEL_IMAGE_NAME_LEN];
 	struct stat st;
 	void *addr;
 
 	progname = basename(argv[0]);
 
-	mem_size = 256 * MB;
+	mem_size = 128 * MB;
+	kernel_load_address = 0xc0000000;
+	memory_base_address = 0xc0000000;
 
 	while ((opt = getopt(argc, argv, "k:l:b:m:")) != -1) {
 		switch (opt) {
 		case 'k':
-			kernel_image_fd = open(optarg, O_RDONLY);
-			if (kernel_image_fd == -1) {
-				errx(EX_USAGE, "Could not open '%s'", optarg);
-			}
+			strncpy(kernel_image_name, optarg, KERNEL_IMAGE_NAME_LEN);
 			break;
 		case 'l':
 			kernel_load_address = strtoul(optarg, NULL, 0);
@@ -129,6 +130,12 @@
 
 	vmname = argv[0];
 
+	kernel_image_fd = open(kernel_image_name, O_RDONLY);
+	if (kernel_image_fd == -1) {
+		perror("open kernel_image_name");
+		exit(1);
+	}
+
 	error = vm_create(vmname);
 	if (error) {
 		perror("vm_create");
@@ -147,6 +154,7 @@
 		exit(1);
 	}
 
+
 	error = fstat(kernel_image_fd, &st);
 	if (error) {
 		perror("fstat");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201507091707.t69H7B8T096152>