[edk2-devel] IsaBus driver's usage

Nate DeSimone nathaniel.l.desimone at intel.com
Fri May 29 07:07:43 UTC 2020


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 at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Tiger Liu(BJ-RD)
Sent: Thursday, May 28, 2020 12:58 AM
To: devel at 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


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#60439): https://edk2.groups.io/g/devel/message/60439
Mute This Topic: https://groups.io/mt/74517611/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20200529/e7291e12/attachment.htm>


More information about the edk2-devel-archive mailing list