usb: dwc3: Fix the USB 3.0 hub detection bug after warm boot

Message ID 20170712035238.27554-1-gfa@zumbi.com.ar
State New
Headers show

Commit Message

gustavo panizzo July 12, 2017, 3:52 a.m.
The dwc3 could not release resources when the module is built-in
because this module does not have shutdown method. This causes the USB
3.0 hub is not able to detect after warm boot.

Original patch by Brian Kim, updated and submitted upstream by gustavo
panizzo.

Also see https://bugs.debian.org/843448

Signed-off-by: Brian Kim <brian.kim@hardkernel.com>

Signed-off-by: gustavo panizzo <gfa@zumbi.com.ar>

---
 drivers/usb/dwc3/core.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

-- 
2.11.0

Comments

Baolin Wang July 12, 2017, 6:08 a.m. | #1
Hi,

On 12 July 2017 at 11:52, gustavo panizzo <gfa@zumbi.com.ar> wrote:
> The dwc3 could not release resources when the module is built-in

> because this module does not have shutdown method. This causes the USB

> 3.0 hub is not able to detect after warm boot.

>

> Original patch by Brian Kim, updated and submitted upstream by gustavo

> panizzo.

>

> Also see https://bugs.debian.org/843448

>

> Signed-off-by: Brian Kim <brian.kim@hardkernel.com>

> Signed-off-by: gustavo panizzo <gfa@zumbi.com.ar>

> ---

>  drivers/usb/dwc3/core.c | 33 +++++++++++++++++++++++++++++++++

>  1 file changed, 33 insertions(+)

>

> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c

> index 326b302fc440..f92dfe213d89 100644

> --- a/drivers/usb/dwc3/core.c

> +++ b/drivers/usb/dwc3/core.c

> @@ -1259,6 +1259,38 @@ static int dwc3_probe(struct platform_device *pdev)

>         return ret;

>  }

>

> +static void dwc3_shutdown(struct platform_device *pdev)

> +{

> +       struct dwc3     *dwc = platform_get_drvdata(pdev);

> +       struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);

> +

> +       pm_runtime_get_sync(&pdev->dev);

> +       /*

> +        * restore res->start back to its original value so that, in case the

> +        * probe is deferred, we don't end up getting error in request the

> +        * memory region the next time probe is called.

> +        */

> +       res->start -= DWC3_GLOBALS_REGS_START;

> +

> +       dwc3_debugfs_exit(dwc);

> +       dwc3_core_exit_mode(dwc);

> +       dwc3_event_buffers_cleanup(dwc);

> +       dwc3_free_event_buffers(dwc);

> +

> +       usb_phy_set_suspend(dwc->usb2_phy, 1);

> +       usb_phy_set_suspend(dwc->usb3_phy, 1);

> +

> +       phy_power_off(dwc->usb2_generic_phy);

> +       phy_power_off(dwc->usb3_generic_phy);


We've done these in dwc3_core_exit().

> +

> +       dwc3_core_exit(dwc);

> +       dwc3_ulpi_exit(dwc);

> +

> +       pm_runtime_put_sync(&pdev->dev);

> +       pm_runtime_allow(&pdev->dev);

> +       pm_runtime_disable(&pdev->dev);

> +}

> +

>  static int dwc3_remove(struct platform_device *pdev)

