Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 03 Apr 2019 17:48:52 +0100
From:      Andrew Gierth <andrew@tao11.riddles.org.uk>
To:        Ian Lepore <ian@freebsd.org>
Cc:        Karl Denninger <karl@denninger.net>, ticso@cicely.de, "freebsd-arm\@freebsd.org" <freebsd-arm@freebsd.org>
Subject:   Re: insanely-high interrupt rates
Message-ID:  <874l7fyrpr.fsf@news-spur.riddles.org.uk>
In-Reply-To: <dc56a8964cae942354cbe2b5b0620f2eebb569bb.camel@freebsd.org> (Ian Lepore's message of "Tue, 02 Apr 2019 20:58:01 -0600")
References:  <004ddba628b94b80845d8e509ddcb648d21fd6c9.camel@freebsd.org> <C68D7E6E-03C1-448F-8638-8BD1717DBF44@jeditekunum.com> <ac7d434f16f3a89f5ef247678d6becdbeded5c3f.camel@freebsd.org> <CE40E2B5-2244-4EF9-B67F-34A54D71E2E8@jeditekunum.com> <f60ea6d2-b696-d896-7bcb-ac628f41f7b8@denninger.net> <20190319161423.GH57400@cicely7.cicely.de> <52df098fdc0caf5de1879c93239534fffbd49b56.camel@freebsd.org> <40f57de2-2b25-3981-a416-b9958cc97636@denninger.net> <669892ac3fc37b0843a156c0ab102316829103fd.camel@freebsd.org> <663f2566-b035-7011-70eb-4163b41e6e55@denninger.net> <20190325164827.GL57400@cicely7.cicely.de> <3db9cf8a-68ee-e339-67bf-760ee51464fd@denninger.net> <fc17ac0f77832e840b9fffa9b1074561f1e766d8.camel@freebsd.org> <d96c7f42-f01b-8990-a558-ee92d631b51d@denninger.net> <dc56a8964cae942354cbe2b5b0620f2eebb569bb.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-=
Content-Type: text/plain

Per my earlier analysis, and the discussion on IRC, I'm now running my
RPI2B with the attached patch (against 12-stable). So far, I'm not
seeing any issues.

I don't think this patch is really a complete fix (in particular, on
arm64 I would expect the opposite problem to exist, with spurious
physical timer interrupts instead). I'm only running it to confirm my
analysis of the problem and to get a working system. It should do fine
on 32-bit arm though.

-- 
Andrew.


--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline; filename=armtimer.diff
Content-Description: patch to arm generic_timer.c

diff --git a/sys/arm/arm/generic_timer.c b/sys/arm/arm/generic_timer.c
index df8fca4674c1..08f00608fb67 100644
--- a/sys/arm/arm/generic_timer.c
+++ b/sys/arm/arm/generic_timer.c
@@ -450,6 +450,8 @@ arm_tmr_attach(device_t dev)
 		/* If we do not have the interrupt, skip it. */
 		if (sc->res[i] == NULL)
 			continue;
+		if (sc->physical && i >= 2)
+			continue;
 		error = bus_setup_intr(dev, sc->res[i], INTR_TYPE_CLK,
 		    arm_tmr_intr, NULL, sc, &sc->ihl[i]);
 		if (error) {

--=-=-=--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?874l7fyrpr.fsf>