[PATCH] s3: add a "s3-hybrid" option to enable hybrid sleep for s3

alex.hung at canonical.com alex.hung at canonical.com
Mon Mar 24 11:27:38 UTC 2014


Thanks for reminding. Will do it tomorrow.

Sent from my iPad

> On Mar 24, 2014, at 7:08 PM, Colin Ian King <colin.king at canonical.com> wrote:
> 
>> On 24/03/14 04:53, Alex Hung wrote:
>> Signed-off-by: Alex Hung <alex.hung at canonical.com>
>> ---
>> src/acpi/s3/s3.c | 21 ++++++++++++++++-----
>> 1 file changed, 16 insertions(+), 5 deletions(-)
>> 
>> diff --git a/src/acpi/s3/s3.c b/src/acpi/s3/s3.c
>> index 6e1b4e4..e5b6ef1 100644
>> --- a/src/acpi/s3/s3.c
>> +++ b/src/acpi/s3/s3.c
>> @@ -29,9 +29,10 @@
>> #include <unistd.h>
>> #include <time.h>
>> 
>> -#define PM_SUSPEND    "pm-suspend"
>> -#define FWTS_SUSPEND    "FWTS_SUSPEND"
>> -#define FWTS_RESUME    "FWTS_RESUME"
>> +#define PM_SUSPEND        "pm-suspend"
>> +#define PM_SUSPEND_HYBRID    "pm-suspend-hybrid"
>> +#define FWTS_SUSPEND        "FWTS_SUSPEND"
>> +#define FWTS_RESUME        "FWTS_RESUME"
>> 
>> static int  s3_multiple = 1;        /* number of s3 multiple tests to run */
>> static int  s3_min_delay = 0;        /* min time between resume and next suspend */
>> @@ -44,6 +45,7 @@ static int  s3_device_check_delay = 15;    /* Time to sleep after waking up and the
>> static bool s3_min_max_delay = false;
>> static float s3_suspend_time = 15.0;    /* Maximum allowed suspend time */
>> static float s3_resume_time = 15.0;    /* Maximum allowed resume time */
>> +static bool s3_hybrid = false;
>> 
>> static int s3_init(fwts_framework *fw)
>> {
>> @@ -78,8 +80,13 @@ static int s3_do_suspend_resume(fwts_framework *fw,
>>        fwts_hwinfo_get(fw, &hwinfo1);
>> 
>>    /* Format up pm-suspend command with optional quirking arguments */
>> -    if ((command = fwts_realloc_strcat(NULL, PM_SUSPEND)) == NULL)
>> -        return FWTS_OUT_OF_MEMORY;
>> +    if (s3_hybrid) {
>> +        if ((command = fwts_realloc_strcat(NULL, PM_SUSPEND_HYBRID)) == NULL)
>> +            return FWTS_OUT_OF_MEMORY;
>> +    } else {
>> +        if ((command = fwts_realloc_strcat(NULL, PM_SUSPEND)) == NULL)
>> +            return FWTS_OUT_OF_MEMORY;
>> +    }
>> 
>>    if (s3_quirks) {
>>        if ((command = fwts_realloc_strcat(command, " ")) == NULL)
>> @@ -494,6 +501,9 @@ static int s3_options_handler(fwts_framework *fw, int argc, char * const argv[],
>>        case 9:
>>            s3_resume_time = atof(optarg);
>>            break;
>> +        case 10:
>> +            s3_hybrid = true;
>> +            break;
>>        }
>>    }
>>    return FWTS_OK;
>> @@ -510,6 +520,7 @@ static fwts_option s3_options[] = {
>>    { "s3-device-check-delay", "", 1, "Sleep N seconds before we run a device check after waking up from suspend. Default is 15 seconds, e.g. --s3-device-check-delay=20" },
>>    { "s3-suspend-time",    "", 1, "Maximum expected suspend time in seconds, e.g. --s3-suspend-time=3.5" },
>>    { "s3-resume-time",    "", 1, "Maximum expected resume time in seconds, e.g. --s3-resume-time=5.1" },
>> +    { "s3-hybrid",        "", 0, "Run S3 with hybrid sleep, i.e. saving system states as S4 does." },
>>    { NULL, NULL, 0, NULL }
>> };
> 
> Also the fwts-tests need updating, e.g. arg-help-0001 as you have added
> a new --s3-hybrid option



More information about the fwts-devel mailing list