>  {

>         struct dwc3     *dwc = platform_get_drvdata(pdev);

> @@ -1488,6 +1520,7 @@ MODULE_DEVICE_TABLE(acpi, dwc3_acpi_match);

>  static struct platform_driver dwc3_driver = {

>         .probe          = dwc3_probe,

>         .remove         = dwc3_remove,

> +       .shutdown       = dwc3_shutdown,

>         .driver         = {

>                 .name   = "dwc3",

>                 .of_match_table = of_match_ptr(of_dwc3_match),

> --

> 2.11.0

>

> --

> To unsubscribe from this list: send the line "unsubscribe linux-usb" in

> the body of a message to majordomo@vger.kernel.org

> More majordomo info at  http://vger.kernel.org/majordomo-info.html




-- 
Baolin.wang
Best Regards
gustavo panizzo July 29, 2017, 11:53 p.m. | #2
Hi

On Mon, Jul 24, 2017 at 12:53:27PM +0300, Felipe Balbi wrote:
>

>Hi,

>

>gustavo panizzo <gfa@zumbi.com.ar> writes:

>>>> On Wed, Jul 12, 2017 at 02:08:04PM +0800, Baolin Wang wrote:

>>>>>

>>>>> Hi,

>>>>>

>>>>> On 12 July 2017 at 11:52, gustavo panizzo <gfa@zumbi.com.ar> wrote:

>>>>>>

>>>>>> The dwc3 could not release resources when the module is built-in

>>>>>> because this module does not have shutdown method. This causes the USB

>>>>>> 3.0 hub is not able to detect after warm boot.

>>>>>>

>>>>>> Original patch by Brian Kim, updated and submitted upstream by gustavo

>>>>>> panizzo.

>>>>>>

>>>>>> Also see https://bugs.debian.org/843448

>>>>>>

>>>>>> Signed-off-by: Brian Kim <brian.kim@hardkernel.com>

>>>>>> Signed-off-by: gustavo panizzo <gfa@zumbi.com.ar>

>>>>>> ---

>>>>>>  drivers/usb/dwc3/core.c | 33 +++++++++++++++++++++++++++++++++

>>>>>>  1 file changed, 33 insertions(+)

>>>>>>

>>>>>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c

>>>>>> index 326b302fc440..f92dfe213d89 100644

>>>>>> --- a/drivers/usb/dwc3/core.c

>>>>>> +++ b/drivers/usb/dwc3/core.c

>>>>>> @@ -1259,6 +1259,38 @@ static int dwc3_probe(struct platform_device

>>>>>> *pdev)

>>>>>>         return ret;

>>>>>>  }

>>>>>>

>>>>>> +static void dwc3_shutdown(struct platform_device *pdev)

>>>>>> +{

>>>>>> +       struct dwc3     *dwc = platform_get_drvdata(pdev);

>>>>>> +       struct resource *res = platform_get_resource(pdev,

>>>>>> IORESOURCE_MEM, 0);

>>>>>> +

>>>>>> +       pm_runtime_get_sync(&pdev->dev);

>>>>>> +       /*

>>>>>> +        * restore res->start back to its original value so that, in case

>>>>>> the

>>>>>> +        * probe is deferred, we don't end up getting error in request

>>>>>> the

>>>>>> +        * memory region the next time probe is called.

>>>>>> +        */

>>>>>> +       res->start -= DWC3_GLOBALS_REGS_START;

>>>>>> +

>>>>>> +       dwc3_debugfs_exit(dwc);

>>>>>> +       dwc3_core_exit_mode(dwc);

>>>>>> +       dwc3_event_buffers_cleanup(dwc);

>>>>

>>>>

>>>> What about dwc3_event_buffers_cleanup? should I remove it from

>>>> dwc3_shutdown()?

>>>> It is already in dwc3_core_exit()

>>>

>>>I think so. We should avoid duplicate code.

>>>

>>>>>> +       dwc3_free_event_buffers(dwc);

>>>>>> +

>>>>>> +       usb_phy_set_suspend(dwc->usb2_phy, 1);

>>>>>> +       usb_phy_set_suspend(dwc->usb3_phy, 1);

>>>>>> +

>>>>>> +       phy_power_off(dwc->usb2_generic_phy);

>>>>>> +       phy_power_off(dwc->usb3_generic_phy);

>>>>>

>>>>>

>>>>> We've done these in dwc3_core_exit().

>>

>> This is the patch after testing on a Odroid XU4, on top of linux-next

>> 964bcc1b4f57028d56dace7d9bc5924f2eb43f36 which translates to 4.13.0-rc1-next-20170717+

>> I tested this patch for a week without problems with heavy USB and NIC usage.

>> Please consider merging it

>>

>>

>> Author: gustavo panizzo <gfa@zumbi.com.ar>

>> Date:   Wed Jul 12 11:26:55 2017 +0800

>>

>>     usb: dwc3: Fix the USB 3.0 hub detection bug after warm boot

>>

>>     The dwc3 could not release resources when the module is built-in

>>     because this module does not have shutdown method. This causes the USB

>>     3.0 hub is not able to detect after warm boot.

>>

>>     Original patch by Brian Kim, updated and submitted upstream by gustavo

>>     panizzo.

>

>if the original patch is from Brian, then 'Author' should be

>Brian. Please fix it.

sure, i just didn't want to attribute something he didn't write

>

>I also don't get why all of a sudden we need to implement

>->shutdown(). Why is it that we never needed it before and we need it now?

Commit c499ff71ff2a281366c6ec7a904c547d806cbcd1 broke USB3 for the
Odroid XU4, this 2 patches fix the USB3

https://github.com/hardkernel/linux/commit/74b9605e5587b30912d6b6093e9d7fb06d043c33
https://github.com/hardkernel/linux/commit/2166ffd004e04a61887eb2a39f8639dc12140c58

Hardkernel didn't upstreamed them, after investigation in Debian #843448
the 2 patches were identified.

The first patch is being upstreamed by Jochen Sprickerhof
http://marc.info/?l=linux-usb&m=149945465112440&w=2

I'm taking care of the second patch

>

>Care to bisect to find the first commit which started causing this

>problem?


c499ff71ff2a281366c6ec7a904c547d806cbcd1

>

>-- 

>balbi




-- 
IRC: gfa
GPG: 0X44BB1BA79F6C6333
gustavo panizzo Sept. 7, 2017, 6:51 a.m. | #3
Hello

On Sun, Jul 30, 2017 at 07:53:03AM +0800, gustavo panizzo wrote:
>Hi

>

>On Mon, Jul 24, 2017 at 12:53:27PM +0300, Felipe Balbi wrote:

>>

>>Hi,

>>

>>gustavo panizzo <gfa@zumbi.com.ar> writes:

>>>>>On Wed, Jul 12, 2017 at 02:08:04PM +0800, Baolin Wang wrote:

>>>>>>

>>>>>>Hi,

>>>>>>

>>>>>>On 12 July 2017 at 11:52, gustavo panizzo <gfa@zumbi.com.ar> wrote:

>>>>>>>

>>>>>>>The dwc3 could not release resources when the module is built-in

>>>>>>>because this module does not have shutdown method. This causes the USB

>>>>>>>3.0 hub is not able to detect after warm boot.

>>>>>>>

>>>>>>>Original patch by Brian Kim, updated and submitted upstream by gustavo

>>>>>>>panizzo.

>>>>>>>

>>>>>>>Also see https://bugs.debian.org/843448

>>>>>>>

>>>>>>>Signed-off-by: Brian Kim <brian.kim@hardkernel.com>

>>>>>>>Signed-off-by: gustavo panizzo <gfa@zumbi.com.ar>

>>>>>>>---

>>>>>>> drivers/usb/dwc3/core.c | 33 +++++++++++++++++++++++++++++++++

>>>>>>> 1 file changed, 33 insertions(+)

>>>>>>>

>>>>>>>diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c

>>>>>>>index 326b302fc440..f92dfe213d89 100644

>>>>>>>--- a/drivers/usb/dwc3/core.c

>>>>>>>+++ b/drivers/usb/dwc3/core.c

>>>>>>>@@ -1259,6 +1259,38 @@ static int dwc3_probe(struct platform_device

>>>>>>>*pdev)

>>>>>>>        return ret;

>>>>>>> }

>>>>>>>

>>>>>>>+static void dwc3_shutdown(struct platform_device *pdev)

>>>>>>>+{

>>>>>>>+       struct dwc3     *dwc = platform_get_drvdata(pdev);

>>>>>>>+       struct resource *res = platform_get_resource(pdev,

>>>>>>>IORESOURCE_MEM, 0);

>>>>>>>+

>>>>>>>+       pm_runtime_get_sync(&pdev->dev);

>>>>>>>+       /*

>>>>>>>+        * restore res->start back to its original value so that, in case

>>>>>>>the

>>>>>>>+        * probe is deferred, we don't end up getting error in request

>>>>>>>the

>>>>>>>+        * memory region the next time probe is called.

>>>>>>>+        */

>>>>>>>+       res->start -= DWC3_GLOBALS_REGS_START;

>>>>>>>+

>>>>>>>+       dwc3_debugfs_exit(dwc);

>>>>>>>+       dwc3_core_exit_mode(dwc);

>>>>>>>+       dwc3_event_buffers_cleanup(dwc);

>>>>>

>>>>>

>>>>>What about dwc3_event_buffers_cleanup? should I remove it from

>>>>>dwc3_shutdown()?

>>>>>It is already in dwc3_core_exit()

>>>>

>>>>I think so. We should avoid duplicate code.

>>>>

>>>>>>>+       dwc3_free_event_buffers(dwc);

>>>>>>>+

>>>>>>>+       usb_phy_set_suspend(dwc->usb2_phy, 1);

>>>>>>>+       usb_phy_set_suspend(dwc->usb3_phy, 1);

>>>>>>>+

>>>>>>>+       phy_power_off(dwc->usb2_generic_phy);

>>>>>>>+       phy_power_off(dwc->usb3_generic_phy);

>>>>>>

>>>>>>

>>>>>>We've done these in dwc3_core_exit().

>>>

>>>This is the patch after testing on a Odroid XU4, on top of linux-next

>>>964bcc1b4f57028d56dace7d9bc5924f2eb43f36 which translates to 4.13.0-rc1-next-20170717+

>>>I tested this patch for a week without problems with heavy USB and NIC usage.

>>>Please consider merging it


Author: Brian Kim <brian.kim@hardkernel.com>
Date:   Wed Jul 12 11:26:55 2017 +0800

   usb: dwc3: Fix the USB 3.0 hub detection bug after warm boot
   The dwc3 could not release resources when the module is built-in
   because this module does not have shutdown method. This causes the USB
   3.0 hub is not able to detect after warm boot.
   Original patch by Brian Kim, updated and submitted upstream by gustavo
   panizzo.
   Also see https://bugs.debian.org/843448
   Signed-off-by: Brian Kim <brian.kim@hardkernel.com>

   Signed-off-by: gustavo panizzo <gfa@zumbi.com.ar>


diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 326b302fc440..09de37d47ee7 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1259,6 +1259,32 @@ static int dwc3_probe(struct platform_device *pdev)
       	return ret;
}

+static void dwc3_shutdown(struct platform_device *pdev)
+{
+       struct dwc3     *dwc = platform_get_drvdata(pdev);
+       struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+
+       pm_runtime_get_sync(&pdev->dev);
+       /*
+        * restore res->start back to its original value so that, in case the
+        * probe is deferred, we don't end up getting error in request the
+        * memory region the next time probe is called.
+        */
+       res->start -= DWC3_GLOBALS_REGS_START;
+
+       dwc3_debugfs_exit(dwc);
+       dwc3_core_exit_mode(dwc);
+       dwc3_event_buffers_cleanup(dwc);
+       dwc3_free_event_buffers(dwc);
+
+       dwc3_core_exit(dwc);
+       dwc3_ulpi_exit(dwc);
+
+       pm_runtime_put_sync(&pdev->dev);
+       pm_runtime_allow(&pdev->dev);
+       pm_runtime_disable(&pdev->dev);
+}
+
static int dwc3_remove(struct platform_device *pdev)
{
       	struct dwc3     *dwc = platform_get_drvdata(pdev);
@@ -1488,6 +1514,7 @@ MODULE_DEVICE_TABLE(acpi, dwc3_acpi_match);
static struct platform_driver dwc3_driver = {
        .probe          = dwc3_probe,
        .remove         = dwc3_remove,
+	.shutdown	= dwc3_shutdown,
        .driver         = {
                .name   = "dwc3",
                .of_match_table = of_match_ptr(of_dwc3_match),

Patch applies cleanly on top of c6be5a0e3cebc145127d46a58350e05d2bcf6323 from linux-next
Can you _please_ merge it?

>>>

>>>

>>>Author: gustavo panizzo <gfa@zumbi.com.ar>

>>>Date:   Wed Jul 12 11:26:55 2017 +0800

>>>

>>>    usb: dwc3: Fix the USB 3.0 hub detection bug after warm boot

>>>

>>>    The dwc3 could not release resources when the module is built-in

>>>    because this module does not have shutdown method. This causes the USB

>>>    3.0 hub is not able to detect after warm boot.

>>>

>>>    Original patch by Brian Kim, updated and submitted upstream by gustavo

>>>    panizzo.

>>

>>if the original patch is from Brian, then 'Author' should be

>>Brian. Please fix it.

>sure, i just didn't want to attribute something he didn't write

>

>>

>>I also don't get why all of a sudden we need to implement

>>->shutdown(). Why is it that we never needed it before and we need it now?

>Commit c499ff71ff2a281366c6ec7a904c547d806cbcd1 broke USB3 for the

>Odroid XU4, this 2 patches fix the USB3

>

>https://github.com/hardkernel/linux/commit/74b9605e5587b30912d6b6093e9d7fb06d043c33

>https://github.com/hardkernel/linux/commit/2166ffd004e04a61887eb2a39f8639dc12140c58

>

>Hardkernel didn't upstreamed them, after investigation in Debian #843448

>the 2 patches were identified.

>

>The first patch is being upstreamed by Jochen Sprickerhof

>http://marc.info/?l=linux-usb&m=149945465112440&w=2

>

>I'm taking care of the second patch

>

>>

>>Care to bisect to find the first commit which started causing this

>>problem?

>

>c499ff71ff2a281366c6ec7a904c547d806cbcd1

>

>>

>>-- 

>>balbi

>

>

>

>-- 

>IRC: gfa

>GPG: 0X44BB1BA79F6C6333

>


-- 
IRC: gfa
GPG: 0X44BB1BA79F6C6333
gustavo panizzo Sept. 15, 2017, 9:01 a.m. | #4
Hello

On Thu, Sep 07, 2017 at 01:51:31PM +0300, Felipe Balbi wrote:
>

>Hi,

>

>gustavo panizzo <gfa@zumbi.com.ar> writes:

>>>>>>>>>---

>>>>>>>>> drivers/usb/dwc3/core.c | 33 +++++++++++++++++++++++++++++++++

>>>>>>>>> 1 file changed, 33 insertions(+)

>>>>>>>>>

>>>>>>>>>diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c

>>>>>>>>>index 326b302fc440..f92dfe213d89 100644

>>>>>>>>>--- a/drivers/usb/dwc3/core.c

>>>>>>>>>+++ b/drivers/usb/dwc3/core.c

>>>>>>>>>@@ -1259,6 +1259,38 @@ static int dwc3_probe(struct platform_device

>>>>>>>>>*pdev)

>>>>>>>>>        return ret;

>>>>>>>>> }

>>>>>>>>>

>>>>>>>>>+static void dwc3_shutdown(struct platform_device *pdev)

>>>>>>>>>+{

>>>>>>>>>+       struct dwc3     *dwc = platform_get_drvdata(pdev);

>>>>>>>>>+       struct resource *res = platform_get_resource(pdev,

>>>>>>>>>IORESOURCE_MEM, 0);

>>>>>>>>>+

>>>>>>>>>+       pm_runtime_get_sync(&pdev->dev);

>>>>>>>>>+       /*

>>>>>>>>>+        * restore res->start back to its original value so that, in case

>>>>>>>>>the

>>>>>>>>>+        * probe is deferred, we don't end up getting error in request

>>>>>>>>>the

>>>>>>>>>+        * memory region the next time probe is called.

>>>>>>>>>+        */

>>>>>>>>>+       res->start -= DWC3_GLOBALS_REGS_START;

>>>>>>>>>+

>>>>>>>>>+       dwc3_debugfs_exit(dwc);

>>>>>>>>>+       dwc3_core_exit_mode(dwc);

>>>>>>>>>+       dwc3_event_buffers_cleanup(dwc);

>>>>>>>

>>>>>>>

>>>>>>>What about dwc3_event_buffers_cleanup? should I remove it from

>>>>>>>dwc3_shutdown()?

>>>>>>>It is already in dwc3_core_exit()

>>>>>>

>>>>>>I think so. We should avoid duplicate code.

>>>>>>

>>>>>>>>>+       dwc3_free_event_buffers(dwc);

>>>>>>>>>+

>>>>>>>>>+       usb_phy_set_suspend(dwc->usb2_phy, 1);

>>>>>>>>>+       usb_phy_set_suspend(dwc->usb3_phy, 1);

>>>>>>>>>+

>>>>>>>>>+       phy_power_off(dwc->usb2_generic_phy);

>>>>>>>>>+       phy_power_off(dwc->usb3_generic_phy);

>>>>>>>>

>>>>>>>>

>>>>>>>>We've done these in dwc3_core_exit().

>>>>>

>>>>>This is the patch after testing on a Odroid XU4, on top of linux-next

>>>>>964bcc1b4f57028d56dace7d9bc5924f2eb43f36 which translates to 4.13.0-rc1-next-20170717+

>>>>>I tested this patch for a week without problems with heavy USB and NIC usage.

>>>>>Please consider merging it

>>

>> Author: Brian Kim <brian.kim@hardkernel.com>

>> Date:   Wed Jul 12 11:26:55 2017 +0800

>>

>>    usb: dwc3: Fix the USB 3.0 hub detection bug after warm boot

>>    The dwc3 could not release resources when the module is built-in

>>    because this module does not have shutdown method. This causes the USB

>>    3.0 hub is not able to detect after warm boot.

>>    Original patch by Brian Kim, updated and submitted upstream by gustavo

>>    panizzo.

>>    Also see https://bugs.debian.org/843448

>>    Signed-off-by: Brian Kim <brian.kim@hardkernel.com>

>>    Signed-off-by: gustavo panizzo <gfa@zumbi.com.ar>

>>

>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c

>> index 326b302fc440..09de37d47ee7 100644

>> --- a/drivers/usb/dwc3/core.c

>> +++ b/drivers/usb/dwc3/core.c

>> @@ -1259,6 +1259,32 @@ static int dwc3_probe(struct platform_device *pdev)

>>        	return ret;

>> }

>>

>> +static void dwc3_shutdown(struct platform_device *pdev)

>> +{

>> +       struct dwc3     *dwc = platform_get_drvdata(pdev);

>> +       struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);

>> +

>> +       pm_runtime_get_sync(&pdev->dev);

>> +       /*

>> +        * restore res->start back to its original value so that, in case the

>> +        * probe is deferred, we don't end up getting error in request the

>> +        * memory region the next time probe is called.

>> +        */

>> +       res->start -= DWC3_GLOBALS_REGS_START;

>> +

>> +       dwc3_debugfs_exit(dwc);

>> +       dwc3_core_exit_mode(dwc);

>> +       dwc3_event_buffers_cleanup(dwc);

>> +       dwc3_free_event_buffers(dwc);

>> +

>> +       dwc3_core_exit(dwc);

>> +       dwc3_ulpi_exit(dwc);

>> +

>> +       pm_runtime_put_sync(&pdev->dev);

>> +       pm_runtime_allow(&pdev->dev);

>> +       pm_runtime_disable(&pdev->dev);

>> +}

>> +

>> static int dwc3_remove(struct platform_device *pdev)

>> {

>>        	struct dwc3     *dwc = platform_get_drvdata(pdev);

>> @@ -1488,6 +1514,7 @@ MODULE_DEVICE_TABLE(acpi, dwc3_acpi_match);

>> static struct platform_driver dwc3_driver = {

>>         .probe          = dwc3_probe,

>>         .remove         = dwc3_remove,

>> +	.shutdown	= dwc3_shutdown,

>>         .driver         = {

>>                 .name   = "dwc3",

>>                 .of_match_table = of_match_ptr(of_dwc3_match),

>>

>> Patch applies cleanly on top of c6be5a0e3cebc145127d46a58350e05d2bcf6323 from linux-next

>> Can you _please_ merge it?

>

>why are you upset? You didn't do the changes I requested until now. It's


I'm not upset

>too late for v4.14 merge window and you didn't even send this as a

>proper patch. I also have no evidence that you've been testing mainline

>kernel, the commits you pointed me to are against a v4.9 vendor kernel.


the commit i sent was tested, and is still running, on top linux-next
964bcc1b4f57028d56dace7d9bc5924f2eb43f36, which gives an uname -r
4.13.0-rc1-next-20170717+


>

>Test this against a vanilla tree (v4.13 was tagged days ago) and give me

>logs showing the problem without your commit.


dmesg on top of 4.13.0

[    0.000000] Booting Linux on physical CPU 0x100
[    0.000000] random: get_random_bytes called from start_kernel+0x44/0x460 with crng_init=0
[    0.000000] Linux version 4.13.0 (root@odroid) (gcc version 6.3.0 20170516 (Debian 6.3.0-18)) #4 SMP Thu Sep 14 21:26:18 UTC 2017
[    0.000000] CPU: ARMv7 Processor [410fc073] revision 3 (ARMv7), cr=30c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Hardkernel Odroid XU4
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 16 MiB at 0x00000000bd800000
[    0.000000] Samsung CPU ID: 0xe5422001
[    0.000000] On node 0 totalpages: 518656
[    0.000000] free_area_init_node: node 0, pgdat c10eca40, node_mem_map eee1c000
[    0.000000]   DMA zone: 1728 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 196608 pages, LIFO batch:31
[    0.000000]   HighMem zone: 322048 pages, LIFO batch:31
[    0.000000] Running under secure firmware.
[    0.000000] percpu: Embedded 17 pages/cpu @eed63000 s37388 r8192 d24052 u69632
[    0.000000] pcpu-alloc: s37388 r8192 d24052 u69632 alloc=17*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [0] 4 [0] 5 [0] 6 [0] 7 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 516928
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-4.13.0 root=UUID=e324fffe-f424-4409-952b-c3d1dcf5d4e4 ro quiet
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 2005484K/2074624K available (8192K kernel code, 1055K rwdata, 2368K rodata, 2048K init, 340K bss, 52756K reserved, 16384K cma-reserved, 1271808K highmem)
[    0.000000] Virtual kernel memory layout:
                   vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                   fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                   vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
                   lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
                   pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
                   modules : 0xbf000000 - 0xbfe00000   (  14 MB)
                     .text : 0xc0008000 - 0xc0a00000   (10208 kB)
                     .init : 0xc0e00000 - 0xc1000000   (2048 kB)
                     .data : 0xc1000000 - 0xc1107eac   (1056 kB)
                      .bss : 0xc110e9c4 - 0xc1163ce4   ( 341 kB)
[    0.000000] ftrace: allocating 31309 entries in 92 pages
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] Switching to timer-based delay loop, resolution 41ns
[    0.000000] clocksource: mct-frc: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000008] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.006455] Console: colour dummy device 80x30
[    0.006475] console [tty0] enabled
[    0.006506] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[    0.006521] pid_max: default: 32768 minimum: 301
[    0.006829] Security Framework initialized
[    0.006841] Yama: becoming mindful.
[    0.006876] AppArmor: AppArmor disabled by boot time parameter
[    0.006983] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.007001] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.007920] CPU: Testing write buffer coherency: ok
[    0.008736] CPU0: update cpu_capacity 448
[    0.008746] CPU0: thread -1, cpu 0, socket 1, mpidr 80000100
[    0.009397] Setting up static identity map for 0x40200000 - 0x402000a0
[    0.010118] ARM CCI driver probed
[    0.010343] Exynos MCPM support installed
[    0.012614] Hierarchical SRCU implementation.
[    0.016815] EFI services will not be available.
[    0.017248] smp: Bringing up secondary CPUs ...
[    0.018312] CPU1: update cpu_capacity 448
[    0.018321] CPU1: thread -1, cpu 1, socket 1, mpidr 80000101
[    0.019423] CPU2: update cpu_capacity 448
[    0.019431] CPU2: thread -1, cpu 2, socket 1, mpidr 80000102
[    0.020586] CPU3: update cpu_capacity 448
[    0.020594] CPU3: thread -1, cpu 3, socket 1, mpidr 80000103
[    0.021655] CPU4: update cpu_capacity 1535
[    0.021665] CPU4: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.022740] CPU5: update cpu_capacity 1535
[    0.022749] CPU5: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.023829] CPU6: update cpu_capacity 1535
[    0.023837] CPU6: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.024886] CPU7: update cpu_capacity 1535
[    0.024895] CPU7: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.025038] smp: Brought up 1 node, 8 CPUs
[    0.025053] SMP: Total of 8 processors activated (384.00 BogoMIPS).
[    0.025060] CPU: WARNING: CPU(s) started in wrong/inconsistent modes (primary CPU mode 0x1a)
[    0.025065] CPU: This may indicate a broken bootloader or firmware.
[    0.026740] devtmpfs: initialized
[    0.050057] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 3
[    0.050507] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.050532] futex hash table entries: 2048 (order: 5, 131072 bytes)
[    0.052020] pinctrl core: initialized pinctrl subsystem
[    0.054772] DMI not present or invalid.
[    0.055272] NET: Registered protocol family 16
[    0.058522] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.064450] No ATAGs?
[    0.064785] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.064793] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.066408] Serial: AMBA PL011 UART driver
[    0.107099] EXYNOS5420 PMU initialized
[    0.134115] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.144822] vgaarb: loaded
[    0.146364] s3c-i2c 12c80000.i2c: slave address 0x00
[    0.146379] s3c-i2c 12c80000.i2c: bus frequency set to 65 KHz
[    0.146942] s3c-i2c 12c80000.i2c: i2c-2: S3C I2C adapter
[    0.147966] media: Linux media interface: v0.10
[    0.148032] Linux video capture interface: v2.00
[    0.148127] pps_core: LinuxPPS API ver. 1 registered
[    0.148133] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.148158] PTP clock support registered
[    0.148335] dmi: Firmware registration failed.
[    0.150575] clocksource: Switched to clocksource mct-frc
[    0.235367] VFS: Disk quotas dquot_6.6.0
[    0.235492] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.255329] NET: Registered protocol family 2
[    0.256327] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.256440] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.256618] TCP: Hash tables configured (established 8192 bind 8192)
[    0.256862] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.256912] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.257350] NET: Registered protocol family 1
[    0.257393] PCI: CLS 0 bytes, default 64
[    0.258066] Unpacking initramfs...
[    1.711221] Freeing initrd memory: 17084K
[    1.711423] kvm [1]: HYP mode not available
[    1.715471] audit: initializing netlink subsys (disabled)
[    1.715807] audit: type=2000 audit(1.715:1): state=initialized audit_enabled=0 res=1
[    1.716609] workingset: timestamp_bits=14 max_order=19 bucket_order=5
[    1.717069] zbud: loaded
[    1.718197] random: fast init done
[    1.740653] bounce: pool size: 64 pages
[    1.740756] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    1.740993] io scheduler noop registered
[    1.741001] io scheduler deadline registered
[    1.741117] io scheduler cfq registered (default)
[    1.741124] io scheduler mq-deadline registered
[    1.741130] io scheduler kyber registered
[    1.765856] dma-pl330 121a0000.pdma: Loaded driver for PL330 DMAC-241330
[    1.765872] dma-pl330 121a0000.pdma: 	DBUFF-32x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32
[    1.770478] dma-pl330 121b0000.pdma: Loaded driver for PL330 DMAC-241330
[    1.770491] dma-pl330 121b0000.pdma: 	DBUFF-32x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32
[    1.772124] dma-pl330 10800000.mdma: Loaded driver for PL330 DMAC-241330
[    1.772138] dma-pl330 10800000.mdma: 	DBUFF-64x8bytes Num_Chans-8 Num_Peri-1 Num_Events-32
[    1.775853] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    1.778995] Serial: AMBA driver
[    1.779324] 12c00000.serial: ttySAC0 at MMIO 0x12c00000 (irq = 58, base_baud = 0) is a S3C6400/10
[    1.779883] 12c10000.serial: ttySAC1 at MMIO 0x12c10000 (irq = 59, base_baud = 0) is a S3C6400/10
[    1.780402] 12c20000.serial: ttySAC2 at MMIO 0x12c20000 (irq = 60, base_baud = 0) is a S3C6400/10
[    1.787604] console [ttySAC2] enabled
[    1.788182] 12c30000.serial: ttySAC3 at MMIO 0x12c30000 (irq = 61, base_baud = 0) is a S3C6400/10
[    1.794995] libphy: Fixed MDIO Bus: probed
[    1.796596] mousedev: PS/2 mouse device common for all mice
[    1.807034] ledtrig-cpu: registered to indicate activity on CPUs
[    1.808763] NET: Registered protocol family 10
[    1.809956] Segment Routing with IPv6
[    1.810030] mip6: Mobile IPv6
[    1.810045] NET: Registered protocol family 17
[    1.810062] mpls_gso: MPLS GSO support
[    1.810793] ThumbEE CPU extension supported.
[    1.810809] Registering SWP/SWPB emulation handler
[    1.811731] registered taskstats version 1
[    1.811847] zswap: loaded using pool lzo/zbud
[    1.812365] ima: No TPM chip found, activating TPM-bypass! (rc=-19)
[    1.847540] hctosys: unable to open rtc device (rtc0)
[    1.847552] sr_init: No PMIC hook to init smartreflex
[    1.848009] sr_init: platform driver register failed for SR
[    1.852373] PM: Hibernation image not present or could not be loaded.
[    1.857892] Freeing unused kernel memory: 2048K
[    2.186876] exynos5_usb3drd_phy 12100000.phy: 12100000.phy supply vbus not found, using dummy regulator
[    2.186977] exynos5_usb3drd_phy 12100000.phy: 12100000.phy supply vbus-boost not found, using dummy regulator
[    2.187954] samsung-usb2-phy 12130000.phy: 12130000.phy supply vbus not found, using dummy regulator
[    2.191779] exynos5_usb3drd_phy 12500000.phy: 12500000.phy supply vbus not found, using dummy regulator
[    2.191888] exynos5_usb3drd_phy 12500000.phy: 12500000.phy supply vbus-boost not found, using dummy regulator
[    2.192403] usbcore: registered new interface driver usbfs
[    2.192536] usbcore: registered new interface driver hub
[    2.192842] Synopsys Designware Multimedia Card Interface Driver
[    2.196551] usbcore: registered new device driver usb
[    2.198835] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.199667] ehci-exynos: EHCI EXYNOS driver
[    2.199899] dwmmc_exynos 12200000.mmc: IDMAC supports 32-bit address mode.
[    2.201019] dwmmc_exynos 12200000.mmc: Using internal DMA controller.
[    2.201040] dwmmc_exynos 12200000.mmc: Version ID is 250a
[    2.201111] dwmmc_exynos 12200000.mmc: DW MMC controller at irq 73,64 bit host data width,64 deep fifo
[    2.201571] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.201985] dwmmc_exynos 12220000.mmc: IDMAC supports 32-bit address mode.
[    2.202226] dwmmc_exynos 12220000.mmc: Using internal DMA controller.
[    2.202244] dwmmc_exynos 12220000.mmc: Version ID is 250a
[    2.202300] dwmmc_exynos 12220000.mmc: DW MMC controller at irq 74,64 bit host data width,64 deep fifo
[    2.202845] ohci-exynos: OHCI EXYNOS driver
[    2.202903] exynos-ehci 12110000.usb: EHCI Host Controller
[    2.202946] exynos-ehci 12110000.usb: new USB bus registered, assigned bus number 1
[    2.203715] exynos-ehci 12110000.usb: irq 71, io mem 0x12110000
[    2.240671] exynos-ehci 12110000.usb: USB 2.0 started, EHCI 1.00
[    2.241055] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.241068] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.241079] usb usb1: Product: EHCI Host Controller
[    2.241089] usb usb1: Manufacturer: Linux 4.13.0 ehci_hcd
[    2.241105] usb usb1: SerialNumber: 12110000.usb
[    2.241995] hub 1-0:1.0: USB hub found
[    2.242051] hub 1-0:1.0: 3 ports detected
[    2.243993] exynos-ohci 12120000.usb: USB Host Controller
[    2.244042] exynos-ohci 12120000.usb: new USB bus registered, assigned bus number 2
[    2.244801] exynos-ohci 12120000.usb: irq 71, io mem 0x12120000
[    2.246865] dwmmc_exynos 12200000.mmc: IDMAC supports 32-bit address mode.
[    2.247123] dwmmc_exynos 12200000.mmc: Using internal DMA controller.
[    2.247141] dwmmc_exynos 12200000.mmc: Version ID is 250a
[    2.247177] dwmmc_exynos 12200000.mmc: DW MMC controller at irq 73,64 bit host data width,64 deep fifo
[    2.248434] dwmmc_exynos 12220000.mmc: IDMAC supports 32-bit address mode.
[    2.248478] alloc_contig_range: [bd847, bd848) PFNs busy
[    2.248630] dwmmc_exynos 12220000.mmc: Using internal DMA controller.
[    2.248647] dwmmc_exynos 12220000.mmc: Version ID is 250a
[    2.248678] dwmmc_exynos 12220000.mmc: DW MMC controller at irq 74,64 bit host data width,64 deep fifo
[    2.315065] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    2.315083] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.315092] usb usb2: Product: USB Host Controller
[    2.315101] usb usb2: Manufacturer: Linux 4.13.0 ohci_hcd
[    2.315109] usb usb2: SerialNumber: 12120000.usb
[    2.316236] hub 2-0:1.0: USB hub found
[    2.316297] hub 2-0:1.0: 3 ports detected
[    2.320930] dwmmc_exynos 12200000.mmc: IDMAC supports 32-bit address mode.
[    2.321111] alloc_contig_range: [bd847, bd848) PFNs busy
[    2.321303] alloc_contig_range: [bd848, bd849) PFNs busy
[    2.321515] dwmmc_exynos 12200000.mmc: Using internal DMA controller.
[    2.321532] dwmmc_exynos 12200000.mmc: Version ID is 250a
[    2.321576] dwmmc_exynos 12200000.mmc: DW MMC controller at irq 73,64 bit host data width,64 deep fifo
[    2.323046] dwmmc_exynos 12220000.mmc: IDMAC supports 32-bit address mode.
[    2.323130] alloc_contig_range: [bd847, bd848) PFNs busy
[    2.323286] alloc_contig_range: [bd848, bd849) PFNs busy
[    2.323392] alloc_contig_range: [bd849, bd84a) PFNs busy
[    2.323612] dwmmc_exynos 12220000.mmc: Using internal DMA controller.
[    2.323630] dwmmc_exynos 12220000.mmc: Version ID is 250a
[    2.323674] dwmmc_exynos 12220000.mmc: DW MMC controller at irq 74,64 bit host data width,64 deep fifo
[    2.329150] dwmmc_exynos 12200000.mmc: IDMAC supports 32-bit address mode.
[    2.329277] alloc_contig_range: [bd847, bd848) PFNs busy
[    2.329543] alloc_contig_range: [bd848, bd849) PFNs busy
[    2.329694] alloc_contig_range: [bd849, bd84a) PFNs busy
[    2.329798] alloc_contig_range: [bd84a, bd84b) PFNs busy
[    2.330041] dwmmc_exynos 12200000.mmc: Using internal DMA controller.
[    2.330060] dwmmc_exynos 12200000.mmc: Version ID is 250a
[    2.330106] dwmmc_exynos 12200000.mmc: DW MMC controller at irq 73,64 bit host data width,64 deep fifo
[    2.331896] dwmmc_exynos 12220000.mmc: IDMAC supports 32-bit address mode.
[    2.332666] dwmmc_exynos 12220000.mmc: Using internal DMA controller.
[    2.332687] dwmmc_exynos 12220000.mmc: Version ID is 250a
[    2.332750] dwmmc_exynos 12220000.mmc: DW MMC controller at irq 74,64 bit host data width,64 deep fifo
[    2.337788] dwmmc_exynos 12200000.mmc: IDMAC supports 32-bit address mode.
[    2.338755] dwmmc_exynos 12200000.mmc: Using internal DMA controller.
[    2.338776] dwmmc_exynos 12200000.mmc: Version ID is 250a
[    2.338820] dwmmc_exynos 12200000.mmc: DW MMC controller at irq 73,64 bit host data width,64 deep fifo
[    2.340476] dwmmc_exynos 12220000.mmc: IDMAC supports 32-bit address mode.
[    2.341459] dwmmc_exynos 12220000.mmc: Using internal DMA controller.
[    2.341479] dwmmc_exynos 12220000.mmc: Version ID is 250a
[    2.341522] dwmmc_exynos 12220000.mmc: DW MMC controller at irq 74,64 bit host data width,64 deep fifo
[    2.344020] s5m-rtc s2mps14-rtc: rtc core: registered s5m-rtc as rtc0
[    2.350305] dwmmc_exynos 12200000.mmc: IDMAC supports 32-bit address mode.
[    2.351366] dwmmc_exynos 12200000.mmc: Using internal DMA controller.
[    2.351386] dwmmc_exynos 12200000.mmc: Version ID is 250a
[    2.351433] dwmmc_exynos 12200000.mmc: DW MMC controller at irq 73,64 bit host data width,64 deep fifo
[    2.352841] dwmmc_exynos 12220000.mmc: IDMAC supports 32-bit address mode.
[    2.353824] dwmmc_exynos 12220000.mmc: Using internal DMA controller.
[    2.353842] dwmmc_exynos 12220000.mmc: Version ID is 250a
[    2.353879] dwmmc_exynos 12220000.mmc: DW MMC controller at irq 74,64 bit host data width,64 deep fifo
[    2.410684] vdd_ldo9: Bringing 3300000uV into 3000000-3000000uV
[    2.419750] vddq_mmc2: Bringing 3300000uV into 2800000-2800000uV
[    2.424845] vdd_ldo15: Bringing 3300000uV into 3100000-3100000uV
[    2.433471] vdd_sd: Bringing 3300000uV into 2800000-2800000uV
[    2.495679] dwmmc_exynos 12200000.mmc: IDMAC supports 32-bit address mode.
[    2.496173] dwmmc_exynos 12200000.mmc: Using internal DMA controller.
[    2.496198] dwmmc_exynos 12200000.mmc: Version ID is 250a
[    2.496240] dwmmc_exynos 12200000.mmc: DW MMC controller at irq 73,64 bit host data width,64 deep fifo
[    2.496703] dwmmc_exynos 12200000.mmc: allocated mmc-pwrseq
[    2.508975] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator
[    2.509176] usb_phy_generic usb_phy_generic.1.auto: usb_phy_generic.1.auto supply vcc not found, using dummy regulator
[    2.509387] usb_phy_generic usb_phy_generic.2.auto: usb_phy_generic.2.auto supply vcc not found, using dummy regulator
[    2.509570] usb_phy_generic usb_phy_generic.3.auto: usb_phy_generic.3.auto supply vcc not found, using dummy regulator
[    2.530849] xhci-hcd xhci-hcd.4.auto: xHCI Host Controller
[    2.530888] xhci-hcd xhci-hcd.4.auto: new USB bus registered, assigned bus number 3
[    2.531903] xhci-hcd xhci-hcd.4.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x02010010
[    2.531961] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 400000Hz, actual 396825HZ div = 63)
[    2.531975] xhci-hcd xhci-hcd.4.auto: irq 135, io mem 0x12000000
[    2.532262] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[    2.532275] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.532285] usb usb3: Product: xHCI Host Controller
[    2.532296] usb usb3: Manufacturer: Linux 4.13.0 xhci-hcd
[    2.532306] usb usb3: SerialNumber: xhci-hcd.4.auto
[    2.533135] hub 3-0:1.0: USB hub found
[    2.533191] hub 3-0:1.0: 1 port detected
[    2.533704] xhci-hcd xhci-hcd.4.auto: xHCI Host Controller
[    2.533731] xhci-hcd xhci-hcd.4.auto: new USB bus registered, assigned bus number 4
[    2.533857] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[    2.534067] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003
[    2.534079] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.534089] usb usb4: Product: xHCI Host Controller
[    2.534100] usb usb4: Manufacturer: Linux 4.13.0 xhci-hcd
[    2.534109] usb usb4: SerialNumber: xhci-hcd.4.auto
[    2.534959] hub 4-0:1.0: USB hub found
[    2.535011] hub 4-0:1.0: 1 port detected
[    2.535625] xhci-hcd xhci-hcd.5.auto: xHCI Host Controller
[    2.535658] xhci-hcd xhci-hcd.5.auto: new USB bus registered, assigned bus number 5
[    2.536504] xhci-hcd xhci-hcd.5.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x02010010
[    2.536564] xhci-hcd xhci-hcd.5.auto: irq 136, io mem 0x12400000
[    2.536828] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002
[    2.536840] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.536851] usb usb5: Product: xHCI Host Controller
[    2.536861] usb usb5: Manufacturer: Linux 4.13.0 xhci-hcd
[    2.536871] usb usb5: SerialNumber: xhci-hcd.5.auto
[    2.537671] hub 5-0:1.0: USB hub found
[    2.537733] hub 5-0:1.0: 1 port detected
[    2.538240] xhci-hcd xhci-hcd.5.auto: xHCI Host Controller
[    2.538266] xhci-hcd xhci-hcd.5.auto: new USB bus registered, assigned bus number 6
[    2.538390] usb usb6: We don't know the algorithms for LPM for this host, disabling LPM.
[    2.538597] usb usb6: New USB device found, idVendor=1d6b, idProduct=0003
[    2.538610] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.538620] usb usb6: Product: xHCI Host Controller
[    2.538630] usb usb6: Manufacturer: Linux 4.13.0 xhci-hcd
[    2.538640] usb usb6: SerialNumber: xhci-hcd.5.auto
[    2.539458] hub 6-0:1.0: USB hub found
[    2.539512] hub 6-0:1.0: 1 port detected
[    2.572040] dwmmc_exynos 12220000.mmc: IDMAC supports 32-bit address mode.
[    2.572321] dwmmc_exynos 12220000.mmc: Using internal DMA controller.
[    2.572339] dwmmc_exynos 12220000.mmc: Version ID is 250a
[    2.572377] dwmmc_exynos 12220000.mmc: DW MMC controller at irq 74,64 bit host data width,64 deep fifo
[    2.601175] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req 400000Hz, actual 396825HZ div = 63)
[    2.632080] exynos-tmu 10060000.tmu: More trip points than supported by this TMU.
[    2.632093] exynos-tmu 10060000.tmu: 2 trip points should be configured in polling mode.
[    2.679846] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req 50000000Hz, actual 50000000HZ div = 0)
[    2.679973] mmc1: new high speed SDHC card at address 0007
[    2.680800] mmcblk1: mmc1:0007 SL16G 14.5 GiB 
[    2.682304]  mmcblk1: p1 p2
[    2.770675] usb 1-1: new high-speed USB device number 2 using exynos-ehci
[    2.981610] usb 1-1: New USB device found, idVendor=0cf3, idProduct=9271
[    2.981627] usb 1-1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[    2.981636] usb 1-1: Product: USB2.0 WLAN
[    2.981644] usb 1-1: Manufacturer: ATHEROS
[    2.981653] usb 1-1: SerialNumber: 12345
[    3.889647] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[    4.545757] systemd[1]: System time before build time, advancing clock.
[    4.660348] ip_tables: (C) 2000-2006 Netfilter Core Team
[    4.700946] systemd[1]: systemd 232 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[    4.701732] systemd[1]: Detected architecture arm.
[    4.702892] systemd[1]: Set hostname to <odroid>.
[    5.123925] dma-pl330 3880000.adma: Loaded driver for PL330 DMAC-241330
[    5.123941] dma-pl330 3880000.adma: 	DBUFF-4x8bytes Num_Chans-6 Num_Peri-16 Num_Events-6
[    5.294493] systemd[1]: [/etc/systemd/system/transmission-daemon.service.d/override.conf:4] Unknown lvalue 'IOSchedulingClass' in section 'Unit'
[    5.294557] systemd[1]: [/etc/systemd/system/transmission-daemon.service.d/override.conf:5] Unknown lvalue 'IOSchedulingPriority' in section 'Unit'
[    5.379813] systemd[1]: Created slice User and Session Slice.
[    5.380429] systemd[1]: Listening on udev Kernel Socket.
[    5.382103] systemd[1]: Listening on LVM2 metadata daemon socket.
[    5.383081] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    5.383504] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    5.689694] EXT4-fs (mmcblk1p2): re-mounted. Opts: errors=remount-ro
[    6.082120] systemd-journald[228]: Received request to flush runtime journal from PID 1
[    6.436274] leds_pwm pwmleds: unable to request PWM for blue:heartbeat: -517
[    6.450807] pwm-fan pwm-fan: Could not get PWM
[    6.517588] s3c2410-wdt 101d0000.watchdog: watchdog inactive, reset disabled, irq disabled
[    6.518554] leds_pwm pwmleds: unable to request PWM for blue:heartbeat: -517
[    6.524969] pwm-fan pwm-fan: Could not get PWM
[    6.811259] OF: graph: no port node found in /soc/hdmi@14530000
[    6.818603] [drm] Exynos DRM: using 14450000.mixer device for DMA mapping operations
[    6.818788] exynos-drm exynos-drm: bound 14450000.mixer (ops mixer_component_ops [exynosdrm])
[    6.818825] exynos-drm exynos-drm: bound 14530000.hdmi (ops hdmi_component_ops [exynosdrm])
[    6.818832] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    6.818837] [drm] No driver support for vblank timestamp query.
[    6.819453] [drm] Initialized exynos 1.0.0 20110530 for exynos-drm on minor 0
[    6.852126] usb usb3-port1: connect-debounce failed
[    6.915842] usb 1-1: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested
[    6.916088] usbcore: registered new interface driver ath9k_htc
[    6.937821] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[    7.071833] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    7.112695] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[    7.209229] usb 1-1: ath9k_htc: Transferred FW: ath9k_htc/htc_9271-1.4.0.fw, size: 51008
[    7.460216] ath9k_htc 1-1:1.0: ath9k_htc: HTC initialized with 33 credits
[    7.693485] ath9k_htc 1-1:1.0: ath9k_htc: FW Version: 1.4
[    7.693494] ath9k_htc 1-1:1.0: FW RMW support: On
[    7.693500] ath: EEPROM regdomain: 0x809c
[    7.693505] ath: EEPROM indicates we should expect a country code
[    7.693511] ath: doing EEPROM country->regdmn map search
[    7.693516] ath: country maps to regdmn code: 0x52
[    7.693522] ath: Country alpha2 being used: CN
[    7.693527] ath: Regpair used: 0x52
[    7.713687] ieee80211 phy0: Atheros AR9271 Rev:1
[    7.742385] ath9k_htc 1-1:1.0 wlx3c46d81413ac: renamed from wlan0
[    8.187265] IPv6: ADDRCONF(NETDEV_UP): wlx3c46d81413ac: link is not ready
[    8.752284] random: crng init done
[    9.714360] ------------[ cut here ]------------
[    9.714533] WARNING: CPU: 0 PID: 0 at net/mac80211/rx.c:629 ieee80211_rx_napi+0x8f4/0xa3c [mac80211]
[    9.714538] Modules linked in: arc4 xt_limit xt_comment nf_conntrack_ipv6 nf_defrag_ipv6 xt_conntrack nf_conntrack libcrc32c ip6table_filter ip6table_mangle ip6table_raw ip6_tables xt_tcpudp xt_owner xt_multiport iptable_filter nls_ascii nls_cp437 vfat ath9k_htc ath9k_common fat ath9k_hw ath mac80211 exynosdrm cfg80211 analogix_dp rfkill drm_kms_helper drm exynos_adc pwm_samsung industrialio s3c2410_wdt pwm_fan leds_pwm cpufreq_dt ledtrig_heartbeat ip_tables x_tables autofs4 crc32c_generic ext4 crc16 mbcache jbd2 fscrypto xhci_plat_hcd xhci_hcd dwc3 udc_core phy_generic clk_s2mps11 s2mps11 dwc3_exynos phy_exynos_mipi_video phy_exynos_dp_video i2c_exynos5 ohci_exynos ohci_hcd ehci_exynos ehci_hcd dw_mmc_exynos dw_mmc_pltfm dw_mmc phy_exynos_usb2 usbcore phy_exynos5_usbdrd
[    9.714734] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.13.0 #4
[    9.714738] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[    9.714767] [<c0237468>] (unwind_backtrace) from [<c0231214>] (show_stack+0x20/0x24)
[    9.714783] [<c0231214>] (show_stack) from [<c098e3a0>] (dump_stack+0x90/0xa4)
[    9.714795] [<c098e3a0>] (dump_stack) from [<c026d928>] (__warn+0xf8/0x110)
[    9.714805] [<c026d928>] (__warn) from [<c026da58>] (warn_slowpath_null+0x30/0x38)
[    9.714861] [<c026da58>] (warn_slowpath_null) from [<bf67a7c8>] (ieee80211_rx_napi+0x8f4/0xa3c [mac80211])
[    9.714951] [<bf67a7c8>] (ieee80211_rx_napi [mac80211]) from [<bf7b3afc>] (ath9k_rx_tasklet+0x180/0x1d8 [ath9k_htc])
[    9.714976] [<bf7b3afc>] (ath9k_rx_tasklet [ath9k_htc]) from [<c0274880>] (tasklet_action+0x68/0xf8)
[    9.714988] [<c0274880>] (tasklet_action) from [<c0201c2c>] (__do_softirq+0x12c/0x358)
[    9.714998] [<c0201c2c>] (__do_softirq) from [<c0274288>] (irq_exit+0xe8/0x150)
[    9.715009] [<c0274288>] (irq_exit) from [<c02d4bac>] (__handle_domain_irq+0x70/0xc4)
[    9.715019] [<c02d4bac>] (__handle_domain_irq) from [<c0201864>] (gic_handle_irq+0x58/0x94)
[    9.715032] [<c0201864>] (gic_handle_irq) from [<c09ad578>] (__irq_svc+0x58/0x74)
[    9.715038] Exception stack(0xc1001ed8 to 0xc1001f20)
[    9.715044] 1ec0:                                                       00000000 0001407c
[    9.715053] 1ee0: 2de57000 c0244460 c1000000 c1004e70 c1004e0c c10ef48d c0b59a18 00000001
[    9.715061] 1f00: c1004dd8 c1001f34 c1001f38 c1001f28 c022d2f8 c022d2fc 60000013 ffffffff
[    9.715077] [<c09ad578>] (__irq_svc) from [<c022d2fc>] (arch_cpu_idle+0x48/0x4c)
[    9.715087] [<c022d2fc>] (arch_cpu_idle) from [<c09ab960>] (default_idle_call+0x30/0x3c)
[    9.715100] [<c09ab960>] (default_idle_call) from [<c02b74f8>] (do_idle+0xdc/0x14c)
[    9.715110] [<c02b74f8>] (do_idle) from [<c02b7828>] (cpu_startup_entry+0x28/0x2c)
[    9.715125] [<c02b7828>] (cpu_startup_entry) from [<c09a4de8>] (rest_init+0xd4/0xd8)
[    9.715136] [<c09a4de8>] (rest_init) from [<c0e00ec0>] (start_kernel+0x440/0x460)
[    9.715143] ---[ end trace 28d47b3fad78f4a4 ]---
[   10.023810] wlx3c46d81413ac: authenticate with 4c:5e:0c:3d:39:39
[   10.214671] wlx3c46d81413ac: send auth to 4c:5e:0c:3d:39:39 (try 1/3)
[   10.216759] wlx3c46d81413ac: authenticated
[   10.220697] wlx3c46d81413ac: associate with 4c:5e:0c:3d:39:39 (try 1/3)
[   10.224247] wlx3c46d81413ac: RX AssocResp from 4c:5e:0c:3d:39:39 (capab=0x431 status=0 aid=2)
[   10.230359] wlx3c46d81413ac: associated
[   10.230453] IPv6: ADDRCONF(NETDEV_CHANGE): wlx3c46d81413ac: link becomes ready

