All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roger Quadros <rogerq@ti.com>
To: Arnd Bergmann <arnd@arndb.de>, <linux-arm-kernel@lists.infradead.org>
Cc: Alan Stern <stern@rowland.harvard.edu>,
	Felipe Balbi <balbi@kernel.org>,
	Grygorii Strashko <grygorii.strashko@ti.com>,
	Stuart Yoder <stuart.yoder@nxp.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	Sekhar Nori <nsekhar@ti.com>,
	Russell King - ARM Linux <linux@armlinux.org.uk>,
	lkml <linux-kernel@vger.kernel.org>,
	Scott Wood <oss@buserror.net>,
	David Fisher <david.fisher1@synopsys.com>,
	"Thang Q. Nguyen" <tqnguyen@apm.com>, Leo Li <pku.leo@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH] usb: dwc3: host: inherit dma configuration from parent dev
Date: Wed, 7 Sep 2016 10:17:31 +0300	[thread overview]
Message-ID: <340685cd-7f06-21db-94cb-a87d0df36286@ti.com> (raw)
In-Reply-To: <5147808.apZTAZ3VPE@wuerfel>

Hi Arnd,

On 02/09/16 18:51, Arnd Bergmann wrote:
> On Friday, September 2, 2016 10:21:23 AM CEST Alan Stern wrote:
>> On Fri, 2 Sep 2016, Felipe Balbi wrote:
>>
>>> Hi,
>>>
>>> Russell King - ARM Linux <linux@armlinux.org.uk> writes:
>>>> On Fri, Sep 02, 2016 at 12:43:39PM +0200, Arnd Bergmann wrote:
>>>>> On Thursday, September 1, 2016 5:14:28 PM CEST Leo Li wrote:
>>>>>>
>>>>>> Hi Felipe and Arnd,
>>>>>>
>>>>>> It has been a while since the last response to this discussion, but we
>>>>>> haven't reached an agreement yet!  Can we get to a conclusion on if it
>>>>>> is valid to create child platform device for abstraction purpose?  If
>>>>>> yes, can this child device do DMA by itself?
>>>>>
>>>>> I'd say it's no problem for a driver to create child devices in order
>>>>> to represent different aspects of a device, but you should not rely on
>>>>> those devices working when used with the dma-mapping interfaces.
>>>>
>>>> That's absolutely right.  Consider the USB model - only the USB host
>>>> controller can perform DMA, not the USB devices themselves.  All DMA
>>>> mappings need to be mapped using the USB host controller device struct
>>>> not the USB device struct.
>>>>
>>>> The same _should_ be true everywhere else: the struct device representing
>>>> the device performing DMA must be the one used to map the transfer.
>>>
>>> How do we fix dwc3 in dual-role, then?
>>>
>>> Peripheral-side dwc3 is easy, we just require a glue-layer to be present
>>> and use dwc3.ko's parent device (which will be the PCI device or OF
>>> device). But for host side dwc3, the problem is slightly more complex
>>> because we're using xhci-plat.ko by just instantiating a xhci-platform
>>> device so xhci-plat can probe.
>>>
>>> xhci core has no means to know if its own device or the parent of its
>>> parent should be used for DMA. Any ideas?
>>
>> In theory, you can store a flag somewhere in the platform device,
>> something that would tell xhci-hcd that it has to use the parent's
>> parent for DMA purposes.
>>
>> I know it would be somewhat of a hack, but ought to work.
> 
> Speaking of that flag, I suppose we need the same logic to know where
> to look for USB devices attached to a dwc3 host when we need to describe
> them in DT. By default we look for child device nodes under the
> node of the HCD device node, but that would be wrong here too.

I didn't get this part. Information about USB devices attached to a USB host
is never provided in DT because they are always dynamically created via
usb_new_device(), whether they are hard-wired on the board or hot-plugged.

These USB devices inherit their DMA masks in the usb_alloc_dev() routine
whereas each interface within the USB device inherits its DMA mask in
usb_set_configuration().

