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

Zhao Yakui
2008-11-13T03:35:17Z

On Thu, 2008-11-13 at 11:18 +0800, H. Peter Anvin wrote:
> Zhao Yakui wrote:
> >
> > 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). 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.
> >
>
> Port CF9 isn't universal, but other vendors are increasingly
> implementing it -- I know ALi are in their more recent chipsets. Either
> way, I agree that we need to figure out how to get ACPI to work, but CF9
> is a low risk fallback before going to the KBC.
0xCF9 I/O port is applied for most laptops based on intel ICH6/7/8/9
chipset as it is a reset control register defined in the ICH chipset.
But it is not applied for some laptops. After the 0xCF9 I/O port is
tried, maybe the system already hangs and it can't fall back to
KBD/tripple fault mode.

In fact the 0xCF9 I/O port is defined as RESET_REG port on some laptops
on which the acpi reboot mechanism is supported. If acpi reboot is not
supported on the box, we had better not try the reboot via 0xCF9 I/O
port as we can't know whether the 0xCF9 I/O is supported on the box. At
the same time we don't know the proper value that should be written into
0xCF9 I/O port although the 0xCF9 I/O port is supported.
For example on intel chipset:
Sometimes 0x04 is enough.
Sometimes 0x06 is enough.
Sometimes 0x0e is enough.

Thanks.
>
> -hpa