Re: OOPS: musb_hdrc

2014-09-09 Thread George Cherian

Hi Matwey,

On 09/09/2014 01:58 PM, Matwey V. Kornilov wrote:

Hi,


Can you add a few printks around drivers/usb/musb/musb_cppi41.c to
further narrow down where the problem is ? I ran v3.17-rc1 on my
beaglebone black (a while back) and didn't have any issues.

Now I am rebuilding the kernel to see where the problem is.


Are you sure you're running v3.16.1 vanilla ? I just tested on my end
and it's working fine. Please provide full boot logs including u-boot
all the way to the error scenario.

I am sure that I am running 3.16.1 opensuse, where no patches
affecting musb applied. Full log is quite big, please find it at
http://susepaste.org/31032538


attached you can find my logs (couldn't paste it anywhere as my test
case for mass storage devices outputs quite a bit of data)

Could you please share your kernel config? My config is attached.

Please set CONFIG_USB_TI_CPPI41_DMA=y and re-run your tests.

-George
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: OOPS: musb_hdrc

2014-09-09 Thread Matwey V. Kornilov
Hi George,

Many thanks for the hint. Am I right that we can not have multiple
MUSB DMA modes within the same kernel? It is a pity.


2014-09-09 12:40 GMT+04:00 George Cherian george.cher...@ti.com:
 Hi Matwey,


 On 09/09/2014 01:58 PM, Matwey V. Kornilov wrote:

 Hi,

 Can you add a few printks around drivers/usb/musb/musb_cppi41.c to
 further narrow down where the problem is ? I ran v3.17-rc1 on my
 beaglebone black (a while back) and didn't have any issues.

 Now I am rebuilding the kernel to see where the problem is.

 Are you sure you're running v3.16.1 vanilla ? I just tested on my end
 and it's working fine. Please provide full boot logs including u-boot
 all the way to the error scenario.

 I am sure that I am running 3.16.1 opensuse, where no patches
 affecting musb applied. Full log is quite big, please find it at
 http://susepaste.org/31032538

 attached you can find my logs (couldn't paste it anywhere as my test
 case for mass storage devices outputs quite a bit of data)

 Could you please share your kernel config? My config is attached.

 Please set CONFIG_USB_TI_CPPI41_DMA=y and re-run your tests.

 -George



-- 
With best regards,
Matwey V. Kornilov
http://blog.matwey.name
xmpp://0x2...@jabber.ru
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: OOPS: musb_hdrc

2014-09-09 Thread Matwey V. Kornilov
Hi George,

Why dma_controller_create can not be set in struct musb_platform_ops?
Then each module would be able to set dma_controller_create it wants,
and musb_init_controller would use musb-ops-dma_controller_create
instead of just dma_controller_create.


2014-09-09 13:15 GMT+04:00 Matwey V. Kornilov matwey.korni...@gmail.com:
 Hi George,

 Many thanks for the hint. Am I right that we can not have multiple
 MUSB DMA modes within the same kernel? It is a pity.



-- 
With best regards,
Matwey V. Kornilov
http://blog.matwey.name
xmpp://0x2207@jabb
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: OOPS: musb_hdrc

2014-09-09 Thread Felipe Balbi
On Tue, Sep 09, 2014 at 01:28:55PM +0400, Matwey V. Kornilov wrote:
 Hi George,
 
 Why dma_controller_create can not be set in struct musb_platform_ops?
 Then each module would be able to set dma_controller_create it wants,
 and musb_init_controller would use musb-ops-dma_controller_create
 instead of just dma_controller_create.

patches are welcome :-)

 2014-09-09 13:15 GMT+04:00 Matwey V. Kornilov matwey.korni...@gmail.com:
  Hi George,
 
  Many thanks for the hint. Am I right that we can not have multiple
  MUSB DMA modes within the same kernel? It is a pity.