There is a bug  in the USB core because of which the ISB device and interfaces
do not inherit dma_pfn_offset correctly for which I've sent a patch
https://lkml.org/lkml/2016/8/17/275

cheers,
-roger

WARNING: multiple messages have this Message-ID (diff)
From: rogerq@ti.com (Roger Quadros)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] usb: dwc3: host: inherit dma configuration from parent dev
Date: Wed, 7 Sep 2016 10:17:31 +0300	[thread overview]
Message-ID: <340685cd-7f06-21db-94cb-a87d0df36286@ti.com> (raw)
In-Reply-To: <5147808.apZTAZ3VPE@wuerfel>

Hi Arnd,

On 02/09/16 18:51, Arnd Bergmann wrote:
> On Friday, September 2, 2016 10:21:23 AM CEST Alan Stern wrote:
>> On Fri, 2 Sep 2016, Felipe Balbi wrote:
>>
>>> Hi,
>>>
>>> Russell King - ARM Linux <linux@armlinux.org.uk> writes:
>>>> On Fri, Sep 02, 2016 at 12:43:39PM +0200, Arnd Bergmann wrote:
>>>>> On Thursday, September 1, 2016 5:14:28 PM CEST Leo Li wrote:
>>>>>>
>>>>>> Hi Felipe and Arnd,
>>>>>>
>>>>>> It has been a while since the last response to this discussion, but we
>>>>>> haven't reached an agreement yet!  Can we get to a conclusion on if it
>>>>>> is valid to create child platform device for abstraction purpose?  If
>>>>>> yes, can this child device do DMA by itself?
>>>>>
>>>>> I'd say it's no problem for a driver to create child devices in order
>>>>> to represent different aspects of a device, but you should not rely on
>>>>> those devices working when used with the dma-mapping interfaces.
>>>>
>>>> That's absolutely right.  Consider the USB model - only the USB host
>>>> controller can perform DMA, not the USB devices themselves.  All DMA
>>>> mappings need to be mapped using the USB host controller device struct
>>>> not the USB device struct.
>>>>
>>>> The same _should_ be true everywhere else: the struct device representing
>>>> the device performing DMA must be the one used to map the transfer.
>>>
>>> How do we fix dwc3 in dual-role, then?
>>>
>>> Peripheral-side dwc3 is easy, we just require a glue-layer to be present
>>> and use dwc3.ko's parent device (which will be the PCI device or OF
>>> device). But for host side dwc3, the problem is slightly more complex
>>> because we're using xhci-plat.ko by just instantiating a xhci-platform
>>> device so xhci-plat can probe.
>>>
>>> xhci core has no means to know if its own device or the parent of its
>>> parent should be used for DMA. Any ideas?
>>
>> In theory, you can store a flag somewhere in the platform device,
>> something that would tell xhci-hcd that it has to use the parent's
>> parent for DMA purposes.
>>
>> I know it would be somewhat of a hack, but ought to work.
> 
> Speaking of that flag, I suppose we need the same logic to know where
> to look for USB devices attached to a dwc3 host when we need to describe
> them in DT. By default we look for child device nodes under the
> node of the HCD device node, but that would be wrong here too.

I didn't get this part. Information about USB devices attached to a USB host
is never provided in DT because they are always dynamically created via
usb_new_device(), whether they are hard-wired on the board or hot-plugged.

These USB devices inherit their DMA masks in the usb_alloc_dev() routine
whereas each interface within the USB device inherits its DMA mask in
usb_set_configuration().

There is a bug  in the USB core because of which the ISB device and interfaces
do not inherit dma_pfn_offset correctly for which I've sent a patch
https://lkml.org/lkml/2016/8/17/275

cheers,
-roger

  reply	other threads:[~2016-09-07  7:18 UTC|newest]

