Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Apr 2009 18:58:31 +0300
From:      Andriy Gapon <avg@freebsd.org>
To:        freebsd-acpi@freebsd.org
Subject:   run resume code only for S1-S4 states
Message-ID:  <49E4B2A7.3020302@freebsd.org>
In-Reply-To: <49DF3CA4.1090309@freebsd.org>
References:  <49DB639A.4090504@icyb.net.ua> <49DCF5C2.60805@root.org> <49DDF906.8090400@icyb.net.ua> <49DF3CA4.1090309@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------040608080302050903060209
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit


Guys,
could you please review the attached patch?

Its main idea is to make control flow of acpi_EnterSleepState similar
to that of acpi_ReqSleepState: reject invalid state parameter immediately and
handle special S5 as early as possible. Primary purpose is to avoid running resume
code when it is not necessary - e.g. shutdown_nice() typically returns immediately
after initiating a graceful shutdown by sending a signal to init.

As such, S5 is handled right after checking/disabling re-entry.
switch becomes unneeded, because all remaining possibilities are grouped
into a single case. I decided to use do-while(0) statement in the place of the
switch for the following reasons:
1. minimize diff by preserving indentation
2. minimize diff by preserving control flow that depends on break statement
But I am not sure how this while(0) corresponds with style(9), I couldn't find any
reference in the manual page.

There is also a concern about calling shutdown_nice() outside of the Giant lock
and binding to CPU 0. I am not sure about the pre-requisites for this function.
John, maybe you could help me here?

-- 
Andriy Gapon