This driver is still full of details to be fixed. Originally you
couldn't even build support for several devices in one go. That has been
fixed a while back but I never got around to fixing the DMA part. If you
wanna help, patches are more than welcome.

-- 
balbi


signature.asc
Description: Digital signature


Re: OOPS: musb_hdrc

2014-09-09 Thread Matwey V. Kornilov
2014-09-09 18:45 GMT+04:00 Felipe Balbi ba...@ti.com:
 On Tue, Sep 09, 2014 at 01:28:55PM +0400, Matwey V. Kornilov wrote:
 Hi George,

 Why dma_controller_create can not be set in struct musb_platform_ops?
 Then each module would be able to set dma_controller_create it wants,
 and musb_init_controller would use musb-ops-dma_controller_create
 instead of just dma_controller_create.

 patches are welcome :-)


Will the following approach be acceptable?

1. musbhsdma.o cppi_dma.o tusb6010_omap.o ux500_dma.o musb_cppi41.o
became independent modules (tristate), each module exports two
symbols: PREFIX_dma_controller_create and ..._destroy.
2. add two callbacks to musb_platform_ops, when pointers are NULL then
no DMA is used
3. every module uses appropriate PREFIX_dma_controller_create in its
PREFIX_ops structure
4. musb_core uses wrappers which calls
musb-ops-dma_controller_create and destroy

In this case every DMA mode can be reused more by several drivers if
necessarily.


-- 
With best regards,
Matwey V. Kornilov
http://blog.matwey.name
xmpp://0x2...@jabber.ru
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: OOPS: musb_hdrc

2014-09-09 Thread Felipe Balbi
On Tue, Sep 09, 2014 at 07:00:10PM +0400, Matwey V. Kornilov wrote:
 2014-09-09 18:45 GMT+04:00 Felipe Balbi ba...@ti.com:
  On Tue, Sep 09, 2014 at 01:28:55PM +0400, Matwey V. Kornilov wrote:
  Hi George,
 
  Why dma_controller_create can not be set in struct musb_platform_ops?
  Then each module would be able to set dma_controller_create it wants,
  and musb_init_controller would use musb-ops-dma_controller_create
  instead of just dma_controller_create.
 
  patches are welcome :-)
 
 
 Will the following approach be acceptable?
 
 1. musbhsdma.o cppi_dma.o tusb6010_omap.o ux500_dma.o musb_cppi41.o
 became independent modules (tristate), each module exports two
 symbols: PREFIX_dma_controller_create and ..._destroy.
 2. add two callbacks to musb_platform_ops, when pointers are NULL then
 no DMA is used
 3. every module uses appropriate PREFIX_dma_controller_create in its
 PREFIX_ops structure
 4. musb_core uses wrappers which calls
 musb-ops-dma_controller_create and destroy
 
 In this case every DMA mode can be reused more by several drivers if
 necessarily.

the proper way would be to move everything to dma_engine. OMAP already
has support for DMA engine and both CPPI and Ux500 are already using
that.

What we need it move inventra dma and cppi 3.x to DMA engine, then move
DMA engine into the core driver and have it grab a DMA through that,
instead of using this private API.

-- 
balbi


signature.asc
Description: Digital signature


Re: OOPS: musb_hdrc

2014-09-09 Thread Matwey V. Kornilov
2014-09-09 19:11 GMT+04:00 Felipe Balbi ba...@ti.com:
 the proper way would be to move everything to dma_engine. OMAP already
 has support for DMA engine and both CPPI and Ux500 are already using
 that.

If so, ux500_dma.c and musb_cppi41.c should be almost identically
wrapping dmaengine, but they aren't.


-- 
With best regards,
Matwey V. Kornilov
http://blog.matwey.name
xmpp://0x2...@jabber.ru
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: OOPS: musb_hdrc

