* [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
[not found] ` <1513661883-28662-1-git-send-email-okaya-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
@ 2017-12-19 5:37 ` Sinan Kaya
2018-01-04 12:25 ` Sinan Kaya
2018-01-17 13:02 ` Joerg Roedel
0 siblings, 2 replies; 6+ messages in thread
From: Sinan Kaya @ 2017-12-19 5:37 UTC (permalink / raw)
To: linux-pci-u79uwXL29TY76Z2rM5mHXA, timur-sgV2jX0FEOL9JmXXK+q4OQ
Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, open list, Sinan Kaya,
open list:AMD IOMMU AMD-VI,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
where a PCI device is present. This restricts the device drivers to be
reused for other domain numbers.
Getting ready to remove pci_get_bus_and_slot() function in favor of
pci_get_domain_bus_and_slot().
Hard-code the domain number as 0 for the AMD IOMMU driver.
Signed-off-by: Sinan Kaya <okaya-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
---
drivers/iommu/amd_iommu.c | 3 ++-
drivers/iommu/amd_iommu_init.c | 9 +++++----
drivers/iommu/amd_iommu_v2.c | 3 ++-
3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 7d5eb00..821547b 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -527,7 +527,8 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,
struct iommu_dev_data *dev_data = NULL;
struct pci_dev *pdev;
- pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
+ pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
+ devid & 0xff);
if (pdev)
dev_data = get_dev_data(&pdev->dev);
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 6fe2d03..4e4a615 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -1697,8 +1697,8 @@ static int iommu_init_pci(struct amd_iommu *iommu)
u32 range, misc, low, high;
int ret;
- iommu->dev = pci_get_bus_and_slot(PCI_BUS_NUM(iommu->devid),
- iommu->devid & 0xff);
+ iommu->dev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(iommu->devid),
+ iommu->devid & 0xff);
if (!iommu->dev)
return -ENODEV;
@@ -1764,8 +1764,9 @@ static int iommu_init_pci(struct amd_iommu *iommu)
if (is_rd890_iommu(iommu->dev)) {
int i, j;
- iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number,
- PCI_DEVFN(0, 0));
+ iommu->root_pdev =
+ pci_get_domain_bus_and_slot(0, iommu->dev->bus->number,
+ PCI_DEVFN(0, 0));
/*
* Some rd890 systems may not be fully reconfigured by the
diff --git a/drivers/iommu/amd_iommu_v2.c b/drivers/iommu/amd_iommu_v2.c
index 7d94e1d..8696382 100644
--- a/drivers/iommu/amd_iommu_v2.c
+++ b/drivers/iommu/amd_iommu_v2.c
@@ -564,7 +564,8 @@ static int ppr_notifier(struct notifier_block *nb, unsigned long e, void *data)
finish = (iommu_fault->tag >> 9) & 1;
devid = iommu_fault->device_id;
- pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
+ pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
+ devid & 0xff);
if (!pdev)
return -ENODEV;
dev_data = get_dev_data(&pdev->dev);
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
2017-12-19 5:37 ` [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot() Sinan Kaya
@ 2018-01-04 12:25 ` Sinan Kaya
[not found] ` <8a5dad82-2886-2a51-28bc-b84ab253c361-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-01-17 13:02 ` Joerg Roedel
1 sibling, 1 reply; 6+ messages in thread
From: Sinan Kaya @ 2018-01-04 12:25 UTC (permalink / raw)
To: linux-pci, timur
Cc: linux-arm-msm, linux-arm-kernel, Joerg Roedel,
open list:AMD IOMMU (AMD-VI), open list
On 12/19/2017 12:37 AM, Sinan Kaya wrote:
> pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
> where a PCI device is present. This restricts the device drivers to be
> reused for other domain numbers.
>
> Getting ready to remove pci_get_bus_and_slot() function in favor of
> pci_get_domain_bus_and_slot().
>
> Hard-code the domain number as 0 for the AMD IOMMU driver.
>
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
> drivers/iommu/amd_iommu.c | 3 ++-
> drivers/iommu/amd_iommu_init.c | 9 +++++----
> drivers/iommu/amd_iommu_v2.c | 3 ++-
> 3 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
> index 7d5eb00..821547b 100644
> --- a/drivers/iommu/amd_iommu.c
> +++ b/drivers/iommu/amd_iommu.c
> @@ -527,7 +527,8 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,
> struct iommu_dev_data *dev_data = NULL;
> struct pci_dev *pdev;
>
> - pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
> + pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
> + devid & 0xff);
> if (pdev)
> dev_data = get_dev_data(&pdev->dev);
>
> diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
> index 6fe2d03..4e4a615 100644
> --- a/drivers/iommu/amd_iommu_init.c
> +++ b/drivers/iommu/amd_iommu_init.c
> @@ -1697,8 +1697,8 @@ static int iommu_init_pci(struct amd_iommu *iommu)
> u32 range, misc, low, high;
> int ret;
>
> - iommu->dev = pci_get_bus_and_slot(PCI_BUS_NUM(iommu->devid),
> - iommu->devid & 0xff);
> + iommu->dev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(iommu->devid),
> + iommu->devid & 0xff);
> if (!iommu->dev)
> return -ENODEV;
>
> @@ -1764,8 +1764,9 @@ static int iommu_init_pci(struct amd_iommu *iommu)
> if (is_rd890_iommu(iommu->dev)) {
> int i, j;
>
> - iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number,
> - PCI_DEVFN(0, 0));
> + iommu->root_pdev =
> + pci_get_domain_bus_and_slot(0, iommu->dev->bus->number,
> + PCI_DEVFN(0, 0));
>
> /*
> * Some rd890 systems may not be fully reconfigured by the
> diff --git a/drivers/iommu/amd_iommu_v2.c b/drivers/iommu/amd_iommu_v2.c
> index 7d94e1d..8696382 100644
> --- a/drivers/iommu/amd_iommu_v2.c
> +++ b/drivers/iommu/amd_iommu_v2.c
> @@ -564,7 +564,8 @@ static int ppr_notifier(struct notifier_block *nb, unsigned long e, void *data)
> finish = (iommu_fault->tag >> 9) & 1;
>
> devid = iommu_fault->device_id;
> - pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
> + pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
> + devid & 0xff);
> if (!pdev)
> return -ENODEV;
> dev_data = get_dev_data(&pdev->dev);
>
Any comments from the IOMMU people?
--
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
[not found] ` <8a5dad82-2886-2a51-28bc-b84ab253c361-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
@ 2018-01-04 16:28 ` Gary R Hook
2018-01-04 16:32 ` Sinan Kaya
0 siblings, 1 reply; 6+ messages in thread
From: Gary R Hook @ 2018-01-04 16:28 UTC (permalink / raw)
To: Sinan Kaya, linux-pci-u79uwXL29TY76Z2rM5mHXA,
timur-sgV2jX0FEOL9JmXXK+q4OQ
Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
open list:AMD IOMMU (AMD-VI), open list,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
On 01/04/2018 06:25 AM, Sinan Kaya wrote:
> On 12/19/2017 12:37 AM, Sinan Kaya wrote:
>> pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
>> where a PCI device is present. This restricts the device drivers to be
>> reused for other domain numbers.
>>
>> Getting ready to remove pci_get_bus_and_slot() function in favor of
>> pci_get_domain_bus_and_slot().
>>
>> Hard-code the domain number as 0 for the AMD IOMMU driver.
<snip>
>
> Any comments from the IOMMU people?
>
pci_get_bus_and_slot() appears to (now) be a convenience function that
wraps pci_get_domain_bus_and_slot() while using a 0 for the domain
value. Exactly what you are doing here, albeit in a more overt way.
How is this patch advantageous? Seems to me that if other domains need
to be enabled, that driver could be changed if and when that requirement
arises.
But perhaps I'm missing a nuance here.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
2018-01-04 16:28 ` Gary R Hook
@ 2018-01-04 16:32 ` Sinan Kaya
2018-01-04 17:25 ` Gary R Hook
0 siblings, 1 reply; 6+ messages in thread
From: Sinan Kaya @ 2018-01-04 16:32 UTC (permalink / raw)
To: Gary R Hook, linux-pci, timur
Cc: linux-arm-msm, open list:AMD IOMMU (AMD-VI), linux-arm-kernel,
open list
On 1/4/2018 11:28 AM, Gary R Hook wrote:
> On 01/04/2018 06:25 AM, Sinan Kaya wrote:
>> On 12/19/2017 12:37 AM, Sinan Kaya wrote:
>>> pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
>>> where a PCI device is present. This restricts the device drivers to be
>>> reused for other domain numbers.
>>>
>>> Getting ready to remove pci_get_bus_and_slot() function in favor of
>>> pci_get_domain_bus_and_slot().
>>>
>>> Hard-code the domain number as 0 for the AMD IOMMU driver.
>
> <snip>
>
>>
>> Any comments from the IOMMU people?
>>
>
> pci_get_bus_and_slot() appears to (now) be a convenience function that wraps pci_get_domain_bus_and_slot() while using a 0 for the domain value. Exactly what you are doing here, albeit in a more overt way.
>
> How is this patch advantageous? Seems to me that if other domains need to be enabled, that driver could be changed if and when that requirement arises.
>
> But perhaps I'm missing a nuance here.
>
>
The benefit of the change was discussed here:
https://lkml.org/lkml/2017/12/19/349
I hope it helps.
--
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
2018-01-04 16:32 ` Sinan Kaya
@ 2018-01-04 17:25 ` Gary R Hook
0 siblings, 0 replies; 6+ messages in thread
From: Gary R Hook @ 2018-01-04 17:25 UTC (permalink / raw)
To: Sinan Kaya, linux-pci, timur
Cc: linux-arm-msm, open list:AMD IOMMU (AMD-VI), linux-arm-kernel,
open list
On 01/04/2018 10:32 AM, Sinan Kaya wrote:
> On 1/4/2018 11:28 AM, Gary R Hook wrote:
>> On 01/04/2018 06:25 AM, Sinan Kaya wrote:
>>> On 12/19/2017 12:37 AM, Sinan Kaya wrote:
>>>> pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
>>>> where a PCI device is present. This restricts the device drivers to be
>>>> reused for other domain numbers.
>>>>
>>>> Getting ready to remove pci_get_bus_and_slot() function in favor of
>>>> pci_get_domain_bus_and_slot().
>>>>
>>>> Hard-code the domain number as 0 for the AMD IOMMU driver.
>>
>> <snip>
>>
>>>
>>> Any comments from the IOMMU people?
>>>
>>
>> pci_get_bus_and_slot() appears to (now) be a convenience function that wraps pci_get_domain_bus_and_slot() while using a 0 for the domain value. Exactly what you are doing here, albeit in a more overt way.
>>
>> How is this patch advantageous? Seems to me that if other domains need to be enabled, that driver could be changed if and when that requirement arises.
>>
>> But perhaps I'm missing a nuance here.
>>
>>
>
> The benefit of the change was discussed here:
>
> https://lkml.org/lkml/2017/12/19/349
>
> I hope it helps.
>
>
Thank you for pointing out that thread directly. I read through it and
thought further about this change.
I am not the maintainer, but as an AMD developer, this is fine change. I
can't ACK but I can agree.
Gary
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
2017-12-19 5:37 ` [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot() Sinan Kaya
2018-01-04 12:25 ` Sinan Kaya
@ 2018-01-17 13:02 ` Joerg Roedel
1 sibling, 0 replies; 6+ messages in thread
From: Joerg Roedel @ 2018-01-17 13:02 UTC (permalink / raw)
To: Sinan Kaya
Cc: linux-pci, timur, linux-arm-msm, linux-arm-kernel,
open list:AMD IOMMU (AMD-VI), open list
On Tue, Dec 19, 2017 at 12:37:47AM -0500, Sinan Kaya wrote:
> pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
> where a PCI device is present. This restricts the device drivers to be
> reused for other domain numbers.
>
> Getting ready to remove pci_get_bus_and_slot() function in favor of
> pci_get_domain_bus_and_slot().
>
> Hard-code the domain number as 0 for the AMD IOMMU driver.
>
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
> drivers/iommu/amd_iommu.c | 3 ++-
> drivers/iommu/amd_iommu_init.c | 9 +++++----
> drivers/iommu/amd_iommu_v2.c | 3 ++-
> 3 files changed, 9 insertions(+), 6 deletions(-)
Acked-by: Joerg Roedel <jroedel@suse.de>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-01-17 13:02 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1513661883-28662-1-git-send-email-okaya@codeaurora.org>
[not found] ` <1513661883-28662-1-git-send-email-okaya-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-12-19 5:37 ` [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot() Sinan Kaya
2018-01-04 12:25 ` Sinan Kaya
[not found] ` <8a5dad82-2886-2a51-28bc-b84ab253c361-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-01-04 16:28 ` Gary R Hook
2018-01-04 16:32 ` Sinan Kaya
2018-01-04 17:25 ` Gary R Hook
2018-01-17 13:02 ` Joerg Roedel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).