[SeaBIOS] [RFC PATCH v2 03/21] acpi-dsdt: Implement functions for memory hotplug
Vasilis Liaskovitis
vasilis.liaskovitis at profitbricks.com
Fri Jul 20 10:48:27 CEST 2012
On Tue, Jul 17, 2012 at 03:23:00PM +0800, Wen Congyang wrote:
> > + Method(MESC, 0) {
> > + // Local5 = active memdevice bitmap
> > + Store (MES, Local5)
> > + // Local2 = last read byte from bitmap
> > + Store (Zero, Local2)
> > + // Local0 = memory device iterator
> > + Store (Zero, Local0)
> > + While (LLess(Local0, SizeOf(MEON))) {
> > + // Local1 = MEON flag for this memory device
> > + Store(DerefOf(Index(MEON, Local0)), Local1)
> > + If (And(Local0, 0x07)) {
> > + // Shift down previously read bitmap byte
> > + ShiftRight(Local2, 1, Local2)
> > + } Else {
> > + // Read next byte from memdevice bitmap
> > + Store(DerefOf(Index(Local5, ShiftRight(Local0, 3))), Local2)
> > + }
> > + // Local3 = active state for this memory device
> > + Store(And(Local2, 1), Local3)
> > +
> > + If (LNotEqual(Local1, Local3)) {
>
> There are two ways to hot remove a memory device:
> 1. dimm_del
> 2. echo 1 >/sys/bus/acpi/devices/PNP0C80:XX/eject
>
> In the 2nd case, we cannot hotplug this memory device again,
> because both Local1 and Local3 are 1.
>
> So, I think MEON flag for this meory device should be set to 0 in method _EJ0
> or implement method _PS3 for memory device.
good catch. Both internal seabios state (MEON) and the machine qemu bitmap
(mems_sts in hw/acpi_piix4.c) have to be updated when the ejection comes from
OSPM action. I will implement a _PS3 method that updates the MEON flag and also
signals qemu to change the mems_sts bitmap.
thanks,
- Vasilis
More information about the SeaBIOS
mailing list