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...
Andre Oppermann
andre at FreeBSD.org
Sun Oct 20 10:02:13 UTC 2013
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 ***
More information about the svn-src-user
mailing list