Date: Sun, 20 Oct 2013 10:02:05 +0000 (UTC) From: Andre Oppermann <andre@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r256781 - in user/andre/mbuf_staging: amd64/amd64 amd64/conf amd64/include amd64/vmm amd64/vmm/intel arm/arm arm/freescale/imx arm/include arm/mv arm/versatile arm/xscale/i80321 arm/xsc... Message-ID: <201310201002.r9KA257c015538@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: andre Date: Sun Oct 20 10:02:04 2013 New Revision: 256781 URL: http://svnweb.freebsd.org/changeset/base/256781 Log: IFC @r256780. Added: user/andre/mbuf_staging/dev/altera/atse/ - copied from r256780, head/sys/dev/altera/atse/ user/andre/mbuf_staging/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu - copied unchanged from r256780, head/sys/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu user/andre/mbuf_staging/dev/cxgbe/firmware/t5fw-1.9.12.0.bin.uu - copied unchanged from r256780, head/sys/dev/cxgbe/firmware/t5fw-1.9.12.0.bin.uu user/andre/mbuf_staging/dev/cxgbe/iw_cxgbe/ - copied from r256780, head/sys/dev/cxgbe/iw_cxgbe/ user/andre/mbuf_staging/dev/etherswitch/arswitch/arswitch_9340.c - copied unchanged from r256780, head/sys/dev/etherswitch/arswitch/arswitch_9340.c user/andre/mbuf_staging/dev/etherswitch/arswitch/arswitch_9340.h - copied unchanged from r256780, head/sys/dev/etherswitch/arswitch/arswitch_9340.h user/andre/mbuf_staging/dev/random/dummy_rng.c - copied unchanged from r256780, head/sys/dev/random/dummy_rng.c user/andre/mbuf_staging/dev/random/live_entropy_sources.c - copied unchanged from r256780, head/sys/dev/random/live_entropy_sources.c user/andre/mbuf_staging/dev/random/live_entropy_sources.h - copied unchanged from r256780, head/sys/dev/random/live_entropy_sources.h user/andre/mbuf_staging/dev/random/rwfile.c - copied unchanged from r256780, head/sys/dev/random/rwfile.c user/andre/mbuf_staging/dev/random/rwfile.h - copied unchanged from r256780, head/sys/dev/random/rwfile.h user/andre/mbuf_staging/modules/cxgbe/iw_cxgbe/ - copied from r256780, head/sys/modules/cxgbe/iw_cxgbe/ user/andre/mbuf_staging/powerpc/pseries/phyp_llan.c - copied unchanged from r256780, head/sys/powerpc/pseries/phyp_llan.c Deleted: user/andre/mbuf_staging/contrib/rdma/core_priv.h user/andre/mbuf_staging/contrib/rdma/ib_addr.h user/andre/mbuf_staging/contrib/rdma/ib_cache.h user/andre/mbuf_staging/contrib/rdma/ib_cm.h user/andre/mbuf_staging/contrib/rdma/ib_fmr_pool.h user/andre/mbuf_staging/contrib/rdma/ib_mad.h user/andre/mbuf_staging/contrib/rdma/ib_marshall.h user/andre/mbuf_staging/contrib/rdma/ib_pack.h user/andre/mbuf_staging/contrib/rdma/ib_sa.h user/andre/mbuf_staging/contrib/rdma/ib_smi.h user/andre/mbuf_staging/contrib/rdma/ib_umem.h user/andre/mbuf_staging/contrib/rdma/ib_user_cm.h user/andre/mbuf_staging/contrib/rdma/ib_user_mad.h user/andre/mbuf_staging/contrib/rdma/ib_user_sa.h user/andre/mbuf_staging/contrib/rdma/ib_user_verbs.h user/andre/mbuf_staging/contrib/rdma/ib_verbs.h user/andre/mbuf_staging/contrib/rdma/iw_cm.h user/andre/mbuf_staging/contrib/rdma/rdma_addr.c user/andre/mbuf_staging/contrib/rdma/rdma_cache.c user/andre/mbuf_staging/contrib/rdma/rdma_cm.h user/andre/mbuf_staging/contrib/rdma/rdma_cm_ib.h user/andre/mbuf_staging/contrib/rdma/rdma_cma.c user/andre/mbuf_staging/contrib/rdma/rdma_device.c user/andre/mbuf_staging/contrib/rdma/rdma_iwcm.c user/andre/mbuf_staging/contrib/rdma/rdma_user_cm.h user/andre/mbuf_staging/contrib/rdma/rdma_verbs.c user/andre/mbuf_staging/contrib/rdma/types.h user/andre/mbuf_staging/dev/cxgbe/firmware/t4fw-1.8.11.0.bin.uu user/andre/mbuf_staging/dev/cxgbe/firmware/t5fw-1.8.22.0.bin.uu user/andre/mbuf_staging/dev/random/pseudo_rng.c user/andre/mbuf_staging/modules/rdma/addr/ user/andre/mbuf_staging/modules/rdma/cma/ user/andre/mbuf_staging/modules/rdma/core/ user/andre/mbuf_staging/modules/rdma/iwcm/ Modified: user/andre/mbuf_staging/amd64/amd64/pmap.c user/andre/mbuf_staging/amd64/conf/GENERIC user/andre/mbuf_staging/amd64/include/vmm.h (contents, props changed) user/andre/mbuf_staging/amd64/vmm/intel/vmx.c user/andre/mbuf_staging/amd64/vmm/intel/vmx.h user/andre/mbuf_staging/amd64/vmm/intel/vmx_controls.h user/andre/mbuf_staging/amd64/vmm/vmm_dev.c user/andre/mbuf_staging/amd64/vmm/x86.c user/andre/mbuf_staging/arm/arm/busdma_machdep-v6.c user/andre/mbuf_staging/arm/arm/cpufunc.c user/andre/mbuf_staging/arm/arm/cpufunc_asm_armv7.S user/andre/mbuf_staging/arm/arm/fusu.S user/andre/mbuf_staging/arm/arm/identcpu.c user/andre/mbuf_staging/arm/arm/locore.S user/andre/mbuf_staging/arm/arm/machdep.c user/andre/mbuf_staging/arm/arm/pl310.c user/andre/mbuf_staging/arm/arm/pmap-v6.c user/andre/mbuf_staging/arm/freescale/imx/imx51_ccm.c user/andre/mbuf_staging/arm/include/armreg.h user/andre/mbuf_staging/arm/include/pmap.h user/andre/mbuf_staging/arm/mv/common.c user/andre/mbuf_staging/arm/mv/mv_localbus.c user/andre/mbuf_staging/arm/mv/mvreg.h user/andre/mbuf_staging/arm/versatile/versatile_pci.c user/andre/mbuf_staging/arm/xscale/i80321/ep80219_machdep.c user/andre/mbuf_staging/arm/xscale/i80321/iq31244_machdep.c user/andre/mbuf_staging/arm/xscale/i8134x/crb_machdep.c user/andre/mbuf_staging/arm/xscale/ixp425/avila_machdep.c user/andre/mbuf_staging/arm/xscale/pxa/pxa_machdep.c user/andre/mbuf_staging/boot/forth/loader.conf user/andre/mbuf_staging/boot/i386/btx/btx/btx.S user/andre/mbuf_staging/cam/ata/ata_all.c user/andre/mbuf_staging/cam/ata/ata_all.h user/andre/mbuf_staging/cam/ata/ata_da.c user/andre/mbuf_staging/cam/ata/ata_pmp.c user/andre/mbuf_staging/cam/cam_periph.c user/andre/mbuf_staging/cam/cam_periph.h user/andre/mbuf_staging/cam/cam_xpt.c user/andre/mbuf_staging/cam/cam_xpt_periph.h user/andre/mbuf_staging/cam/scsi/scsi_all.c user/andre/mbuf_staging/cam/scsi/scsi_all.h user/andre/mbuf_staging/cam/scsi/scsi_cd.c user/andre/mbuf_staging/cam/scsi/scsi_ch.c user/andre/mbuf_staging/cam/scsi/scsi_da.c user/andre/mbuf_staging/cam/scsi/scsi_enc.c user/andre/mbuf_staging/cam/scsi/scsi_pass.c user/andre/mbuf_staging/cam/scsi/scsi_pt.c user/andre/mbuf_staging/cam/scsi/scsi_sa.c user/andre/mbuf_staging/cam/scsi/scsi_sg.c user/andre/mbuf_staging/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c user/andre/mbuf_staging/cddl/contrib/opensolaris/uts/common/sys/dtrace.h user/andre/mbuf_staging/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c user/andre/mbuf_staging/cddl/contrib/opensolaris/uts/powerpc/sys/fasttrap_isa.h user/andre/mbuf_staging/cddl/dev/dtrace/dtrace_sysctl.c user/andre/mbuf_staging/conf/NOTES user/andre/mbuf_staging/conf/files user/andre/mbuf_staging/conf/files.amd64 user/andre/mbuf_staging/conf/files.i386 user/andre/mbuf_staging/conf/files.powerpc user/andre/mbuf_staging/conf/kmod.mk user/andre/mbuf_staging/conf/newvers.sh user/andre/mbuf_staging/conf/options user/andre/mbuf_staging/contrib/dev/run/rt2870.fw.uu user/andre/mbuf_staging/contrib/rdma/krping/getopt.c user/andre/mbuf_staging/contrib/rdma/krping/krping.c user/andre/mbuf_staging/contrib/rdma/krping/krping.h user/andre/mbuf_staging/contrib/rdma/krping/krping_dev.c user/andre/mbuf_staging/dev/altera/sdcard/altera_sdcard.c user/andre/mbuf_staging/dev/altera/sdcard/altera_sdcard_io.c user/andre/mbuf_staging/dev/ata/ata-all.c user/andre/mbuf_staging/dev/ata/ata-card.c user/andre/mbuf_staging/dev/ath/if_ath.c user/andre/mbuf_staging/dev/ath/if_ath_tx.c user/andre/mbuf_staging/dev/bxe/bxe.c user/andre/mbuf_staging/dev/bxe/bxe_stats.c user/andre/mbuf_staging/dev/bxe/ecore_sp.h user/andre/mbuf_staging/dev/cfi/cfi_core.c user/andre/mbuf_staging/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c user/andre/mbuf_staging/dev/cxgbe/adapter.h user/andre/mbuf_staging/dev/cxgbe/common/common.h user/andre/mbuf_staging/dev/cxgbe/firmware/t4fw_cfg.txt user/andre/mbuf_staging/dev/cxgbe/firmware/t4fw_cfg_uwire.txt user/andre/mbuf_staging/dev/cxgbe/firmware/t4fw_interface.h user/andre/mbuf_staging/dev/cxgbe/firmware/t5fw_cfg.txt user/andre/mbuf_staging/dev/cxgbe/firmware/t5fw_cfg_uwire.txt user/andre/mbuf_staging/dev/cxgbe/t4_main.c user/andre/mbuf_staging/dev/cxgbe/t4_sge.c user/andre/mbuf_staging/dev/cxgbe/tom/t4_cpl_io.c user/andre/mbuf_staging/dev/drm2/radeon/radeon_drv.c user/andre/mbuf_staging/dev/etherswitch/arswitch/arswitch.c user/andre/mbuf_staging/dev/etherswitch/arswitch/arswitch_vlans.c user/andre/mbuf_staging/dev/etherswitch/arswitch/arswitchreg.h user/andre/mbuf_staging/dev/etherswitch/arswitch/arswitchvar.h user/andre/mbuf_staging/dev/glxsb/glxsb.c user/andre/mbuf_staging/dev/hifn/hifn7751.c user/andre/mbuf_staging/dev/hyperv/include/hyperv.h user/andre/mbuf_staging/dev/hyperv/netvsc/hv_net_vsc.h user/andre/mbuf_staging/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c user/andre/mbuf_staging/dev/hyperv/stordisengage/hv_ata_pci_disengage.c user/andre/mbuf_staging/dev/hyperv/vmbus/hv_channel.c user/andre/mbuf_staging/dev/hyperv/vmbus/hv_hv.c user/andre/mbuf_staging/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c user/andre/mbuf_staging/dev/isp/isp.c user/andre/mbuf_staging/dev/isp/isp_freebsd.c user/andre/mbuf_staging/dev/isp/isp_freebsd.h user/andre/mbuf_staging/dev/isp/ispvar.h user/andre/mbuf_staging/dev/random/harvest.c user/andre/mbuf_staging/dev/random/hash.h user/andre/mbuf_staging/dev/random/ivy.c user/andre/mbuf_staging/dev/random/nehemiah.c user/andre/mbuf_staging/dev/random/random_adaptors.c user/andre/mbuf_staging/dev/random/random_adaptors.h user/andre/mbuf_staging/dev/random/random_harvestq.c user/andre/mbuf_staging/dev/random/random_harvestq.h user/andre/mbuf_staging/dev/random/randomdev.c user/andre/mbuf_staging/dev/random/randomdev.h user/andre/mbuf_staging/dev/random/randomdev_soft.c user/andre/mbuf_staging/dev/random/randomdev_soft.h user/andre/mbuf_staging/dev/random/yarrow.c user/andre/mbuf_staging/dev/random/yarrow.h user/andre/mbuf_staging/dev/rndtest/rndtest.c user/andre/mbuf_staging/dev/safe/safe.c user/andre/mbuf_staging/dev/syscons/scmouse.c user/andre/mbuf_staging/dev/syscons/syscons.c user/andre/mbuf_staging/dev/ubsec/ubsec.c user/andre/mbuf_staging/dev/usb/controller/musb_otg.c user/andre/mbuf_staging/dev/usb/controller/musb_otg.h user/andre/mbuf_staging/dev/usb/controller/xhci.c user/andre/mbuf_staging/dev/usb/usbdevs user/andre/mbuf_staging/dev/usb/wlan/if_run.c user/andre/mbuf_staging/dev/usb/wlan/if_runreg.h user/andre/mbuf_staging/dev/vmware/vmxnet3/if_vmx.c user/andre/mbuf_staging/dev/vmware/vmxnet3/if_vmxvar.h user/andre/mbuf_staging/dev/xen/blkfront/blkfront.c user/andre/mbuf_staging/fs/devfs/devfs_vnops.c user/andre/mbuf_staging/geom/geom_dev.c user/andre/mbuf_staging/geom/geom_disk.c user/andre/mbuf_staging/geom/geom_io.c user/andre/mbuf_staging/geom/geom_slice.c user/andre/mbuf_staging/geom/label/g_label.c user/andre/mbuf_staging/geom/part/g_part.c user/andre/mbuf_staging/geom/part/g_part_apm.c user/andre/mbuf_staging/geom/part/g_part_bsd.c user/andre/mbuf_staging/geom/part/g_part_ebr.c user/andre/mbuf_staging/geom/part/g_part_gpt.c user/andre/mbuf_staging/geom/part/g_part_mbr.c user/andre/mbuf_staging/geom/part/g_part_pc98.c user/andre/mbuf_staging/geom/part/g_part_vtoc8.c user/andre/mbuf_staging/geom/raid/g_raid.c user/andre/mbuf_staging/geom/raid/g_raid.h user/andre/mbuf_staging/geom/raid/tr_concat.c user/andre/mbuf_staging/geom/raid/tr_raid0.c user/andre/mbuf_staging/geom/raid/tr_raid1.c user/andre/mbuf_staging/geom/raid/tr_raid1e.c user/andre/mbuf_staging/geom/raid/tr_raid5.c user/andre/mbuf_staging/i386/conf/GENERIC user/andre/mbuf_staging/kern/kern_exec.c user/andre/mbuf_staging/kern/kern_intr.c user/andre/mbuf_staging/kern/makesyscalls.sh user/andre/mbuf_staging/kern/subr_bus.c user/andre/mbuf_staging/kern/subr_devstat.c user/andre/mbuf_staging/kern/subr_taskqueue.c user/andre/mbuf_staging/kern/sys_generic.c user/andre/mbuf_staging/kern/vfs_bio.c user/andre/mbuf_staging/mips/atheros/ar71xx_chip.c user/andre/mbuf_staging/mips/atheros/ar71xx_cpudef.h user/andre/mbuf_staging/mips/atheros/ar71xx_machdep.c user/andre/mbuf_staging/mips/atheros/ar71xx_spi.c user/andre/mbuf_staging/mips/atheros/ar724x_chip.c user/andre/mbuf_staging/mips/atheros/ar91xx_chip.c user/andre/mbuf_staging/mips/atheros/ar933x_chip.c user/andre/mbuf_staging/mips/atheros/ar933xreg.h user/andre/mbuf_staging/mips/atheros/ar934x_chip.c user/andre/mbuf_staging/mips/atheros/ar934xreg.h user/andre/mbuf_staging/mips/atheros/if_arge.c user/andre/mbuf_staging/mips/atheros/if_argevar.h user/andre/mbuf_staging/mips/beri/beri_machdep.c user/andre/mbuf_staging/mips/beri/files.beri user/andre/mbuf_staging/mips/cavium/octeon_rnd.c user/andre/mbuf_staging/mips/conf/DB120 user/andre/mbuf_staging/mips/conf/DB120.hints user/andre/mbuf_staging/mips/include/asm.h user/andre/mbuf_staging/mips/include/pcb.h user/andre/mbuf_staging/mips/mips/bcopy.S user/andre/mbuf_staging/mips/mips/exception.S user/andre/mbuf_staging/mips/mips/fp.S user/andre/mbuf_staging/mips/mips/support.S user/andre/mbuf_staging/mips/mips/swtch.S user/andre/mbuf_staging/modules/Makefile user/andre/mbuf_staging/modules/cxgb/Makefile user/andre/mbuf_staging/modules/cxgbe/Makefile user/andre/mbuf_staging/modules/cxgbe/t4_firmware/Makefile user/andre/mbuf_staging/modules/cxgbe/t5_firmware/Makefile user/andre/mbuf_staging/modules/dtrace/Makefile user/andre/mbuf_staging/modules/dtrace/fasttrap/Makefile user/andre/mbuf_staging/modules/random/Makefile user/andre/mbuf_staging/modules/rdma/Makefile user/andre/mbuf_staging/net/flowtable.c user/andre/mbuf_staging/net/ieee8023ad_lacp.c user/andre/mbuf_staging/net/if.c user/andre/mbuf_staging/net/if_ethersubr.c user/andre/mbuf_staging/net/if_tun.c user/andre/mbuf_staging/net/if_var.h user/andre/mbuf_staging/net/radix.c user/andre/mbuf_staging/net/radix.h user/andre/mbuf_staging/net/route.c user/andre/mbuf_staging/net/rtsock.c user/andre/mbuf_staging/net80211/ieee80211_freebsd.c user/andre/mbuf_staging/netatalk/at_control.c user/andre/mbuf_staging/netgraph/ng_base.c user/andre/mbuf_staging/netgraph/ng_iface.c user/andre/mbuf_staging/netinet/in.c user/andre/mbuf_staging/netinet/in.h user/andre/mbuf_staging/netinet/in_var.h user/andre/mbuf_staging/netinet/ip_input.c user/andre/mbuf_staging/netinet/ip_output.c user/andre/mbuf_staging/netinet/sctp_constants.h user/andre/mbuf_staging/netinet/sctp_usrreq.c user/andre/mbuf_staging/netinet6/in6.c user/andre/mbuf_staging/netinet6/in6_var.h user/andre/mbuf_staging/netinet6/ip6_input.c user/andre/mbuf_staging/netinet6/ip6_output.c user/andre/mbuf_staging/netipx/ipx.c user/andre/mbuf_staging/netipx/ipx_if.h user/andre/mbuf_staging/ofed/drivers/net/mlx4/en_netdev.c user/andre/mbuf_staging/ofed/include/linux/gfp.h user/andre/mbuf_staging/powerpc/aim/interrupt.c user/andre/mbuf_staging/powerpc/aim/trap.c user/andre/mbuf_staging/powerpc/conf/GENERIC64 user/andre/mbuf_staging/powerpc/powermac/ata_kauai.c user/andre/mbuf_staging/powerpc/powermac/ata_macio.c user/andre/mbuf_staging/powerpc/pseries/phyp-hvcall.S user/andre/mbuf_staging/sys/counter.h user/andre/mbuf_staging/sys/devicestat.h user/andre/mbuf_staging/sys/param.h user/andre/mbuf_staging/sys/random.h user/andre/mbuf_staging/sys/systm.h user/andre/mbuf_staging/ufs/ufs/dinode.h user/andre/mbuf_staging/xen/xen-os.h Directory Properties: user/andre/mbuf_staging/ (props changed) user/andre/mbuf_staging/amd64/vmm/ (props changed) user/andre/mbuf_staging/boot/ (props changed) user/andre/mbuf_staging/cddl/contrib/opensolaris/ (props changed) user/andre/mbuf_staging/conf/ (props changed) user/andre/mbuf_staging/dev/hyperv/ (props changed) Modified: user/andre/mbuf_staging/amd64/amd64/pmap.c ============================================================================== --- user/andre/mbuf_staging/amd64/amd64/pmap.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/amd64/amd64/pmap.c Sun Oct 20 10:02:04 2013 (r256781) @@ -371,6 +371,8 @@ int pmap_pcid_enabled = 1; SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN, &pmap_pcid_enabled, 0, "Is TLB Context ID enabled ?"); int invpcid_works = 0; +SYSCTL_INT(_vm_pmap, OID_AUTO, invpcid_works, CTLFLAG_RD, &invpcid_works, 0, + "Is the invpcid instruction available ?"); static int pmap_pcid_save_cnt_proc(SYSCTL_HANDLER_ARGS) Modified: user/andre/mbuf_staging/amd64/conf/GENERIC ============================================================================== --- user/andre/mbuf_staging/amd64/conf/GENERIC Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/amd64/conf/GENERIC Sun Oct 20 10:02:04 2013 (r256781) @@ -72,7 +72,6 @@ options KDTRACE_FRAME # Ensure frames options KDTRACE_HOOKS # Kernel DTrace hooks options DDB_CTF # Kernel ELF linker loads CTF data options INCLUDE_CONFIG_FILE # Include this file in kernel -options XENHVM # Include Xen support # Debugging support. Always need this: options KDB # Enable kernel debugger support. @@ -345,8 +344,10 @@ device virtio_balloon # VirtIO Memory B # HyperV drivers device hyperv # HyperV drivers -# Xen support -device xenpci # Generic Xen bus +# Xen HVM Guest Optimizations +# NOTE: XENHVM depends on xenpci. They must be added or removed together. +options XENHVM # Xen HVM kernel infrastructure +device xenpci # Xen HVM Hypervisor services driver # VMware support device vmx # VMware VMXNET3 Ethernet Modified: user/andre/mbuf_staging/amd64/include/vmm.h ============================================================================== --- user/andre/mbuf_staging/amd64/include/vmm.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/amd64/include/vmm.h Sun Oct 20 10:02:04 2013 (r256781) @@ -223,6 +223,7 @@ enum vm_cap_type { VM_CAP_MTRAP_EXIT, VM_CAP_PAUSE_EXIT, VM_CAP_UNRESTRICTED_GUEST, + VM_CAP_ENABLE_INVPCID, VM_CAP_MAX }; Modified: user/andre/mbuf_staging/amd64/vmm/intel/vmx.c ============================================================================== --- user/andre/mbuf_staging/amd64/vmm/intel/vmx.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/amd64/vmm/intel/vmx.c Sun Oct 20 10:02:04 2013 (r256781) @@ -164,6 +164,7 @@ static int cap_halt_exit; static int cap_pause_exit; static int cap_unrestricted_guest; static int cap_monitor_trap; +static int cap_invpcid; static struct unrhdr *vpid_unr; static u_int vpid_alloc_failed; @@ -660,6 +661,11 @@ vmx_init(void) PROCBASED2_UNRESTRICTED_GUEST, 0, &tmp) == 0); + cap_invpcid = (vmx_set_ctlreg(MSR_VMX_PROCBASED_CTLS2, + MSR_VMX_PROCBASED_CTLS2, PROCBASED2_ENABLE_INVPCID, 0, + &tmp) == 0); + + /* Initialize EPT */ error = ept_init(); if (error) { @@ -828,6 +834,7 @@ vmx_vminit(struct vm *vm, pmap_t pmap) vmx->cap[i].set = 0; vmx->cap[i].proc_ctls = procbased_ctls; + vmx->cap[i].proc_ctls2 = procbased_ctls2; vmx->state[i].lastcpu = -1; vmx->state[i].vpid = vpid[i]; @@ -1932,6 +1939,10 @@ vmx_getcap(void *arg, int vcpu, int type if (cap_unrestricted_guest) ret = 0; break; + case VM_CAP_ENABLE_INVPCID: + if (cap_invpcid) + ret = 0; + break; default: break; } @@ -1988,11 +1999,21 @@ vmx_setcap(void *arg, int vcpu, int type case VM_CAP_UNRESTRICTED_GUEST: if (cap_unrestricted_guest) { retval = 0; - baseval = procbased_ctls2; + pptr = &vmx->cap[vcpu].proc_ctls2; + baseval = *pptr; flag = PROCBASED2_UNRESTRICTED_GUEST; reg = VMCS_SEC_PROC_BASED_CTLS; } break; + case VM_CAP_ENABLE_INVPCID: + if (cap_invpcid) { + retval = 0; + pptr = &vmx->cap[vcpu].proc_ctls2; + baseval = *pptr; + flag = PROCBASED2_ENABLE_INVPCID; + reg = VMCS_SEC_PROC_BASED_CTLS; + } + break; default: break; } Modified: user/andre/mbuf_staging/amd64/vmm/intel/vmx.h ============================================================================== --- user/andre/mbuf_staging/amd64/vmm/intel/vmx.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/amd64/vmm/intel/vmx.h Sun Oct 20 10:02:04 2013 (r256781) @@ -84,6 +84,7 @@ struct vmxctx { struct vmxcap { int set; uint32_t proc_ctls; + uint32_t proc_ctls2; }; struct vmxstate { Modified: user/andre/mbuf_staging/amd64/vmm/intel/vmx_controls.h ============================================================================== --- user/andre/mbuf_staging/amd64/vmm/intel/vmx_controls.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/amd64/vmm/intel/vmx_controls.h Sun Oct 20 10:02:04 2013 (r256781) @@ -68,6 +68,7 @@ #define PROCBASED2_WBINVD_EXITING (1 << 6) #define PROCBASED2_UNRESTRICTED_GUEST (1 << 7) #define PROCBASED2_PAUSE_LOOP_EXITING (1 << 10) +#define PROCBASED2_ENABLE_INVPCID (1 << 12) /* VM Exit Controls */ #define VM_EXIT_SAVE_DEBUG_CONTROLS (1 << 2) Modified: user/andre/mbuf_staging/amd64/vmm/vmm_dev.c ============================================================================== --- user/andre/mbuf_staging/amd64/vmm/vmm_dev.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/amd64/vmm/vmm_dev.c Sun Oct 20 10:02:04 2013 (r256781) @@ -60,7 +60,10 @@ struct vmmdev_softc { struct vm *vm; /* vm instance cookie */ struct cdev *cdev; SLIST_ENTRY(vmmdev_softc) link; + int flags; }; +#define VSC_LINKED 0x01 + static SLIST_HEAD(, vmmdev_softc) head; static struct mtx vmmdev_mtx; @@ -104,7 +107,6 @@ vmmdev_rw(struct cdev *cdev, struct uio static char zerobuf[PAGE_SIZE]; error = 0; - mtx_lock(&vmmdev_mtx); sc = vmmdev_lookup2(cdev); if (sc == NULL) error = ENXIO; @@ -134,8 +136,6 @@ vmmdev_rw(struct cdev *cdev, struct uio vm_gpa_release(cookie); } } - - mtx_unlock(&vmmdev_mtx); return (error); } @@ -379,34 +379,28 @@ vmmdev_mmap_single(struct cdev *cdev, vm int error; struct vmmdev_softc *sc; - mtx_lock(&vmmdev_mtx); - sc = vmmdev_lookup2(cdev); if (sc != NULL && (nprot & PROT_EXEC) == 0) error = vm_get_memobj(sc->vm, *offset, size, offset, object); else error = EINVAL; - mtx_unlock(&vmmdev_mtx); - return (error); } static void -vmmdev_destroy(struct vmmdev_softc *sc, boolean_t unlink) +vmmdev_destroy(void *arg) { - /* - * XXX must stop virtual machine instances that may be still - * running and cleanup their state. - */ - if (sc->cdev) + struct vmmdev_softc *sc = arg; + + if (sc->cdev != NULL) destroy_dev(sc->cdev); - if (sc->vm) + if (sc->vm != NULL) vm_destroy(sc->vm); - if (unlink) { + if ((sc->flags & VSC_LINKED) != 0) { mtx_lock(&vmmdev_mtx); SLIST_REMOVE(&head, sc, vmmdev_softc, link); mtx_unlock(&vmmdev_mtx); @@ -421,27 +415,38 @@ sysctl_vmm_destroy(SYSCTL_HANDLER_ARGS) int error; char buf[VM_MAX_NAMELEN]; struct vmmdev_softc *sc; + struct cdev *cdev; strlcpy(buf, "beavis", sizeof(buf)); error = sysctl_handle_string(oidp, buf, sizeof(buf), req); if (error != 0 || req->newptr == NULL) return (error); - /* - * XXX TODO if any process has this device open then fail - */ - mtx_lock(&vmmdev_mtx); sc = vmmdev_lookup(buf); - if (sc == NULL) { + if (sc == NULL || sc->cdev == NULL) { mtx_unlock(&vmmdev_mtx); return (EINVAL); } - sc->cdev->si_drv1 = NULL; + /* + * The 'cdev' will be destroyed asynchronously when 'si_threadcount' + * goes down to 0 so we should not do it again in the callback. + */ + cdev = sc->cdev; + sc->cdev = NULL; mtx_unlock(&vmmdev_mtx); - vmmdev_destroy(sc, TRUE); + /* + * Schedule the 'cdev' to be destroyed: + * + * - any new operations on this 'cdev' will return an error (ENXIO). + * + * - when the 'si_threadcount' dwindles down to zero the 'cdev' will + * be destroyed and the callback will be invoked in a taskqueue + * context. + */ + destroy_dev_sched_cb(cdev, vmmdev_destroy, sc); return (0); } @@ -462,6 +467,7 @@ sysctl_vmm_create(SYSCTL_HANDLER_ARGS) { int error; struct vm *vm; + struct cdev *cdev; struct vmmdev_softc *sc, *sc2; char buf[VM_MAX_NAMELEN]; @@ -489,22 +495,28 @@ sysctl_vmm_create(SYSCTL_HANDLER_ARGS) */ mtx_lock(&vmmdev_mtx); sc2 = vmmdev_lookup(buf); - if (sc2 == NULL) + if (sc2 == NULL) { SLIST_INSERT_HEAD(&head, sc, link); + sc->flags |= VSC_LINKED; + } mtx_unlock(&vmmdev_mtx); if (sc2 != NULL) { - vmmdev_destroy(sc, FALSE); + vmmdev_destroy(sc); return (EEXIST); } - error = make_dev_p(MAKEDEV_CHECKNAME, &sc->cdev, &vmmdevsw, NULL, + error = make_dev_p(MAKEDEV_CHECKNAME, &cdev, &vmmdevsw, NULL, UID_ROOT, GID_WHEEL, 0600, "vmm/%s", buf); if (error != 0) { - vmmdev_destroy(sc, TRUE); + vmmdev_destroy(sc); return (error); } + + mtx_lock(&vmmdev_mtx); + sc->cdev = cdev; sc->cdev->si_drv1 = sc; + mtx_unlock(&vmmdev_mtx); return (0); } Modified: user/andre/mbuf_staging/amd64/vmm/x86.c ============================================================================== --- user/andre/mbuf_staging/amd64/vmm/x86.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/amd64/vmm/x86.c Sun Oct 20 10:02:04 2013 (r256781) @@ -53,7 +53,7 @@ int x86_emulate_cpuid(struct vm *vm, int vcpu_id, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { - int error; + int error, enable_invpcid; unsigned int func, regs[4]; enum x2apic_state x2apic_state; @@ -202,8 +202,22 @@ x86_emulate_cpuid(struct vm *vm, int vcp regs[0] |= 0x04008000; break; - case CPUID_0000_0006: case CPUID_0000_0007: + regs[0] = 0; + regs[1] = 0; + regs[2] = 0; + regs[3] = 0; + + /* leaf 0 */ + if (*ecx == 0) { + error = vm_get_capability(vm, vcpu_id, + VM_CAP_ENABLE_INVPCID, &enable_invpcid); + if (error == 0 && enable_invpcid) + regs[1] |= CPUID_STDEXT_INVPCID; + } + break; + + case CPUID_0000_0006: case CPUID_0000_000A: case CPUID_0000_000D: /* Modified: user/andre/mbuf_staging/arm/arm/busdma_machdep-v6.c ============================================================================== --- user/andre/mbuf_staging/arm/arm/busdma_machdep-v6.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/busdma_machdep-v6.c Sun Oct 20 10:02:04 2013 (r256781) @@ -425,14 +425,21 @@ bus_dma_tag_create(bus_dma_tag_t parent, if (_bus_dma_can_bounce(newtag->lowaddr, newtag->highaddr) || newtag->alignment > 1) newtag->flags |= BUS_DMA_COULD_BOUNCE; - else - maxsize = 2; /* Need at most 2 bounce pages for unaligned access on cache line boundaries */ + /* + * Any request can auto-bounce due to cacheline alignment, in addition + * to any alignment or boundary specifications in the tag, so if the + * ALLOCNOW flag is set, there's always work to do. + */ if ((flags & BUS_DMA_ALLOCNOW) != 0) { struct bounce_zone *bz; - - /* Must bounce */ - + /* + * Round size up to a full page, and add one more page because + * there can always be one more boundary crossing than the + * number of pages in a transfer. + */ + maxsize = roundup2(maxsize, PAGE_SIZE) + PAGE_SIZE; + if ((error = alloc_bounce_zone(newtag)) != 0) { free(newtag, M_DEVBUF); return (error); @@ -518,20 +525,22 @@ static int allocate_bz_and_pages(bus_dma STAILQ_INIT(&(mapp->bpages)); /* - * Attempt to add pages to our pool on a per-instance - * basis up to a sane limit. + * Attempt to add pages to our pool on a per-instance basis up to a sane + * limit. Even if the tag isn't flagged as COULD_BOUNCE due to + * alignment and boundary constraints, it could still auto-bounce due to + * cacheline alignment, which requires at most two bounce pages. */ if (dmat->flags & BUS_DMA_COULD_BOUNCE) maxpages = MAX_BPAGES; else - maxpages = 2 * bz->map_count; /* Only need at most 2 pages for buffers unaligned on cache line boundaries */ + maxpages = 2 * bz->map_count; if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 || (bz->map_count > 0 && bz->total_bpages < maxpages)) { int pages; - pages = MAX(atop(dmat->maxsize), 1); + pages = atop(roundup2(dmat->maxsize, PAGE_SIZE)) + 1; pages = MIN(maxpages - bz->total_bpages, pages); - pages = MAX(pages, 1); + pages = MAX(pages, 2); if (alloc_bounce_pages(dmat, pages) < pages) return (ENOMEM); @@ -1273,7 +1282,12 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus } break; + case BUS_DMASYNC_POSTREAD: + case BUS_DMASYNC_POSTWRITE: + case BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE: + break; default: + panic("unsupported combination of sync operations: 0x%08x\n", op); break; } } Modified: user/andre/mbuf_staging/arm/arm/cpufunc.c ============================================================================== --- user/andre/mbuf_staging/arm/arm/cpufunc.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/cpufunc.c Sun Oct 20 10:02:04 2013 (r256781) @@ -1476,7 +1476,8 @@ set_cpufuncs() } #endif /* CPU_ARM1136 || CPU_ARM1176 */ #ifdef CPU_CORTEXA - if (cputype == CPU_ID_CORTEXA7 || + if (cputype == CPU_ID_CORTEXA5 || + cputype == CPU_ID_CORTEXA7 || cputype == CPU_ID_CORTEXA8R1 || cputype == CPU_ID_CORTEXA8R2 || cputype == CPU_ID_CORTEXA8R3 || Modified: user/andre/mbuf_staging/arm/arm/cpufunc_asm_armv7.S ============================================================================== --- user/andre/mbuf_staging/arm/arm/cpufunc_asm_armv7.S Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/cpufunc_asm_armv7.S Sun Oct 20 10:02:04 2013 (r256781) @@ -57,9 +57,9 @@ __FBSDID("$FreeBSD$"); #define PT_OUTER_WBWA (1 << 3) #ifdef SMP -#define PT_ATTR (PT_S|PT_INNER_WT|PT_OUTER_WT|PT_NOS) +#define PT_ATTR (PT_S|PT_INNER_WBWA|PT_OUTER_WBWA|PT_NOS) #else -#define PT_ATTR (PT_INNER_WT|PT_OUTER_WT) +#define PT_ATTR (PT_INNER_WBWA|PT_OUTER_WBWA) #endif ENTRY(armv7_setttb) @@ -98,7 +98,7 @@ ENTRY(armv7_tlb_flushID_SE) ldr r1, .Lpage_mask bic r0, r0, r1 #ifdef SMP - mcr p15, 0, r0, c8, c3, 1 /* flush D tlb single entry Inner Shareable*/ + mcr p15, 0, r0, c8, c3, 3 /* flush D tlb single entry Inner Shareable*/ mcr p15, 0, r0, c7, c1, 6 /* flush BTB Inner Shareable */ #else mcr p15, 0, r0, c8, c7, 1 /* flush D tlb single entry */ Modified: user/andre/mbuf_staging/arm/arm/fusu.S ============================================================================== --- user/andre/mbuf_staging/arm/arm/fusu.S Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/fusu.S Sun Oct 20 10:02:04 2013 (r256781) @@ -67,11 +67,27 @@ ENTRY(casuword) stmfd sp!, {r4, r5} adr r4, .Lcasuwordfault str r4, [r3, #PCB_ONFAULT] +#ifdef _ARM_ARCH_6 +1: + cmp r0, #KERNBASE + mvnhs r0, #0 + bhs 2f + + ldrex r5, [r0] + cmp r5, r1 + movne r0, r5 + bne 2f + strex r5, r2, [r0] + cmp r5, #0 + bne 1b +#else ldrt r5, [r0] cmp r5, r1 movne r0, r5 streqt r2, [r0] +#endif moveq r0, r1 +2: ldmfd sp!, {r4, r5} mov r1, #0x00000000 str r1, [r3, #PCB_ONFAULT] Modified: user/andre/mbuf_staging/arm/arm/identcpu.c ============================================================================== --- user/andre/mbuf_staging/arm/arm/identcpu.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/identcpu.c Sun Oct 20 10:02:04 2013 (r256781) @@ -236,6 +236,8 @@ const struct cpuidtab cpuids[] = { { CPU_ID_ARM1026EJS, CPU_CLASS_ARM10EJ, "ARM1026EJ-S", generic_steppings }, + { CPU_ID_CORTEXA5, CPU_CLASS_CORTEXA, "Cortex A5", + generic_steppings }, { CPU_ID_CORTEXA7, CPU_CLASS_CORTEXA, "Cortex A7", generic_steppings }, { CPU_ID_CORTEXA8R1, CPU_CLASS_CORTEXA, "Cortex A8-r1", Modified: user/andre/mbuf_staging/arm/arm/locore.S ============================================================================== --- user/andre/mbuf_staging/arm/arm/locore.S Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/locore.S Sun Oct 20 10:02:04 2013 (r256781) @@ -187,7 +187,7 @@ Lunmapped: mrc p15, 0, r0, c1, c0, 0 #ifdef _ARM_ARCH_6 orr r0, r0, #(CPU_CONTROL_V6_EXTPAGE | CPU_CONTROL_UNAL_ENABLE) - orr r2, r2, #(CPU_CONTROL_AFLT_ENABLE) + orr r0, r0, #(CPU_CONTROL_AFLT_ENABLE) orr r0, r0, #(CPU_CONTROL_AF_ENABLE) #endif orr r0, r0, #(CPU_CONTROL_MMU_ENABLE) Modified: user/andre/mbuf_staging/arm/arm/machdep.c ============================================================================== --- user/andre/mbuf_staging/arm/arm/machdep.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/machdep.c Sun Oct 20 10:02:04 2013 (r256781) @@ -1169,11 +1169,15 @@ physmap_init(struct mem_region *availmem */ if (availmem_regions[i].mr_start > 0 || availmem_regions[i].mr_size > PAGE_SIZE) { + vm_size_t size; phys_avail[j] = availmem_regions[i].mr_start; - if (phys_avail[j] == 0) + + size = availmem_regions[i].mr_size; + if (phys_avail[j] == 0) { phys_avail[j] += PAGE_SIZE; - phys_avail[j + 1] = availmem_regions[i].mr_start + - availmem_regions[i].mr_size; + size -= PAGE_SIZE; + } + phys_avail[j + 1] = availmem_regions[i].mr_start + size; } else j -= 2; } Modified: user/andre/mbuf_staging/arm/arm/pl310.c ============================================================================== --- user/andre/mbuf_staging/arm/arm/pl310.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/pl310.c Sun Oct 20 10:02:04 2013 (r256781) @@ -341,8 +341,13 @@ pl310_attach(device_t dev) ctrl_value = pl310_read4(sc, PL310_CTRL); if (sc->sc_enabled && !(ctrl_value & CTRL_ENABLED)) { + /* invalidate current content */ + pl310_write4(pl310_softc, PL310_INV_WAY, 0xffff); + pl310_wait_background_op(PL310_INV_WAY, 0xffff); + /* Enable the L2 cache if disabled */ platform_pl310_write_ctrl(sc, CTRL_ENABLED); + device_printf(dev, "L2 Cache enabled\n"); } if (!sc->sc_enabled && (ctrl_value & CTRL_ENABLED)) { @@ -375,6 +380,7 @@ pl310_attach(device_t dev) EVENT_COUNTER_CTRL_C0_RESET | EVENT_COUNTER_CTRL_C1_RESET); + device_printf(dev, "L2 Cache disabled\n"); } if (sc->sc_enabled) Modified: user/andre/mbuf_staging/arm/arm/pmap-v6.c ============================================================================== --- user/andre/mbuf_staging/arm/arm/pmap-v6.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/arm/pmap-v6.c Sun Oct 20 10:02:04 2013 (r256781) @@ -2441,6 +2441,8 @@ vm_paddr_t pmap_kextract(vm_offset_t va) { + if (kernel_vm_end == 0) + return (0); return (pmap_extract_locked(kernel_pmap, va)); } @@ -3310,7 +3312,7 @@ pmap_extract_locked(pmap_t pmap, vm_offs vm_paddr_t pa; u_int l1idx; - if (pmap != kernel_pmap) + if (kernel_vm_end != 0 && pmap != kernel_pmap) PMAP_ASSERT_LOCKED(pmap); l1idx = L1_IDX(va); l1pd = pmap->pm_l1->l1_kva[l1idx]; Modified: user/andre/mbuf_staging/arm/freescale/imx/imx51_ccm.c ============================================================================== --- user/andre/mbuf_staging/arm/freescale/imx/imx51_ccm.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/freescale/imx/imx51_ccm.c Sun Oct 20 10:02:04 2013 (r256781) @@ -278,8 +278,8 @@ imx51_get_clock(enum imx51_clock clk) case IMX51CLK_MAIN_BUS_CLK: freq = imx51_get_clock(IMX51CLK_MAIN_BUS_CLK_SRC); cdcr = bus_read_4(ccm_softc->res[0], CCMC_CDCR); - return freq / (cdcr & CDCR_PERIPH_CLK_DVFS_PODF_MASK) >> - CDCR_PERIPH_CLK_DVFS_PODF_SHIFT; + return freq / (1 + ((cdcr & CDCR_PERIPH_CLK_DVFS_PODF_MASK) >> + CDCR_PERIPH_CLK_DVFS_PODF_SHIFT)); case IMX51CLK_AHB_CLK_ROOT: freq = imx51_get_clock(IMX51CLK_MAIN_BUS_CLK); cbcdr = bus_read_4(ccm_softc->res[0], CCMC_CBCDR); Modified: user/andre/mbuf_staging/arm/include/armreg.h ============================================================================== --- user/andre/mbuf_staging/arm/include/armreg.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/include/armreg.h Sun Oct 20 10:02:04 2013 (r256781) @@ -147,6 +147,7 @@ #define CPU_ID_ARM1136JS 0x4107b360 #define CPU_ID_ARM1136JSR1 0x4117b360 #define CPU_ID_ARM1176JZS 0x410fb760 +#define CPU_ID_CORTEXA5 0x410fc050 #define CPU_ID_CORTEXA7 0x410fc070 #define CPU_ID_CORTEXA8R1 0x411fc080 #define CPU_ID_CORTEXA8R2 0x412fc080 Modified: user/andre/mbuf_staging/arm/include/pmap.h ============================================================================== --- user/andre/mbuf_staging/arm/include/pmap.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/include/pmap.h Sun Oct 20 10:02:04 2013 (r256781) @@ -63,7 +63,7 @@ #endif #define PTE_CACHE 6 #define PTE_DEVICE 2 -#define PTE_PAGETABLE 4 +#define PTE_PAGETABLE 6 #else #define PTE_NOCACHE 1 #define PTE_CACHE 2 @@ -489,7 +489,7 @@ extern int pmap_needs_pte_sync; #if (ARM_MMU_SA1 == 1) && (ARM_NMMUS == 1) #define PMAP_NEEDS_PTE_SYNC 1 #define PMAP_INCLUDE_PTE_SYNC -#elif defined(CPU_XSCALE_81342) +#elif defined(CPU_XSCALE_81342) || defined(ARM_ARCH_7) || defined(ARM_ARCH_7A) #define PMAP_NEEDS_PTE_SYNC 1 #define PMAP_INCLUDE_PTE_SYNC #elif (ARM_MMU_SA1 == 0) @@ -559,11 +559,18 @@ extern int pmap_needs_pte_sync; #define PMAP_INCLUDE_PTE_SYNC #endif +#ifdef ARM_L2_PIPT +#define _sync_l2(pte, size) cpu_l2cache_wb_range(vtophys(pte), size) +#else +#define _sync_l2(pte, size) cpu_l2cache_wb_range(pte, size) +#endif + #define PTE_SYNC(pte) \ do { \ if (PMAP_NEEDS_PTE_SYNC) { \ cpu_dcache_wb_range((vm_offset_t)(pte), sizeof(pt_entry_t));\ - cpu_l2cache_wb_range((vm_offset_t)(pte), sizeof(pt_entry_t));\ + cpu_drain_writebuf(); \ + _sync_l2((vm_offset_t)(pte), sizeof(pt_entry_t));\ } else \ cpu_drain_writebuf(); \ } while (/*CONSTCOND*/0) @@ -573,7 +580,8 @@ do { \ if (PMAP_NEEDS_PTE_SYNC) { \ cpu_dcache_wb_range((vm_offset_t)(pte), \ (cnt) << 2); /* * sizeof(pt_entry_t) */ \ - cpu_l2cache_wb_range((vm_offset_t)(pte), \ + cpu_drain_writebuf(); \ + _sync_l2((vm_offset_t)(pte), \ (cnt) << 2); /* * sizeof(pt_entry_t) */ \ } else \ cpu_drain_writebuf(); \ Modified: user/andre/mbuf_staging/arm/mv/common.c ============================================================================== --- user/andre/mbuf_staging/arm/mv/common.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/mv/common.c Sun Oct 20 10:02:04 2013 (r256781) @@ -153,8 +153,11 @@ struct fdt_pm_mask_entry fdt_pm_mask_tab static __inline int pm_is_disabled(uint32_t mask) { - +#if defined(SOC_MV_KIRKWOOD) + return (soc_power_ctrl_get(mask) == mask); +#else return (soc_power_ctrl_get(mask) == mask ? 0 : 1); +#endif } /* @@ -221,7 +224,16 @@ fdt_pm(phandle_t node) continue; compat = fdt_is_compatible(node, fdt_pm_mask_table[i].compat); - +#if defined(SOC_MV_KIRKWOOD) + if (compat && (cpu_pm_ctrl & fdt_pm_mask_table[i].mask)) { + dev_mask |= (1 << i); + ena = 0; + break; + } else if (compat) { + dev_mask |= (1 << i); + break; + } +#else if (compat && (~cpu_pm_ctrl & fdt_pm_mask_table[i].mask)) { dev_mask |= (1 << i); ena = 0; @@ -230,6 +242,7 @@ fdt_pm(phandle_t node) dev_mask |= (1 << i); break; } +#endif } return (ena); Modified: user/andre/mbuf_staging/arm/mv/mv_localbus.c ============================================================================== --- user/andre/mbuf_staging/arm/mv/mv_localbus.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/mv/mv_localbus.c Sun Oct 20 10:02:04 2013 (r256781) @@ -431,7 +431,7 @@ fdt_localbus_devmap(phandle_t dt_node, s bank = fdt_data_get((void *)rangesptr, 1); rangesptr += 1; - if (bank < 0 || bank > MV_LOCALBUS_MAX_BANKS) { + if (bank > MV_LOCALBUS_MAX_BANKS) { /* Bank out of range */ rangesptr += ((addr_cells - 1) + par_addr_cells + size_cells); Modified: user/andre/mbuf_staging/arm/mv/mvreg.h ============================================================================== --- user/andre/mbuf_staging/arm/mv/mvreg.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/mv/mvreg.h Sun Oct 20 10:02:04 2013 (r256781) @@ -142,7 +142,11 @@ /* * Power Control */ +#if defined(SOC_MV_KIRKWOOD) +#define CPU_PM_CTRL 0x18 +#else #define CPU_PM_CTRL 0x1C +#endif #define CPU_PM_CTRL_NONE 0 #define CPU_PM_CTRL_ALL ~0x0 Modified: user/andre/mbuf_staging/arm/versatile/versatile_pci.c ============================================================================== --- user/andre/mbuf_staging/arm/versatile/versatile_pci.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/versatile/versatile_pci.c Sun Oct 20 10:02:04 2013 (r256781) @@ -360,6 +360,9 @@ versatile_pci_activate_resource(device_t res = (BUS_ACTIVATE_RESOURCE(device_get_parent(bus), child, type, rid, r)); break; + default: + res = ENXIO; + break; } return (res); Modified: user/andre/mbuf_staging/arm/xscale/i80321/ep80219_machdep.c ============================================================================== --- user/andre/mbuf_staging/arm/xscale/i80321/ep80219_machdep.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/xscale/i80321/ep80219_machdep.c Sun Oct 20 10:02:04 2013 (r256781) @@ -365,7 +365,7 @@ initarm(struct arm_boot_params *abp) dump_avail[2] = 0; dump_avail[3] = 0; - vm_max_kernel_address = 0xd0000000; + vm_max_kernel_address = 0xe0000000; pmap_bootstrap(pmap_curmaxkvaddr, &kernel_l1pt); msgbufp = (void*)msgbufpv.pv_va; msgbufinit(msgbufp, msgbufsize); Modified: user/andre/mbuf_staging/arm/xscale/i80321/iq31244_machdep.c ============================================================================== --- user/andre/mbuf_staging/arm/xscale/i80321/iq31244_machdep.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/xscale/i80321/iq31244_machdep.c Sun Oct 20 10:02:04 2013 (r256781) @@ -366,7 +366,7 @@ initarm(struct arm_boot_params *abp) dump_avail[2] = 0; dump_avail[3] = 0; - vm_max_kernel_address = 0xd0000000; + vm_max_kernel_address = 0xe0000000; pmap_bootstrap(pmap_curmaxkvaddr, &kernel_l1pt); msgbufp = (void*)msgbufpv.pv_va; msgbufinit(msgbufp, msgbufsize); Modified: user/andre/mbuf_staging/arm/xscale/i8134x/crb_machdep.c ============================================================================== --- user/andre/mbuf_staging/arm/xscale/i8134x/crb_machdep.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/xscale/i8134x/crb_machdep.c Sun Oct 20 10:02:04 2013 (r256781) @@ -344,7 +344,7 @@ initarm(struct arm_boot_params *abp) dump_avail[2] = 0; dump_avail[3] = 0; - vm_max_kernel_address = 0xd0000000; + vm_max_kernel_address = 0xe0000000; pmap_bootstrap(pmap_curmaxkvaddr, &kernel_l1pt); msgbufp = (void*)msgbufpv.pv_va; msgbufinit(msgbufp, msgbufsize); Modified: user/andre/mbuf_staging/arm/xscale/ixp425/avila_machdep.c ============================================================================== --- user/andre/mbuf_staging/arm/xscale/ixp425/avila_machdep.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/xscale/ixp425/avila_machdep.c Sun Oct 20 10:02:04 2013 (r256781) @@ -429,7 +429,7 @@ initarm(struct arm_boot_params *abp) pmap_curmaxkvaddr = afterkern + PAGE_SIZE; arm_dump_avail_init(memsize, sizeof(dump_avail) / sizeof(dump_avail[0])); - vm_max_kernel_address = 0xd0000000; + vm_max_kernel_address = 0xe0000000; pmap_bootstrap(pmap_curmaxkvaddr, &kernel_l1pt); msgbufp = (void*)msgbufpv.pv_va; msgbufinit(msgbufp, msgbufsize); Modified: user/andre/mbuf_staging/arm/xscale/pxa/pxa_machdep.c ============================================================================== --- user/andre/mbuf_staging/arm/xscale/pxa/pxa_machdep.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/arm/xscale/pxa/pxa_machdep.c Sun Oct 20 10:02:04 2013 (r256781) @@ -362,7 +362,7 @@ initarm(struct arm_boot_params *abp) } dump_avail[i] = 0; dump_avail[i] = 0; - vm_max_kernel_address = 0xd0000000; + vm_max_kernel_address = 0xe0000000; pmap_bootstrap(pmap_curmaxkvaddr, &kernel_l1pt); msgbufp = (void*)msgbufpv.pv_va; msgbufinit(msgbufp, msgbufsize); Modified: user/andre/mbuf_staging/boot/forth/loader.conf ============================================================================== --- user/andre/mbuf_staging/boot/forth/loader.conf Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/boot/forth/loader.conf Sun Oct 20 10:02:04 2013 (r256781) @@ -39,6 +39,17 @@ bitmap_type="splash_image_data" # and pl ############################################################## +### Random number generator configuration ################### +############################################################## + +entropy_cache_load="NO" # Set this to YES to load entropy at boot time +entropy_cache_name="/boot/entropy" # Set this to the name of the file +entropy_cache_type="/boot/entropy" +#kern.random.sys.seeded="0" # Set this to 1 to start /dev/random + # without waiting for a (re)seed. + + +############################################################## ### Loader settings ######################################## ############################################################## Modified: user/andre/mbuf_staging/boot/i386/btx/btx/btx.S ============================================================================== --- user/andre/mbuf_staging/boot/i386/btx/btx/btx.S Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/boot/i386/btx/btx/btx.S Sun Oct 20 10:02:04 2013 (r256781) @@ -41,6 +41,8 @@ .set PSL_RESERVED_DEFAULT,0x00000002 .set PSL_T,0x00000100 # Trap flag .set PSL_I,0x00000200 # Interrupt enable flag + .set PSL_D,0x00000400 # String instruction direction + .set PSL_NT,0x00004000 # Nested task flag .set PSL_VM,0x00020000 # Virtual 8086 mode flag .set PSL_AC,0x00040000 # Alignment check flag /* @@ -611,8 +613,8 @@ rret_tramp: movw $MEM_ESPR-0x08,%sp # R pushl %ds # regs pushl %es pushfl # Save %eflags - cli # Disable interrupts - std # String ops dec + pushl $PSL_RESERVED_DEFAULT|PSL_D # Use clean %eflags with + popfl # string ops dec xorw %ax,%ax # Reset seg movw %ax,%ds # regs movw %ax,%es # (%ss is already 0) @@ -675,6 +677,7 @@ rret_tramp.1: xorl %ecx,%ecx # Zero testl $V86F_FLAGS,%edx # User wants flags? jz rret_tramp.3 # No movl MEM_ESPR-0x3c,%eax # Read real mode flags + andl $~(PSL_T|PSL_NT),%eax # Clear unsafe flags movw %ax,-0x08(%esi) # Update user flags (low 16) /* * Return to the user task Modified: user/andre/mbuf_staging/cam/ata/ata_all.c ============================================================================== --- user/andre/mbuf_staging/cam/ata/ata_all.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/cam/ata/ata_all.c Sun Oct 20 10:02:04 2013 (r256781) @@ -297,6 +297,18 @@ ata_print_ident(struct ata_params *ident } void +ata_print_ident_short(struct ata_params *ident_data) +{ + char product[48], revision[16]; + + cam_strvis(product, ident_data->model, sizeof(ident_data->model), + sizeof(product)); + cam_strvis(revision, ident_data->revision, sizeof(ident_data->revision), + sizeof(revision)); + printf("<%s %s>", product, revision); +} + +void semb_print_ident(struct sep_identify_data *ident_data) { char vendor[9], product[17], revision[5], fw[5], in[7], ins[5]; @@ -311,6 +323,18 @@ semb_print_ident(struct sep_identify_dat vendor, product, revision, fw, in, ins); } +void +semb_print_ident_short(struct sep_identify_data *ident_data) +{ + char vendor[9], product[17], revision[5], fw[5]; + + cam_strvis(vendor, ident_data->vendor_id, 8, sizeof(vendor)); + cam_strvis(product, ident_data->product_id, 16, sizeof(product)); + cam_strvis(revision, ident_data->product_rev, 4, sizeof(revision)); + cam_strvis(fw, ident_data->firmware_rev, 4, sizeof(fw)); + printf("<%s %s %s %s>", vendor, product, revision, fw); +} + uint32_t ata_logical_sector_size(struct ata_params *ident_data) { Modified: user/andre/mbuf_staging/cam/ata/ata_all.h ============================================================================== --- user/andre/mbuf_staging/cam/ata/ata_all.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/cam/ata/ata_all.h Sun Oct 20 10:02:04 2013 (r256781) @@ -109,6 +109,7 @@ int ata_status_sbuf(struct ccb_ataio *at int ata_res_sbuf(struct ccb_ataio *ataio, struct sbuf *sb); void ata_print_ident(struct ata_params *ident_data); +void ata_print_ident_short(struct ata_params *ident_data); uint32_t ata_logical_sector_size(struct ata_params *ident_data); uint64_t ata_physical_sector_size(struct ata_params *ident_data); @@ -143,6 +144,7 @@ int ata_identify_match(caddr_t identbuff int ata_static_identify_match(caddr_t identbuffer, caddr_t table_entry); void semb_print_ident(struct sep_identify_data *ident_data); +void semb_print_ident_short(struct sep_identify_data *ident_data); void semb_receive_diagnostic_results(struct ccb_ataio *ataio, u_int32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb*), Modified: user/andre/mbuf_staging/cam/ata/ata_da.c ============================================================================== --- user/andre/mbuf_staging/cam/ata/ata_da.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/cam/ata/ata_da.c Sun Oct 20 10:02:04 2013 (r256781) @@ -293,6 +293,14 @@ static struct ada_quirk_entry ada_quirk_ }, { /* + * Corsair Neutron GTX SSDs + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "Corsair Neutron GTX*", "*" }, + /*quirks*/ADA_Q_4K + }, + { + /* * Corsair Force GT SSDs * 4k optimised & trim only works in 4k requests + 4k aligned */ @@ -907,7 +915,6 @@ adaoninvalidate(struct cam_periph *perip bioq_flush(&softc->trim_queue, NULL, ENXIO); disk_gone(softc->disk); - xpt_print(periph->path, "lost device\n"); } static void @@ -917,7 +924,6 @@ adacleanup(struct cam_periph *periph) softc = (struct ada_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); cam_periph_unlock(periph); /* Modified: user/andre/mbuf_staging/cam/ata/ata_pmp.c ============================================================================== --- user/andre/mbuf_staging/cam/ata/ata_pmp.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/cam/ata/ata_pmp.c Sun Oct 20 10:02:04 2013 (r256781) @@ -241,7 +241,6 @@ pmponinvalidate(struct cam_periph *perip } } pmprelease(periph, -1); - xpt_print(periph->path, "lost device\n"); } static void @@ -251,7 +250,6 @@ pmpcleanup(struct cam_periph *periph) softc = (struct pmp_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); cam_periph_unlock(periph); /* Modified: user/andre/mbuf_staging/cam/cam_periph.c ============================================================================== --- user/andre/mbuf_staging/cam/cam_periph.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/cam/cam_periph.c Sun Oct 20 10:02:04 2013 (r256781) @@ -586,6 +586,8 @@ cam_periph_invalidate(struct cam_periph return; CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Periph invalidated\n")); + if (periph->flags & CAM_PERIPH_ANNOUNCED) + xpt_denounce_periph(periph); periph->flags |= CAM_PERIPH_INVALID; periph->flags &= ~CAM_PERIPH_NEW_DEV_FOUND; if (periph->periph_oninval != NULL) @@ -648,7 +650,10 @@ camperiphfree(struct cam_periph *periph) xpt_remove_periph(periph); xpt_unlock_buses(); - CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Periph destroyed\n")); + if (periph->flags & CAM_PERIPH_ANNOUNCED) { + xpt_print(periph->path, "Periph destroyed\n"); + } else + CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Periph destroyed\n")); if (periph->flags & CAM_PERIPH_NEW_DEV_FOUND) { union ccb ccb; Modified: user/andre/mbuf_staging/cam/cam_periph.h ============================================================================== --- user/andre/mbuf_staging/cam/cam_periph.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/cam/cam_periph.h Sun Oct 20 10:02:04 2013 (r256781) @@ -121,6 +121,7 @@ struct cam_periph { #define CAM_PERIPH_NEW_DEV_FOUND 0x10 #define CAM_PERIPH_RECOVERY_INPROG 0x20 #define CAM_PERIPH_FREE 0x80 +#define CAM_PERIPH_ANNOUNCED 0x100 u_int32_t immediate_priority; u_int32_t refcount; SLIST_HEAD(, ccb_hdr) ccb_list; /* For "immediate" requests */ Modified: user/andre/mbuf_staging/cam/cam_xpt.c ============================================================================== --- user/andre/mbuf_staging/cam/cam_xpt.c Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/cam/cam_xpt.c Sun Oct 20 10:02:04 2013 (r256781) @@ -1023,6 +1023,7 @@ xpt_announce_periph(struct cam_periph *p struct cam_path *path = periph->path; mtx_assert(periph->sim->mtx, MA_OWNED); + periph->flags |= CAM_PERIPH_ANNOUNCED; printf("%s%d at %s%d bus %d scbus%d target %d lun %d\n", periph->periph_name, periph->unit_number, @@ -1043,7 +1044,7 @@ xpt_announce_periph(struct cam_periph *p (struct sep_identify_data *)&path->device->ident_data); else printf("Unknown protocol device\n"); - if (bootverbose && path->device->serial_num_len > 0) { + if (path->device->serial_num_len > 0) { /* Don't wrap the screen - print only the first 60 chars */ printf("%s%d: Serial Number %.60s\n", periph->periph_name, periph->unit_number, path->device->serial_num); @@ -1071,6 +1072,37 @@ xpt_announce_quirks(struct cam_periph *p } } +void +xpt_denounce_periph(struct cam_periph *periph) +{ + struct cam_path *path = periph->path; + + mtx_assert(periph->sim->mtx, MA_OWNED); + printf("%s%d at %s%d bus %d scbus%d target %d lun %d\n", + periph->periph_name, periph->unit_number, + path->bus->sim->sim_name, + path->bus->sim->unit_number, + path->bus->sim->bus_id, + path->bus->path_id, + path->target->target_id, + path->device->lun_id); + printf("%s%d: ", periph->periph_name, periph->unit_number); + if (path->device->protocol == PROTO_SCSI) + scsi_print_inquiry_short(&path->device->inq_data); + else if (path->device->protocol == PROTO_ATA || + path->device->protocol == PROTO_SATAPM) + ata_print_ident_short(&path->device->ident_data); + else if (path->device->protocol == PROTO_SEMB) + semb_print_ident_short( + (struct sep_identify_data *)&path->device->ident_data); + else + printf("Unknown protocol device"); + if (path->device->serial_num_len > 0) + printf(" s/n %.60s", path->device->serial_num); + printf(" detached\n"); +} + + int xpt_getattr(char *buf, size_t len, const char *attr, struct cam_path *path) { Modified: user/andre/mbuf_staging/cam/cam_xpt_periph.h ============================================================================== --- user/andre/mbuf_staging/cam/cam_xpt_periph.h Sun Oct 20 09:51:36 2013 (r256780) +++ user/andre/mbuf_staging/cam/cam_xpt_periph.h Sun Oct 20 10:02:04 2013 (r256781) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201310201002.r9KA257c015538>