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

Zhao Yakui
2008-11-14T01:21:23Z

On Fri, 2008-11-14 at 01:42 +0800, H. Peter Anvin wrote:
> Zhao Yakui wrote:
> > I am sorry that I don't describe it very clearly. The value written into
> > 0xCF9 I/O port maybe vary on different chipset vendors. In such case it
> > is difficult to write the generic 0xCF9 reboot mechanism. If the same
> > standard about 0xCF9 I/O port is followed by most chipset vendors, it
> > will be OK.
>
> What my patch does is:
>
> u8 cf9 = inb(0xcf9) & ~6;
> outb(cf9|2, 0xcf9); /* Request hard reset */
> udelay(50);
> outb(cf9|6, 0xcf9); /* Actually do the reset */
> udelay(50);
>
> > I have a laptop on which the ACPI reboot mechanism is not supported.(The
> > reset flag is not present). But there exists the definition of RESET_REG
> > & RESET_VALUE. The RESET_REG is 0xCF9 I/O port. (The box is based on
> > Intel i915 chipsets)
> > When writing 0x06 to 0xCF9 I/O port the box will hang and can't be
> > rebooted. (Hardware reset will fail)
> > When writing 0x04 to 0xCF9 I/O port the box can be
> > rebooted.(Software reset is OK)
I do the test as required. First the 0x02 is written to 0xCF9 I/O port.
The return value by reading the 0xCF9 I/O port is 0x02. Then the 0x06 is
written to the 0xCF9 I/O port. The screen becomes black but the box
can't be rebooted.
> What happens if you write 0x02 first, and *then* write 0x06?
>
> More details about this laptop, please? Also, what is RESET_REG and
> RESET_VALUE defined as?
The RESET_REG is 0xCF9 I/O port.
The RESET_VALUE is 0x06. The above value is obtained from the FADT. This
laptop is the Thinkpad R52 based on Intel i915 chipset.
Thanks.
>
> -hpa