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 <[email protected]>
@@ -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 <[email protected]>
@@ -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);