# lsusb -vv
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         3 
  bMaxPacketSize0         9
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            4.13
  iManufacturer           3 Linux 4.13.0 xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 xhci-hcd.5.auto
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           31
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
        bMaxBurst               0
Hub Descriptor:
  bLength              12
  bDescriptorType      42
  nNbrPorts             1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  bHubDecLat          0.0 micro seconds
  wHubDelay             0 nano seconds
  DeviceRemovable    0x00
 Hub Port Status:
   Port 1: 0000.02a0 5Gbps power Rx.Detect
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           15
  bNumDeviceCaps          1
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x02
      Latency Tolerance Messages (LTM) Supported
    wSpeedsSupported   0x0008
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   3
      Lowest fully-functional device speed is SuperSpeed (5Gbps)
    bU1DevExitLat           0 micro seconds
    bU2DevExitLat           0 micro seconds
Device Status:     0x0001
  Self Powered

Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            4.13
  iManufacturer           3 Linux 4.13.0 xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 xhci-hcd.5.auto
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0001.0101 C_CONNECT power connect
Device Status:     0x0001
  Self Powered

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         3 
  bMaxPacketSize0         9
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            4.13
  iManufacturer           3 Linux 4.13.0 xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 xhci-hcd.4.auto
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           31
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
        bMaxBurst               0