2014-09-09 Thread Felipe Balbi
On Tue, Sep 09, 2014 at 07:52:59PM +0400, Matwey V. Kornilov wrote:
 2014-09-09 19:11 GMT+04:00 Felipe Balbi ba...@ti.com:
  the proper way would be to move everything to dma_engine. OMAP already
  has support for DMA engine and both CPPI and Ux500 are already using
  that.
 
 If so, ux500_dma.c and musb_cppi41.c should be almost identically
 wrapping dmaengine, but they aren't.

heh, the difference is mostly because ux500 supports scatter-gather
while cppi41 doesn't. That can be handled generically. The other
differences are due to silicon errata, and that should be hidden inside
DMA engine driver itself, not in MUSB.

-- 
balbi


signature.asc
Description: Digital signature


Re: OOPS: musb_hdrc

2014-09-09 Thread Matwey V. Kornilov
2014-09-09 20:09 GMT+04:00 Felipe Balbi ba...@ti.com:
 On Tue, Sep 09, 2014 at 07:52:59PM +0400, Matwey V. Kornilov wrote:
 2014-09-09 19:11 GMT+04:00 Felipe Balbi ba...@ti.com:
  the proper way would be to move everything to dma_engine. OMAP already
  has support for DMA engine and both CPPI and Ux500 are already using
  that.

 If so, ux500_dma.c and musb_cppi41.c should be almost identically
 wrapping dmaengine, but they aren't.

 heh, the difference is mostly because ux500 supports scatter-gather
 while cppi41 doesn't. That can be handled generically. The other
 differences are due to silicon errata, and that should be hidden inside
 DMA engine driver itself, not in MUSB.


That is, If I understand correctly, one may start from the other side.
Firstly create musb_dmaengine.c using generic dmaengine API (not
relying on hardware model) and providing private API and then drop one
by one existing DMA implementations from musb. Eventually, only
musb_dmaengine.c will be kept suitable for all kinds of drivers.

-- 
With best regards,
Matwey V. Kornilov
http://blog.matwey.name
xmpp://0x2...@jabber.ru
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: OOPS: musb_hdrc

2014-09-09 Thread Felipe Balbi
Hi,

On Tue, Sep 09, 2014 at 08:17:32PM +0400, Matwey V. Kornilov wrote:
 2014-09-09 20:09 GMT+04:00 Felipe Balbi ba...@ti.com:
  On Tue, Sep 09, 2014 at 07:52:59PM +0400, Matwey V. Kornilov wrote:
  2014-09-09 19:11 GMT+04:00 Felipe Balbi ba...@ti.com:
   the proper way would be to move everything to dma_engine. OMAP already
   has support for DMA engine and both CPPI and Ux500 are already using
   that.
 
  If so, ux500_dma.c and musb_cppi41.c should be almost identically
  wrapping dmaengine, but they aren't.
 
  heh, the difference is mostly because ux500 supports scatter-gather
  while cppi41 doesn't. That can be handled generically. The other
  differences are due to silicon errata, and that should be hidden inside
  DMA engine driver itself, not in MUSB.
 
 
 That is, If I understand correctly, one may start from the other side.
 Firstly create musb_dmaengine.c using generic dmaengine API (not
 relying on hardware model) and providing private API and then drop one
 by one existing DMA implementations from musb. Eventually, only
 musb_dmaengine.c will be kept suitable for all kinds of drivers.

you've just read my mind and that's a bit freaky :-)

But you're right. At the time we drop all other implementations, we
might as well merge musb_dmaengine.c into the core driver itself and
completely rid ourselves of MUSB private DMA API :-)

Clearly, that cannot be done in one development cycle, so we need to
find a way to introduce all this code and, meanwhile, not break anything
:-)

cheers

-- 
balbi


signature.asc
Description: Digital signature


OOPS: musb_hdrc

2014-09-08 Thread Matwey V. Kornilov
Hi,

Running 3.16.1 on beaglebone black, I have the following issue with
musb_hdrc on boot:


