From: Yijing Wang <wangyijing@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: Jon Mason <jdmason@kudzu.us>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
Hanjun Guo <guohanjun@huawei.com>,
Jiang Liu <jiang.liu@huawei.com>
Subject: Re: [PATCH v5 1/2] PCI: fix the only slot identification in pcie_find_smpss()
Date: Tue, 20 Aug 2013 20:23:15 +0800 [thread overview]
Message-ID: <52135FB3.3090700@huawei.com> (raw)
In-Reply-To: <20130820044416.GA22188@google.com>
>> 3. (hotplug bridge)
>> root port ----Upstream port---->Downstream port A -------->[slot]
>> |
>> |Downstream port B -------->[slot] ?
>>
>> This topo is common, but DP A is not directly connected to root
>> port, so the original patch can not cover this case.
>
> This is a very good observation: only Root Ports and Downstream
> Ports can have slots. That means the following existing code:
>
> if (dev->is_hotplug_bridge &&
> ((dev->bus->self &&
> pci_pcie_type(dev->bus->self) != PCI_EXP_TYPE_ROOT_PORT)))
>
> doesn't make sense. "dev->bus->self" is the bridge immediately
> upstream from "dev". If "dev" is a Port with a slot, it must be
> either a Root Port or a Downstream Port. A Root Port *has* no
> upstream bridge, and the bridge immediately upstream from a
> Downstream Port is always an Upstream Port.
>
> So we should just write this instead:
>
> if (dev->is_hotplug_bridge &&
> pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM)))
> *smpss = 0;
>
> That means we'll set MPS=128 for Downstream Ports leading to
> slots, which is safe for anything we can plug in.
I agree, Jon, what do you think?
And I test this code in my machine, result is ok.
pcieport 0000:40:07.0: PCI-E Max Payload Size set to 256/ 256 (was 256), Max Read Rq 128
pci 0000:46:00.0: PCI-E Max Payload Size set to 256/ 512 (was 128), Max Read Rq 512
pci 0000:46:00.1: PCI-E Max Payload Size set to 256/ 512 (was 128), Max Read Rq 512
pcieport 0000:40:07.0: PCI-E Max Payload Size set to 256/ 256 (was 256), Max Read Rq 128
pci 0000:46:00.0: PCI-E Max Payload Size set to 256/ 512 (was 256), Max Read Rq 512
pci 0000:46:00.1: PCI-E Max Payload Size set to 256/ 512 (was 256), Max Read Rq 512
>
> Apparently we don't enforce MPS=128 for Root Ports because we
> assume either (a) there is no peer-to-peer traffic, or (b)
> peer-to-peer traffic is not routed between Root Ports. I don't
> know if those are valid assumptions, but you're not changing
> anything there, so I guess we can keep them.
>
> I don't think we should look at the dev->bus->devices list at all
> because that only applies to the current configuration and
> doesn't account for any future hot-plugs.
I think so.
If Jon agree too , I will update this patch.
>
>> If DP B is
>> not exist. there is only one Downstream port A, like:
>
>>
>> (hotplug bridge)
>> root port ----Upstream port--->Downstream port A -------->[slot]
>>
>> In this case, we can also configure mps after a pcie card
>> inserted into slot, because although the system is running,
>> because root port UP port DP port A and slot are not running.
>> But this case is rare.
>
>> So, Jon, does your original patch want to cover the case 1 or case 2 ?
>> For case 1, we can remove the list_is_singular() check.
>> For case 2, do you have some example hardware platform ?
>> Or there are other pcie topos not exist here?
>>
>> Thanks!
>> Yijing.
>
> .
>
--
Thanks!
Yijing
next prev parent reply other threads:[~2013-08-20 12:23 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-15 2:18 [PATCH v5 0/2] update device mps Yijing Wang
2013-08-15 2:18 ` [PATCH v5 1/2] PCI: fix the only slot identification in pcie_find_smpss() Yijing Wang
2013-08-16 22:17 ` Bjorn Helgaas
2013-08-19 2:49 ` Yijing Wang
2013-08-19 17:42 ` Jon Mason
2013-08-19 18:17 ` Bjorn Helgaas
2013-08-19 19:39 ` Bjorn Helgaas
2013-08-19 23:45 ` Jon Mason
2013-08-20 2:55 ` Yijing Wang
2013-08-20 4:44 ` Bjorn Helgaas
2013-08-20 12:23 ` Yijing Wang [this message]
2013-08-20 20:12 ` Bjorn Helgaas
2013-08-19 23:34 ` Jon Mason
2013-08-15 2:18 ` [PATCH v5 2/2] PCI: update device mps when doing pci hotplug Yijing Wang
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=52135FB3.3090700@huawei.com \
--to=wangyijing@huawei.com \
--cc=bhelgaas@google.com \
--cc=guohanjun@huawei.com \
--cc=jdmason@kudzu.us \
--cc=jiang.liu@huawei.com \
--cc=linux-pci@vger.kernel.org \
/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.