Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ThinkPad - suspend-to-RAM intel-x86 issues and tests



On Wed, 28 Nov 2018 at 02:20, David H. Gutteridge <david%gutteridge.ca@localhost> wrote:
>
> On Sat, 2018-11-24 at 22:47 +0000, David Brownlee wrote:
> > On Sat, 24 Nov 2018 at 18:52, David H. Gutteridge <david%gutteridge.ca@localhost
> > > wrote:
> > > On Fri, 2018-11-23 at 21:42 +0000, David Brownlee wrote:
> > > > netbsd-8 Single user:
> > > > - Suspend (hw.acpi.sleep.state=3) and resume appears to work
> > > > reliably
> > > > many times in a row
> > > > - Booting multi user after suspend/resume: wireless iwn0 does not
> > > > appear to work "iwn0: could not load firmware .text section"
> > >
> > > I see that too. I haven't looked into it yet, but wondered if it was
> > > as simple as forcing it to reload its firmware after resumption.
> >
> > Mmm, the man page indicates "iwn0: could not load firmware .text
> > section" is reported when it attempted to
> > load the firmware from disk into the device but failed, so it may be a
> > little more than that :/
>
> That error definitely can mean just that, but it's notable that it's
> not a case of the firmware file being absent or unloadable, as for me
> it successfully loads on boot, it only gives that error on wakeup.

Sorry - I was unclear. I took it to mean there was a problem with
putting the firmware image into the device after loading it from disk
:)

Looking at iwn5000_load_firmware_section() the only way for it to fail
is if iwn_nic_lock() fails, which calls
        /* Request exclusive access to NIC. */
        IWN_SETBITS(sc, IWN_GP_CNTRL, IWN_GP_CNTRL_MAC_ACCESS_REQ);
then spins for a little while to see if it gets the lock.

So presumably the iwn is in an inconsistent state after resume. Its
possible that whatever fixes are needed for ahcisata to restore more
PCI state for MSI might help here (certainly they should help for the
wm case), but if (more likely) they do not help then someone gets to
poke at if_iwn.c :)

David


Home | Main Index | Thread Index | Old Index