lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <ceb49899-3e01-94a1-1555-11e6e6aa5b5a@exceet.de>
Date:   Mon, 22 Oct 2018 09:14:46 +0200
From:   Frieder Schrempf <frieder.schrempf@...eet.de>
To:     Nisar.Sayed@...rochip.com, steve.glendinning@...well.net,
        UNGLinuxDriver@...rochip.com, davem@...emloft.net,
        netdev@...r.kernel.org
Cc:     oneukum@...e.com, linux-usb@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: SMSC9730 Autosuspend/Resume Questions

Hi Nisar,

On 22.10.18 09:03, Nisar.Sayed@...rochip.com wrote:
> Hi Frieder,
> 
>> Hi,
>>
>> I recently tested a board with SMSC9730 connected via USB HSIC to an
>> i.MX6S SOC. I used these patches on top of v4.14-rc8 for the USB HSIC
>> support: [1].
>>
>> When I turned on autosuspend, the smsc95xx stopped in the middle of the
>> suspending routine and /sys/bus/usb/devices/usb3/3-
>> 1/power/runtime_status reported "suspending"
>> forever.
>>
>> With some debug logs I found out, that the last line of code that was
>> executed is [2], after that I didn't get any further messages.
>>
>> Then I applied the following diff and the suspend/resume started to work
>> reliably:
>>
>> @@ -1382,10 +1385,11 @@ static int smsc95xx_link_ok_nopm(struct usbnet
>> *dev)
>>           ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR);
>>           if (ret < 0)
>>                   return ret;
>> -
>> +       /*
>>           ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR);
>>           if (ret < 0)
>>                   return ret;
>> +       */
>>
>>           return !!(ret & BMSR_LSTATUS);
>>    }
>>
>> So it seems like the dummy read, that is commented with "first, a dummy
>> read, needed to latch some MII phys" causes problems in my setup. Do you
>> have an idea what could be the reason? Is this a proper fix?
>>
>   
> Link status bit is latch low register and needs to be read twice. You may get wrong Link status with this fix.

Ok, thanks for the information. I guess I'll have to do some more 
debugging to find out why the second read fails in my case.

Frieder

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