svn commit: r277182 - in projects/ifnet: contrib/elftoolchain/libdwarf etc etc/mtree lib lib/libclang_rt lib/libmagic lib/libpmc lib/libusb sbin/devd share/man/man7 sys/amd64/include sys/amd64/vmm ...
Gleb Smirnoff
glebius at FreeBSD.org
Wed Jan 14 14:50:39 UTC 2015
Author: glebius
Date: Wed Jan 14 14:50:31 2015
New Revision: 277182
URL: https://svnweb.freebsd.org/changeset/base/277182
Log:
Merge head up to r277179.
Added:
projects/ifnet/sys/dev/usb/template/usb_template_serialnet.c
- copied unchanged from r277179, head/sys/dev/usb/template/usb_template_serialnet.c
projects/ifnet/sys/powerpc/powerpc/ptrace_machdep.c
- copied unchanged from r277179, head/sys/powerpc/powerpc/ptrace_machdep.c
projects/ifnet/usr.sbin/pmcstudy/
- copied from r277179, head/usr.sbin/pmcstudy/
Modified:
projects/ifnet/contrib/elftoolchain/libdwarf/dwarf_attrval.c
projects/ifnet/etc/devd.conf
projects/ifnet/etc/mtree/BSD.debug.dist
projects/ifnet/etc/mtree/BSD.usr.dist
projects/ifnet/lib/Makefile
projects/ifnet/lib/libclang_rt/Makefile
projects/ifnet/lib/libmagic/config.h
projects/ifnet/lib/libpmc/libpmc.c
projects/ifnet/lib/libusb/libusb.3
projects/ifnet/sbin/devd/devd.conf.5
projects/ifnet/share/man/man7/hier.7
projects/ifnet/sys/amd64/include/vmm.h (contents, props changed)
projects/ifnet/sys/amd64/include/vmm_dev.h (contents, props changed)
projects/ifnet/sys/amd64/vmm/amd/svm.c
projects/ifnet/sys/amd64/vmm/intel/vmx.c
projects/ifnet/sys/amd64/vmm/vmm.c
projects/ifnet/sys/amd64/vmm/vmm_dev.c
projects/ifnet/sys/amd64/vmm/vmm_ioport.c
projects/ifnet/sys/arm/arm/cpufunc.c
projects/ifnet/sys/arm/arm/identcpu.c
projects/ifnet/sys/arm/include/armreg.h
projects/ifnet/sys/arm/samsung/exynos/exynos_uart.c
projects/ifnet/sys/boot/usb/usbcore.mk
projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c
projects/ifnet/sys/conf/files
projects/ifnet/sys/conf/files.powerpc
projects/ifnet/sys/dev/ahci/ahci.h
projects/ifnet/sys/dev/cardbus/cardbus.c
projects/ifnet/sys/dev/cxgbe/iw_cxgbe/cm.c
projects/ifnet/sys/dev/hwpmc/hwpmc_core.c
projects/ifnet/sys/dev/hwpmc/hwpmc_intel.c
projects/ifnet/sys/dev/hwpmc/hwpmc_logging.c
projects/ifnet/sys/dev/hwpmc/hwpmc_mod.c
projects/ifnet/sys/dev/hwpmc/hwpmc_piv.c
projects/ifnet/sys/dev/hwpmc/hwpmc_uncore.c
projects/ifnet/sys/dev/hwpmc/hwpmc_x86.c
projects/ifnet/sys/dev/hwpmc/pmc_events.h
projects/ifnet/sys/dev/ixl/if_ixl.c
projects/ifnet/sys/dev/ixl/ixl_txrx.c
projects/ifnet/sys/dev/mii/jmphy.c
projects/ifnet/sys/dev/mii/mii.c
projects/ifnet/sys/dev/mii/mii_physubr.c
projects/ifnet/sys/dev/mii/miivar.h
projects/ifnet/sys/dev/mii/rgephy.c
projects/ifnet/sys/dev/pccbb/pccbb.c
projects/ifnet/sys/dev/pccbb/pccbb_isa.c
projects/ifnet/sys/dev/pccbb/pccbb_pci.c
projects/ifnet/sys/dev/pccbb/pccbbvar.h
projects/ifnet/sys/dev/uart/uart.h
projects/ifnet/sys/dev/uart/uart_bus_fdt.c
projects/ifnet/sys/dev/usb/controller/usb_controller.c
projects/ifnet/sys/dev/usb/template/usb_template.c
projects/ifnet/sys/dev/usb/template/usb_template.h
projects/ifnet/sys/dev/usb/usb_bus.h
projects/ifnet/sys/dev/usb/usb_dev.c
projects/ifnet/sys/dev/usb/usb_device.c
projects/ifnet/sys/dev/usb/usb_device.h
projects/ifnet/sys/dev/usb/usb_ioctl.h
projects/ifnet/sys/fs/cuse/cuse.c
projects/ifnet/sys/geom/geom_dev.c
projects/ifnet/sys/kern/kern_conf.c
projects/ifnet/sys/kern/kern_jail.c
projects/ifnet/sys/modules/cardbus/Makefile
projects/ifnet/sys/modules/cbb/Makefile
projects/ifnet/sys/modules/usb/template/Makefile
projects/ifnet/sys/powerpc/aim/mmu_oea64.c
projects/ifnet/sys/powerpc/include/ptrace.h
projects/ifnet/sys/powerpc/include/reg.h
projects/ifnet/sys/sys/capsicum.h
projects/ifnet/sys/sys/conf.h
projects/ifnet/sys/sys/jail.h
projects/ifnet/sys/sys/pmc.h
projects/ifnet/tools/build/mk/OptionalObsoleteFiles.inc
projects/ifnet/usr.bin/gcore/elfcore.c
projects/ifnet/usr.sbin/Makefile
projects/ifnet/usr.sbin/fstyp/ext2fs.c
projects/ifnet/usr.sbin/fstyp/fstyp.8
Directory Properties:
projects/ifnet/ (props changed)
projects/ifnet/contrib/elftoolchain/ (props changed)
projects/ifnet/etc/ (props changed)
projects/ifnet/sbin/ (props changed)
projects/ifnet/share/ (props changed)
projects/ifnet/sys/ (props changed)
projects/ifnet/sys/amd64/vmm/ (props changed)
projects/ifnet/sys/boot/ (props changed)
projects/ifnet/sys/cddl/contrib/opensolaris/ (props changed)
projects/ifnet/sys/conf/ (props changed)
Modified: projects/ifnet/contrib/elftoolchain/libdwarf/dwarf_attrval.c
==============================================================================
--- projects/ifnet/contrib/elftoolchain/libdwarf/dwarf_attrval.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/contrib/elftoolchain/libdwarf/dwarf_attrval.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -125,6 +125,7 @@ dwarf_attrval_signed(Dwarf_Die die, Dwar
break;
case DW_FORM_data4:
*valp = (int32_t) at->u[0].s64;
+ break;
case DW_FORM_data8:
case DW_FORM_sdata:
*valp = at->u[0].s64;
Modified: projects/ifnet/etc/devd.conf
==============================================================================
--- projects/ifnet/etc/devd.conf Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/etc/devd.conf Wed Jan 14 14:50:31 2015 (r277182)
@@ -318,16 +318,11 @@ notify 0 {
action "/usr/local/etc/rc.d/postgresql restart";
};
-# Discard autofs caches, useful for the -media special map. The one
-# second delay is for GEOM to finish tasting.
-#
-# XXX: We should probably have a devctl(4) event that fires after GEOM
-# tasting.
-#
+# Discard autofs caches, useful for the -media special map.
notify 100 {
- match "system" "DEVFS";
- match "cdev" "(da|mmcsd)[0-9]+";
- action "sleep 1 && /usr/sbin/automount -c";
+ match "system" "GEOM";
+ match "subsystem" "DEV";
+ action "/usr/sbin/automount -c";
};
*/
Modified: projects/ifnet/etc/mtree/BSD.debug.dist
==============================================================================
--- projects/ifnet/etc/mtree/BSD.debug.dist Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/etc/mtree/BSD.debug.dist Wed Jan 14 14:50:31 2015 (r277182)
@@ -24,6 +24,14 @@
games
..
lib
+ clang
+ 3.5.0
+ lib
+ freebsd
+ ..
+ ..
+ ..
+ ..
engines
..
i18n
Modified: projects/ifnet/etc/mtree/BSD.usr.dist
==============================================================================
--- projects/ifnet/etc/mtree/BSD.usr.dist Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/etc/mtree/BSD.usr.dist Wed Jan 14 14:50:31 2015 (r277182)
@@ -14,6 +14,14 @@
lib
aout
..
+ clang
+ 3.5.0
+ lib
+ freebsd
+ ..
+ ..
+ ..
+ ..
compat
aout
..
Modified: projects/ifnet/lib/Makefile
==============================================================================
--- projects/ifnet/lib/Makefile Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/lib/Makefile Wed Jan 14 14:50:31 2015 (r277182)
@@ -13,6 +13,7 @@ SUBDIR_ORDERED= ${_csu} \
libc \
libc_nonshared \
libcompiler_rt \
+ ${_libclang_rt} \
${_libcplusplus} \
${_libcxxrt} \
libelf \
@@ -211,6 +212,15 @@ _libcom_err= libcom_err
_libldns= libldns
.endif
+# The libraries under libclang_rt can only be built by clang, and only make
+# sense to build when clang is enabled at all. Furthermore, they can only be
+# built for certain architectures.
+.if ${MK_CLANG} != "no" && ${COMPILER_TYPE} == "clang" && \
+ (${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" || \
+ (${MACHINE_CPUARCH} == "arm" && ${MACHINE_ARCH} != "armeb"))
+_libclang_rt= libclang_rt
+.endif
+
.if ${MK_LIBCPLUSPLUS} != "no"
_libcxxrt= libcxxrt
_libcplusplus= libc++
Modified: projects/ifnet/lib/libclang_rt/Makefile
==============================================================================
--- projects/ifnet/lib/libclang_rt/Makefile Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/lib/libclang_rt/Makefile Wed Jan 14 14:50:31 2015 (r277182)
@@ -1,10 +1,18 @@
# $FreeBSD$
-SUBDIR= asan\
- asan_cxx\
- profile\
- san\
- ubsan\
- ubsan_cxx
+.include <src.opts.mk>
+
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
+SUBDIR+= asan\
+ asan_cxx\
+ san\
+ ubsan\
+ ubsan_cxx
+.endif
+
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" || \
+ (${MACHINE_CPUARCH} == "arm" && ${MACHINE_ARCH} != "armeb")
+SUBDIR+= profile
+.endif
.include <bsd.subdir.mk>
Modified: projects/ifnet/lib/libmagic/config.h
==============================================================================
--- projects/ifnet/lib/libmagic/config.h Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/lib/libmagic/config.h Wed Jan 14 14:50:31 2015 (r277182)
@@ -1,5 +1,13 @@
/* $FreeBSD$ */
+/* Get __FreeBSD_version. */
+#include <osreldate.h>
+
+/* Only specific versions of FreeBSD support xlocale */
+#if __FreeBSD_version >= 1000002 || (__FreeBSD_version < 1000000 && __FreeBSD_version >= 900506)
+#define FREEBSD_XLOCALE_SUPPORT 1
+#endif
+
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
@@ -48,7 +56,9 @@
#define HAVE_FORK 1
/* Define to 1 if you have the `freelocale' function. */
+#ifdef FREEBSD_XLOCALE_SUPPORT
#define HAVE_FREELOCALE 1
+#endif
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
#define HAVE_FSEEKO 1
@@ -102,7 +112,9 @@
#define HAVE_MMAP 1
/* Define to 1 if you have the `newlocale' function. */
+#ifdef FREEBSD_XLOCALE_SUPPORT
#define HAVE_NEWLOCALE 1
+#endif
/* Define to 1 if you have the `pread' function. */
#define HAVE_PREAD 1
@@ -195,7 +207,9 @@
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `uselocale' function. */
+#ifdef FREEBSD_XLOCALE_SUPPORT
#define HAVE_USELOCALE 1
+#endif
/* Define to 1 if you have the `utime' function. */
#define HAVE_UTIME 1
@@ -235,7 +249,9 @@
#define HAVE_WORKING_VFORK 1
/* Define to 1 if you have the <xlocale.h> header file. */
+#ifdef FREEBSD_XLOCALE_SUPPORT
#define HAVE_XLOCALE_H 1
+#endif
/* Define to 1 if you have the <zlib.h> header file. */
#define HAVE_ZLIB_H 1
Modified: projects/ifnet/lib/libpmc/libpmc.c
==============================================================================
--- projects/ifnet/lib/libpmc/libpmc.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/lib/libpmc/libpmc.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -200,6 +200,12 @@ static const struct pmc_event_descr hasw
__PMC_EV_ALIAS_HASWELL()
};
+static const struct pmc_event_descr haswell_xeon_event_table[] =
+{
+ __PMC_EV_ALIAS_HASWELL_XEON()
+};
+
+
static const struct pmc_event_descr ivybridge_event_table[] =
{
__PMC_EV_ALIAS_IVYBRIDGE()
@@ -267,6 +273,7 @@ PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_SOF
PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
PMC_MDEP_TABLE(nehalem_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
PMC_MDEP_TABLE(haswell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
+PMC_MDEP_TABLE(haswell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
@@ -312,6 +319,7 @@ PMC_CLASS_TABLE_DESC(core2, IAP, core2,
PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap);
PMC_CLASS_TABLE_DESC(nehalem_ex, IAP, nehalem_ex, iap);
PMC_CLASS_TABLE_DESC(haswell, IAP, haswell, iap);
+PMC_CLASS_TABLE_DESC(haswell_xeon, IAP, haswell, iap);
PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap);
PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap);
PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap);
@@ -626,6 +634,8 @@ static struct pmc_event_alias core2_alia
#define nehalem_ex_aliases_without_iaf core2_aliases_without_iaf
#define haswell_aliases core2_aliases
#define haswell_aliases_without_iaf core2_aliases_without_iaf
+#define haswell_xeon_aliases core2_aliases
+#define haswell_xeon_aliases_without_iaf core2_aliases_without_iaf
#define ivybridge_aliases core2_aliases
#define ivybridge_aliases_without_iaf core2_aliases_without_iaf
#define ivybridge_xeon_aliases core2_aliases
@@ -896,7 +906,8 @@ iap_allocate_pmc(enum pmc_event pe, char
n = pmc_parse_mask(iap_rsp_mask_sb_sbx_ib, p, &rsp);
} else
return (-1);
- } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL) {
+ } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL ||
+ cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL_XEON) {
if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp);
} else
@@ -2788,6 +2799,10 @@ pmc_event_names_of_class(enum pmc_class
ev = haswell_event_table;
count = PMC_EVENT_TABLE_SIZE(haswell);
break;
+ case PMC_CPU_INTEL_HASWELL_XEON:
+ ev = haswell_xeon_event_table;
+ count = PMC_EVENT_TABLE_SIZE(haswell_xeon);
+ break;
case PMC_CPU_INTEL_IVYBRIDGE:
ev = ivybridge_event_table;
count = PMC_EVENT_TABLE_SIZE(ivybridge);
@@ -3115,6 +3130,9 @@ pmc_init(void)
pmc_class_table[n++] = &haswelluc_class_table_descr;
PMC_MDEP_INIT_INTEL_V2(haswell);
break;
+ case PMC_CPU_INTEL_HASWELL_XEON:
+ PMC_MDEP_INIT_INTEL_V2(haswell_xeon);
+ break;
case PMC_CPU_INTEL_IVYBRIDGE:
PMC_MDEP_INIT_INTEL_V2(ivybridge);
break;
@@ -3280,6 +3298,11 @@ _pmc_name_of_event(enum pmc_event pe, en
ev = haswell_event_table;
evfence = haswell_event_table + PMC_EVENT_TABLE_SIZE(haswell);
break;
+ case PMC_CPU_INTEL_HASWELL_XEON:
+ ev = haswell_xeon_event_table;
+ evfence = haswell_xeon_event_table + PMC_EVENT_TABLE_SIZE(haswell_xeon);
+ break;
+
case PMC_CPU_INTEL_IVYBRIDGE:
ev = ivybridge_event_table;
evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge);
Modified: projects/ifnet/lib/libusb/libusb.3
==============================================================================
--- projects/ifnet/lib/libusb/libusb.3 Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/lib/libusb/libusb.3 Wed Jan 14 14:50:31 2015 (r277182)
@@ -42,9 +42,9 @@ The
.Nm
library contains interfaces for directly managing a usb device.
The current implementation supports v1.0 of the libusb API.
-.Sh LIBRARY INITIALISATION / DEINITIALISATION
+.Sh LIBRARY INITIALISATION AND DEINITIALISATION
.Ft int
-.Fn libusb_init libusb_context **ctx
+.Fn libusb_init "libusb_context **ctx"
This function initialises libusb.
It must be called at the beginning
of the program, before other libusb routines are used.
Modified: projects/ifnet/sbin/devd/devd.conf.5
==============================================================================
--- projects/ifnet/sbin/devd/devd.conf.5 Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sbin/devd/devd.conf.5 Wed Jan 14 14:50:31 2015 (r277182)
@@ -41,7 +41,7 @@
.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
.\" SOFTWARE.
.\"
-.Dd February 22, 2013
+.Dd January 14, 2015
.Dt DEVD.CONF 5
.Os
.Sh NAME
@@ -370,6 +370,33 @@ node is destroyed.
.El
.El
.Pp
+.It Li GEOM
+Events related to the
+.Xr geom 4
+framework.
+The difference compared to
+.Li DEVFS
+is that
+.Li GEOM
+only includes disk-like devices.
+.Bl -tag -width ".Sy Subsystem" -compact
+.It Sy Subsystem
+.It Li DEV
+.Bl -tag -width ".Li MEDIACHANGE" -compact
+.It Sy Type
+.It Li CREATE
+A
+.Xr geom 4
+device node is created.
+.It Li DESTROY
+A
+.Xr geom 4
+device node is destroyed.
+.It Li MEDIACHANGE
+Physical media has changed.
+.El
+.El
+.Pp
.It Li USB
Events related to the USB subsystem.
.Bl -tag -width ".Sy Subsystem" -compact
Modified: projects/ifnet/share/man/man7/hier.7
==============================================================================
--- projects/ifnet/share/man/man7/hier.7 Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/share/man/man7/hier.7 Wed Jan 14 14:50:31 2015 (r277182)
@@ -28,7 +28,7 @@
.\" @(#)hier.7 8.1 (Berkeley) 6/5/93
.\" $FreeBSD$
.\"
-.Dd November 10, 2014
+.Dd January 14, 2015
.Dt HIER 7
.Os
.Sh NAME
@@ -159,6 +159,10 @@ floppy disks
.It Pa /mnt/
empty directory commonly used by
system administrators as a temporary mount point
+.It Pa /net/
+automounted NFS shares;
+see
+.Xr auto_master 5
.It Pa /proc/
process file system;
see
Modified: projects/ifnet/sys/amd64/include/vmm.h
==============================================================================
--- projects/ifnet/sys/amd64/include/vmm.h Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/amd64/include/vmm.h Wed Jan 14 14:50:31 2015 (r277182)
@@ -289,7 +289,7 @@ struct vpmtmr *vm_pmtmr(struct vm *vm);
struct vrtc *vm_rtc(struct vm *vm);
/*
- * Inject exception 'vme' into the guest vcpu. This function returns 0 on
+ * Inject exception 'vector' into the guest vcpu. This function returns 0 on
* success and non-zero on failure.
*
* Wrapper functions like 'vm_inject_gp()' should be preferred to calling
@@ -299,7 +299,8 @@ struct vrtc *vm_rtc(struct vm *vm);
* This function should only be called in the context of the thread that is
* executing this vcpu.
*/
-int vm_inject_exception(struct vm *vm, int vcpuid, struct vm_exception *vme);
+int vm_inject_exception(struct vm *vm, int vcpuid, int vector, int err_valid,
+ uint32_t errcode, int restart_instruction);
/*
* This function is called after a VM-exit that occurred during exception or
@@ -628,4 +629,6 @@ vm_inject_ss(void *vm, int vcpuid, int e
void vm_inject_pf(void *vm, int vcpuid, int error_code, uint64_t cr2);
+int vm_restart_instruction(void *vm, int vcpuid);
+
#endif /* _VMM_H_ */
Modified: projects/ifnet/sys/amd64/include/vmm_dev.h
==============================================================================
--- projects/ifnet/sys/amd64/include/vmm_dev.h Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/amd64/include/vmm_dev.h Wed Jan 14 14:50:31 2015 (r277182)
@@ -63,6 +63,7 @@ struct vm_exception {
int vector;
uint32_t error_code;
int error_code_valid;
+ int restart_instruction;
};
struct vm_lapic_msi {
Modified: projects/ifnet/sys/amd64/vmm/amd/svm.c
==============================================================================
--- projects/ifnet/sys/amd64/vmm/amd/svm.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/amd64/vmm/amd/svm.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -1201,7 +1201,6 @@ svm_vmexit(struct svm_softc *svm_sc, int
struct vmcb_state *state;
struct vmcb_ctrl *ctrl;
struct svm_regctx *ctx;
- struct vm_exception exception;
uint64_t code, info1, info2, val;
uint32_t eax, ecx, edx;
int error, errcode_valid, handled, idtvec, reflect;
@@ -1315,6 +1314,7 @@ svm_vmexit(struct svm_softc *svm_sc, int
/* fallthru */
default:
errcode_valid = 0;
+ info1 = 0;
break;
}
KASSERT(vmexit->inst_length == 0, ("invalid inst_length (%d) "
@@ -1323,17 +1323,10 @@ svm_vmexit(struct svm_softc *svm_sc, int
if (reflect) {
/* Reflect the exception back into the guest */
- bzero(&exception, sizeof(struct vm_exception));
- exception.vector = idtvec;
- if (errcode_valid) {
- exception.error_code = info1;
- exception.error_code_valid = 1;
- }
VCPU_CTR2(svm_sc->vm, vcpu, "Reflecting exception "
- "%d/%#x into the guest", exception.vector,
- exception.error_code);
- error = vm_inject_exception(svm_sc->vm, vcpu,
- &exception);
+ "%d/%#x into the guest", idtvec, (int)info1);
+ error = vm_inject_exception(svm_sc->vm, vcpu, idtvec,
+ errcode_valid, info1, 0);
KASSERT(error == 0, ("%s: vm_inject_exception error %d",
__func__, error));
}
Modified: projects/ifnet/sys/amd64/vmm/intel/vmx.c
==============================================================================
--- projects/ifnet/sys/amd64/vmm/intel/vmx.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/amd64/vmm/intel/vmx.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -1784,7 +1784,7 @@ vmexit_inst_emul(struct vm_exit *vmexit,
{
struct vm_guest_paging *paging;
uint32_t csar;
-
+
paging = &vmexit->u.inst_emul.paging;
vmexit->exitcode = VM_EXITCODE_INST_EMUL;
@@ -2073,12 +2073,11 @@ emulate_rdmsr(struct vmx *vmx, int vcpui
static int
vmx_exit_process(struct vmx *vmx, int vcpu, struct vm_exit *vmexit)
{
- int error, handled, in;
+ int error, errcode, errcode_valid, handled, in;
struct vmxctx *vmxctx;
struct vlapic *vlapic;
struct vm_inout_str *vis;
struct vm_task_switch *ts;
- struct vm_exception vmexc;
uint32_t eax, ecx, edx, idtvec_info, idtvec_err, intr_info, inst_info;
uint32_t intr_type, intr_vec, reason;
uint64_t exitintinfo, qual, gpa;
@@ -2263,6 +2262,7 @@ vmx_exit_process(struct vmx *vmx, int vc
case EXIT_REASON_MTF:
vmm_stat_incr(vmx->vm, vcpu, VMEXIT_MTRAP, 1);
vmexit->exitcode = VM_EXITCODE_MTRAP;
+ vmexit->inst_length = 0;
break;
case EXIT_REASON_PAUSE:
vmm_stat_incr(vmx->vm, vcpu, VMEXIT_PAUSE, 1);
@@ -2389,15 +2389,15 @@ vmx_exit_process(struct vmx *vmx, int vc
vmcs_write(VMCS_ENTRY_INST_LENGTH, vmexit->inst_length);
/* Reflect all other exceptions back into the guest */
- bzero(&vmexc, sizeof(struct vm_exception));
- vmexc.vector = intr_vec;
+ errcode_valid = errcode = 0;
if (intr_info & VMCS_INTR_DEL_ERRCODE) {
- vmexc.error_code_valid = 1;
- vmexc.error_code = vmcs_read(VMCS_EXIT_INTR_ERRCODE);
+ errcode_valid = 1;
+ errcode = vmcs_read(VMCS_EXIT_INTR_ERRCODE);
}
VCPU_CTR2(vmx->vm, vcpu, "Reflecting exception %d/%#x into "
- "the guest", vmexc.vector, vmexc.error_code);
- error = vm_inject_exception(vmx->vm, vcpu, &vmexc);
+ "the guest", intr_vec, errcode);
+ error = vm_inject_exception(vmx->vm, vcpu, intr_vec,
+ errcode_valid, errcode, 0);
KASSERT(error == 0, ("%s: vm_inject_exception error %d",
__func__, error));
return (1);
Modified: projects/ifnet/sys/amd64/vmm/vmm.c
==============================================================================
--- projects/ifnet/sys/amd64/vmm/vmm.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/amd64/vmm/vmm.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -101,8 +101,10 @@ struct vcpu {
uint64_t exitintinfo; /* (i) events pending at VM exit */
int nmi_pending; /* (i) NMI pending */
int extint_pending; /* (i) INTR pending */
- struct vm_exception exception; /* (x) exception collateral */
int exception_pending; /* (i) exception pending */
+ int exc_vector; /* (x) exception collateral */
+ int exc_errcode_valid;
+ uint32_t exc_errcode;
struct savefpu *guestfpu; /* (a,i) guest fpu state */
uint64_t guest_xcr0; /* (i) guest %xcr0 register */
void *stats; /* (a,i) statistics */
@@ -1223,7 +1225,7 @@ vm_handle_paging(struct vm *vm, int vcpu
return (EFAULT);
done:
/* restart execution at the faulting instruction */
- vme->inst_length = 0;
+ vm_restart_instruction(vm, vcpuid);
return (0);
}
@@ -1526,6 +1528,20 @@ restart:
}
int
+vm_restart_instruction(void *arg, int vcpuid)
+{
+ struct vcpu *vcpu;
+ struct vm *vm = arg;
+
+ if (vcpuid < 0 || vcpuid >= VM_MAXCPU)
+ return (EINVAL);
+
+ vcpu = &vm->vcpu[vcpuid];
+ vcpu->exitinfo.inst_length = 0;
+ return (0);
+}
+
+int
vm_exit_intinfo(struct vm *vm, int vcpuid, uint64_t info)
{
struct vcpu *vcpu;
@@ -1655,11 +1671,11 @@ vcpu_exception_intinfo(struct vcpu *vcpu
uint64_t info = 0;
if (vcpu->exception_pending) {
- info = vcpu->exception.vector & 0xff;
+ info = vcpu->exc_vector & 0xff;
info |= VM_INTINFO_VALID | VM_INTINFO_HWEXCEPTION;
- if (vcpu->exception.error_code_valid) {
+ if (vcpu->exc_errcode_valid) {
info |= VM_INTINFO_DEL_ERRCODE;
- info |= (uint64_t)vcpu->exception.error_code << 32;
+ info |= (uint64_t)vcpu->exc_errcode << 32;
}
}
return (info);
@@ -1684,7 +1700,7 @@ vm_entry_intinfo(struct vm *vm, int vcpu
info2 = vcpu_exception_intinfo(vcpu);
vcpu->exception_pending = 0;
VCPU_CTR2(vm, vcpuid, "Exception %d delivered: %#lx",
- vcpu->exception.vector, info2);
+ vcpu->exc_vector, info2);
}
if ((info1 & VM_INTINFO_VALID) && (info2 & VM_INTINFO_VALID)) {
@@ -1722,7 +1738,8 @@ vm_get_intinfo(struct vm *vm, int vcpuid
}
int
-vm_inject_exception(struct vm *vm, int vcpuid, struct vm_exception *exception)
+vm_inject_exception(struct vm *vm, int vcpuid, int vector, int errcode_valid,
+ uint32_t errcode, int restart_instruction)
{
struct vcpu *vcpu;
int error;
@@ -1730,7 +1747,7 @@ vm_inject_exception(struct vm *vm, int v
if (vcpuid < 0 || vcpuid >= VM_MAXCPU)
return (EINVAL);
- if (exception->vector < 0 || exception->vector >= 32)
+ if (vector < 0 || vector >= 32)
return (EINVAL);
/*
@@ -1738,15 +1755,14 @@ vm_inject_exception(struct vm *vm, int v
* the guest. It is a derived exception that results from specific
* combinations of nested faults.
*/
- if (exception->vector == IDT_DF)
+ if (vector == IDT_DF)
return (EINVAL);
vcpu = &vm->vcpu[vcpuid];
if (vcpu->exception_pending) {
VCPU_CTR2(vm, vcpuid, "Unable to inject exception %d due to "
- "pending exception %d", exception->vector,
- vcpu->exception.vector);
+ "pending exception %d", vector, vcpu->exc_vector);
return (EBUSY);
}
@@ -1760,9 +1776,14 @@ vm_inject_exception(struct vm *vm, int v
KASSERT(error == 0, ("%s: error %d clearing interrupt shadow",
__func__, error));
+ if (restart_instruction)
+ vm_restart_instruction(vm, vcpuid);
+
vcpu->exception_pending = 1;
- vcpu->exception = *exception;
- VCPU_CTR1(vm, vcpuid, "Exception %d pending", exception->vector);
+ vcpu->exc_vector = vector;
+ vcpu->exc_errcode = errcode;
+ vcpu->exc_errcode_valid = errcode_valid;
+ VCPU_CTR1(vm, vcpuid, "Exception %d pending", vector);
return (0);
}
@@ -1770,28 +1791,15 @@ void
vm_inject_fault(void *vmarg, int vcpuid, int vector, int errcode_valid,
int errcode)
{
- struct vm_exception exception;
- struct vm_exit *vmexit;
struct vm *vm;
- int error;
+ int error, restart_instruction;
vm = vmarg;
+ restart_instruction = 1;
- exception.vector = vector;
- exception.error_code = errcode;
- exception.error_code_valid = errcode_valid;
- error = vm_inject_exception(vm, vcpuid, &exception);
+ error = vm_inject_exception(vm, vcpuid, vector, errcode_valid,
+ errcode, restart_instruction);
KASSERT(error == 0, ("vm_inject_exception error %d", error));
-
- /*
- * A fault-like exception allows the instruction to be restarted
- * after the exception handler returns.
- *
- * By setting the inst_length to 0 we ensure that the instruction
- * pointer remains at the faulting instruction.
- */
- vmexit = vm_exitinfo(vm, vcpuid);
- vmexit->inst_length = 0;
}
void
Modified: projects/ifnet/sys/amd64/vmm/vmm_dev.c
==============================================================================
--- projects/ifnet/sys/amd64/vmm/vmm_dev.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/amd64/vmm/vmm_dev.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -310,7 +310,9 @@ vmmdev_ioctl(struct cdev *cdev, u_long c
break;
case VM_INJECT_EXCEPTION:
vmexc = (struct vm_exception *)data;
- error = vm_inject_exception(sc->vm, vmexc->cpuid, vmexc);
+ error = vm_inject_exception(sc->vm, vmexc->cpuid,
+ vmexc->vector, vmexc->error_code_valid, vmexc->error_code,
+ vmexc->restart_instruction);
break;
case VM_INJECT_NMI:
vmnmi = (struct vm_nmi *)data;
Modified: projects/ifnet/sys/amd64/vmm/vmm_ioport.c
==============================================================================
--- projects/ifnet/sys/amd64/vmm/vmm_ioport.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/amd64/vmm/vmm_ioport.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -74,7 +74,7 @@ inout_instruction(struct vm_exit *vmexit
static const char *iodesc[] = {
"outb", "outw", "outl",
"inb", "inw", "inl",
- "outsb", "outsw", "outsd"
+ "outsb", "outsw", "outsd",
"insb", "insw", "insd",
};
Modified: projects/ifnet/sys/arm/arm/cpufunc.c
==============================================================================
--- projects/ifnet/sys/arm/arm/cpufunc.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/arm/arm/cpufunc.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -1067,6 +1067,7 @@ set_cpufuncs()
cputype == CPU_ID_CORTEXA9R1 ||
cputype == CPU_ID_CORTEXA9R2 ||
cputype == CPU_ID_CORTEXA9R3 ||
+ cputype == CPU_ID_CORTEXA12R0 ||
cputype == CPU_ID_CORTEXA15R0 ||
cputype == CPU_ID_CORTEXA15R1 ||
cputype == CPU_ID_CORTEXA15R2 ||
Modified: projects/ifnet/sys/arm/arm/identcpu.c
==============================================================================
--- projects/ifnet/sys/arm/arm/identcpu.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/arm/arm/identcpu.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -185,6 +185,8 @@ const struct cpuidtab cpuids[] = {
generic_steppings },
{ CPU_ID_CORTEXA9R3, CPU_CLASS_CORTEXA, "Cortex A9-r3",
generic_steppings },
+ { CPU_ID_CORTEXA12R0, CPU_CLASS_CORTEXA, "Cortex A12-r0",
+ generic_steppings },
{ CPU_ID_CORTEXA15R0, CPU_CLASS_CORTEXA, "Cortex A15-r0",
generic_steppings },
{ CPU_ID_CORTEXA15R1, CPU_CLASS_CORTEXA, "Cortex A15-r1",
Modified: projects/ifnet/sys/arm/include/armreg.h
==============================================================================
--- projects/ifnet/sys/arm/include/armreg.h Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/arm/include/armreg.h Wed Jan 14 14:50:31 2015 (r277182)
@@ -133,6 +133,7 @@
#define CPU_ID_CORTEXA9R1 0x411fc090
#define CPU_ID_CORTEXA9R2 0x412fc090
#define CPU_ID_CORTEXA9R3 0x413fc090
+#define CPU_ID_CORTEXA12R0 0x410fc0d0
#define CPU_ID_CORTEXA15R0 0x410fc0f0
#define CPU_ID_CORTEXA15R1 0x411fc0f0
#define CPU_ID_CORTEXA15R2 0x412fc0f0
Modified: projects/ifnet/sys/arm/samsung/exynos/exynos_uart.c
==============================================================================
--- projects/ifnet/sys/arm/samsung/exynos/exynos_uart.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/arm/samsung/exynos/exynos_uart.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -50,17 +50,17 @@ __FBSDID("$FreeBSD$");
#define DEF_CLK 100000000
static int sscomspeed(long, long);
-static int s3c24x0_uart_param(struct uart_bas *, int, int, int, int);
+static int exynos4210_uart_param(struct uart_bas *, int, int, int, int);
/*
* Low-level UART interface.
*/
-static int s3c2410_probe(struct uart_bas *bas);
-static void s3c2410_init(struct uart_bas *bas, int, int, int, int);
-static void s3c2410_term(struct uart_bas *bas);
-static void s3c2410_putc(struct uart_bas *bas, int);
-static int s3c2410_rxready(struct uart_bas *bas);
-static int s3c2410_getc(struct uart_bas *bas, struct mtx *mtx);
+static int exynos4210_probe(struct uart_bas *bas);
+static void exynos4210_init(struct uart_bas *bas, int, int, int, int);
+static void exynos4210_term(struct uart_bas *bas);
+static void exynos4210_putc(struct uart_bas *bas, int);
+static int exynos4210_rxready(struct uart_bas *bas);
+static int exynos4210_getc(struct uart_bas *bas, struct mtx *mtx);
extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs;
@@ -76,7 +76,7 @@ sscomspeed(long speed, long frequency)
}
static int
-s3c24x0_uart_param(struct uart_bas *bas, int baudrate, int databits,
+exynos4210_uart_param(struct uart_bas *bas, int baudrate, int databits,
int stopbits, int parity)
{
int brd, ulcon;
@@ -127,38 +127,38 @@ s3c24x0_uart_param(struct uart_bas *bas,
return (0);
}
-struct uart_ops uart_s3c2410_ops = {
- .probe = s3c2410_probe,
- .init = s3c2410_init,
- .term = s3c2410_term,
- .putc = s3c2410_putc,
- .rxready = s3c2410_rxready,
- .getc = s3c2410_getc,
+struct uart_ops uart_exynos4210_ops = {
+ .probe = exynos4210_probe,
+ .init = exynos4210_init,
+ .term = exynos4210_term,
+ .putc = exynos4210_putc,
+ .rxready = exynos4210_rxready,
+ .getc = exynos4210_getc,
};
static int
-s3c2410_probe(struct uart_bas *bas)
+exynos4210_probe(struct uart_bas *bas)
{
return (0);
}
static void
-s3c2410_init(struct uart_bas *bas, int baudrate, int databits, int stopbits,
+exynos4210_init(struct uart_bas *bas, int baudrate, int databits, int stopbits,
int parity)
{
if (bas->rclk == 0)
bas->rclk = DEF_CLK;
- KASSERT(bas->rclk != 0, ("s3c2410_init: Invalid rclk"));
+ KASSERT(bas->rclk != 0, ("exynos4210_init: Invalid rclk"));
uart_setreg(bas, SSCOM_UCON, 0);
uart_setreg(bas, SSCOM_UFCON,
UFCON_TXTRIGGER_8 | UFCON_RXTRIGGER_8 |
UFCON_TXFIFO_RESET | UFCON_RXFIFO_RESET |
UFCON_FIFO_ENABLE);
- s3c24x0_uart_param(bas, baudrate, databits, stopbits, parity);
+ exynos4210_uart_param(bas, baudrate, databits, stopbits, parity);
/* Enable UART. */
uart_setreg(bas, SSCOM_UCON, UCON_TXMODE_INT | UCON_RXMODE_INT |
@@ -167,13 +167,13 @@ s3c2410_init(struct uart_bas *bas, int b
}
static void
-s3c2410_term(struct uart_bas *bas)
+exynos4210_term(struct uart_bas *bas)
{
/* XXX */
}
static void
-s3c2410_putc(struct uart_bas *bas, int c)
+exynos4210_putc(struct uart_bas *bas, int c)
{
while ((bus_space_read_4(bas->bst, bas->bsh, SSCOM_UFSTAT) &
@@ -184,7 +184,7 @@ s3c2410_putc(struct uart_bas *bas, int c
}
static int
-s3c2410_rxready(struct uart_bas *bas)
+exynos4210_rxready(struct uart_bas *bas)
{
return ((uart_getreg(bas, SSCOM_UTRSTAT) & UTRSTAT_RXREADY) ==
@@ -192,7 +192,7 @@ s3c2410_rxready(struct uart_bas *bas)
}
static int
-s3c2410_getc(struct uart_bas *bas, struct mtx *mtx)
+exynos4210_getc(struct uart_bas *bas, struct mtx *mtx)
{
int utrstat;
@@ -205,34 +205,34 @@ s3c2410_getc(struct uart_bas *bas, struc
return (bus_space_read_1(bas->bst, bas->bsh, SSCOM_URXH));
}
-static int s3c2410_bus_probe(struct uart_softc *sc);
-static int s3c2410_bus_attach(struct uart_softc *sc);
-static int s3c2410_bus_flush(struct uart_softc *, int);
-static int s3c2410_bus_getsig(struct uart_softc *);
-static int s3c2410_bus_ioctl(struct uart_softc *, int, intptr_t);
-static int s3c2410_bus_ipend(struct uart_softc *);
-static int s3c2410_bus_param(struct uart_softc *, int, int, int, int);
-static int s3c2410_bus_receive(struct uart_softc *);
-static int s3c2410_bus_setsig(struct uart_softc *, int);
-static int s3c2410_bus_transmit(struct uart_softc *);
-
-static kobj_method_t s3c2410_methods[] = {
- KOBJMETHOD(uart_probe, s3c2410_bus_probe),
- KOBJMETHOD(uart_attach, s3c2410_bus_attach),
- KOBJMETHOD(uart_flush, s3c2410_bus_flush),
- KOBJMETHOD(uart_getsig, s3c2410_bus_getsig),
- KOBJMETHOD(uart_ioctl, s3c2410_bus_ioctl),
- KOBJMETHOD(uart_ipend, s3c2410_bus_ipend),
- KOBJMETHOD(uart_param, s3c2410_bus_param),
- KOBJMETHOD(uart_receive, s3c2410_bus_receive),
- KOBJMETHOD(uart_setsig, s3c2410_bus_setsig),
- KOBJMETHOD(uart_transmit, s3c2410_bus_transmit),
+static int exynos4210_bus_probe(struct uart_softc *sc);
+static int exynos4210_bus_attach(struct uart_softc *sc);
+static int exynos4210_bus_flush(struct uart_softc *, int);
+static int exynos4210_bus_getsig(struct uart_softc *);
+static int exynos4210_bus_ioctl(struct uart_softc *, int, intptr_t);
+static int exynos4210_bus_ipend(struct uart_softc *);
+static int exynos4210_bus_param(struct uart_softc *, int, int, int, int);
+static int exynos4210_bus_receive(struct uart_softc *);
+static int exynos4210_bus_setsig(struct uart_softc *, int);
+static int exynos4210_bus_transmit(struct uart_softc *);
+
+static kobj_method_t exynos4210_methods[] = {
+ KOBJMETHOD(uart_probe, exynos4210_bus_probe),
+ KOBJMETHOD(uart_attach, exynos4210_bus_attach),
+ KOBJMETHOD(uart_flush, exynos4210_bus_flush),
+ KOBJMETHOD(uart_getsig, exynos4210_bus_getsig),
+ KOBJMETHOD(uart_ioctl, exynos4210_bus_ioctl),
+ KOBJMETHOD(uart_ipend, exynos4210_bus_ipend),
+ KOBJMETHOD(uart_param, exynos4210_bus_param),
+ KOBJMETHOD(uart_receive, exynos4210_bus_receive),
+ KOBJMETHOD(uart_setsig, exynos4210_bus_setsig),
+ KOBJMETHOD(uart_transmit, exynos4210_bus_transmit),
{0, 0 }
};
int
-s3c2410_bus_probe(struct uart_softc *sc)
+exynos4210_bus_probe(struct uart_softc *sc)
{
sc->sc_txfifosz = 16;
@@ -242,7 +242,7 @@ s3c2410_bus_probe(struct uart_softc *sc)
}
static int
-s3c2410_bus_attach(struct uart_softc *sc)
+exynos4210_bus_attach(struct uart_softc *sc)
{
sc->sc_hwiflow = 0;
@@ -252,7 +252,7 @@ s3c2410_bus_attach(struct uart_softc *sc
}
static int
-s3c2410_bus_transmit(struct uart_softc *sc)
+exynos4210_bus_transmit(struct uart_softc *sc)
{
int i;
int reg;
@@ -260,7 +260,7 @@ s3c2410_bus_transmit(struct uart_softc *
uart_lock(sc->sc_hwmtx);
for (i = 0; i < sc->sc_txdatasz; i++) {
- s3c2410_putc(&sc->sc_bas, sc->sc_txbuf[i]);
+ exynos4210_putc(&sc->sc_bas, sc->sc_txbuf[i]);
uart_barrier(&sc->sc_bas);
}
@@ -277,14 +277,14 @@ s3c2410_bus_transmit(struct uart_softc *
}
static int
-s3c2410_bus_setsig(struct uart_softc *sc, int sig)
+exynos4210_bus_setsig(struct uart_softc *sc, int sig)
{
return (0);
}
static int
-s3c2410_bus_receive(struct uart_softc *sc)
+exynos4210_bus_receive(struct uart_softc *sc)
{
struct uart_bas *bas;
@@ -297,7 +297,7 @@ s3c2410_bus_receive(struct uart_softc *s
}
static int
-s3c2410_bus_param(struct uart_softc *sc, int baudrate, int databits,
+exynos4210_bus_param(struct uart_softc *sc, int baudrate, int databits,
int stopbits, int parity)
{
int error;
@@ -305,10 +305,10 @@ s3c2410_bus_param(struct uart_softc *sc,
if (sc->sc_bas.rclk == 0)
sc->sc_bas.rclk = DEF_CLK;
- KASSERT(sc->sc_bas.rclk != 0, ("s3c2410_init: Invalid rclk"));
+ KASSERT(sc->sc_bas.rclk != 0, ("exynos4210_init: Invalid rclk"));
uart_lock(sc->sc_hwmtx);
- error = s3c24x0_uart_param(&sc->sc_bas, baudrate, databits, stopbits,
+ error = exynos4210_uart_param(&sc->sc_bas, baudrate, databits, stopbits,
parity);
uart_unlock(sc->sc_hwmtx);
@@ -316,7 +316,7 @@ s3c2410_bus_param(struct uart_softc *sc,
}
static int
-s3c2410_bus_ipend(struct uart_softc *sc)
+exynos4210_bus_ipend(struct uart_softc *sc)
{
uint32_t ints;
uint32_t txempty, rxready;
@@ -352,31 +352,31 @@ s3c2410_bus_ipend(struct uart_softc *sc)
}
static int
-s3c2410_bus_flush(struct uart_softc *sc, int what)
+exynos4210_bus_flush(struct uart_softc *sc, int what)
{
return (0);
}
static int
-s3c2410_bus_getsig(struct uart_softc *sc)
+exynos4210_bus_getsig(struct uart_softc *sc)
{
return (0);
}
static int
-s3c2410_bus_ioctl(struct uart_softc *sc, int request, intptr_t data)
+exynos4210_bus_ioctl(struct uart_softc *sc, int request, intptr_t data)
{
return (EINVAL);
}
-struct uart_class uart_s3c2410_class = {
- "s3c2410 class",
- s3c2410_methods,
+struct uart_class uart_exynos4210_class = {
+ "exynos4210 class",
+ exynos4210_methods,
1,
- .uc_ops = &uart_s3c2410_ops,
+ .uc_ops = &uart_exynos4210_ops,
.uc_range = 8,
.uc_rclk = 0,
};
Modified: projects/ifnet/sys/boot/usb/usbcore.mk
==============================================================================
--- projects/ifnet/sys/boot/usb/usbcore.mk Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/boot/usb/usbcore.mk Wed Jan 14 14:50:31 2015 (r277182)
@@ -142,6 +142,7 @@ KSRCS+= usb_template_mouse.c
KSRCS+= usb_template_kbd.c
KSRCS+= usb_template_audio.c
KSRCS+= usb_template_phone.c
+KSRCS+= usb_template_serialnet.c
#
# USB mass storage support
Modified: projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c
==============================================================================
--- projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c Wed Jan 14 14:49:58 2015 (r277181)
+++ projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c Wed Jan 14 14:50:31 2015 (r277182)
@@ -40,17 +40,20 @@
#define TRIM_ZIO_END(vd, offset, size) (offset + \
P2ROUNDUP(size, 1ULL << vd->vdev_top->vdev_ashift))
-#define TRIM_MAP_SINC(tm, size) \
- atomic_add_64(&(tm)->tm_bytes, (size))
+/* Maximal segment size for ATA TRIM. */
+#define TRIM_MAP_SIZE_FACTOR (512 << 16)
-#define TRIM_MAP_SDEC(tm, size) \
- atomic_add_64(&(tm)->tm_bytes, -(size))
+#define TRIM_MAP_SEGS(size) (1 + (size) / TRIM_MAP_SIZE_FACTOR)
-#define TRIM_MAP_QINC(tm) \
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list