Thread overview: 182+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-25 19:21 [PATCH] usb: dwc3: host: inherit dma configuration from parent dev Grygorii Strashko
2016-04-25 19:21 ` Grygorii Strashko
2016-04-26  6:17 ` Felipe Balbi
2016-04-26  6:17   ` Felipe Balbi
2016-04-26  8:14   ` Grygorii Strashko
2016-04-26  8:14     ` Grygorii Strashko
2016-04-27  5:41     ` Felipe Balbi
2016-04-27  5:41       ` Felipe Balbi
2016-04-27 11:55       ` Grygorii Strashko
2016-04-27 11:55         ` Grygorii Strashko
2016-04-27 13:59       ` Catalin Marinas
2016-04-27 13:59         ` Catalin Marinas
2016-04-27 14:11         ` Arnd Bergmann
2016-04-27 14:11           ` Arnd Bergmann
2016-04-27 15:50           ` Catalin Marinas
2016-04-27 15:50             ` Catalin Marinas
2016-04-27 16:04             ` Arnd Bergmann
2016-04-27 16:04               ` Arnd Bergmann
2016-04-27 16:53               ` Felipe Balbi
2016-04-27 16:53                 ` Felipe Balbi
2016-04-27 17:42                 ` Arnd Bergmann
2016-04-27 17:42                   ` Arnd Bergmann
2016-04-27 17:59                   ` Alan Stern
2016-04-27 17:59                     ` Alan Stern
2016-04-27 18:08                     ` Arnd Bergmann
2016-04-27 18:08                       ` Arnd Bergmann
2016-04-27 20:05                       ` Felipe Balbi
2016-04-27 20:05                         ` Felipe Balbi
2016-04-27 21:05                         ` Arnd Bergmann
2016-04-27 21:05                           ` Arnd Bergmann
2016-04-28  6:37                           ` Felipe Balbi
2016-04-28  6:37                             ` Felipe Balbi
2016-04-28 14:16                             ` Russell King - ARM Linux
2016-04-28 14:16                               ` Russell King - ARM Linux
2016-04-28 14:23                               ` Arnd Bergmann
2016-04-28 14:23                                 ` Arnd Bergmann
2016-04-28 14:27                                 ` Felipe Balbi
2016-04-28 14:27                                   ` Felipe Balbi
2016-09-01 22:14                                   ` Leo Li
2016-09-01 22:14                                     ` Leo Li
2016-09-02 10:43                                     ` Arnd Bergmann
2016-09-02 10:43                                       ` Arnd Bergmann
2016-09-02 10:47                                       ` Russell King - ARM Linux
2016-09-02 10:47                                         ` Russell King - ARM Linux
2016-09-02 11:08                                         ` Felipe Balbi
2016-09-02 11:08                                           ` Felipe Balbi
2016-09-02 14:11                                           ` Felipe Balbi
2016-09-02 14:11                                             ` Felipe Balbi
2016-09-02 14:21                                           ` Alan Stern
2016-09-02 14:21                                             ` Alan Stern
2016-09-02 15:51                                             ` Arnd Bergmann
2016-09-02 15:51                                               ` Arnd Bergmann
2016-09-07  7:17                                               ` Roger Quadros [this message]
2016-09-07  7:17                                                 ` Roger Quadros
2016-09-07  8:29                                                 ` Arnd Bergmann
2016-09-07  8:29                                                   ` Arnd Bergmann
2016-09-07 13:04                                                   ` Roger Quadros
2016-09-07 13:04                                                     ` Roger Quadros
2016-09-07 14:38                                                     ` Arnd Bergmann
2016-09-07 14:38                                                       ` Arnd Bergmann
2016-09-02 16:23                                           ` Grygorii Strashko
2016-09-02 16:23                                             ` Grygorii Strashko
2016-09-02 10:53                                       ` Felipe Balbi
2016-09-02 10:53                                         ` Felipe Balbi
2016-09-02 11:55                                         ` Robin Murphy
2016-09-02 11:55                                           ` Robin Murphy
2016-09-02 12:56                                           ` Felipe Balbi
2016-09-02 12:56                                             ` Felipe Balbi
2016-09-02 13:10                                           ` Arnd Bergmann
2016-09-02 13:10                                             ` Arnd Bergmann
2016-09-02 22:16                                       ` Leo Li
2016-09-02 22:16                                         ` Leo Li
2016-09-05 15:39                                         ` Arnd Bergmann
2016-09-05 15:39                                           ` Arnd Bergmann
2016-09-06  6:35                                           ` Peter Chen
2016-09-06  6:35                                             ` Peter Chen
2016-09-06  6:40                                             ` Felipe Balbi
2016-09-06  6:40                                               ` Felipe Balbi
2016-09-06 10:46                                               ` Arnd Bergmann
2016-09-06 10:46                                                 ` Arnd Bergmann
2016-09-06 10:50                                                 ` Felipe Balbi
2016-09-06 10:50                                                   ` Felipe Balbi
2016-09-06 13:27                                                   ` Arnd Bergmann
2016-09-06 13:27                                                     ` Arnd Bergmann
2016-09-07  6:51                                                     ` Felipe Balbi
2016-09-07  6:51                                                       ` Felipe Balbi
2016-09-07  7:44                                                     ` Peter Chen
2016-09-07  7:44                                                       ` Peter Chen
2016-09-07  8:52                                                       ` Arnd Bergmann
2016-09-07  8:52                                                         ` Arnd Bergmann
2016-09-07  9:29                                                         ` Peter Chen
2016-09-07  9:29                                                           ` Peter Chen
2016-09-07  9:35                                                           ` Russell King - ARM Linux
2016-09-07  9:35                                                             ` Russell King - ARM Linux
2016-09-07 10:18                                                             ` Felipe Balbi
2016-09-07 10:18                                                               ` Felipe Balbi
2016-09-06 10:38                                             ` Arnd Bergmann
2016-09-06 10:38                                               ` Arnd Bergmann
2016-09-07  6:33                                               ` Peter Chen
2016-09-07  6:33                                                 ` Peter Chen
2016-09-07  8:48                                                 ` Arnd Bergmann
2016-09-07  8:48                                                   ` Arnd Bergmann
2016-09-07  9:55                                                   ` Peter Chen
2016-09-07  9:55                                                     ` Peter Chen
2016-09-07 10:33                                                     ` Robin Murphy
2016-09-07 10:33                                                       ` Robin Murphy
2016-09-07 10:47                                                       ` Felipe Balbi
2016-09-07 10:47                                                         ` Felipe Balbi
2016-09-14 16:31                                                         ` Lorenzo Pieralisi
2016-09-14 16:31                                                           ` Lorenzo Pieralisi
2016-09-14 21:50                                                           ` Arnd Bergmann
2016-09-14 21:50                                                             ` Arnd Bergmann
2016-09-07 10:24                                                   ` Felipe Balbi
2016-09-07 10:24                                                     ` Felipe Balbi
2016-09-07 15:24                                                     ` Arnd Bergmann
2016-09-07 15:24                                                       ` Arnd Bergmann
2016-09-07 16:08                                                       ` Alan Stern
2016-09-07 16:08                                                         ` Alan Stern
2016-09-07 19:45                                                         ` Arnd Bergmann
2016-09-07 19:45                                                           ` Arnd Bergmann
2016-09-08  1:15                                                       ` Peter Chen
2016-09-08  1:15                                                         ` Peter Chen
2016-09-08  8:02                                                         ` Arnd Bergmann
2016-09-08  8:02                                                           ` Arnd Bergmann
2016-09-08  8:03                                                       ` Felipe Balbi
2016-09-08  8:03                                                         ` Felipe Balbi
2016-09-08  8:26                                                         ` Arnd Bergmann
2016-09-08  8:26                                                           ` Arnd Bergmann
2016-09-08  8:29                                                           ` Felipe Balbi
2016-09-08  8:29                                                             ` Felipe Balbi
2016-09-08  8:45                                                             ` Arnd Bergmann
2016-09-08  8:45                                                               ` Arnd Bergmann
2016-09-08  9:43                                                               ` Felipe Balbi
2016-09-08  9:43                                                                 ` Felipe Balbi
2016-09-08 10:17                                                                 ` Arnd Bergmann
2016-09-08 10:17                                                                   ` Arnd Bergmann
2016-09-08 11:00                                                                   ` Felipe Balbi
2016-09-08 11:00                                                                     ` Felipe Balbi
2016-09-08 11:11                                                                     ` Arnd Bergmann
2016-09-08 11:11                                                                       ` Arnd Bergmann
2016-09-08 11:20                                                                       ` Felipe Balbi
2016-09-08 11:20                                                                         ` Felipe Balbi
2016-09-08 11:39                                                                         ` Arnd Bergmann
2016-09-08 11:39                                                                           ` Arnd Bergmann
2016-09-08 11:52                                                                           ` Felipe Balbi
2016-09-08 11:52                                                                             ` Felipe Balbi
2016-09-08 12:46                                                                             ` Arnd Bergmann
2016-09-08 12:46                                                                               ` Arnd Bergmann
2016-09-08 12:02                                                                     ` Grygorii Strashko
2016-09-08 12:02                                                                       ` Grygorii Strashko
2016-09-08 12:14                                                                       ` Arnd Bergmann
2016-09-08 12:14                                                                         ` Arnd Bergmann
2016-09-08 12:28                                                                   ` Peter Chen
2016-09-08 12:28                                                                     ` Peter Chen
2016-09-08 12:52                                                                     ` Arnd Bergmann
2016-09-08 12:52                                                                       ` Arnd Bergmann
2016-09-09  1:37                                                                       ` Peter Chen
2016-09-09  1:37                                                                         ` Peter Chen
2016-09-08 12:59                                                                     ` Grygorii Strashko
2016-09-08 12:59                                                                       ` Grygorii Strashko
2016-09-09  1:52                                                                       ` Peter Chen
2016-09-09  1:52                                                                         ` Peter Chen
2016-09-21 11:06                                                       ` Sriram Dash
2016-09-21 11:06                                                         ` Sriram Dash
2016-09-21 11:31                                                         ` Arnd Bergmann
2016-09-21 11:31                                                           ` Arnd Bergmann
2016-09-21 11:43                                                           ` Sriram Dash
2016-09-21 11:43                                                             ` Sriram Dash
2016-09-21 12:48                                                             ` Arnd Bergmann
2016-09-21 12:48                                                               ` Arnd Bergmann
2016-09-22  5:02                                                               ` Sriram Dash
2016-09-22  5:02                                                                 ` Sriram Dash
2016-10-07 22:46                                                                 ` Leo Li
2016-10-07 22:46                                                                   ` Leo Li
2016-09-21 17:14                                                             ` [PATCH] usb: xhci: Fix the patch inherit dma configuration from kbuild test robot
2016-09-21 17:14                                                               ` kbuild test robot
2016-04-27 20:57                   ` [PATCH] usb: dwc3: host: inherit dma configuration from parent dev Felipe Balbi
2016-04-27 20:57                     ` Felipe Balbi
2016-04-27 14:14         ` Grygorii Strashko
2016-04-27 14:14           ` Grygorii Strashko
2016-05-05 17:07 ` Brian Norris
2016-05-05 17:07   ` Brian Norris

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=340685cd-7f06-21db-94cb-a87d0df36286@ti.com \
    --to=rogerq@ti.com \
    --cc=arnd@arndb.de \
    --cc=balbi@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=david.fisher1@synopsys.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=grygorii.strashko@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=nsekhar@ti.com \
    --cc=oss@buserror.net \
    --cc=pku.leo@gmail.com \
    --cc=stern@rowland.harvard.edu \
    --cc=stuart.yoder@nxp.com \
    --cc=tqnguyen@apm.com \
    --cc=yoshihiro.shimoda.uh@renesas.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.