Hub Descriptor:
  bLength              12
  bDescriptorType      42
  nNbrPorts             1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  bHubDecLat          0.0 micro seconds
  wHubDelay             0 nano seconds
  DeviceRemovable    0x00
 Hub Port Status:
   Port 1: 0000.02a0 5Gbps power Rx.Detect
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           15
  bNumDeviceCaps          1
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x02
      Latency Tolerance Messages (LTM) Supported
    wSpeedsSupported   0x0008
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   3
      Lowest fully-functional device speed is SuperSpeed (5Gbps)
    bU1DevExitLat           0 micro seconds
    bU2DevExitLat           0 micro seconds
Device Status:     0x0001
  Self Powered

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            4.13
  iManufacturer           3 Linux 4.13.0 xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 xhci-hcd.4.auto
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0001.0101 C_CONNECT power connect
Device Status:     0x0001
  Self Powered

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         0 Full speed (or root) hub
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0001 1.1 root hub
  bcdDevice            4.13
  iManufacturer           3 Linux 4.13.0 ohci_hcd
  iProduct                2 USB Host Controller
  iSerial                 1 12120000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0002  1x 2 bytes
        bInterval             255
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             3
  wHubCharacteristic 0x0002
    No power switching (usb 1.0)
    Ganged overcurrent protection
  bPwrOn2PwrGood        2 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0100 power
   Port 2: 0000.0100 power
   Port 3: 0000.0100 power
