Re: [PATCH 0/2] an additional path to control charging current

2021-03-04 Thread Greg KH
On Wed, Mar 03, 2021 at 04:26:38PM +0100, Heiko Thiery wrote:
> Hi,
> 
> Am Mi., 3. März 2021 um 16:01 Uhr schrieb Heiko Thiery 
> :
> >
> > Hi Ray,
> >
> >
> > > Currently, VBUS draw callback does no action when the
> > > generic PHYs are used. The patches add an additional path
> > > to control charging current through power supply property
> > > POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT.
> > >
> > > Ray Chi (2):
> > >   usb: dwc3: add a power supply for current control
> > >   usb: dwc3: add an alternate path in vbus_draw callback
> >
> > While using next-20210303 this patchset leads to the following kernel crash 
> > on my board:
> >
> >  8< 
> >
> > [1.392084] VFIO - User Level meta-driver version: 0.3
> > [1.398370] Unable to handle kernel NULL pointer dereference at virtual 
> > address 03a0
> > [1.407552] Mem abort info:
> > [1.410479]   ESR = 0x9604
> > [1.413668]   EC = 0x25: DABT (current EL), IL = 32 bits
> > [1.419217]   SET = 0, FnV = 0
> > [1.422413]   EA = 0, S1PTW = 0
> > [1.425690] Data abort info:
> > [1.428705]   ISV = 0, ISS = 0x0004
> > [1.432715]   CM = 0, WnR = 0
> > [1.435821] [03a0] user address but active_mm is swapper
> > [1.442458] Internal error: Oops: 9604 [#1] PREEMPT SMP
> > [1.448274] Modules linked in:
> > [1.451469] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 
> > 5.12.0-rc1-next-20210303-5-g090e892099db #126
> > [1.461269] Hardware name: Kontron pITX-imx8m (DT)
> > [1.466268] pstate: 6005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
> > [1.472538] pc : devm_power_supply_get_by_phandle+0xe4/0x148
> > [1.478455] lr : dwc3_probe+0xbac/0xfa0
> > [1.482462] sp : 800011f1bb00
> > [1.485918] x29: 800011f1bb00 x28: 
> > [1.491467] x27: 800011681078 x26: 8000115d048c
> > [1.497016] x25: c089ea00 x24: 0003
> > [1.502564] x23: c089ea00 x22: 800011b89948
> > [1.508112] x21: 0003 x20: fdfb
> > [1.513660] x19: c03f1080 x18: 00c0
> > [1.519209] x17:  x16: 
> > [1.524757] x15: fc001000 x14: 
> > [1.530306] x13:  x12: 0030
> > [1.535853] x11: 0101010101010101 x10: 800011f1ba50
> > [1.541402] x9 : ff784c70 x8 : 0010
> > [1.546950] x7 : c03a5590 x6 : 0080
> > [1.552498] x5 : c0098000 x4 : 03a0
> > [1.558047] x3 : 800011cb2dc8 x2 : 
> > [1.563596] x1 : 0001 x0 : 
> > [1.569146] Call trace:
> > [1.571700]  devm_power_supply_get_by_phandle+0xe4/0x148
> > [1.577248]  dwc3_probe+0xbac/0xfa0
> > [1.580890]  platform_probe+0x68/0xd8
> > [1.584719]  really_probe+0xe4/0x3c0
> > [1.588454]  driver_probe_device+0x58/0xb8
> > [1.592733]  device_driver_attach+0x74/0x80
> > [1.597100]  __driver_attach+0x58/0xe0
> > [1.601016]  bus_for_each_dev+0x74/0xc8
> > [1.605020]  driver_attach+0x24/0x30
> > [1.608753]  bus_add_driver+0x184/0x1e8
> > [1.612758]  driver_register+0x64/0x120
> > [1.616764]  __platform_driver_register+0x28/0x38
> > [1.621675]  dwc3_driver_init+0x1c/0x28
> > [1.625684]  do_one_initcall+0x74/0x1d0
> > [1.629691]  kernel_init_freeable+0x1d4/0x23c
> > [1.634240]  kernel_init+0x14/0x118
> > [1.637885]  ret_from_fork+0x10/0x30
> > [1.641624] Code: 88027c01 35a2 17fffe96 f9800091 (885f7c82)
> > [1.647992] ---[ end trace c6e48cea897d0b0d ]---
> > [1.652833] Kernel panic - not syncing: Attempted to kill init! 
> > exitcode=0x000b
> > [1.660822] SMP: stopping secondary CPUs
> > [1.664921] Kernel Offset: disabled
> > [1.668560] CPU features: 0x00240002,2000200c
> > [1.673106] Memory Limit: none
> > [1.676296] ---[ end Kernel panic - not syncing: Attempted to kill init! 
> > exitcode=0x000b ]---
> >
> >
> >  8< 
> 
> This fixes the crash.
> 
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index d15f065849cd..94fdbe502ce9 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1628,7 +1628,7 @@ static int dwc3_probe(struct platform_device *pdev)
>  assert_reset:
> reset_control_assert(dwc->reset);
> 
> -   if (!dwc->usb_psy)
> +   if (dwc->usb_psy)
> power_supply_put(dwc->usb_psy);
> 
> return ret;
> @@ -1653,7 +1653,7 @@ static int dwc3_remove(struct platform_device *pdev)
> dwc3_free_event_buffers(dwc);
> dwc3_free_scratch_buffers(dwc);
> 
> -   if (!dwc->usb_psy)
> +   if (dwc->usb_psy)
> power_supply_put(dwc->usb_psy);
> 
> return 0;
> 

Fixed with d05a12f0478c ("usb: dwc3: Fix dereferencing of null
dwc->usb_psy") in my tree and should show up in the next linux-next.

thanks,


Re: [PATCH 0/2] an additional path to control charging current

2021-03-03 Thread Heiko Thiery
Hi Ray,


> Currently, VBUS draw callback does no action when the
> generic PHYs are used. The patches add an additional path
> to control charging current through power supply property
> POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT.
> 
> Ray Chi (2):
>   usb: dwc3: add a power supply for current control
>   usb: dwc3: add an alternate path in vbus_draw callback

While using next-20210303 this patchset leads to the following kernel crash on 
my board:

 8< 

[1.392084] VFIO - User Level meta-driver version: 0.3
[1.398370] Unable to handle kernel NULL pointer dereference at virtual 
address 03a0
[1.407552] Mem abort info:
[1.410479]   ESR = 0x9604
[1.413668]   EC = 0x25: DABT (current EL), IL = 32 bits
[1.419217]   SET = 0, FnV = 0
[1.422413]   EA = 0, S1PTW = 0
[1.425690] Data abort info:
[1.428705]   ISV = 0, ISS = 0x0004
[1.432715]   CM = 0, WnR = 0
[1.435821] [03a0] user address but active_mm is swapper
[1.442458] Internal error: Oops: 9604 [#1] PREEMPT SMP
[1.448274] Modules linked in:
[1.451469] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 
5.12.0-rc1-next-20210303-5-g090e892099db #126
[1.461269] Hardware name: Kontron pITX-imx8m (DT)
[1.466268] pstate: 6005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
[1.472538] pc : devm_power_supply_get_by_phandle+0xe4/0x148
[1.478455] lr : dwc3_probe+0xbac/0xfa0
[1.482462] sp : 800011f1bb00
[1.485918] x29: 800011f1bb00 x28:  
[1.491467] x27: 800011681078 x26: 8000115d048c 
[1.497016] x25: c089ea00 x24: 0003 
[1.502564] x23: c089ea00 x22: 800011b89948 
[1.508112] x21: 0003 x20: fdfb 
[1.513660] x19: c03f1080 x18: 00c0 
[1.519209] x17:  x16:  
[1.524757] x15: fc001000 x14:  
[1.530306] x13:  x12: 0030 
[1.535853] x11: 0101010101010101 x10: 800011f1ba50 
[1.541402] x9 : ff784c70 x8 : 0010 
[1.546950] x7 : c03a5590 x6 : 0080 
[1.552498] x5 : c0098000 x4 : 03a0 
[1.558047] x3 : 800011cb2dc8 x2 :  
[1.563596] x1 : 0001 x0 :  
[1.569146] Call trace:
[1.571700]  devm_power_supply_get_by_phandle+0xe4/0x148
[1.577248]  dwc3_probe+0xbac/0xfa0
[1.580890]  platform_probe+0x68/0xd8
[1.584719]  really_probe+0xe4/0x3c0
[1.588454]  driver_probe_device+0x58/0xb8
[1.592733]  device_driver_attach+0x74/0x80
[1.597100]  __driver_attach+0x58/0xe0
[1.601016]  bus_for_each_dev+0x74/0xc8
[1.605020]  driver_attach+0x24/0x30
[1.608753]  bus_add_driver+0x184/0x1e8
[1.612758]  driver_register+0x64/0x120
[1.616764]  __platform_driver_register+0x28/0x38
[1.621675]  dwc3_driver_init+0x1c/0x28
[1.625684]  do_one_initcall+0x74/0x1d0
[1.629691]  kernel_init_freeable+0x1d4/0x23c
[1.634240]  kernel_init+0x14/0x118
[1.637885]  ret_from_fork+0x10/0x30
[1.641624] Code: 88027c01 35a2 17fffe96 f9800091 (885f7c82) 
[1.647992] ---[ end trace c6e48cea897d0b0d ]---
[1.652833] Kernel panic - not syncing: Attempted to kill init! 
exitcode=0x000b
[1.660822] SMP: stopping secondary CPUs
[1.664921] Kernel Offset: disabled
[1.668560] CPU features: 0x00240002,2000200c
[1.673106] Memory Limit: none
[1.676296] ---[ end Kernel panic - not syncing: Attempted to kill init! 
exitcode=0x000b ]---


 8< 

After reverting these 2 patches the problem is gone.

-- 
Heiko


Re: [PATCH 0/2] an additional path to control charging current

2021-03-03 Thread Heiko Thiery
Hi,

Am Mi., 3. März 2021 um 16:01 Uhr schrieb Heiko Thiery :
>
> Hi Ray,
>
>
> > Currently, VBUS draw callback does no action when the
> > generic PHYs are used. The patches add an additional path
> > to control charging current through power supply property
> > POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT.
> >
> > Ray Chi (2):
> >   usb: dwc3: add a power supply for current control
> >   usb: dwc3: add an alternate path in vbus_draw callback
>
> While using next-20210303 this patchset leads to the following kernel crash 
> on my board:
>
>  8< 
>
> [1.392084] VFIO - User Level meta-driver version: 0.3
> [1.398370] Unable to handle kernel NULL pointer dereference at virtual 
> address 03a0
> [1.407552] Mem abort info:
> [1.410479]   ESR = 0x9604
> [1.413668]   EC = 0x25: DABT (current EL), IL = 32 bits
> [1.419217]   SET = 0, FnV = 0
> [1.422413]   EA = 0, S1PTW = 0
> [1.425690] Data abort info:
> [1.428705]   ISV = 0, ISS = 0x0004
> [1.432715]   CM = 0, WnR = 0
> [1.435821] [03a0] user address but active_mm is swapper
> [1.442458] Internal error: Oops: 9604 [#1] PREEMPT SMP
> [1.448274] Modules linked in:
> [1.451469] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 
> 5.12.0-rc1-next-20210303-5-g090e892099db #126
> [1.461269] Hardware name: Kontron pITX-imx8m (DT)
> [1.466268] pstate: 6005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
> [1.472538] pc : devm_power_supply_get_by_phandle+0xe4/0x148
> [1.478455] lr : dwc3_probe+0xbac/0xfa0
> [1.482462] sp : 800011f1bb00
> [1.485918] x29: 800011f1bb00 x28: 
> [1.491467] x27: 800011681078 x26: 8000115d048c
> [1.497016] x25: c089ea00 x24: 0003
> [1.502564] x23: c089ea00 x22: 800011b89948
> [1.508112] x21: 0003 x20: fdfb
> [1.513660] x19: c03f1080 x18: 00c0
> [1.519209] x17:  x16: 
> [1.524757] x15: fc001000 x14: 
> [1.530306] x13:  x12: 0030
> [1.535853] x11: 0101010101010101 x10: 800011f1ba50
> [1.541402] x9 : ff784c70 x8 : 0010
> [1.546950] x7 : c03a5590 x6 : 0080
> [1.552498] x5 : c0098000 x4 : 03a0
> [1.558047] x3 : 800011cb2dc8 x2 : 
> [1.563596] x1 : 0001 x0 : 
> [1.569146] Call trace:
> [1.571700]  devm_power_supply_get_by_phandle+0xe4/0x148
> [1.577248]  dwc3_probe+0xbac/0xfa0
> [1.580890]  platform_probe+0x68/0xd8
> [1.584719]  really_probe+0xe4/0x3c0
> [1.588454]  driver_probe_device+0x58/0xb8
> [1.592733]  device_driver_attach+0x74/0x80
> [1.597100]  __driver_attach+0x58/0xe0
> [1.601016]  bus_for_each_dev+0x74/0xc8
> [1.605020]  driver_attach+0x24/0x30
> [1.608753]  bus_add_driver+0x184/0x1e8
> [1.612758]  driver_register+0x64/0x120
> [1.616764]  __platform_driver_register+0x28/0x38
> [1.621675]  dwc3_driver_init+0x1c/0x28
> [1.625684]  do_one_initcall+0x74/0x1d0
> [1.629691]  kernel_init_freeable+0x1d4/0x23c
> [1.634240]  kernel_init+0x14/0x118
> [1.637885]  ret_from_fork+0x10/0x30
> [1.641624] Code: 88027c01 35a2 17fffe96 f9800091 (885f7c82)
> [1.647992] ---[ end trace c6e48cea897d0b0d ]---
> [1.652833] Kernel panic - not syncing: Attempted to kill init! 
> exitcode=0x000b
> [1.660822] SMP: stopping secondary CPUs
> [1.664921] Kernel Offset: disabled
> [1.668560] CPU features: 0x00240002,2000200c
> [1.673106] Memory Limit: none
> [1.676296] ---[ end Kernel panic - not syncing: Attempted to kill init! 
> exitcode=0x000b ]---
>
>
>  8< 

This fixes the crash.

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index d15f065849cd..94fdbe502ce9 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1628,7 +1628,7 @@ static int dwc3_probe(struct platform_device *pdev)
 assert_reset:
reset_control_assert(dwc->reset);

-   if (!dwc->usb_psy)
+   if (dwc->usb_psy)
power_supply_put(dwc->usb_psy);

return ret;
@@ -1653,7 +1653,7 @@ static int dwc3_remove(struct platform_device *pdev)
dwc3_free_event_buffers(dwc);
dwc3_free_scratch_buffers(dwc);

-   if (!dwc->usb_psy)
+   if (dwc->usb_psy)
power_supply_put(dwc->usb_psy);

return 0;


-- 
Heiko


[PATCH 0/2] an additional path to control charging current

2021-02-22 Thread Ray Chi
Currently, VBUS draw callback does no action when the
generic PHYs are used. The patches add an additional path
to control charging current through power supply property
POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT.

Ray Chi (2):
  usb: dwc3: add a power supply for current control
  usb: dwc3: add an alternate path in vbus_draw callback

 drivers/usb/dwc3/core.c   | 15 +++
 drivers/usb/dwc3/core.h   |  4 
 drivers/usb/dwc3/gadget.c | 10 +-
 3 files changed, 28 insertions(+), 1 deletion(-)

-- 
2.30.0.617.g56c4b15f3c-goog