From nobody Thu Jul 2 08:33:01 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4grVWj4r70z6kJGH; Thu, 02 Jul 2026 08:33:05 +0000 (UTC) (envelope-from SRS0=IRCy=E4=klop.ws=ronald-lists@realworks.nl) Received: from smtp-relay-ext-backup.realworks.nl (smtp-relay-ext-backup.realworks.nl [87.255.56.182]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4grVWh4mh4z3DT3; Thu, 02 Jul 2026 08:33:04 +0000 (UTC) (envelope-from SRS0=IRCy=E4=klop.ws=ronald-lists@realworks.nl) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=klop.ws header.s=rw2 header.b=UQ1oqdye; dmarc=pass (policy=quarantine) header.from=klop.ws; spf=pass (mx1.freebsd.org: domain of "SRS0=IRCy=E4=klop.ws=ronald-lists@realworks.nl" designates 87.255.56.182 as permitted sender) smtp.mailfrom="SRS0=IRCy=E4=klop.ws=ronald-lists@realworks.nl" Received: from smtp-msa2.realworks.nl (smtp-msa2.colo2.realworks.nl [10.2.10.131]) by mailrelayext1.colo2.realworks.nl (Postfix) with ESMTP id 4grVWd4DqTzw4; Thu, 2 Jul 2026 10:33:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=klop.ws; s=rw2; t=1782981181; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o4Kk9ugt+MILVZM8dyz/+QhD476n2B1ucbjNefg6/D4=; b=UQ1oqdyeaDeOC1sWkHcRvtre1Y6uIrOQ1CFnQoDhvKDVTsZF+ttVCksvWRZfzf/z7M8pMR USFL0KMk3c974c3xpfUMuQi2wWB6rfQspx+J4IQWrSV/sjvwpv4wNT7nUfdaE1vYs4eftV WtK3DJ1mTeIK7GbznFvKreEnkY3O7bxrqo5EgGf5Z4FSJlGcqzVh3h7TSzcT0Fwbl3IXPn c+SnigxP5wclKktBHK/XDx4uEmDDM4sbZiZdXoJuoEAB7CIspnPI9mQumtaDZJKUAKGKDG zzKG/qwnoO/MQrIX46kI3M+BWpt+c6KBgXOP4Z6nKQjfFh1AcVsv5GRgVHdrOg== Received: from noip.localdomain (83-81-213-118.cable.dynamic.v4.ziggo.nl [83.81.213.118]) (Authenticated sender: ronald@realworks.nl) by smtp-msa2.colo2.realworks.nl (Postfix) with ESMTPSA id 725E337E; Thu, 2 Jul 2026 10:33:01 +0200 (CEST) Content-Type: text/plain; charset=utf-8; format=flowed Message-Id: <1782980109037.2427485533.2075663897@klop.ws> From: Ronald Klop To: Adrian Chadd , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Abdelkader Boudih Subject: Re: git: 142cba958b7a - main - bge: read MAC from loader hint for boards without NVRAM/EEPROM Date: Thu, 02 Jul 2026 08:33:01 +0000 In-Reply-To: <6a2f15b6.38f19.50459a27@gitrepo.freebsd.org> References: <6a2f15b6.38f19.50459a27@gitrepo.freebsd.org> X-Mailer: Vivaldi Mail User-Agent: Vivaldi Mail/8.0.4033.54 Content-Transfer-Encoding: 7bit List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 X-Spamd-Result: default: False [-3.67 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.98)[-0.982]; DMARC_POLICY_ALLOW(-0.50)[klop.ws,quarantine]; FORGED_SENDER(0.30)[ronald-lists@klop.ws,SRS0=IRCy=E4=klop.ws=ronald-lists@realworks.nl]; R_DKIM_ALLOW(-0.20)[klop.ws:s=rw2]; R_SPF_ALLOW(-0.20)[+ip4:87.255.56.128/26]; MIME_GOOD(-0.10)[text/plain]; XM_UA_NO_VERSION(0.01)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; TO_DN_SOME(0.00)[]; ASN(0.00)[asn:38930, ipnet:87.255.32.0/19, country:NL]; MID_RHS_MATCH_FROM(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-all@FreeBSD.org,dev-commits-src-main@FreeBSD.org]; FROM_NEQ_ENVFROM(0.00)[ronald-lists@klop.ws,SRS0=IRCy=E4=klop.ws=ronald-lists@realworks.nl]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_FIVE(0.00)[5]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[klop.ws:+] X-Spamd-Bar: --- X-Rspamd-Queue-Id: 4grVWh4mh4z3DT3 Op zondag 14 juni 2026 22:57:26 (+02:00) schreef Adrian Chadd: > The branch main has been updated by adrian: > > URL: https://cgit.FreeBSD.org/src/commit/?id=142cba958b7a6dd11e4257740db03d335475ede8 > > commit 142cba958b7a6dd11e4257740db03d335475ede8 > Author: Abdelkader Boudih > AuthorDate: 2026-06-14 20:55:33 +0000 > Commit: Adrian Chadd > CommitDate: 2026-06-14 20:56:59 +0000 > > bge: read MAC from loader hint for boards without NVRAM/EEPROM > > BCM57766 on Apple T2 Macs (Macmini8,1) has no dedicated EEPROM and the > chip firmware handshake fails (the T2 intercepts PCI config space), > leaving the SRAM mailbox unpopulated. All four existing MAC retrieval > paths (SRAM mailbox, NVRAM, EEPROM, firmware stub) fail, causing bge to > abort attach with "failed to read station address". > > Work around this with two changes: > > 1. Tolerate EEPROM read failure on BCM57766. The chip is copper-only > so hwcfg=0 is correct; skip the fatal error that aborts attach > before bge_get_eaddr() is ever called. > > 2. Implement bge_get_eaddr_fw() to read a "hint.bge.N.mac" string > (e.g. "f0:18:98:f4:1e:2f") from loader(8) tunable / kenv. > > This is a workaround until the T2 BCE API is understood well enough to > either poke the chip firmware into completing its handshake or read the > MAC from the T2 directly. > > Reviewed by: adrian > Differential Revision: https://reviews.freebsd.org/D57090 > --- > sys/dev/bge/if_bge.c | 42 ++++++++++++++++++++++++++++++++++++------ > 1 file changed, 36 insertions(+), 6 deletions(-) > > diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c > index 3551f10b2ae3..1fbf8bfb7e93 100644 > --- a/sys/dev/bge/if_bge.c > +++ b/sys/dev/bge/if_bge.c > @@ -3766,11 +3766,19 @@ bge_attach(device_t dev) > (sc->bge_asicrev != BGE_ASICREV_BCM5906)) { > if (bge_read_eeprom(sc, (caddr_t)&hwcfg, BGE_EE_HWCFG_OFFSET, > sizeof(hwcfg))) { > - device_printf(sc->bge_dev, "failed to read EEPROM\n"); > - error = ENXIO; > - goto fail; > - } > - hwcfg = ntohl(hwcfg); > + /* > + * BCM57766 on Apple T2 Macs has no dedicated EEPROM; > + * the chip is copper-only so hwcfg=0 is correct. > + */ > + if (sc->bge_asicrev != BGE_ASICREV_BCM57766) { > + device_printf(sc->bge_dev, > + "failed to read EEPROM\n"); > + error = ENXIO; > + goto fail; > + } > + hwcfg = 0; > + } else > + hwcfg = ntohl(hwcfg); > } > > /* The SysKonnect SK-9D41 is a 1000baseSX card. */ > @@ -6677,7 +6685,29 @@ bge_sysctl_mem_read(SYSCTL_HANDLER_ARGS) > static int > bge_get_eaddr_fw(struct bge_softc *sc, uint8_t ether_addr[]) > { > - return (1); > + const char *mac_str; > + unsigned int o[ETHER_ADDR_LEN]; > + char trail; > + int i, n, unit; > + > + unit = device_get_unit(sc->bge_dev); > + if (resource_string_value("bge", unit, "mac", &mac_str) != 0) > + return (1); > + > + /* Parse and validate; trailing-char check rejects garbage. */ > + n = sscanf(mac_str, "%x:%x:%x:%x:%x:%x%c", > + &o[0], &o[1], &o[2], &o[3], &o[4], &o[5], &trail); > + if (n != 6) > + return (1); > + for (i = 0; i < ETHER_ADDR_LEN; i++) { > + if (o[i] > 0xff) > + return (1); > + ether_addr[i] = (uint8_t)o[i]; > + } > + if (ETHER_IS_MULTICAST(ether_addr) || > + ETHER_IS_ZERO(ether_addr)) > + return (1); > + return (0); > } > > static int > > If no hint is set you can also fall back to ether_gen_addr(9). Or the undocumented ether_gen_addr_byname(). sys/net/if_ethersubr.c:ether_gen_addr_byname(const char *nameunit, struct ether_addr *hwaddr) sys/net/if_ethersubr.c:ether_gen_addr(struct ifnet *ifp, struct ether_addr *hwaddr) Regards, Ronald.