Device Status:     0x0001
  Self Powered

Bus 001 Device 002: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass       255 Vendor Specific Subclass
  bDeviceProtocol       255 Vendor Specific Protocol
  bMaxPacketSize0        64
  idVendor           0x0cf3 Atheros Communications, Inc.
  idProduct          0x9271 AR9271 802.11n
  bcdDevice            1.08
  iManufacturer          16 ATHEROS
  iProduct               32 USB2.0 WLAN
  iSerial                48 12345
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           60
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           6
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x06  EP 6 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass       255 Vendor Specific Subclass
  bDeviceProtocol       255 Vendor Specific Protocol
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


# the first time i ran lsusb -vv it hang here until i canceled it, 
# the second time it ran fine
# after another reboot, i left lsusb to run and it eventually finished, 
# 5 or so minutes after

Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         0 Full speed (or root) hub
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            4.13
  iManufacturer           3 Linux 4.13.0 ehci_hcd
  iProduct                2 EHCI Host Controller
  iSerial                 1 12110000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             3
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0503 highspeed power enable connect
   Port 2: 0000.0100 power
   Port 3: 0000.0100 power
Device Status:     0x0001
  Self Powered

>

>Also, the commit you pointed me to couldn't be the culprit: we didn't

>have a ->shutdown() before and that commit didn't change that. All that

