Date: Tue, 25 Oct 2016 03:34:24 +0000 (UTC) From: Alan Cox <alc@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r307896 - in user/alc/PQ_LAUNDRY: contrib/bsnmp/lib lib/libc/powerpc/gen lib/libnetbsd lib/libnetbsd/sys release/tools share/mk sys/amd64/amd64 sys/arm/allwinner sys/arm/conf sys/boot/e... Message-ID: <201610250334.u9P3YOSx062350@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: alc Date: Tue Oct 25 03:34:24 2016 New Revision: 307896 URL: https://svnweb.freebsd.org/changeset/base/307896 Log: MFH r307894 Added: user/alc/PQ_LAUNDRY/sys/boot/forth/efi.4th - copied unchanged from r307894, head/sys/boot/forth/efi.4th Deleted: user/alc/PQ_LAUNDRY/sys/boot/ficl/efi.c Modified: user/alc/PQ_LAUNDRY/contrib/bsnmp/lib/snmp.c user/alc/PQ_LAUNDRY/lib/libc/powerpc/gen/Makefile.inc user/alc/PQ_LAUNDRY/lib/libnetbsd/sys/cdefs.h user/alc/PQ_LAUNDRY/lib/libnetbsd/util.c user/alc/PQ_LAUNDRY/release/tools/arm.subr user/alc/PQ_LAUNDRY/share/mk/bsd.compiler.mk user/alc/PQ_LAUNDRY/sys/amd64/amd64/trap.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_rsb.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_thermal.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/files.allwinner user/alc/PQ_LAUNDRY/sys/arm/conf/GENERIC user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/Makefile user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/env.c user/alc/PQ_LAUNDRY/sys/boot/efi/loader/main.c user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts user/alc/PQ_LAUNDRY/sys/boot/ficl/loader.c user/alc/PQ_LAUNDRY/sys/boot/forth/Makefile.inc user/alc/PQ_LAUNDRY/sys/boot/forth/loader.4th user/alc/PQ_LAUNDRY/sys/contrib/rdma/krping/krping.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_sge.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c user/alc/PQ_LAUNDRY/sys/i386/i386/trap.c user/alc/PQ_LAUNDRY/sys/kern/subr_prf.c user/alc/PQ_LAUNDRY/sys/netinet/ip_output.c user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_tables.c user/alc/PQ_LAUNDRY/sys/x86/include/x86_var.h user/alc/PQ_LAUNDRY/sys/x86/x86/cpu_machdep.c user/alc/PQ_LAUNDRY/sys/x86/x86/mp_x86.c user/alc/PQ_LAUNDRY/usr.sbin/mountd/mountd.8 user/alc/PQ_LAUNDRY/usr.sbin/mountd/mountd.c Directory Properties: user/alc/PQ_LAUNDRY/ (props changed) Modified: user/alc/PQ_LAUNDRY/contrib/bsnmp/lib/snmp.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bsnmp/lib/snmp.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/contrib/bsnmp/lib/snmp.c Tue Oct 25 03:34:24 2016 (r307896) @@ -288,7 +288,7 @@ parse_secparams(struct asn_buf *b, struc memset(buf, 0, 256); tb.asn_ptr = buf; tb.asn_len = 256; - u_int len; + u_int len = 256; if (asn_get_octetstring(b, buf, &len) != ASN_ERR_OK) { snmp_error("cannot parse usm header"); Modified: user/alc/PQ_LAUNDRY/lib/libc/powerpc/gen/Makefile.inc ============================================================================== --- user/alc/PQ_LAUNDRY/lib/libc/powerpc/gen/Makefile.inc Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/lib/libc/powerpc/gen/Makefile.inc Tue Oct 25 03:34:24 2016 (r307896) @@ -1,6 +1,6 @@ # $FreeBSD$ -.include "${LIBC_SRC}/powerpc/gen/Makefile.common" +.include "${LIBC_SRCTOP}/powerpc/gen/Makefile.common" SRCS += fabs.S flt_rounds.c fpgetmask.c fpgetround.c \ fpgetsticky.c fpsetmask.c fpsetround.c \ Modified: user/alc/PQ_LAUNDRY/lib/libnetbsd/sys/cdefs.h ============================================================================== --- user/alc/PQ_LAUNDRY/lib/libnetbsd/sys/cdefs.h Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/lib/libnetbsd/sys/cdefs.h Tue Oct 25 03:34:24 2016 (r307896) @@ -35,11 +35,13 @@ #include_next <sys/cdefs.h> +#ifndef __dead #ifdef __dead2 #define __dead __dead2 #else #define __dead #endif +#endif /* !__dead */ /* * The __CONCAT macro is used to concatenate parts of symbol names, e.g. Modified: user/alc/PQ_LAUNDRY/lib/libnetbsd/util.c ============================================================================== --- user/alc/PQ_LAUNDRY/lib/libnetbsd/util.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/lib/libnetbsd/util.c Tue Oct 25 03:34:24 2016 (r307896) @@ -36,7 +36,8 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> -#include <util.h> + +#include "util.h" char * flags_to_string(u_long flags, const char *def) Modified: user/alc/PQ_LAUNDRY/release/tools/arm.subr ============================================================================== --- user/alc/PQ_LAUNDRY/release/tools/arm.subr Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/release/tools/arm.subr Tue Oct 25 03:34:24 2016 (r307896) @@ -88,7 +88,6 @@ arm_create_user() { -c 'FreeBSD User' -d '/home/freebsd' -s '/bin/csh' chroot ${CHROOTDIR} /usr/sbin/pw -R ${DESTDIR} \ usermod root -w yes - chroot ${CHROOTDIR} ln -s /home ${DESTDIR}/usr/home return 0 } Modified: user/alc/PQ_LAUNDRY/share/mk/bsd.compiler.mk ============================================================================== --- user/alc/PQ_LAUNDRY/share/mk/bsd.compiler.mk Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/share/mk/bsd.compiler.mk Tue Oct 25 03:34:24 2016 (r307896) @@ -147,7 +147,7 @@ ${X_}COMPILER_TYPE:= clang ${X_}COMPILER_TYPE:= gcc . elif ${_v:M\(GCC\)} ${X_}COMPILER_TYPE:= gcc -. elif ${_v:Mclang} +. elif ${_v:Mclang} || ${_v:M(clang-*.*.*)} ${X_}COMPILER_TYPE:= clang . else .error Unable to determine compiler type for ${cc}=${${cc}}. Consider setting ${X_}COMPILER_TYPE. Modified: user/alc/PQ_LAUNDRY/sys/amd64/amd64/trap.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/amd64/amd64/trap.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/amd64/amd64/trap.c Tue Oct 25 03:34:24 2016 (r307896) @@ -144,9 +144,6 @@ static char *trap_msg[] = { "DTrace pid return trap", /* 32 T_DTRACE_RET */ }; -static int panic_on_nmi = 1; -SYSCTL_INT(_machdep, OID_AUTO, panic_on_nmi, CTLFLAG_RWTUN, - &panic_on_nmi, 0, "Panic on NMI"); static int prot_fault_translation; SYSCTL_INT(_machdep, OID_AUTO, prot_fault_translation, CTLFLAG_RWTUN, &prot_fault_translation, 0, @@ -372,7 +369,7 @@ trap(struct trapframe *frame) #ifdef DEV_ISA case T_NMI: - nmi_handle_intr(type, frame, true); + nmi_handle_intr(type, frame); break; #endif /* DEV_ISA */ @@ -544,10 +541,8 @@ trap(struct trapframe *frame) #ifdef DEV_ISA case T_NMI: - if (nmi_handle_intr(type, frame, false) || - !panic_on_nmi) - goto out; - /* FALLTHROUGH */ + nmi_handle_intr(type, frame); + goto out; #endif /* DEV_ISA */ } Modified: user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_rsb.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_rsb.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_rsb.c Tue Oct 25 03:34:24 2016 (r307896) @@ -27,7 +27,7 @@ */ /* - * Allwinner RSB (Reduced Serial Bus) + * Allwinner RSB (Reduced Serial Bus) and P2WI (Push-Pull Two Wire Interface) */ #include <sys/cdefs.h> @@ -92,8 +92,12 @@ __FBSDID("$FreeBSD$"); #define RSB_ADDR_PMIC_SECONDARY 0x745 #define RSB_ADDR_PERIPH_IC 0xe89 +#define A31_P2WI 1 +#define A23_RSB 2 + static struct ofw_compat_data compat_data[] = { - { "allwinner,sun8i-a23-rsb", 1 }, + { "allwinner,sun6i-a31-p2wi", A31_P2WI }, + { "allwinner,sun8i-a23-rsb", A23_RSB }, { NULL, 0 } }; @@ -131,6 +135,7 @@ struct rsb_softc { int busy; uint32_t status; uint16_t cur_addr; + int type; struct iic_msg *msg; }; @@ -270,8 +275,8 @@ rsb_transfer(device_t dev, struct iic_ms sc = device_get_softc(dev); /* - * RSB is not really an I2C or SMBus controller, so there are some - * restrictions imposed by the driver. + * P2WI and RSB are not really I2C or SMBus controllers, so there are + * some restrictions imposed by the driver. * * Transfers must contain exactly two messages. The first is always * a write, containing a single data byte offset. Data will either @@ -284,34 +289,36 @@ rsb_transfer(device_t dev, struct iic_ms msgs[0].len != 1 || msgs[1].len > RSB_MAXLEN) return (EINVAL); - /* The controller can read or write 1, 2, or 4 bytes at a time. */ - if ((msgs[1].flags & IIC_M_RD) != 0) { - switch (msgs[1].len) { - case 1: - cmd = CMD_RD8; - break; - case 2: - cmd = CMD_RD16; - break; - case 4: - cmd = CMD_RD32; - break; - default: - return (EINVAL); - } - } else { - switch (msgs[1].len) { - case 1: - cmd = CMD_WR8; - break; - case 2: - cmd = CMD_WR16; - break; - case 4: - cmd = CMD_WR32; - break; - default: - return (EINVAL); + /* The RSB controller can read or write 1, 2, or 4 bytes at a time. */ + if (sc->type == A23_RSB) { + if ((msgs[1].flags & IIC_M_RD) != 0) { + switch (msgs[1].len) { + case 1: + cmd = CMD_RD8; + break; + case 2: + cmd = CMD_RD16; + break; + case 4: + cmd = CMD_RD32; + break; + default: + return (EINVAL); + } + } else { + switch (msgs[1].len) { + case 1: + cmd = CMD_WR8; + break; + case 2: + cmd = CMD_WR16; + break; + case 4: + cmd = CMD_WR32; + break; + default: + return (EINVAL); + } } } @@ -322,13 +329,15 @@ rsb_transfer(device_t dev, struct iic_ms sc->status = 0; /* Select current run-time address if necessary */ - device_addr = msgs[0].slave >> 1; - if (sc->cur_addr != device_addr) { - error = rsb_set_rta(dev, device_addr); - if (error != 0) - goto done; - sc->cur_addr = device_addr; - sc->status = 0; + if (sc->type == A23_RSB) { + device_addr = msgs[0].slave >> 1; + if (sc->cur_addr != device_addr) { + error = rsb_set_rta(dev, device_addr); + if (error != 0) + goto done; + sc->cur_addr = device_addr; + sc->status = 0; + } } /* Clear interrupt status */ @@ -344,8 +353,9 @@ rsb_transfer(device_t dev, struct iic_ms RSB_WRITE(sc, RSB_DATA0, data[0]); } - /* Set command type */ - RSB_WRITE(sc, RSB_CMD, cmd); + /* Set command type for RSB */ + if (sc->type == A23_RSB) + RSB_WRITE(sc, RSB_CMD, cmd); /* Program data length register and transfer direction */ dlen = msgs[0].len - 1; @@ -379,10 +389,17 @@ rsb_probe(device_t dev) if (!ofw_bus_status_okay(dev)) return (ENXIO); - if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + switch (ofw_bus_search_compatible(dev, compat_data)->ocd_data) { + case A23_RSB: + device_set_desc(dev, "Allwinner RSB"); + break; + case A31_P2WI: + device_set_desc(dev, "Allwinner P2WI"); + break; + default: return (ENXIO); + } - device_set_desc(dev, "Allwinner RSB"); return (BUS_PROBE_DEFAULT); } @@ -395,6 +412,8 @@ rsb_attach(device_t dev) sc = device_get_softc(dev); mtx_init(&sc->mtx, device_get_nameunit(dev), "rsb", MTX_DEF); + sc->type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + if (clk_get_by_ofw_index(dev, 0, 0, &sc->clk) == 0) { error = clk_enable(sc->clk); if (error != 0) { Modified: user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_thermal.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_thermal.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_thermal.c Tue Oct 25 03:34:24 2016 (r307896) @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); #include <sys/reboot.h> #include <sys/module.h> #include <sys/cpu.h> +#include <sys/taskqueue.h> #include <machine/bus.h> #include <dev/ofw/ofw_bus.h> @@ -249,6 +250,7 @@ struct aw_thermal_softc { struct resource *res[2]; struct aw_thermal_config *conf; + struct task cf_task; int throttle; int min_freq; struct cf_level levels[MAX_CF_LEVELS]; @@ -390,6 +392,16 @@ aw_thermal_throttle(struct aw_thermal_so } static void +aw_thermal_cf_task(void *arg, int pending) +{ + struct aw_thermal_softc *sc; + + sc = arg; + + aw_thermal_throttle(sc, 1); +} + +static void aw_thermal_cf_pre_change(void *arg, const struct cf_level *level, int *status) { struct aw_thermal_softc *sc; @@ -430,7 +442,7 @@ aw_thermal_intr(void *arg) } if ((ints & ALARM_INT_ALL) != 0) - aw_thermal_throttle(sc, 1); + taskqueue_enqueue(taskqueue_thread, &sc->cf_task); } static int @@ -461,6 +473,7 @@ aw_thermal_attach(device_t dev) ih = NULL; sc->conf = THS_CONF(dev); + TASK_INIT(&sc->cf_task, 0, aw_thermal_cf_task, sc); if (bus_alloc_resources(dev, aw_thermal_spec, sc->res) != 0) { device_printf(dev, "cannot allocate resources for device\n"); Modified: user/alc/PQ_LAUNDRY/sys/arm/allwinner/files.allwinner ============================================================================== --- user/alc/PQ_LAUNDRY/sys/arm/allwinner/files.allwinner Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/arm/allwinner/files.allwinner Tue Oct 25 03:34:24 2016 (r307896) @@ -12,7 +12,7 @@ arm/allwinner/a10_mmc.c optional mmc arm/allwinner/a10_sramc.c standard arm/allwinner/aw_nmi.c optional intrng arm/allwinner/aw_if_dwc.c optional dwc -arm/allwinner/aw_rsb.c optional rsb +arm/allwinner/aw_rsb.c optional rsb | p2wi arm/allwinner/aw_rtc.c standard arm/allwinner/aw_ts.c standard arm/allwinner/aw_wdog.c standard Modified: user/alc/PQ_LAUNDRY/sys/arm/conf/GENERIC ============================================================================== --- user/alc/PQ_LAUNDRY/sys/arm/conf/GENERIC Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/arm/conf/GENERIC Tue Oct 25 03:34:24 2016 (r307896) @@ -106,11 +106,13 @@ device psci device iicbus device iic device twsi -device rsb +device rsb # Allwinner Reduced Serial Bus +device p2wi # Allwinner Push-Pull Two Wire device axp209 # AXP209 Power Management Unit device axp81x # AXP813/818 Power Management Unit device bcm2835_bsc device icee +device sy8106a # SY8106A Buck Regulator # GPIO device gpio Modified: user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/Makefile ============================================================================== --- user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/Makefile Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/Makefile Tue Oct 25 03:34:24 2016 (r307896) @@ -26,6 +26,7 @@ CFLAGS+= -msoft-float -mgeneral-regs-onl .if ${MACHINE_ARCH} == "amd64" CFLAGS+= -fPIC -mno-red-zone .endif +CFLAGS+= -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/${MACHINE} CFLAGS+= -I${.CURDIR}/../include CFLAGS+= -I${.CURDIR}/../include/${MACHINE} CFLAGS+= -I${.CURDIR}/../../../../lib/libstand Modified: user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/env.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/env.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/boot/efi/libefi/env.c Tue Oct 25 03:34:24 2016 (r307896) @@ -26,8 +26,15 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include <stand.h> +#include <string.h> #include <efi.h> #include <efilib.h> +#include <uuid.h> +#include "bootstrap.h" +#include "ficl.h" + +int efi_variable_support = 1; /* * Simple wrappers to the underlying UEFI functions. @@ -53,3 +60,175 @@ efi_set_variable(CHAR16 *variable_name, { return RS->SetVariable(variable_name, vendor_guid, attributes, data_size, data); } + +/* + * FreeBSD's loader interaction words and extras + * + * efi-setenv ( value n name n guid n attr -- 0 | -1) + * efi-getenv ( guid n addr n -- addr' n' | -1 ) + * efi-unsetenv ( name n guid n'' -- ) + */ + +/* + * efi-setenv + * efi-setenv ( value n name n guid n attr -- 0 | -1) + * + * Set environment variables using the SetVariable EFI runtime service. + * + * Value and guid are passed through in binary form (so guid needs to be + * converted to binary form from its string form). Name is converted from + * ASCII to CHAR16. Since ficl doesn't have support for internationalization, + * there's no native CHAR16 interface provided. + * + * attr is an int in the bitmask of the following attributes for this variable. + * + * 1 Non volatile + * 2 Boot service access + * 4 Run time access + * (corresponding to the same bits in the UEFI spec). + */ +void +ficlEfiSetenv(FICL_VM *pVM) +{ +#ifndef TESTMAIN + char *value = NULL, *guid = NULL; + CHAR16 *name = NULL; + int i; +#endif + char *namep, *valuep, *guidp; + int names, values, guids, attr; + int status; + uuid_t u; + uint32_t ustatus; + +#if FICL_ROBUST > 1 + vmCheckStack(pVM, 6, 0); +#endif + attr = stackPopINT(pVM->pStack); + guids = stackPopINT(pVM->pStack); + guidp = (char*)stackPopPtr(pVM->pStack); + names = stackPopINT(pVM->pStack); + namep = (char*)stackPopPtr(pVM->pStack); + values = stackPopINT(pVM->pStack); + valuep = (char*)stackPopPtr(pVM->pStack); + +#ifndef TESTMAIN + guid = (char*)ficlMalloc(guids); + if (guid != NULL) + vmThrowErr(pVM, "Error: out of memory"); + memcpy(guid, guidp, guids); + uuid_from_string(guid, &u, &ustatus); + if (ustatus != uuid_s_ok) { + stackPushINT(pVM->pStack, -1); + goto out; + } + + name = (CHAR16 *)ficlMalloc((names + 1) * sizeof(CHAR16)); + if (name == NULL) + vmThrowErr(pVM, "Error: out of memory"); + for (i = 0; i < names; i++) + name[i] = namep[i]; + name[names] = (CHAR16)0; + + value = (char*)ficlMalloc(values + 1); + if (value != NULL) + vmThrowErr(pVM, "Error: out of memory"); + memcpy(value, valuep, values); + + status = efi_set_variable(name, (EFI_GUID *)&u, attr, values, value); + if (status == EFI_SUCCESS) + stackPushINT(pVM->pStack, 0); + else + stackPushINT(pVM->pStack, -1); +out: + ficlFree(name); + ficlFree(value); + ficlFree(guid); +#endif + + return; +} + +void +ficlEfiGetenv(FICL_VM *pVM) +{ +#ifndef TESTMAIN + char *name, *value; +#endif + char *namep; + int names; + +#if FICL_ROBUST > 1 + vmCheckStack(pVM, 2, 2); +#endif + names = stackPopINT(pVM->pStack); + namep = (char*) stackPopPtr(pVM->pStack); + +#ifndef TESTMAIN + name = (char*) ficlMalloc(names+1); + if (!name) + vmThrowErr(pVM, "Error: out of memory"); + strncpy(name, namep, names); + name[names] = '\0'; + + value = getenv(name); + ficlFree(name); + + if(value != NULL) { + stackPushPtr(pVM->pStack, value); + stackPushINT(pVM->pStack, strlen(value)); + } else +#endif + stackPushINT(pVM->pStack, -1); + + return; +} + +void +ficlEfiUnsetenv(FICL_VM *pVM) +{ +#ifndef TESTMAIN + char *name; +#endif + char *namep; + int names; + +#if FICL_ROBUST > 1 + vmCheckStack(pVM, 2, 0); +#endif + names = stackPopINT(pVM->pStack); + namep = (char*) stackPopPtr(pVM->pStack); + +#ifndef TESTMAIN + name = (char*) ficlMalloc(names+1); + if (!name) + vmThrowErr(pVM, "Error: out of memory"); + strncpy(name, namep, names); + name[names] = '\0'; + + unsetenv(name); + ficlFree(name); +#endif + + return; +} + +/************************************************************************** +** Add FreeBSD UEFI platform extensions into the system dictionary +**************************************************************************/ +void ficlEfiCompilePlatform(FICL_SYSTEM *pSys) +{ + FICL_DICT *dp = pSys->dp; + assert (dp); + + dictAppendWord(dp, "efi-setenv", ficlEfiSetenv, FW_DEFAULT); + dictAppendWord(dp, "efi-getenv", ficlEfiGetenv, FW_DEFAULT); + dictAppendWord(dp, "efi-unsetenv", ficlEfiUnsetenv, FW_DEFAULT); + + /* Would like to export the EFI version, but this will do for now */ + ficlSetEnv(pSys, "efi-boot", 1); + + return; +} + +FICL_COMPILE_SET(ficlEfiCompilePlatform); Modified: user/alc/PQ_LAUNDRY/sys/boot/efi/loader/main.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/boot/efi/loader/main.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/boot/efi/loader/main.c Tue Oct 25 03:34:24 2016 (r307896) @@ -55,6 +55,10 @@ extern char bootprog_rev[]; extern char bootprog_date[]; extern char bootprog_maker[]; +/* Force a reference to bring in EFI support from the library */ +extern int efi_variable_support; +int *dummy1 = &efi_variable_support; + struct arch_switch archsw; /* MI/MD interface boundary */ EFI_GUID acpi = ACPI_TABLE_GUID; @@ -906,8 +910,8 @@ command_efi_show(int argc, char *argv[]) return (rv); } - if (argc != 0) { - printf("Too many args\n"); + if (argc > 0) { + printf("Too many args %d\n", argc); pager_close(); return (CMD_ERROR); } Modified: user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts ============================================================================== --- user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts Tue Oct 25 03:34:24 2016 (r307896) @@ -41,3 +41,7 @@ }; }; }; + +&cpu0 { + cpu-supply = <®_dcdc2>; +}; Modified: user/alc/PQ_LAUNDRY/sys/boot/ficl/loader.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/boot/ficl/loader.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/boot/ficl/loader.c Tue Oct 25 03:34:24 2016 (r307896) @@ -824,9 +824,8 @@ void ficlCompilePlatform(FICL_SYSTEM *pS dictAppendWord(dp, "uuid-from-string", ficlUuidFromString, FW_DEFAULT); dictAppendWord(dp, "uuid-to-string", ficlUuidToString, FW_DEFAULT); - SET_FOREACH(fnpp, Xficl_compile_set) { + SET_FOREACH(fnpp, Xficl_compile_set) (*fnpp)(pSys); - } #if defined(PC98) ficlSetEnv(pSys, "arch-pc98", FICL_TRUE); Modified: user/alc/PQ_LAUNDRY/sys/boot/forth/Makefile.inc ============================================================================== --- user/alc/PQ_LAUNDRY/sys/boot/forth/Makefile.inc Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/boot/forth/Makefile.inc Tue Oct 25 03:34:24 2016 (r307896) @@ -6,6 +6,7 @@ FILES+= brand-fbsd.4th FILES+= check-password.4th FILES+= color.4th FILES+= delay.4th +FILES+= efi.4th FILES+= frames.4th FILES+= loader.4th FILES+= loader.conf Copied: user/alc/PQ_LAUNDRY/sys/boot/forth/efi.4th (from r307894, head/sys/boot/forth/efi.4th) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/alc/PQ_LAUNDRY/sys/boot/forth/efi.4th Tue Oct 25 03:34:24 2016 (r307896, copy of r307894, head/sys/boot/forth/efi.4th) @@ -0,0 +1,30 @@ +\ Copyright (c) 2016 Netflix, Inc +\ All rights reserved. +\ +\ Redistribution and use in source and binary forms, with or without +\ modification, are permitted provided that the following conditions +\ are met: +\ 1. Redistributions of source code must retain the above copyright +\ notice, this list of conditions and the following disclaimer. +\ 2. Redistributions in binary form must reproduce the above copyright +\ notice, this list of conditions and the following disclaimer in the +\ documentation and/or other materials provided with the distribution. +\ +\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +\ SUCH DAMAGE. +\ +\ $FreeBSD$ + +only forth definitions + +\ Place holder for more functions +.( EFI boot environment) cr Modified: user/alc/PQ_LAUNDRY/sys/boot/forth/loader.4th ============================================================================== --- user/alc/PQ_LAUNDRY/sys/boot/forth/loader.4th Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/boot/forth/loader.4th Tue Oct 25 03:34:24 2016 (r307896) @@ -46,6 +46,9 @@ include /boot/support.4th include /boot/color.4th include /boot/delay.4th include /boot/check-password.4th +s" efi-boot" environment? [if] [if] + include /boot/efi.4th +[then] [then] only forth definitions Modified: user/alc/PQ_LAUNDRY/sys/contrib/rdma/krping/krping.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/contrib/rdma/krping/krping.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/contrib/rdma/krping/krping.c Tue Oct 25 03:34:24 2016 (r307896) @@ -548,11 +548,11 @@ static int krping_setup_buffers(struct k DEBUG_LOG(cb, "krping_setup_buffers called on cb %p\n", cb); - cb->recv_dma_addr = dma_map_single(cb->pd->device->dma_device, + cb->recv_dma_addr = ib_dma_map_single(cb->pd->device, &cb->recv_buf, sizeof(cb->recv_buf), DMA_BIDIRECTIONAL); pci_unmap_addr_set(cb, recv_mapping, cb->recv_dma_addr); - cb->send_dma_addr = dma_map_single(cb->pd->device->dma_device, + cb->send_dma_addr = ib_dma_map_single(cb->pd->device, &cb->send_buf, sizeof(cb->send_buf), DMA_BIDIRECTIONAL); pci_unmap_addr_set(cb, send_mapping, cb->send_dma_addr); @@ -606,7 +606,7 @@ static int krping_setup_buffers(struct k goto bail; } - cb->rdma_dma_addr = dma_map_single(cb->pd->device->dma_device, + cb->rdma_dma_addr = ib_dma_map_single(cb->pd->device, cb->rdma_buf, cb->size, DMA_BIDIRECTIONAL); pci_unmap_addr_set(cb, rdma_mapping, cb->rdma_dma_addr); @@ -676,7 +676,7 @@ static int krping_setup_buffers(struct k goto bail; } - cb->start_dma_addr = dma_map_single(cb->pd->device->dma_device, + cb->start_dma_addr = ib_dma_map_single(cb->pd->device, cb->start_buf, cb->size, DMA_BIDIRECTIONAL); pci_unmap_addr_set(cb, start_mapping, cb->start_dma_addr); @@ -1707,7 +1707,7 @@ static void krping_fr_test5(struct krpin goto err2; } DEBUG_LOG(cb, "%s buf[%u] %p\n", __func__, scnt, buf[scnt]); - dma_addr[scnt] = dma_map_single(cb->pd->device->dma_device, + dma_addr[scnt] = ib_dma_map_single(cb->pd->device, buf[scnt], cb->size, DMA_BIDIRECTIONAL); if (dma_mapping_error(cb->pd->device->dma_device, @@ -2032,7 +2032,7 @@ static void krping_fr_test6(struct krpin goto err2; } DEBUG_LOG(cb, "%s buf[%u] %p\n", __func__, scnt, buf[scnt]); - dma_addr[scnt] = dma_map_single(cb->pd->device->dma_device, + dma_addr[scnt] = ib_dma_map_single(cb->pd->device, buf[scnt], cb->size, DMA_BIDIRECTIONAL); if (dma_mapping_error(cb->pd->device->dma_device, Modified: user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_sge.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_sge.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_sge.c Tue Oct 25 03:34:24 2016 (r307896) @@ -2110,24 +2110,6 @@ m_advance(struct mbuf **pm, int *poffset return ((void *)p); } -static inline int -same_paddr(char *a, char *b) -{ - - if (a == b) - return (1); - else if (a != NULL && b != NULL) { - vm_offset_t x = (vm_offset_t)a; - vm_offset_t y = (vm_offset_t)b; - - if ((x & PAGE_MASK) == (y & PAGE_MASK) && - pmap_kextract(x) == pmap_kextract(y)) - return (1); - } - - return (0); -} - /* * Can deal with empty mbufs in the chain that have m_len = 0, but the chain * must have at least one mbuf that's not empty. @@ -2135,24 +2117,25 @@ same_paddr(char *a, char *b) static inline int count_mbuf_nsegs(struct mbuf *m) { - char *prev_end, *start; + vm_paddr_t lastb, next; + vm_offset_t va; int len, nsegs; MPASS(m != NULL); nsegs = 0; - prev_end = NULL; + lastb = 0; for (; m; m = m->m_next) { len = m->m_len; if (__predict_false(len == 0)) continue; - start = mtod(m, char *); - - nsegs += sglist_count(start, len); - if (same_paddr(prev_end, start)) + va = mtod(m, vm_offset_t); + next = pmap_kextract(va); + nsegs += sglist_count(m->m_data, len); + if (lastb + 1 == next) nsegs--; - prev_end = start + len; + lastb = pmap_kextract(va + len - 1); } MPASS(nsegs > 0); Modified: user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c Tue Oct 25 03:34:24 2016 (r307896) @@ -789,6 +789,7 @@ netvsc_attach(device_t dev) * Setup the ifnet for this interface. */ + ifp->if_baudrate = IF_Gbps(10); ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_ioctl = hn_ioctl; ifp->if_init = hn_init; Modified: user/alc/PQ_LAUNDRY/sys/i386/i386/trap.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/i386/i386/trap.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/i386/i386/trap.c Tue Oct 25 03:34:24 2016 (r307896) @@ -158,14 +158,6 @@ static char *trap_msg[] = { int has_f00f_bug = 0; /* Initialized so that it can be patched. */ #endif -#ifdef KDB -static int kdb_on_nmi = 1; -SYSCTL_INT(_machdep, OID_AUTO, kdb_on_nmi, CTLFLAG_RWTUN, - &kdb_on_nmi, 0, "Go to KDB on NMI"); -#endif -static int panic_on_nmi = 1; -SYSCTL_INT(_machdep, OID_AUTO, panic_on_nmi, CTLFLAG_RWTUN, - &panic_on_nmi, 0, "Panic on NMI"); static int prot_fault_translation = 0; SYSCTL_INT(_machdep, OID_AUTO, prot_fault_translation, CTLFLAG_RW, &prot_fault_translation, 0, "Select signal to deliver on protection fault"); @@ -467,7 +459,7 @@ user_trctrap_out: } goto userout; #else /* !POWERFAIL_NMI */ - nmi_handle_intr(type, frame, true); + nmi_handle_intr(type, frame); break; #endif /* POWERFAIL_NMI */ #endif /* DEV_ISA */ @@ -716,10 +708,8 @@ kernel_trctrap: } goto out; #else /* !POWERFAIL_NMI */ - if (nmi_handle_intr(type, frame, false) || - !panic_on_nmi) - goto out; - /* FALLTHROUGH */ + nmi_handle_intr(type, frame); + goto out; #endif /* POWERFAIL_NMI */ #endif /* DEV_ISA */ } Modified: user/alc/PQ_LAUNDRY/sys/kern/subr_prf.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/kern/subr_prf.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/kern/subr_prf.c Tue Oct 25 03:34:24 2016 (r307896) @@ -72,7 +72,11 @@ __FBSDID("$FreeBSD$"); * Note that stdarg.h and the ANSI style va_start macro is used for both * ANSI and traditional C compilers. */ +#ifdef _KERNEL #include <machine/stdarg.h> +#else +#include <stdarg.h> +#endif #ifdef _KERNEL Modified: user/alc/PQ_LAUNDRY/sys/netinet/ip_output.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/netinet/ip_output.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/netinet/ip_output.c Tue Oct 25 03:34:24 2016 (r307896) @@ -350,7 +350,8 @@ again: have_ia_ref = 1; ifp = ia->ia_ifp; ip->ip_ttl = 1; - isbroadcast = in_ifaddr_broadcast(dst->sin_addr, ia); + isbroadcast = ifp->if_flags & IFF_BROADCAST ? + in_ifaddr_broadcast(dst->sin_addr, ia) : 0; } else if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) && imo != NULL && imo->imo_multicast_ifp != NULL) { /* @@ -403,8 +404,10 @@ again: gw = (struct sockaddr_in *)rte->rt_gateway; if (rte->rt_flags & RTF_HOST) isbroadcast = (rte->rt_flags & RTF_BROADCAST); - else + else if (ifp->if_flags & IFF_BROADCAST) isbroadcast = in_ifaddr_broadcast(gw->sin_addr, ia); + else + isbroadcast = 0; } /* Modified: user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_tables.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_tables.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_tables.c Tue Oct 25 03:34:24 2016 (r307896) @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> +#include <sys/types.h> #include <ufs/ufs/dinode.h> #include <ufs/ffs/fs.h> Modified: user/alc/PQ_LAUNDRY/sys/x86/include/x86_var.h ============================================================================== --- user/alc/PQ_LAUNDRY/sys/x86/include/x86_var.h Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/x86/include/x86_var.h Tue Oct 25 03:34:24 2016 (r307896) @@ -108,10 +108,9 @@ bool fix_cpuid(void); void fillw(int /*u_short*/ pat, void *base, size_t cnt); int is_physical_memory(vm_paddr_t addr); int isa_nmi(int cd); -bool nmi_call_kdb(u_int cpu, u_int type, struct trapframe *frame, - bool panic); -bool nmi_call_kdb_smp(u_int type, struct trapframe *frame, bool panic); -int nmi_handle_intr(u_int type, struct trapframe *frame, bool panic); +void nmi_call_kdb(u_int cpu, u_int type, struct trapframe *frame); +void nmi_call_kdb_smp(u_int type, struct trapframe *frame); +void nmi_handle_intr(u_int type, struct trapframe *frame); void pagecopy(void *from, void *to); void printcpuinfo(void); int user_dbreg_trap(void); Modified: user/alc/PQ_LAUNDRY/sys/x86/x86/cpu_machdep.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/x86/x86/cpu_machdep.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/x86/x86/cpu_machdep.c Tue Oct 25 03:34:24 2016 (r307896) @@ -524,6 +524,10 @@ idle_sysctl(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_machdep, OID_AUTO, idle, CTLTYPE_STRING | CTLFLAG_RW, 0, 0, idle_sysctl, "A", "currently selected idle function"); +static int panic_on_nmi = 1; +SYSCTL_INT(_machdep, OID_AUTO, panic_on_nmi, CTLFLAG_RWTUN, + &panic_on_nmi, 0, + "Panic on NMI"); int nmi_is_broadcast = 1; SYSCTL_INT(_machdep, OID_AUTO, nmi_is_broadcast, CTLFLAG_RWTUN, &nmi_is_broadcast, 0, @@ -536,8 +540,8 @@ SYSCTL_INT(_machdep, OID_AUTO, kdb_on_nm #endif #ifdef DEV_ISA -bool -nmi_call_kdb(u_int cpu, u_int type, struct trapframe *frame, bool do_panic) +void +nmi_call_kdb(u_int cpu, u_int type, struct trapframe *frame) { /* machine/parity/power fail/"kitchen sink" faults */ @@ -549,26 +553,25 @@ nmi_call_kdb(u_int cpu, u_int type, stru if (kdb_on_nmi) { printf ("NMI/cpu%d ... going to debugger\n", cpu); kdb_trap(type, 0, frame); - return (true); } - } else #endif /* KDB */ - if (do_panic) + } else if (panic_on_nmi) { panic("NMI indicates hardware failure"); - return (false); + } } #endif -int -nmi_handle_intr(u_int type, struct trapframe *frame, bool panic) +void +nmi_handle_intr(u_int type, struct trapframe *frame) { #ifdef DEV_ISA #ifdef SMP - if (nmi_is_broadcast) - return (nmi_call_kdb_smp(type, frame, panic)); - else + if (nmi_is_broadcast) { + nmi_call_kdb_smp(type, frame); + return; + } #endif - return (nmi_call_kdb(0, type, frame, panic)); + nmi_call_kdb(0, type, frame); #endif } Modified: user/alc/PQ_LAUNDRY/sys/x86/x86/mp_x86.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/x86/x86/mp_x86.c Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/sys/x86/x86/mp_x86.c Tue Oct 25 03:34:24 2016 (r307896) @@ -1216,18 +1216,17 @@ ipi_nmi_handler(void) #ifdef DEV_ISA int nmi_kdb_lock; -bool -nmi_call_kdb_smp(u_int type, struct trapframe *frame, bool do_panic) +void +nmi_call_kdb_smp(u_int type, struct trapframe *frame) { int cpu; - bool call_post, ret; + bool call_post; cpu = PCPU_GET(cpuid); if (atomic_cmpset_acq_int(&nmi_kdb_lock, 0, 1)) { - ret = nmi_call_kdb(cpu, type, frame, do_panic); + nmi_call_kdb(cpu, type, frame); call_post = false; } else { - ret = true; savectx(&stoppcbs[cpu]); CPU_SET_ATOMIC(cpu, &stopped_cpus); while (!atomic_cmpset_acq_int(&nmi_kdb_lock, 0, 1)) @@ -1237,7 +1236,6 @@ nmi_call_kdb_smp(u_int type, struct trap atomic_store_rel_int(&nmi_kdb_lock, 0); if (call_post) cpustop_handler_post(cpu); - return (ret); } #endif @@ -1351,7 +1349,7 @@ invlcache_handler(void) * Reading the generation here allows greater parallelism * since wbinvd is a serializing instruction. Without the * temporary, we'd wait for wbinvd to complete, then the read - * would execute, then the dependent write, whuch must then + * would execute, then the dependent write, which must then * complete before return from interrupt. */ generation = smp_tlb_generation; Modified: user/alc/PQ_LAUNDRY/usr.sbin/mountd/mountd.8 ============================================================================== --- user/alc/PQ_LAUNDRY/usr.sbin/mountd/mountd.8 Tue Oct 25 03:26:00 2016 (r307895) +++ user/alc/PQ_LAUNDRY/usr.sbin/mountd/mountd.8 Tue Oct 25 03:34:24 2016 (r307896) @@ -28,7 +28,7 @@ .\" @(#)mountd.8 8.4 (Berkeley) 4/28/95 .\" $FreeBSD$ .\" -.Dd October 14, 2012 +.Dd October 24, 2016 .Dt MOUNTD 8 .Os *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201610250334.u9P3YOSx062350>