From: Michael Kelley <mikelley@microsoft.com> To: "longli@linuxonhyperv.com" <longli@linuxonhyperv.com>, KY Srinivasan <kys@microsoft.com>, Haiyang Zhang <haiyangz@microsoft.com>, Stephen Hemminger <sthemmin@microsoft.com>, Sasha Levin <sashal@kernel.org>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Andrew Murray <andrew.murray@arm.com>, Bjorn Helgaas <bhelgaas@google.com>, "linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>, "linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Dexuan Cui <decui@microsoft.com> Cc: Long Li <longli@microsoft.com> Subject: RE: [EXTERNAL] [PATCH 2/2] PCI: hv: Add support for protocol 1.3 and support PCI_BUS_RELATIONS2 Date: Sat, 30 Nov 2019 04:45:36 +0000 Message-ID: <CY4PR21MB0629300E161C5119D4714A64D7410@CY4PR21MB0629.namprd21.prod.outlook.com> (raw) In-Reply-To: <1574474229-44840-2-git-send-email-longli@linuxonhyperv.com> From: longli@linuxonhyperv.com Sent: Friday, November 22, 2019 5:57 PM > > From: Long Li <longli@microsoft.com> > > Starting with Hyper-V PCI protocol version 1.3, the host VSP can send > PCI_BUS_RELATIONS2 and pass the vNUMA node information for devices on the bus. > The vNUMA node tells which guest NUMA node this device is on based on guest > VM configuration topology and physical device inforamtion. > > The patch adds code to negotiate v1.3 and process PCI_BUS_RELATIONS2. > > Signed-off-by: Long Li <longli@microsoft.com> > --- > drivers/pci/controller/pci-hyperv.c | 107 ++++++++++++++++++++++++++++ > 1 file changed, 107 insertions(+) > [snip] > +/* > + * Set NUMA node for the devices on the bus > + */ > +static void pci_assign_numa_node(struct hv_pcibus_device *hbus) > +{ > + struct pci_dev *dev; > + struct pci_bus *bus = hbus->pci_bus; > + struct hv_pci_dev *hv_dev; > + > + list_for_each_entry(dev, &bus->devices, bus_list) { > + hv_dev = get_pcichild_wslot(hbus, devfn_to_wslot(dev->devfn)); > + if (!hv_dev) > + continue; > + > + if (hv_dev->desc.flags & HV_PCI_DEVICE_FLAG_NUMA_AFFINITY) > + set_dev_node(&dev->dev, hv_dev->desc.virtual_numa_node); > + } > +} > + get_pcichild_wslot() gets a reference to the hv_dev, so a call to put_pcichild() is needed to balance. But more broadly, is the call to set_dev_node() operating on the correct struct device? There's a struct device in the struct hv_device, and also one in the struct pci_dev. Everything in this module seems to be operating on the former. For example, all the dev_err() calls identify the struct device in struct hv_device. And enumerating all the devices on a virtual PCI bus is done by iterating through the hbus->children list, not the bus->devices list. I don't completely understand the interplay between the two struct device entries, but the difference makes me wonder if the above code should be setting the NUMA node on the struct device that's in struct hv_device. Michael
next prev parent reply index Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-23 1:57 [PATCH 1/2] PCI: hv: decouple the func definition in hv_dr_state from VSP message longli 2019-11-23 1:57 ` [PATCH 2/2] PCI: hv: Add support for protocol 1.3 and support PCI_BUS_RELATIONS2 longli 2019-11-30 4:45 ` Michael Kelley [this message] 2019-12-02 21:23 ` [EXTERNAL] " Long Li 2019-12-02 23:59 ` Dexuan Cui 2019-12-03 0:49 ` Long Li 2019-11-30 4:30 ` [EXTERNAL] [PATCH 1/2] PCI: hv: decouple the func definition in hv_dr_state from VSP message Michael Kelley 2019-12-02 23:29 ` Dexuan Cui 2019-12-03 0:39 ` Long Li
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CY4PR21MB0629300E161C5119D4714A64D7410@CY4PR21MB0629.namprd21.prod.outlook.com \ --to=mikelley@microsoft.com \ --cc=andrew.murray@arm.com \ --cc=bhelgaas@google.com \ --cc=decui@microsoft.com \ --cc=haiyangz@microsoft.com \ --cc=kys@microsoft.com \ --cc=linux-hyperv@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=longli@linuxonhyperv.com \ --cc=longli@microsoft.com \ --cc=lorenzo.pieralisi@arm.com \ --cc=sashal@kernel.org \ --cc=sthemmin@microsoft.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-HyperV Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-hyperv/0 linux-hyperv/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-hyperv linux-hyperv/ https://lore.kernel.org/linux-hyperv \ linux-hyperv@vger.kernel.org public-inbox-index linux-hyperv Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-hyperv AGPL code for this site: git clone https://public-inbox.org/public-inbox.git