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>