[disco:linux-azure][PATCH] PCI: hv: Use bytes 4 and 5 from instance ID as the PCI domain numbers

Marcelo Henrique Cerri marcelo.cerri at canonical.com
Wed Oct 16 20:28:31 UTC 2019


From: Haiyang Zhang <haiyangz at microsoft.com>

BugLink: https://bugs.launchpad.net/bugs/1847139

As recommended by Azure host team, the bytes 4, 5 have more uniqueness
(info entropy) than bytes 8, 9 so use them as the PCI domain numbers.

On older hosts, bytes 4, 5 can also be used -- no backward compatibility
issues are introduced and the chance of collision is greatly reduced.

In the rare cases of collision, the driver code detects and finds
another number that is not in use.

Suggested-by: Michael Kelley <mikelley at microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz at microsoft.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi at arm.com>
Acked-by: Sasha Levin <sashal at kernel.org>
(cherry picked from commit f73f8a504e27959576a2f4d85182202561e426f2)
[marcelo.cerri at canonical.com: adjustments due to the context difference]
Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri at canonical.com>
---
 drivers/pci/controller/pci-hyperv.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c
index 3bd94149b9d2..36b3c85f6574 100644
--- a/drivers/pci/controller/pci-hyperv.c
+++ b/drivers/pci/controller/pci-hyperv.c
@@ -2559,8 +2559,8 @@ static int hv_pci_probe(struct hv_device *hdev,
 	 * between domains derived from these instance IDs in the same
 	 * VM.
 	 */
-	hbus->sysdata.domain = hdev->dev_instance.b[9] |
-			       hdev->dev_instance.b[8] << 8;
+	hbus->sysdata.domain = hdev->dev_instance.b[4] |
+			       hdev->dev_instance.b[5] << 8;
 
 	hbus->hdev = hdev;
 	refcount_set(&hbus->remove_lock, 1);
-- 
2.20.1




More information about the kernel-team mailing list