All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] PCI: Expand documentation for pci_add_dma_alias()
@ 2018-05-24 17:39 Logan Gunthorpe
  2018-05-24 17:44 ` Randy Dunlap
  0 siblings, 1 reply; 3+ messages in thread
From: Logan Gunthorpe @ 2018-05-24 17:39 UTC (permalink / raw)
  To: linux-kernel, linux-pci, linux-ntb
  Cc: Logan Gunthorpe, Bjorn Helgaas, Alex Williamson, Doug Meyer

Seeing there's been some confusion about the use of pci_add_dma_alias(),
expand the comment to describe why it must be called early and how
early it must be called.

Also, expand on the purpose of this function and common reasons it would
be used.

[The comment was reworded to some extent by Alex Williamson]

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Cc: Doug Meyer <dmeyer@gigaio.com>
---

v2: Reworked the patch with Alex's suggested wording.

  drivers/pci/pci.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index dbfe7c4f3776..1c0c1ea23b90 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -5395,8 +5395,19 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode,
  * @dev: the PCI device for which alias is added
  * @devfn: alias slot and function
  *
- * This helper encodes 8-bit devfn as bit number in dma_alias_mask.
- * It should be called early, preferably as PCI fixup header quirk.
+ * This helper encodes an 8-bit devfn as a bit number in dma_alias_mask
+ * which is used to program permissible BDF source addresses for DMA
+ * requests in an IOMMU. These aliases factor into IOMMU group creation
+ * and are useful for devices generating DMA requests beyond or different
+ * from their logical bus devfn. Examples include device quirks where the
+ * device simply uses the wronge devfn, as well as non-transparent bridges
+ * where the alias may be a proxy for devices in another domain.
+ *
+ * IOMMU group creation is performed during device discovery or addition,
+ * prior to any potential DMA mapping and therefore prior to driver probing
+ * (especially for userspace assigned devices where IOMMU group definition
+ * cannot be left as a userspace activity). DMA aliases should therefore
+ * be configured via quirks, such as the PCI fixup header quirk.
  */
 void pci_add_dma_alias(struct pci_dev *dev, u8 devfn)
 {
--
2.11.0

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] PCI: Expand documentation for pci_add_dma_alias()
  2018-05-24 17:39 [PATCH v2] PCI: Expand documentation for pci_add_dma_alias() Logan Gunthorpe
@ 2018-05-24 17:44 ` Randy Dunlap
  2018-05-24 17:51   ` Logan Gunthorpe
  0 siblings, 1 reply; 3+ messages in thread
From: Randy Dunlap @ 2018-05-24 17:44 UTC (permalink / raw)
  To: Logan Gunthorpe, linux-kernel, linux-pci, linux-ntb
  Cc: Bjorn Helgaas, Alex Williamson, Doug Meyer

On 05/24/2018 10:39 AM, Logan Gunthorpe wrote:
> Seeing there's been some confusion about the use of pci_add_dma_alias(),
> expand the comment to describe why it must be called early and how
> early it must be called.
> 
> Also, expand on the purpose of this function and common reasons it would
> be used.
> 
> [The comment was reworded to some extent by Alex Williamson]
> 
> Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Alex Williamson <alex.williamson@redhat.com>
> Cc: Doug Meyer <dmeyer@gigaio.com>
> ---
> 
> v2: Reworked the patch with Alex's suggested wording.
> 
>   drivers/pci/pci.c | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index dbfe7c4f3776..1c0c1ea23b90 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -5395,8 +5395,19 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode,
>   * @dev: the PCI device for which alias is added
>   * @devfn: alias slot and function
>   *
> - * This helper encodes 8-bit devfn as bit number in dma_alias_mask.
> - * It should be called early, preferably as PCI fixup header quirk.
> + * This helper encodes an 8-bit devfn as a bit number in dma_alias_mask
> + * which is used to program permissible BDF source addresses for DMA

It took me a few seconds to decode BDF.  FWIW, I would prefer to see
bus-devfn or bus-dev-fn or bus-dev-func or bus-dev-function.

> + * requests in an IOMMU. These aliases factor into IOMMU group creation
> + * and are useful for devices generating DMA requests beyond or different
> + * from their logical bus devfn. Examples include device quirks where the

                         ^ Here it's "bus devfn."

> + * device simply uses the wronge devfn, as well as non-transparent bridges

                             wrong

> + * where the alias may be a proxy for devices in another domain.
> + *
> + * IOMMU group creation is performed during device discovery or addition,
> + * prior to any potential DMA mapping and therefore prior to driver probing
> + * (especially for userspace assigned devices where IOMMU group definition
> + * cannot be left as a userspace activity). DMA aliases should therefore
> + * be configured via quirks, such as the PCI fixup header quirk.
>   */
>  void pci_add_dma_alias(struct pci_dev *dev, u8 devfn)
>  {
> --
> 2.11.0
> 


-- 
~Randy

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] PCI: Expand documentation for pci_add_dma_alias()
  2018-05-24 17:44 ` Randy Dunlap
@ 2018-05-24 17:51   ` Logan Gunthorpe
  0 siblings, 0 replies; 3+ messages in thread
From: Logan Gunthorpe @ 2018-05-24 17:51 UTC (permalink / raw)
  To: Randy Dunlap, linux-kernel, linux-pci, linux-ntb
  Cc: Bjorn Helgaas, Alex Williamson, Doug Meyer



On 24/05/18 11:44 AM, Randy Dunlap wrote:
>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
>> index dbfe7c4f3776..1c0c1ea23b90 100644
>> --- a/drivers/pci/pci.c
>> +++ b/drivers/pci/pci.c
>> @@ -5395,8 +5395,19 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode,
>>   * @dev: the PCI device for which alias is added
>>   * @devfn: alias slot and function
>>   *
>> - * This helper encodes 8-bit devfn as bit number in dma_alias_mask.
>> - * It should be called early, preferably as PCI fixup header quirk.
>> + * This helper encodes an 8-bit devfn as a bit number in dma_alias_mask
>> + * which is used to program permissible BDF source addresses for DMA
> 
> It took me a few seconds to decode BDF.  FWIW, I would prefer to see
> bus-devfn or bus-dev-fn or bus-dev-func or bus-dev-function.

Yes, there's a lot of overlapping terminology here. In circles I've
discussed this stuff, BDF is a common acronym. The kernel uses
Bus/Slot/Function in some places, but devfn is also common. In any case,
I like bus-devfn so I'll make these changes and send a v3 shortly.

Thanks,

Logan

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-05-24 17:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-24 17:39 [PATCH v2] PCI: Expand documentation for pci_add_dma_alias() Logan Gunthorpe
2018-05-24 17:44 ` Randy Dunlap
2018-05-24 17:51   ` Logan Gunthorpe

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.