PCI: hv: Use bytes 4 and 5 from instance ID as the PCI domain numbers
authorHaiyang Zhang <haiyangz@microsoft.com>
Thu, 15 Aug 2019 17:01:45 +0000 (17:01 +0000)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Tue, 10 Sep 2019 11:14:08 +0000 (12:14 +0100)
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@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Sasha Levin <sashal@kernel.org>
drivers/pci/controller/pci-hyperv.c

index 4caa3388692ab5d33a9852302cae7301ba2b6e99..3a56de6b2ec2ca20e348cd083fad8574c6a5a4b9 100644 (file)
@@ -2590,7 +2590,7 @@ static int hv_pci_probe(struct hv_device *hdev,
         * (2) There will be no overlap between domains (after fixing possible
         * collisions) in the same VM.
         */
-       dom_req = hdev->dev_instance.b[8] << 8 | hdev->dev_instance.b[9];
+       dom_req = hdev->dev_instance.b[5] << 8 | hdev->dev_instance.b[4];
        dom = hv_get_dom_num(dom_req);
 
        if (dom == HVPCI_DOM_INVALID) {