All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: "Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
	"Daniel P. Berrangé" <berrange@redhat.com>
Cc: Roman Kagan <rvkagan@yandex-team.ru>,
	qemu-devel@nongnu.org,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Laurent Vivier <lvivier@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	yc-core@yandex-team.ru, Paolo Bonzini <pbonzini@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Gonglei <arei.gonglei@huawei.com>
Subject: Re: [PATCH v3] hw/pci/pci_bridge: ensure PCIe slots have only one slot
Date: Fri, 22 Jul 2022 09:28:57 +0200	[thread overview]
Message-ID: <670414db-8d17-63d4-5b20-fcfcd0590553@redhat.com> (raw)
In-Reply-To: <9a3f311e-398e-c36f-a1d2-33c23aa163dc@ilande.co.uk>

On 21/07/2022 18.05, Mark Cave-Ayland wrote:
> On 21/07/2022 16:56, Daniel P. Berrangé wrote:
> 
>> On Thu, Jul 21, 2022 at 04:51:51PM +0100, Mark Cave-Ayland wrote:
>>> On 21/07/2022 15:28, Roman Kagan wrote:
>>>
>>> (lots cut)
>>>
>>>> In the guest (Fedora 34):
>>>>
>>>> [root@test ~]# lspci -tv
>>>> -[0000:00]-+-00.0  Intel Corporation 82G33/G31/P35/P31 Express DRAM 
>>>> Controller
>>>>              +-01.0  Device 1234:1111
>>>>              +-02.0  Red Hat, Inc. QEMU XHCI Host Controller
>>>>              +-05.0-[01]----00.0  Red Hat, Inc. Virtio block device
>>>>              +-05.1-[02]----00.0  Red Hat, Inc. Virtio network device
>>>>              +-05.2-[03]--
>>>>              +-05.3-[04]--
>>>>              +-1f.0  Intel Corporation 82801IB (ICH9) LPC Interface 
>>>> Controller
>>>>              \-1f.3  Intel Corporation 82801I (ICH9 Family) SMBus 
>>>> Controller
>>>>
>>>> Changing addr of the second disk from 4 to 0 makes it appear in the
>>>> guest.
>>>>
>>>> What exactly do you find odd?
>>>
>>> Thanks for this, the part I wasn't sure about was whether the device ids in
>>> the command line matched the primary PCI bus or the secondary PCI bus.
>>>
>>> In that case I suspect that the enumeration of non-zero PCIe devices fails
>>> in Linux because of the logic here:
>>> https://github.com/torvalds/linux/blob/master/drivers/pci/probe.c#L2622.
>>
>> Just above that though is logic that handles 'pci=pcie_scan_all'
>> kernel parameter, to make it look for non-zero devices.
>>
>>> I don't have a copy of the PCIe specification, but assuming the comment is
>>> true then your patch looks correct to me. I think it would be worth adding a
>>> similar comment and reference to your patch to explain why the logic is
>>> required, which should also help the PCI maintainers during review.
>>
>> The docs above with the pci=pcie_scan_all suggest it is unusual but not
>> forbidden.
> 
> That's interesting as I read it completely the other way around, i.e. PCIe 
> downstream ports should only have device 0 and the PCI_SCAN_ALL_PCIE_DEVS 
> flag is there for broken/exotic hardware :)
> 
> Perhaps if someone has a copy of the PCIe specification they can check the 
> wording in section 7.3.1 to see exactly what the correct behaviour should be?

I've got an older version here... it talks about the "Alternative Routing-ID 
Interpretation" (ARI) there:

"With non-ARI Devices, PCI Express components are restricted to implementing 
a single Device Number on their primary interface (Upstream Port), but are 
permitted to implement up to eight
independent Functions within that Device Number. [...] Downstream Ports that 
do not have ARI Forwarding enabled must associate only Device 0 with the 
device [...].
With an ARI Device, its Device Number is implied to be 0 rather than 
specified by a field within an ID. The traditional 5-bit Device Number and 
3-bit Function Number fields in its associated
Routing IDs, Requester IDs, and Completer IDs are interpreted as a single 
8-bit Function Number."

There was also an older patch similar to yours here:

 
https://lore.kernel.org/all/33183CC9F5247A488A2544077AF1902086D6B3F5@SZXEMA503-MBS.china.huawei.com/T/

... but if I've got that right, it has never been merged?

  HTH,
   Thomas



  parent reply	other threads:[~2022-07-22  7:42 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20 10:25 [PATCH v3] hw/pci/pci_bridge: ensure PCIe slots have only one slot Roman Kagan
2022-07-20 10:31 ` Thomas Huth
2022-07-20 10:44 ` Daniel P. Berrangé
2022-07-20 11:00   ` Roman Kagan
2022-07-20 11:04     ` Daniel P. Berrangé
2022-07-20 11:48       ` Roman Kagan
2022-07-25 13:59       ` Vladimir Sementsov-Ogievskiy
2022-07-27  8:26         ` Igor Mammedov
2022-07-20 13:21     ` Mark Cave-Ayland
2022-07-21 14:28       ` Roman Kagan
2022-07-21 15:51         ` Mark Cave-Ayland
2022-07-21 15:56           ` Daniel P. Berrangé
2022-07-21 16:05             ` Mark Cave-Ayland
2022-07-21 16:10               ` Roman Kagan
2022-07-21 16:12               ` Daniel P. Berrangé
2022-07-22  7:28               ` Thomas Huth [this message]
2022-07-22 16:36                 ` Mark Cave-Ayland

Reply instructions:

You may reply publicly 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=670414db-8d17-63d4-5b20-fcfcd0590553@redhat.com \
    --to=thuth@redhat.com \
    --cc=arei.gonglei@huawei.com \
    --cc=berrange@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rvkagan@yandex-team.ru \
    --cc=vsementsov@yandex-team.ru \
    --cc=yc-core@yandex-team.ru \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.