Module Name: src Committed By: martin Date: Sat Feb 22 12:39:05 UTC 2025
Modified Files: src/distrib/utils/embedded/conf [netbsd-10]: evbppc.conf src/sys/arch/evbppc/conf [netbsd-10]: WII src/sys/arch/evbppc/wii [netbsd-10]: pic_pi.c src/sys/arch/evbppc/wii/dev [netbsd-10]: bwai.c src/sys/arch/powerpc/oea [netbsd-10]: cpu_subr.c Log Message: Pull up following revision(s) (requested by jmcneill in ticket #1057): distrib/utils/embedded/conf/evbppc.conf: revision 1.4 sys/arch/powerpc/oea/cpu_subr.c: revision 1.111 sys/arch/evbppc/wii/pic_pi.c: revision 1.2 sys/arch/evbppc/conf/WII: revision 1.9 sys/arch/evbppc/wii/dev/bwai.c: revision 1.4 wii: Simplify Processor Interface pic code. wii: Audio playback improvements. Instead of resetting the byte counter for every block (which is racy), increment the interrupt timing register by the exact byte count for each block. Should do better at keeping things in sync. powerpc: Identify Broadway CPU. Use hex to report Broadway revision and ignore TAU as it does not exist on this processor. wii: Remove some options to save memory. wii: Disable ntpd by default. It takes up a lot of memory. To generate a diff of this commit: cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/distrib/utils/embedded/conf/evbppc.conf cvs rdiff -u -r1.4.2.6 -r1.4.2.7 src/sys/arch/evbppc/conf/WII cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/sys/arch/evbppc/wii/pic_pi.c cvs rdiff -u -r1.3.2.2 -r1.3.2.3 src/sys/arch/evbppc/wii/dev/bwai.c cvs rdiff -u -r1.108.16.1 -r1.108.16.2 src/sys/arch/powerpc/oea/cpu_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/utils/embedded/conf/evbppc.conf diff -u src/distrib/utils/embedded/conf/evbppc.conf:1.1.2.2 src/distrib/utils/embedded/conf/evbppc.conf:1.1.2.3 --- src/distrib/utils/embedded/conf/evbppc.conf:1.1.2.2 Sat Feb 3 11:47:06 2024 +++ src/distrib/utils/embedded/conf/evbppc.conf Sat Feb 22 12:39:04 2025 @@ -1,4 +1,4 @@ -# $NetBSD: evbppc.conf,v 1.1.2.2 2024/02/03 11:47:06 martin Exp $ */ +# $NetBSD: evbppc.conf,v 1.1.2.3 2025/02/22 12:39:04 martin Exp $ */ # evbppc shared config # image=$HOME/${board}.img @@ -150,8 +150,8 @@ hostname=${hostname:-${board}} savecore=NO sshd=YES dhcpcd=YES -ntpd=YES -ntpd_flags="-g" +#ntpd=YES +#ntpd_flags="-g" creds_msdos=YES creds_msdos_partition=/boot certctl_init=YES Index: src/sys/arch/evbppc/conf/WII diff -u src/sys/arch/evbppc/conf/WII:1.4.2.6 src/sys/arch/evbppc/conf/WII:1.4.2.7 --- src/sys/arch/evbppc/conf/WII:1.4.2.6 Sat Feb 22 11:47:16 2025 +++ src/sys/arch/evbppc/conf/WII Sat Feb 22 12:39:05 2025 @@ -1,4 +1,4 @@ -# $NetBSD: WII,v 1.4.2.6 2025/02/22 11:47:16 martin Exp $ +# $NetBSD: WII,v 1.4.2.7 2025/02/22 12:39:05 martin Exp $ # # Nintendo Wii # @@ -21,8 +21,8 @@ options SYSVMSG # System V message que options SYSVSEM # System V semaphores options SYSVSHM # System V shared memory -options USERCONF # userconf(4) support -#options PIPE_SOCKETPAIR # smaller, but slower pipe(2) +#options USERCONF # userconf(4) support +#options PIPE_SOCKETPAIR # smaller, but slower pipe(2) #options SYSCTL_INCLUDE_DESCR # Include sysctl descriptions in kernel # Alternate buffer queue strategies for better responsiveness under high @@ -34,7 +34,7 @@ options BUFQ_PRIOCSCAN options DIAGNOSTIC # cheap kernel consistency checks #options DEBUG # expensive debugging checks/support options DDB # in-kernel debugger -options DDB_HISTORY_SIZE=512 # enable history editing in DDB +#options DDB_HISTORY_SIZE=100 # enable history editing in DDB #options TRAP_PANICWAIT makeoptions COPY_SYMTAB=1 # size for embedded symbol table @@ -52,8 +52,8 @@ options DKWEDGE_METHOD_GPT # Supports G # File systems file-system FFS # UFS -file-system EXT2FS # second extended file system (linux) -file-system LFS # log-structured file system +#file-system EXT2FS # second extended file system (linux) +#file-system LFS # log-structured file system file-system MFS # memory file system file-system NFS # Network File System client file-system CD9660 # ISO 9660 + Rock Ridge file system @@ -71,7 +71,7 @@ file-system PTYFS # /dev/pts/N support # File system options options FFS_EI # FFS Endian Independent support -#options FFS_NO_SNAPSHOT # No FFS snapshot support +options FFS_NO_SNAPSHOT # No FFS snapshot support #options QUOTA # legacy UFS quotas #options QUOTA2 # new, in-filesystem UFS quotas #options UFS_DIRHASH # UFS Large Directory Hashing @@ -87,13 +87,13 @@ options NFS_BOOT_DHCP,NFS_BOOT_BOOTPARA options NFS_BOOT_RWSIZE=1024 # Networking options -options GATEWAY # packet forwarding +#options GATEWAY # packet forwarding options INET # IP + ICMP + TCP + UDP options INET6 # IPV6 options IPSEC # IP security #options IPSEC_DEBUG # debug for IP security -options MROUTING # IP multicast routing -options PIM # Protocol Independent Multicast +#options MROUTING # IP multicast routing +#options PIM # Protocol Independent Multicast #options NETATALK # AppleTalk networking protocols #options PPP_BSDCOMP # BSD-Compress compression support for PPP #options PPP_DEFLATE # Deflate compression support for PPP @@ -102,9 +102,9 @@ options PIM # Protocol Independent Mul # These options enable verbose messages for several subsystems. # Warning, these may compile large string tables into the kernel! -options MIIVERBOSE # verbose PHY autoconfig messages +#options MIIVERBOSE # verbose PHY autoconfig messages #options SCSIVERBOSE # human readable SCSI error messages -options USBVERBOSE # verbose USB device autoconfig messages +#options USBVERBOSE # verbose USB device autoconfig messages # Kernel root file system and dump configuration. config netbsd root on ? type ? @@ -192,7 +192,7 @@ pseudo-device vnd # disk-like interfac #pseudo-device md # memory disk device pseudo-device loop # network loopback pseudo-device bpfilter # packet filter -pseudo-device carp # Common Address Redundancy Protocol +#pseudo-device carp # Common Address Redundancy Protocol pseudo-device npf # NPF packet filter pseudo-device ppp # Point-to-Point Protocol pseudo-device sl # Serial Line IP @@ -212,5 +212,3 @@ pseudo-device ksyms pseudo-device wsmux # mouse & keyboard multiplexor pseudo-device wsfont options FONT_BOLD8x16 - -include "dev/veriexec.config" Index: src/sys/arch/evbppc/wii/pic_pi.c diff -u src/sys/arch/evbppc/wii/pic_pi.c:1.1.2.2 src/sys/arch/evbppc/wii/pic_pi.c:1.1.2.3 --- src/sys/arch/evbppc/wii/pic_pi.c:1.1.2.2 Sat Feb 3 11:47:07 2024 +++ src/sys/arch/evbppc/wii/pic_pi.c Sat Feb 22 12:39:04 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: pic_pi.c,v 1.1.2.2 2024/02/03 11:47:07 martin Exp $ */ +/* $NetBSD: pic_pi.c,v 1.1.2.3 2025/02/22 12:39:04 martin Exp $ */ /*- * Copyright (c) 2024 Jared McNeill <jmcne...@invisible.ca> @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pic_pi.c,v 1.1.2.2 2024/02/03 11:47:07 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pic_pi.c,v 1.1.2.3 2025/02/22 12:39:04 martin Exp $"); #include <sys/param.h> #include <sys/intr.h> @@ -45,9 +45,6 @@ __KERNEL_RCSID(0, "$NetBSD: pic_pi.c,v 1 #include <arch/powerpc/pic/picvar.h> #include <machine/wii.h> -static uint32_t pic_irqmask; -static uint32_t pic_actmask; - void pi_init_intr(void); #define WR4(reg, val) out32(reg, val) @@ -56,32 +53,27 @@ void pi_init_intr(void); static void pi_enable_irq(struct pic_ops *pic, int irq, int type) { - pic_irqmask |= __BIT(irq); - WR4(PI_INTMR, pic_irqmask & ~pic_actmask); + WR4(PI_INTMR, RD4(PI_INTMR) | __BIT(irq)); } static void pi_disable_irq(struct pic_ops *pic, int irq) { - pic_irqmask &= ~__BIT(irq); - WR4(PI_INTMR, pic_irqmask & ~pic_actmask); + WR4(PI_INTMR, RD4(PI_INTMR) & ~__BIT(irq)); } static int pi_get_irq(struct pic_ops *pic, int mode) { - uint32_t raw, pend; + uint32_t pend; int irq; - raw = RD4(PI_INTSR); - pend = raw & pic_irqmask; + pend = RD4(PI_INTSR) & RD4(PI_INTMR); if (pend == 0) { return 255; } irq = ffs32(pend) - 1; - - pic_actmask |= __BIT(irq); - WR4(PI_INTMR, pic_irqmask & ~pic_actmask); + pend &= ~__BIT(irq); return irq; } @@ -89,8 +81,6 @@ pi_get_irq(struct pic_ops *pic, int mode static void pi_ack_irq(struct pic_ops *pic, int irq) { - pic_actmask &= ~__BIT(irq); - WR4(PI_INTMR, pic_irqmask & ~pic_actmask); WR4(PI_INTSR, __BIT(irq)); } @@ -109,9 +99,6 @@ static struct pic_ops pic = { void pi_init_intr(void) { - pic_irqmask = 0; - pic_actmask = 0; - /* Mask and clear all interrupts. */ WR4(PI_INTMR, 0); WR4(PI_INTSR, ~0U); Index: src/sys/arch/evbppc/wii/dev/bwai.c diff -u src/sys/arch/evbppc/wii/dev/bwai.c:1.3.2.2 src/sys/arch/evbppc/wii/dev/bwai.c:1.3.2.3 --- src/sys/arch/evbppc/wii/dev/bwai.c:1.3.2.2 Sat Feb 3 11:47:05 2024 +++ src/sys/arch/evbppc/wii/dev/bwai.c Sat Feb 22 12:39:05 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: bwai.c,v 1.3.2.2 2024/02/03 11:47:05 martin Exp $ */ +/* $NetBSD: bwai.c,v 1.3.2.3 2025/02/22 12:39:05 martin Exp $ */ /*- * Copyright (c) 2024 Jared McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bwai.c,v 1.3.2.2 2024/02/03 11:47:05 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bwai.c,v 1.3.2.3 2025/02/22 12:39:05 martin Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -65,6 +65,8 @@ struct bwai_softc { void (*sc_intr)(void *); void *sc_intrarg; + uint32_t sc_intrnext; + uint32_t sc_intrstep; kmutex_t *sc_intr_lock; }; @@ -92,7 +94,9 @@ bwai_intr(void *priv) val = RD4(sc, AI_CONTROL); if ((val & AI_CONTROL_AIINT) != 0) { - WR4(sc, AI_CONTROL, val | AI_CONTROL_SCRESET); + sc->sc_intrnext += sc->sc_intrstep; + WR4(sc, AI_AIIT, sc->sc_intrnext); + WR4(sc, AI_CONTROL, val); mutex_enter(sc->sc_intr_lock); if (sc->sc_intr) { @@ -217,7 +221,9 @@ bwai_trigger_output(void *priv, void *st WR4(sc, AI_CONTROL, 0); } - WR4(sc, AI_AIIT, blksize / 4); + sc->sc_intrstep = blksize / 4; + sc->sc_intrnext = sc->sc_intrstep; + WR4(sc, AI_AIIT, sc->sc_intrnext); val = AI_CONTROL_SCRESET | AI_CONTROL_AIINT | Index: src/sys/arch/powerpc/oea/cpu_subr.c diff -u src/sys/arch/powerpc/oea/cpu_subr.c:1.108.16.1 src/sys/arch/powerpc/oea/cpu_subr.c:1.108.16.2 --- src/sys/arch/powerpc/oea/cpu_subr.c:1.108.16.1 Sat Feb 3 11:47:06 2024 +++ src/sys/arch/powerpc/oea/cpu_subr.c Sat Feb 22 12:39:04 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu_subr.c,v 1.108.16.1 2024/02/03 11:47:06 martin Exp $ */ +/* $NetBSD: cpu_subr.c,v 1.108.16.2 2025/02/22 12:39:04 martin Exp $ */ /*- * Copyright (c) 2001 Matt Thomas. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cpu_subr.c,v 1.108.16.1 2024/02/03 11:47:06 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpu_subr.c,v 1.108.16.2 2025/02/22 12:39:04 martin Exp $"); #include "sysmon_envsys.h" @@ -932,6 +932,11 @@ cpu_identify(char *str, size_t len) if (rev == MPC750 && pvr == 15) { revfmt = REVFMT_HEX; } + if (vers == MPC750 && (pvr & 0xf000) == 0x7000 && + (pvr & 0x0f00) >= 0x0100) { + /* IBM Broadway */ + revfmt = REVFMT_HEX; + } if (cp->name[0] != '\0') { n = snprintf(str, len, "%s (Revision ", cp->name); @@ -1294,6 +1299,16 @@ cpu_tau_setup(struct cpu_info *ci) { struct sysmon_envsys *sme; int error, therm_delay; + u_int pvr, vers; + + pvr = mfpvr(); + vers = pvr >> 16; + + if (vers == MPC750 && (pvr & 0xf000) == 0x7000 && + (pvr & 0x0f00) >= 0x0100) { + /* Broadway has dummy TAU registers, just ignore it. */ + return; + } mtspr(SPR_THRM1, SPR_THRM_VALID); mtspr(SPR_THRM2, 0);