switch (register_id) {
        case ACPI_REGISTER_PM1_STATUS:  /* PM1 A/B: 16-bit access each */
-
-               /* Perform a read first to preserve certain bits (per ACPI spec) */
-
-               status = acpi_hw_read_multiple(&read_value,
-                                              &acpi_gbl_xpm1a_status,
-                                              &acpi_gbl_xpm1b_status);
-               if (ACPI_FAILURE(status)) {
-                       goto exit;
-               }
-
-               /* Insert the bits to be preserved */
-
-               ACPI_INSERT_BITS(value, ACPI_PM1_STATUS_PRESERVED_BITS,
-                                read_value);
-
-               /* Now we can write the data */
+               /*
+                * Handle the "ignored" bit in PM1 Status. According to the ACPI
+                * specification, ignored bits are to be preserved when writing.
+                * Normally, this would mean a read/modify/write sequence. However,
+                * preserving a bit in the status register is different. Writing a
+                * one clears the status, and writing a zero preserves the status.
+                * Therefore, we must always write zero to the ignored bit.
+                *
+                * This behavior is clarified in the ACPI 4.0 specification.
+                */
+               value &= ~ACPI_PM1_STATUS_PRESERVED_BITS;
 
                status = acpi_hw_write_multiple(value,
                                                &acpi_gbl_xpm1a_status,