Re: [patch] x86: Introduce BOOT_EFI and BOOT_CF9 into the reboot sequence loop

From: Matthew Garrett
Date: Fri Feb 28 2014 - 00:56:40 EST


On Fri, Feb 28, 2014 at 01:22:37PM +0800, Li, Aubrey wrote:
> On 2014/2/28 12:56, Matthew Garrett wrote:
> > EFI reboot is still somewhat unreliable - it may be safe after the
> > recent patches to provide a 1:1 mapping.
>
> So it's acceptable to put EFI in the default list.

Probably, once we've got those patches landed (I've lost track of
whether they're in 3.13 or aimed at 3.14)

> > CF9 is, as far as I know, not part of any spec, so it seems like a bad
> > idea to put it in the default list.
>
> Any hurt known if put it in the default list?

Mm. Not all x86 platforms support cf8/cf9 (Moorestown, for instance) and
so it's theoretically possible that they'd put some different hardware
there instead. But then, Moorestown probably has its own reboot code, so
that may not matter?

> >
> > What do the ACPI reboot vectors look like on these systems?
>
> Reset register address: 0xCF9
> Value to cause reset: 0x6

Huh. But that's almost exactly what the PCI reboot code would do. Why
does the PCI method work but the ACPI one fail? Does it really depend on
ORing the original value with the reset value? Or is the timing just
somehow marginal?

> > This is definitely incorrect. The ACPI write *must* occur twice in order
> > to be effective on various systems. EFI shouldn't be attempted until
> > after the second ACPI write.
> >
>
> Do we have any spec mentioned that?

Nope. This is entirely unspecified, it's just how things work - several
vendors use cf9 for the ACPI reboot vector, and there have to be two
writes to cf9 to trigger the reboot. Windows attempts the write twice,
and as a result things work.

--
Matthew Garrett | mjg59@xxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/