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 X-Spam-Level: X-Spam-Status: No, score=-4.8 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0873BC433DF for ; Wed, 19 Aug 2020 13:53:26 +0000 (UTC) Received: from shelob.surriel.com (shelob.surriel.com [96.67.55.147]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 945AE204FD for ; Wed, 19 Aug 2020 13:53:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QB0Okz0+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 945AE204FD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kernelnewbies-bounces@kernelnewbies.org Received: from localhost ([::1] helo=shelob.surriel.com) by shelob.surriel.com with esmtp (Exim 4.94) (envelope-from ) id 1k8OWB-0001oa-Qk; Wed, 19 Aug 2020 09:52:43 -0400 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by shelob.surriel.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94) (envelope-from ) id 1k8OW9-0001oU-R9 for kernelnewbies@kernelnewbies.org; Wed, 19 Aug 2020 09:52:41 -0400 Received: by mail-ej1-x62c.google.com with SMTP id qc22so26394992ejb.4 for ; Wed, 19 Aug 2020 06:52:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=sjd1oQklNr2YMkHhYwfc6ZrgvVxA3Y9TfcrwdTF5MwY=; b=QB0Okz0+zH3BpTZmv0f04rLYuAFblD/RL+hT4ZxrKTP0NyDJ8qmC8xp2cGjiICFkV7 8sVjQmAzfgPXGJAv/q+Z6QeTUkbcVjzinalMT8NJKsLMvhlJbl4i42ZlhNftbWoqSFLJ eCzKogsJ8s1BnHPU5jyQXfT24pV2TzClOF2wc+FiZYlch4ulqgTfx/m5gOSVWFhZBFRr acR4xiSAvRLcCGXdtRVZjgYNNGRTKOuhv1sTbpWr3TVztxaYsOJpdwq9hsfDHd4RVnwd NHo9naHUwhdsFZK1EnLvmG2RH72tEaYL1bWZIlXv9Zkf1TNqoMiDTop2am6MA7wL4ulT up6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=sjd1oQklNr2YMkHhYwfc6ZrgvVxA3Y9TfcrwdTF5MwY=; b=Wt3gtu49Df/LKiQxxyes2fIouqMjTF1FDao/SkfSWfCoTMM81B87UogjMgau06btqP gZBV4DjsJoN5eEXHleswhsoNPeVmcPNAhmPhmMVIFs83NO0SBzB+pAmUDt5nBaXn9e83 CR7lPI1W/gEtqXTO4l2nBtTZm4KuXmayzowVbeqA7Kdj8FJ+xXyslm4jJ+rac8aGiouB irRqbHBHEEkdofywv8lBcGEIK9E/SLYrDm+lxVjLrqXCwBbZzC5/tpLEFin0rN4yvRfA URGAjr1iiRCnTweUIClxT5n4vG9UpfjxwBu49/WBW4/5zGCAtE6ntG+pEoEVSADOUzDJ RMow== X-Gm-Message-State: AOAM530rfyrcn/tuzAUqSy2RnwzUW1dd9ccWUYb28SHzH3Feudv6EWER PkshzNHONuV8tdOaBR6i5nos4gFHYss= X-Google-Smtp-Source: ABdhPJwY0n9L6SzAhIk660v7yRcpo//SRDe2C/DEiycQmn+onibHB2PQrRmwc9ZEFpcfvXU73qj9Iw== X-Received: by 2002:a17:906:ecf9:: with SMTP id qt25mr25990863ejb.478.1597845159304; Wed, 19 Aug 2020 06:52:39 -0700 (PDT) Received: from [192.168.0.134] (p579f8e07.dip0.t-ipconnect.de. [87.159.142.7]) by smtp.gmail.com with ESMTPSA id q15sm17782901edc.74.2020.08.19.06.52.38 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Aug 2020 06:52:38 -0700 (PDT) To: kernelnewbies@kernelnewbies.org From: Eduard Fuchs Subject: Validity of ioremap pointer within the kernel module Message-ID: Date: Wed, 19 Aug 2020 15:52:30 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------0DCFE3DA8818561A9D821905" Content-Language: de-DE X-BeenThere: kernelnewbies@kernelnewbies.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Learn about the Linux kernel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernelnewbies-bounces@kernelnewbies.org This is a multi-part message in MIME format. --------------0DCFE3DA8818561A9D821905 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hello, I am working on a driver for the McASP controller (on BeagleBone Black device) that works outside the sound subsystem. The following steps are performed correctly as far as I understand: * init() function of the module registers the "platform_driver" * Kernel finds the correct device in device-tree and performs the probe() function * in the probe() function, a "miscdevice" is created and the ressouce is mapped with devm_platform_ioremap_resource_byname() (address and size provided from dts). * in the probe() function, access to the McASP registers works without any problems. * the probe() function is left with "return 0". If at a later time, triggered by userspace, the open() function of "miscdevice" is called, then a kernel fault occurs: [ 1138.192489] DRV1: [drv_mdev_open():169]: misc device open called ... [ 1138.192517] misc testdrv: [drv_mdev_open():170]: memory for driver data found at 0xda9fca40 [ 1138.192526] misc testdrv: [drv_mdev_open():171]: virtual address for McASP registers base mapped at 0xFA038000. [ 1138.192532] DRV1: [mcasp_dump_registers():107]: Dump McASP register information: [ 1138.192538] 8<--- cut here --- [ 1138.195612] Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa038000 [ 1138.203302] pgd = 13c9a0d5 [ 1138.206016] [fa038000] *pgd=48011452(bad) [ 1138.210048] Internal error: : 1028 [#1] PREEMPT THUMB2 [ 1138.215209] Modules linked in: testdrv1(O) ti_eqep counter spidev 8021q garp stp mrp llc evdev usb_f_acm u_serial usb_f_ecm usb_f_rndis u_ether libcomposite iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_filter ip_tables x_tables [last unloaded: testdrv1] [ 1138.241265] CPU: 0 PID: 827 Comm: tesdrv_test Tainted: G O 5.7.6-tmc02 #1 [ 1138.249386] Hardware name: Generic AM33XX (Flattened Device Tree) [ 1138.255518] PC is at mcasp_dump_registers+0x1a/0x338 [testdrv1] [ 1138.261463] LR is at mcasp_dump_registers+0x1b/0x338 [testdrv1] [ 1138.267404] pc : [] lr : [] psr: 60070033 [ 1138.273694] sp : dc133d60 ip : 00000000 fp : dc133e68 [ 1138.278936] r10: bf8a608c r9 : c0fb4c20 r8 : daee6030 [ 1138.284179] r7 : daeba000 r6 : 0000003d r5 : bf8a610c r4 : fa038000 [ 1138.290731] r3 : c0f05288 r2 : 00000000 r1 : 40070093 r0 : 00000044 [ 1138.297286] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA Thumb Segment none [ 1138.304622] Control: 50c5387d Table: 98af4019 DAC: 00000051 [ 1138.310390] Process tesdrv_test (pid: 827, stack limit = 0xcf218d31) [ 1138.316769] Stack: (0xdc133d60 to 0xdc134000) [ 1138.321145] 3d60: c0f05288 da9fca44 bf8a610c 0000003d daeba000 bf8a553b fa038000 da9fca44 [ 1138.329359] 3d80: c0fb4c2c bf8a54e5 c0fb4c2c c0645d41 c0a7869c daee6030 dc351b80 daeba000 [ 1138.337572] 3da0: 00000000 dc0f3f00 dc351bac c0274d35 0000003d c0f05288 daeba000 daee6030 [ 1138.345786] 3dc0: 00000000 c0274ca9 daeba008 daeba000 dc133f18 c026d975 da2685d8 00000000 [ 1138.353999] 3de0: 00000000 00000002 00000000 00000000 daeba000 c027c815 00000002 dfdc34b4 [ 1138.362212] 3e00: dab8c800 00000000 00000000 c010ef31 8813a18f dc132000 8813a18f d8a35c00 [ 1138.370426] 3e20: 63c00000 00000041 8813a18f 00000002 daee6030 c0110e1f dc133edc c0f05288 [ 1138.378639] 3e40: 8813a18f daafc000 dc133f18 00000001 00000000 dc133f50 ffffff9c 00000005 [ 1138.386852] 3e60: 00000000 c027df4b db2279d0 da2685d8 7271e2e6 00000007 dc14a015 c0260183 [ 1138.395066] 3e80: 00000000 dbf154c8 daee6030 00000101 00000002 00000550 0000094c 00000000 [ 1138.403279] 3ea0: 00000000 00000000 dc133eac c026cb15 00000040 c0289997 dc0e6500 00000ff0 [ 1138.411493] 3ec0: ffffe000 004fe6ec 00000ff0 c0f05288 00000000 00000003 00000100 dc14a000 [ 1138.419706] 3ee0: 00000000 00000002 ffffff9c 00000000 dc1441ed 00000000 00000000 c0f05288 [ 1138.427919] 3f00: dc14a000 00000003 00000000 c026e1a1 00000000 c0f05288 00000000 dc130000 [ 1138.436132] 3f20: 00000004 00000100 00000001 c0f05288 d8a0f03c dc133f60 dc133f78 00000000 [ 1138.444346] 3f40: 00000000 00000000 00000000 c026f0bb 00000000 00000000 00000000 00000000 [ 1138.452559] 3f60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 1138.460772] 3f80: 00000000 c0f05288 b6fdd000 bed70c38 00000000 00000000 00000005 c0100284 [ 1138.468986] 3fa0: dc132000 c0100061 bed70c38 00000000 004fe6ec 00000000 bed70d7c 004fe6ec [ 1138.477199] 3fc0: bed70c38 00000000 00000000 00000005 00000000 00000000 0050f000 00000000 [ 1138.485412] 3fe0: 00000000 bed70c04 004fe66b b6f59936 00070030 004fe6ec 00000000 00000000 [ 1138.493653] [] (mcasp_dump_registers [testdrv1]) from [] (mcasp_dump_registers+0x1b/0x338 [testdrv1]) [ 1138.504660] Code: f6cb 708a f0bc da0f (6822) 2100 [ 1138.509473] ---[ end trace bb0b2efe6c81b12a ]--- Does anyone have an idea that I forgot or do wrong. Thanks, Eduard Fuchs --------------0DCFE3DA8818561A9D821905 Content-Type: text/plain; charset=UTF-8; name="testdrv.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="testdrv.c" LyoqCiAqIEBmaWxlICAgIHRlc3RkcnYuYwogKiBAYnJpZWYgICBUZXN0IG1vZHVsZSBmb3Ig dGhlIGluaXRpYWxpc2F0aW9uIG9mIHRoZSBNY0FTUCBpbgogKiAgICAgICAgICBpbnRlcnJ1 cHQgbW9kZS4KICovCgojaWZkZWYgREVCVUcKI2RlZmluZSBwcl9mbXQoZm10KSAgICJEUlYx OiBbJXMoKTolZF06ICIgZm10LF9fZnVuY19fLF9fTElORV9fCiNkZWZpbmUgZGV2X2ZtdChm bXQpICAiWyVzKCk6JWRdOiAiIGZtdCxfX2Z1bmNfXyxfX0xJTkVfXwojZWxzZQojZGVmaW5l IHByX2ZtdChmbXQpICAgIkRSVjE6ICIgZm10CiNkZWZpbmUgZGV2X2ZtdChmbXQpICBmbXQK I2VuZGlmCgojaW5jbHVkZSA8bGludXgvaW5pdC5oPgojaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CiNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3Jt X2RldmljZS5oPgojaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CiNpbmNsdWRlIDxsaW51 eC9mcy5oPgojaW5jbHVkZSA8bGludXgvaW8uaD4KI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZp Y2UuaD4KCgovKgogKiBBTTMzNXggUmVnaXN0ZXIgZGZpbml0aW9uIGZvciBNY0FTUCBjb250 cm9sbGVyCiAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9SRVZfUkVHICAgICAgIDB4MDAgIC8q IFJldmlzaW9uIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICAgICAqLwojZGVmaW5lIEFNMzM1 eF9NQ0FTUF9QV1JJRExFX1JFRyAgIDB4MDQgIC8qIFBvd2VyIElkbGUgU1lTQ09ORklHIFJl Z2lzdGVyICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9QRlVOQ19SRUcgICAgIDB4 MTAgIC8qIFBpbiBGdW5jdGlvbiBSZWdpc3RlciAgICAgICAgICAgICAgICAqLwojZGVmaW5l IEFNMzM1eF9NQ0FTUF9QRElSX1JFRyAgICAgIDB4MTQgIC8qIFBpbiBEaXJlY3Rpb24gUmVn aXN0ZXIgICAgICAgICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9QRE9VVF9SRUcg ICAgIDB4MTggIC8qIFBpbiBEYXRhIE91dHB1dCBSZWdpc3RlciAgICAgICAgICAgICAqLwoj ZGVmaW5lIEFNMzM1eF9NQ0FTUF9QRElOX1JFRyAgICAgIDB4MUMgIC8qIFBpbiBEYXRhIElu cHV0IFJlZ2lzdGVyICAgICAgICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9QRENM Ul9SRUcgICAgIDB4MjAgIC8qIFBpbiBEYXRhIENsZWFyIFJlZ2lzdGVyICAgICAgICAgICAg ICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9HQkxDVExfUkVHICAgIDB4NDQgIC8qIEdsb2Jh bCBDb250cm9sIFJlZ2lzdGVyICAgICAgICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FT UF9BTVVURV9SRUcgICAgIDB4NDggIC8qIEF1ZGlvIE11dGUgQ29udHJvbCBSZWdpc3RlciAg ICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9ETEJDVExfUkVHICAgIDB4NEMgIC8q IERpZ2l0YWwgTG9vcGJhY2sgQ29udHJvbCBSZWdpc3RlciAgICAqLwojZGVmaW5lIEFNMzM1 eF9NQ0FTUF9ESVRDVExfUkVHICAgIDB4NTAgIC8qIERJVCBNb2RlIENvbnRyb2wgUmVnaXN0 ZXIgICAgICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9SR0JMQ1RMX1JFRyAgIDB4 NjAgIC8qIFJlY2VpdmVyIEdsb2JhbCBDb250cm9sIFJlZ2lzdGVyICAgICAqLwojZGVmaW5l IEFNMzM1eF9NQ0FTUF9STUFTS19SRUcgICAgIDB4NjQgIC8qIFJlY2VpdmUgRm9ybWF0IFVu aXQgQml0IE1hc2sgUmVnaXN0ZXIqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9SRk1UX1JFRyAg ICAgIDB4NjggIC8qIFJlY2VpdmUgQml0IFN0cmVhbSBGb3JtYXQgUmVnaXN0ZXIgICAqLwoj ZGVmaW5lIEFNMzM1eF9NQ0FTUF9BRlNSQ1RMX1JFRyAgIDB4NkMgIC8qIFJlY2VpdmUgRnJh bWUgU3luYyBDb250cm9sIFJlZ2lzdGVyICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9BQ0xL UkNUTF9SRUcgIDB4NzAgIC8qIFJlY2VpdmUgQ2xvY2sgQ29udHJvbCBSZWdpc3RlciAgICAg ICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9BSENMS1JDVExfUkVHIDB4NzQgIC8qIFJlY2Vp dmUgSGkuLUZyZXEuIENsb2NrIENvbnRyb2wgUmVnLiAqLwojZGVmaW5lIEFNMzM1eF9NQ0FT UF9SVERNX1JFRyAgICAgIDB4NzggIC8qIFJlY2VpdmUgVERNIFRpbWUgU2xvdCAwLTMxIFJl Z2lzdGVyICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9SSU5UQ1RMX1JFRyAgIDB4N0MgIC8q IFJlY2VpdmVyIEludGVycnVwdCBDb250cm9sIFJlZ2lzdGVyICAqLwojZGVmaW5lIEFNMzM1 eF9NQ0FTUF9SU1RBVF9SRUcgICAgIDB4ODAgIC8qIFJlY2VpdmVyIFN0YXR1cyBSZWdpc3Rl ciAgICAgICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9SU0xPVF9SRUcgICAgIDB4 ODQgIC8qIEN1cnJlbnQgUmVjZWl2ZSBURE0gVGltZSBTbG90IFJlZy4gICAqLwojZGVmaW5l IEFNMzM1eF9NQ0FTUF9SQ0xLQ0hLX1JFRyAgIDB4ODggIC8qIFJlY2VpdmUgQ2xvY2sgQ2hl Y2sgQ29udHJvbCBSZWdpc3RlciAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9SRVZUQ1RMX1JF RyAgIDB4OEMgIC8qIFJlY2VpdmVyIERNQSBFdmVudCBDb250cm9sIFJlZ2lzdGVyICAqLwoj ZGVmaW5lIEFNMzM1eF9NQ0FTUF9YR0JMQ1RMX1JFRyAgIDB4QTAgIC8qIFRyYW5zbWl0dGVy IEdsb2JhbCBDb250cm9sIFJlZ2lzdGVyICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9YTUFT S19SRUcgICAgIDB4QTQgIC8qIFRyYW5zbWl0IEZvcm1hdCBVbml0IEJpdCBNYXNrIFJlZy4g ICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9YRk1UX1JFRyAgICAgIDB4QTggIC8qIFRyYW5z bWl0IEJpdCBTdHJlYW0gRm9ybWF0IFJlZ2lzdGVyICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FT UF9BRlNYQ1RMX1JFRyAgIDB4QUMgIC8qIFRyYW5zbWl0IEZyYW1lIFN5bmMgQ29udHJvbCBS ZWdpc3RlciAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9BQ0xLWENUTF9SRUcgIDB4QjAgIC8q IFRyYW5zbWl0IENsb2NrIENvbnRyb2wgUmVnaXN0ZXIgICAgICAqLwojZGVmaW5lIEFNMzM1 eF9NQ0FTUF9BSENMS1hDVExfUkVHIDB4QjQgIC8qIFRyYW5zbWl0IEhpLi1GcmVxLiBDbGsu IENvbnRyb2wgUmVnLiAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9YVERNX1JFRyAgICAgIDB4 QjggIC8qIFRyYW5zbWl0IFRETSBUaW1lIFNsb3QgMC0zMSBSZWdpc3RlciAqLwojZGVmaW5l IEFNMzM1eF9NQ0FTUF9YSU5UQ1RMX1JFRyAgIDB4QkMgIC8qIFRyYW5zbWl0dGVyIEludGVy cnVwdCBDb250cm9sIFJlZy4gICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9YU1RBVF9SRUcg ICAgIDB4QzAgIC8qIFRyYW5zbWl0dGVyIFN0YXR1cyBSZWdpc3RlciAgICAgICAgICAqLwoj ZGVmaW5lIEFNMzM1eF9NQ0FTUF9YU0xPVF9SRUcgICAgIDB4QzQgIC8qIEN1cnJlbnQgVHJh bnNtaXQgVERNIFRpbWUgU2xvdCBSZWcuICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9YQ0xL Q0hLX1JFRyAgIDB4QzggIC8qIFRyYW5zbWl0IENsb2NrIENoZWNrIENvbnRyb2wgUmVnLiAg ICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9YRVZUQ1RMX1JFRyAgIDB4Q0MgIC8qIFRyYW5z bWl0dGVyIERNQSBFdmVudCBDb250cm9sIFJlZy4gICAqLwoKLyoKMTAwaCB0byAxMTRoIHwg RElUQ1NSQV8wIHRvIERJVENTUkFfNSB8IExlZnQgKEV2ZW4gVERNIFRpbWUgU2xvdCkgQ2hh bm5lbCBTdGF0dXMgUmVnaXN0ZXJzIChESVQgTW9kZSkKMTE4aCB0byAxMkNoIHwgRElUQ1NS Ql8wIHRvIERJVENTUkJfNSB8IFJpZ2h0IChPZGQgVERNIFRpbWUgU2xvdCkgQ2hhbm5lbCBT dGF0dXMgUmVnaXN0ZXJzIChESVQgTW9kZSkKMTMwaCB0byAxNDRoIHwgRElUVURSQV8wIHRv IERJVFVEUkFfNSB8IExlZnQgKEV2ZW4gVERNIFRpbWUgU2xvdCkgQ2hhbm5lbCBVc2VyIERh dGEgUmVnaXN0ZXJzIChESVQgTW9kZSkKMTQ4aCB0byAxNUNoIHwgRElUVURSQl8wIHRvIERJ VFVEUkJfNSB8IFJpZ2h0IChPZGQgVERNIFRpbWUgU2xvdCkgQ2hhbm5lbCBVc2VyIERhdGEg UmVnaXN0ZXJzIChESVQgTW9kZSkKKi8KCiNkZWZpbmUgQU0zMzV4X01DQVNQX1NSQ1RMX0JB U0UgICAgMHgxODAgLyogU2VyaWFsaXplciBDb250cm9sIFJlZ2lzdGVycyAwLi41ICAgICov CiNkZWZpbmUgQU0zMzV4X01DQVNQX1NSQ1RMX1JFRyhuKSAgKEFNMzM1eF9NQ0FTUF9TUkNU TF9CQVNFICsgKG4gPDwgMikpCgojZGVmaW5lIEFNMzM1eF9NQ0FTUF9YQlVGX0JBU0UgICAg IDB4MjAwIC8qIFRyYW5zbWl0IEJ1ZmZlciBSZWcuZm9yIFNlcmlhbGl6ZXJzICAqLwojZGVm aW5lIEFNMzM1eF9NQ0FTUF9YQlVGX1JFRyhuKSAgIChBTTMzNXhfTUNBU1BfWEJVRl9CQVNF ICsgKG4gPDwgMikpCgojZGVmaW5lIEFNMzM1eF9NQ0FTUF9SQlVGX0JBU0UgICAgIDB4Mjgw IC8qIFJlY2VpdmUgQnVmZmVyIFJlZy5mb3IgU2VyaWFsaXplcnMgICAqLwojZGVmaW5lIEFN MzM1eF9NQ0FTUF9SQlVGX1JFRyhuKSAgIChBTTMzNXhfTUNBU1BfUkJVRl9CQVNFICsgKG4g PDwgMikpCgojZGVmaW5lIEFNMzM1eF9NQ0FTUF9XRklGT0NUTF9SRUcgIDB4MTAwMCAvKiBX cml0ZSBGSUZPIENvbnRyb2wgUmVnaXN0ZXIgICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9N Q0FTUF9XRklGT1NUU19SRUcgIDB4MTAwNCAvKiBXcml0ZSBGSUZPIFN0YXR1cyBSZWdpc3Rl ciAgICAgICAgICAqLwojZGVmaW5lIEFNMzM1eF9NQ0FTUF9SRklGT0NUTF9SRUcgIDB4MTAw OCAvKiBSZWFkIEZJRk8gQ29udHJvbCBSZWdpc3RlciAgICAgICAgICAqLwojZGVmaW5lIEFN MzM1eF9NQ0FTUF9SRklGT1NUU19SRUcgIDB4MTAwQyAvKiBSZWFkIEZJRk8gU3RhdHVzIFJl Z2lzdGVyICAgICAgICAgICAqLwoKCnN0cnVjdCB0ZXN0ZHJ2MQp7CiAgICB2b2lkIF9faW9t ZW0gKm1jYXNwX2Jhc2U7CiAgICBzdHJ1Y3QgbWlzY2RldmljZSBtZGV2Owp9OwoKI2RlZmlu ZSBSRUdfRFVNUChzdHIsIG9mZnMsIGRldikgIHByaW50ayhLRVJOX0lORk8gIiAgIFsweCUw NHhdICJzdHIsIG9mZnMsIG1jYXNwX2dldF9yZWcoZGV2LCBvZmZzKSkKCnN0YXRpYyBpbmxp bmUgdTMyIG1jYXNwX2dldF9yZWcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0KQp7 CiAgICByZXR1cm4gKHUzMilfX3Jhd19yZWFkbChiYXNlICsgb2Zmc2V0KTsKfQoKdm9pZCBt Y2FzcF9kdW1wX3JlZ2lzdGVycyh2b2lkIF9faW9tZW0gKmJhc2UpCnsKICAgIGludCBpOwoK ICAgIHByX2luZm8oIkR1bXAgTWNBU1AgcmVnaXN0ZXIgaW5mb3JtYXRpb246Iik7CiAgICBS RUdfRFVNUCgiUkVWICAgICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX1JF Vl9SRUcsIGJhc2UpOwogICAgUkVHX0RVTVAoIlBXUklETEVTWVNDT05GSUcgPSAweCUwOHhc biIsIEFNMzM1eF9NQ0FTUF9QV1JJRExFX1JFRywgYmFzZSk7CiAgICBSRUdfRFVNUCgiUEZV TkMgICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX1BGVU5DX1JFRywgYmFz ZSk7CiAgICBSRUdfRFVNUCgiUERJUiAgICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4 X01DQVNQX1BESVJfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJQRE9VVCAgICAgICAgICAg ID0gMHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfUERPVVRfUkVHLCBiYXNlKTsKICAgIFJFR19E VU1QKCJQRElOICAgICAgICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfUERJTl9S RUcsIGJhc2UpOwogICAgUkVHX0RVTVAoIlBEQ0xSICAgICAgICAgICAgPSAweCUwOHhcbiIs IEFNMzM1eF9NQ0FTUF9QRENMUl9SRUcsIGJhc2UpOwogICAgUkVHX0RVTVAoIkdCTENUTCAg ICAgICAgICAgPSAweCUwOHhcbiIsIEFNMzM1eF9NQ0FTUF9HQkxDVExfUkVHLCBiYXNlKTsK ICAgIFJFR19EVU1QKCJBTVVURSAgICAgICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNB U1BfQU1VVEVfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJETEJDVEwgICAgICAgICAgID0g MHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfRExCQ1RMX1JFRywgYmFzZSk7CiAgICBSRUdfRFVN UCgiRElUQ1RMICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX0RJVENUTF9S RUcsIGJhc2UpOwogICAgUkVHX0RVTVAoIlJHQkxDVEwgICAgICAgICAgPSAweCUwOHhcbiIs IEFNMzM1eF9NQ0FTUF9SR0JMQ1RMX1JFRywgYmFzZSk7CiAgICBSRUdfRFVNUCgiUk1BU0sg ICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX1JNQVNLX1JFRywgYmFzZSk7 CiAgICBSRUdfRFVNUCgiUkZNVCAgICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01D QVNQX1JGTVRfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJBRlNSQ1RMICAgICAgICAgID0g MHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfQUZTUkNUTF9SRUcsIGJhc2UpOwogICAgUkVHX0RV TVAoIkFDTEtSQ1RMICAgICAgICAgPSAweCUwOHhcbiIsIEFNMzM1eF9NQ0FTUF9BQ0xLUkNU TF9SRUcsIGJhc2UpOwogICAgUkVHX0RVTVAoIkFIQ0xLUkNUTCAgICAgICAgPSAweCUwOHhc biIsIEFNMzM1eF9NQ0FTUF9BSENMS1JDVExfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJS VERNICAgICAgICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfUlRETV9SRUcsIGJh c2UpOwogICAgUkVHX0RVTVAoIlJJTlRDVEwgICAgICAgICAgPSAweCUwOHhcbiIsIEFNMzM1 eF9NQ0FTUF9SSU5UQ1RMX1JFRywgYmFzZSk7CiAgICBSRUdfRFVNUCgiUlNUQVQgICAgICAg ICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX1JTVEFUX1JFRywgYmFzZSk7CiAgICBS RUdfRFVNUCgiUlNMT1QgICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX1JT TE9UX1JFRywgYmFzZSk7CiAgICBSRUdfRFVNUCgiUkNMS0NISyAgICAgICAgICA9IDB4JTA4 eFxuIiwgQU0zMzV4X01DQVNQX1JDTEtDSEtfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJS RVZUQ1RMICAgICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfUkVWVENUTF9SRUcs IGJhc2UpOwogICAgUkVHX0RVTVAoIlhHQkxDVEwgICAgICAgICAgPSAweCUwOHhcbiIsIEFN MzM1eF9NQ0FTUF9YR0JMQ1RMX1JFRywgYmFzZSk7CiAgICBSRUdfRFVNUCgiWE1BU0sgICAg ICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX1hNQVNLX1JFRywgYmFzZSk7CiAg ICBSRUdfRFVNUCgiWEZNVCAgICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQ X1hGTVRfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJBRlNYQ1RMICAgICAgICAgID0gMHgl MDh4XG4iLCBBTTMzNXhfTUNBU1BfQUZTWENUTF9SRUcsIGJhc2UpOwogICAgUkVHX0RVTVAo IkFDTEtYQ1RMICAgICAgICAgPSAweCUwOHhcbiIsIEFNMzM1eF9NQ0FTUF9BQ0xLWENUTF9S RUcsIGJhc2UpOwogICAgUkVHX0RVTVAoIkFIQ0xLWENUTCAgICAgICAgPSAweCUwOHhcbiIs IEFNMzM1eF9NQ0FTUF9BSENMS1hDVExfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJYVERN ICAgICAgICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfWFRETV9SRUcsIGJhc2Up OwogICAgUkVHX0RVTVAoIlhJTlRDVEwgICAgICAgICAgPSAweCUwOHhcbiIsIEFNMzM1eF9N Q0FTUF9YSU5UQ1RMX1JFRywgYmFzZSk7CiAgICBSRUdfRFVNUCgiWFNUQVQgICAgICAgICAg ICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX1hTVEFUX1JFRywgYmFzZSk7CiAgICBSRUdf RFVNUCgiWFNMT1QgICAgICAgICAgICA9IDB4JTA4eFxuIiwgQU0zMzV4X01DQVNQX1hTTE9U X1JFRywgYmFzZSk7CiAgICBSRUdfRFVNUCgiWENMS0NISyAgICAgICAgICA9IDB4JTA4eFxu IiwgQU0zMzV4X01DQVNQX1hDTEtDSEtfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJYRVZU Q1RMICAgICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfWEVWVENUTF9SRUcsIGJh c2UpOwoKICAgIGZvcihpID0gMDsgaSA8PSA1OyBpKyspIHsKICAgICAgICBwcmludGsoS0VS Tl9JTkZPICIgICBbMHglMDR4XSBTUkNUTF8lZCAgICAgICAgICA9IDB4JTA4eFxuIiwKICAg ICAgICAgICAgICAgQU0zMzV4X01DQVNQX1NSQ1RMX1JFRyhpKSwgaSwKICAgICAgICAgICAg ICAgbWNhc3BfZ2V0X3JlZyhiYXNlLCBBTTMzNXhfTUNBU1BfU1JDVExfUkVHKGkpKSk7CiAg ICB9CiAgICBmb3IoaSA9IDA7IGkgPD0gNTsgaSsrKSB7CiAgICAgICAgcHJpbnRrKEtFUk5f SU5GTyAiICAgWzB4JTA0eF0gWEJVRl8lZCAgICAgICAgICAgPSAweCUwOHhcbiIsCiAgICAg ICAgICAgICAgIEFNMzM1eF9NQ0FTUF9YQlVGX1JFRyhpKSwgaSwKICAgICAgICAgICAgICAg bWNhc3BfZ2V0X3JlZyhiYXNlLCBBTTMzNXhfTUNBU1BfWEJVRl9SRUcoaSkpKTsKICAgIH0K ICAgIGZvcihpID0gMDsgaSA8PSA1OyBpKyspIHsKICAgICAgICBwcmludGsoS0VSTl9JTkZP ICIgICBbMHglMDR4XSBSQlVGXyVkICAgICAgICAgICA9IDB4JTA4eFxuIiwKICAgICAgICAg ICAgICAgQU0zMzV4X01DQVNQX1JCVUZfUkVHKGkpLCBpLCBtY2FzcF9nZXRfcmVnKGJhc2Us IEFNMzM1eF9NQ0FTUF9SQlVGX1JFRyhpKSkpOwogICAgfQoKICAgIFJFR19EVU1QKCJXRklG T0NUTCAgICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfV0ZJRk9DVExfUkVHLCBi YXNlKTsKICAgIFJFR19EVU1QKCJXRklGT1NUUyAgICAgICAgID0gMHglMDh4XG4iLCBBTTMz NXhfTUNBU1BfV0ZJRk9TVFNfUkVHLCBiYXNlKTsKICAgIFJFR19EVU1QKCJSRklGT0NUTCAg ICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNBU1BfUkZJRk9DVExfUkVHLCBiYXNlKTsK ICAgIFJFR19EVU1QKCJSRklGT1NUUyAgICAgICAgID0gMHglMDh4XG4iLCBBTTMzNXhfTUNB U1BfUkZJRk9TVFNfUkVHLCBiYXNlKTsKfQoKCnN0YXRpYyBpbnQgZHJ2X21kZXZfb3Blbihz dHJ1Y3QgaW5vZGUqIGlub2RlLCBzdHJ1Y3QgZmlsZSogZmlsZSkKewogICAgc3RydWN0IHRl c3RkcnYxICpkcnYgPSBjb250YWluZXJfb2YoZmlsZS0+cHJpdmF0ZV9kYXRhLCBzdHJ1Y3Qg dGVzdGRydjEsIG1kZXYpOwogICAgcHJfaW5mbygibWlzYyBkZXZpY2Ugb3BlbiBjYWxsZWQg Li4uXG4iKTsKICAgIGRldl9pbmZvKGRydi0+bWRldi50aGlzX2RldmljZSwgIm1lbW9yeSBm b3IgZHJpdmVyIGRhdGEgZm91bmQgYXQgMHglMDh4XG4iLCAodW5zaWduZWQgaW50KWRydik7 CiAgICBkZXZfaW5mbyhkcnYtPm1kZXYudGhpc19kZXZpY2UsICJ2aXJ0dWFsIGFkZHJlc3Mg Zm9yIE1jQVNQIHJlZ2lzdGVycyBiYXNlIG1hcHBlZCBhdCAweCUwOFguXG4iLCAodW5zaWdu ZWQgaW50KWRydi0+bWNhc3BfYmFzZSk7CiAgICBtY2FzcF9kdW1wX3JlZ2lzdGVycyhkcnYt Pm1jYXNwX2Jhc2UpOwogICAgcmV0dXJuIDA7Cn0KCgpzdGF0aWMgaW50IGRydl9tZGV2X2Ns b3NlKHN0cnVjdCBpbm9kZSogaW5vZGUsIHN0cnVjdCBmaWxlKiBmaWxlKQp7CiAgICBwcl9p bmZvKCJtaXNjIGRldmljZSBjbG9zZSBjYWxsZWQgLi4uXG4iKTsKICAgIHJldHVybiAwOwp9 CgoKc3RhdGljIGxvbmcgZHJ2X21kZXZfaW9jdGwoc3RydWN0IGZpbGUqIGZpbGUsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQp7CiAgICBwcl9pbmZvKCJtaXNjIGRl dmljZSBpb2N0bCBjYWxsZWQgLi4uXG4iKTsKICAgIHJldHVybiAwOwp9CgoKc3RhdGljIGNv bnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHJ2X29wcyA9IHsKICAub3duZXIgPSBUSElT X01PRFVMRSwKICAub3BlbiA9IGRydl9tZGV2X29wZW4sCiAgLnJlbGVhc2UgPSBkcnZfbWRl dl9jbG9zZSwKICAudW5sb2NrZWRfaW9jdGwgPSBkcnZfbWRldl9pb2N0bCwKfTsKCgpzdGF0 aWMgaW50IGRydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBwZGV2KQp7CiAgICBp bnQgcmV0OwogICAgc3RydWN0IHRlc3RkcnYxICpkcnY7CgogICAgcHJfaW5mbygicHJvYmUg ZnVuY3Rpb24gY2FsbGVkLlxuIik7CgogICAgaWYoIXBkZXYtPmRldi5wbGF0Zm9ybV9kYXRh ICYmICFwZGV2LT5kZXYub2Zfbm9kZSkgewogICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwg Im5vIHBsYXRmb3JtIGRhdGEgc3VwcGxpZWRcbiIpOwogICAgICAgIHJldHVybiAtRUlOVkFM OwogICAgfQogICAgZGV2X2luZm8oJnBkZXYtPmRldiwgInBsYXRmb3JtIGRhdGEgc3VwcGxp ZWRcbiIpOwoKCiAgICBkcnYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKHN0 cnVjdCB0ZXN0ZHJ2MSksIEdGUF9LRVJORUwpOwogICAgaWYoIWRydikgewogICAgICAgIGRl dl9lcnIoJnBkZXYtPmRldiwgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CiAgICAg ICAgcmV0dXJuIC1FTk9NRU07CiAgICB9CiAgICBkZXZfaW5mbygmcGRldi0+ZGV2LCAibWVt b3J5IGZvciBkcml2ZXIgYWxsb2NhdGVkIGF0IDB4JTA4eFxuIiwgKHVuc2lnbmVkIGludClk cnYpOwogICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZHJ2KTsKCiAgICAvKiBpbml0 IG1pc2NkZXZpY2UgKi8KICAgIGRydi0+bWRldi5taW5vciA9IE1JU0NfRFlOQU1JQ19NSU5P UjsKICAgIGRydi0+bWRldi5uYW1lID0gInRlc3RkcnYiOwogICAgZHJ2LT5tZGV2LmZvcHMg PSAmZHJ2X29wczsKICAgIHJldCA9IG1pc2NfcmVnaXN0ZXIoJmRydi0+bWRldik7CiAgICBp ZihyZXQpIHsKICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJjcmVhdGUgbWlzYyBkZXZp Y2UgZmFpbGVkXG4iKTsKICAgICAgICByZXR1cm4gLUVOT0RFVjsKICAgIH0KICAgIGRldl9p bmZvKCZwZGV2LT5kZXYsICJtaXNjIGRldmljZSBjcmVhdGVkXG4iKTsKCiAgICBkcnYtPm1j YXNwX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYs ICJtcHUiKTsKICAgIGlmKElTX0VSUihkcnYtPm1jYXNwX2Jhc2UpKSB7CiAgICAgICAgZGV2 X2VycigmcGRldi0+ZGV2LCAiZ2V0IHZpcnR1YWwgYWRkcmVzcyBmb3IgTWNBU1AgcmVnaXN0 ZXJzIGJhc2UgZmFpbGVkLlxuIik7CiAgICAgICAgcmV0dXJuIFBUUl9FUlIoZHJ2LT5tY2Fz cF9iYXNlKTsKICAgIH0KICAgIGRldl9pbmZvKCZwZGV2LT5kZXYsICJ2aXJ0dWFsIGFkZHJl c3MgZm9yIE1jQVNQIHJlZ2lzdGVycyBiYXNlIG1hcHBlZCBhdCAweCUwOFguXG4iLCAodW5z aWduZWQgaW50KWRydi0+bWNhc3BfYmFzZSk7CiAgICBtY2FzcF9kdW1wX3JlZ2lzdGVycyhk cnYtPm1jYXNwX2Jhc2UpOwoKICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW50IGRydl9yZW1v dmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSogcGRldikKewogICAgc3RydWN0IHRlc3RkcnYx ICpkcnYgPSAoc3RydWN0IHRlc3RkcnYxKilwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsK CiAgICBwcl9pbmZvKCJyZW1vdmUgZnVuY3Rpb24gY2FsbGVkLlxuIik7CiAgICBtaXNjX2Rl cmVnaXN0ZXIoJmRydi0+bWRldik7CiAgICByZXR1cm4gMDsKfQoKLyogbGlzdCBvZiBkZXZp Y2VzIHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyICovCnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIG1jYXNwX2lkc1tdID0gewogICAgewogICAgICAgIC5jb21wYXRpYmxlID0g InRpLGFtMzN4eC1tY2FzcC1hdWRpbyIsCiAgICAgICAgLmRhdGEgPSBOVUxMLAogICAgfSwK ICAgIHt9Cn07Ck1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1jYXNwX2lkcyk7CgovKiBQbGF0 Zm9ybSBkcml2ZXIgaW5mb3JtYXRpb24gKi8Kc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZXN0 X2RyaXZlciA9IHsKICAgIC5wcm9iZSA9IGRydl9wcm9iZSwKICAgIC5yZW1vdmUgPSBkcnZf cmVtb3ZlLAogICAgLmRyaXZlciA9IHsKICAgICAgICAubmFtZSA9ICJ0ZXN0ZHJ2MSIsCiAg ICAgICAgLm9mX21hdGNoX3RhYmxlID0gbWNhc3BfaWRzLAogICAgICAgIC5vd25lciA9IFRI SVNfTU9EVUxFCiAgICB9Cn07CgovKiogVGhlIExLTSBpbml0aWFsaXphdGlvbiBmdW5jdGlv bi4KICoKICogQHJldHVybiByZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bC4KICovIApzdGF0aWMg aW50IHRlc3RkcnYxX2luaXQodm9pZCkKewogICAgcHJfaW5mbygibW9kdWxlIGluaXQuLi5c biIpOwogICAgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZ0ZXN0X2RyaXZlcik7CiAgICBy ZXR1cm4gMDsKfQptb2R1bGVfaW5pdCh0ZXN0ZHJ2MV9pbml0KTsKCi8qKiBUaGUgTEtNIGNs ZWFudXAgZnVuY3Rpb24uCiAqLwpzdGF0aWMgdm9pZCB0ZXN0ZHJ2MV9leGl0KHZvaWQpCnsK ICAgIHByX2luZm8oIm1vZHVsZSByZWxlYXNlIC4uLlxuIik7CiAgICBwbGF0Zm9ybV9kcml2 ZXJfdW5yZWdpc3RlcigmdGVzdF9kcml2ZXIpOwp9Cm1vZHVsZV9leGl0KHRlc3RkcnYxX2V4 aXQpOwoKCk1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKTU9EVUxFX0FVVEhPUigiRWR1YXJkIEZ1 Y2hzIik7Ck1PRFVMRV9ERVNDUklQVElPTigiVGVzdGRydjEgZm9yIGluc3BlY3QgTWNBU1Ag aW50ZXJmYWNlLiIpOwo= --------------0DCFE3DA8818561A9D821905 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies --------------0DCFE3DA8818561A9D821905--