svn commit: r355554 - head/usr.bin/netstat
Author: bapt Date: Mon Dec 9 10:21:24 2019 New Revision: 34 URL: https://svnweb.freebsd.org/changeset/base/34 Log: Fix: netstat -rs Routing statistics requires somes symbols that are only loaded when not running live. Load them only in that specific case PR: 242423 Submitted by: olivier MFC after:3 days Modified: head/usr.bin/netstat/main.c Modified: head/usr.bin/netstat/main.c == --- head/usr.bin/netstat/main.c Mon Dec 9 07:18:40 2019(r33) +++ head/usr.bin/netstat/main.c Mon Dec 9 10:21:24 2019(r34) @@ -484,6 +484,9 @@ main(int argc, char *argv[]) if (rflag) { xo_open_container("statistics"); if (sflag) { + if (live) { + kresolve_list(nl); + } rt_stats(); } else routepr(fib, af); ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r355554 - head/usr.bin/netstat
On 9 Dec 2019, at 10:21, Baptiste Daroussin wrote: Author: bapt Date: Mon Dec 9 10:21:24 2019 New Revision: 34 URL: https://svnweb.freebsd.org/changeset/base/34 Log: Fix: netstat -rs Routing statistics requires somes symbols that are only loaded when not running live. Load them only in that specific case We should really make sure we can get them another way and don’t need this. Of course that’s another issue ;-) /bz ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355555 - in head/sys: conf powerpc/powernv powerpc/pseries
Author: luporl Date: Mon Dec 9 13:09:32 2019 New Revision: 35 URL: https://svnweb.freebsd.org/changeset/base/35 Log: [PPC64] Enable opal console use as a GDB DBGPORT This change makes it possible to use OPAL console as a GDB debug port. Similar to uart and uart_phyp debug ports, it has to be enabled by setting the hw.uart.dbgport variable to the serial console node of the device tree. Reviewed by: jhibbits Differential Revision:https://reviews.freebsd.org/D22649 Added: head/sys/powerpc/powernv/opal_dbg.c (contents, props changed) Modified: head/sys/conf/files.powerpc head/sys/powerpc/pseries/phyp_dbg.c Modified: head/sys/conf/files.powerpc == --- head/sys/conf/files.powerpc Mon Dec 9 10:21:24 2019(r34) +++ head/sys/conf/files.powerpc Mon Dec 9 13:09:32 2019(r35) @@ -185,6 +185,7 @@ powerpc/powermac/vcoregpio.coptional powermac powerpc/powernv/opal.c optionalpowernv powerpc/powernv/opal_async.c optionalpowernv powerpc/powernv/opal_console.c optionalpowernv +powerpc/powernv/opal_dbg.c optionalpowernv gdb powerpc/powernv/opal_dev.c optionalpowernv powerpc/powernv/opal_flash.c optionalpowernv opalflash powerpc/powernv/opal_hmi.c optionalpowernv Added: head/sys/powerpc/powernv/opal_dbg.c == --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/powerpc/powernv/opal_dbg.c Mon Dec 9 13:09:32 2019 (r35) @@ -0,0 +1,151 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (C) 2019 Leandro Lupori + * + * 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 ``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 TOOLS GMBH 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +struct thread; + +#include +#include + +#include +#include + +#include "opal.h" + +static gdb_probe_f uart_opal_dbg_probe; +static gdb_init_f uart_opal_dbg_init; +static gdb_term_f uart_opal_dbg_term; +static gdb_getc_f uart_opal_dbg_getc; +static gdb_putc_f uart_opal_dbg_putc; + +GDB_DBGPORT(uart_opal, uart_opal_dbg_probe, +uart_opal_dbg_init, uart_opal_dbg_term, +uart_opal_dbg_getc, uart_opal_dbg_putc); + +static int64_t termnum; + +static int +uart_opal_dbg_probe(void) +{ + char buf[64]; + cell_t reg; + phandle_t dev; + + if (!getenv_string("hw.uart.dbgport", buf, sizeof(buf))) + return (-1); + if ((dev = OF_finddevice(buf)) == -1) + return (-1); + + if (OF_getprop(dev, "device_type", buf, sizeof(buf)) == -1) + return (-1); + if (strcmp(buf, "serial") != 0) + return (-1); + + if (OF_getprop(dev, "compatible", buf, sizeof(buf)) == -1) + return (-1); + if (strcmp(buf, "ibm,opal-console-raw") != 0) + return (-1); + + reg = ~0U; + OF_getencprop(dev, "reg", ®, sizeof(reg)); + if (reg == ~0U) + return (-1); + termnum = reg; + + return (0); +} + +static void +uart_opal_dbg_init(void) +{ +} + +static void +uart_opal_dbg_term(void) +{ +} + +static int +uart_opal_dbg_getc(void) +{ + char c; + int err; + int64_t len; + uint64_t lenp, bufp; + + len = 1; + if (pmap_bootstrapped) { + lenp = vtophys(&len); + bufp = vtophys(&c); + } else { + lenp = (uint64_t)&len; + bufp = (uint64_t)&c; + } + + err = opal_call(OPAL_CONSOLE_READ, termnum, lenp, bufp); + if (err != OPAL_SUCCESS || len != 1) + return (-1); + +
svn commit: r355556 - in head/sys: dev/vt/hw/ofwfb powerpc/ofw powerpc/pseries
Author: luporl Date: Mon Dec 9 13:40:23 2019 New Revision: 36 URL: https://svnweb.freebsd.org/changeset/base/36 Log: Enable use of ofwcons for early debug This change enables the use of OpenFirmware Console (ofwcons), even when VGA is available, allowing early kernel messages to be seen, that is important in case of crashes before VGA console initialization. This is specially useful in virtualized environments, where the user/developer doesn't have full control of the virtualization engine (e.g. OpenStack). The old behavior is preserved by default and, in order to use ofwcons, a few tunables that have been introduced need to be set: - hw.ofwfb.disable=1 - disable OFW FrameBuffer device - machdep.ofw.mtx_spin=1 - change PPC OFW mutex to SPIN type, to match kernel console's mutex type - debug.quiesce_ofw=0- don't call OFW quiesce, needed to keep ofwcons I/O working More details can be found at differential revision D20640. Reviewed by: jhibbits Differential Revision:https://reviews.freebsd.org/D20640 Modified: head/sys/dev/vt/hw/ofwfb/ofwfb.c head/sys/powerpc/ofw/ofw_real.c head/sys/powerpc/pseries/platform_chrp.c Modified: head/sys/dev/vt/hw/ofwfb/ofwfb.c == --- head/sys/dev/vt/hw/ofwfb/ofwfb.cMon Dec 9 13:09:32 2019 (r35) +++ head/sys/dev/vt/hw/ofwfb/ofwfb.cMon Dec 9 13:40:23 2019 (r36) @@ -90,9 +90,15 @@ VT_DRIVER_DECLARE(vt_ofwfb, vt_ofwfb_driver); static int ofwfb_probe(struct vt_device *vd) { + int disabled; phandle_t chosen, node; ihandle_t stdout; char buf[64]; + + disabled = 0; + TUNABLE_INT_FETCH("hw.ofwfb.disable", &disabled); + if (disabled) + return (CN_DEAD); chosen = OF_finddevice("/chosen"); if (chosen == -1) Modified: head/sys/powerpc/ofw/ofw_real.c == --- head/sys/powerpc/ofw/ofw_real.c Mon Dec 9 13:09:32 2019 (r35) +++ head/sys/powerpc/ofw/ofw_real.c Mon Dec 9 13:40:23 2019 (r36) @@ -168,7 +168,45 @@ static vm_offset_t of_bounce_phys; static caddr_t of_bounce_virt; static off_t of_bounce_offset; static size_t of_bounce_size; + +/* + * To be able to use OFW console on PPC, that requires real mode OFW, + * the mutex that guards the mapping/unmapping of virtual to physical + * buffers (of_real_mtx) must be of SPIN type. This is needed because + * kernel console first locks a SPIN mutex before calling OFW real. + * By default, of_real_mtx is a sleepable mutex. To make it of SPIN + * type, use the following tunnable: + * machdep.ofw.mtx_spin=1 + * + * Besides that, a few more tunables are needed to select and use the + * OFW console with real mode OFW. + * + * In order to disable the use of OFW FrameBuffer and fallback to the + * OFW console, use: + * hw.ofwfb.disable=1 + * + * To disable the use of FDT (that doesn't support OFW read/write methods) + * and use real OFW instead, unset the following loader variable: + * unset usefdt + * + * OFW is put in quiesce state in early kernel boot, which usually disables + * OFW read/write capabilities (in QEMU write continue to work, but + * read doesn't). To avoid OFW quiesce, use: + * debug.quiesce_ofw=0 + * + * Note that disabling OFW quiesce can cause conflicts between kernel and + * OFW trying to control the same hardware. Thus, it must be used with care. + * Some conflicts can be avoided by disabling kernel drivers with hints. + * For instance, to disable a xhci controller and an USB keyboard connected + * to it, that may be already being used for input by OFW, use: + * hint.xhci.0.disabled=1 + */ + static struct mtx of_bounce_mtx; +static struct mtx of_spin_mtx; +static struct mtx *of_real_mtx; +static void(*of_mtx_lock)(void); +static void(*of_mtx_unlock)(void); extern int ofw_real_mode; @@ -182,16 +220,40 @@ SYSINIT(ofw_real_bounce_alloc, SI_SUB_KMEM, SI_ORDER_A ofw_real_bounce_alloc, NULL); static void +ofw_real_mtx_lock_spin(void) +{ + mtx_lock_spin(of_real_mtx); +} + +static void +ofw_real_mtx_lock(void) +{ + mtx_lock(of_real_mtx); +} + +static void +ofw_real_mtx_unlock_spin(void) +{ + mtx_unlock_spin(of_real_mtx); +} + +static void +ofw_real_mtx_unlock(void) +{ + mtx_unlock(of_real_mtx); +} + +static void ofw_real_start(void) { - mtx_lock(&of_bounce_mtx); + (*of_mtx_lock)(); of_bounce_offset = 0; } - + static void ofw_real_stop(void) { - mtx_unlock(&of_bounce_mtx); + (*of_mtx_unlock)(); } static void @@ -228,7 +290,7 @@ ofw_real_bounce_alloc(void *junk) * we have a 32-bit virtual address to give OF. */ - if (!ofw_real
svn commit: r355557 - head/lib/libkvm
Author: luporl Date: Mon Dec 9 13:59:36 2019 New Revision: 37 URL: https://svnweb.freebsd.org/changeset/base/37 Log: [PPC64] Initial libkvm minidump implementation This change adds PowerPC64 support for minidumps on libkvm. Address translation, page walk, and data retrieval were tested and seem to be working correctly. Reviewed by: jhibbits Differential Revision:https://reviews.freebsd.org/D21555 Added: head/lib/libkvm/kvm_minidump_powerpc64.c (contents, props changed) head/lib/libkvm/kvm_minidump_powerpc64_hpt.c (contents, props changed) head/lib/libkvm/kvm_powerpc64.h (contents, props changed) Modified: head/lib/libkvm/Makefile Modified: head/lib/libkvm/Makefile == --- head/lib/libkvm/MakefileMon Dec 9 13:40:23 2019(r36) +++ head/lib/libkvm/MakefileMon Dec 9 13:59:36 2019(r37) @@ -19,6 +19,7 @@ SRCS= kvm.c kvm_cptime.c kvm_getloadavg.c \ kvm_minidump_mips.c \ kvm_powerpc.c kvm_powerpc64.c \ kvm_minidump_riscv.c \ + kvm_minidump_powerpc64.c kvm_minidump_powerpc64_hpt.c \ kvm_sparc64.c INCS= kvm.h Added: head/lib/libkvm/kvm_minidump_powerpc64.c == --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libkvm/kvm_minidump_powerpc64.cMon Dec 9 13:59:36 2019 (r37) @@ -0,0 +1,202 @@ +/*- + * Copyright (c) 2006 Peter Wemm + * Copyright (c) 2019 Leandro Lupori + * + * 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. + * + * From: FreeBSD: src/lib/libkvm/kvm_minidump_riscv.c + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#include + +#include +#include +#include +#include + +#include "../../sys/powerpc/include/minidump.h" +#include "kvm_private.h" +#include "kvm_powerpc64.h" + + +static int +_powerpc64_minidump_probe(kvm_t *kd) +{ + return (_kvm_probe_elf_kernel(kd, ELFCLASS64, EM_PPC64) && + _kvm_is_minidump(kd)); +} + +static void +_powerpc64_minidump_freevtop(kvm_t *kd) +{ + struct vmstate *vm = kd->vmst; + + if (vm == NULL) + return; + if (PPC64_MMU_OPS(kd)) + PPC64_MMU_OP(kd, cleanup); + free(vm); + kd->vmst = NULL; +} + +static int +_powerpc64_minidump_initvtop(kvm_t *kd) +{ + struct vmstate *vmst; + struct minidumphdr *hdr; + off_t bitmap_off, pmap_off, sparse_off; + const char *mmu_name; + + /* Alloc VM */ + vmst = _kvm_malloc(kd, sizeof(*vmst)); + if (vmst == NULL) { + _kvm_err(kd, kd->program, "cannot allocate vm"); + return (-1); + } + hdr = &vmst->hdr; + kd->vmst = vmst; + PPC64_MMU_OPS(kd) = NULL; + /* Read minidump header */ + if (pread(kd->pmfd, hdr, sizeof(*hdr), 0) != sizeof(*hdr)) { + _kvm_err(kd, kd->program, "cannot read minidump header"); + goto failed; + } + /* Check magic */ + if (strncmp(MINIDUMP_MAGIC, hdr->magic, sizeof(hdr->magic)) != 0) { + _kvm_err(kd, kd->program, "not a minidump for this platform"); + goto failed; + } + /* Check version */ + hdr->version = be32toh(hdr->version); + if (hdr->version != MINIDUMP_VERSION) { + _kvm_err(kd, kd->program, "wrong minidump version. " + "Expected %d got %d", MINIDUMP_VERSION, hdr->version); + goto failed; + } + /* Convert header fields to host endian */ + hdr->msgbufsize = be32toh(hdr->msgbufsize); + hdr->bitmapsize = be32
Re: svn commit: r355487 - in head/sys: arm64/arm64 arm64/include conf
On Sat, Dec 7, 2019 at 10:14 AM Michal Meloun wrote: > > Author: mmel > Date: Sat Dec 7 16:14:23 2019 > New Revision: 355487 > URL: https://svnweb.freebsd.org/changeset/base/355487 > > Log: > Add support for booting kernel directly from U-Boot using booti command. > > In some cases, like is locked bootstrap or device's inability to boot from > removable media, we cannot use standard boot sequence and is necessary to > boot kernel directly from U-Boot. > > Discussed with: jhibbits > MFC after:1 month > Differential Revision:https://reviews.freebsd.org/D13861 > > Added: > head/sys/arm64/arm64/machdep_boot.c (contents, props changed) > Modified: > head/sys/arm64/arm64/locore.S > head/sys/arm64/arm64/machdep.c > head/sys/arm64/include/machdep.h > head/sys/conf/Makefile.arm64 > head/sys/conf/files.arm64 > head/sys/conf/options.arm64 > > [... snip ...] > Added: head/sys/arm64/arm64/machdep_boot.c > == > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/sys/arm64/arm64/machdep_boot.c Sat Dec 7 16:14:23 2019 > (r355487) > @@ -0,0 +1,254 @@ > +/*- > + * Copyright (c) 2004 Olivier Houchard > + * Copyright (c) 1994-1998 Mark Brinicombe. > + * Copyright (c) 1994 Brini. > + * 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. > + */ > + > +#include "opt_platform.h" > + > +#include > +__FBSDID("$FreeBSD$"); > + > +#include > +#include > +#include > +#include > +#include > +#include > +#ifdef FDT > +#include > +#endif > + > +#include > +#include > +#include > +#include > + > +#ifdef FDT > +#include > +#include > +#endif > + > +extern int *end; > +static char *loader_envp; > +static char static_kenv[4096]; > + > + > +#ifdef FDT > +#defineCMDLINE_GUARD "FreeBSD:" > +#defineLBABI_MAX_COMMAND_LINE 512 > +static char linux_command_line[LBABI_MAX_COMMAND_LINE + 1]; > +#endif > + > +/* > + * Fake up a boot descriptor table > + */ > + #define PRELOAD_PUSH_VALUE(type, value) do { \ > + *(type *)(preload_ptr + size) = (value);\ > + size += sizeof(type); \ > +} while (0) > + > + #define PRELOAD_PUSH_STRING(str) do { \ > + uint32_t ssize; \ > + ssize = strlen(str) + 1;\ > + PRELOAD_PUSH_VALUE(uint32_t, ssize);\ > + strcpy((char*)(preload_ptr + size), str); \ > + size += ssize; \ > + size = roundup(size, sizeof(u_long)); \ > +} while (0) > + > + > +/* Build minimal set of metatda. */ > +static vm_offset_t > +fake_preload_metadata(void *dtb_ptr, size_t dtb_size) > +{ > +#ifdef DDB > + vm_offset_t zstart = 0, zend = 0; > +#endif > + vm_offset_t lastaddr; > + static char fake_preload[256]; > + caddr_t preload_ptr; > + size_t size; > + > + preload_ptr = (caddr_t)&fake_preload[0]; > + size = 0; > + > + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_NAME); > + PRELOAD_PUSH_STRING("kernel"); > + > + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_TYPE); > + PRELOAD_PUSH_STRING("elf kernel"); > + > + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_ADDR); > + PRELOAD_PUSH_VALUE(uint32_t, sizeof(vm_offset_t)); > + PRELOAD_PUSH_VALUE(uint64_t, VM_MIN_KERNEL_ADDRESS); > + > + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_SIZE); > + PRELOAD_PUSH_VALUE(uint32_t, sizeof(size_t)); > + PRELOAD_PUSH_VALUE(uint64_t, (size_t)(&end - VM_MIN_KERNEL_ADDRESS)); > +#ifdef DDB > + if (*(u
svn commit: r355558 - head/sys/arm64/arm64
Author: manu Date: Mon Dec 9 15:23:05 2019 New Revision: 38 URL: https://svnweb.freebsd.org/changeset/base/38 Log: arm64: Use the kenv provided by loader Otherwise we have an empty kenv a likely cannot boot. Submitted by: kevans MFC after:1 month X-MFC-With: 355487 Modified: head/sys/arm64/arm64/machdep_boot.c Modified: head/sys/arm64/arm64/machdep_boot.c == --- head/sys/arm64/arm64/machdep_boot.c Mon Dec 9 13:59:36 2019 (r37) +++ head/sys/arm64/arm64/machdep_boot.c Mon Dec 9 15:23:05 2019 (r38) @@ -223,7 +223,7 @@ freebsd_parse_boot_param(struct arm64_bootparams *abp) boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int); loader_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *); - init_static_kenv(static_kenv, 0); + init_static_kenv(loader_envp, 0); lastaddr = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t); #ifdef DDB ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t); ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355563 - head/sys/arm/broadcom/bcm2835
Author: kevans Date: Mon Dec 9 17:34:40 2019 New Revision: 355563 URL: https://svnweb.freebsd.org/changeset/base/355563 Log: RPI: Fix DMA/SDHCI on the BCM2836 (Raspberry Pi 2) r354875 pushed VCBUS <-> ARMC translations to runtime determination, but incorrectly mapped addresses for the BCM2836 -- SOC_BCM2835 and SOC_BCM2836 are actually mutually exclusive, so the BCM2836 config (GENERIC) would have taken the latter path in the header and used 0x3f00 as peripheral start. Easily fixed -- split out the BCM2836 into its own memmap config and use that instead if SOC_BCM2836 is included. With this, we get back to userland again. Reported by: Marek Zarychta Modified: head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.c head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h Modified: head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.c == --- head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.c Mon Dec 9 17:14:43 2019(r355562) +++ head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.c Mon Dec 9 17:34:40 2019(r355563) @@ -67,7 +67,7 @@ struct bcm283x_memory_mapping { vm_paddr_t vcbus_start; }; -#if defined(SOC_BCM2835) || defined(SOC_BCM2836) +#ifdef SOC_BCM2835 static struct bcm283x_memory_mapping bcm2835_memmap[] = { { /* SDRAM */ @@ -85,6 +85,24 @@ static struct bcm283x_memory_mapping bcm2835_memmap[] }; #endif +#ifdef SOC_BCM2836 +static struct bcm283x_memory_mapping bcm2836_memmap[] = { + { + /* SDRAM */ + .armc_start = 0x, + .armc_size = BCM2836_ARM_IO_BASE, + .vcbus_start = BCM2836_VCBUS_SDRAM_BASE, + }, + { + /* Peripherals */ + .armc_start = BCM2836_ARM_IO_BASE, + .armc_size = BCM28XX_ARM_IO_SIZE, + .vcbus_start = BCM2836_VCBUS_IO_BASE, + }, + { 0, 0, 0 }, +}; +#endif + #ifdef SOC_BRCM_BCM2837 static struct bcm283x_memory_mapping bcm2837_memmap[] = { { @@ -142,7 +160,7 @@ static struct bcm283x_memory_soc_cfg { #endif #ifdef SOC_BCM2836 { - .memmap = bcm2835_memmap, + .memmap = bcm2836_memmap, .soc_compat = "brcm,bcm2836", .busdma_lowaddr = BUS_SPACE_MAXADDR_32BIT, }, Modified: head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h == --- head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h Mon Dec 9 17:14:43 2019(r355562) +++ head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h Mon Dec 9 17:34:40 2019(r355563) @@ -42,7 +42,11 @@ #defineBCM2835_VCBUS_IO_BASE 0x7E00 #defineBCM2835_VCBUS_SDRAM_BASEBCM2835_VCBUS_SDRAM_CACHED -#defineBCM2837_ARM_IO_BASE 0x3f00 +#defineBCM2836_ARM_IO_BASE 0x3f00 +#defineBCM2836_VCBUS_IO_BASE BCM2835_VCBUS_IO_BASE +#defineBCM2836_VCBUS_SDRAM_BASEBCM2835_VCBUS_SDRAM_UNCACHED + +#defineBCM2837_ARM_IO_BASE BCM2836_ARM_IO_BASE #defineBCM2837_VCBUS_IO_BASE BCM2835_VCBUS_IO_BASE #defineBCM2837_VCBUS_SDRAM_BASEBCM2835_VCBUS_SDRAM_UNCACHED ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355564 - head/contrib/nvi/docs/man
Author: 0mp (doc,ports committer) Date: Mon Dec 9 17:58:22 2019 New Revision: 355564 URL: https://svnweb.freebsd.org/changeset/base/355564 Log: vi.1: Fix a typo Reviewed by: bcr Approved by: bcr (mentor) Differential Revision:https://reviews.freebsd.org/D22734 Modified: head/contrib/nvi/docs/man/vi.1 Modified: head/contrib/nvi/docs/man/vi.1 == --- head/contrib/nvi/docs/man/vi.1 Mon Dec 9 17:34:40 2019 (r355563) +++ head/contrib/nvi/docs/man/vi.1 Mon Dec 9 17:58:22 2019 (r355564) @@ -14,7 +14,7 @@ .\" .\" $Id: vi.1,v 9.0 2013/11/02 12:11:56 zy Exp $ .\" -.Dd November 2, 2013 +.Dd December 9, 2019 .Dt VI 1 .Os .Sh NAME @@ -981,7 +981,7 @@ command. .Cm ;\& .Xc Repeat the last character find -.Pq i.e., the last .Cm F , f , T No or Cm t No command +.Pq i.e., the last Cm F , f , T No or Cm t No command .Ar count times. .Pp ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355565 - head/sys/dev/gpio
Author: ian Date: Mon Dec 9 19:00:39 2019 New Revision: 355565 URL: https://svnweb.freebsd.org/changeset/base/355565 Log: Switch gpioths(4) from using a callout to a taskqueue for periodic polling of the sensor hardware. Part of the polling process involves signalling the chip then waiting 20 milliseconds. This was being done with DELAY(), which is a pretty rude thing to do in a callout. Now a taskqueue_thread task is scheduled to do the polling, and because sleeping is allowed in the task context, pause_sbt() replaces DELAY() for the 20ms wait. Modified: head/sys/dev/gpio/gpioths.c Modified: head/sys/dev/gpio/gpioths.c == --- head/sys/dev/gpio/gpioths.c Mon Dec 9 17:58:22 2019(r355564) +++ head/sys/dev/gpio/gpioths.c Mon Dec 9 19:00:39 2019(r355565) @@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include @@ -90,7 +91,8 @@ struct gpioths_softc { int temp; int hum; int fails; - struct callout callout; + struct timeout_task task; + bool detaching; }; static int @@ -148,7 +150,7 @@ gpioths_dht_initread(struct gpioths_softc *sc) */ gpio_pin_setflags(sc->pin, GPIO_PIN_OUTPUT); gpio_pin_set_active(sc->pin, false); - DELAY(GPIOTHS_DHT_STARTCYCLE); + pause_sbt("gpioths", ustosbt(GPIOTHS_DHT_STARTCYCLE), C_PREL(2), 0); gpio_pin_set_active(sc->pin, true); gpio_pin_setflags(sc->pin, GPIO_PIN_INPUT); } @@ -285,14 +287,16 @@ error: } static void -gpioths_poll(void *arg) +gpioths_poll(void *arg, int pending __unused) { struct gpioths_softc*sc; sc = (struct gpioths_softc *)arg; gpioths_dht_readbytes(sc); - callout_schedule(&sc->callout, GPIOTHS_POLLTIME * hz); + if (!sc->detaching) + taskqueue_enqueue_timeout_sbt(taskqueue_thread, &sc->task, + GPIOTHS_POLLTIME * SBT_1S, 0, C_PREL(3)); } static int @@ -309,6 +313,8 @@ gpioths_attach(device_t dev) sc->dev = dev; + TIMEOUT_TASK_INIT(taskqueue_thread, &sc->task, 0, gpioths_poll, sc); + #ifdef FDT /* Try to configure our pin from fdt data on fdt-based systems. */ err = gpio_pin_get_by_ofw_idx(dev, ofw_bus_get_node(dev), PIN_IDX, @@ -355,9 +361,11 @@ gpioths_attach(device_t dev) /* * Do an initial read so we have correct values for reporting before -* registering the sysctls that can access those values. +* registering the sysctls that can access those values. This also +* schedules the periodic polling the driver does every few seconds to +* update the sysctl variables. */ - gpioths_dht_readbytes(sc); + gpioths_poll(sc, 0); sysctl_add_oid(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "temperature", \ CTLFLAG_RD | CTLTYPE_INT | CTLFLAG_MPSAFE, @@ -370,9 +378,6 @@ gpioths_attach(device_t dev) CTLFLAG_RD, &sc->fails, 0, "failures since last successful read"); - callout_init(&sc->callout, 1); - callout_reset(&sc->callout, GPIOTHS_POLLTIME * hz, gpioths_poll, sc); - return (0); } @@ -383,7 +388,9 @@ gpioths_detach(device_t dev) sc = device_get_softc(dev); gpio_pin_release(sc->pin); - callout_drain(&sc->callout); + sc->detaching = true; + while (taskqueue_cancel_timeout(taskqueue_thread, &sc->task, NULL) != 0) + taskqueue_drain_timeout(taskqueue_thread, &sc->task); return (0); } ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355566 - head/sys/dev/cxgbe/iw_cxgbe
Author: np Date: Mon Dec 9 19:10:42 2019 New Revision: 355566 URL: https://svnweb.freebsd.org/changeset/base/355566 Log: cxgbe/iw_cxgbe: Support 64b length in the memory registration routines. Submitted by: bharat @ chelsio MFC after:1 week Sponsored by: Chelsio Communications Modified: head/sys/dev/cxgbe/iw_cxgbe/qp.c Modified: head/sys/dev/cxgbe/iw_cxgbe/qp.c == --- head/sys/dev/cxgbe/iw_cxgbe/qp.cMon Dec 9 19:00:39 2019 (r355565) +++ head/sys/dev/cxgbe/iw_cxgbe/qp.cMon Dec 9 19:10:42 2019 (r355566) @@ -689,8 +689,8 @@ static void build_tpte_memreg(struct fw_ri_fr_nsmr_tpt fr->tpte.nosnoop_pbladdr = cpu_to_be32(V_FW_RI_TPTE_PBLADDR( PBL_OFF(&mhp->rhp->rdev, mhp->attr.pbl_addr)>>3)); fr->tpte.dca_mwbcnt_pstag = cpu_to_be32(0); - fr->tpte.len_hi = cpu_to_be32(0); - fr->tpte.len_lo = cpu_to_be32(mhp->ibmr.length); + fr->tpte.len_hi = cpu_to_be32(mhp->ibmr.length >> 32); + fr->tpte.len_lo = cpu_to_be32(mhp->ibmr.length & 0x); fr->tpte.va_hi = cpu_to_be32(mhp->ibmr.iova >> 32); fr->tpte.va_lo_fbo = cpu_to_be32(mhp->ibmr.iova & 0x); @@ -717,12 +717,11 @@ static int build_memreg(struct t4_sq *sq, union t4_wr wqe->fr.pgsz_shift = ilog2(wr->mr->page_size) - 12; wqe->fr.addr_type = FW_RI_VA_BASED_TO; wqe->fr.mem_perms = c4iw_ib_to_tpt_access(wr->access); - wqe->fr.len_hi = 0; - wqe->fr.len_lo = cpu_to_be32(mhp->ibmr.length); + wqe->fr.len_hi = cpu_to_be32(mhp->ibmr.length >> 32); + wqe->fr.len_lo = cpu_to_be32(mhp->ibmr.length & 0x); wqe->fr.stag = cpu_to_be32(wr->key); wqe->fr.va_hi = cpu_to_be32(mhp->ibmr.iova >> 32); - wqe->fr.va_lo_fbo = cpu_to_be32(mhp->ibmr.iova & - 0x); + wqe->fr.va_lo_fbo = cpu_to_be32(mhp->ibmr.iova & 0x); if (dsgl_supported && use_dsgl && (pbllen > max_fr_immd)) { struct fw_ri_dsgl *sglp; ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355568 - in head: include sys/sys
Author: dim Date: Mon Dec 9 19:17:56 2019 New Revision: 355568 URL: https://svnweb.freebsd.org/changeset/base/355568 Log: Correctly check for C++17 and higher when declaring timespec_get() Summary: In rS338751, the check to declare `timespec_get()` for C++17 and higher was incorrectly done against a `cplusplus` define, while it should have been `__cplusplus`. Fix this by using `__cplusplus`, and also bump `__FreeBSD_version` so it becomes possible to correctly check for `timespec_get()` in upstream libc++ headers. Reviewed by: brooks, emaste MFC after:3 days Differential Revision: https://reviews.freebsd.org/D22735 Modified: head/include/time.h head/sys/sys/param.h Modified: head/include/time.h == --- head/include/time.h Mon Dec 9 19:17:28 2019(r355567) +++ head/include/time.h Mon Dec 9 19:17:56 2019(r355568) @@ -208,7 +208,7 @@ time_t posix2time(time_t t); #endif #if defined(__BSD_VISIBLE) || __ISO_C_VISIBLE >= 2011 || \ -(defined(cplusplus) && cplusplus >= 201703) +(defined(__cplusplus) && __cplusplus >= 201703) #include /* ISO/IEC 9899:201x 7.27.2.5 The timespec_get function */ #define TIME_UTC 1 /* time elapsed since epoch */ Modified: head/sys/sys/param.h == --- head/sys/sys/param.hMon Dec 9 19:17:28 2019(r355567) +++ head/sys/sys/param.hMon Dec 9 19:17:56 2019(r355568) @@ -60,7 +60,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1300063 /* Master, propagated to newvers */ +#define __FreeBSD_version 1300064 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355567 - in head/sys: amd64/linux amd64/linux32 arm64/linux compat/freebsd32 i386/linux kern sys
Author: jhb Date: Mon Dec 9 19:17:28 2019 New Revision: 355567 URL: https://svnweb.freebsd.org/changeset/base/355567 Log: Copy out aux args after the argument and environment vectors. Partially revert r354741 and r354754 and go back to allocating a fixed-size chunk of stack space for the auxiliary vector. Keep sv_copyout_auxargs but change it to accept the address at the end of the environment vector as an input stack address and no longer allocate room on the stack. It is now called at the end of copyout_strings after the argv and environment vectors have been copied out. This should fix a regression in r354754 that broke the stack alignment for newer Linux amd64 binaries (and probably broke Linux arm64 as well). Reviewed by: kib Tested on:amd64 (native, linux64 (only linux-base-c7), and i386) Sponsored by: DARPA Differential Revision:https://reviews.freebsd.org/D22695 Modified: head/sys/amd64/linux/linux_sysvec.c head/sys/amd64/linux32/linux32_sysvec.c head/sys/arm64/linux/linux_sysvec.c head/sys/compat/freebsd32/freebsd32_misc.c head/sys/i386/linux/linux_sysvec.c head/sys/kern/imgact_elf.c head/sys/kern/kern_exec.c head/sys/sys/imgact_elf.h head/sys/sys/sysent.h Modified: head/sys/amd64/linux/linux_sysvec.c == --- head/sys/amd64/linux/linux_sysvec.c Mon Dec 9 19:10:42 2019 (r355566) +++ head/sys/amd64/linux/linux_sysvec.c Mon Dec 9 19:17:28 2019 (r355567) @@ -224,11 +224,10 @@ linux_set_syscall_retval(struct thread *td, int error) } static int -linux_copyout_auxargs(struct image_params *imgp, uintptr_t *base) +linux_copyout_auxargs(struct image_params *imgp, uintptr_t base) { Elf_Auxargs *args; Elf_Auxinfo *argarray, *pos; - u_long auxlen; struct proc *p; int error, issetugid; @@ -266,9 +265,8 @@ linux_copyout_auxargs(struct image_params *imgp, uintp imgp->auxargs = NULL; KASSERT(pos - argarray <= LINUX_AT_COUNT, ("Too many auxargs")); - auxlen = sizeof(*argarray) * (pos - argarray); - *base -= auxlen; - error = copyout(argarray, (void *)*base, auxlen); + error = copyout(argarray, (void *)base, + sizeof(*argarray) * LINUX_AT_COUNT); free(argarray, M_TEMP); return (error); } @@ -336,17 +334,13 @@ linux_copyout_strings(struct image_params *imgp, uintp destp = rounddown2(destp, sizeof(void *)); ustringp = destp; - /* -* Starting with 2.24, glibc depends on a 16-byte stack alignment. -* One "long argc" will be prepended later. -*/ - if (destp % 16 == 0) - destp -= 8; - if (imgp->auxargs) { - error = imgp->sysent->sv_copyout_auxargs(imgp, &destp); - if (error != 0) - return (error); + /* +* Allocate room on the stack for the ELF auxargs +* array. It has LINUX_AT_COUNT entries. +*/ + destp -= LINUX_AT_COUNT * sizeof(Elf64_Auxinfo); + destp = rounddown2(destp, sizeof(void *)); } vectp = (char **)destp; @@ -357,6 +351,12 @@ linux_copyout_strings(struct image_params *imgp, uintp */ vectp -= imgp->args->argc + 1 + imgp->args->envc + 1; + /* +* Starting with 2.24, glibc depends on a 16-byte stack alignment. +* One "long argc" will be prepended later. +*/ + vectp = (char **)uintptr_t)vectp + 8) & ~0xF) - 8); + /* vectp also becomes our initial stack base. */ *stack_base = (uintptr_t)vectp; @@ -404,6 +404,14 @@ linux_copyout_strings(struct image_params *imgp, uintp /* The end of the vector table is a null pointer. */ if (suword(vectp, 0) != 0) return (EFAULT); + + if (imgp->auxargs) { + vectp++; + error = imgp->sysent->sv_copyout_auxargs(imgp, + (uintptr_t)vectp); + if (error != 0) + return (error); + } return (0); } Modified: head/sys/amd64/linux32/linux32_sysvec.c == --- head/sys/amd64/linux32/linux32_sysvec.c Mon Dec 9 19:10:42 2019 (r355566) +++ head/sys/amd64/linux32/linux32_sysvec.c Mon Dec 9 19:17:28 2019 (r355567) @@ -187,11 +187,10 @@ linux_translate_traps(int signal, int trap_code) } static int -linux_copyout_auxargs(struct image_params *imgp, u_long *base) +linux_copyout_auxargs(struct image_params *imgp, uintptr_t base) { Elf32_Auxargs *args; Elf32_Auxinfo *argarray, *pos; - u_long auxlen; int error, issetugid; args = (Elf32_Auxargs *)imgp->auxargs; @@ -238,9 +237,8 @@ linux_copyout_auxargs(struct image_params *imgp, u_lon imgp->aux
svn commit: r355569 - head/sys/amd64/linux32
Author: jhb Date: Mon Dec 9 19:18:05 2019 New Revision: 355569 URL: https://svnweb.freebsd.org/changeset/base/355569 Log: Use 4 byte stack alignment instead of 8 byte. This was an old bug prior to r355373 and mostly harmless as it would waste at most a handful of bytes on the stack. Modified: head/sys/amd64/linux32/linux32_sysvec.c Modified: head/sys/amd64/linux32/linux32_sysvec.c == --- head/sys/amd64/linux32/linux32_sysvec.c Mon Dec 9 19:17:56 2019 (r355568) +++ head/sys/amd64/linux32/linux32_sysvec.c Mon Dec 9 19:18:05 2019 (r355569) @@ -741,7 +741,7 @@ linux_copyout_strings(struct image_params *imgp, uintp if (execpath_len != 0) { destp -= execpath_len; - destp = rounddown2(destp, sizeof(void *)); + destp = rounddown2(destp, sizeof(uint32_t)); imgp->execpathp = destp; error = copyout(imgp->execpath, (void *)destp, execpath_len); if (error != 0) @@ -750,7 +750,7 @@ linux_copyout_strings(struct image_params *imgp, uintp /* Prepare the canary for SSP. */ arc4rand(canary, sizeof(canary), 0); - destp -= roundup(sizeof(canary), sizeof(void *)); + destp -= roundup(sizeof(canary), sizeof(uint32_t)); imgp->canary = destp; error = copyout(canary, (void *)destp, sizeof(canary)); if (error != 0) @@ -758,7 +758,7 @@ linux_copyout_strings(struct image_params *imgp, uintp /* Allocate room for the argument and environment strings. */ destp -= ARG_MAX - imgp->args->stringspace; - destp = rounddown2(destp, sizeof(void *)); + destp = rounddown2(destp, sizeof(uint32_t)); ustringp = destp; if (imgp->auxargs) { @@ -767,7 +767,7 @@ linux_copyout_strings(struct image_params *imgp, uintp * array. It has LINUX_AT_COUNT entries. */ destp -= LINUX_AT_COUNT * sizeof(Elf32_Auxinfo); - destp = rounddown2(destp, sizeof(void *)); + destp = rounddown2(destp, sizeof(uint32_t)); } vectp = (uint32_t *)destp; ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355570 - head/sys/dev/sound/pci/hda
Author: markj Date: Mon Dec 9 19:25:15 2019 New Revision: 355570 URL: https://svnweb.freebsd.org/changeset/base/355570 Log: Configure headphone redirection for the Dell L780 and X1 Carbon 7th gen. As we do for many other laptops, put the headphone jack and speakers in the same association by default so that the generic sound device automatically switches between them. MFC after:1 week Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/sound/pci/hda/hdaa_patches.c head/sys/dev/sound/pci/hda/hdac.h Modified: head/sys/dev/sound/pci/hda/hdaa_patches.c == --- head/sys/dev/sound/pci/hda/hdaa_patches.c Mon Dec 9 19:18:05 2019 (r355569) +++ head/sys/dev/sound/pci/hda/hdaa_patches.c Mon Dec 9 19:25:15 2019 (r355570) @@ -390,7 +390,8 @@ hdac_pin_patch(struct hdaa_widget *w) break; } } else if (id == HDA_CODEC_ALC285 && - subid == LENOVO_X120KH_SUBVENDOR) { + (subid == LENOVO_X120KH_SUBVENDOR || + subid == LENOVO_X120QD_SUBVENDOR)) { switch (nid) { case 33: patch = "as=1 seq=15"; @@ -447,7 +448,8 @@ hdac_pin_patch(struct hdaa_widget *w) config = 0x01a1913d; break; } - } else if (id == HDA_CODEC_ALC256 && subid == DELL_I7577_SUBVENDOR) { + } else if (id == HDA_CODEC_ALC256 && (subid == DELL_I7577_SUBVENDOR || + subid == DELL_L7480_SUBVENDOR)) { switch (nid) { case 20: patch = "as=1 seq=0"; Modified: head/sys/dev/sound/pci/hda/hdac.h == --- head/sys/dev/sound/pci/hda/hdac.h Mon Dec 9 19:18:05 2019 (r355569) +++ head/sys/dev/sound/pci/hda/hdac.h Mon Dec 9 19:25:15 2019 (r355570) @@ -206,6 +206,7 @@ #define DELL_V1400_SUBVENDOR HDA_MODEL_CONSTRUCT(DELL, 0x0227) #define DELL_V1500_SUBVENDOR HDA_MODEL_CONSTRUCT(DELL, 0x0228) #define DELL_I1300_SUBVENDOR HDA_MODEL_CONSTRUCT(DELL, 0x01c9) +#define DELL_L7480_SUBVENDOR HDA_MODEL_CONSTRUCT(DELL, 0x07a0) #define DELL_XPSM1210_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0x01d7) #define DELL_OPLX745_SUBVENDOR HDA_MODEL_CONSTRUCT(DELL, 0x01da) #define DELL_XPS9560_SUBVENDOR HDA_MODEL_CONSTRUCT(DELL, 0x07be) @@ -264,6 +265,7 @@ #defineLENOVO_X1CRBN_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x21f9) #defineLENOVO_X120BS_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x2227) #defineLENOVO_X120KH_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x225c) +#defineLENOVO_X120QD_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x2292) #define LENOVO_X220_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x21da) #define LENOVO_X300_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x20ac) #defineLENOVO_T400_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x20f2) ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r355569 - head/sys/amd64/linux32
On Mon, Dec 09, 2019 at 07:18:06PM +, John Baldwin wrote: > Author: jhb > Date: Mon Dec 9 19:18:05 2019 > New Revision: 355569 > URL: https://svnweb.freebsd.org/changeset/base/355569 > > Log: > Use 4 byte stack alignment instead of 8 byte. > > This was an old bug prior to r355373 and mostly harmless as it would > waste at most a handful of bytes on the stack. Doesn't Linux assume 128bit alignment for i386 nowadays? Joerg ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355572 - in head: share/man/man4 sys/dev/usb/serial
Author: ian Date: Mon Dec 9 21:55:44 2019 New Revision: 355572 URL: https://svnweb.freebsd.org/changeset/base/355572 Log: Allow baud rates of 1,228,800 and 1,843,200 on CP2101/2/3 usb-serial adapters. The datasheets for these chips claim the maximum is 921,600, but testing shows these two higher rates also work (but no rates above 921,600 other than these two work; these represent dividing the base buad clock by 3 and 2 respectively). Modified: head/share/man/man4/uslcom.4 head/sys/dev/usb/serial/uslcom.c Modified: head/share/man/man4/uslcom.4 == --- head/share/man/man4/uslcom.4Mon Dec 9 21:10:18 2019 (r355571) +++ head/share/man/man4/uslcom.4Mon Dec 9 21:55:44 2019 (r355572) @@ -16,7 +16,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 26, 2017 +.Dd December 9, 2019 .Dt USLCOM 4 .Os .Sh NAME @@ -43,6 +43,11 @@ The .Nm driver supports Silicon Laboratories CP2101/CP2102/CP2103/CP2104/CP2105 based USB serial adapters. +.Pp +The datasheets for the CP2101/CP2102/CP2103 list the maximum +supported baud rate as 921,600. +Empirical testing has shown that the rates 1,228,800 and 1,843,200 also work, +at least on some hardware, so the driver allows setting those rates. .Sh HARDWARE The following devices should work with the .Nm Modified: head/sys/dev/usb/serial/uslcom.c == --- head/sys/dev/usb/serial/uslcom.cMon Dec 9 21:10:18 2019 (r355571) +++ head/sys/dev/usb/serial/uslcom.cMon Dec 9 21:55:44 2019 (r355572) @@ -624,7 +624,11 @@ uslcom_pre_param(struct ucom_softc *ucom, struct termi case USLCOM_PARTNUM_CP2102: case USLCOM_PARTNUM_CP2103: default: - maxspeed = 921600; + /* +* Datasheet for cp2102 says 921600 max. Testing shows that +* 1228800 and 1843200 work fine. +*/ + maxspeed = 1843200; break; } if (t->c_ospeed <= 0 || t->c_ospeed > maxspeed) ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r355569 - head/sys/amd64/linux32
On 12/9/19 12:01 PM, Joerg Sonnenberger wrote: > On Mon, Dec 09, 2019 at 07:18:06PM +, John Baldwin wrote: >> Author: jhb >> Date: Mon Dec 9 19:18:05 2019 >> New Revision: 355569 >> URL: https://svnweb.freebsd.org/changeset/base/355569 >> >> Log: >> Use 4 byte stack alignment instead of 8 byte. >> >> This was an old bug prior to r355373 and mostly harmless as it would >> waste at most a handful of bytes on the stack. > > Doesn't Linux assume 128bit alignment for i386 nowadays? If it does, that is separate. This is about individual things we copy out onto the stack such as the path to the executable name, and random bytes for AT_RANDOM, etc. being aligned on a 4 byte boundary. It used 'rounddown()' with 'sizeof(void *)' before r355373 because that was copy and pasted from sys/i386/linux/linux_sysvec.c. But void * is 8 bytes on amd64, not 4 bytes as on i386. If Linux/i386 needs 16 byte alignment for the initial stack pointer, then it needs something like the change to align vectp in sys/amd64/linux/linux_sysent.c:linux_copyout_strings both in this file and in sys/i386/linux/linux_sysent.c before writing out the argv array. -- John Baldwin ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r355569 - head/sys/amd64/linux32
On 12/9/19 11:18 AM, John Baldwin wrote: > Author: jhb > Date: Mon Dec 9 19:18:05 2019 > New Revision: 355569 > URL: https://svnweb.freebsd.org/changeset/base/355569 > > Log: > Use 4 byte stack alignment instead of 8 byte. > > This was an old bug prior to r355373 and mostly harmless as it would > waste at most a handful of bytes on the stack. Oops, missed: Reviewed by: kib Differential Review: https://reviews.freebsd.org/D22696 -- John Baldwin ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355573 - in head/sys: kern sys
Author: mjg Date: Tue Dec 10 00:08:05 2019 New Revision: 355573 URL: https://svnweb.freebsd.org/changeset/base/355573 Log: vfs: refactor vhold and vdrop No fuctional changes. Modified: head/sys/kern/vfs_subr.c head/sys/sys/vnode.h Modified: head/sys/kern/vfs_subr.c == --- head/sys/kern/vfs_subr.cMon Dec 9 21:55:44 2019(r355572) +++ head/sys/kern/vfs_subr.cTue Dec 10 00:08:05 2019(r355573) @@ -2766,7 +2766,7 @@ v_decr_devcount(struct vnode *vp) * usecount is permitted to transition 1->0 without the interlock because * vnode is kept live by holdcnt. */ -static enum vgetstate +static enum vgetstate __always_inline _vget_prep(struct vnode *vp, bool interlock) { enum vgetstate vs; @@ -2774,7 +2774,10 @@ _vget_prep(struct vnode *vp, bool interlock) if (refcount_acquire_if_not_zero(&vp->v_usecount)) { vs = VGET_USECOUNT; } else { - _vhold(vp, interlock); + if (interlock) + vholdl(vp); + else + vhold(vp); vs = VGET_HOLDCNT; } return (vs); @@ -3108,31 +3111,12 @@ vunref(struct vnode *vp) /* * Increase the hold count and activate if this is the first reference. */ -void -_vhold(struct vnode *vp, bool locked) +static void +vhold_activate(struct vnode *vp) { struct mount *mp; - if (locked) - ASSERT_VI_LOCKED(vp, __func__); - else - ASSERT_VI_UNLOCKED(vp, __func__); - CTR2(KTR_VFS, "%s: vp %p", __func__, vp); - if (!locked) { - if (refcount_acquire_if_not_zero(&vp->v_holdcnt)) { - VNODE_REFCOUNT_FENCE_ACQ(); - VNASSERT((vp->v_iflag & VI_FREE) == 0, vp, - ("_vhold: vnode with holdcnt is free")); - return; - } - VI_LOCK(vp); - } - if ((vp->v_iflag & VI_FREE) == 0) { - refcount_acquire(&vp->v_holdcnt); - if (!locked) - VI_UNLOCK(vp); - return; - } + ASSERT_VI_LOCKED(vp, __func__); VNASSERT(vp->v_holdcnt == 0, vp, ("%s: wrong hold count", __func__)); VNASSERT(vp->v_op != NULL, vp, @@ -3163,11 +3147,39 @@ _vhold(struct vnode *vp, bool locked) mp->mnt_activevnodelistsize++; mtx_unlock(&mp->mnt_listmtx); refcount_acquire(&vp->v_holdcnt); - if (!locked) - VI_UNLOCK(vp); } void +vhold(struct vnode *vp) +{ + + ASSERT_VI_UNLOCKED(vp, __func__); + CTR2(KTR_VFS, "%s: vp %p", __func__, vp); + if (refcount_acquire_if_not_zero(&vp->v_holdcnt)) { + VNODE_REFCOUNT_FENCE_ACQ(); + VNASSERT((vp->v_iflag & VI_FREE) == 0, vp, + ("vhold: vnode with holdcnt is free")); + return; + } + VI_LOCK(vp); + vholdl(vp); + VI_UNLOCK(vp); +} + +void +vholdl(struct vnode *vp) +{ + + ASSERT_VI_LOCKED(vp, __func__); + CTR2(KTR_VFS, "%s: vp %p", __func__, vp); + if ((vp->v_iflag & VI_FREE) == 0) { + refcount_acquire(&vp->v_holdcnt); + return; + } + vhold_activate(vp); +} + +void vholdnz(struct vnode *vp) { @@ -3189,79 +3201,96 @@ vholdnz(struct vnode *vp) * there is at least one resident non-cached page, the vnode cannot * leave the active list without the page cleanup done. */ -void -_vdrop(struct vnode *vp, bool locked) +static void +vdrop_deactivate(struct vnode *vp) { struct mount *mp; - if (locked) - ASSERT_VI_LOCKED(vp, __func__); - else - ASSERT_VI_UNLOCKED(vp, __func__); + ASSERT_VI_LOCKED(vp, __func__); + /* +* Mark a vnode as free: remove it from its active list +* and put it up for recycling on the freelist. +*/ + VNASSERT(!VN_IS_DOOMED(vp), vp, + ("vdrop: returning doomed vnode")); + VNASSERT(vp->v_op != NULL, vp, + ("vdrop: vnode already reclaimed.")); + VNASSERT((vp->v_iflag & VI_FREE) == 0, vp, + ("vnode already free")); + VNASSERT(vp->v_holdcnt == 0, vp, + ("vdrop: freeing when we shouldn't")); + if ((vp->v_iflag & VI_OWEINACT) == 0) { + mp = vp->v_mount; + if (mp != NULL) { + mtx_lock(&mp->mnt_listmtx); + if (vp->v_iflag & VI_ACTIVE) { + vp->v_iflag &= ~VI_ACTIVE; + TAILQ_REMOVE(&mp->mnt_activevnodelist, + vp, v_actfreelist); + mp->mnt_activevnodelistsize--; + } + TAILQ_INSERT_TAIL(&mp->mnt_tmpfreevnodelist, + vp, v_actfreeli
svn commit: r355574 - head/share/man/man4
Author: takawata Date: Tue Dec 10 02:19:07 2019 New Revision: 355574 URL: https://svnweb.freebsd.org/changeset/base/355574 Log: Add ACPI battery subsystem man page. PR:242100 Differential Revision:https://reviews.freebsd.org/D22556 Added: head/share/man/man4/acpi_battery.4 (contents, props changed) Modified: head/share/man/man4/Makefile Modified: head/share/man/man4/Makefile == --- head/share/man/man4/MakefileTue Dec 10 00:08:05 2019 (r355573) +++ head/share/man/man4/MakefileTue Dec 10 02:19:07 2019 (r355574) @@ -16,6 +16,7 @@ MAN= aac.4 \ ${_acpi_rapidstart.4} \ ${_acpi_sony.4} \ acpi_thermal.4 \ + acpi_battery.4 \ ${_acpi_toshiba.4} \ acpi_video.4 \ ${_acpi_wmi.4} \ Added: head/share/man/man4/acpi_battery.4 == --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man4/acpi_battery.4 Tue Dec 10 02:19:07 2019 (r355574) @@ -0,0 +1,283 @@ +.\" +.\" Copyright (c) 2019 Takanori Watanabe +.\" 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$ +.\" +.Dd November 26, 2019 +.Dt ACPI_BATTERY 4 +.Os +.Sh NAME +.Nm acpi_battery +.Nd ACPI battery management subsystem +.Sh SYNOPSIS +.Cd "device acpi" +.Sh DESCRIPTION +The +.Nm +is a driver for battery management features of the ACPI module. +An ACPI-compatible battery device supports either a Control +Method Battery interface or a Smart Battery subsystem interface. +The former is accessed by the AML +.Pq ACPI Machine Language +code control methods, +and the latter is controlled directly through the ACPI EC +.Pq Embedded Controller +typically via an SMBus interface. +This driver supports the +.Xr sysctl 8 +and +.Xr ioctl 2 +interfaces as well as the +.Xr devd 8 +event notification interface. +.Sh IOCTLS +Every ioctl for the +.Nm +driver takes a single integer value for the battery unit +number as an argument, +and returns a specific structure for each request. +A special unit number +.Li ACPI_BATTERY_ALL_UNITS +specifies all of the attached units +and reports accumulated information. +.Bl -tag -width indent +.It ACPIIO_BATT_GET_UNITS Vt int +Returns the number of battery units in the system. +The unit number argument will be ignored. +.It ACPIIO_BATT_GET_BATTINFO Vt struct acpi_battinfo +Returns the following: +.Bl -tag -width indent +.It cap +Battery capacity in percent, +.It min +Remaining battery life in minutes, +.It state +Current status of the battery encoded in the following: +.Bl -tag -width indent +.It ACPI_BATT_STAT_DISCHARG Pq 0x0001 +Battery is discharging, +.It ACPI_BATT_STAT_CHARGING Pq 0x0002 +Battery is being charged, or +.It ACPI_BATT_STAT_CRITICAL Pq 0x0004 +Remaining battery life is critically low. +.El +.Pp +Note that the status bits of each battery will be +consolidated when +.Li ACPI_BATTERY_ALL_UNITS +is specified. +.It rate +Current battery discharging rate in mW. +.Li -1 +means not discharging right now. +.El +.It ACPIIO_BATT_GET_BIF Vt struct acpi_bif +Returns battery information given by the ACPI +.Li _BIF Pq Battery Information +object, +which is the static portion of the Control Method +Battery information. +In the case of a Smart Battery attached to SMBus, +this ioctl will build a +.Vt struct acpi_bif +structure based on the obtained information +and return it. +.Bl -tag -width indent +.It units +Indicates the units used by the battery to report its +capacity and charge rate encoded in the following: +.Bl -tag -width indent +.It ACPI_BIF_UNITS
svn commit: r355575 - head/share/vt/keymaps
Author: emaste Date: Tue Dec 10 03:42:59 2019 New Revision: 355575 URL: https://svnweb.freebsd.org/changeset/base/355575 Log: Add missing language specifier for Hebrew il.kbd description PR: 235094 (related) MFC after:1 week Sponsored by: The FreeBSD Foundation Modified: head/share/vt/keymaps/INDEX.keymaps Modified: head/share/vt/keymaps/INDEX.keymaps == --- head/share/vt/keymaps/INDEX.keymaps Tue Dec 10 02:19:07 2019 (r355574) +++ head/share/vt/keymaps/INDEX.keymaps Tue Dec 10 03:42:59 2019 (r355575) @@ -249,7 +249,7 @@ gr.101.acc.kbd:el:Ελληνικό (101 πλήκτρω il.kbd:en:Hebrew il.kbd:de:Hebräisch il.kbd:fr:Hébreu -il.kbd::תירבע +il.kbd:he:תירבע hr.kbd:en:Croatian hr.kbd:de:Kroatisch ___ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
svn commit: r355579 - in head/sys: conf dev/cxgbe/firmware modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware modules/cxgbe/t6_firmware
Author: np Date: Tue Dec 10 07:45:10 2019 New Revision: 355579 URL: https://svnweb.freebsd.org/changeset/base/355579 Log: cxgbe(4): Update T4/5/6 firmwares to 1.24.11.0. These were obtained from the Chelsio Unified Wire v3.12.0.1 beta release. Note that the firmwares are not uuencoded any more. MFH: 1 month Sponsored by: Chelsio Communications Added: head/sys/dev/cxgbe/firmware/t4fw-1.24.11.0.bin (contents, props changed) head/sys/dev/cxgbe/firmware/t5fw-1.24.11.0.bin (contents, props changed) head/sys/dev/cxgbe/firmware/t6fw-1.24.11.0.bin (contents, props changed) Deleted: head/sys/dev/cxgbe/firmware/t4fw-1.23.0.0.bin.uu head/sys/dev/cxgbe/firmware/t5fw-1.23.0.0.bin.uu head/sys/dev/cxgbe/firmware/t6fw-1.23.0.0.bin.uu Modified: head/sys/conf/files head/sys/dev/cxgbe/firmware/t4fw_interface.h head/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt head/sys/modules/cxgbe/t4_firmware/Makefile head/sys/modules/cxgbe/t5_firmware/Makefile head/sys/modules/cxgbe/t6_firmware/Makefile Modified: head/sys/conf/files == --- head/sys/conf/files Tue Dec 10 07:07:17 2019(r355578) +++ head/sys/conf/files Tue Dec 10 07:45:10 2019(r355579) @@ -1469,8 +1469,8 @@ t4fw.fwo optional cxgbe \ no-implicit-rule\ clean "t4fw.fwo" t4fw.fwoptional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t4fw-1.23.0.0.bin.uu"\ - compile-with"${NORMAL_FW}" \ + dependency "$S/dev/cxgbe/firmware/t4fw-1.24.11.0.bin" \ + compile-with"${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t4fw.fw" t5fw_cfg.c optional cxgbe \ @@ -1503,8 +1503,8 @@ t5fw.fwo optional cxgbe \ no-implicit-rule\ clean "t5fw.fwo" t5fw.fwoptional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t5fw-1.23.0.0.bin.uu"\ - compile-with"${NORMAL_FW}" \ + dependency "$S/dev/cxgbe/firmware/t5fw-1.24.11.0.bin" \ + compile-with"${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t5fw.fw" t6fw_cfg.c optional cxgbe \ @@ -1537,8 +1537,8 @@ t6fw.fwo optional cxgbe \ no-implicit-rule\ clean "t6fw.fwo" t6fw.fwoptional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t6fw-1.23.0.0.bin.uu"\ - compile-with"${NORMAL_FW}" \ + dependency "$S/dev/cxgbe/firmware/t6fw-1.24.11.0.bin" \ + compile-with"${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t6fw.fw" dev/cxgbe/crypto/t4_crypto.c optional ccr \ Added: head/sys/dev/cxgbe/firmware/t4fw-1.24.11.0.bin == Binary file. No diff available. Modified: head/sys/dev/cxgbe/firmware/t4fw_interface.h == --- head/sys/dev/cxgbe/firmware/t4fw_interface.hTue Dec 10 07:07:17 2019(r355578) +++ head/sys/dev/cxgbe/firmware/t4fw_interface.hTue Dec 10 07:45:10 2019(r355579) @@ -9938,20 +9938,20 @@ enum fw_hdr_chip { (((x) >> S_FW_HDR_FW_VER_BUILD) & M_FW_HDR_FW_VER_BUILD) enum { - T4FW_VERSION_MAJOR = 0x01, - T4FW_VERSION_MINOR = 0x17, - T4FW_VERSION_MICRO = 0x00, - T4FW_VERSION_BUILD = 0x00, + T4FW_VERSION_MAJOR = 1, + T4FW_VERSION_MINOR = 24, + T4FW_VERSION_MICRO = 11, + T4FW_VERSION_BUILD = 0, - T5FW_VERSION_MAJOR = 0x01, - T5FW_VERSION_MINOR = 0x17, - T5FW_VERSION_MICRO = 0x00, - T5FW_VERSION_BUILD = 0x00, + T5FW_VERSION_MAJOR = 1, + T5FW_VERSION_MINOR = 24, + T5FW_VERSION_MICRO = 11, + T5FW_VERSION_BUILD = 0, - T6FW_VERSION_MAJOR = 0x01, - T6FW_VERSION_MINOR = 0x17, - T6FW_VERSION_MICRO = 0x00, - T6FW_VERSION_BUILD = 0x00, + T6FW_VERSION_MAJOR = 1, + T6FW_VERSION_M