From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5BF18C54FCD for ; Thu, 30 Jul 2026 01:30:07 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wpFZu-0005kB-6s; Wed, 29 Jul 2026 21:28:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wpFZs-0005jt-Np for qemu-devel@nongnu.org; Wed, 29 Jul 2026 21:28:52 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wpFZp-0005di-L0 for qemu-devel@nongnu.org; Wed, 29 Jul 2026 21:28:52 -0400 Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66U1NElk3533147 for ; Thu, 30 Jul 2026 01:28:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= qcppdkim1; bh=H3acHiVFD+RI7KdTS/yR9oLvL0LTMayWD2GoRiupoi4=; b=a0 TkD7JbIhXr2VYbp1S6Lhhaq0jCT+I6euMIH2wv7IOIYqtRYVysBe/13Fq4arLRT3 lMiR+6lTWSQdsaVgU4l4P/RTWHDZtk161TOOTA+FAlPEHXColb385x3gOKBGyoiy RzO6ydGH+eyWkpQQzEgj9m2jV8brHHwxgIg5Y6l6F2mF3X1oIJLmr+ODzWvbiY6r 6yN+gZJdx9/M3fwcveb+3Mp52g3TH6mB83ZBrlhmmCNFNTSTxi2k2b22jlHkbQr7 s1uWb6Ao8OlAwL8FnWDujtF2B9r4uHHruiVRzMb7dG5TUPoZfj0vzQy2Z+aMvvNn 6JeXk6JuvCV4p+KR3hHA== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fqvwe00hu-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 30 Jul 2026 01:28:48 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c96b4f58ddcso1229882a12.3 for ; Wed, 29 Jul 2026 18:28:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785374927; x=1785979727; darn=nongnu.org; h=content-transfer-encoding:content-type:content-type:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to:content-type; bh=H3acHiVFD+RI7KdTS/yR9oLvL0LTMayWD2GoRiupoi4=; b=ilTHpP7Q7BT0HHMEqHHoiXPn4t/qb+PAEKBpUYD73LZo5lYR3GulhQVscUUKmn7ill HwlbsPt+vxfg/Gxu9zq07JHhFlHFHz8n7LFXVvO3n4VUcpO2QcCgRKeth0JtXXbWHcvW lejmY19F+z2GA+AkufaubIfpQYEkUlmcCALUSJUAL4MISBLinUE4yQ4skFRMY0LI3iXr TLenNhoeERazepjCcfljD2zTza90ncR0nn/pwXwgoy0awFOs7SGC3e89hGgtXWWlxnoY JuezX8RVhjbrbpCbOXVpGraUbpuboYLPUm3foxCqnR7SRr1UX9lwQSLEHsPyxjq4MgFJ I4MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785374927; x=1785979727; h=content-transfer-encoding:content-type:content-type:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=H3acHiVFD+RI7KdTS/yR9oLvL0LTMayWD2GoRiupoi4=; b=qzvREspiOqWsOxjhSAfPjAvoSwjJNDbhvfrd5NnBtzS6gkXHFqAgyftV8jEfjTxdXy lpdixWjarvfEg6oqJ5D5+SeqTry+2ewcTuQnQgBnRRBVUWtewRd+QzRaapnlUXtBQuJ8 k7lTF7+tfc+nyYxowX+KIiyXFaqrjY+ExaG2Sc8rbJzEmUYWmr6dFd7qaqJzgy8adt5z cU43yTVwlMf6XPB6mRce569jmYmqYKLF9u82yZD9iO9Ufi3Oq13jA2PKAhLoSZzn7f/X QLUcZiuACyehlK2A3JIDtxToTk8m1Aj8PSmM/ORfQnib7z3HSHKe5U05P/NYcOUl4cTC G1/w== X-Gm-Message-State: AOJu0YxcAp/HixFtEu8rqvemrD5jxbVjf3NdinLKGFVV5sg5kc8KrMjY M5yDdWmeNJRj86LyKitmcXuZtLVkTlIzjrmW8fTRA9i0CjgUDlCm4JzqtsjJsnyg2+gaMi8tTmp Y4qoHWLyn1L4c2/ZzxvIHsq5m+6RGn/r0cDKQaqjdlBsi3fr04je9TT8mTiU86LkswA== X-Gm-Gg: AR+sD12I1fYE61spt8pdg65F9lVzGmEka3WkIbwtKt0PPmCLLpB8O8xDz9V4RvXKbZv p06ppPVqWMCy8V+wMhFdwKnw2st7RL2YVpal29vCw8fDXAVrfQfAIGfZEym3YI1B/gJcKNvQVFG m9OVA/+B2B+xo5tTkamEABnUjp7eL9kU15ogYk2Xl7E+EvMjQd2hUS5mzIL4VMkv8c6P3mc/fcD LgUKfe+aMUQaI3XsZIfwDNgd/QP98BEmAlUNbej+W0hdRpim6r0+shOzhgvDWFYmn41UBJJGBsU bMVmxETR8PGRSVwhRbomBHNtpQjg+9rDLOEMCMuqDTEpL+8b8lBTk44P0BEr/IpI59AEoaRJMIp EcvC64l51z8n1vkpaFJWFRMNMwx4lqBzAW4vMGNoGyofpU78p X-Received: by 2002:a05:6a21:697:b0:3c3:6928:8b25 with SMTP id adf61e73a8af0-3c9006b6b41mr467021637.17.1785374927174; Wed, 29 Jul 2026 18:28:47 -0700 (PDT) X-Received: by 2002:a05:6a21:697:b0:3c3:6928:8b25 with SMTP id adf61e73a8af0-3c9006b6b41mr466978637.17.1785374926490; Wed, 29 Jul 2026 18:28:46 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31504dab0f3sm13242162eec.27.2026.07.29.18.28.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2026 18:28:45 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: philmd@oss.qualcomm.com, Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Brian Cain , matheus.bernardino@oss.qualcomm.com, Damien Hedde , =?UTF-8?q?Tobias=20R=C3=B6hmel?= , Sid Manning , Thomas Marceron , Mahmoud Kamel Subject: [PATCH v4 15/18] hw/timer: Add QCT QTimer device model Date: Wed, 29 Jul 2026 18:28:20 -0700 Message-Id: <20260730012824.1135905-16-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260730012824.1135905-1-brian.cain@oss.qualcomm.com> References: <20260730012824.1135905-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMwMDAwNiBTYWx0ZWRfX9nYSks14woLa CH5kYXYtjS6nT34VsNmfWg+in/m83U55jPoEC8vzSnJmVrWLoXExjXsOEEhxuiWnPpwVhUjLT0w gC2TRttaj8uBYv4btjerjNnCphgPlcEISOKhv3G5uY/GIGAe46kCShk6qpa3FlNATBGkmtnZRjZ XhgrkmjSnT/uSO1mIy3PVPbj+0NpqlTKqSHqMvcVG8rsXoLaKyXyNC2IiYd/8lvcx0CILu9t205 0+CJKRTBZzuO8wMi3vmwzNdK5hD+RJToClUwD1Z0bVG8Lf51GOdOnM8r5bT4EnVzKsO9e1nHGE4 gQhQypbmW+kLvwgIu4/J+VOCXMIxGAZxm5RVd2yMxBn8M9qqK7BkC5ZHGiOMJWiP3kxZeXKweLT k0pZbZLCwZiy/V03dhhvUp4jSDUy8FubAp8WMZMRsCD3QtV3zNEYomBwYCETQSCqXTIw24ycCH3 yEi+DR1N2p0gIMAc6yw== X-Authority-Analysis: v=2.4 cv=AcmB2XXG c=1 sm=1 tr=0 ts=6a6aa8d0 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=1cGLs3X8AAAA:8 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=MyVnZ0MkVRpyhQKP3eIA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 a=d8ghUycwObenwynNfMyN:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: banejYQnBaZ6C4UlHCSD0SFUYDC3m31S X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMwMDAwNiBTYWx0ZWRfX2h4W5iIG1Cm0 6nIQedcXPLC/i9VC/O7LUv+soidD6tC+ZVwHDw0J2wF0737hxygs8TsN3o4CMHMGmQsK4Dok5+O 8QlyXB2RIm8NT3gq6QxqNIKv7LUVjwk= X-Proofpoint-GUID: banejYQnBaZ6C4UlHCSD0SFUYDC3m31S X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-29_09,2026-07-29_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 adultscore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607300006 Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org SW1wbGVtZW50IHRoZSBRQ1QgUVRpbWVyIGdlbmVyaWMgdGltZXIgZGV2aWNlIHVzZWQgYnkgSGV4 YWdvbiBEU1AKc3lzdGVtcy4KCkNvLWF1dGhvcmVkLWJ5OiBEYW1pZW4gSGVkZGUgPGRhbWllbi5o ZWRkZUBncmVlbnNvY3MuY29tPgpDby1hdXRob3JlZC1ieTogVG9iaWFzIFLDtmhtZWwgPHF1aWNf dHJvaG1lbEBxdWljaW5jLmNvbT4KQ28tYXV0aG9yZWQtYnk6IFNpZCBNYW5uaW5nIDxzaWRuZXlt QHF1aWNpbmMuY29tPgpDby1hdXRob3JlZC1ieTogVGhvbWFzIE1hcmNlcm9uIDx0bWFyY2Vyb0Bx dGkucXVhbGNvbW0uY29tPgpDby1hdXRob3JlZC1ieTogTWFobW91ZCBLYW1lbCA8bWthbWVsQHF0 aS5xdWFsY29tbS5jb20+ClNpZ25lZC1vZmYtYnk6IEJyaWFuIENhaW4gPGJyaWFuLmNhaW5Ab3Nz LnF1YWxjb21tLmNvbT4KLS0tCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICB8ICAgMiAr CiBpbmNsdWRlL2h3L3RpbWVyL3FjdC1xdGltZXIuaCB8ICA0MyArKysKIGh3L3RpbWVyL3FjdC1x dGltZXIuYyAgICAgICAgIHwgNjgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGh3L3RpbWVyL0tjb25maWcgICAgICAgICAgICAgIHwgICAzICsKIGh3L3RpbWVyL21lc29uLmJ1 aWxkICAgICAgICAgIHwgICAyICsKIGh3L3RpbWVyL3RyYWNlLWV2ZW50cyAgICAgICAgIHwgICA1 ICsKIDYgZmlsZXMgY2hhbmdlZCwgNzM2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBpbmNsdWRlL2h3L3RpbWVyL3FjdC1xdGltZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L3Rp bWVyL3FjdC1xdGltZXIuYwoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMK aW5kZXggMTE0YmJlYzQ1YWQuLmRlMTA2NDE2YjY0IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwor KysgYi9NQUlOVEFJTkVSUwpAQCAtMjUzLDYgKzI1Myw4IEBAIEY6IHRhcmdldC9oZXhhZ29uLwog RjogaHcvaW50Yy9oZXgtbDJ2aWMuYwogRjogaW5jbHVkZS9ody9pbnRjL2hleC1sMnZpYy5oCiBG OiB0ZXN0cy9xdGVzdC9sMnZpYy10ZXN0LmMKK0Y6IGh3L3RpbWVyL3FjdC1xdGltZXIuYworRjog aW5jbHVkZS9ody90aW1lci9xY3QtcXRpbWVyLmgKIFg6IHRhcmdldC9oZXhhZ29uL2lkZWYtcGFy c2VyLwogWDogdGFyZ2V0L2hleGFnb24vZ2VuX2lkZWZfcGFyc2VyX2Z1bmNzLnB5CiBGOiBsaW51 eC11c2VyL2hleGFnb24vCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3RpbWVyL3FjdC1xdGltZXIu aCBiL2luY2x1ZGUvaHcvdGltZXIvcWN0LXF0aW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi41M2Q4MjkxNDcyZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv aHcvdGltZXIvcWN0LXF0aW1lci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBRdWFsY29tbSBR Q1QgUVRpbWVyCisgKgorICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIElu Yy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vci1sYXRlcgorICovCisKKyNpZm5kZWYgSFdfVElNRVJfUUNUX1FUSU1FUl9ICisj ZGVmaW5lIEhXX1RJTUVSX1FDVF9RVElNRVJfSAorCisjaW5jbHVkZSAicW9tL29iamVjdC5oIgor CisjZGVmaW5lIFRZUEVfUUNUX1FUSU1FUiAicWN0LXF0aW1lciIKKworLyogUVRpbWVyIGludGVy ZmFjZSBmb3IgZXh0ZXJuYWwgYWNjZXNzIGZyb20gaGV4YWdvbl9nbG9iYWxyZWcgKi8KKyNkZWZp bmUgVFlQRV9RQ1RfUVRJTUVSX0lOVEVSRkFDRSAicWN0LXF0aW1lci1pZiIKKwordHlwZWRlZiBz dHJ1Y3QgUWN0UXRpbWVySW50ZXJmYWNlIFFjdFF0aW1lckludGVyZmFjZTsKKwordHlwZWRlZiBz dHJ1Y3QgUWN0UXRpbWVySW50ZXJmYWNlQ2xhc3MgeworICAgIEludGVyZmFjZUNsYXNzIHBhcmVu dF9jbGFzczsKKworICAgIC8qIFJlYWQgdGhlIGxpdmUgcGh5c2ljYWwgY291bnRlciwgYmFja2lu ZyBIRVhfU1JFR19USU1FUkxPL1RJTUVSSEkgKi8KKyAgICB1aW50MzJfdCAoKmdldF90aW1lcl9s bykoY29uc3QgUWN0UXRpbWVySW50ZXJmYWNlICpxdGltZXIpOworICAgIHVpbnQzMl90ICgqZ2V0 X3RpbWVyX2hpKShjb25zdCBRY3RRdGltZXJJbnRlcmZhY2UgKnF0aW1lcik7Cit9IFFjdFF0aW1l ckludGVyZmFjZUNsYXNzOworCitERUNMQVJFX09CSl9DSEVDS0VSUyhRY3RRdGltZXJJbnRlcmZh Y2UsIFFjdFF0aW1lckludGVyZmFjZUNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgUUNUX1FU SU1FUl9JTlRFUkZBQ0UsIFRZUEVfUUNUX1FUSU1FUl9JTlRFUkZBQ0UpOworCitzdGF0aWMgaW5s aW5lIHVpbnQzMl90IHFjdF9xdGltZXJfZ2V0X3RpbWVyX2xvKGNvbnN0IFFjdFF0aW1lckludGVy ZmFjZSAqcXRpbWVyKQoreworICAgIFFjdFF0aW1lckludGVyZmFjZUNsYXNzICprID0gUUNUX1FU SU1FUl9JTlRFUkZBQ0VfR0VUX0NMQVNTKHF0aW1lcik7CisgICAgcmV0dXJuIGstPmdldF90aW1l cl9sbyhxdGltZXIpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IHFjdF9xdGltZXJfZ2V0 X3RpbWVyX2hpKGNvbnN0IFFjdFF0aW1lckludGVyZmFjZSAqcXRpbWVyKQoreworICAgIFFjdFF0 aW1lckludGVyZmFjZUNsYXNzICprID0gUUNUX1FUSU1FUl9JTlRFUkZBQ0VfR0VUX0NMQVNTKHF0 aW1lcik7CisgICAgcmV0dXJuIGstPmdldF90aW1lcl9oaShxdGltZXIpOworfQorCisjZW5kaWYg LyogSFdfVElNRVJfUUNUX1FUSU1FUl9IICovCmRpZmYgLS1naXQgYS9ody90aW1lci9xY3QtcXRp bWVyLmMgYi9ody90aW1lci9xY3QtcXRpbWVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjgyYzcxMTAwMGViCi0tLSAvZGV2L251bGwKKysrIGIvaHcvdGltZXIvcWN0 LXF0aW1lci5jCkBAIC0wLDAgKzEsNjgxIEBACisvKgorICogUXVhbGNvbW0gUUNUIFFUaW1lcgor ICoKKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBp dHMgc3Vic2lkaWFyaWVzLgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3It bGF0ZXIKKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgImh3L2NvcmUv aXJxLmgiCisjaW5jbHVkZSAiaHcvY29yZS9xZGV2LXByb3BlcnRpZXMuaCIKKyNpbmNsdWRlICJo dy9jb3JlL3N5c2J1cy5oIgorI2luY2x1ZGUgImh3L3RpbWVyL3FjdC1xdGltZXIuaCIKKyNpbmNs dWRlICJtaWdyYXRpb24vdm1zdGF0ZS5oIgorI2luY2x1ZGUgInFlbXUvYml0b3BzLmgiCisjaW5j bHVkZSAicWVtdS9sb2cuaCIKKyNpbmNsdWRlICJxZW11L21vZHVsZS5oIgorI2luY2x1ZGUgInFl bXUvdGltZXIuaCIKKyNpbmNsdWRlICJxYXBpL2Vycm9yLmgiCisjaW5jbHVkZSAidHJhY2UuaCIK KworI2RlZmluZSBRVElNRVJfTUVNX1NJWkVfQllURVMgMHgxMDAwCisjZGVmaW5lIFFUSU1FUl9E RUZBVUxUX0ZSRVFfSFogMTkyMDAwMDBVTEwKKworI2RlZmluZSBRQ1RfUVRJTUVSX1RJTUVSX0ZS QU1FX0VMVFMgKDE2KQorI2RlZmluZSBRQ1RfUVRJTUVSX1RJTUVSX1ZJRVdfRUxUUyAoMikKKwor I2RlZmluZSBRQ1RfUVRJTUVSX0FDX0NOVEZSUSAoMHgwMDApCisjZGVmaW5lIFFDVF9RVElNRVJf QUNfQ05UU1IgKDB4MDA0KQorI2RlZmluZSBRQ1RfUVRJTUVSX0FDX0NOVFRJRF8wICgweDA4KQor I2RlZmluZSBRQ1RfUVRJTUVSX0FDX0NOVEFDUl9TVEFSVCAoMHg0MCkKKyNkZWZpbmUgUUNUX1FU SU1FUl9BQ19DTlRBQ1JfRU5EICgweDVjKQorI2RlZmluZSBRQ1RfUVRJTUVSX0FDX0NOVFRJRF8x ICgweDEwOCkKKyNkZWZpbmUgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfUldQVCAoMSA8PCA1KSAvKiBS L1cgb2YgQ05UUF8qIHJlZ3MgKi8KKyNkZWZpbmUgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfUldWVCAo MSA8PCA0KSAvKiBSL1cgb2YgQ05UVl8qIHJlZ3MgKi8KKyNkZWZpbmUgUUNUX1FUSU1FUl9BQ19D TlRBQ1JfUlZPRkYgKDEgPDwgMykgLyogUi9XIG9mIENOVFZPRkYgcmVnaXN0ZXIgKi8KKyNkZWZp bmUgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfUkZSUSAoMSA8PCAyKSAvKiBSL1cgb2YgQ05URlJRIHJl Z2lzdGVyICovCisjZGVmaW5lIFFDVF9RVElNRVJfQUNfQ05UQUNSX1JQVkNUICgxIDw8IDEpIC8q IFIvVyBvZiBDTlRWQ1QgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgUUNUX1FUSU1FUl9BQ19DTlRBQ1Jf UlBDVCAoMSA8PCAwKSAvKiBSL1cgb2YgQ05UUENUIHJlZ2lzdGVyICovCisjZGVmaW5lIFFDVF9R VElNRVJfVkVSU0lPTiAoMHgwZmQwKQorCisjZGVmaW5lIFFDVF9RVElNRVJfQ05UUENUX0xPICgw eDAwMCkKKyNkZWZpbmUgUUNUX1FUSU1FUl9DTlRQQ1RfSEkgKDB4MDA0KQorI2RlZmluZSBRQ1Rf UVRJTUVSX0NOVF9GUkVRICgweDAxMCkKKyNkZWZpbmUgUUNUX1FUSU1FUl9DTlRQTDBBQ1IgKDB4 MDE0KQorI2RlZmluZSBRQ1RfUVRJTUVSX0NOVFBMMEFDUl9QTDBDVEVOICgxIDw8IDkpCisjZGVm aW5lIFFDVF9RVElNRVJfQ05UUEwwQUNSX1BMMFRWRU4gKDEgPDwgOCkKKyNkZWZpbmUgUUNUX1FU SU1FUl9DTlRQTDBBQ1JfUEwwVkNURU4gKDEgPDwgMSkKKyNkZWZpbmUgUUNUX1FUSU1FUl9DTlRQ TDBBQ1JfUEwwUENURU4gKDEgPDwgMCkKKyNkZWZpbmUgUUNUX1FUSU1FUl9DTlRQX0NWQUxfTE8g KDB4MDIwKQorI2RlZmluZSBRQ1RfUVRJTUVSX0NOVFBfQ1ZBTF9ISSAoMHgwMjQpCisjZGVmaW5l IFFDVF9RVElNRVJfQ05UX01BU0sgMHgwMGZmZmZmZmZmZmZmZmZmVUxMCisjZGVmaW5lIFFDVF9R VElNRVJfQ05UX0hJX0JJVFMgMjQKKyNkZWZpbmUgUUNUX1FUSU1FUl9DTlRQX1RWQUwgKDB4MDI4 KQorI2RlZmluZSBRQ1RfUVRJTUVSX0NOVFBfQ1RMICgweDAyYykKKyNkZWZpbmUgUUNUX1FUSU1F Ul9DTlRQX0NUTF9FTkFCTEUgKDEgPDwgMCkKKyNkZWZpbmUgUUNUX1FUSU1FUl9DTlRQX0NUTF9J TlRFTiAoMSA8PCAxKQorI2RlZmluZSBRQ1RfUVRJTUVSX0NOVFBfQ1RMX0lTVEFUICgxIDw8IDIp CisKK09CSkVDVF9ERUNMQVJFX1NJTVBMRV9UWVBFKFFDVFF0aW1lclN0YXRlLCBRQ1RfUVRJTUVS KQorCit0eXBlZGVmIHN0cnVjdCBRQ1RIZXh0aW1lclN0YXRlIHsKKyAgICBRQ1RRdGltZXJTdGF0 ZSAqcXRpbWVyOworICAgIFFFTVVUaW1lciAqdGltZXI7ICAgICAgIC8qIG9uZS1zaG90IGRlYWRs aW5lIHRpbWVyICovCisgICAgaW50NjRfdCBvZmZzZXRfbnM7ICAgICAgLyogUUVNVV9DTE9DS19W SVJUVUFMIG5zIGF0IHdoaWNoIGNudHBjdCA9PSAwICovCisgICAgdWludDY0X3QgY250dmFsOyAg ICAgICAgLyogNjQtYml0IHBoeXNpY2FsIHRpbWVyIGNvbXBhcmUgdmFsdWUgKi8KKyAgICB1aW50 MzJfdCBjb250cm9sOworICAgIHVpbnQzMl90IGNudF9jdHJsOworICAgIHVpbnQzMl90IGNudHBs MGFjcjsKKyAgICB1aW50MzJfdCBpbnRfbGV2ZWw7CisgICAgcWVtdV9pcnEgaXJxOworfSBRQ1RI ZXh0aW1lclN0YXRlOworCitzdHJ1Y3QgUUNUUXRpbWVyU3RhdGUgeworICAgIFN5c0J1c0Rldmlj ZSBwYXJlbnRfb2JqOworCisgICAgTWVtb3J5UmVnaW9uIGlvbWVtOworICAgIE1lbW9yeVJlZ2lv biB2aWV3X2lvbWVtOworICAgIHVpbnQzMl90IHNlY3VyZTsKKyAgICBRQ1RIZXh0aW1lclN0YXRl IHRpbWVyW1FDVF9RVElNRVJfVElNRVJfRlJBTUVfRUxUU107CisgICAgdWludDMyX3QgZnJlcV9o ejsKKyAgICB1aW50MzJfdCBucl9mcmFtZXM7CisgICAgdWludDMyX3QgbnJfdmlld3M7CisgICAg dWludDMyX3QgZnJhbWVfc3RyaWRlOworICAgIHVpbnQzMl90IGNudHRpZF8wOworICAgIHVpbnQz Ml90IGNudHRpZF8xOworICAgIHVpbnQzMl90IGZyZXFfc2NhbGU7Cit9OworCisvKgorICogUVRp bWVyIHZlcnNpb24gcmVnaXN0ZXI6CisgKgorICogICAgMyAgICAgICAgICAgICAgICAgICAyICAg ICAgICAgICAgICAgICAgIDEKKyAqICAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUg NCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAKKyAqICstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisgKiB8IE1ham9yIHwg ICAgICAgICBNaW5vciAgICAgICAgIHwgICAgICAgICAgIFN0ZXAgICAgICAgICAgICAgICAgfAor ICogKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst Ky0rLSstKy0rLSsKKyAqLworI2RlZmluZSBRQ1RfUVRJTUVSX1ZFUlNJT05fVkFMVUUgMHgyMDAy MDAwMAorCisvKiBDb3VudGVyIHZhbHVlIGRlcml2ZWQgb24tZGVtYW5kIGZyb20gUUVNVV9DTE9D S19WSVJUVUFMLiAqLworc3RhdGljIHVpbnQ2NF90IGhleF90aW1lcl9ub3coUUNUSGV4dGltZXJT dGF0ZSAqcykKK3sKKyAgICBpbnQ2NF90IG5vdyA9IHFlbXVfY2xvY2tfZ2V0X25zKFFFTVVfQ0xP Q0tfVklSVFVBTCk7CisgICAgdWludDMyX3Qgc2NhbGU7CisgICAgdWludDY0X3Qgc2NhbGVkX2Vs YXBzZWQ7CisKKyAgICBpZiAobm93IDw9IHMtPm9mZnNldF9ucykgeworICAgICAgICByZXR1cm4g MDsKKyAgICB9CisgICAgc2NhbGUgPSBNQVgocy0+cXRpbWVyLT5mcmVxX3NjYWxlLCAxdSk7Cisg ICAgc2NhbGVkX2VsYXBzZWQgPSAodWludDY0X3QpKG5vdyAtIHMtPm9mZnNldF9ucykgLyBzY2Fs ZTsKKyAgICByZXR1cm4gbXVsZGl2NjQoc2NhbGVkX2VsYXBzZWQsIHMtPnF0aW1lci0+ZnJlcV9o eiwKKyAgICAgICAgICAgICAgICAgICAgTkFOT1NFQ09ORFNfUEVSX1NFQ09ORCkgJgorICAgICAg ICAgICBRQ1RfUVRJTUVSX0NOVF9NQVNLOworfQorCisvKiBBcm0gKG9yIGRpc2FybSkgdGhlIG9u ZS1zaG90IGRlYWRsaW5lIHRpbWVyLiAqLworc3RhdGljIHZvaWQgaGV4X3RpbWVyX3JlYXJtKFFD VEhleHRpbWVyU3RhdGUgKnMpCit7CisgICAgdWludDMyX3Qgc2NhbGU7CisgICAgdWludDY0X3Qg YmFzZV9uczsKKyAgICBpbnQ2NF90IGRlYWRsaW5lX25zOworCisgICAgaWYgKCEocy0+Y29udHJv bCAmIFFDVF9RVElNRVJfQ05UUF9DVExfRU5BQkxFKSkgeworICAgICAgICB0aW1lcl9kZWwocy0+ dGltZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2NhbGUgPSBNQVgocy0+cXRp bWVyLT5mcmVxX3NjYWxlLCAxdSk7CisgICAgLyoKKyAgICAgKiBSb3VuZCB0aGUgdGlja3MtdG8t bnMgY29udmVyc2lvbiB1cCBzbyB0aGF0IGhleF90aW1lcl9ub3coKSwgd2hpY2gKKyAgICAgKiB0 cnVuY2F0ZXMgd2hlbiBpdCBkaXZpZGVzIGVsYXBzZWQgbnMgYnkgc2NhbGUsIGlzIGd1YXJhbnRl ZWQgdG8KKyAgICAgKiByZXBvcnQgPj0gY250dmFsIG9uY2UgdGhpcyBkZWFkbGluZSBmaXJlcy4g QSB0cnVuY2F0aW5nIGNvbnZlcnNpb24KKyAgICAgKiBoZXJlIGNvdWxkIHJlLWFybSBhdCB0aGUg c2FtZSBkZWFkbGluZSBmb3JldmVyIHdoZW4gc2NhbGUgPiAxLgorICAgICAqLworICAgIGJhc2Vf bnMgPSBtdWxkaXY2NF9yb3VuZF91cChzLT5jbnR2YWwsIE5BTk9TRUNPTkRTX1BFUl9TRUNPTkQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnF0aW1lci0+ZnJlcV9oeik7Cisg ICAgaWYgKGJhc2VfbnMgPgorICAgICAgICAoKHVpbnQ2NF90KUlOVDY0X01BWCAtICh1aW50NjRf dClzLT5vZmZzZXRfbnMpIC8gc2NhbGUpIHsKKyAgICAgICAgdGltZXJfZGVsKHMtPnRpbWVyKTsK KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkZWFkbGluZV9ucyA9IHMtPm9mZnNldF9ucyAr IChpbnQ2NF90KShiYXNlX25zICogc2NhbGUpOworICAgIHRpbWVyX21vZChzLT50aW1lciwgZGVh ZGxpbmVfbnMpOworfQorCitzdGF0aWMgdm9pZCBoZXhfdGltZXJfdXBkYXRlKFFDVEhleHRpbWVy U3RhdGUgKnMpCit7CisgICAgaW50IGxldmVsID0gcy0+aW50X2xldmVsICYmCisgICAgICAgICAg ICAgICAgKHMtPmNvbnRyb2wgJiBRQ1RfUVRJTUVSX0NOVFBfQ1RMX0VOQUJMRSkgJiYKKyAgICAg ICAgICAgICAgICAhKHMtPmNvbnRyb2wgJiBRQ1RfUVRJTUVSX0NOVFBfQ1RMX0lOVEVOKTsKKwor ICAgIHRyYWNlX3F0aW1lcl9pbnRlcnJ1cHQoKTsKKyAgICBxZW11X3NldF9pcnEocy0+aXJxLCBs ZXZlbCk7Cit9CisKKy8qCisgKiBBY2Nlc3MtY29udHJvbCAoQUMpIHJlZ2lvbjogb2Zmc2V0cyBi ZWxvdyAweDEwMDAsIGdhdGVzIENOVEZSUS9DTlRTUi8KKyAqIENOVFRJRC9DTlRBQ1IgcGVyIGZy YW1lIHBsdXMgdGhlIHNoYXJlZCBWRVJTSU9OIHJlZ2lzdGVyLgorICovCitzdGF0aWMgdWludDY0 X3QgcWN0X3F0aW1lcl9hY19yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwgdW5zaWdu ZWQgc2l6ZSkKK3sKKyAgICBRQ1RRdGltZXJTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAgICB1aW50MzJf dCBmcmFtZTsKKworICAgIHN3aXRjaCAob2Zmc2V0KSB7CisgICAgY2FzZSBRQ1RfUVRJTUVSX0FD X0NOVEZSUToKKyAgICAgICAgcmV0dXJuIHMtPmZyZXFfaHo7CisgICAgY2FzZSBRQ1RfUVRJTUVS X0FDX0NOVFNSOgorICAgICAgICByZXR1cm4gcy0+c2VjdXJlOworICAgIGNhc2UgUUNUX1FUSU1F Ul9BQ19DTlRUSURfMDoKKyAgICAgICAgcmV0dXJuIHMtPmNudHRpZF8wOworICAgIGNhc2UgUUNU X1FUSU1FUl9BQ19DTlRUSURfMToKKyAgICAgICAgcmV0dXJuIHMtPmNudHRpZF8xOworICAgIGNh c2UgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfU1RBUlQgLi4uIFFDVF9RVElNRVJfQUNfQ05UQUNSX0VO RDoKKyAgICAgICAgZnJhbWUgPSAob2Zmc2V0IC0gUUNUX1FUSU1FUl9BQ19DTlRBQ1JfU1RBUlQp IC8gNDsKKyAgICAgICAgaWYgKGZyYW1lID49IHMtPm5yX2ZyYW1lcykgeworICAgICAgICAgICAg cWVtdV9sb2dfbWFzayhMT0dfR1VFU1RfRVJST1IsICIlczogYmFkIENOVEFDUiBvZmZzZXQgMHgl eFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIChpbnQpb2Zmc2V0KTsK KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzLT50aW1l cltmcmFtZV0uY250X2N0cmw7CisgICAgY2FzZSBRQ1RfUVRJTUVSX1ZFUlNJT046CisgICAgICAg IHJldHVybiBRQ1RfUVRJTUVSX1ZFUlNJT05fVkFMVUU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg cWVtdV9sb2dfbWFzayhMT0dfR1VFU1RfRVJST1IsICIlczogYmFkIG9mZnNldCAweCV4XG4iLCBf X2Z1bmNfXywKKyAgICAgICAgICAgICAgICAgICAgICAoaW50KW9mZnNldCk7CisgICAgICAgIHJl dHVybiAwOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcWN0X3F0aW1lcl9hY193cml0ZSh2b2lk ICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsIHVpbnQ2NF90IHZhbHVlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaXplKQoreworICAgIFFDVFF0aW1lclN0YXRlICpz ID0gb3BhcXVlOworICAgIHVpbnQzMl90IGZyYW1lOworCisgICAgc3dpdGNoIChvZmZzZXQpIHsK KyAgICBjYXNlIFFDVF9RVElNRVJfQUNfQ05URlJROgorICAgICAgICBpZiAodmFsdWUgPT0gMCkg eworICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhMT0dfR1VFU1RfRVJST1IsICIlczogYmFkIENO VEZSUSB2YWx1ZSAwXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7Cisg ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcy0+ZnJlcV9oeiA9IHZhbHVl OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBRQ1RfUVRJTUVSX0FDX0NOVFNSOgorICAgICAg ICBpZiAodmFsdWUgPiAweGZmKSB7CisgICAgICAgICAgICBxZW11X2xvZ19tYXNrKExPR19HVUVT VF9FUlJPUiwgIiVzOiBiYWQgQ05UU1IgdmFsdWUgMHgleFxuIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgX19mdW5jX18sIChpbnQpdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAg ICAgICB9CisgICAgICAgIHMtPnNlY3VyZSA9IHZhbHVlOworICAgICAgICByZXR1cm47CisgICAg Y2FzZSBRQ1RfUVRJTUVSX0FDX0NOVEFDUl9TVEFSVCAuLi4gUUNUX1FUSU1FUl9BQ19DTlRBQ1Jf RU5EOgorICAgICAgICBmcmFtZSA9IChvZmZzZXQgLSBRQ1RfUVRJTUVSX0FDX0NOVEFDUl9TVEFS VCkgLyA0OworICAgICAgICBpZiAoZnJhbWUgPj0gcy0+bnJfZnJhbWVzKSB7CisgICAgICAgICAg ICBxZW11X2xvZ19tYXNrKExPR19HVUVTVF9FUlJPUiwgIiVzOiBiYWQgQ05UQUNSIG9mZnNldCAw eCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgKGludClvZmZzZXQp OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHMtPnRpbWVyW2ZyYW1l XS5jbnRfY3RybCA9IHZhbHVlOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAg ICAgcWVtdV9sb2dfbWFzayhMT0dfR1VFU1RfRVJST1IsICIlczogYmFkIG9mZnNldCAweCV4XG4i LCBfX2Z1bmNfXywKKyAgICAgICAgICAgICAgICAgICAgICAoaW50KW9mZnNldCk7CisgICAgICAg IHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyBjb25zdCBNZW1vcnlSZWdpb25PcHMgcWN0X3F0 aW1lcl9hY19vcHMgPSB7CisgICAgLnJlYWQgPSBxY3RfcXRpbWVyX2FjX3JlYWQsCisgICAgLndy aXRlID0gcWN0X3F0aW1lcl9hY193cml0ZSwKKyAgICAuZW5kaWFubmVzcyA9IERFVklDRV9MSVRU TEVfRU5ESUFOLAorICAgIC52YWxpZCA9IHsKKyAgICAgICAgLm1pbl9hY2Nlc3Nfc2l6ZSA9IDQs CisgICAgICAgIC5tYXhfYWNjZXNzX3NpemUgPSA0LAorICAgICAgICAudW5hbGlnbmVkID0gZmFs c2UsCisgICAgfSwKKyAgICAuaW1wbCA9IHsKKyAgICAgICAgLm1pbl9hY2Nlc3Nfc2l6ZSA9IDQs CisgICAgICAgIC5tYXhfYWNjZXNzX3NpemUgPSA0LAorICAgIH0sCit9OworCisvKgorICogVmll dyByZWdpb246IGEgZmxhdCBhcnJheSBvZiAoZnJhbWUsIHZpZXcpIHNsb3RzLCBlYWNoIGZyYW1l X3N0cmlkZQorICogYnl0ZXMgd2lkZSwgaG9sZGluZyB0aGUgcGVyLWZyYW1lIENOVFBDVC9DTlRQ X0NWQUwvQ05UUF9UVkFML0NOVFBfQ1RMCisgKiByZWdpc3RlciBzZXQuCisgKi8KK3N0YXRpYyBR Q1RIZXh0aW1lclN0YXRlICpxY3RfcXRpbWVyX2RlbXV4KFFDVFF0aW1lclN0YXRlICpzLCBod2Fk ZHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgKnJlZ19vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCAqdmlldykKK3sKKyAgICB1aW50MzJfdCBzdHJpZGUgPSBzLT5mcmFtZV9z dHJpZGU7CisgICAgdWludDMyX3Qgc3RyaWRlX3NoaWZ0ID0gY3R6MzIoc3RyaWRlKTsKKyAgICB1 aW50MzJfdCBzbG90X25yID0gb2Zmc2V0ID4+IHN0cmlkZV9zaGlmdDsKKyAgICB1aW50MzJfdCBm cmFtZSA9IHNsb3RfbnIgLyBzLT5ucl92aWV3czsKKworICAgICpyZWdfb2Zmc2V0ID0gb2Zmc2V0 ICYgKHN0cmlkZSAtIDEpOworICAgICp2aWV3ID0gc2xvdF9uciAlIHMtPm5yX3ZpZXdzOworICAg IGlmIChmcmFtZSA+PSBzLT5ucl9mcmFtZXMpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg fQorICAgIHJldHVybiAmcy0+dGltZXJbZnJhbWVdOworfQorCisvKiBGcmFtZXMgOCsgc2hhcmUg Y250dGlkXzE7IGVhY2ggZnJhbWUncyBzZWNvbmQgdmlldyBpcyBnYXRlZCBieSBhIGJpdC4gKi8K K3N0YXRpYyBib29sIHFjdF9xdGltZXJfdmlld192aXNpYmxlKFFDVFF0aW1lclN0YXRlICpzLCB1 aW50MzJfdCBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IHZpZXcpCit7CisgICAgdWludDMyX3QgY250dGlkID0gZnJhbWUgPCA4ID8gcy0+Y250dGlk XzAgOiBzLT5jbnR0aWRfMTsKKyAgICB1aW50MzJfdCBmcmFtZV9pZHggPSBmcmFtZSA8IDggPyBm cmFtZSA6IGZyYW1lIC0gODsKKworICAgIHJldHVybiAhdmlldyB8fCAoY250dGlkICYgKDB4NCA8 PCAoZnJhbWVfaWR4ICogNCkpKTsKK30KKworc3RhdGljIE1lbVR4UmVzdWx0IGhleF90aW1lcl9y ZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwgdWludDY0X3QgKmRhdGEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2l6ZSwgTWVtVHhBdHRycyBhdHRy cykKK3sKKyAgICBRQ1RRdGltZXJTdGF0ZSAqcXMgPSBvcGFxdWU7CisgICAgdWludDMyX3QgcmVn X29mZnNldDsKKyAgICB1aW50MzJfdCB2aWV3OworICAgIFFDVEhleHRpbWVyU3RhdGUgKnMgPSBx Y3RfcXRpbWVyX2RlbXV4KHFzLCBvZmZzZXQsICZyZWdfb2Zmc2V0LCAmdmlldyk7CisgICAgdWlu dDMyX3QgZnJhbWU7CisKKyAgICBpZiAoIXMpIHsKKyAgICAgICAgKmRhdGEgPSAwOworICAgICAg ICByZXR1cm4gTUVNVFhfQUNDRVNTX0VSUk9SOworICAgIH0KKyAgICBmcmFtZSA9IHMgLSBxcy0+ dGltZXI7CisKKyAgICB0cmFjZV9xdGltZXJfcmVhZChvZmZzZXQpOworCisgICAgaWYgKCFxY3Rf cXRpbWVyX3ZpZXdfdmlzaWJsZShxcywgZnJhbWUsIHZpZXcpKSB7CisgICAgICAgICpkYXRhID0g MDsKKyAgICAgICAgcmV0dXJuIE1FTVRYX09LOworICAgIH0KKworICAgIHN3aXRjaCAocmVnX29m ZnNldCkgeworICAgIGNhc2UgUUNUX1FUSU1FUl9DTlRfRlJFUToKKyAgICAgICAgaWYgKCEocy0+ Y250X2N0cmwgJiBRQ1RfUVRJTUVSX0FDX0NOVEFDUl9SRlJRKSkgeworICAgICAgICAgICAgcmV0 dXJuIE1FTVRYX0FDQ0VTU19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBpZiAodmlldyAmJiAh KHMtPmNudHBsMGFjciAmIChRQ1RfUVRJTUVSX0NOVFBMMEFDUl9QTDBQQ1RFTiB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDVF9RVElNRVJfQ05UUEwwQUNSX1BMMFZD VEVOKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBNRU1UWF9BQ0NFU1NfRVJST1I7CisgICAgICAg IH0KKyAgICAgICAgKmRhdGEgPSBzLT5xdGltZXItPmZyZXFfaHo7CisgICAgICAgIHJldHVybiBN RU1UWF9PSzsKKyAgICBjYXNlIFFDVF9RVElNRVJfQ05UUF9DVkFMX0xPOgorICAgICAgICBpZiAo IShzLT5jbnRfY3RybCAmIFFDVF9RVElNRVJfQUNfQ05UQUNSX1JXUFQpKSB7CisgICAgICAgICAg ICByZXR1cm4gTUVNVFhfQUNDRVNTX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGlmICh2aWV3 ICYmICEocy0+Y250cGwwYWNyICYgUUNUX1FUSU1FUl9DTlRQTDBBQ1JfUEwwQ1RFTikpIHsKKyAg ICAgICAgICAgIHJldHVybiBNRU1UWF9BQ0NFU1NfRVJST1I7CisgICAgICAgIH0KKyAgICAgICAg KmRhdGEgPSBleHRyYWN0NjQocy0+Y250dmFsLCAwLCAzMik7CisgICAgICAgIHJldHVybiBNRU1U WF9PSzsKKyAgICBjYXNlIFFDVF9RVElNRVJfQ05UUF9DVkFMX0hJOgorICAgICAgICBpZiAoIShz LT5jbnRfY3RybCAmIFFDVF9RVElNRVJfQUNfQ05UQUNSX1JXUFQpKSB7CisgICAgICAgICAgICBy ZXR1cm4gTUVNVFhfQUNDRVNTX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGlmICh2aWV3ICYm ICEocy0+Y250cGwwYWNyICYgUUNUX1FUSU1FUl9DTlRQTDBBQ1JfUEwwQ1RFTikpIHsKKyAgICAg ICAgICAgIHJldHVybiBNRU1UWF9BQ0NFU1NfRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgLyog SEkgaGFsZiBpcyAyNC1iaXQgcGVyIFRSTTsgYml0cyBbMzE6MjRdIGFyZSByZXNlcnZlZC4gKi8K KyAgICAgICAgKmRhdGEgPSBleHRyYWN0NjQocy0+Y250dmFsLCAzMiwgUUNUX1FUSU1FUl9DTlRf SElfQklUUyk7CisgICAgICAgIHJldHVybiBNRU1UWF9PSzsKKyAgICBjYXNlIFFDVF9RVElNRVJf Q05UUENUX0xPOgorICAgICAgICBpZiAoIShzLT5jbnRfY3RybCAmIFFDVF9RVElNRVJfQUNfQ05U QUNSX1JQQ1QpKSB7CisgICAgICAgICAgICByZXR1cm4gTUVNVFhfQUNDRVNTX0VSUk9SOworICAg ICAgICB9CisgICAgICAgIGlmICh2aWV3ICYmICEocy0+Y250cGwwYWNyICYgUUNUX1FUSU1FUl9D TlRQTDBBQ1JfUEwwUENURU4pKSB7CisgICAgICAgICAgICByZXR1cm4gTUVNVFhfQUNDRVNTX0VS Uk9SOworICAgICAgICB9CisgICAgICAgICpkYXRhID0gZXh0cmFjdDY0KGhleF90aW1lcl9ub3co cyksIDAsIDMyKTsKKyAgICAgICAgcmV0dXJuIE1FTVRYX09LOworICAgIGNhc2UgUUNUX1FUSU1F Ul9DTlRQQ1RfSEk6CisgICAgICAgIGlmICghKHMtPmNudF9jdHJsICYgUUNUX1FUSU1FUl9BQ19D TlRBQ1JfUlBDVCkpIHsKKyAgICAgICAgICAgIHJldHVybiBNRU1UWF9BQ0NFU1NfRVJST1I7Cisg ICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXcgJiYgIShzLT5jbnRwbDBhY3IgJiBRQ1RfUVRJTUVS X0NOVFBMMEFDUl9QTDBQQ1RFTikpIHsKKyAgICAgICAgICAgIHJldHVybiBNRU1UWF9BQ0NFU1Nf RVJST1I7CisgICAgICAgIH0KKyAgICAgICAgKmRhdGEgPSBleHRyYWN0NjQoaGV4X3RpbWVyX25v dyhzKSwgMzIsIFFDVF9RVElNRVJfQ05UX0hJX0JJVFMpOworICAgICAgICByZXR1cm4gTUVNVFhf T0s7CisgICAgY2FzZSBRQ1RfUVRJTUVSX0NOVFBfVFZBTDoKKyAgICAgICAgaWYgKCEocy0+Y250 X2N0cmwgJiBRQ1RfUVRJTUVSX0FDX0NOVEFDUl9SV1BUKSkgeworICAgICAgICAgICAgcmV0dXJu IE1FTVRYX0FDQ0VTU19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBpZiAodmlldyAmJiAhKHMt PmNudHBsMGFjciAmIFFDVF9RVElNRVJfQ05UUEwwQUNSX1BMMENURU4pKSB7CisgICAgICAgICAg ICByZXR1cm4gTUVNVFhfQUNDRVNTX0VSUk9SOworICAgICAgICB9CisgICAgICAgICpkYXRhID0g KHVpbnQzMl90KShpbnQzMl90KShpbnQ2NF90KShzLT5jbnR2YWwgLSBoZXhfdGltZXJfbm93KHMp KTsKKyAgICAgICAgcmV0dXJuIE1FTVRYX09LOworICAgIGNhc2UgUUNUX1FUSU1FUl9DTlRQX0NU TDoKKyAgICAgICAgaWYgKCEocy0+Y250X2N0cmwgJiBRQ1RfUVRJTUVSX0FDX0NOVEFDUl9SV1BU KSkgeworICAgICAgICAgICAgcmV0dXJuIE1FTVRYX0FDQ0VTU19FUlJPUjsKKyAgICAgICAgfQor ICAgICAgICBpZiAodmlldyAmJiAhKHMtPmNudHBsMGFjciAmIFFDVF9RVElNRVJfQ05UUEwwQUNS X1BMMENURU4pKSB7CisgICAgICAgICAgICByZXR1cm4gTUVNVFhfQUNDRVNTX0VSUk9SOworICAg ICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqIENOVFBfQ1RMOiBiaXQgMCBFTiwgYml0IDEg SU1BU0ssIGJpdCAyIElTVEFUIChpbnRlcnJ1cHQKKyAgICAgICAgICogcGVuZGluZykuIElTVEFU IHRyYWNrcyBpbnRfbGV2ZWwgYW5kIGlzIHJlYWQtb25seS4KKyAgICAgICAgICovCisgICAgICAg ICpkYXRhID0gcy0+Y29udHJvbCB8ICgocy0+aW50X2xldmVsICYgMHgxKSA8PCAyKTsKKyAgICAg ICAgcmV0dXJuIE1FTVRYX09LOworICAgIGNhc2UgUUNUX1FUSU1FUl9DTlRQTDBBQ1I6CisgICAg ICAgICpkYXRhID0gdmlldyA/IDAgOiBzLT5jbnRwbDBhY3I7CisgICAgICAgIHJldHVybiBNRU1U WF9PSzsKKyAgICBjYXNlIFFDVF9RVElNRVJfVkVSU0lPTjoKKyAgICAgICAgKmRhdGEgPSBRQ1Rf UVRJTUVSX1ZFUlNJT05fVkFMVUU7CisgICAgICAgIHJldHVybiBNRU1UWF9PSzsKKyAgICBkZWZh dWx0OgorICAgICAgICBxZW11X2xvZ19tYXNrKExPR19HVUVTVF9FUlJPUiwgIiVzOiBiYWQgb2Zm c2V0IDB4JXhcbiIsIF9fZnVuY19fLAorICAgICAgICAgICAgICAgICAgICAgIChpbnQpb2Zmc2V0 KTsKKyAgICAgICAgKmRhdGEgPSAwOworICAgICAgICByZXR1cm4gTUVNVFhfQUNDRVNTX0VSUk9S OworICAgIH0KK30KKworc3RhdGljIE1lbVR4UmVzdWx0IGhleF90aW1lcl93cml0ZSh2b2lkICpv cGFxdWUsIGh3YWRkciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ2NF90IHZhbHVlLCB1bnNpZ25lZCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNZW1UeEF0dHJzIGF0dHJzKQoreworICAgIFFDVFF0aW1lclN0YXRlICpxcyA9 IG9wYXF1ZTsKKyAgICB1aW50MzJfdCByZWdfb2Zmc2V0OworICAgIHVpbnQzMl90IHZpZXc7Cisg ICAgUUNUSGV4dGltZXJTdGF0ZSAqcyA9IHFjdF9xdGltZXJfZGVtdXgocXMsIG9mZnNldCwgJnJl Z19vZmZzZXQsICZ2aWV3KTsKKyAgICB1aW50MzJfdCBmcmFtZTsKKworICAgIGlmICghcykgewor ICAgICAgICByZXR1cm4gTUVNVFhfQUNDRVNTX0VSUk9SOworICAgIH0KKyAgICBmcmFtZSA9IHMg LSBxcy0+dGltZXI7CisKKyAgICB0cmFjZV9xdGltZXJfd3JpdGUob2Zmc2V0LCB2YWx1ZSk7CisK KyAgICBpZiAoIXFjdF9xdGltZXJfdmlld192aXNpYmxlKHFzLCBmcmFtZSwgdmlldykpIHsKKyAg ICAgICAgcmV0dXJuIE1FTVRYX09LOworICAgIH0KKworICAgIHN3aXRjaCAocmVnX29mZnNldCkg eworICAgIGNhc2UgUUNUX1FUSU1FUl9DTlRQX0NWQUxfTE86CisgICAgICAgIGlmICghKHMtPmNu dF9jdHJsICYgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfUldQVCkpIHsKKyAgICAgICAgICAgIHJldHVy biBNRU1UWF9BQ0NFU1NfRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXcgJiYgIShz LT5jbnRwbDBhY3IgJiBRQ1RfUVRJTUVSX0NOVFBMMEFDUl9QTDBDVEVOKSkgeworICAgICAgICAg ICAgcmV0dXJuIE1FTVRYX0FDQ0VTU19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBzLT5pbnRf bGV2ZWwgPSAwOworICAgICAgICBzLT5jbnR2YWwgPSBkZXBvc2l0NjQocy0+Y250dmFsLCAwLCAz MiwgdmFsdWUpOworICAgICAgICBoZXhfdGltZXJfcmVhcm0ocyk7CisgICAgICAgIGJyZWFrOwor ICAgIGNhc2UgUUNUX1FUSU1FUl9DTlRQX0NWQUxfSEk6CisgICAgICAgIGlmICghKHMtPmNudF9j dHJsICYgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfUldQVCkpIHsKKyAgICAgICAgICAgIHJldHVybiBN RU1UWF9BQ0NFU1NfRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXcgJiYgIShzLT5j bnRwbDBhY3IgJiBRQ1RfUVRJTUVSX0NOVFBMMEFDUl9QTDBDVEVOKSkgeworICAgICAgICAgICAg cmV0dXJuIE1FTVRYX0FDQ0VTU19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBzLT5pbnRfbGV2 ZWwgPSAwOworICAgICAgICAvKiBISSBoYWxmIGlzIDI0LWJpdCBwZXIgVFJNOyBiaXRzIFszMToy NF0gYXJlIHJlc2VydmVkLiAqLworICAgICAgICBzLT5jbnR2YWwgPSBkZXBvc2l0NjQocy0+Y250 dmFsLCAzMiwgUUNUX1FUSU1FUl9DTlRfSElfQklUUywgdmFsdWUpICYKKyAgICAgICAgICAgICAg ICAgICAgUUNUX1FUSU1FUl9DTlRfTUFTSzsKKyAgICAgICAgaGV4X3RpbWVyX3JlYXJtKHMpOwor ICAgICAgICBicmVhazsKKyAgICBjYXNlIFFDVF9RVElNRVJfQ05UUF9DVEw6CisgICAgICAgIGlm ICghKHMtPmNudF9jdHJsICYgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfUldQVCkpIHsKKyAgICAgICAg ICAgIHJldHVybiBNRU1UWF9BQ0NFU1NfRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZp ZXcgJiYgIShzLT5jbnRwbDBhY3IgJiBRQ1RfUVRJTUVSX0NOVFBMMEFDUl9QTDBDVEVOKSkgewor ICAgICAgICAgICAgcmV0dXJuIE1FTVRYX0FDQ0VTU19FUlJPUjsKKyAgICAgICAgfQorICAgICAg ICAvKiBJU1RBVCAoYml0IDIpIGlzIHJlYWQtb25seTsga2VlcCBTVyB3cml0ZXMgZnJvbSBwb2xs dXRpbmcgaXQuICovCisgICAgICAgIHMtPmNvbnRyb2wgPSB2YWx1ZSAmIH5RQ1RfUVRJTUVSX0NO VFBfQ1RMX0lTVEFUOworICAgICAgICBoZXhfdGltZXJfcmVhcm0ocyk7CisgICAgICAgIGJyZWFr OworICAgIGNhc2UgUUNUX1FUSU1FUl9DTlRQX1RWQUw6CisgICAgICAgIGlmICghKHMtPmNudF9j dHJsICYgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfUldQVCkpIHsKKyAgICAgICAgICAgIHJldHVybiBN RU1UWF9BQ0NFU1NfRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXcgJiYgIShzLT5j bnRwbDBhY3IgJiBRQ1RfUVRJTUVSX0NOVFBMMEFDUl9QTDBDVEVOKSkgeworICAgICAgICAgICAg cmV0dXJuIE1FTVRYX0FDQ0VTU19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICAvKiBUVkFMIHdy aXRlOiBDVkFMID0gQ05UUENUICsgVFZBTCAoVFZBTCBpcyBzaWduZWQgMzItYml0KS4gKi8KKyAg ICAgICAgcy0+aW50X2xldmVsID0gMDsKKyAgICAgICAgcy0+Y250dmFsID0gKGhleF90aW1lcl9u b3cocykgKyAoaW50NjRfdCkoaW50MzJfdCl2YWx1ZSkgJgorICAgICAgICAgICAgICAgICAgICBR Q1RfUVRJTUVSX0NOVF9NQVNLOworICAgICAgICBoZXhfdGltZXJfcmVhcm0ocyk7CisgICAgICAg IGJyZWFrOworICAgIGNhc2UgUUNUX1FUSU1FUl9DTlRQTDBBQ1I6CisgICAgICAgIGlmICghdmll dykgeworICAgICAgICAgICAgcy0+Y250cGwwYWNyID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAg ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcWVtdV9sb2dfbWFzayhMT0dfR1VFU1Rf RVJST1IsICIlczogYmFkIG9mZnNldCAweCV4XG4iLCBfX2Z1bmNfXywKKyAgICAgICAgICAgICAg ICAgICAgICAoaW50KW9mZnNldCk7CisgICAgICAgIHJldHVybiBNRU1UWF9BQ0NFU1NfRVJST1I7 CisgICAgfQorICAgIGhleF90aW1lcl91cGRhdGUocyk7CisgICAgcmV0dXJuIE1FTVRYX09LOwor fQorCitzdGF0aWMgdm9pZCBoZXhfdGltZXJfdGljayh2b2lkICpvcGFxdWUpCit7CisgICAgUUNU SGV4dGltZXJTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAgICB1aW50NjRfdCBub3cgPSBoZXhfdGltZXJf bm93KHMpOworICAgIHVpbnQ2NF90IGRpZmY1NiA9IChub3cgLSBzLT5jbnR2YWwpICYgUUNUX1FU SU1FUl9DTlRfTUFTSzsKKyAgICBpbnQ2NF90IHNpZ25lZF9kaWZmID0gKGludDY0X3QpKGRpZmY1 NiA8PCA4KSA+PiA4OworCisgICAgaWYgKHNpZ25lZF9kaWZmID49IDApIHsKKyAgICAgICAgcy0+ aW50X2xldmVsID0gMTsKKyAgICAgICAgaGV4X3RpbWVyX3VwZGF0ZShzKTsKKyAgICB9IGVsc2Ug eworICAgICAgICBoZXhfdGltZXJfcmVhcm0ocyk7CisgICAgfQorfQorCitzdGF0aWMgY29uc3Qg TWVtb3J5UmVnaW9uT3BzIGhleF90aW1lcl9vcHMgPSB7CisgICAgLnJlYWRfd2l0aF9hdHRycyA9 IGhleF90aW1lcl9yZWFkLAorICAgIC53cml0ZV93aXRoX2F0dHJzID0gaGV4X3RpbWVyX3dyaXRl LAorICAgIC5lbmRpYW5uZXNzID0gREVWSUNFX0xJVFRMRV9FTkRJQU4sCisgICAgLnZhbGlkID0g eworICAgICAgICAubWluX2FjY2Vzc19zaXplID0gNCwKKyAgICAgICAgLm1heF9hY2Nlc3Nfc2l6 ZSA9IDgsCisgICAgICAgIC51bmFsaWduZWQgPSBmYWxzZSwKKyAgICB9LAorICAgIC5pbXBsID0g eworICAgICAgICAubWluX2FjY2Vzc19zaXplID0gNCwKKyAgICAgICAgLm1heF9hY2Nlc3Nfc2l6 ZSA9IDQsCisgICAgfSwKK307CisKK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1z dGF0ZV9xY3RfaGV4dGltZXIgPSB7CisgICAgLm5hbWUgPSAicWN0LWhleHRpbWVyIiwKKyAgICAu dmVyc2lvbl9pZCA9IDEsCisgICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDEsCisgICAgLmZpZWxk cyA9IChjb25zdCBWTVN0YXRlRmllbGRbXSkgeworICAgICAgICBWTVNUQVRFX1VJTlQzMihjb250 cm9sLCBRQ1RIZXh0aW1lclN0YXRlKSwKKyAgICAgICAgVk1TVEFURV9VSU5UMzIoY250X2N0cmws IFFDVEhleHRpbWVyU3RhdGUpLAorICAgICAgICBWTVNUQVRFX0lOVDY0KG9mZnNldF9ucywgUUNU SGV4dGltZXJTdGF0ZSksCisgICAgICAgIFZNU1RBVEVfVUlOVDY0KGNudHZhbCwgUUNUSGV4dGlt ZXJTdGF0ZSksCisgICAgICAgIFZNU1RBVEVfVUlOVDMyKGNudHBsMGFjciwgUUNUSGV4dGltZXJT dGF0ZSksCisgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludF9sZXZlbCwgUUNUSGV4dGltZXJTdGF0 ZSksCisgICAgICAgIFZNU1RBVEVfVElNRVJfUFRSKHRpbWVyLCBRQ1RIZXh0aW1lclN0YXRlKSwK KyAgICAgICAgVk1TVEFURV9FTkRfT0ZfTElTVCgpCisgICAgfQorfTsKKworc3RhdGljIGNvbnN0 IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3FjdF9xdGltZXIgPSB7CisgICAgLm5hbWUgPSAi cWN0LXF0aW1lciIsCisgICAgLnZlcnNpb25faWQgPSAxLAorICAgIC5taW5pbXVtX3ZlcnNpb25f aWQgPSAxLAorICAgIC5maWVsZHMgPSAoY29uc3QgVk1TdGF0ZUZpZWxkW10pIHsKKyAgICAgICAg Vk1TVEFURV9VSU5UMzIoZnJlcV9oeiwgUUNUUXRpbWVyU3RhdGUpLAorICAgICAgICBWTVNUQVRF X1VJTlQzMihzZWN1cmUsIFFDVFF0aW1lclN0YXRlKSwKKyAgICAgICAgVk1TVEFURV9TVFJVQ1Rf VkFSUkFZX1VJTlQzMih0aW1lciwgUUNUUXRpbWVyU3RhdGUsIG5yX2ZyYW1lcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIHZtc3RhdGVfcWN0X2hleHRpbWVyLCBRQ1RI ZXh0aW1lclN0YXRlKSwKKyAgICAgICAgVk1TVEFURV9FTkRfT0ZfTElTVCgpCisgICAgfQorfTsK Kworc3RhdGljIHZvaWQgcWN0X3F0aW1lcl9yZWFsaXplKERldmljZVN0YXRlICpkZXYsIEVycm9y ICoqZXJycCkKK3sKKyAgICBTeXNCdXNEZXZpY2UgKnNiZCA9IFNZU19CVVNfREVWSUNFKGRldik7 CisgICAgUUNUUXRpbWVyU3RhdGUgKnMgPSBRQ1RfUVRJTUVSKGRldik7CisgICAgdW5zaWduZWQg aW50IGk7CisKKyAgICBpZiAocy0+bnJfZnJhbWVzID4gUUNUX1FUSU1FUl9USU1FUl9GUkFNRV9F TFRTKSB7CisgICAgICAgIGVycm9yX3NldGcoZXJycCwgIm5yX2ZyYW1lcyB0b28gaGlnaCIpOwor ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzLT5ucl92aWV3cyA+IFFDVF9RVElNRVJf VElNRVJfVklFV19FTFRTKSB7CisgICAgICAgIGVycm9yX3NldGcoZXJycCwgIm5yX3ZpZXdzIHRv byBoaWdoIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHMtPmZyZXFfaHogPT0g MCkgeworICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJmcmVxLWh6IG11c3QgYmUgbm9uemVybyIp OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzLT5mcmFtZV9zdHJpZGUgPT0gMCB8 fCAhaXNfcG93ZXJfb2ZfMihzLT5mcmFtZV9zdHJpZGUpKSB7CisgICAgICAgIGVycm9yX3NldGco ZXJycCwgImZyYW1lX3N0cmlkZSBtdXN0IGJlIGEgbm9uemVybyBwb3dlciBvZiB0d28iKTsKKyAg ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1lbW9yeV9yZWdpb25faW5pdF9pbygmcy0+aW9t ZW0sIE9CSkVDVChzKSwgJnFjdF9xdGltZXJfYWNfb3BzLCBzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAicWN0LXF0aW1lci1hYyIsIFFUSU1FUl9NRU1fU0laRV9CWVRFUyk7CisgICAgc3lz YnVzX2luaXRfbW1pbyhzYmQsICZzLT5pb21lbSk7CisKKyAgICBtZW1vcnlfcmVnaW9uX2luaXRf aW8oJnMtPnZpZXdfaW9tZW0sIE9CSkVDVChzKSwgJmhleF90aW1lcl9vcHMsIHMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICJxY3QtcXRpbWVyLXZpZXciLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAodWludDY0X3Qpcy0+ZnJhbWVfc3RyaWRlICogcy0+bnJfZnJhbWVzICoKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgcy0+bnJfdmlld3MpOworICAgIHN5c2J1c19pbml0X21taW8o c2JkLCAmcy0+dmlld19pb21lbSk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bnJfZnJhbWVz OyBpKyspIHsKKyAgICAgICAgUUNUSGV4dGltZXJTdGF0ZSAqdCA9ICZzLT50aW1lcltpXTsKKwor ICAgICAgICB0LT5xdGltZXIgPSBzOworICAgICAgICBzLT5zZWN1cmUgfD0gKDEgPDwgaSk7CisK KyAgICAgICAgc3lzYnVzX2luaXRfaXJxKHNiZCwgJnQtPmlycSk7CisgICAgICAgIHQtPnRpbWVy ID0gdGltZXJfbmV3X25zKFFFTVVfQ0xPQ0tfVklSVFVBTCwgaGV4X3RpbWVyX3RpY2ssIHQpOwor ICAgIH0KK30KKworc3RhdGljIHZvaWQgcWN0X3F0aW1lcl91bnJlYWxpemUoRGV2aWNlU3RhdGUg KmRldikKK3sKKyAgICBRQ1RRdGltZXJTdGF0ZSAqcyA9IFFDVF9RVElNRVIoZGV2KTsKKyAgICB1 bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzLT5ucl9mcmFtZXM7IGkrKykg eworICAgICAgICBRQ1RIZXh0aW1lclN0YXRlICp0ID0gJnMtPnRpbWVyW2ldOworCisgICAgICAg IGlmICh0LT50aW1lcikgeworICAgICAgICAgICAgdGltZXJfZnJlZSh0LT50aW1lcik7CisgICAg ICAgICAgICB0LT50aW1lciA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2 b2lkIHFjdF9xdGltZXJfcmVzZXRfaG9sZChPYmplY3QgKm9iaiwgUmVzZXRUeXBlIHR5cGUpCit7 CisgICAgUUNUUXRpbWVyU3RhdGUgKnMgPSBRQ1RfUVRJTUVSKG9iaik7CisgICAgdW5zaWduZWQg aW50IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bnJfZnJhbWVzOyBpKyspIHsKKyAgICAg ICAgUUNUSGV4dGltZXJTdGF0ZSAqdCA9ICZzLT50aW1lcltpXTsKKworICAgICAgICAvKgorICAg ICAgICAgKiBQZXIgVFJNOiBDVEwgPSAwIChFTj0wLCBJTUFTSz0wLCBJU1RBVD0wKSwgQ1ZBTCA9 IDAgc28gdGhhdAorICAgICAgICAgKiBUVkFMICg9IENWQUwgLSBDTlRQQ1QpIGFsc28gcmVhZHMg MCBhdCByZXNldC4gVGhlIFFFTVVUaW1lciBpcworICAgICAgICAgKiBvbmx5IGFybWVkIHdoZW4g U1cgc2V0cyBDVEwuRU49MSwgc28gY250dmFsPTAgZG9lcyBub3QgY2F1c2UgYQorICAgICAgICAg KiBzcHVyaW91cyBmaXJlIGJlZm9yZSBTVyBwcm9ncmFtcyB0aGUgY29tcGFyZSB2YWx1ZS4KKyAg ICAgICAgICovCisgICAgICAgIHQtPmNvbnRyb2wgPSAwOworICAgICAgICB0LT5jbnRfY3RybCA9 IFFDVF9RVElNRVJfQUNfQ05UQUNSX1JXUFQgfCBRQ1RfUVRJTUVSX0FDX0NOVEFDUl9SV1ZUIHwK KyAgICAgICAgICAgICAgICAgICAgICBRQ1RfUVRJTUVSX0FDX0NOVEFDUl9SVk9GRiB8IFFDVF9R VElNRVJfQUNfQ05UQUNSX1JGUlEgfAorICAgICAgICAgICAgICAgICAgICAgIFFDVF9RVElNRVJf QUNfQ05UQUNSX1JQVkNUIHwgUUNUX1FUSU1FUl9BQ19DTlRBQ1JfUlBDVDsKKyAgICAgICAgdC0+ Y250dmFsID0gMDsKKyAgICAgICAgdC0+Y250cGwwYWNyID0gMDsKKyAgICAgICAgdC0+aW50X2xl dmVsID0gMDsKKyAgICAgICAgdC0+b2Zmc2V0X25zID0gcWVtdV9jbG9ja19nZXRfbnMoUUVNVV9D TE9DS19WSVJUVUFMKTsKKyAgICAgICAgdGltZXJfZGVsKHQtPnRpbWVyKTsKKyAgICAgICAgcWVt dV9zZXRfaXJxKHQtPmlycSwgMCk7CisgICAgfQorfQorCitzdGF0aWMgY29uc3QgUHJvcGVydHkg cWN0X3F0aW1lcl9wcm9wZXJ0aWVzW10gPSB7CisgICAgREVGSU5FX1BST1BfVUlOVDMyKCJmcmVx LWh6IiwgUUNUUXRpbWVyU3RhdGUsIGZyZXFfaHosCisgICAgICAgICAgICAgICAgICAgICAgIFFU SU1FUl9ERUZBVUxUX0ZSRVFfSFopLAorICAgIERFRklORV9QUk9QX1VJTlQzMigiZnJlcS1zY2Fs ZSIsIFFDVFF0aW1lclN0YXRlLCBmcmVxX3NjYWxlLCAxKSwKKyAgICBERUZJTkVfUFJPUF9VSU5U MzIoIm5yX2ZyYW1lcyIsIFFDVFF0aW1lclN0YXRlLCBucl9mcmFtZXMsIDIpLAorICAgIERFRklO RV9QUk9QX1VJTlQzMigibnJfdmlld3MiLCBRQ1RRdGltZXJTdGF0ZSwgbnJfdmlld3MsIDEpLAor ICAgIERFRklORV9QUk9QX1VJTlQzMigiZnJhbWVfc3RyaWRlIiwgUUNUUXRpbWVyU3RhdGUsIGZy YW1lX3N0cmlkZSwgMHgxMDAwKSwKKyAgICBERUZJTkVfUFJPUF9VSU5UMzIoImNudHRpZF8wIiwg UUNUUXRpbWVyU3RhdGUsIGNudHRpZF8wLCAweDExKSwKKyAgICBERUZJTkVfUFJPUF9VSU5UMzIo ImNudHRpZF8xIiwgUUNUUXRpbWVyU3RhdGUsIGNudHRpZF8xLCAweDApLAorfTsKKworc3RhdGlj IHZvaWQgcWN0X3F0aW1lcl9jbGFzc19pbml0KE9iamVjdENsYXNzICprbGFzcywgY29uc3Qgdm9p ZCAqZGF0YSkKK3sKKyAgICBEZXZpY2VDbGFzcyAqZGMgPSBERVZJQ0VfQ0xBU1Moa2xhc3MpOwor ICAgIFJlc2V0dGFibGVDbGFzcyAqcmMgPSBSRVNFVFRBQkxFX0NMQVNTKGtsYXNzKTsKKworICAg IGRldmljZV9jbGFzc19zZXRfcHJvcHMoZGMsIHFjdF9xdGltZXJfcHJvcGVydGllcyk7CisgICAg ZGMtPnJlYWxpemUgPSBxY3RfcXRpbWVyX3JlYWxpemU7CisgICAgZGMtPnVucmVhbGl6ZSA9IHFj dF9xdGltZXJfdW5yZWFsaXplOworICAgIGRjLT52bXNkID0gJnZtc3RhdGVfcWN0X3F0aW1lcjsK KyAgICByYy0+cGhhc2VzLmhvbGQgPSBxY3RfcXRpbWVyX3Jlc2V0X2hvbGQ7Cit9CisKKy8qIFFU aW1lciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24sIGJhY2tpbmcgSEVYX1NSRUdfVElNRVJMTy9U SU1FUkhJICovCitzdGF0aWMgdWludDMyX3QgcWN0X3F0aW1lcl9nZXRfdGltZXJfbG9faW1wbChj b25zdCBRY3RRdGltZXJJbnRlcmZhY2UgKm9iaikKK3sKKyAgICBRQ1RRdGltZXJTdGF0ZSAqcyA9 IFFDVF9RVElNRVIoKFFjdFF0aW1lckludGVyZmFjZSAqKW9iaik7CisKKyAgICByZXR1cm4gcy0+ bnJfZnJhbWVzID4gMCA/IGV4dHJhY3Q2NChoZXhfdGltZXJfbm93KCZzLT50aW1lclswXSksIDAs IDMyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDsKK30KKworc3RhdGljIHVpbnQz Ml90IHFjdF9xdGltZXJfZ2V0X3RpbWVyX2hpX2ltcGwoY29uc3QgUWN0UXRpbWVySW50ZXJmYWNl ICpvYmopCit7CisgICAgUUNUUXRpbWVyU3RhdGUgKnMgPSBRQ1RfUVRJTUVSKChRY3RRdGltZXJJ bnRlcmZhY2UgKilvYmopOworCisgICAgcmV0dXJuIHMtPm5yX2ZyYW1lcyA+IDAgPyBleHRyYWN0 NjQoaGV4X3RpbWVyX25vdygmcy0+dGltZXJbMF0pLCAzMiwgMzIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiAwOworfQorCitzdGF0aWMgdm9pZCBxY3RfcXRpbWVyX2ludGVyZmFjZV9j bGFzc19pbml0KE9iamVjdENsYXNzICprbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKyAgICBRY3RRdGltZXJJbnRl cmZhY2VDbGFzcyAqayA9IFFDVF9RVElNRVJfSU5URVJGQUNFX0NMQVNTKGtsYXNzKTsKKworICAg IGstPmdldF90aW1lcl9sbyA9IHFjdF9xdGltZXJfZ2V0X3RpbWVyX2xvX2ltcGw7CisgICAgay0+ Z2V0X3RpbWVyX2hpID0gcWN0X3F0aW1lcl9nZXRfdGltZXJfaGlfaW1wbDsKK30KKworc3RhdGlj IGNvbnN0IFR5cGVJbmZvIHFjdF9xdGltZXJfdHlwZXNbXSA9IHsKKyAgICB7CisgICAgICAgIC5u YW1lID0gVFlQRV9RQ1RfUVRJTUVSX0lOVEVSRkFDRSwKKyAgICAgICAgLnBhcmVudCA9IFRZUEVf SU5URVJGQUNFLAorICAgICAgICAuY2xhc3Nfc2l6ZSA9IHNpemVvZihRY3RRdGltZXJJbnRlcmZh Y2VDbGFzcyksCisgICAgICAgIC5jbGFzc19pbml0ID0gcWN0X3F0aW1lcl9pbnRlcmZhY2VfY2xh c3NfaW5pdCwKKyAgICB9LAorICAgIHsKKyAgICAgICAgLm5hbWUgPSBUWVBFX1FDVF9RVElNRVIs CisgICAgICAgIC5wYXJlbnQgPSBUWVBFX1NZU19CVVNfREVWSUNFLAorICAgICAgICAuaW5zdGFu Y2Vfc2l6ZSA9IHNpemVvZihRQ1RRdGltZXJTdGF0ZSksCisgICAgICAgIC5jbGFzc19pbml0ID0g cWN0X3F0aW1lcl9jbGFzc19pbml0LAorICAgICAgICAuaW50ZXJmYWNlcyA9IChJbnRlcmZhY2VJ bmZvW10pIHsKKyAgICAgICAgICAgIHsgVFlQRV9RQ1RfUVRJTUVSX0lOVEVSRkFDRSB9LAorICAg ICAgICAgICAgeyB9CisgICAgICAgIH0sCisgICAgfSwKK307CisKK0RFRklORV9UWVBFUyhxY3Rf cXRpbWVyX3R5cGVzKQpkaWZmIC0tZ2l0IGEvaHcvdGltZXIvS2NvbmZpZyBiL2h3L3RpbWVyL0tj b25maWcKaW5kZXggYjNkODIzY2UyYzMuLmUxYjc1MWE1NGE3IDEwMDY0NAotLS0gYS9ody90aW1l ci9LY29uZmlnCisrKyBiL2h3L3RpbWVyL0tjb25maWcKQEAgLTY1LDMgKzY1LDYgQEAgY29uZmln IFNURUxMQVJJU19HUFRNCiAKIGNvbmZpZyBBVlJfVElNRVIxNgogICAgIGJvb2wKKworY29uZmln IEhFWF9RVElNRVIKKyAgICBib29sCmRpZmYgLS1naXQgYS9ody90aW1lci9tZXNvbi5idWlsZCBi L2h3L3RpbWVyL21lc29uLmJ1aWxkCmluZGV4IDIwMWI1ZDgzMTZkLi4wZTgzMjZiMDQ5MiAxMDA2 NDQKLS0tIGEvaHcvdGltZXIvbWVzb24uYnVpbGQKKysrIGIvaHcvdGltZXIvbWVzb24uYnVpbGQK QEAgLTM0LDMgKzM0LDUgQEAgc3BlY2lmaWNfc3MuYWRkKHdoZW46ICdDT05GSUdfSUJFWCcsIGlm X3RydWU6IGZpbGVzKCdpYmV4X3RpbWVyLmMnKSkKIHN5c3RlbV9zcy5hZGQod2hlbjogJ0NPTkZJ R19TSUZJVkVfUFdNJywgaWZfdHJ1ZTogZmlsZXMoJ3NpZml2ZV9wd20uYycpKQogCiBzeXN0ZW1f c3MuYWRkKHdoZW46ICdDT05GSUdfQVZSX1RJTUVSMTYnLCBpZl90cnVlOiBmaWxlcygnYXZyX3Rp bWVyMTYuYycpKQorCitzcGVjaWZpY19zcy5hZGQod2hlbjogJ0NPTkZJR19IRVhfUVRJTUVSJywg aWZfdHJ1ZTogZmlsZXMoJ3FjdC1xdGltZXIuYycpKQpkaWZmIC0tZ2l0IGEvaHcvdGltZXIvdHJh Y2UtZXZlbnRzIGIvaHcvdGltZXIvdHJhY2UtZXZlbnRzCmluZGV4IDYzNGJhMWRhMjdhLi42MzYz MTBmOGNhYSAxMDA2NDQKLS0tIGEvaHcvdGltZXIvdHJhY2UtZXZlbnRzCisrKyBiL2h3L3RpbWVy L3RyYWNlLWV2ZW50cwpAQCAtMTI4LDMgKzEyOCw4IEBAIGlteF9lcGl0X2dldF9mcmVxKHVpbnQz Ml90IGZyZXEpICJwdGltZXIgZnJlcXVlbmN5IGlzICV1IgogaW14X2VwaXRfcmVhZChjb25zdCBj aGFyICpuYW1lLCB1aW50MzJfdCB2YWx1ZSkgIiglcykgPSAweCUwOHgiCiBpbXhfZXBpdF93cml0 ZShjb25zdCBjaGFyICpuYW1lLCB1aW50NjRfdCB2YWx1ZSkgIiglcywgdmFsdWUgPSAweCUwOCIg UFJJeDY0ICIpIgogaW14X2VwaXRfY21wKHVpbnQzMl90IHNyKSAic3Igd2FzICVkIgorCisjIHFj dC1xdGltZXIuYworcXRpbWVyX2ludGVycnVwdCh2b2lkKSAicXRpbWVyIGludGVycnVwdCBsaW5l IHVwZGF0ZWQiCitxdGltZXJfcmVhZCh1aW50NjRfdCBvZmZzZXQpICJvZmZzZXQgMHglIiBQUkl4 NjQKK3F0aW1lcl93cml0ZSh1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHZhbHVlKSAib2Zmc2V0 IDB4JSIgUFJJeDY0ICIgdmFsdWUgMHglIiBQUkl4NjQKLS0gCjIuMzQuMQoK