Re: [regression] nct6775 does not load in 5.4 and 5.5, bisected to b84398d6d7f90080

From: Mika Westerberg
Date: Tue Feb 25 2020 - 07:14:50 EST


On Mon, Feb 24, 2020 at 10:27:30AM -0800, Guenter Roeck wrote:
> On Mon, Feb 24, 2020 at 01:27:40PM +0200, Mika Westerberg wrote:
> > On Mon, Feb 24, 2020 at 12:51:25PM +0200, Mika Westerberg wrote:
> > > > I'm wondering if
> > > >
> > > > pci_dev_is_present(...);
> > > >
> > > > returns false here.
> > >
> > > Well that might also be the case since lspci shows this:
> > >
> > > 00:1f.0 ISA bridge: Intel Corporation Z390 Chipset LPC/eSPI Controller (rev 10)
> > > 00:1f.3 Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
> > > 00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
> > >
> > > PMC is 1f.2 and not present here. However, it may be that the PMC is
> > > still there it just does not "enumerate" because its devid/vendorid are
> > > set to 0xffff. Similar hiding was done for the P2SB bridge.
> >
> > Actually I think this is the case here.
> >
> > I don't know the iTCO_wdt well enough to say if it could live without
> > the ICH_RES_IO_SMI. It looks like this register is used to disable SMI
> > generation but not sure how well it works if it is left to BIOS to
> > configure. I suppose these systems should use WDAT instead.
> >
>
> In practice the region is only used if
> if (turn_SMI_watchdog_clear_off >= p->iTCO_version) {
> where turn_SMI_watchdog_clear_off is 1 by default. It is also
> passed to vendor specific code, but that is only relevant for
> really old systems. In short, it isn't really needed for any
> recent-generation systems, and could be made optional with
> a few lines of code in iTCO_wdt.c.

Indeed that seems to be the case. Let me come up with a series that
makes the SMI optional and fixes the problematic code in the i801 driver
by not passing the SMI resource if the PMC device is not present.