From nobody Fri Oct 09 22:07:29 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 4j1gvq040lz6w93r for ; Fri, 09 Oct 2026 22:07:35 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j1gvp4sjyz4NDf for ; Fri, 09 Oct 2026 22:07:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791583654; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+9blwSyi+mVScdpA6lYrRNZbhiy7onI5TDl0qCwQoNc=; b=ciVX9LU7Lz9XvjiOc72m10k261oozoWmDQeWZvFDbwH5++IXWJeH89JvFngmvgurRMIkCE +gkM9VJ2HfA9uToSnASjjzQ/jmUWDdgjYbTin4bDHrdteyh3DePpNaTi/4aQoejrfnHcwy HgYW/NLdxXii+Q4/8YXCAeis1OubxMSMRhva1SdZdG37uZ/6JlqS8X/lqH/PVo4iu9GNYx njf2peA+iizzdo/RpI5bFAAJoRNfL0VhBXPdtyC18nmUv0KLsRfDhF1/QyrKgq7NxjNJ+p OZ/Do+8/MYRQknWAzMfiy/Jiy44fNQmgURUMnyHPGfzPRgIoFvmfUTiN0Xc+AQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791583654; b=lCbd7Gch/OzM5TZAsD8fZjfKFcEM+c5Ykdp2UjlveoLlmbVTEweIz4RhHSIikEVCTbrS/E X/VaHeR+5g5BWtdB46ZsIXDuvoDzgFYbEEoXFSmdb9HTyFtaeiR9HesdxV8y1ExF1/IPsN kJqZf7iYsgN8c3cmZNMaGzoPpbcMjWHgJV38huggN8+v+a4HwY4bUC5TuzopUVYUrpojtW AQU/vQxeNNkAKcwPnDaViWRuENWV+ukm3r+l7e/S8+N/ZNDUwV6wA8noN6htVs5SB1sj4u PVYKsw7Szjbs/MqasbQHJRk8fI078CNYr4dLW9lqabXAoWCJ94k2OQPHpuwAww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791583654; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+9blwSyi+mVScdpA6lYrRNZbhiy7onI5TDl0qCwQoNc=; b=vwIdkq4kU9ca3swscbPLkMc0WmWidNdUrxPLIjYlGiYBZdpkKN0yZwIVBAIC3Gg+jtHWk/ kPTtZh9erOmGuVcz8kB+bHW/qpknMFZsFSKh736N05jNsFNSC8uStBDrtcTH0sCbkwhp7f SDXbLlrvyNZyphOxa6qcMJebvgtrbhbr/SdWhHFKH4CZs7tcPIZJfnoh24QkFk1Lkztr/s 1YAdSt237JrBhaMVpr0iRs8Eva/aq07/1k+bnfVH1KDhJve6JtkYIQ+3cF7hzS4bpQyEry 5//z8ikFFt2e+gGfq4irqwnhN8eeRsu2j3PcyD/JEk/M9+x3O9zCfKWMQT5fRg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j1gvp3fm9zSht for ; Fri, 09 Oct 2026 22:07:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3f62b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 09 Oct 2026 22:07:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Aymeric Wibo Subject: git: 16d92e92ca12 - main - amdgpio: Suspend routine List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all 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: obiwac X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 16d92e92ca12c9772d921346c34f1ef87998c662 Auto-Submitted: auto-generated Date: Fri, 09 Oct 2026 22:07:29 +0000 Message-Id: <6ac965a1.3f62b.7b0396b2@gitrepo.freebsd.org> The branch main has been updated by obiwac: URL: https://cgit.FreeBSD.org/src/commit/?id=16d92e92ca12c9772d921346c34f1ef87998c662 commit 16d92e92ca12c9772d921346c34f1ef87998c662 Author: Aymeric Wibo AuthorDate: 2026-02-25 09:28:20 +0000 Commit: Aymeric Wibo CommitDate: 2026-10-09 22:07:02 +0000 amdgpio: Suspend routine Mask all interrupts when suspending and warn when there are unserviced interrupts which might block entry to S0i3. In the future we won't want to mask wake interrupts. Once we can actually make use of GPIO interrupts on x86, we'll also want to unmask relevant pins when resuming. Reviewed by: aokblast, avg Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51589 --- sys/dev/amdgpio/amdgpio.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/sys/dev/amdgpio/amdgpio.c b/sys/dev/amdgpio/amdgpio.c index 20589ff71b0b..5cfddfaa338e 100644 --- a/sys/dev/amdgpio/amdgpio.c +++ b/sys/dev/amdgpio/amdgpio.c @@ -536,11 +536,59 @@ amdgpio_detach(device_t dev) return (0); } +static int +amdgpio_suspend(device_t dev) +{ + struct amdgpio_softc *sc = device_get_softc(dev); + uint32_t reg; + size_t i; + int pin, off; + + AMDGPIO_LOCK(sc); + + for (i = 0; i < AMD_GPIO_PINS_EXPOSED; i++) { + pin = kernzp_pins[i].pin_num; + off = AMDGPIO_PIN_REGISTER(pin); + + reg = amdgpio_read_4(sc, off); + if ((reg & UNSERVICED_INTERRUPT_MASK) != 0) + device_printf(dev, "unserviced interrupt on pin %d!\n", + pin); + /* + * "Service" interrupt and mask. In the future we should only + * mask non-wake interrupts (see WAKE_CNTRL_OFF_S0I3 &c). + * + * (From BKDG) write 1 to interrupt & wake status registers to + * clear them. We can do this by just writing back to them. + */ + reg &= ~(1 << INTERRUPT_MASK_OFF); + reg &= ~(1 << INTERRUPT_ENABLE_OFF); + amdgpio_write_4(sc, off, reg); + } + + amdgpio_eoi_locked(sc); + AMDGPIO_UNLOCK(sc); + + return (0); +} + +static int +amdgpio_resume(device_t dev) +{ + /* + * XXX Will have to resume properly once we're actually able to use + * amdgpio for interrupts. + */ + return (0); +} + static device_method_t amdgpio_methods[] = { /* Device interface */ DEVMETHOD(device_probe, amdgpio_probe), DEVMETHOD(device_attach, amdgpio_attach), DEVMETHOD(device_detach, amdgpio_detach), + DEVMETHOD(device_suspend, amdgpio_suspend), + DEVMETHOD(device_resume, amdgpio_resume), /* GPIO protocol */ DEVMETHOD(gpio_get_bus, amdgpio_get_bus),