>commit did was extract some code to helper functions which would be

>reused.

>

>On top of all that, Brian's commit merely duplicates the ->remove()

>method as ->shutdown(), we don't want duplicated code, sorry.


I'm OK testing patches to help finding a long-term, good-solution to the warm boot
problem (or others in this platform)

>

>-- 

>balbi




-- 
IRC: gfa
GPG: 0X44BB1BA79F6C6333

Patch

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 326b302fc440..f92dfe213d89 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1259,6 +1259,38 @@  static int dwc3_probe(struct platform_device *pdev)
 	return ret;
 }
 
+static void dwc3_shutdown(struct platform_device *pdev)
+{
+	struct dwc3	*dwc = platform_get_drvdata(pdev);
+	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+
+	pm_runtime_get_sync(&pdev->dev);
+	/*
+	 * restore res->start back to its original value so that, in case the
+	 * probe is deferred, we don't end up getting error in request the
+	 * memory region the next time probe is called.
+	 */
+	res->start -= DWC3_GLOBALS_REGS_START;
+
+	dwc3_debugfs_exit(dwc);
+	dwc3_core_exit_mode(dwc);
+	dwc3_event_buffers_cleanup(dwc);
+	dwc3_free_event_buffers(dwc);
+
+	usb_phy_set_suspend(dwc->usb2_phy, 1);
+	usb_phy_set_suspend(dwc->usb3_phy, 1);
+
+	phy_power_off(dwc->usb2_generic_phy);
+	phy_power_off(dwc->usb3_generic_phy);
+
+	dwc3_core_exit(dwc);
+	dwc3_ulpi_exit(dwc);
+
+	pm_runtime_put_sync(&pdev->dev);
+	pm_runtime_allow(&pdev->dev);
+	pm_runtime_disable(&pdev->dev);
+}
+
 static int dwc3_remove(struct platform_device *pdev)
 {
 	struct dwc3	*dwc = platform_get_drvdata(pdev);
@@ -1488,6 +1520,7 @@  MODULE_DEVICE_TABLE(acpi, dwc3_acpi_match);
 static struct platform_driver dwc3_driver = {
 	.probe		= dwc3_probe,
 	.remove		= dwc3_remove,
+	.shutdown	= dwc3_shutdown,
 	.driver		= {
 		.name	= "dwc3",
 		.of_match_table	= of_match_ptr(of_dwc3_match),