Received: by 2002:a05:7412:d1aa:b0:fc:a2b0:25d7 with SMTP id ba42csp1271023rdb; Tue, 30 Jan 2024 13:13:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IFaT1C44jeK+awazYdkJ70m48isBLM/R4UzZwmRD3a1OC9h9/xrdEd0suy8xsRS36OUVQZy X-Received: by 2002:a17:90a:8048:b0:295:cd6f:86e0 with SMTP id e8-20020a17090a804800b00295cd6f86e0mr1337085pjw.17.1706649237960; Tue, 30 Jan 2024 13:13:57 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706649237; cv=pass; d=google.com; s=arc-20160816; b=lUuv5RWZSnXnpRBFafO79mn4ZEeXTu0/Z/cUBSD/irBEwe6StEKyRNCoMqOG4q3h1t KH68UX4Twht56pOlo+4gN/LDTFNSeWPsMR81Byd+l389WbVGRc1ectq+igHVkbINn6Rl 30NqRi52V81NWgiOYPO5t0/gy+PwYE65Z8ScgIF/OupK6mhmLAUoxV96xnG3Df68jXMx 0iDyyzXvw+yrzmi+iF6bDoQxps1CF9H/XMznpK8+MX72/+tvgNbGbnTjoxwGPuKitqI2 RQwFgSbGJQWSsDMH/y4/U1uReaeZQ2UwrlkBDZTjM8EjAjqEb5PuASvzL3YgVP46V4fj zuGw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=to:subject:message-id:date:from:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:dkim-signature; bh=ZHJXHXKGQq4QT0JPJKhL8rGU8iGOmKQJzj/3a5PEg1s=; fh=Ew/nEnoYPZvsFNv8NYoTXBH9ZcCRdhY5oGK3nqMXxY0=; b=DOlN+3MptR28XGf3aE01skhmAtjCsxnS4jX5BhrwcyS/PtmsFRqM9Bkk4q+cp92o4Y Uq/JYKTNBXKQFcA5uRbyHqZJoVS0ZLJtWISAt8uvnLgWhvo+CEXeQdsLlW82auSvfMsx CgT5loTFYZTnl9/H5e5ZhiMlJzZfqK8Ed3ChjtM+R8fmkXitCBt4s0WuFpuWQacH/ZBq vO7c43oEFlR/DYn7JYAUmcZaJrx18u83x4PmHKT/k4EIbhziy6Z5UXluR2dHpWOnswDm j6V9/OCGmaYzf5ygPQdmyTTfJlY8o/3wFno4nHnkNEboWVn/h9kIqneeV8TVVaiNR7xK bn3Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=JJCyDFs4; arc=pass (i=1 spf=pass spfdomain=google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-45325-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-45325-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id l7-20020a63ba47000000b005d8c05cd744si5437933pgu.890.2024.01.30.13.13.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jan 2024 13:13:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-45325-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=JJCyDFs4; arc=pass (i=1 spf=pass spfdomain=google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-45325-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-45325-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 9591E283302 for ; Tue, 30 Jan 2024 21:13:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 72D18762D8; Tue, 30 Jan 2024 21:13:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="JJCyDFs4" Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B3C178B76 for ; Tue, 30 Jan 2024 21:13:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706649209; cv=none; b=eKdnpGenhCp6ZokPYt10UBcD6+POgWIw7Wd2IVr4nf1nGEI3cAfuWr1vasyyuKvvwTUWq/laZOjt0ldgca92FfiuCuxA7LyAEWu8C5neoVCZikJ95IBc16K07ZFggMrVCQIZuOByY5wD9EsW08P5LjZW1kd6uG6zjKXJt6OVrNU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706649209; c=relaxed/simple; bh=ZHJXHXKGQq4QT0JPJKhL8rGU8iGOmKQJzj/3a5PEg1s=; h=MIME-Version:From:Date:Message-ID:Subject:To:Content-Type; b=Xcx4f7nnmorF8nKrJshjE90S3USwtxjsa2RUCy2zqX9xv7FqS52Ya2K4F73fsifQUrj4iKIp6UkIBZri8DqQ6fxAO8AaLN/YWgTAQu7USxPhl1Ee+WIarKAQa43gXRVL6CQ5crQFRwPYcAWqzuLrADZdsL9c3YzPCovNQyIJsJI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=JJCyDFs4; arc=none smtp.client-ip=209.85.218.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a2f22bfb4e6so632261466b.0 for ; Tue, 30 Jan 2024 13:13:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1706649206; x=1707254006; darn=vger.kernel.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ZHJXHXKGQq4QT0JPJKhL8rGU8iGOmKQJzj/3a5PEg1s=; b=JJCyDFs4oXYPcbdjw9sgHl/WwIq0NvytDTX0q2zRhtOnUB5ogKIHiDJsPohov1T/Av SMAR0rG7x0j669OyO8Dqj/NZy2HrGWmdOloM9twoSXkToQkjDI1iZBaVkqYsLdAzTwaG juARaVmRuGgzYb9fWMEstwIH0oI4AI8k0vLou7umr5Rf1zbWeVlhyjX0W3IXqSaxRnax 80xDLdFizbjVvmI33YobQWcrDdSICt16np78bcZtQU72t+DlVtcU/TgK1TkrMpqaYrtf 2HMOV3RSX4rYTVHltDaYHsMgR55ySnhCzNvfY6/X+4uxv3+LoX10exxthNK/gaY1g7jt NNlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706649206; x=1707254006; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ZHJXHXKGQq4QT0JPJKhL8rGU8iGOmKQJzj/3a5PEg1s=; b=HsUVh0MeY+JqYtUhw2pyeyudsh5YTA+aThD7035S2ewhaQCGuRxmQr5yTJ21J1FMl+ fejCDtkLbvL3IZ0nqr0uPOM9UZHH2yQWvJ2t3Cs9/slTfaUx5J2hIDzdiFP4sIZEoWNN 8BwTXaDg6feqCZlB+tbsag7QWZGfIGyyAdvtYXGnTqUFrtirwDIn1/KcnzvsTyeBR+9f LTnCIU68u9qfyyFMOPP8c81TymCu5MFay5+3d78gI3ho+/6G2GtyjLZfeR31Qo6r+uD9 VznJ3bB3qrYT2WMG/ZyO+qUA7UmWmdbi7ReZUd8BI+LBh/eRQ/G/kGrvvsZarCaxRRjq Nyrg== X-Gm-Message-State: AOJu0Yx2F7r4v/Rktlq07ryEuWfkS1AzntzL02qZs39sOjq3T8DWFOCU gJEJC8rLQmIiD0nZu1XefwvPws8HyPFhZKBRcyYFxeG5n5Yb44ISIIzx8lGAhLDqpyYBeusuBfv xGTgAX8cegmTy1STXXtj26hwMTwvOJ+/ZWdG/ X-Received: by 2002:a17:906:ac8:b0:a36:4031:6d28 with SMTP id z8-20020a1709060ac800b00a3640316d28mr1343374ejf.74.1706649205558; Tue, 30 Jan 2024 13:13:25 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Pranav Prasad Date: Tue, 30 Jan 2024 13:13:14 -0800 Message-ID: Subject: Can ETIME be returned instead of EBUSY in the kernel suspend flow? To: rafael@kernel.org, pavel@ucw.cz, len.brown@intel.com, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Kelly Rossmoyer , John Stultz Content-Type: multipart/mixed; boundary="000000000000a825b70610303b56" --000000000000a825b70610303b56 Content-Type: text/plain; charset="UTF-8" Hi! I am proposing a patch in which I want to return the errno code ETIME instead of EBUSY in enter_state() in the kernel suspend flow. Currently, EBUSY is returned when an imminent alarm is pending which is checked in alarmtimer_suspend() in alarmtimer.c. The proposed patch series moves the check to enter_state() in suspend.c to catch a potential suspend failure early in the suspend flow. I want to replace EBUSY with ETIME to make it more diagnosable in userspace, and may be more appropriate considering a timer is about to expire. I am reaching out to get an opinion from the suspend maintainers if this would act as any potential risk in the suspend flow which only has EBUSY, EAGAIN, and EINVAL as return error codes currently. The patch of interest is attached with this email. Thank you! Regards, Pranav Prasad --000000000000a825b70610303b56 Content-Type: application/octet-stream; name="Proposed_ETIME_Solution.patch" Content-Disposition: attachment; filename="Proposed_ETIME_Solution.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls0uhw3c0 RnJvbSA5NWM1YWYwNTNmNWVhMzYzMDMzYTY1YTNkMDA3ZWE4NGIxMGZjMzEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQcmFuYXYgUHJhc2FkIDxwcmFuYXZwcEBnb29nbGUuY29tPgpE YXRlOiBNb24sIDI5IEphbiAyMDI0IDIxOjMxOjQ4ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyLzNd IGFsYXJtdGltZXIsIFBNOiBzdXNwZW5kOiBFeHBvc2UgYSBmdW5jdGlvbiBmcm9tCiBhbGFybXRp bWVyIHRvIHBlcmZvcm0gY2hlY2sgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3VzcGVuZCBmbG93 IGluCiBlbnRlcl9zdGF0ZSgpCgpUaGUgYWxhcm10aW1lciBkcml2ZXIgY3VycmVudGx5IGZhaWxz IHN1c3BlbmQgYXR0ZW1wdHMgd2hlbiB0aGVyZSBpcyBhbgphbGFybSBwZW5kaW5nIHdpdGhpbiB0 aGUgbmV4dCBzdXNwZW5kX2NoZWNrX2R1cmF0aW9uX25zIG5hbm9zZWNvbmRzLCBzaW5jZSB0aGUK c3lzdGVtIGlzIGV4cGVjdGVkIHRvIHdha2UgdXAgc29vbiBhbnl3YXkuIFRoZSBlbnRpcmUgc3Vz cGVuZCBwcm9jZXNzIGlzIGluaXRpYXRlZApldmVuIHRob3VnaCB0aGUgc3lzdGVtIHdpbGwgaW1t ZWRpYXRlbHkgYXdha2VuLiBUaGlzIHByb2Nlc3MgaW5jbHVkZXMgc3Vic3RhbnRpYWwKd29yayBi ZWZvcmUgdGhlIHN1c3BlbmQgZmFpbHMgYW5kIGFkZGl0aW9uYWwgd29yayBhZnRlcndhcmRzIHRv IHVuZG8gdGhlIGZhaWxlZApzdXNwZW5kIHRoYXQgd2FzIGF0dGVtcHRlZC4gVGhlcmVmb3JlIG9u IGJhdHRlcnktcG93ZXJlZCBkZXZpY2VzIHRoYXQgaW5pdGlhdGUKc3VzcGVuZCBhdHRlbXB0cyBm cm9tIHVzZXJzcGFjZSwgaXQgbWF5IGJlIGFkdmFudGFnZW91cyB0byBiZSBhYmxlIHRvIGZhaWwg dGhlCnN1c3BlbmQgZWFybGllciBpbiB0aGUgc3VzcGVuZCBmbG93IHRvIGF2b2lkIHBvd2VyIGNv bnN1bXB0aW9uIGluc3RlYWQgb2YKdW5uZWNlc3NhcmlseSBkb2luZyBleHRyYSB3b3JrLiBBcyBv bmUgZGF0YSBwb2ludCwgYW4gYW5hbHlzaXMgb2YgYSBzdWJzZXQgb2YKQW5kcm9pZCBkZXZpY2Vz IHNob3dlZCB0aGF0IGltbWluZW50IGFsYXJtcyBhY2NvdW50IGZvciByb3VnaGx5IDQwJSBvZiBh bGwgc3VzcGVuZApmYWlsdXJlcyBvbiBhdmVyYWdlIGxlYWRpbmcgdG8gdW5uZWNlc3NhcnkgcG93 ZXIgd2FzdGFnZS4KClRvIGZhY2lsaXRhdGUgdGhpcywgZXhwb3NlIGZ1bmN0aW9uIHRpbWVfY2hl Y2tfc3VzcGVuZF9mYWlsKCkgZnJvbSBhbGFybXRpbWVyCnRvIGJlIHVzZWQgYnkgdGhlIHBvd2Vy IHN1YnN5c3RlbSB0byBwZXJmb3JtIHRoZSBjaGVjayBlYXJsaWVyIGluIHRoZSBzdXNwZW5kCmZs b3cuIFBlcmZvcm0gdGhlIGNoZWNrIGluIGVudGVyX3N0YXRlKCkgYW5kIHJldHVybiBlYXJseSBp ZiBhbiBhbGFybSBpcwp0byBiZSBmaXJlZCBpbiB0aGUgbmV4dCBzdXNwZW5kX2NoZWNrX2R1cmF0 aW9uX25zIG5hbm9zZWNvbmRzLCBmYWlsaW5nCnN1c3BlbmQuCgpDaGFuZ2UtSWQ6IEkwMmQ3ODUz ZDBiMDVkOTNiMTIxOTg4ODE4ZjhhODA0NjFiNGEzNThjClNpZ25lZC1vZmYtYnk6IFByYW5hdiBQ cmFzYWQgPHByYW5hdnBwQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEtlbGx5IFJvc3Ntb3ll ciA8a3Jvc3Ntb0Bnb29nbGUuY29tPgotLS0KIGluY2x1ZGUvbGludXgvdGltZS5oICAgICB8ICAg MSArCiBrZXJuZWwvcG93ZXIvc3VzcGVuZC5jICAgfCAgIDMgKysKIGtlcm5lbC90aW1lL2FsYXJt dGltZXIuYyB8IDExMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDMg ZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC90aW1lLmggYi9pbmNsdWRlL2xpbnV4L3RpbWUuaAppbmRleCAx NmNmNDUyMmQ2ZjMuLmFhYjdjNGU1MWUxMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90aW1l LmgKKysrIGIvaW5jbHVkZS9saW51eC90aW1lLmgKQEAgLTU2LDYgKzU2LDcgQEAgc3RydWN0IHRt IHsKIH07CiAKIHZvaWQgdGltZTY0X3RvX3RtKHRpbWU2NF90IHRvdGFsc2VjcywgaW50IG9mZnNl dCwgc3RydWN0IHRtICpyZXN1bHQpOworaW50IHRpbWVfY2hlY2tfc3VzcGVuZF9mYWlsKHZvaWQp OwogCiAjIGluY2x1ZGUgPGxpbnV4L3RpbWUzMi5oPgogCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93 ZXIvc3VzcGVuZC5jIGIva2VybmVsL3Bvd2VyL3N1c3BlbmQuYwppbmRleCBmYTNiZjE2MWQxM2Yu LjdhMDE3NWRhZTBkOSAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL3N1c3BlbmQuYworKysgYi9r ZXJuZWwvcG93ZXIvc3VzcGVuZC5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8bGludXgv c3VzcGVuZC5oPgogI2luY2x1ZGUgPGxpbnV4L3N5c2NvcmVfb3BzLmg+CiAjaW5jbHVkZSA8bGlu dXgvc3dhaXQuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+CiAjaW5jbHVkZSA8bGludXgvZnRy YWNlLmg+CiAjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL3Bvd2VyLmg+CiAjaW5jbHVkZSA8bGludXgv Y29tcGlsZXIuaD4KQEAgLTU2NCw2ICs1NjUsOCBAQCBzdGF0aWMgaW50IGVudGVyX3N0YXRlKHN1 c3BlbmRfc3RhdGVfdCBzdGF0ZSkKICNlbmRpZgogCX0gZWxzZSBpZiAoIXZhbGlkX3N0YXRlKHN0 YXRlKSkgewogCQlyZXR1cm4gLUVJTlZBTDsKKwl9IGVsc2UgaWYgKHRpbWVfY2hlY2tfc3VzcGVu ZF9mYWlsKCkpIHsKKwkJcmV0dXJuIC1FVElNRTsKIAl9CiAJaWYgKCFtdXRleF90cnlsb2NrKCZz eXN0ZW1fdHJhbnNpdGlvbl9tdXRleCkpCiAJCXJldHVybiAtRUJVU1k7CmRpZmYgLS1naXQgYS9r ZXJuZWwvdGltZS9hbGFybXRpbWVyLmMgYi9rZXJuZWwvdGltZS9hbGFybXRpbWVyLmMKaW5kZXgg ZTVkMmU1NjBiNGMxLi4wODViMWFjZTBjMzEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lL2FsYXJt dGltZXIuYworKysgYi9rZXJuZWwvdGltZS9hbGFybXRpbWVyLmMKQEAgLTExNSw2ICsxMTUsODQg QEAgc3RhdGljIGludCBhbGFybXRpbWVyX3N5c2ZzX2FkZCh2b2lkKQogCXJldHVybiByZXQ7CiB9 CiAKKy8qKgorICogYWxhcm10aW1lcl9pbml0X3Nvb25lc3QgLSBJbml0aWFsaXplcyBwYXJhbWV0 ZXJzIHRvIGZpbmQgc29vbmVzdCBhbGFybS4KKyAqIEBtaW46IHB0ciB0byByZWxhdGl2ZSB0aW1l IHRvIHRoZSBzb29uZXN0IGFsYXJtIHRvIGV4cGlyZQorICogQGV4cGlyZXM6IHB0ciB0byBhYnNv bHV0ZSB0aW1lIG9mIHRoZSBzb29uZXN0IGFsYXJtIHRvIGV4cGlyZQorICogQHR5cGU6IHB0ciB0 byBhbGFybSB0eXBlCisgKgorICovCitzdGF0aWMgdm9pZCBhbGFybXRpbWVyX2luaXRfc29vbmVz dChrdGltZV90ICptaW4sIGt0aW1lX3QgKmV4cGlyZXMsIGludCAqdHlwZSkKK3sKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmZyZWV6ZXJfZGVsdGFfbG9jaywg ZmxhZ3MpOworCSptaW4gPSBmcmVlemVyX2RlbHRhOworCSpleHBpcmVzID0gZnJlZXplcl9leHBp cmVzOworCSp0eXBlID0gZnJlZXplcl9hbGFybXR5cGU7CisJZnJlZXplcl9kZWx0YSA9IDA7CisJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZnJlZXplcl9kZWx0YV9sb2NrLCBmbGFncyk7Cit9CisK Ky8qKgorICogYWxhcm10aW1lcl9nZXRfc29vbmVzdCAtIEZpbmRzIHRoZSBzb29uZXN0IGFsYXJt IHRvIGV4cGlyZSBhbW9uZyB0aGUgYWxhcm0gYmFzZXMuCisgKiBAbWluOiBwdHIgdG8gcmVsYXRp dmUgdGltZSB0byB0aGUgc29vbmVzdCBhbGFybSB0byBleHBpcmUKKyAqIEBleHBpcmVzOiBwdHIg dG8gYWJzb2x1dGUgdGltZSBvZiB0aGUgc29vbmVzdCBhbGFybSB0byBleHBpcmUKKyAqIEB0eXBl OiBwdHIgdG8gYWxhcm0gdHlwZQorICoKKyAqLworc3RhdGljIHZvaWQgYWxhcm10aW1lcl9nZXRf c29vbmVzdChrdGltZV90ICptaW4sIGt0aW1lX3QgKmV4cGlyZXMsIGludCAqdHlwZSkKK3sKKwlp bnQgaTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJLyogRmluZCB0aGUgc29vbmVzdCB0aW1l ciB0byBleHBpcmUgKi8KKwlmb3IgKGkgPSAwOyBpIDwgQUxBUk1fTlVNVFlQRTsgaSsrKSB7CisJ CXN0cnVjdCBhbGFybV9iYXNlICpiYXNlID0gJmFsYXJtX2Jhc2VzW2ldOworCQlzdHJ1Y3QgdGlt ZXJxdWV1ZV9ub2RlICpuZXh0OworCQlrdGltZV90IGRlbHRhOworCisJCXNwaW5fbG9ja19pcnFz YXZlKCZiYXNlLT5sb2NrLCBmbGFncyk7CisJCW5leHQgPSB0aW1lcnF1ZXVlX2dldG5leHQoJmJh c2UtPnRpbWVycXVldWUpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZiYXNlLT5sb2NrLCBm bGFncyk7CisJCWlmICghbmV4dCkKKwkJCWNvbnRpbnVlOworCQlkZWx0YSA9IGt0aW1lX3N1Yihu ZXh0LT5leHBpcmVzLCBiYXNlLT5nZXRfa3RpbWUoKSk7CisJCWlmICghKCptaW4pIHx8IChkZWx0 YSA8ICptaW4pKSB7CisJCQkqZXhwaXJlcyA9IG5leHQtPmV4cGlyZXM7CisJCQkqbWluID0gZGVs dGE7CisJCQkqdHlwZSA9IGk7CisJCX0KKwl9Cit9CisKKy8qKgorICogdGltZV9jaGVja19zdXNw ZW5kX2ZhaWwgLSBDaGVjayBpZiBzdXNwZW5kIHNob3VsZCBiZSBmYWlsZWQgZHVlIHRvIGFuCisg KiBhbGFybSB3aXRoaW4gdGhlIG5leHQgc3VzcGVuZF9jaGVja19kdXJhdGlvbiBuYW5vc2Vjb25k cy4KKyAqCisgKiBSZXR1cm5zIGVycm9yIGlmIHN1c3BlbmQgc2hvdWxkIGJlIGZhaWxlZCwgZWxz ZSByZXR1cm5zIDAuCisgKi8KK2ludCB0aW1lX2NoZWNrX3N1c3BlbmRfZmFpbCh2b2lkKQorewor CWt0aW1lX3QgbWluLCBleHBpcmVzOworCWludCB0eXBlOworCisJLyogSW5pdGlhbGl6ZSBwYXJh bWV0ZXJzIHRvIGZpbmQgc29vbmVzdCB0aW1lciAqLworCWFsYXJtdGltZXJfaW5pdF9zb29uZXN0 KCZtaW4sICZleHBpcmVzLCAmdHlwZSk7CisKKwkvKiBGaW5kIHRoZSBzb29uZXN0IHRpbWVyIHRv IGV4cGlyZSAqLworCWFsYXJtdGltZXJfZ2V0X3Nvb25lc3QoJm1pbiwgJmV4cGlyZXMsICZ0eXBl KTsKKworCWlmIChtaW4gPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoa3RpbWVfdG9fbnMobWlu KSA8IHN1c3BlbmRfY2hlY2tfZHVyYXRpb25fbnMpCisJCXJldHVybiAtRUJVU1k7CisKKwlyZXR1 cm4gMDsKK30KK0VYUE9SVF9TWU1CT0wodGltZV9jaGVja19zdXNwZW5kX2ZhaWwpOworCiAvKioK ICAqIGFsYXJtdGltZXJfZ2V0X3J0Y2RldiAtIFJldHVybiBzZWxlY3RlZCBydGNkZXZpY2UKICAq CkBAIC0yOTYsNDkgKzM3NCwyNCBAQCBFWFBPUlRfU1lNQk9MX0dQTChhbGFybV9leHBpcmVzX3Jl bWFpbmluZyk7CiBzdGF0aWMgaW50IGFsYXJtdGltZXJfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpk ZXYpCiB7CiAJa3RpbWVfdCBtaW4sIG5vdywgZXhwaXJlczsKLQlpbnQgaSwgcmV0LCB0eXBlOwor CWludCByZXQsIHR5cGU7CiAJc3RydWN0IHJ0Y19kZXZpY2UgKnJ0YzsKLQl1bnNpZ25lZCBsb25n IGZsYWdzOwogCXN0cnVjdCBydGNfdGltZSB0bTsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZmcmVl emVyX2RlbHRhX2xvY2ssIGZsYWdzKTsKLQltaW4gPSBmcmVlemVyX2RlbHRhOwotCWV4cGlyZXMg PSBmcmVlemVyX2V4cGlyZXM7Ci0JdHlwZSA9IGZyZWV6ZXJfYWxhcm10eXBlOwotCWZyZWV6ZXJf ZGVsdGEgPSAwOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmZyZWV6ZXJfZGVsdGFfbG9jaywg ZmxhZ3MpOworCS8qIEluaXRpYWxpemUgcGFyYW1ldGVycyB0byBmaW5kIHNvb25lc3QgdGltZXIg Ki8KKwlhbGFybXRpbWVyX2luaXRfc29vbmVzdCgmbWluLCAmZXhwaXJlcywgJnR5cGUpOwogCiAJ cnRjID0gYWxhcm10aW1lcl9nZXRfcnRjZGV2KCk7CiAJLyogSWYgd2UgaGF2ZSBubyBydGNkZXYs IGp1c3QgcmV0dXJuICovCiAJaWYgKCFydGMpCiAJCXJldHVybiAwOwogCi0JLyogRmluZCB0aGUg c29vbmVzdCB0aW1lciB0byBleHBpcmUqLwotCWZvciAoaSA9IDA7IGkgPCBBTEFSTV9OVU1UWVBF OyBpKyspIHsKLQkJc3RydWN0IGFsYXJtX2Jhc2UgKmJhc2UgPSAmYWxhcm1fYmFzZXNbaV07Ci0J CXN0cnVjdCB0aW1lcnF1ZXVlX25vZGUgKm5leHQ7Ci0JCWt0aW1lX3QgZGVsdGE7CisJLyogRmlu ZCB0aGUgc29vbmVzdCB0aW1lciB0byBleHBpcmUgKi8KKwlhbGFybXRpbWVyX2dldF9zb29uZXN0 KCZtaW4sICZleHBpcmVzLCAmdHlwZSk7CiAKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmJhc2UtPmxv Y2ssIGZsYWdzKTsKLQkJbmV4dCA9IHRpbWVycXVldWVfZ2V0bmV4dCgmYmFzZS0+dGltZXJxdWV1 ZSk7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmJhc2UtPmxvY2ssIGZsYWdzKTsKLQkJaWYg KCFuZXh0KQotCQkJY29udGludWU7Ci0JCWRlbHRhID0ga3RpbWVfc3ViKG5leHQtPmV4cGlyZXMs IGJhc2UtPmdldF9rdGltZSgpKTsKLQkJaWYgKCFtaW4gfHwgKGRlbHRhIDwgbWluKSkgewotCQkJ ZXhwaXJlcyA9IG5leHQtPmV4cGlyZXM7Ci0JCQltaW4gPSBkZWx0YTsKLQkJCXR5cGUgPSBpOwot CQl9Ci0JfQogCWlmIChtaW4gPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoa3RpbWVfdG9fbnMo bWluKSA8IHN1c3BlbmRfY2hlY2tfZHVyYXRpb25fbnMpIHsKLQkJcG1fd2FrZXVwX2V2ZW50KGRl diwgc3VzcGVuZF9jaGVja19kdXJhdGlvbl9ucy9OU0VDX1BFUl9NU0VDKTsKLQkJcmV0dXJuIC1F QlVTWTsKLQl9Ci0KIAl0cmFjZV9hbGFybXRpbWVyX3N1c3BlbmQoZXhwaXJlcywgdHlwZSk7CiAK IAkvKiBTZXR1cCBhbiBydGMgdGltZXIgdG8gZmlyZSB0aGF0IGZhciBpbiB0aGUgZnV0dXJlICov Ci0tIAoyLjQzLjAuNDI5Lmc0MzJlYWEyYzZiLWdvb2cKCg== --000000000000a825b70610303b56--