> Date: Sat, 4 Jan 2020 12:03:14 -0500
> From: Bryan Steele <[email protected]>
> 
> On Sat, Jan 04, 2020 at 11:30:56AM -0500, Bryan Steele wrote:
> > On Sat, Jan 04, 2020 at 05:07:04PM +0100, Mark Kettenis wrote:
> > > > Date: Sat, 4 Jan 2020 10:52:24 -0500
> > > > From: Bryan Steele <[email protected]>
> > > > 
> > > > I noticed an unusually high interrupt rate for amdgpio0 on my Huawei
> > > > Matebook D laptop. I'm suspecting this may be partially why it apmd -A
> > > > has been struggling, as the CPU is constantly busy so it never has a
> > > > chance to scale down.
> > > > 
> > > > Any ideas?
> > > 
> > > Please send acpidump output (all files in /var/db/acpi).
> > > 
> > > Try to figure out which GPIO pin is causing the interrupt.  That may
> > > be tricky since the interrupt fires again and again, so if you add a
> > > printf in amdgpio_intr() your machine will become unusable.  Maybe
> > > just print the pin every 10000 times:
> > > 
> > >     static count = 0;
> > > 
> > >     ....
> > > 
> > >     if ((count++ % 10000) == 0)
> > >         printf("st %llx\n", status)
> > > 
> > > Cheers,
> > > 
> > > Mark
> > 
> > Thanks, for some reason it vanished with on a cold boot. I'm not sure
> > what it was that caused it. In case it helps, sending the acpidump
> > anyway.
> > 
> > If I can figure out what caused it, I'll try your other suggestion.
> > 
> > Sigh.. :-)
> 
> Aha! I must of accidentally bumped the Touchscreen at some point, doing
> that causes the amdgpio0 rate to spike.
> 
> I had sent a diff to add AMD controller support to dwiic(4) months ago,
> I could never get interrupts to work, only polling mode. Perhaps this
> issue explains some of that. I don't have this diff in my tree at the
> moment, had to restore from backup.
> 
> Managed to login and type shutdown, lol.
> 
> ..
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> syncing disks...st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008
> st 1f00000000000008

Very likely.  The AML defines an I2C device with:

           Name (_DDN, "Raydium Touchscreen")  // _DDN: DOS Device Name

that uses a GPIO interrupt that matches the lowest bit set in the
status register.

This suggest we may need to be a little bit more careful and mask
interrupts for which we don't have an interrupt handler.

Reply via email to