From 97716cf4cae9779c180c00fb4becacd2da139359 Mon Sep 17 00:00:00 2001 From: Sridhar Pitchai Date: Thu, 8 Mar 2018 14:17:51 -0800 Subject: [PATCH] PCI BUS domain ID corruption When PCI BUS is added, PCI_BUS domain ID is set. When PCI_BUS and a device added to the bus is racing against each other, the first device tends to overwrite the domain ID. In order to avoid the race, this patch make sure when a device is added to a bus, it never updated the bus domain ID. Since we have the transparent SRIOV mode now, the short VF device name is no longer needed. Fixes: 4a9b0933bdfc("PCI:hv:Use device serial number as PCI domain") Cc: stable@vger.kernel.org Signed-off-by: Sridhar Pitchai --- drivers/pci/host/pci-hyperv.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/drivers/pci/host/pci-hyperv.c b/drivers/pci/host/pci-hyperv.c index 2faf38e..ac67e56 100644 --- a/drivers/pci/host/pci-hyperv.c +++ b/drivers/pci/host/pci-hyperv.c @@ -1518,17 +1518,6 @@ static struct hv_pci_dev *new_pcichild_device(struct hv_pcibus_device *hbus, get_pcichild(hpdev, hv_pcidev_ref_childlist); spin_lock_irqsave(&hbus->device_list_lock, flags); - /* - * When a device is being added to the bus, we set the PCI domain - * number to be the device serial number, which is non-zero and - * unique on the same VM. The serial numbers start with 1, and - * increase by 1 for each device. So device names including this - * can have shorter names than based on the bus instance UUID. - * Only the first device serial number is used for domain, so the - * domain number will not change after the first device is added. - */ - if (list_empty(&hbus->children)) - hbus->sysdata.domain = desc->ser; list_add_tail(&hpdev->list_entry, &hbus->children); spin_unlock_irqrestore(&hbus->device_list_lock, flags); return hpdev; -- 2.7.4