From nobody Wed Jul 01 00:18:45 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 4gqgbn4TVzz6kCNS for ; Wed, 01 Jul 2026 00:18:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gqgbn2vptz3Rjs for ; Wed, 01 Jul 2026 00:18:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782865125; 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; bh=iqRT7ucuUX4GBpcXty7plK3Ww6J/WVavYkxGulTSjFw=; b=KDZytTVnyBYAnSJ8rajZakO3yKGntkLs+jdT2RoFEQASiaYqAbMEfavuzr6d20koEDLTY6 xPjCgD95jyHT7S8w/JMaYjt54xTyiFPx6nj52syb66Y+1q76QJqYLQqBwCgdPRA+iQY0Yq S/IJqxHJfjXrxTq3VWnLUDPqjKeEGr6yljHQBKVCn9arytS6SY8cCo5E5j71KmpZGitS+Z wzBGHHXwczaWso2INoQB0TnFq7tHAvGpmxubKqX983bYrVZvNs2qhF5roz9Loeltw3kRKf QgXwV5d4MSP/P9A+AXxUzQO+YHK4qGRPWxazGjXZTnAw14SRPuCvFYwyySmPfw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782865125; a=rsa-sha256; cv=none; b=UPqfUJguYudKUYDSMRTIWWBDqQ5TbtR8juUOOw71bqdHmNLN4CbLKvK/kc90pDsAaCqAg0 A4VYVsWHU6IJ2b0UGF+mlSieBeekuNO5HTgijULM1p0TL6s1rykfV4vLN682/DHRrSz/GP KPqZZbYomrcVNBNUBp4xi0dVm21fzuKmzCnJzY7yIIAYS+aM9mL+N4FYdZdJeB9lepUHau BYhJUPlyLKXmRlduK2EqPP591P/44x7i9cTYHbOlU7zL/5uTGLMwgLKp8dlamEmTuML+8z olUpe9jhTZetagVjiZjjUqp1Ty5gL/VwADMwRJrbjvqgxlCtyMOFpueNn0NR3Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782865125; 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; bh=iqRT7ucuUX4GBpcXty7plK3Ww6J/WVavYkxGulTSjFw=; b=vFD2UkWIO8AItDJm0P+jhBWVSEs6Zm2CBbphBYxi8onsOm0MX+3BSvDvvxWFGu692dBv8T 1BsGbchX7L+/cmK+ITd8Oj9QefIHJ+UvK2Lx342SVaak5A5MBAYH0+/WzlPAQkG5Ob1FgC qCYY6ekvT1rAgqN2E2WAEVbFh5mZ5h6oLUJZrJ01rY/RhYfnm1r0x9ZYb8k2nIuPKZHTYZ tVo6rm95WrDiwvnId1Le8befjLTGgoWR903IkcxcIeMtZGfg+4OjqzBGjwy4u1KLWCG15+ KIR7DZMCm+c9BmM4sL6EpoBk4ejSPzA/i8Lj85T6F0iJca/LH+J8uLx67huYdQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gqgbn1jNKz1694 for ; Wed, 01 Jul 2026 00:18:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 230ff by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Jul 2026 00:18:45 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Abdelkader Boudih From: Adrian Chadd Subject: git: bb1e071be47f - main - asmc: try PIO before MMIO to avoid false T2 detection 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 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bb1e071be47fa03accadace587784c85654de91e Auto-Submitted: auto-generated Date: Wed, 01 Jul 2026 00:18:45 +0000 Message-Id: <6a445ce5.230ff.1814c195@gitrepo.freebsd.org> The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=bb1e071be47fa03accadace587784c85654de91e commit bb1e071be47fa03accadace587784c85654de91e Author: Abdelkader Boudih AuthorDate: 2026-07-01 00:13:42 +0000 Commit: Adrian Chadd CommitDate: 2026-07-01 00:18:40 +0000 asmc: try PIO before MMIO to avoid false T2 detection Add hw.asmc.system-state and hw.asmc.board-id read-only sysctls to expose the T2 system state register and Mac board identifier via SMC. Try PIO access before MMIO during probe to prevent false T2 detection on Macs that happen to have something mapped at the T2 BAR address. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D57844 --- sys/dev/asmc/asmc.c | 55 ++++++++++++++++++++++++++++--------------------- sys/dev/asmc/asmcmmio.c | 2 +- sys/dev/asmc/asmcvar.h | 2 +- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c index 055f98e06892..1796867786e5 100644 --- a/sys/dev/asmc/asmc.c +++ b/sys/dev/asmc/asmc.c @@ -418,43 +418,50 @@ asmc_probe(device_t dev) return (rv); } +/* + * Try PIO first; fall back to MMIO for T2 Macs. + */ static int -asmc_attach(device_t dev) +asmc_try_probe(device_t dev) { - int i, j; - int ret; - char name[2]; struct asmc_softc *sc = device_get_softc(dev); - struct sysctl_ctx_list *sysctlctx; - struct sysctl_oid *sysctlnode; - /* - * Try MMIO first (T2 Macs expose SMC via memory-mapped I/O). - * Fall back to standard I/O port if MMIO is not available. - */ + sc->sc_ioport = bus_alloc_resource_any(dev, SYS_RES_IOPORT, + &sc->sc_rid_port, RF_ACTIVE); + if (sc->sc_ioport != NULL) + return (0); + sc->sc_rid_mem = 0; sc->sc_iomem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->sc_rid_mem, RF_ACTIVE); if (sc->sc_iomem != NULL) { if (asmc_mmio_probe(dev) == 0) { - sc->sc_is_mmio = 1; + sc->sc_is_mmio = true; device_printf(dev, "using MMIO backend (T2)\n"); - } else { - bus_release_resource(dev, SYS_RES_MEMORY, - sc->sc_rid_mem, sc->sc_iomem); - sc->sc_iomem = NULL; + return (0); } + bus_release_resource(dev, SYS_RES_MEMORY, + sc->sc_rid_mem, sc->sc_iomem); + sc->sc_iomem = NULL; } - if (!sc->sc_is_mmio) { - sc->sc_ioport = bus_alloc_resource_any(dev, SYS_RES_IOPORT, - &sc->sc_rid_port, RF_ACTIVE); - if (sc->sc_ioport == NULL) { - device_printf(dev, "unable to allocate IO port\n"); - ret = ENOMEM; - goto err; - } - } + device_printf(dev, "unable to allocate IO port\n"); + return (ENOMEM); +} + +static int +asmc_attach(device_t dev) +{ + int i, j; + int ret; + char name[2]; + struct asmc_softc *sc = device_get_softc(dev); + struct sysctl_ctx_list *sysctlctx; + struct sysctl_oid *sysctlnode; + + ret = asmc_try_probe(dev); + if (ret != 0) + goto err; sysctlctx = device_get_sysctl_ctx(dev); sysctlnode = device_get_sysctl_tree(dev); diff --git a/sys/dev/asmc/asmcmmio.c b/sys/dev/asmc/asmcmmio.c index 016c50f6170f..237e8ec4ed52 100644 --- a/sys/dev/asmc/asmcmmio.c +++ b/sys/dev/asmc/asmcmmio.c @@ -307,7 +307,7 @@ asmc_mmio_detach(device_t dev, struct asmc_softc *sc) sc->sc_iomem); sc->sc_iomem = NULL; } - sc->sc_is_mmio = 0; + sc->sc_is_mmio = false; sc->sc_is_t2 = 0; } diff --git a/sys/dev/asmc/asmcvar.h b/sys/dev/asmc/asmcvar.h index bc0c624eb7a2..70485c32ea88 100644 --- a/sys/dev/asmc/asmcvar.h +++ b/sys/dev/asmc/asmcvar.h @@ -56,7 +56,7 @@ struct asmc_softc { /* MMIO backend (T2 Macs) */ int sc_rid_mem; struct resource *sc_iomem; - int sc_is_mmio; + bool sc_is_mmio; int sc_is_t2; /* T2 fan float + per-fan manual */ int sc_sms_intrtype; struct taskqueue *sc_sms_tq;