On Mon, Feb 24, 2020 at 12:18:00PM +0200, Mika Westerberg wrote: > On Sat, Feb 22, 2020 at 01:26:48PM -0800, Guenter Roeck wrote: > > On 2/22/20 12:49 PM, Martin Volf wrote: > > > On Sat, Feb 22, 2020 at 8:05 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote: ... > > > devfn = PCI_DEVFN(PCI_SLOT(pci_dev->devfn), 2); I'm wondering if pci_dev_is_present(...); returns false here. > > > pci_bus_read_config_dword(pci_dev->bus, devfn, ACPIBASE, &base_addr); > > > > > > res = &tco_res[ICH_RES_IO_SMI]; > > > res->start = (base_addr & ~1) + ACPIBASE_SMI_OFF; > > > res->end = res->start + 3; > > > res->flags = IORESOURCE_IO; > > > > > > base_addr is 0xffffffff after pci_bus_read_config_dword() call. > > > ACPIBASE_SMI_OFF is 0x030, therefore res->start is 0x2e. > > > Not that I understand even a bit of this... > > > > > > > Outch. This means that the code is broken. ACPIBASE is not configured, > > or disabled, or the code reads from the wrong PCI configuration register. > > What I don't understand is why this works with v5.3 kernels; the code > > looks just as bad there for me. I must be missing something. Either case, > > the only thing you can really do at this point is to blacklist the > > iTCO_wdt driver. > > Indeed it looks like the code reads from a register that is not there > anymore in this generation hardware, or something like that. It tries to > read the PMC (1f.2) register add address 0x40 which is supposed to be > base of ACPI PM registers but that does not seem to exist any more in > newer chipset. > > We'll look into this more and return back. -- With Best Regards, Andy Shevchenko