Hi Nate:
Got it.
Thanks
发件人: devel@edk2.groups.io <devel@edk2.groups.io>
代表 Nate DeSimone
发送时间: 2020年5月29日 15:08
收件人: devel@edk2.groups.io; Tiger Liu(BJ-RD) <TigerLiu@zhaoxin.com>
主题: Re: [edk2-devel] IsaBus driver's usage
Hi Tiger,
I believe you are assuming that IsaBusDxe and SioDxe do the same thing, that is not the case. These two drivers are actually very different they do very different things.
Consider a 15 year old PC. Most PC’s from that era had an ICH (the older terminology for PCH) with both parallel PCI and LPC controllers. A consequence of this design is legacy PCI supported subtractive decoding… which
allowed OEMs to build systems with a PCI-to-ISA bridge device installed on the PCI bus… making it possible to build motherboards with ISA slots. This introduced one difficulty however, the LPC controller in the PCH is also a PCI-to-ISA bridge device, so you
ended up having 2 PCI-to-ISA bridges in the system! Lets say your LPC bus has a Super I/O chip with a COM port, what happens if the user plugs a ISA serial card into an ISA slot? Does I/O port 0x3F8 get routed to the LPC controller or to the PCI controller?
That is what IsaBusDxe is for, it arbitrates between multiple PCI-to-ISA bridges.
About 10 years ago, the parallel PCI bus was removed, however at the same time a “Subtractive Decode Agent” was added to the PCH that allowed a single PCIe root port to be designated as being capable of subtractive decode.
This allowed OEMs to build systems with a PCIe-to-PCI bridge… connected to a PCI-to-ISA bridge and still technically build systems with ISA slots. Starting with Sky Lake however, the subtractive decode agent was removed, which finally broke compatibility with
the 1981 IBM PC. After Sky Lake, there can only be one PCI-to-ISA bridge in the system, the LPC controller. So there hasn’t really been a need for the arbitration driver anymore.
SioDxe on the other hand is a generic Super I/O driver. Most new PCs today still have vestigial remnants of the Super I/O as part of their EC (embedded controller.) Specifically, most ECs support both the PS/2 and serial
COM ports that were once part of Super I/O chips. Most ECs use PS/2 as the interface for the scan matrix keyboard on laptops. SioDxe provides the protocols that allow PciSioSerialDxe and Ps2KeyboardDxe to use these EC functions.
Thanks,
Nate
From:
devel@edk2.groups.io <devel@edk2.groups.io>
On Behalf Of Tiger Liu(BJ-RD)
Sent: Thursday, May 28, 2020 12:58 AM
To: devel@edk2.groups.io
Subject: [edk2-devel] IsaBus driver's usage
Hi, expert:
I have a question about IsaBus driver.
There is a isa bus driver in MdeModulePkg\Bus\Isa\IsaBusDxe.
But i find nobody use it anymore.
Based on current edk2-platform samples, they just use SioDxe driver plus Ps2Keyboard driver, not use IsaBus driver anymore.
So when to use IsaBus driver?
Thanks