Can you get your hands (I am asking because I've yet to try) on the chipset specs? IBM used to sell the technical reference manuals, but I don't beleive most PC/motherboard vendors do, do they? I like the idea of this because it may open up "special stuff" that you can take advantage of for your own OS.Brendan wrote:Yes. For most (all?) chipsets there's some interesting things to play with.
There's usually some registers in the memory host controller that allow parts of the region from 0x000A0000 and 0x000FFFFF to be set so that reads and/or writes are forwarded to the PCI bus, to RAM, etc. For example, imagine there's a PCI/AGP video card with a ROM mapped to 0x000C0000. If you disable this ROM (using the card's PCI configuration space) then you still can't access the RAM at this address until you tell the memory host controller that reads/writes for the area should both go to RAM (instead of the PCI bus).
Then there's things like the PCI IRQ router, serial port and parallel port I/O base addresses, floppy controller I/O base address, flash BIOS support, power management, hotplug RAM, hotlpug PCI devices, etc. For Intel chipsets there's a complete TCO (Total Cost of Ownership) system for monitoring the system (including watchdog timer, heartbeat, remote/ethernet monitoring, etc). For most onboard devices, the chipset has some control over which I/O APIC input the device is connected to, which can be useful for avoiding IRQ sharing (remembering that the PCI IRQ router only effects PIC connections).
Specifications (like ACPI) cover most of this, but not all of it.
The idea is to provide a way of supporting all of this (with or without ACPI), while providing somewhere where chipset bugs can be worked-around, etc. Despite this, it's very likely that most of my "chipset drivers" will do almost nothing or just use generic ACPI...
I think it is do-able, to support it without ACPI. This coming from a hardware guy (hobby software guy).
Interesting stuff! There is always something new to learn, eh?