socsvn commit: r288159 - in soc2015/mihai/bhyve-on-arm-head: sys/arm/vmm usr.sbin/bhyveloadarm
mihai at FreeBSD.org
mihai at FreeBSD.org
Thu Jul 9 17:07:12 UTC 2015
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");
More information about the svn-soc-all
mailing list