CVS commit: src/sys/arch/evbarm/conf
Module Name:src Committed By: christos Date: Sat Nov 25 04:53:24 UTC 2017 Modified Files: src/sys/arch/evbarm/conf: ARMADILLO-IOT-G3 DNS323 HUMMINGBOARD PARALLELLA POGO ROCKCHIP VTC100 ZEDBOARD Log Message: comment out duplicate options and unknown devices To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/evbarm/conf/ARMADILLO-IOT-G3 cvs rdiff -u -r1.8 -r1.9 src/sys/arch/evbarm/conf/DNS323 cvs rdiff -u -r1.2 -r1.3 src/sys/arch/evbarm/conf/HUMMINGBOARD \ src/sys/arch/evbarm/conf/PARALLELLA src/sys/arch/evbarm/conf/ZEDBOARD cvs rdiff -u -r1.3 -r1.4 src/sys/arch/evbarm/conf/POGO cvs rdiff -u -r1.20 -r1.21 src/sys/arch/evbarm/conf/ROCKCHIP cvs rdiff -u -r1.14 -r1.15 src/sys/arch/evbarm/conf/VTC100 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/evbarm/conf/ARMADILLO-IOT-G3 diff -u src/sys/arch/evbarm/conf/ARMADILLO-IOT-G3:1.9 src/sys/arch/evbarm/conf/ARMADILLO-IOT-G3:1.10 --- src/sys/arch/evbarm/conf/ARMADILLO-IOT-G3:1.9 Thu Sep 14 03:58:40 2017 +++ src/sys/arch/evbarm/conf/ARMADILLO-IOT-G3 Fri Nov 24 23:53:24 2017 @@ -1,4 +1,4 @@ -# $NetBSD: ARMADILLO-IOT-G3,v 1.9 2017/09/14 07:58:40 mrg Exp $ +# $NetBSD: ARMADILLO-IOT-G3,v 1.10 2017/11/25 04:53:24 christos Exp $ # # ARMADILLO-IOT-G3 -- Atmark Techno, Armadillo-IoT G3 # @@ -79,7 +79,7 @@ include "conf/compat_netbsd60.config" options COMPAT_NETBSD32 # allow running arm (e.g. non-earm) binaries #options COMPAT_NDIS # NDIS network driver -options COMPAT_NETBSD32 # allow running arm (e.g. non-earm) binaries +#options COMPAT_NETBSD32 # allow running arm (e.g. non-earm) binaries options COMPAT_OSSAUDIO # OSS (Voxware) audio driver compatibility # Wedge support Index: src/sys/arch/evbarm/conf/DNS323 diff -u src/sys/arch/evbarm/conf/DNS323:1.8 src/sys/arch/evbarm/conf/DNS323:1.9 --- src/sys/arch/evbarm/conf/DNS323:1.8 Thu Aug 20 21:52:07 2015 +++ src/sys/arch/evbarm/conf/DNS323 Fri Nov 24 23:53:24 2017 @@ -1,4 +1,4 @@ -# $NetBSD: DNS323,v 1.8 2015/08/21 01:52:07 uebayasi Exp $ +# $NetBSD: DNS323,v 1.9 2017/11/25 04:53:24 christos Exp $ # # DNS323 -- D-Link. DNS-323 platform kernel # @@ -19,8 +19,8 @@ options DIAGNOSTIC # internal consisten options DEBUG #options PMAP_DEBUG # Enable pmap_debug_level code #options VERBOSE_INIT_ARM # verbose bootstraping messages -options DDB # in-kernel debugger -pseudo-device ksyms +#options DDB # in-kernel debugger +#pseudo-device ksyms #options DDB_HISTORY_SIZE=100 # Enable history editing in DDB #options KGDB #options DEBUG_KGDB Index: src/sys/arch/evbarm/conf/HUMMINGBOARD diff -u src/sys/arch/evbarm/conf/HUMMINGBOARD:1.2 src/sys/arch/evbarm/conf/HUMMINGBOARD:1.3 --- src/sys/arch/evbarm/conf/HUMMINGBOARD:1.2 Thu Nov 9 00:57:23 2017 +++ src/sys/arch/evbarm/conf/HUMMINGBOARD Fri Nov 24 23:53:24 2017 @@ -1,5 +1,5 @@ # -# $NetBSD: HUMMINGBOARD,v 1.2 2017/11/09 05:57:23 hkenken Exp $ +# $NetBSD: HUMMINGBOARD,v 1.3 2017/11/25 04:53:24 christos Exp $ # # Hummingboard -- Freescale i.MX6 Eval Board Kernel # @@ -22,7 +22,7 @@ options MULTIPROCESSOR options CONSDEVNAME="\"imxuart\"",CONADDR=0x0202 options CONSPEED=115200 # Console speed -options DIAGNOSTIC # internal consistency checks +#options DIAGNOSTIC # internal consistency checks options DEBUG #options KGDB makeoptions DEBUG="-g" # compile full symbol table Index: src/sys/arch/evbarm/conf/PARALLELLA diff -u src/sys/arch/evbarm/conf/PARALLELLA:1.2 src/sys/arch/evbarm/conf/PARALLELLA:1.3 --- src/sys/arch/evbarm/conf/PARALLELLA:1.2 Fri Apr 10 06:58:07 2015 +++ src/sys/arch/evbarm/conf/PARALLELLA Fri Nov 24 23:53:24 2017 @@ -1,5 +1,5 @@ # -# $NetBSD: PARALLELLA,v 1.2 2015/04/10 10:58:07 hkenken Exp $ +# $NetBSD: PARALLELLA,v 1.3 2017/11/25 04:53:24 christos Exp $ # # Parallella -- Xilinx Zynq Eval Board Kernel # @@ -26,7 +26,7 @@ options MEMSIZE=1024 options CONSDEVNAME="\"zynquart\"",CONADDR=0xe0001000 options CONSPEED=115200 # Console speed -options DIAGNOSTIC # internal consistency checks +#options DIAGNOSTIC # internal consistency checks #optionsDEBUG #options KGDB makeoptions DEBUG="-g" # compile full symbol table Index: src/sys/arch/evbarm/conf/ZEDBOARD diff -u src/sys/arch/evbarm/conf/ZEDBOARD:1.2 src/sys/arch/evbarm/conf/ZEDBOARD:1.3 --- src/sys/arch/evbarm/conf/ZEDBOARD:1.2 Fri Apr 10 06:58:07 2015 +++ src/sys/arch/evbarm/conf/ZEDBOARD Fri Nov 24 23:53:24 2017 @@ -1,5 +1,5 @@ # -# $NetBSD: ZEDBOARD,v 1.2 2015/04/10 10:58:07 hkenken Exp $ +# $NetBSD: ZEDBOARD,v 1.3 2017/11/25 04:53:24 christos Exp $ # # ZedBoard -- Xilinx Zynq Eval Board Kernel # @@ -25,7 +25,7 @@ options MEMSIZE=512 options CONSDEVNAME="\"zynquart\"",CONADDR=0xe0001000 options CONSPEED=115200 # Console speed -options DIAGNOSTIC # internal consistency checks +#options DIAGNOSTIC # internal
CVS commit: src/sys/arch/evbarm/conf
Module Name:src Committed By: christos Date: Sat Nov 25 04:22:43 UTC 2017 Modified Files: src/sys/arch/evbarm/conf: OPENRD Log Message: we don't need manual removals now that config has been fixed To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/evbarm/conf/OPENRD Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/evbarm/conf/OPENRD diff -u src/sys/arch/evbarm/conf/OPENRD:1.7 src/sys/arch/evbarm/conf/OPENRD:1.8 --- src/sys/arch/evbarm/conf/OPENRD:1.7 Mon Nov 20 19:47:38 2017 +++ src/sys/arch/evbarm/conf/OPENRD Fri Nov 24 23:22:42 2017 @@ -1,4 +1,4 @@ -# $NetBSD: OPENRD,v 1.7 2017/11/21 00:47:38 christos Exp $ +# $NetBSD: OPENRD,v 1.8 2017/11/25 04:22:42 christos Exp $ # # This is a working config file for OpenRD(.org) Client. Note that the # default boot address will not work and the kernel has to load at 8MB @@ -28,7 +28,3 @@ wsdisplay* at vga? console ? # mvsdio doesn't currently function on OPENRD # Tested on OpenRD-Client no mvsdio -no sdmmc* at mvsdio? -no ld* at sdmmc? -no sbt* at sdmmc? -
CVS commit: src/sys/arch/sparc/sparc
Module Name:src Committed By: maya Date: Sat Nov 25 04:11:37 UTC 2017 Modified Files: src/sys/arch/sparc/sparc: locore.s Log Message: Avoid an instruction requiring a higher alignment than we are guaranteed Fixes PR port-sparc/52721: ddb errors on ps command Thanks to mlelstv. To generate a diff of this commit: cvs rdiff -u -r1.268 -r1.269 src/sys/arch/sparc/sparc/locore.s Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/sparc/sparc/locore.s diff -u src/sys/arch/sparc/sparc/locore.s:1.268 src/sys/arch/sparc/sparc/locore.s:1.269 --- src/sys/arch/sparc/sparc/locore.s:1.268 Sun Nov 4 00:32:47 2012 +++ src/sys/arch/sparc/sparc/locore.s Sat Nov 25 04:11:37 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.s,v 1.268 2012/11/04 00:32:47 chs Exp $ */ +/* $NetBSD: locore.s,v 1.269 2017/11/25 04:11:37 maya Exp $ */ /* * Copyright (c) 1996 Paul Kranenburg @@ -6288,8 +6288,9 @@ ENTRY(longjmp) cmp %fp, %g7 ! compare against desired frame bl,a 1b ! if below, restore !pop frame and loop - be,a 2f ! if there, - ldd [%g1+0], %o2 !fetch return %sp and pc, and get out + ld [%g1+0], %o2 ! fetch return %sp + be,a 2f ! we're there, get out + ld [%g1+4], %o3 ! fetch return pc Llongjmpbotch: ! otherwise, went too far; bomb out
CVS commit: src/usr.sbin/rtadvd
Module Name:src Committed By: kre Date: Sat Nov 25 02:37:04 UTC 2017 Modified Files: src/usr.sbin/rtadvd: rtadvd.c Log Message: When sending log messages to stderr, append the \n that syslog does not need. To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/usr.sbin/rtadvd/rtadvd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.sbin/rtadvd/rtadvd.c diff -u src/usr.sbin/rtadvd/rtadvd.c:1.58 src/usr.sbin/rtadvd/rtadvd.c:1.59 --- src/usr.sbin/rtadvd/rtadvd.c:1.58 Mon Nov 6 19:12:23 2017 +++ src/usr.sbin/rtadvd/rtadvd.c Sat Nov 25 02:37:04 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: rtadvd.c,v 1.58 2017/11/06 19:12:23 joerg Exp $ */ +/* $NetBSD: rtadvd.c,v 1.59 2017/11/25 02:37:04 kre Exp $ */ /* $KAME: rtadvd.c,v 1.92 2005/10/17 14:40:02 suz Exp $ */ /* @@ -1864,6 +1864,7 @@ expandm(char *buf, size_t len, const cha buf[cur] = '\0'; } strlcat(buf, fmt, len); + strlcat(buf, "\n", len); /* syslog does not need \n, printf does */ return buf; }
CVS commit: src/usr.bin/config
Module Name:src Committed By: christos Date: Fri Nov 24 23:42:36 UTC 2017 Modified Files: src/usr.bin/config: main.c Log Message: - Instead of checking the recursion level before we recurse, check in on function entry. - Always decrement the level and reset levelparent on exit. To generate a diff of this commit: cvs rdiff -u -r1.94 -r1.95 src/usr.bin/config/main.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/config/main.c diff -u src/usr.bin/config/main.c:1.94 src/usr.bin/config/main.c:1.95 --- src/usr.bin/config/main.c:1.94 Sat Nov 18 13:39:16 2017 +++ src/usr.bin/config/main.c Fri Nov 24 18:42:36 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.94 2017/11/18 18:39:16 christos Exp $ */ +/* $NetBSD: main.c,v 1.95 2017/11/24 23:42:36 christos Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ #endif #include -__RCSID("$NetBSD: main.c,v 1.94 2017/11/18 18:39:16 christos Exp $"); +__RCSID("$NetBSD: main.c,v 1.95 2017/11/24 23:42:36 christos Exp $"); #ifndef MAKE_BOOTSTRAP #include @@ -1868,27 +1868,30 @@ check_dead_devi(const char *key, void *v return 0; } -static int -is_orphan_loop(const struct devbase *d, const struct devbase *p) -{ - - for (; p && d != p; p = p->d_levelparent) - continue; - return d == p; -} +static struct devbase root; -static void +static int addlevelparent(struct devbase *d, struct devbase *parent) { struct devbase *p; - if (d->d_levelparent) - return; + if (d == parent) { + if (d->d_level++ > 1) + return 0; + return 1; + } + + if (d->d_levelparent) { + if (d->d_level++ > 1) + return 0; + return 1; + } for (p = parent; p != NULL; p = p->d_levelparent) - if (d == p) - return; - d->d_levelparent = p; + if (d == p && d->d_level++ > 1) + return 0; + d->d_levelparent = p ? p : + return 1; } static void @@ -1902,7 +1905,8 @@ do_kill_orphans(struct devbase *d, struc struct pspec *p; int active = 0; - addlevelparent(d, parent); + if (!addlevelparent(d, parent)) + return; /* * A pseudo-device will always attach at root, and if it has an @@ -1970,7 +1974,7 @@ do_kill_orphans(struct devbase *d, struc * If we've been there but have made no change, stop. */ if (seen && active != DEVI_ACTIVE) - return; + goto out; if (active != DEVI_ACTIVE) { struct cdd_params cdd = { d, at, parent }; /* Look for a matching dead devi */ @@ -1990,22 +1994,19 @@ do_kill_orphans(struct devbase *d, struc CFGDBG(5, "`%s' at '%s' ignored", d->d_name, parent ? parent->d_name : "(root)"); - } else -return; + } } } for (al = d->d_attrs; al != NULL; al = al->al_next) { a = al->al_this; for (nv1 = a->a_devs; nv1 != NULL; nv1 = nv1->nv_next) { - if (is_orphan_loop(nv1->nv_ptr, d)) { -if (d->d_level++ > 1) - continue; - } do_kill_orphans(nv1->nv_ptr, a, d, active); } } +out: d->d_levelparent = NULL; + d->d_level--; } static int
CVS commit: src/tests/lib/libc/locale
Module Name:src Committed By: kre Date: Fri Nov 24 21:30:43 UTC 2017 Modified Files: src/tests/lib/libc/locale: t_sprintf.c Log Message: When comparing doubles (any floating point values) which have been computed using different methods, don't expect to achieve identical results (here, one constant is perhaps converted to binary from a string by a cross compiler, the other is converted at run time). Allow them to have a small difference (for now, small is < 1e-7 - the constant is ~ 1e5, so this is 12 orders of magnitude less) before failing (and include the actual difference in the error message if it does fail.) To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/tests/lib/libc/locale/t_sprintf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/tests/lib/libc/locale/t_sprintf.c diff -u src/tests/lib/libc/locale/t_sprintf.c:1.4 src/tests/lib/libc/locale/t_sprintf.c:1.5 --- src/tests/lib/libc/locale/t_sprintf.c:1.4 Thu Nov 23 23:47:09 2017 +++ src/tests/lib/libc/locale/t_sprintf.c Fri Nov 24 21:30:43 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: t_sprintf.c,v 1.4 2017/11/23 23:47:09 kre Exp $ */ +/* $NetBSD: t_sprintf.c,v 1.5 2017/11/24 21:30:43 kre Exp $ */ /*- * Copyright (c) 2017 The NetBSD Foundation, Inc. @@ -32,9 +32,10 @@ #include __COPYRIGHT("@(#) Copyright (c) 2017\ The NetBSD Foundation, inc. All rights reserved."); -__RCSID("$NetBSD: t_sprintf.c,v 1.4 2017/11/23 23:47:09 kre Exp $"); +__RCSID("$NetBSD: t_sprintf.c,v 1.5 2017/11/24 21:30:43 kre Exp $"); #include +#include #include #include #include @@ -125,7 +126,7 @@ h_sprintf(const struct test *t) static void h_strto(const struct test *t) { - double d; + double d, diff; ATF_REQUIRE_STREQ(setlocale(LC_ALL, "C"), "C"); printf("Trying locale %s...\n", t->locale); @@ -133,9 +134,11 @@ h_strto(const struct test *t) ATF_REQUIRE_EQ((int)strtol(t->int_input, NULL, 10), t->int_value); d = strtod(t->double_input, NULL); - ATF_REQUIRE_EQ_MSG(d, t->double_value, "In %s: " - "strtod(t->double_input[%s], NULL)[%g] != t->double_value[%g]", - t->locale, t->double_input, d, t->double_value); + if ((diff = fabs(d - t->double_value)) > 1e-7) + ATF_REQUIRE_EQ_MSG(d, t->double_value, "In %s: d=strtod(" + "t->double_input[%s], NULL)[%.9g] != t->double_value[%.9g]" + ": diff=%g", t->locale, t->double_input, d, + t->double_value, diff); } static void
CVS commit: src/usr.bin/config
Module Name:src Committed By: christos Date: Fri Nov 24 18:45:59 UTC 2017 Modified Files: src/usr.bin/config: sem.c Log Message: Tidy up error messages, line wraps, initialization. NFC. To generate a diff of this commit: cvs rdiff -u -r1.80 -r1.81 src/usr.bin/config/sem.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/config/sem.c diff -u src/usr.bin/config/sem.c:1.80 src/usr.bin/config/sem.c:1.81 --- src/usr.bin/config/sem.c:1.80 Sat Nov 18 19:41:10 2017 +++ src/usr.bin/config/sem.c Fri Nov 24 13:45:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sem.c,v 1.80 2017/11/19 00:41:10 kre Exp $ */ +/* $NetBSD: sem.c,v 1.81 2017/11/24 18:45:59 christos Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ #endif #include -__RCSID("$NetBSD: sem.c,v 1.80 2017/11/19 00:41:10 kre Exp $"); +__RCSID("$NetBSD: sem.c,v 1.81 2017/11/24 18:45:59 christos Exp $"); #include #include @@ -214,7 +214,8 @@ fixdev(struct devbase *dev) CFGDBG(4, "fixing devbase `%s'", dev->d_name); for (al = dev->d_attrs; al != NULL; al = al->al_next) { a = al->al_this; - CFGDBG(4, "fixing devbase `%s' attr `%s'", dev->d_name, a->a_name); + CFGDBG(4, "fixing devbase `%s' attr `%s'", dev->d_name, + a->a_name); if (a->a_iattr) { a->a_refs = addtoattr(a->a_refs, dev); CFGDBG(3, "device `%s' has iattr `%s'", dev->d_name, @@ -228,8 +229,8 @@ fixdev(struct devbase *dev) } if (dev->d_classattr == NULL) { dev->d_classattr = a; -CFGDBG(3, "device `%s' is devclass `%s'", dev->d_name, -a->a_name); +CFGDBG(3, "device `%s' is devclass `%s'", +dev->d_name, a->a_name); } } else { if (strcmp(dev->d_name, a->a_name) != 0) { @@ -396,7 +397,7 @@ defiattr(const char *name, struct loclis struct loclist *ll; if (devclass) - panic("defattr(%s): locators and devclass", name); + panic("%s: %s has both locators and devclass", __func__, name); if (defattr(name, locs, deps, devclass) != 0) return (1); @@ -426,7 +427,8 @@ defdevclass(const char *name, struct loc int errored = 0; if (deps) - panic("defattr(%s): dependencies and devclass", name); + panic("%s: %s has both dependencies and devclass", __func__, + name); if (defattr(name, locs, deps, devclass) != 0) return (1); @@ -434,9 +436,9 @@ defdevclass(const char *name, struct loc a = getattr(name); (void)snprintf(classenum, sizeof(classenum), "DV_%s", name); for (cp = classenum + 3; *cp; cp++) { - if (!errored && - (!isalnum((unsigned char)*cp) || - (isalpha((unsigned char)*cp) && !islower((unsigned char)*cp { + if (!errored && (!isalnum((unsigned char)*cp) || + (isalpha((unsigned char)*cp) + && !islower((unsigned char)*cp { cfgerror("device class names must be " "lower-case alphanumeric characters"); errored = 1; @@ -625,7 +627,7 @@ getdevbase(const char *name) dev->d_umax = 0; TAILQ_INSERT_TAIL(, dev, d_next); if (ht_insert(devbasetab, name, dev)) - panic("getdevbase(%s)", name); + panic("%s: Can't insert %s", __func__, name); CFGDBG(3, "devbase defined `%s'", dev->d_name); } return (dev); @@ -765,7 +767,7 @@ getdevattach(const char *name) deva->d_ipp = >d_ihead; TAILQ_INSERT_TAIL(, deva, d_next); if (ht_insert(devatab, name, deva)) - panic("getdeva(%s)", name); + panic("%s: Can't insert %s", __func__, name); } return (deva); } @@ -938,7 +940,7 @@ resolve(struct nvlist **nvp, const char char buf[NAMESIZE]; if ((part -= 'a') >= maxpartitions || part < 0) - panic("resolve"); + panic("%s: Bad partition %c", __func__, part); if ((nv = *nvp) == NULL) { dev_t d = NODEV; /* @@ -,7 +1113,7 @@ delconf(const char *name, int nowarn) if (!strcmp(cf->cf_name, name)) break; if (cf == NULL) - panic("lost configuration `%s'", name); + panic("%s: lost configuration for %s", __func__, name); TAILQ_REMOVE(, cf, cf_next); } @@ -1251,14 +1253,12 @@ adddev(const char *name, const char *at, struct devbase *ab; /* not NULL => at another dev */ struct deva *iba; /* devbase attachment used */ struct deva *lastiba; - int atunit; + int atunit, first; lastiba = NULL; if ((i = getdevi(name)) == NULL) goto bad; ib = i->i_base; - iba = NULL; - p = NULL; attr = finddevattr(name, at, ib, , ); if (attr == NULL) { i->i_active = DEVI_BROKEN; @@ -1271,11 +1271,13 @@ adddev(const char *name, const char *at, attr == ? NULL : attr)) break; + first = lastiba == ib->d_ahead; if (iba == NULL) { - if (lastiba != ib->d_ahead) + if (!first) goto bad; if (attr != ) { -panic("adddev: can't figure out attachment"); +panic("%s: can't figure out attachment", +__func__); } else { cfgerror("`%s' cannot attach to the root", ib->d_name); @@ -1283,7 +1285,7 @@ adddev(const char *name, const char *at, } }
CVS commit: src/sys/dev/hdaudio
Module Name:src Committed By: jmcneill Date: Fri Nov 24 17:51:10 UTC 2017 Modified Files: src/sys/dev/hdaudio: hdaudio.c Log Message: Always go through RIRB startup process, initialize RIRB interrupt count register, and ack RIRBs as we process them in polling mode. XXX pullup To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/dev/hdaudio/hdaudio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/hdaudio/hdaudio.c diff -u src/sys/dev/hdaudio/hdaudio.c:1.7 src/sys/dev/hdaudio/hdaudio.c:1.8 --- src/sys/dev/hdaudio/hdaudio.c:1.7 Fri Nov 24 14:00:04 2017 +++ src/sys/dev/hdaudio/hdaudio.c Fri Nov 24 17:51:10 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: hdaudio.c,v 1.7 2017/11/24 14:00:04 jmcneill Exp $ */ +/* $NetBSD: hdaudio.c,v 1.8 2017/11/24 17:51:10 jmcneill Exp $ */ /* * Copyright (c) 2009 Precedence Technologies Ltd@@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: hdaudio.c,v 1.7 2017/11/24 14:00:04 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hdaudio.c,v 1.8 2017/11/24 17:51:10 jmcneill Exp $"); #include #include @@ -347,6 +347,9 @@ hdaudio_command_unlocked(struct hdaudio_ hdaudio_corb_enqueue(sc, co->co_addr, nid, control, param); result = hdaudio_rirb_dequeue(sc, false); + /* Clear response interrupt status */ + hda_write1(sc, HDAUDIO_MMIO_RIRBSTS, hda_read1(sc, HDAUDIO_MMIO_RIRBSTS)); + return result; } @@ -497,20 +500,21 @@ hdaudio_rirb_start(struct hdaudio_softc uint8_t rirbctl; int retry = HDAUDIO_RIRB_TIMEOUT; - /* Start the RIRB if necessary */ + /* Set the RIRB interrupt count */ + hda_write2(sc, HDAUDIO_MMIO_RINTCNT, 1); + + /* Start the RIRB */ rirbctl = hda_read1(sc, HDAUDIO_MMIO_RIRBCTL); - if ((rirbctl & (HDAUDIO_RIRBCTL_RUN|HDAUDIO_RIRBCTL_INT_EN)) == 0) { - rirbctl |= HDAUDIO_RIRBCTL_RUN; - rirbctl |= HDAUDIO_RIRBCTL_INT_EN; - hda_write1(sc, HDAUDIO_MMIO_RIRBCTL, rirbctl); - do { - hda_delay(10); - rirbctl = hda_read1(sc, HDAUDIO_MMIO_RIRBCTL); - } while (--retry > 0 && (rirbctl & HDAUDIO_RIRBCTL_RUN) == 0); - if (retry == 0) { - hda_error(sc, "timeout starting RIRB\n"); - return ETIME; - } + rirbctl |= HDAUDIO_RIRBCTL_RUN; + rirbctl |= HDAUDIO_RIRBCTL_INT_EN; + hda_write1(sc, HDAUDIO_MMIO_RIRBCTL, rirbctl); + do { + hda_delay(10); + rirbctl = hda_read1(sc, HDAUDIO_MMIO_RIRBCTL); + } while (--retry > 0 && (rirbctl & HDAUDIO_RIRBCTL_RUN) == 0); + if (retry == 0) { + hda_error(sc, "timeout starting RIRB\n"); + return ETIME; } return 0; @@ -558,8 +562,6 @@ static int hdaudio_rirb_config(struct hdaudio_softc *sc) { uint32_t rirbubase, rirblbase; - uint32_t rirbwp; - int retry = HDAUDIO_RIRB_TIMEOUT; /* Program command buffer base address and size */ rirblbase = (uint32_t)DMA_DMAADDR(>sc_rirb); @@ -570,15 +572,6 @@ hdaudio_rirb_config(struct hdaudio_softc /* Clear the write pointer */ hda_write2(sc, HDAUDIO_MMIO_RIRBWP, HDAUDIO_RIRBWP_WP_RESET); - hda_write2(sc, HDAUDIO_MMIO_RIRBWP, 0); - do { - hda_delay(10); - rirbwp = hda_read2(sc, HDAUDIO_MMIO_RIRBWP); - } while (--retry > 0 && (rirbwp & HDAUDIO_RIRBWP_WP_RESET) != 0); - if (retry == 0) { - hda_error(sc, "timeout resetting RIRB\n"); - return ETIME; - } sc->sc_rirbrp = 0; return 0;
CVS commit: src/sys
Module Name:src Committed By: roy Date: Fri Nov 24 14:03:25 UTC 2017 Modified Files: src/sys/netinet: ip_input.c src/sys/netinet6: in6_src.c ip6_input.c ip6_output.c Log Message: Allow local communication over DETACHED addresses. Allow binding to DETACHED or TENTATIVE addresses as we deny sending upstream from them anyway. Prefer non DETACHED or TENTATIVE addresses. To generate a diff of this commit: cvs rdiff -u -r1.362 -r1.363 src/sys/netinet/ip_input.c cvs rdiff -u -r1.82 -r1.83 src/sys/netinet6/in6_src.c cvs rdiff -u -r1.183 -r1.184 src/sys/netinet6/ip6_input.c cvs rdiff -u -r1.193 -r1.194 src/sys/netinet6/ip6_output.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/netinet/ip_input.c diff -u src/sys/netinet/ip_input.c:1.362 src/sys/netinet/ip_input.c:1.363 --- src/sys/netinet/ip_input.c:1.362 Fri Nov 17 07:37:12 2017 +++ src/sys/netinet/ip_input.c Fri Nov 24 14:03:25 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_input.c,v 1.362 2017/11/17 07:37:12 ozaki-r Exp $ */ +/* $NetBSD: ip_input.c,v 1.363 2017/11/24 14:03:25 roy Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.362 2017/11/17 07:37:12 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.363 2017/11/24 14:03:25 roy Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -371,11 +371,14 @@ ip_match_our_address(struct ifnet *ifp, continue; if (checkif && ia->ia_ifp != ifp) continue; - if ((ia->ia_ifp->if_flags & IFF_UP) != 0 && - (ia->ia4_flags & IN_IFF_DETACHED) == 0) -break; - else + if ((ia->ia_ifp->if_flags & IFF_UP) == 0) { (*downmatch)++; +continue; + } + if (ia->ia4_flags & IN_IFF_DETACHED && + (ifp->if_flags & IFF_LOOPBACK) == 0) +continue; + break; } } @@ -392,7 +395,10 @@ ip_match_our_address_broadcast(struct if if (ifa->ifa_addr->sa_family != AF_INET) continue; ia = ifatoia(ifa); - if (ia->ia4_flags & (IN_IFF_NOTREADY | IN_IFF_DETACHED)) + if (ia->ia4_flags & IN_IFF_NOTREADY) + continue; + if (ia->ia4_flags & IN_IFF_DETACHED && + (ifp->if_flags & IFF_LOOPBACK) == 0) continue; if (in_hosteq(ip->ip_dst, ia->ia_broadaddr.sin_addr) || in_hosteq(ip->ip_dst, ia->ia_netbroadcast) || Index: src/sys/netinet6/in6_src.c diff -u src/sys/netinet6/in6_src.c:1.82 src/sys/netinet6/in6_src.c:1.83 --- src/sys/netinet6/in6_src.c:1.82 Mon Nov 20 09:01:20 2017 +++ src/sys/netinet6/in6_src.c Fri Nov 24 14:03:25 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: in6_src.c,v 1.82 2017/11/20 09:01:20 ozaki-r Exp $ */ +/* $NetBSD: in6_src.c,v 1.83 2017/11/24 14:03:25 roy Exp $ */ /* $KAME: in6_src.c,v 1.159 2005/10/19 01:40:32 t-momose Exp $ */ /* @@ -66,7 +66,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: in6_src.c,v 1.82 2017/11/20 09:01:20 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in6_src.c,v 1.83 2017/11/24 14:03:25 roy Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -217,10 +217,14 @@ in6_select_best_ia(struct sockaddr_in6 * } /* avoid unusable addresses */ - if ((ia->ia6_flags & - (IN6_IFF_NOTREADY | IN6_IFF_ANYCAST | IN6_IFF_DETACHED))) { -continue; - } + if ((ia->ia6_flags & (IN6_IFF_DUPLICATED | IN6_IFF_ANYCAST))) + continue; + /* Prefer validated addresses */ + if (!(ia->ia6_flags & (IN6_IFF_TENTATIVE | IN6_IFF_DETACHED)) && + ia_best != NULL && + ia_best->ia6_flags & (IN6_IFF_TENTATIVE | IN6_IFF_DETACHED)) + REPLACE(0); + if (!ip6_use_deprecated && IFA6_IS_DEPRECATED(ia)) continue; @@ -238,7 +242,7 @@ in6_select_best_ia(struct sockaddr_in6 * } if (ia_best == NULL) - REPLACE(0); + REPLACE(1); /* Rule 2: Prefer appropriate scope */ if (dst_scope < 0) Index: src/sys/netinet6/ip6_input.c diff -u src/sys/netinet6/ip6_input.c:1.183 src/sys/netinet6/ip6_input.c:1.184 --- src/sys/netinet6/ip6_input.c:1.183 Fri Nov 17 07:37:12 2017 +++ src/sys/netinet6/ip6_input.c Fri Nov 24 14:03:25 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_input.c,v 1.183 2017/11/17 07:37:12 ozaki-r Exp $ */ +/* $NetBSD: ip6_input.c,v 1.184 2017/11/24 14:03:25 roy Exp $ */ /* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.183 2017/11/17 07:37:12 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.184 2017/11/24 14:03:25 roy Exp $"); #ifdef _KERNEL_OPT #include "opt_gateway.h" @@ -501,13 +501,33 @@ ip6_input(struct mbuf *m, struct ifnet * #endif rt->rt_ifp->if_type == IFT_LOOP) { struct in6_ifaddr *ia6 = (struct in6_ifaddr *)rt->rt_ifa; + int addrok; + if (ia6->ia6_flags & IN6_IFF_ANYCAST) m->m_flags |= M_ANYCAST6; /* * packets to a tentative, duplicated, or somehow invalid * address must not be accepted. */ - if (!(ia6->ia6_flags &
CVS commit: [netbsd-8] src/doc
Module Name:src Committed By: martin Date: Fri Nov 24 08:40:26 UTC 2017 Modified Files: src/doc [netbsd-8]: CHANGES-8.0 Log Message: Tickets #388 and #389 To generate a diff of this commit: cvs rdiff -u -r1.1.2.83 -r1.1.2.84 src/doc/CHANGES-8.0 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/doc/CHANGES-8.0 diff -u src/doc/CHANGES-8.0:1.1.2.83 src/doc/CHANGES-8.0:1.1.2.84 --- src/doc/CHANGES-8.0:1.1.2.83 Thu Nov 23 13:42:09 2017 +++ src/doc/CHANGES-8.0 Fri Nov 24 08:40:26 2017 @@ -1,4 +1,4 @@ -# $NetBSD: CHANGES-8.0,v 1.1.2.83 2017/11/23 13:42:09 martin Exp $ +# $NetBSD: CHANGES-8.0,v 1.1.2.84 2017/11/24 08:40:26 martin Exp $ A complete list of changes from the initial NetBSD 8.0 branch on 2017-06-04 until the 8.0 release: @@ -7878,3 +7878,24 @@ sys/kern/kern_softint.c1.44 implemented, increase softint_bytes from 8192 to 32768. [msaitoh, ticket #387] +sys/dev/hdaudio/hdaudio.c 1.6 + + Enter link reset even if GCTL says we are already in reset state. + Fixes hdaudio codec detection under VirtualBox on a "cold" boot. + [jmcneill, ticket #388] + + +sys/dev/pci/if_bge.c1.313 +sys/dev/pci/if_wm.c1.544 +sys/dev/pci/if_wmreg.h1.105 +sys/net/if_ether.h1.69-1.70 +sys/net/if_vlan.c1.108,1.110 +sys/net/if_vlanvar.h1.11-1.12 + + + Fix a bug that a vlan packet which has priority or CFI + bit in the tag causes panic. + Revert part of if_bge.c 1.312, if_wm.c 1.542 and if_wmreg.h 1.104, + it's not required to mask other than VLAN ID bits in VLAN tag. + [msaitoh, ticket #389] +
CVS commit: [netbsd-8] src/sys
Module Name:src Committed By: martin Date: Fri Nov 24 08:39:09 UTC 2017 Modified Files: src/sys/dev/pci [netbsd-8]: if_bge.c if_wm.c if_wmreg.h src/sys/net [netbsd-8]: if_ether.h if_vlan.c if_vlanvar.h Log Message: Pull up following revision(s) (requested by msaitoh in ticket #389): sys/net/if_ether.h: revision 1.69 sys/net/if_vlan.c: revision 1.108 sys/dev/pci/if_bge.c: revision 1.313 sys/net/if_vlanvar.h: revision 1.11 sys/net/if_vlanvar.h: revision 1.12 sys/net/if_ether.h: revision 1.70 sys/net/if_vlan.c: revision 1.110 sys/dev/pci/if_wm.c: revision 1.544 sys/dev/pci/if_wmreg.h: revision 1.105 Fix a bug that a vlan packet which has priority or CFI bit in the tag causes panic. Revert part of if_bge.c 1.312. It's not required to mask other than VLAN ID bits in VLAN tag. Revert if_wmreg.h 1.104 and if_wm.c 1.542. It's not required to mask other than VLAN ID bits in VLAN tag. No functional change: - u_int16_t -> uint16_t - u_short -> uint16_t - tag_hash_func -> vlan_tag_hash - 0 -> NULL because vlr_parent is a pointer. To generate a diff of this commit: cvs rdiff -u -r1.310.2.1 -r1.310.2.2 src/sys/dev/pci/if_bge.c cvs rdiff -u -r1.508.4.6 -r1.508.4.7 src/sys/dev/pci/if_wm.c cvs rdiff -u -r1.98.6.2 -r1.98.6.3 src/sys/dev/pci/if_wmreg.h cvs rdiff -u -r1.66.8.1 -r1.66.8.2 src/sys/net/if_ether.h cvs rdiff -u -r1.97.2.7 -r1.97.2.8 src/sys/net/if_vlan.c cvs rdiff -u -r1.9.80.1 -r1.9.80.2 src/sys/net/if_vlanvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/if_bge.c diff -u src/sys/dev/pci/if_bge.c:1.310.2.1 src/sys/dev/pci/if_bge.c:1.310.2.2 --- src/sys/dev/pci/if_bge.c:1.310.2.1 Tue Oct 24 08:38:59 2017 +++ src/sys/dev/pci/if_bge.c Fri Nov 24 08:39:09 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bge.c,v 1.310.2.1 2017/10/24 08:38:59 snj Exp $ */ +/* $NetBSD: if_bge.c,v 1.310.2.2 2017/11/24 08:39:09 martin Exp $ */ /* * Copyright (c) 2001 Wind River Systems @@ -79,7 +79,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.310.2.1 2017/10/24 08:38:59 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.310.2.2 2017/11/24 08:39:09 martin Exp $"); #include #include @@ -4607,7 +4607,7 @@ bge_rxeof(struct bge_softc *sc) * to vlan_input() instead of ether_input(). */ if (cur_rx->bge_flags & BGE_RXBDFLAG_VLAN_TAG) { - vlan_set_tag(m, cur_rx->bge_vlan_tag & ETHER_VLAN_MASK); + vlan_set_tag(m, cur_rx->bge_vlan_tag); } if_percpuq_enqueue(ifp->if_percpuq, m); Index: src/sys/dev/pci/if_wm.c diff -u src/sys/dev/pci/if_wm.c:1.508.4.6 src/sys/dev/pci/if_wm.c:1.508.4.7 --- src/sys/dev/pci/if_wm.c:1.508.4.6 Wed Nov 22 16:40:42 2017 +++ src/sys/dev/pci/if_wm.c Fri Nov 24 08:39:09 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: if_wm.c,v 1.508.4.6 2017/11/22 16:40:42 martin Exp $ */ +/* $NetBSD: if_wm.c,v 1.508.4.7 2017/11/24 08:39:09 martin Exp $ */ /* * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc. @@ -83,7 +83,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.508.4.6 2017/11/22 16:40:42 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.508.4.7 2017/11/24 08:39:09 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -8103,11 +8103,11 @@ wm_rxdesc_get_vlantag(struct wm_rxqueue struct wm_softc *sc = rxq->rxq_sc; if (sc->sc_type == WM_T_82574) - return EXTRXC_VLAN_ID(rxq->rxq_ext_descs[idx].erx_ctx.erxc_vlan); + return rxq->rxq_ext_descs[idx].erx_ctx.erxc_vlan; else if ((sc->sc_flags & WM_F_NEWQUEUE) != 0) - return NQRXC_VLAN_ID(rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_vlan); + return rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_vlan; else - return WRX_VLAN_ID(rxq->rxq_descs[idx].wrx_special); + return rxq->rxq_descs[idx].wrx_special; } static inline int Index: src/sys/dev/pci/if_wmreg.h diff -u src/sys/dev/pci/if_wmreg.h:1.98.6.2 src/sys/dev/pci/if_wmreg.h:1.98.6.3 --- src/sys/dev/pci/if_wmreg.h:1.98.6.2 Mon Nov 6 09:54:01 2017 +++ src/sys/dev/pci/if_wmreg.h Fri Nov 24 08:39:09 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: if_wmreg.h,v 1.98.6.2 2017/11/06 09:54:01 snj Exp $ */ +/* $NetBSD: if_wmreg.h,v 1.98.6.3 2017/11/24 08:39:09 martin Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -208,12 +208,6 @@ typedef union ext_rxdesc { #define EXTRXC_STATUS_PKTTYPE_MASK __BITS(19,16) #define EXTRXC_STATUS_PKTTYPE(status) __SHIFTOUT(status,EXTRXC_STATUS_PKTTYPE_MASK) -#define EXTRXC_VLAN_ID_MASK __BITS(11,0) /* VLAN identifier mask */ -#define EXTRXC_VLAN_ID(x) ((x) & EXTRXC_VLAN_ID_MASK) /* VLAN identifier */ -#define EXTRXC_VLAN_CFI __BIT(12) /* Canonical Form Indicator */ -#define EXTRXC_VLAN_PRI_MASK __BITS(15,13) /* VLAN priority mask */ -#define EXTRXC_VLAN_PRI(x) __SHIFTOUT((x),EXTRXC_VLAN_PRI_MASK) /* VLAN priority */ - /* advanced RX descriptor for 82575 and newer */ typedef union nq_rxdesc { struct {
CVS commit: src/sys/dev/pci/ixgbe
Module Name:src Committed By: msaitoh Date: Fri Nov 24 08:36:22 UTC 2017 Modified Files: src/sys/dev/pci/ixgbe: ixgbe.c Log Message: On X540, print PHY FW Revision with %u.%x. 0x04000300 will be printed as "Revision 4.3 ID 0x0" To generate a diff of this commit: cvs rdiff -u -r1.113 -r1.114 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.113 src/sys/dev/pci/ixgbe/ixgbe.c:1.114 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.113 Wed Nov 22 15:15:09 2017 +++ src/sys/dev/pci/ixgbe/ixgbe.c Fri Nov 24 08:36:22 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.113 2017/11/22 15:15:09 msaitoh Exp $ */ +/* $NetBSD: ixgbe.c,v 1.114 2017/11/24 08:36:22 msaitoh Exp $ */ /** @@ -1003,8 +1003,13 @@ ixgbe_attach(device_t parent, device_t d high = (nvmreg >> 12) & 0x0f; low = (nvmreg >> 4) & 0xff; id = nvmreg & 0x000f; - aprint_normal(" PHY FW Revision %u.%02x ID 0x%x,", high, low, - id); + aprint_normal(" PHY FW Revision %u.", high); + if (hw->mac.type == ixgbe_mac_X540) + str = "%x"; + else + str = "%02x"; + aprint_normal(str, low); + aprint_normal(" ID 0x%x,", id); break; default: break;
CVS commit: [netbsd-8] src/sys/dev/hdaudio
Module Name:src Committed By: martin Date: Fri Nov 24 08:35:34 UTC 2017 Modified Files: src/sys/dev/hdaudio [netbsd-8]: hdaudio.c Log Message: Pull up following revision(s) (requested by jmcneill in ticket #388): sys/dev/hdaudio/hdaudio.c: revision 1.6 Enter link reset even if GCTL says we are already in reset state. Fixes hdaudio codec detection under VirtualBox on a "cold" boot. XXX pullup To generate a diff of this commit: cvs rdiff -u -r1.4.10.1 -r1.4.10.2 src/sys/dev/hdaudio/hdaudio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/hdaudio/hdaudio.c diff -u src/sys/dev/hdaudio/hdaudio.c:1.4.10.1 src/sys/dev/hdaudio/hdaudio.c:1.4.10.2 --- src/sys/dev/hdaudio/hdaudio.c:1.4.10.1 Mon Jun 5 08:13:05 2017 +++ src/sys/dev/hdaudio/hdaudio.c Fri Nov 24 08:35:34 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: hdaudio.c,v 1.4.10.1 2017/06/05 08:13:05 snj Exp $ */ +/* $NetBSD: hdaudio.c,v 1.4.10.2 2017/11/24 08:35:34 martin Exp $ */ /* * Copyright (c) 2009 Precedence Technologies Ltd@@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: hdaudio.c,v 1.4.10.1 2017/06/05 08:13:05 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hdaudio.c,v 1.4.10.2 2017/11/24 08:35:34 martin Exp $"); #include #include @@ -612,21 +612,21 @@ hdaudio_reset(struct hdaudio_softc *sc) hda_write1(sc, HDAUDIO_MMIO_RIRBSTS, hda_read1(sc, HDAUDIO_MMIO_RIRBSTS)); - /* If the controller isn't in reset state, initiate the transition */ + /* Put the controller into reset state */ gctl = hda_read4(sc, HDAUDIO_MMIO_GCTL); - if (gctl & HDAUDIO_GCTL_CRST) { - gctl &= ~HDAUDIO_GCTL_CRST; - hda_write4(sc, HDAUDIO_MMIO_GCTL, gctl); - do { - hda_delay(10); - gctl = hda_read4(sc, HDAUDIO_MMIO_GCTL); - } while (--retry > 0 && (gctl & HDAUDIO_GCTL_CRST) != 0); - if (retry == 0) { - hda_error(sc, "timeout entering reset state\n"); - return ETIME; - } + gctl &= ~HDAUDIO_GCTL_CRST; + hda_write4(sc, HDAUDIO_MMIO_GCTL, gctl); + do { + hda_delay(10); + gctl = hda_read4(sc, HDAUDIO_MMIO_GCTL); + } while (--retry > 0 && (gctl & HDAUDIO_GCTL_CRST) != 0); + if (retry == 0) { + hda_error(sc, "timeout entering reset state\n"); + return ETIME; } + hda_delay(1000); + /* Now the controller is in reset state, so bring it out */ retry = HDAUDIO_RESET_TIMEOUT; hda_write4(sc, HDAUDIO_MMIO_GCTL, gctl | HDAUDIO_GCTL_CRST); @@ -639,6 +639,8 @@ hdaudio_reset(struct hdaudio_softc *sc) return ETIME; } + hda_delay(2000); + /* Accept unsolicited responses */ hda_write4(sc, HDAUDIO_MMIO_GCTL, gctl | HDAUDIO_GCTL_UNSOL_EN);