From: Eric Song <EricSong@zhaoxin.com>
To: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: Tiger Liu <TigerLiu@zhaoxin.com>
Subject: PCI bus do 2 Enumeration when 2 root bridges under 1 host bridge
Date: Thu, 17 Aug 2017 04:50:21 +0000 [thread overview]
Message-ID: <41761EF483901349B2FAB9B696E9F0B905066FC3@ZXBJMBX01.zhaoxin.com> (raw)
Hi, experts
If there is 2 root bridges under 1 host bridge on the PCI hierarchy, whether EDK2 Pci bus driver can support it ? the answer is YES, but some confused things in it.
1) On BDS phase, ConnectController is called for every root bridge, so Pci bus start() will be called for every root bridge.
VisitAllInstancesOfProtocol (&gEfiPciRootBridgeIoProtocolGuid, ConnectRootBridge, NULL);
2) In PCI bus driver, Pci start() will do enumeration on the entire host bridge
PciEnumerator()->PciHostBridgeEnumerator->”PciResAlloc->GetNextRootBridge()”
That means Do enumeration on entire host bridge for every one root bridge. So there are 2 enumerations on entire host bridge for my PCI hierarchy.
What I confused is why do 2 enumerations on entire host bridge by every one root bridge. Since BDS connect controller by one root bridge , Pci bus driver should enumerate corresponding root bridge, But it do the entire host bridge which is the parent of the root bridge.
Or BDS should connect controller by one host bridge, then it will match the pci bus driver ‘s enumeration policy.
In a word, I think it is illogical for current EDKII code.
Well, the current code execution will do 2 enumerations on host bridge for 2 root bridges under 1 host bridge. Even though 2rd enumeration would be not full enumeration, but do PciEnumeratorLight(), I think it is still not necessary. Whether there is any side effect ? In another word, current PCI bus driver enumeration can’t be Suitable for 2 root bridges under 1 host bridge or not? It indeed match the PCI hierarchy of 2 host bridges and 1 root bridge under 1 host bridge.
Thanks
Eric
保密声明:
本邮件含有保密或专有信息,仅供指定收件人使用。严禁对本邮件或其内容做任何未经授权的查阅、使用、复制或转发。
CONFIDENTIAL NOTE:
This email contains confidential or legally privileged information and is for the sole use of its intended recipient. Any unauthorized review, use, copying or forwarding of this email or the content of this email is strictly prohibited.
next reply other threads:[~2017-08-17 4:48 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-17 4:50 Eric Song [this message]
2017-08-17 9:18 ` PCI bus do 2 Enumeration when 2 root bridges under 1 host bridge Laszlo Ersek
2017-08-17 9:37 ` 答复: " Eric Song
[not found] ` <734D49CCEBEEF84792F5B80ED585239D5B9F07CC@SHSMSX104.ccr.corp.intel.com>
2017-08-17 10:59 ` Eric Song
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-list 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=41761EF483901349B2FAB9B696E9F0B905066FC3@ZXBJMBX01.zhaoxin.com \
--to=devel@edk2.groups.io \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox