Commit 660e8ec7 authored by Zhu Guihua's avatar Zhu Guihua Committed by Michael S. Tsirkin
Browse files

acpi: fix "Memory device control fields" register



0 bit in Memory device control fields must be cleared before writing to
register. But now this field isn't cleared when other fields are written.

To solve this bug, This patch fixes UpdateRule to WriteAsZeros in "Memory
device control fields" register.

Reviewed-by: default avatarIgor Mammedov <imammedo@redhat.com>
Signed-off-by: default avatarZhu Guihua <zhugh.fnst@cn.fujitsu.com>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent af509897
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -31,7 +31,10 @@ Memory hot-plug interface (IO port 0xa00-0xa17, 1-4 byte access):
      [0xc-0x13] reserved, writes into it are ignored
      [0x14] Memory device control fields
          bits:
              0: reserved, OSPM must clear it before writing to register
              0: reserved, OSPM must clear it before writing to register.
                 Due to BUG in versions prior 2.4 that field isn't cleared
                 when other fields are written. Keep it reserved and don't
                 try to reuse it.
              1: if set to 1 clears device insert event, set by OSPM
                 after it has emitted device check event for the
                 selected memory device
+1 −1
Original line number Diff line number Diff line
@@ -872,7 +872,7 @@ build_ssdt(GArray *table_data, GArray *linker,
        aml_append(scope, field);

        field = aml_field(stringify(MEMORY_HOTPLUG_IO_REGION), aml_byte_acc,
                          aml_preserve);
                          aml_write_as_zeros);
        aml_append(field, aml_reserved_field(160 /* bits, Offset(20) */));
        aml_append(field, /* 1 if enabled, read only */
            aml_named_field(stringify(MEMORY_SLOT_ENABLED), 1));