[   11.151063] Unable to handle kernel paging request at virtual
address e09bb05c
[   11.158774] pgd = de5d8000
[   11.161613] [e09bb05c] *pgd=9e02d811, *pte=, *ppte=
[   11.168247] Internal error: Oops: 807 [#1] SMP ARM
[   11.173269] Modules linked in: musb_dsps(+) musb_hdrc udc_core
davinci_mdio(+) mmc_block phy_am335x usbcore phy_am335x_control
phy_generic usb_common ti_cpsw davinci_cpdma omap_hsmmc mmc_core
musb_am335x
[   11.192315] CPU: 0 PID: 205 Comm: systemd-udevd Not tainted
3.16.1-2.g2ab6585-default #1
[   11.200799] task: de58a080 ti: de5cc000 task.ti: de5cc000
[   11.206541] PC is at dma_controller_create+0x18/0x120 [musb_hdrc]
[   11.212943] LR is at musb_probe+0x528/0x664 [musb_hdrc]
[   11.218420] pc : [bf13175c]lr : [bf125fec]psr: a013
[   11.218420] sp : de5cdbf8  ip : de5ee8d8  fp : 0010
[   11.230454] r10:   r9 : 0003  r8 : de5ee810
[   11.235930] r7 : 0023  r6 : de5ee800  r5 : de71aec0  r4 : de2ec010
[   11.242771] r3 : e09ba800  r2 : 7fff  r1 : e09b8c00  r0 : de2ec010
[   11.249615] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   11.257096] Control: 10c5387d  Table: 9e5d8019  DAC: 0015
[   11.263118] Process systemd-udevd (pid: 205, stack limit = 0xde5cc250)
[   11.269959] Stack: (0xde5cdbf8 to 0xde5ce000)
[   11.274527] dbe0:
de2ec010 de71aec0
[   11.283102] dc00: de5ee800 0023 de5ee810 0003 
bf125fec c0b21088 de71b5d8
[   11.291678] dc20: 0001 de71b0d8 0010 de5ee810 bf134a84
c0ddfbc8  bf134a84
[   11.300254] dc40: 0010 de5ee800 bf146760 c065a1bc c065a19c
de5ee810 c0eaee3c c0658318
[   11.308830] dc60: 1304 c065a2c8 bf134a84  de5ee810
c0658570 de5f1210 
[   11.317405] dc80:  c06565d4 de0bff70 de79c7b8 de5ee810
de5ee844 c0d9c810 c0658154
[   11.325981] dca0: de5ee818 de5ee810 c0d9c810 c0657648 de5ee818
 de5ee810 c06557b4
[   11.334558] dcc0: 8000 c0de8840 c0d35e54 de7f6f40 de5f1200
0002 de5ee800 de5ee810
[   11.343134] dce0: de5f1200 de7f3790 dfadf0a0 c0659edc 0001
  de5f1210
[   11.351710] dd00: de5f1200 bf145ef4 bf146870 01f4 de01c901
25f0 0007 de71b6fa
[   11.360286] dd20: c0e97a00 de71af10 de71b628 bf146760 47401c00
47401fff c8005480 0200
[   11.368861] dd40:    0023 0023
c80054a8 0400 
[   11.377436] dd60:   0010 de5f1210 bf14679c
c0ddfbc8  bf14679c
[   11.386011] dd80: 0010  bf146870 c065a1bc c065a19c
de5f1210 c0eaee3c c0658318
[   11.394587] dda0: c065a2a8 de5f1210 bf14679c de5f1210 bf14679c
de5f1244  bf149000
[   11.403164] ddc0: de5cc020 c0658650  bf14679c c06585bc
c0656524 de0bff5c de5924b4
[   11.411739] dde0: bf14679c de79ce00 c0d9c810 c0657924 bf146664
c04df5e8 bf14679c bf14679c
[   11.420315] de00: c0cf1aa0 de7ed340 de5cdf18 c0658e14 
c0cf1aa0 c0cf1aa0 c0209ab4
[   11.428891] de20:  c0ad03e8 c0ad03d4 c034195c c0cf1984
dfebf820  0008
[   11.437467] de40:  dfaf1000  c034338c 0007
dfebf820 c0e93d08 c036d8e0
[   11.446043] de60: bf146870 0005 de7ed340 c036f26c 0005
de5cdf54  bf14687c
[   11.454618] de80: de5cdf18 de5cc018   bf146870
c02df0d8 8000 7fff
[   11.463194] dea0: c02dc1f4 c0390948  e09a6000 
de5cdf18 c0ced560 b6e7fc80
[   11.471770] dec0: e09a8880 00ae de5cdf5c de5cdf88 1c7e
 0002 de5c81a4
