From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: Re: [PATCH v3 2/6] suspend: switch acpi s3 to new infrastructure. Date: Thu, 9 Feb 2012 13:14:19 +0200 Message-ID: <20120209111419.GG18866@redhat.com> References: <1328698819-31269-1-git-send-email-kraxel@redhat.com> <1328698819-31269-3-git-send-email-kraxel@redhat.com> <20120209085343.GC18866@redhat.com> <4F33A541.6080401@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <4F33A541.6080401@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org To: Gerd Hoffmann Cc: xen-devel@lists.xensource.com, qemu-devel@nongnu.org List-Id: xen-devel@lists.xenproject.org On Thu, Feb 09, 2012 at 11:51:45AM +0100, Gerd Hoffmann wrote: > Hi, > > >> Pretend that resume was caused by power button */ > >> pm1a->sts |= > >> (ACPI_BITMASK_WAKE_STATUS | ACPI_BITMASK_POWER_BUTTON_STATUS); > > Here we should report real reason for a wakeup (if it can be reported in > > mp1sts that is). > > These are available I guess? > Yes. Once those defines had the same names as ACPI spec, but some kind soul renamed them to be more "descriptive". So forgive me if I will use names that you actually can lookup in ACPI spec. > /* PM1x_STS */ > #define ACPI_BITMASK_TIMER_STATUS 0x0001 > #define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010 > #define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020 > #define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100 > #define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200 > #define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400 > #define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000 /* ACPI 3.0 */ > #define ACPI_BITMASK_WAKE_STATUS 0x8000 > Only three of those are actually wakeup source related: PWRBTN_STS (bit 8) RTC_STS (bit 10) PCIEXP_WAKE_STS (bit 14) And of course if system was awoken WAK_STS (bit 15) should be set too. > What do they mean? How would the rtc wakeup be tagged? Set > ACPI_BITMASK_RT_CLOCK_STATUS? Anything I can use for ps/2 kbd/mouse > wakeup? What do you suggest to do when there is nothing usable (such as > qemu monitor command which simply doesn't exist on real hardware)? > RTC will set RTC_STS. In other reply I suggested to use PWRBTN_STS for monitor command wakeup. Other devices are more complicated :( They have to provide _PRW (Power Resources for Wake) method in the device description in DSDT. This method, among other things, specifies which bit in GPE (and which GPE) correspond to the device. -- Gleb.