From owner-svn-src-projects@FreeBSD.ORG Tue Oct 2 04:36:37 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D0A66106566B; Tue, 2 Oct 2012 04:36:37 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BCD778FC0A; Tue, 2 Oct 2012 04:36:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q924ab1D068520; Tue, 2 Oct 2012 04:36:37 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q924aba2068518; Tue, 2 Oct 2012 04:36:37 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201210020436.q924aba2068518@svn.freebsd.org> From: Peter Grehan Date: Tue, 2 Oct 2012 04:36:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241120 - projects/bhyve/sys/boot/userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Oct 2012 04:36:37 -0000 Author: grehan Date: Tue Oct 2 04:36:37 2012 New Revision: 241120 URL: http://svn.freebsd.org/changeset/base/241120 Log: Add cd9660 support to userboot to allow CD boot. Modified: projects/bhyve/sys/boot/userboot/userboot/conf.c Modified: projects/bhyve/sys/boot/userboot/userboot/conf.c ============================================================================== --- projects/bhyve/sys/boot/userboot/userboot/conf.c Tue Oct 2 03:33:41 2012 (r241119) +++ projects/bhyve/sys/boot/userboot/userboot/conf.c Tue Oct 2 04:36:37 2012 (r241120) @@ -57,6 +57,7 @@ struct devsw *devsw[] = { struct fs_ops *file_system[] = { &host_fsops, &ufs_fsops, + &cd9660_fsops, &gzipfs_fsops, NULL }; From owner-svn-src-projects@FreeBSD.ORG Tue Oct 2 04:41:44 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7887D106564A; Tue, 2 Oct 2012 04:41:44 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 640588FC0C; Tue, 2 Oct 2012 04:41:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q924fiDd069247; Tue, 2 Oct 2012 04:41:44 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q924filC069244; Tue, 2 Oct 2012 04:41:44 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201210020441.q924filC069244@svn.freebsd.org> From: Peter Grehan Date: Tue, 2 Oct 2012 04:41:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241121 - in projects/bhyve/sys/boot: common userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Oct 2012 04:41:44 -0000 Author: grehan Date: Tue Oct 2 04:41:43 2012 New Revision: 241121 URL: http://svn.freebsd.org/changeset/base/241121 Log: Fix the error return in disk_readslicetab() when an MBR/GPT partition wasn't found, and use that in userdisk_open() to allow raw disks and ISO images to be read. This is a temporary fix - disk.c has changed a lot in CURRENT so this code may be reworked or made redundant on the next IFC. It is useful to be able to boot from CD in the meantime. Modified: projects/bhyve/sys/boot/common/disk.c projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Modified: projects/bhyve/sys/boot/common/disk.c ============================================================================== --- projects/bhyve/sys/boot/common/disk.c Tue Oct 2 04:36:37 2012 (r241120) +++ projects/bhyve/sys/boot/common/disk.c Tue Oct 2 04:41:43 2012 (r241121) @@ -192,6 +192,7 @@ disk_readslicetab(struct disk_devdesc *d */ if (buf[0x1fe] != 0x55 || buf[0x1ff] != 0xaa) { DEBUG("no slice table/MBR (no magic)"); + rc = EEXIST; return (rc); } Modified: projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c ============================================================================== --- projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Tue Oct 2 04:36:37 2012 (r241120) +++ projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Tue Oct 2 04:41:43 2012 (r241121) @@ -103,6 +103,7 @@ userdisk_open(struct open_file *f, ...) { va_list ap; struct disk_devdesc *dev; + int rc; va_start(ap, f); dev = va_arg(ap, struct disk_devdesc *); @@ -111,7 +112,15 @@ userdisk_open(struct open_file *f, ...) if (dev->d_unit < 0 || dev->d_unit >= userboot_disk_maxunit) return (EIO); - return (disk_open(dev)); + rc = disk_open(dev); + + /* + * No MBR/GPT - assume a raw disk image + */ + if (rc) + dev->d_offset = 0; + + return (0); } static int From owner-svn-src-projects@FreeBSD.ORG Wed Oct 3 00:46:30 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E13A41065670; Wed, 3 Oct 2012 00:46:30 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C1D288FC12; Wed, 3 Oct 2012 00:46:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q930kUtB030729; Wed, 3 Oct 2012 00:46:30 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q930kUNj030722; Wed, 3 Oct 2012 00:46:30 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201210030046.q930kUNj030722@svn.freebsd.org> From: Neel Natu Date: Wed, 3 Oct 2012 00:46:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241147 - in projects/bhyve/sys/amd64: include vmm vmm/amd vmm/intel X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2012 00:46:31 -0000 Author: neel Date: Wed Oct 3 00:46:30 2012 New Revision: 241147 URL: http://svn.freebsd.org/changeset/base/241147 Log: Get rid of assumptions in the hypervisor that the host physical memory associated with guest physical memory is contiguous. Rewrite vm_gpa2hpa() to get the GPA to HPA mapping by querying the nested page tables. Modified: projects/bhyve/sys/amd64/include/vmm.h projects/bhyve/sys/amd64/vmm/amd/amdv.c projects/bhyve/sys/amd64/vmm/intel/ept.c projects/bhyve/sys/amd64/vmm/intel/ept.h projects/bhyve/sys/amd64/vmm/intel/vmx.c projects/bhyve/sys/amd64/vmm/vmm.c Modified: projects/bhyve/sys/amd64/include/vmm.h ============================================================================== --- projects/bhyve/sys/amd64/include/vmm.h Wed Oct 3 00:41:46 2012 (r241146) +++ projects/bhyve/sys/amd64/include/vmm.h Wed Oct 3 00:46:30 2012 (r241147) @@ -47,9 +47,11 @@ typedef int (*vmm_cleanup_func_t)(void); typedef void * (*vmi_init_func_t)(struct vm *vm); /* instance specific apis */ typedef int (*vmi_run_func_t)(void *vmi, int vcpu, register_t rip); typedef void (*vmi_cleanup_func_t)(void *vmi); -typedef int (*vmi_mmap_func_t)(void *vmi, vm_paddr_t gpa, vm_paddr_t hpa, - size_t length, vm_memattr_t attr, - int prot, boolean_t superpages_ok); +typedef int (*vmi_mmap_set_func_t)(void *vmi, vm_paddr_t gpa, + vm_paddr_t hpa, size_t length, + vm_memattr_t attr, int prot, + boolean_t superpages_ok); +typedef vm_paddr_t (*vmi_mmap_get_func_t)(void *vmi, vm_paddr_t gpa); typedef int (*vmi_get_register_t)(void *vmi, int vcpu, int num, uint64_t *retval); typedef int (*vmi_set_register_t)(void *vmi, int vcpu, int num, @@ -72,7 +74,8 @@ struct vmm_ops { vmi_init_func_t vminit; /* vm-specific initialization */ vmi_run_func_t vmrun; vmi_cleanup_func_t vmcleanup; - vmi_mmap_func_t vmmmap; + vmi_mmap_set_func_t vmmmap_set; + vmi_mmap_get_func_t vmmmap_get; vmi_get_register_t vmgetreg; vmi_set_register_t vmsetreg; vmi_get_desc_t vmgetdesc; Modified: projects/bhyve/sys/amd64/vmm/amd/amdv.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/amd/amdv.c Wed Oct 3 00:41:46 2012 (r241146) +++ projects/bhyve/sys/amd64/vmm/amd/amdv.c Wed Oct 3 00:46:30 2012 (r241147) @@ -78,11 +78,19 @@ amdv_vmcleanup(void *arg) } static int -amdv_vmmmap(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, size_t length, +amdv_vmmmap_set(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, size_t length, vm_memattr_t attr, int prot, boolean_t spok) { - printf("amdv_vmmmap: not implemented\n"); + printf("amdv_vmmmap_set: not implemented\n"); + return (EINVAL); +} + +static vm_paddr_t +amdv_vmmmap_get(void *arg, vm_paddr_t gpa) +{ + + printf("amdv_vmmmap_get: not implemented\n"); return (EINVAL); } @@ -157,7 +165,8 @@ struct vmm_ops vmm_ops_amd = { amdv_vminit, amdv_vmrun, amdv_vmcleanup, - amdv_vmmmap, + amdv_vmmmap_set, + amdv_vmmmap_get, amdv_getreg, amdv_setreg, amdv_getdesc, Modified: projects/bhyve/sys/amd64/vmm/intel/ept.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/intel/ept.c Wed Oct 3 00:41:46 2012 (r241146) +++ projects/bhyve/sys/amd64/vmm/intel/ept.c Wed Oct 3 00:46:30 2012 (r241147) @@ -115,6 +115,40 @@ ept_init(void) return (0); } +#if 0 +static void +ept_dump(uint64_t *ptp, int nlevels) +{ + int i, t, tabs; + uint64_t *ptpnext, ptpval; + + if (--nlevels < 0) + return; + + tabs = 3 - nlevels; + for (t = 0; t < tabs; t++) + printf("\t"); + printf("PTP = %p\n", ptp); + + for (i = 0; i < 512; i++) { + ptpval = ptp[i]; + + if (ptpval == 0) + continue; + + for (t = 0; t < tabs; t++) + printf("\t"); + printf("%3d 0x%016lx\n", i, ptpval); + + if (nlevels != 0 && (ptpval & EPT_PG_SUPERPAGE) == 0) { + ptpnext = (uint64_t *) + PHYS_TO_DMAP(ptpval & EPT_ADDR_MASK); + ept_dump(ptpnext, nlevels); + } + } +} +#endif + static size_t ept_create_mapping(uint64_t *ptp, vm_paddr_t gpa, vm_paddr_t hpa, size_t length, vm_memattr_t attr, vm_prot_t prot, boolean_t spok) @@ -179,29 +213,64 @@ ept_create_mapping(uint64_t *ptp, vm_pad "mismatch\n", gpa, ptpshift); } - /* Do the mapping */ - ptp[ptpindex] = hpa; + if (prot != VM_PROT_NONE) { + /* Do the mapping */ + ptp[ptpindex] = hpa; + + /* Apply the access controls */ + if (prot & VM_PROT_READ) + ptp[ptpindex] |= EPT_PG_RD; + if (prot & VM_PROT_WRITE) + ptp[ptpindex] |= EPT_PG_WR; + if (prot & VM_PROT_EXECUTE) + ptp[ptpindex] |= EPT_PG_EX; - /* Apply the access controls */ - if (prot & VM_PROT_READ) - ptp[ptpindex] |= EPT_PG_RD; - if (prot & VM_PROT_WRITE) - ptp[ptpindex] |= EPT_PG_WR; - if (prot & VM_PROT_EXECUTE) - ptp[ptpindex] |= EPT_PG_EX; - - /* - * XXX should we enforce this memory type by setting the ignore PAT - * bit to 1. - */ - ptp[ptpindex] |= EPT_PG_MEMORY_TYPE(attr); + /* + * XXX should we enforce this memory type by setting the + * ignore PAT bit to 1. + */ + ptp[ptpindex] |= EPT_PG_MEMORY_TYPE(attr); - if (nlevels > 0) - ptp[ptpindex] |= EPT_PG_SUPERPAGE; + if (nlevels > 0) + ptp[ptpindex] |= EPT_PG_SUPERPAGE; + } else { + /* Remove the mapping */ + ptp[ptpindex] = 0; + } return (1UL << ptpshift); } +static vm_paddr_t +ept_lookup_mapping(uint64_t *ptp, vm_paddr_t gpa) +{ + int nlevels, ptpshift, ptpindex; + uint64_t ptpval, hpabase, pgmask; + + nlevels = EPT_PWLEVELS; + while (--nlevels >= 0) { + ptpshift = PAGE_SHIFT + nlevels * 9; + ptpindex = (gpa >> ptpshift) & 0x1FF; + + ptpval = ptp[ptpindex]; + + /* Cannot make progress beyond this point */ + if ((ptpval & (EPT_PG_RD | EPT_PG_WR | EPT_PG_EX)) == 0) + break; + + if (nlevels == 0 || (ptpval & EPT_PG_SUPERPAGE)) { + pgmask = (1UL << ptpshift) - 1; + hpabase = ptpval & ~pgmask; + return (hpabase | (gpa & pgmask)); + } + + /* Work our way down to the next level page table page */ + ptp = (uint64_t *)PHYS_TO_DMAP(ptpval & EPT_ADDR_MASK); + } + + return ((vm_paddr_t)-1); +} + static void ept_free_pt_entry(pt_entry_t pte) { @@ -276,8 +345,8 @@ ept_vmcleanup(struct vmx *vmx) } int -ept_vmmmap(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, size_t len, - vm_memattr_t attr, int prot, boolean_t spok) +ept_vmmmap_set(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, size_t len, + vm_memattr_t attr, int prot, boolean_t spok) { size_t n; struct vmx *vmx = arg; @@ -293,6 +362,17 @@ ept_vmmmap(void *arg, vm_paddr_t gpa, vm return (0); } +vm_paddr_t +ept_vmmmap_get(void *arg, vm_paddr_t gpa) +{ + vm_paddr_t hpa; + struct vmx *vmx; + + vmx = arg; + hpa = ept_lookup_mapping(vmx->pml4ept, gpa); + return (hpa); +} + static void invept_single_context(void *arg) { Modified: projects/bhyve/sys/amd64/vmm/intel/ept.h ============================================================================== --- projects/bhyve/sys/amd64/vmm/intel/ept.h Wed Oct 3 00:41:46 2012 (r241146) +++ projects/bhyve/sys/amd64/vmm/intel/ept.h Wed Oct 3 00:46:30 2012 (r241147) @@ -35,8 +35,9 @@ struct vmx; #define EPTP(pml4) ((pml4) | (EPT_PWLEVELS - 1) << 3 | PAT_WRITE_BACK) int ept_init(void); -int ept_vmmmap(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, size_t length, +int ept_vmmmap_set(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, size_t length, vm_memattr_t attr, int prot, boolean_t allow_superpage_mappings); +vm_paddr_t ept_vmmmap_get(void *arg, vm_paddr_t gpa); void ept_invalidate_mappings(u_long ept_pml4); void ept_vmcleanup(struct vmx *vmx); #endif Modified: projects/bhyve/sys/amd64/vmm/intel/vmx.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/intel/vmx.c Wed Oct 3 00:41:46 2012 (r241146) +++ projects/bhyve/sys/amd64/vmm/intel/vmx.c Wed Oct 3 00:46:30 2012 (r241147) @@ -1813,7 +1813,8 @@ struct vmm_ops vmm_ops_intel = { vmx_vminit, vmx_run, vmx_vmcleanup, - ept_vmmmap, + ept_vmmmap_set, + ept_vmmmap_get, vmx_getreg, vmx_setreg, vmx_getdesc, Modified: projects/bhyve/sys/amd64/vmm/vmm.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/vmm.c Wed Oct 3 00:41:46 2012 (r241146) +++ projects/bhyve/sys/amd64/vmm/vmm.c Wed Oct 3 00:46:30 2012 (r241147) @@ -115,8 +115,12 @@ static struct vmm_ops *ops; #define VMRUN(vmi, vcpu, rip) \ (ops != NULL ? (*ops->vmrun)(vmi, vcpu, rip) : ENXIO) #define VMCLEANUP(vmi) (ops != NULL ? (*ops->vmcleanup)(vmi) : NULL) -#define VMMMAP(vmi, gpa, hpa, len, attr, prot, spm) \ - (ops != NULL ? (*ops->vmmmap)(vmi, gpa, hpa, len, attr, prot, spm) : ENXIO) +#define VMMMAP_SET(vmi, gpa, hpa, len, attr, prot, spm) \ + (ops != NULL ? \ + (*ops->vmmmap_set)(vmi, gpa, hpa, len, attr, prot, spm) : \ + ENXIO) +#define VMMMAP_GET(vmi, gpa) \ + (ops != NULL ? (*ops->vmmmap_get)(vmi, gpa) : ENXIO) #define VMGETREG(vmi, vcpu, num, retval) \ (ops != NULL ? (*ops->vmgetreg)(vmi, vcpu, num, retval) : ENXIO) #define VMSETREG(vmi, vcpu, num, val) \ @@ -302,8 +306,8 @@ vm_map_mmio(struct vm *vm, vm_paddr_t gp { const boolean_t spok = TRUE; /* superpage mappings are ok */ - return (VMMMAP(vm->cookie, gpa, hpa, len, VM_MEMATTR_UNCACHEABLE, - VM_PROT_RW, spok)); + return (VMMMAP_SET(vm->cookie, gpa, hpa, len, VM_MEMATTR_UNCACHEABLE, + VM_PROT_RW, spok)); } int @@ -311,8 +315,8 @@ vm_unmap_mmio(struct vm *vm, vm_paddr_t { const boolean_t spok = TRUE; /* superpage mappings are ok */ - return (VMMMAP(vm->cookie, gpa, 0, len, VM_MEMATTR_UNCACHEABLE, - VM_PROT_NONE, spok)); + return (VMMMAP_SET(vm->cookie, gpa, 0, len, 0, + VM_PROT_NONE, spok)); } /* @@ -380,8 +384,8 @@ vm_malloc(struct vm *vm, vm_paddr_t gpa, if (hpa == 0) return (ENOMEM); - error = VMMMAP(vm->cookie, gpa, hpa, len, VM_MEMATTR_WRITE_BACK, - VM_PROT_ALL, spok); + error = VMMMAP_SET(vm->cookie, gpa, hpa, len, VM_MEMATTR_WRITE_BACK, + VM_PROT_ALL, spok); if (error) { vmm_mem_free(hpa, len); return (error); @@ -400,17 +404,8 @@ vm_malloc(struct vm *vm, vm_paddr_t gpa, vm_paddr_t vm_gpa2hpa(struct vm *vm, vm_paddr_t gpa, size_t len) { - int i; - vm_paddr_t gpabase, gpalimit, hpabase; - for (i = 0; i < vm->num_mem_segs; i++) { - hpabase = vm->mem_segs[i].hpa; - gpabase = vm->mem_segs[i].gpa; - gpalimit = gpabase + vm->mem_segs[i].len; - if (gpa >= gpabase && gpa + len <= gpalimit) - return ((gpa - gpabase) + hpabase); - } - return ((vm_paddr_t)-1); + return (VMMMAP_GET(vm->cookie, gpa)); } int From owner-svn-src-projects@FreeBSD.ORG Wed Oct 3 01:18:52 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2F22A106564A; Wed, 3 Oct 2012 01:18:52 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 093688FC0C; Wed, 3 Oct 2012 01:18:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q931IpSI034935; Wed, 3 Oct 2012 01:18:51 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q931Ipqo034932; Wed, 3 Oct 2012 01:18:51 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201210030118.q931Ipqo034932@svn.freebsd.org> From: Neel Natu Date: Wed, 3 Oct 2012 01:18:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241148 - projects/bhyve/sys/amd64/vmm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2012 01:18:52 -0000 Author: neel Date: Wed Oct 3 01:18:51 2012 New Revision: 241148 URL: http://svn.freebsd.org/changeset/base/241148 Log: Get rid of assumptions in the hypervisor that the host physical memory associated with guest physical memory is contiguous. Add check to vm_gpa2hpa() that the range indicated by [gpa,gpa+len) is all contained within a single 4KB page. Modified: projects/bhyve/sys/amd64/vmm/vmm.c projects/bhyve/sys/amd64/vmm/vmm_instruction_emul.c Modified: projects/bhyve/sys/amd64/vmm/vmm.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/vmm.c Wed Oct 3 00:46:30 2012 (r241147) +++ projects/bhyve/sys/amd64/vmm/vmm.c Wed Oct 3 01:18:51 2012 (r241148) @@ -404,6 +404,11 @@ vm_malloc(struct vm *vm, vm_paddr_t gpa, vm_paddr_t vm_gpa2hpa(struct vm *vm, vm_paddr_t gpa, size_t len) { + vm_paddr_t nextpage; + + nextpage = rounddown(gpa + PAGE_SIZE, PAGE_SIZE); + if (len > nextpage - gpa) + panic("vm_gpa2hpa: invalid gpa/len: 0x%016lx/%lu", gpa, len); return (VMMMAP_GET(vm->cookie, gpa)); } Modified: projects/bhyve/sys/amd64/vmm/vmm_instruction_emul.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/vmm_instruction_emul.c Wed Oct 3 00:46:30 2012 (r241147) +++ projects/bhyve/sys/amd64/vmm/vmm_instruction_emul.c Wed Oct 3 01:18:51 2012 (r241148) @@ -133,7 +133,7 @@ vmm_fetch_instruction(struct vm *vm, uin uint64_t cr3, struct vie *vie) { int n, err; - uint64_t hpa, gpa, gpaend; + uint64_t hpa, gpa, gpaend, off; /* * XXX cache previously fetched instructions using 'rip' as the tag @@ -150,7 +150,8 @@ vmm_fetch_instruction(struct vm *vm, uin if (err) break; - n = min(inst_length - vie->num_valid, gpaend - gpa); + off = gpa & PAGE_MASK; + n = min(inst_length - vie->num_valid, PAGE_SIZE - off); hpa = vm_gpa2hpa(vm, gpa, n); if (hpa == -1) From owner-svn-src-projects@FreeBSD.ORG Wed Oct 3 02:58:55 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F05A71065675; Wed, 3 Oct 2012 02:58:55 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DB6408FC08; Wed, 3 Oct 2012 02:58:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q932wtrO047759; Wed, 3 Oct 2012 02:58:55 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q932wt0r047757; Wed, 3 Oct 2012 02:58:55 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201210030258.q932wt0r047757@svn.freebsd.org> From: Peter Grehan Date: Wed, 3 Oct 2012 02:58:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241150 - projects/bhyve/sys/boot/userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2012 02:58:56 -0000 Author: grehan Date: Wed Oct 3 02:58:55 2012 New Revision: 241150 URL: http://svn.freebsd.org/changeset/base/241150 Log: Restore the ability to boot partitioned disks. The previous submit broke that by forcing raw disks, due to the use of error returns by userboot's initial disk opens. Modified: projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Modified: projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c ============================================================================== --- projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Wed Oct 3 02:32:47 2012 (r241149) +++ projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Wed Oct 3 02:58:55 2012 (r241150) @@ -103,7 +103,6 @@ userdisk_open(struct open_file *f, ...) { va_list ap; struct disk_devdesc *dev; - int rc; va_start(ap, f); dev = va_arg(ap, struct disk_devdesc *); @@ -112,15 +111,11 @@ userdisk_open(struct open_file *f, ...) if (dev->d_unit < 0 || dev->d_unit >= userboot_disk_maxunit) return (EIO); - rc = disk_open(dev); - - /* - * No MBR/GPT - assume a raw disk image - */ - if (rc) + if (dev->d_slice == -1 && dev->d_partition == -1) { dev->d_offset = 0; - - return (0); + return (0); + } else + return (disk_open(dev)); } static int From owner-svn-src-projects@FreeBSD.ORG Wed Oct 3 03:00:38 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7F1481065670; Wed, 3 Oct 2012 03:00:38 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 69C8F8FC08; Wed, 3 Oct 2012 03:00:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q9330cbf048025; Wed, 3 Oct 2012 03:00:38 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q9330cAx048022; Wed, 3 Oct 2012 03:00:38 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201210030300.q9330cAx048022@svn.freebsd.org> From: Peter Grehan Date: Wed, 3 Oct 2012 03:00:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241151 - projects/bhyve/sys/boot/userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2012 03:00:38 -0000 Author: grehan Date: Wed Oct 3 03:00:37 2012 New Revision: 241151 URL: http://svn.freebsd.org/changeset/base/241151 Log: Rework the GPT/MBR/raw policy so that it actually works, and navigates around disk_open's current handling of falling back from GPT to MBR. As in the previous commit, this should all be fixed in CURRENT. Modified: projects/bhyve/sys/boot/userboot/userboot/main.c Modified: projects/bhyve/sys/boot/userboot/userboot/main.c ============================================================================== --- projects/bhyve/sys/boot/userboot/userboot/main.c Wed Oct 3 02:58:55 2012 (r241150) +++ projects/bhyve/sys/boot/userboot/userboot/main.c Wed Oct 3 03:00:37 2012 (r241151) @@ -129,6 +129,7 @@ static void extract_currdev(void) { struct disk_devdesc dev; + int gpt, rc; //bzero(&dev, sizeof(dev)); @@ -138,12 +139,37 @@ extract_currdev(void) dev.d_unit = 0; dev.d_slice = 0; dev.d_partition = 0; + /* - * Figure out if we are using MBR or GPT - for GPT we - * set the partition to 0 since everything is a GPT slice. + * The priority is GPT, MBR and raw disk. Unfortunately, + * disk_open() doesn't really get this right so first + * probe for MBR, and then GPT. If GPT fails, re-probe + * MBR if it succeeded, else assume raw. */ - if (dev.d_dev->dv_open(NULL, &dev)) - dev.d_partition = 255; + rc = (*dev.d_dev->dv_open)(NULL, &dev); + + dev.d_unit = 0; + dev.d_slice = 0; + dev.d_partition = 255; + gpt = (*dev.d_dev->dv_open)(NULL, &dev); + + if (gpt) { + dev.d_unit = 0; + dev.d_slice = 0; + dev.d_partition = 0; + + if (!rc) { + (void) (*dev.d_dev->dv_open)(NULL, &dev); + } else { + /* + * Force raw disk access + */ + dev.d_slice = -1; + dev.d_partition = -1; + dev.d_offset = 0; + } + } + } else { dev.d_dev = &host_dev; dev.d_type = dev.d_dev->dv_type; From owner-svn-src-projects@FreeBSD.ORG Wed Oct 3 04:22:40 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 36BA11065672; Wed, 3 Oct 2012 04:22:40 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 20E568FC17; Wed, 3 Oct 2012 04:22:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q934MdSh060524; Wed, 3 Oct 2012 04:22:39 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q934Mdt0060521; Wed, 3 Oct 2012 04:22:39 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201210030422.q934Mdt0060521@svn.freebsd.org> From: Peter Grehan Date: Wed, 3 Oct 2012 04:22:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241153 - in projects/bhyve/sys/boot: common userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2012 04:22:40 -0000 Author: grehan Date: Wed Oct 3 04:22:39 2012 New Revision: 241153 URL: http://svn.freebsd.org/changeset/base/241153 Log: Allow the number of FICL dictionary cells to be overridden. Loading a 7.3 ISO with userboot/amd64 takes up 10035 cells, overflowing the long-standing default of 10000. Bump userboot's value up to 15000 cells. Modified: projects/bhyve/sys/boot/common/interp_forth.c projects/bhyve/sys/boot/userboot/userboot/Makefile Modified: projects/bhyve/sys/boot/common/interp_forth.c ============================================================================== --- projects/bhyve/sys/boot/common/interp_forth.c Wed Oct 3 03:44:23 2012 (r241152) +++ projects/bhyve/sys/boot/common/interp_forth.c Wed Oct 3 04:22:39 2012 (r241153) @@ -51,6 +51,13 @@ extern char bootprog_rev[]; #define BF_PARSE 100 /* + * Default dictionary size, ~4000 cells + */ +#ifndef BF_DICTSIZE +#define BF_DICTSIZE 10000 +#endif + +/* * BootForth Interface to Ficl Forth interpreter. */ @@ -234,7 +241,7 @@ bf_init(void) char create_buf[41]; /* 31 characters-long builtins */ int fd; - bf_sys = ficlInitSystem(10000); /* Default dictionary ~4000 cells */ + bf_sys = ficlInitSystem(BF_DICTSIZE); bf_vm = ficlNewVM(bf_sys); /* Put all private definitions in a "builtins" vocabulary */ Modified: projects/bhyve/sys/boot/userboot/userboot/Makefile ============================================================================== --- projects/bhyve/sys/boot/userboot/userboot/Makefile Wed Oct 3 03:44:23 2012 (r241152) +++ projects/bhyve/sys/boot/userboot/userboot/Makefile Wed Oct 3 04:22:39 2012 (r241153) @@ -46,6 +46,7 @@ CLEANFILES= vers.c .if ${MK_FORTH} != "no" BOOT_FORTH= yes CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386 +CFLAGS+= -DBF_DICTSIZE=15000 LIBFICL= ${.OBJDIR}/../ficl/libficl.a LIBSTAND= ${.OBJDIR}/../libstand/libstand.a .endif From owner-svn-src-projects@FreeBSD.ORG Wed Oct 3 23:03:47 2012 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6AB72106564A; Wed, 3 Oct 2012 23:03:47 +0000 (UTC) (envelope-from peter@vps.rulingia.com) Received: from vps.rulingia.com (host-122-100-2-194.octopus.com.au [122.100.2.194]) by mx1.freebsd.org (Postfix) with ESMTP id 9CE558FC0C; Wed, 3 Oct 2012 23:03:45 +0000 (UTC) Received: from vps.rulingia.com (localhost [127.0.0.1]) by vps.rulingia.com (8.14.5/8.14.5) with ESMTP id q93MoBaI061497 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 4 Oct 2012 08:50:12 +1000 (EST) (envelope-from peter@vps.rulingia.com) Received: (from peter@localhost) by vps.rulingia.com (8.14.5/8.14.5/Submit) id q93MoBup061496; Thu, 4 Oct 2012 08:50:11 +1000 (EST) (envelope-from peter) Date: Thu, 4 Oct 2012 08:50:11 +1000 From: Peter Jeremy To: Peter Grehan Message-ID: <20121003225011.GA61464@vps.rulingia.com> References: <201210030422.q934Mdt0060521@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201210030422.q934Mdt0060521@svn.freebsd.org> X-PGP-Key: http://www.rulingia.com/keys/peter.pgp User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r241153 - in projects/bhyve/sys/boot: common userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2012 23:03:47 -0000 On 2012-Oct-03 04:22:39 +0000, Peter Grehan wrote: >Log: > Allow the number of FICL dictionary cells to be overridden. > Loading a 7.3 ISO with userboot/amd64 takes up 10035 cells, > overflowing the long-standing default of 10000. ... >Modified: projects/bhyve/sys/boot/common/interp_forth.c >============================================================================== >--- projects/bhyve/sys/boot/common/interp_forth.c Wed Oct 3 03:44:23 2012 (r241152) >+++ projects/bhyve/sys/boot/common/interp_forth.c Wed Oct 3 04:22:39 2012 (r241153) >@@ -51,6 +51,13 @@ extern char bootprog_rev[]; > #define BF_PARSE 100 > > /* >+ * Default dictionary size, ~4000 cells >+ */ >+#ifndef BF_DICTSIZE >+#define BF_DICTSIZE 10000 >+#endif >+ >+/* IMHO, the comment here is somewhat confusing since there's no obvious correlation between "~4000 cells" and "10000" (though I agree that you just copied the confusion). Based solely on the comment and associated #define, the code could be interpreted as "setting BF_DICTSIZE to 10000 provides space for about 4000 cells". The commit log clarifies that BF_DICTSIZE is in cells but this is not available to someone reading the code and doesn't explain the "~4000". Can I suggest an alternate comment along the lines of: /* * (Maximum?) Dictionary size in cells. Note that the default FICL dictionary * requires ~4000 cells. */ -- Peter Jeremy From owner-svn-src-projects@FreeBSD.ORG Wed Oct 3 23:24:47 2012 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 07EC01065677; Wed, 3 Oct 2012 23:24:47 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from alto.onthenet.com.au (alto.OntheNet.com.au [203.13.68.12]) by mx1.freebsd.org (Postfix) with ESMTP id B0A5D8FC0C; Wed, 3 Oct 2012 23:24:46 +0000 (UTC) Received: from dommail.onthenet.com.au (dommail.OntheNet.com.au [203.13.70.57]) by alto.onthenet.com.au (Postfix) with ESMTPS id F31E3139AE; Thu, 4 Oct 2012 09:24:44 +1000 (EST) Received: from Peter-Grehans-MacBook-Pro.local (c-75-70-8-22.hsd1.co.comcast.net [75.70.8.22]) by dommail.onthenet.com.au (MOS 4.2.4-GA) with ESMTP id BGU29011 (AUTH peterg@ptree32.com.au); Thu, 4 Oct 2012 09:24:42 +1000 Message-ID: <506CC937.2010409@freebsd.org> Date: Wed, 03 Oct 2012 17:24:39 -0600 From: Peter Grehan User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 MIME-Version: 1.0 To: Peter Jeremy References: <201210030422.q934Mdt0060521@svn.freebsd.org> <20121003225011.GA61464@vps.rulingia.com> In-Reply-To: <20121003225011.GA61464@vps.rulingia.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Junkmail-Info: RCVD_IN_PBL,RCVD_IN_SORBS_DUL,RDNS_DYNAMIC,SPF_SOFTFAIL X-Junkmail-Status: score=29/51, host=dommail.onthenet.com.au Cc: svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r241153 - in projects/bhyve/sys/boot: common userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2012 23:24:47 -0000 Hi Peter, > IMHO, the comment here is somewhat confusing Agreed. > Can I suggest an alternate comment along the lines of: > /* > * (Maximum?) Dictionary size in cells. Note that the default FICL dictionary > * requires ~4000 cells. > */ The irony is that FICL_DEFAULT_DICT, used if the passed in param to ficlInitSystem() is <=0, is actually 12288 on all arches. How about if I just remove the '~4000 cells' text, and maybe put in something like * FreeBSD loader default dictionary cells The irony is that FICL_DEFAULT_DICT, used if the passed in param to ficlInitSystem() is <=0, is actually 12288 on all arches. later, Peter. From owner-svn-src-projects@FreeBSD.ORG Wed Oct 3 23:27:07 2012 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8183B106566B; Wed, 3 Oct 2012 23:27:07 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from alto.onthenet.com.au (alto.OntheNet.com.au [203.13.68.12]) by mx1.freebsd.org (Postfix) with ESMTP id 365388FC19; Wed, 3 Oct 2012 23:27:07 +0000 (UTC) Received: from dommail.onthenet.com.au (dommail.OntheNet.com.au [203.13.70.57]) by alto.onthenet.com.au (Postfix) with ESMTPS id 27D9713965; Thu, 4 Oct 2012 09:27:06 +1000 (EST) Received: from Peter-Grehans-MacBook-Pro.local (c-75-70-8-22.hsd1.co.comcast.net [75.70.8.22]) by dommail.onthenet.com.au (MOS 4.2.4-GA) with ESMTP id BGU29151 (AUTH peterg@ptree32.com.au); Thu, 4 Oct 2012 09:27:03 +1000 Message-ID: <506CC9C5.9010901@freebsd.org> Date: Wed, 03 Oct 2012 17:27:01 -0600 From: Peter Grehan User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 MIME-Version: 1.0 To: Peter Jeremy References: <201210030422.q934Mdt0060521@svn.freebsd.org> <20121003225011.GA61464@vps.rulingia.com> <506CC937.2010409@freebsd.org> In-Reply-To: <506CC937.2010409@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Junkmail-Info: RCVD_IN_PBL,RCVD_IN_SORBS_DUL,RDNS_DYNAMIC,SPF_SOFTFAIL X-Junkmail-Status: score=29/51, host=dommail.onthenet.com.au Cc: svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r241153 - in projects/bhyve/sys/boot: common userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2012 23:27:07 -0000 > The irony is that FICL_DEFAULT_DICT, used if the passed in param to > ficlInitSystem() is <=0, is actually 12288 on all arches. ... > The irony is that FICL_DEFAULT_DICT, used if the passed in param to > ficlInitSystem() is <=0, is actually 12288 on all arches. Doubly ironic even :) Damn that cut'n'paste. later, Peter. From owner-svn-src-projects@FreeBSD.ORG Thu Oct 4 02:27:15 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 131AF106564A; Thu, 4 Oct 2012 02:27:15 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F10118FC14; Thu, 4 Oct 2012 02:27:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q942REw7040776; Thu, 4 Oct 2012 02:27:14 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q942REIZ040769; Thu, 4 Oct 2012 02:27:14 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201210040227.q942REIZ040769@svn.freebsd.org> From: Neel Natu Date: Thu, 4 Oct 2012 02:27:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241178 - in projects/bhyve: lib/libvmmapi sys/amd64/include sys/amd64/vmm sys/amd64/vmm/io X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Oct 2012 02:27:15 -0000 Author: neel Date: Thu Oct 4 02:27:14 2012 New Revision: 241178 URL: http://svn.freebsd.org/changeset/base/241178 Log: Change vm_malloc() to map pages in the guest physical address space in 4KB chunks. This breaks the assumption that the entire memory segment is contiguously allocated in the host physical address space. This also paves the way to satisfy the 4KB page allocations by requesting free pages from the VM subsystem as opposed to hard-partitioning host memory at boot time. Modified: projects/bhyve/lib/libvmmapi/vmmapi.c projects/bhyve/sys/amd64/include/vmm_dev.h projects/bhyve/sys/amd64/vmm/io/ppt.c projects/bhyve/sys/amd64/vmm/vmm.c projects/bhyve/sys/amd64/vmm/vmm_dev.c projects/bhyve/sys/amd64/vmm/vmm_mem.c Modified: projects/bhyve/lib/libvmmapi/vmmapi.c ============================================================================== --- projects/bhyve/lib/libvmmapi/vmmapi.c Thu Oct 4 01:37:12 2012 (r241177) +++ projects/bhyve/lib/libvmmapi/vmmapi.c Thu Oct 4 02:27:14 2012 (r241178) @@ -111,9 +111,10 @@ vm_destroy(struct vmctx *vm) { assert(vm != NULL); - DESTROY(vm->name); if (vm->fd >= 0) close(vm->fd); + DESTROY(vm->name); + free(vm); } @@ -151,7 +152,6 @@ vm_get_memory_seg(struct vmctx *ctx, vm_ bzero(&seg, sizeof(seg)); seg.gpa = gpa; error = ioctl(ctx->fd, VM_GET_MEMORY_SEG, &seg); - *ret_hpa = seg.hpa; *ret_len = seg.len; return (error); } Modified: projects/bhyve/sys/amd64/include/vmm_dev.h ============================================================================== --- projects/bhyve/sys/amd64/include/vmm_dev.h Thu Oct 4 01:37:12 2012 (r241177) +++ projects/bhyve/sys/amd64/include/vmm_dev.h Thu Oct 4 02:27:14 2012 (r241178) @@ -35,7 +35,6 @@ void vmmdev_cleanup(void); #endif struct vm_memory_segment { - vm_paddr_t hpa; /* out */ vm_paddr_t gpa; /* in */ size_t len; /* in */ }; Modified: projects/bhyve/sys/amd64/vmm/io/ppt.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/io/ppt.c Thu Oct 4 01:37:12 2012 (r241177) +++ projects/bhyve/sys/amd64/vmm/io/ppt.c Thu Oct 4 02:27:14 2012 (r241178) @@ -356,7 +356,6 @@ ppt_map_mmio(struct vm *vm, int bus, int if (error == 0) { seg->gpa = gpa; seg->len = len; - seg->hpa = hpa; } return (error); } Modified: projects/bhyve/sys/amd64/vmm/vmm.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/vmm.c Thu Oct 4 01:37:12 2012 (r241177) +++ projects/bhyve/sys/amd64/vmm/vmm.c Thu Oct 4 02:27:14 2012 (r241178) @@ -275,6 +275,28 @@ vm_create(const char *name) return (vm); } +static void +vm_free_mem_seg(struct vm *vm, struct vm_memory_segment *seg) +{ + size_t len; + vm_paddr_t hpa; + + len = 0; + while (len < seg->len) { + hpa = vm_gpa2hpa(vm, seg->gpa + len, PAGE_SIZE); + if (hpa == (vm_paddr_t)-1) { + panic("vm_free_mem_segs: cannot free hpa " + "associated with gpa 0x%016lx", seg->gpa + len); + } + + vmm_mem_free(hpa, PAGE_SIZE); + + len += PAGE_SIZE; + } + + bzero(seg, sizeof(struct vm_memory_segment)); +} + void vm_destroy(struct vm *vm) { @@ -283,7 +305,9 @@ vm_destroy(struct vm *vm) ppt_unassign_all(vm); for (i = 0; i < vm->num_mem_segs; i++) - vmm_mem_free(vm->mem_segs[i].hpa, vm->mem_segs[i].len); + vm_free_mem_seg(vm, &vm->mem_segs[i]); + + vm->num_mem_segs = 0; for (i = 0; i < VM_MAXCPU; i++) vcpu_cleanup(&vm->vcpu[i]); @@ -345,6 +369,7 @@ int vm_malloc(struct vm *vm, vm_paddr_t gpa, size_t len) { int error, available, allocated; + struct vm_memory_segment *seg; vm_paddr_t g, hpa; const boolean_t spok = TRUE; /* superpage mappings are ok */ @@ -380,22 +405,32 @@ vm_malloc(struct vm *vm, vm_paddr_t gpa, if (vm->num_mem_segs >= VM_MAX_MEMORY_SEGMENTS) return (E2BIG); - hpa = vmm_mem_alloc(len); - if (hpa == 0) - return (ENOMEM); - - error = VMMMAP_SET(vm->cookie, gpa, hpa, len, VM_MEMATTR_WRITE_BACK, - VM_PROT_ALL, spok); - if (error) { - vmm_mem_free(hpa, len); - return (error); + seg = &vm->mem_segs[vm->num_mem_segs]; + + seg->gpa = gpa; + seg->len = 0; + while (seg->len < len) { + hpa = vmm_mem_alloc(PAGE_SIZE); + if (hpa == 0) { + error = ENOMEM; + break; + } + + error = VMMMAP_SET(vm->cookie, gpa + seg->len, hpa, PAGE_SIZE, + VM_MEMATTR_WRITE_BACK, VM_PROT_ALL, spok); + if (error) + break; + + iommu_create_mapping(vm->iommu, gpa + seg->len, hpa, PAGE_SIZE); + + seg->len += PAGE_SIZE; } - iommu_create_mapping(vm->iommu, gpa, hpa, len); + if (seg->len != len) { + vm_free_mem_seg(vm, seg); + return (error); + } - vm->mem_segs[vm->num_mem_segs].gpa = gpa; - vm->mem_segs[vm->num_mem_segs].hpa = hpa; - vm->mem_segs[vm->num_mem_segs].len = len; vm->num_mem_segs++; return (0); Modified: projects/bhyve/sys/amd64/vmm/vmm_dev.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/vmm_dev.c Thu Oct 4 01:37:12 2012 (r241177) +++ projects/bhyve/sys/amd64/vmm/vmm_dev.c Thu Oct 4 02:27:14 2012 (r241178) @@ -299,7 +299,7 @@ vmmdev_ioctl(struct cdev *cdev, u_long c break; case VM_GET_MEMORY_SEG: seg = (struct vm_memory_segment *)data; - seg->hpa = seg->len = 0; + seg->len = 0; (void)vm_gpabase2memseg(sc->vm, seg->gpa, seg); error = 0; break; Modified: projects/bhyve/sys/amd64/vmm/vmm_mem.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/vmm_mem.c Thu Oct 4 01:37:12 2012 (r241177) +++ projects/bhyve/sys/amd64/vmm/vmm_mem.c Thu Oct 4 02:27:14 2012 (r241178) @@ -318,9 +318,9 @@ vmm_mem_alloc(size_t size) int i; vm_paddr_t addr; - if ((size & PDRMASK) != 0) { + if ((size & PAGE_MASK) != 0) { panic("vmm_mem_alloc: size 0x%0lx must be " - "aligned on a 0x%0x boundary\n", size, NBPDR); + "aligned on a 0x%0x boundary\n", size, PAGE_SIZE); } addr = 0; @@ -373,9 +373,9 @@ vmm_mem_free(vm_paddr_t base, size_t len { int i; - if ((base & PDRMASK) != 0 || (length & PDRMASK) != 0) { + if ((base & PAGE_MASK) != 0 || (length & PAGE_MASK) != 0) { panic("vmm_mem_free: base 0x%0lx and length 0x%0lx must be " - "aligned on a 0x%0x boundary\n", base, length, NBPDR); + "aligned on a 0x%0x boundary\n", base, length, PAGE_SIZE); } mtx_lock(&vmm_mem_mtx); From owner-svn-src-projects@FreeBSD.ORG Thu Oct 4 02:41:34 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DF5B9106566B; Thu, 4 Oct 2012 02:41:34 +0000 (UTC) (envelope-from peter@vps.rulingia.com) Received: from vps.rulingia.com (host-122-100-2-194.octopus.com.au [122.100.2.194]) by mx1.freebsd.org (Postfix) with ESMTP id D0DDA8FC08; Thu, 4 Oct 2012 02:41:33 +0000 (UTC) Received: from vps.rulingia.com (localhost [127.0.0.1]) by vps.rulingia.com (8.14.5/8.14.5) with ESMTP id q942fURf063282 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 4 Oct 2012 12:41:31 +1000 (EST) (envelope-from peter@vps.rulingia.com) Received: (from peter@localhost) by vps.rulingia.com (8.14.5/8.14.5/Submit) id q942fUna063281; Thu, 4 Oct 2012 12:41:30 +1000 (EST) (envelope-from peter) Date: Thu, 4 Oct 2012 12:41:30 +1000 From: Peter Jeremy To: Peter Grehan Message-ID: <20121004024130.GA63252@vps.rulingia.com> References: <201210030422.q934Mdt0060521@svn.freebsd.org> <20121003225011.GA61464@vps.rulingia.com> <506CC937.2010409@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <506CC937.2010409@freebsd.org> X-PGP-Key: http://www.rulingia.com/keys/peter.pgp User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r241153 - in projects/bhyve/sys/boot: common userboot/userboot X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Oct 2012 02:41:35 -0000 On 2012-Oct-03 17:24:39 -0600, Peter Grehan wrote: > How about if I just remove the '~4000 cells' text, and maybe put in >something like > > * FreeBSD loader default dictionary cells That would be fine as well. -- Peter Jeremy From owner-svn-src-projects@FreeBSD.ORG Thu Oct 4 03:07:06 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A4F46106564A; Thu, 4 Oct 2012 03:07:06 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 75A8D8FC0A; Thu, 4 Oct 2012 03:07:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q94376wD047613; Thu, 4 Oct 2012 03:07:06 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q94376M8047608; Thu, 4 Oct 2012 03:07:06 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201210040307.q94376M8047608@svn.freebsd.org> From: Neel Natu Date: Thu, 4 Oct 2012 03:07:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241179 - in projects/bhyve: lib/libvmmapi usr.sbin/vmmctl X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Oct 2012 03:07:06 -0000 Author: neel Date: Thu Oct 4 03:07:05 2012 New Revision: 241179 URL: http://svn.freebsd.org/changeset/base/241179 Log: The ioctl VM_GET_MEMORY_SEG is no longer able to return the host physical address associated with the guest memory segment. This is because there is no longer a 1:1 mapping between GPA and HPA. As a result 'vmmctl' can only display the guest physical address and the length of the lowmem and highmem segments. Modified: projects/bhyve/lib/libvmmapi/vmmapi.c projects/bhyve/lib/libvmmapi/vmmapi.h projects/bhyve/usr.sbin/vmmctl/vmmctl.c Modified: projects/bhyve/lib/libvmmapi/vmmapi.c ============================================================================== --- projects/bhyve/lib/libvmmapi/vmmapi.c Thu Oct 4 02:27:14 2012 (r241178) +++ projects/bhyve/lib/libvmmapi/vmmapi.c Thu Oct 4 03:07:05 2012 (r241179) @@ -143,8 +143,7 @@ vmm_get_mem_free(void) } int -vm_get_memory_seg(struct vmctx *ctx, vm_paddr_t gpa, - vm_paddr_t *ret_hpa, size_t *ret_len) +vm_get_memory_seg(struct vmctx *ctx, vm_paddr_t gpa, size_t *ret_len) { int error; struct vm_memory_segment seg; Modified: projects/bhyve/lib/libvmmapi/vmmapi.h ============================================================================== --- projects/bhyve/lib/libvmmapi/vmmapi.h Thu Oct 4 02:27:14 2012 (r241178) +++ projects/bhyve/lib/libvmmapi/vmmapi.h Thu Oct 4 03:07:05 2012 (r241179) @@ -37,8 +37,7 @@ struct vmctx *vm_open(const char *name); void vm_destroy(struct vmctx *ctx); size_t vmm_get_mem_total(void); size_t vmm_get_mem_free(void); -int vm_get_memory_seg(struct vmctx *ctx, vm_paddr_t gpa, - vm_paddr_t *ret_hpa, size_t *ret_len); +int vm_get_memory_seg(struct vmctx *ctx, vm_paddr_t gpa, size_t *ret_len); /* * Create a memory segment of 'len' bytes in the guest physical address space * at offset 'gpa'. Modified: projects/bhyve/usr.sbin/vmmctl/vmmctl.c ============================================================================== --- projects/bhyve/usr.sbin/vmmctl/vmmctl.c Thu Oct 4 02:27:14 2012 (r241178) +++ projects/bhyve/usr.sbin/vmmctl/vmmctl.c Thu Oct 4 03:07:05 2012 (r241179) @@ -387,7 +387,7 @@ main(int argc, char *argv[]) { char *vmname; int error, ch, vcpu; - vm_paddr_t hpa; + vm_paddr_t gpa; size_t len; struct vm_exit vmexit; uint64_t ctl, eptp, bm, addr, u64; @@ -829,15 +829,17 @@ main(int argc, char *argv[]) } if (!error && (get_lowmem || get_all)) { - error = vm_get_memory_seg(ctx, 0, &hpa, &len); + gpa = 0; + error = vm_get_memory_seg(ctx, gpa, &len); if (error == 0) - printf("lowmem\t\t0x%016lx/%ld\n", hpa, len); + printf("lowmem\t\t0x%016lx/%ld\n", gpa, len); } if (!error && (get_highmem || get_all)) { - error = vm_get_memory_seg(ctx, 4 * GB, &hpa, &len); + gpa = 4 * GB; + error = vm_get_memory_seg(ctx, gpa, &len); if (error == 0) - printf("highmem\t\t0x%016lx/%ld\n", hpa, len); + printf("highmem\t\t0x%016lx/%ld\n", gpa, len); } if (!error && (get_efer || get_all)) { From owner-svn-src-projects@FreeBSD.ORG Thu Oct 4 03:59:46 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2A963106566C; Thu, 4 Oct 2012 03:59:46 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 162228FC0A; Thu, 4 Oct 2012 03:59:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q943xjK3056777; Thu, 4 Oct 2012 03:59:45 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q943xjWd056774; Thu, 4 Oct 2012 03:59:45 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201210040359.q943xjWd056774@svn.freebsd.org> From: Peter Grehan Date: Thu, 4 Oct 2012 03:59:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241180 - projects/bhyve/sys/boot/common X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Oct 2012 03:59:46 -0000 Author: grehan Date: Thu Oct 4 03:59:45 2012 New Revision: 241180 URL: http://svn.freebsd.org/changeset/base/241180 Log: Clarify comment about default number of FICL dictionary cells. Suggested by: peterj Modified: projects/bhyve/sys/boot/common/interp_forth.c Modified: projects/bhyve/sys/boot/common/interp_forth.c ============================================================================== --- projects/bhyve/sys/boot/common/interp_forth.c Thu Oct 4 03:07:05 2012 (r241179) +++ projects/bhyve/sys/boot/common/interp_forth.c Thu Oct 4 03:59:45 2012 (r241180) @@ -51,7 +51,7 @@ extern char bootprog_rev[]; #define BF_PARSE 100 /* - * Default dictionary size, ~4000 cells + * FreeBSD loader default dictionary cells */ #ifndef BF_DICTSIZE #define BF_DICTSIZE 10000 From owner-svn-src-projects@FreeBSD.ORG Fri Oct 5 19:02:08 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4A29A1065670; Fri, 5 Oct 2012 19:02:08 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1C5EE8FC12; Fri, 5 Oct 2012 19:02:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q95J27RW024986; Fri, 5 Oct 2012 19:02:07 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q95J27ks024983; Fri, 5 Oct 2012 19:02:07 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201210051902.q95J27ks024983@svn.freebsd.org> From: Brooks Davis Date: Fri, 5 Oct 2012 19:02:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r241232 - projects/mtree/usr.sbin/makefs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Oct 2012 19:02:08 -0000 Author: brooks Date: Fri Oct 5 19:02:07 2012 New Revision: 241232 URL: http://svn.freebsd.org/changeset/base/241232 Log: Teach makefs about netbsd's mtree. This makes the -F option usable in practice. Modified: projects/mtree/usr.sbin/makefs/Makefile projects/mtree/usr.sbin/makefs/walk.c Modified: projects/mtree/usr.sbin/makefs/Makefile ============================================================================== --- projects/mtree/usr.sbin/makefs/Makefile Fri Oct 5 18:42:50 2012 (r241231) +++ projects/mtree/usr.sbin/makefs/Makefile Fri Oct 5 19:02:07 2012 (r241232) @@ -20,14 +20,22 @@ WARNS?= 2 CFLAGS+=-DHAVE_STRUCT_STAT_ST_FLAGS=1 CFLAGS+=-DHAVE_STRUCT_STAT_ST_GEN=1 -.PATH: ${.CURDIR}/../mtree -CFLAGS+=-I${.CURDIR}/../mtree +.PATH: ${.CURDIR}/../../contrib/mtree +CFLAGS+=-I${.CURDIR}/../../contrib/mtree SRCS+= misc.c spec.c +.PATH: ${.CURDIR}/../nmtree +CFLAGS+=-I${.CURDIR}/../nmtree +SRCS+= util.c + +.PATH: ${.CURDIR}/../../contrib/mknod +CFLAGS+=-I${.CURDIR}/../../contrib/mknod +SRCS+= pack_dev.c + .PATH: ${.CURDIR}/../../sys/ufs/ffs SRCS+= ffs_tables.c DPADD= ${LIBSBUF} -LDADD= -lsbuf +LDADD= -lsbuf -lutil .include Modified: projects/mtree/usr.sbin/makefs/walk.c ============================================================================== --- projects/mtree/usr.sbin/makefs/walk.c Fri Oct 5 18:42:50 2012 (r241231) +++ projects/mtree/usr.sbin/makefs/walk.c Fri Oct 5 19:02:07 2012 (r241232) @@ -305,7 +305,7 @@ apply_specfile(const char *specfile, con if ((fp = fopen(specfile, "r")) == NULL) err(1, "Can't open `%s'", specfile); TIMER_START(start); - root = mtree_readspec(fp); + root = spec(fp); TIMER_RESULTS(start, "spec"); if (fclose(fp) == EOF) err(1, "Can't close `%s'", specfile); @@ -321,33 +321,6 @@ apply_specfile(const char *specfile, con } -static u_int -nodetoino(u_int type) -{ - - switch (type) { - case F_BLOCK: - return S_IFBLK; - case F_CHAR: - return S_IFCHR; - case F_DIR: - return S_IFDIR; - case F_FIFO: - return S_IFIFO; - case F_FILE: - return S_IFREG; - case F_LINK: - return S_IFLNK; - case F_SOCK: - return S_IFSOCK; - default: - printf("unknown type %d", type); - abort(); - } - /* NOTREACHED */ -} - - static void apply_specdir(const char *dir, NODE *specnode, fsnode *dirnode, int speconly) {