Re: [PATCH 10/10] x86, ACPI: default to reboot via ACPI (again)

Eric W. Biederman
2008-11-13T04:15:31Z

Zhao Yakui <yakui.zhao@intel.com> writes:

> Peter Anvin suggests that OS attempt reboot via 0xCF9 port if avaiable.
> This is not very good. 0xCF9 I/O port is the reset control register
> defined in Intel ICH6/7/8/9 chipset. In theory it is effective for Intel
> chipset. Maybe it is not applied for other chipset(For example: Nvidia,
> ALI, VIA).

Looking at the coreboot source. It is indeed defined for Nvidia, SIS,
AMD and several others.

A lot of boards use:
outb(0x02, 0xcf9);
outb(0x06, 0xcf9);

Instead of just writing a plain 6. I think at least on some machines
there is a requirement for a low to hight transition.

> There exists a laptop in bug 11942, in which the 0xCF9 I/O
> port is defined as the RESET_REG. But unfortunately it can't be rebooted
> Via 0xCF9 I/O port.
> In fact although the 0xCF9 is defined for Intel ICH chipset, it
> doesn't mean that all the box based on ICH chipset can be rebooted via
> 0xCF9 I/O port. For example: we have a laptop based on intel ICH6
> chipset that can't be rebooted by writing the 0x06 to 0xCF9 I/O port.

Right. The only scary question is will a motherboard hang if you write
to 0xcf9. If we don't know of an example where writing to 0xcf9 will prevent
us from getting to the next reset method then adding a generic 0xcf9 is
safe.

If we are totally paranoid we can build of a whitelist of motherboards
where writing to 0xcf9 works. By reading and checkup on the chipset
docs, but don't make the mistake of thinking 0xcf9 is an Intel only
thing.

Eric