--------------040608080302050903060209
Content-Type: text/plain;
 name="acpi_s5.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="acpi_s5.diff"

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvYWNwaWNhL2FjcGkuYyBiL3N5cy9kZXYvYWNwaWNhL2Fj
cGkuYwppbmRleCA1MGI4NGE1Li5hYzY1NGQyIDEwMDY0NAotLS0gYS9zeXMvZGV2L2FjcGlj
YS9hY3BpLmMKKysrIGIvc3lzL2Rldi9hY3BpY2EvYWNwaS5jCkBAIC0yNDgyLDYgKzI0ODIs
OSBAQCBhY3BpX0VudGVyU2xlZXBTdGF0ZShzdHJ1Y3QgYWNwaV9zb2Z0YyAqc2MsIGludCBz
dGF0ZSkKIAogICAgIEFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKChjaGFyICopKHVpbnRwdHJf
dClfX2Z1bmNfXywgc3RhdGUpOwogCisgICAgaWYgKHN0YXRlIDwgQUNQSV9TVEFURV9TMSB8
fCBzdGF0ZSA+IEFDUElfU1RBVEVfUzUpCisJcmV0dXJuX0FDUElfU1RBVFVTIChBRV9CQURf
UEFSQU1FVEVSKTsKKwogICAgIC8qIFJlLWVudHJ5IG9uY2Ugd2UncmUgc3VzcGVuZGluZyBp
cyBub3QgYWxsb3dlZC4gKi8KICAgICBzdGF0dXMgPSBhY3BpX3NsZWVwX2Rpc2FibGUoc2Mp
OwogICAgIGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewpAQCAtMjQ4OSw2ICsyNDkyLDE1
IEBAIGFjcGlfRW50ZXJTbGVlcFN0YXRlKHN0cnVjdCBhY3BpX3NvZnRjICpzYywgaW50IHN0
YXRlKQogCXJldHVybiAoc3RhdHVzKTsKICAgICB9CiAKKyAgICBpZiAoc3RhdGUgPT0gQUNQ
SV9TVEFURV9TNSkgeworCS8qCisJICogU2h1dCBkb3duIGNsZWFubHkgYW5kIHBvd2VyIG9m
Zi4gIFRoaXMgd2lsbCBjYWxsIHVzIGJhY2sgdGhyb3VnaCB0aGUKKwkgKiBzaHV0ZG93biBo
YW5kbGVycy4KKwkgKi8KKwlzaHV0ZG93bl9uaWNlKFJCX1BPV0VST0ZGKTsKKwlyZXR1cm5f
QUNQSV9TVEFUVVMgKEFFX09LKTsKKyAgICB9CisKICNpZmRlZiBTTVAKICAgICB0aHJlYWRf
bG9jayhjdXJ0aHJlYWQpOwogICAgIHNjaGVkX2JpbmQoY3VydGhyZWFkLCAwKTsKQEAgLTI1
MDIsMTEgKzI1MTQsNyBAQCBhY3BpX0VudGVyU2xlZXBTdGF0ZShzdHJ1Y3QgYWNwaV9zb2Z0
YyAqc2MsIGludCBzdGF0ZSkKICAgICBtdHhfbG9jaygmR2lhbnQpOwogCiAgICAgc2xwX3N0
YXRlID0gQUNQSV9TU19OT05FOwotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIEFD
UElfU1RBVEVfUzE6Ci0gICAgY2FzZSBBQ1BJX1NUQVRFX1MyOgotICAgIGNhc2UgQUNQSV9T
VEFURV9TMzoKLSAgICBjYXNlIEFDUElfU1RBVEVfUzQ6CisgICAgZG8gewogCXN0YXR1cyA9
IEFjcGlHZXRTbGVlcFR5cGVEYXRhKHN0YXRlLCAmVHlwZUEsICZUeXBlQik7CiAJaWYgKHN0
YXR1cyA9PSBBRV9OT1RfRk9VTkQpIHsKIAkgICAgZGV2aWNlX3ByaW50ZihzYy0+YWNwaV9k
ZXYsCkBAIC0yNTY5LDIwICsyNTc3LDcgQEAgYWNwaV9FbnRlclNsZWVwU3RhdGUoc3RydWN0
IGFjcGlfc29mdGMgKnNjLCBpbnQgc3RhdGUpCiAJICAgIH0KIAl9CiAJc2xwX3N0YXRlID0g
QUNQSV9TU19TTEVQVDsKLQlicmVhazsKLSAgICBjYXNlIEFDUElfU1RBVEVfUzU6Ci0JLyoK
LQkgKiBTaHV0IGRvd24gY2xlYW5seSBhbmQgcG93ZXIgb2ZmLiAgVGhpcyB3aWxsIGNhbGwg
dXMgYmFjayB0aHJvdWdoIHRoZQotCSAqIHNodXRkb3duIGhhbmRsZXJzLgotCSAqLwotCXNo
dXRkb3duX25pY2UoUkJfUE9XRVJPRkYpOwotCXN0YXR1cyA9IEFFX09LOwotCWJyZWFrOwot
ICAgIGNhc2UgQUNQSV9TVEFURV9TMDoKLSAgICBkZWZhdWx0OgotCXN0YXR1cyA9IEFFX0JB
RF9QQVJBTUVURVI7Ci0JYnJlYWs7Ci0gICAgfQorICAgIH0gd2hpbGUgKDApOwogCiAgICAg
LyoKICAgICAgKiBCYWNrIG91dCBzdGF0ZSBhY2NvcmRpbmcgdG8gaG93IGZhciBhbG9uZyB3
ZSBnb3QgaW4gdGhlIHN1c3BlbmQKQEAgLTI2MDksOCArMjYwNCw3IEBAIGFjcGlfRW50ZXJT
bGVlcFN0YXRlKHN0cnVjdCBhY3BpX3NvZnRjICpzYywgaW50IHN0YXRlKQogI2VuZGlmCiAK
ICAgICAvKiBBbGxvdyBhbm90aGVyIHNsZWVwIHJlcXVlc3QgYWZ0ZXIgYSB3aGlsZS4gKi8K
LSAgICBpZiAoc3RhdGUgIT0gQUNQSV9TVEFURV9TNSkKLQl0aW1lb3V0KGFjcGlfc2xlZXBf
ZW5hYmxlLCBzYywgaHogKiBBQ1BJX01JTklNVU1fQVdBS0VUSU1FKTsKKyAgICB0aW1lb3V0
KGFjcGlfc2xlZXBfZW5hYmxlLCBzYywgaHogKiBBQ1BJX01JTklNVU1fQVdBS0VUSU1FKTsK
IAogICAgIC8qIFJ1biAvZXRjL3JjLnJlc3VtZSBhZnRlciB3ZSBhcmUgYmFjay4gKi8KICAg
ICBpZiAoZGV2Y3RsX3Byb2Nlc3NfcnVubmluZygpKQo=
--------------040608080302050903060209--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49E4B2A7.3020302>