[   11.480344] dee0: 0001    
  
[   11.488919] df00:     
  
[   11.497496] df20: de5cc000  000b b6e7fc80 017b
c021b008 de5cc000 1000
[   11.506071] df40: 009fadb0 c02df738 0002  de5cdf5c
e09a6000 4b2e e09a8880
[   11.514647] df60: e09a8707 e09a9928 1a04 1fb4 bf1467e0
0006  0023
[   11.523223] df80: 0024 001b 0016 0012 
 0001 0001
[   11.531798] dfa0:  c021ae20 0001 0001 000b
b6e7fc80  b6f1d370
[   11.540374] dfc0: 0001 0001  017b 
 0002 009fadb0
[   11.548949] dfe0: beeb12d8 beeb12c8 b6e76530 b6da66a0 60010010
000b  
[   11.557582] [bf13175c] (dma_controller_create [musb_hdrc]) from
[bf125fec] (musb_probe+0x528/0x664 [musb_hdrc])
[   11.568554] [bf125fec] (musb_probe [musb_hdrc]) from [c065a1bc]
(platform_drv_probe+0x20/0x50)
[   11.577969] [c065a1bc] (platform_drv_probe) from [c0658318]
(driver_probe_device+0x154/0x3ac)
[   11.587278] [c0658318] (driver_probe_device) from [c06565d4]
(bus_for_each_drv+0x60/0x94)
[   11.596221] [c06565d4] (bus_for_each_drv) from [c0658154]
(device_attach+0x7c/0x90)
[   11.604617] [c0658154] (device_attach) from [c0657648]

Re: OOPS: musb_hdrc

2014-09-08 Thread Felipe Balbi
Hi,

it kinda helps if you Cc the maintainer :-) scripts/get_maintainer.pl
helps by returning a (usually) correct (and extensive) list of people
and mailing lists to Cc :-)

anyway...

On Mon, Sep 08, 2014 at 09:08:07PM +0400, Matwey V. Kornilov wrote:
 Hi,
 
 Running 3.16.1 on beaglebone black, I have the following issue with
 musb_hdrc on boot:
 
 
 [   11.151063] Unable to handle kernel paging request at virtual
 address e09bb05c
 [   11.158774] pgd = de5d8000
 [   11.161613] [e09bb05c] *pgd=9e02d811, *pte=, *ppte=
 [   11.168247] Internal error: Oops: 807 [#1] SMP ARM
 [   11.173269] Modules linked in: musb_dsps(+) musb_hdrc udc_core
 davinci_mdio(+) mmc_block phy_am335x usbcore phy_am335x_control
 phy_generic usb_common ti_cpsw davinci_cpdma omap_hsmmc mmc_core
 musb_am335x
 [   11.192315] CPU: 0 PID: 205 Comm: systemd-udevd Not tainted
 3.16.1-2.g2ab6585-default #1
 [   11.200799] task: de58a080 ti: de5cc000 task.ti: de5cc000
 [   11.206541] PC is at dma_controller_create+0x18/0x120 [musb_hdrc]

Can you add a few printks around drivers/usb/musb/musb_cppi41.c to
further narrow down where the problem is ? I ran v3.17-rc1 on my
beaglebone black (a while back) and didn't have any issues.

cheers

-- 
balbi


signature.asc
Description: Digital signature