From owner-freebsd-multimedia@FreeBSD.ORG Sat Jan 8 19:50:00 2011 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 99D9A10656A9 for ; Sat, 8 Jan 2011 19:50:00 +0000 (UTC) (envelope-from gallatin@gmail.com) Received: from mail-gy0-f182.google.com (mail-gy0-f182.google.com [209.85.160.182]) by mx1.freebsd.org (Postfix) with ESMTP id 4D5118FC14 for ; Sat, 8 Jan 2011 19:50:00 +0000 (UTC) Received: by gyf3 with SMTP id 3so7491076gyf.13 for ; Sat, 08 Jan 2011 11:49:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=DW4HDz24PTtPTohkkr2SEWHH4RApxoXMFewmICm8zqA=; b=i4Mh/7eav4FHKLPK9jDR6sSdBoB/B2Eva/JmkXTCoCp2kwFHIaJfVZ+IyYra1qJBcj CoQlhYVrL3pBhNXpxNaRHtFEEb+mXIdwB26/Kb3fPrMu5BiZRoI2dkEtWLPZ64hH+SNx Bmthk3s9hc/bSumJ6I4tPOj2AnrdjBhREoo9g= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=dtstqt2YP/ZVsxPeTMWpeGTF+HWIgCW/dYGDPc2pq4TBcxtKON4pGubhhXX58hMnWv aKnXj3PVVBr/mgqT8xAG8RH5EA8I9mIwTq/xNOQoYKz/NShNqIrP5ITi6vEJWWsI2+5d Drcww1ohYaIx/k3IY+xZ7t8swbxnQpyHnjEiM= MIME-Version: 1.0 Received: by 10.100.136.14 with SMTP id j14mr11085000and.262.1294516199557; Sat, 08 Jan 2011 11:49:59 -0800 (PST) Received: by 10.100.248.15 with HTTP; Sat, 8 Jan 2011 11:49:59 -0800 (PST) In-Reply-To: References: Date: Sat, 8 Jan 2011 14:49:59 -0500 Message-ID: From: Andrew Gallatin To: freebsd-multimedia@freebsd.org Content-Type: multipart/mixed; boundary=0016e644cfe23b0f3d04995b0a97 Subject: Re: em28xx? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Jan 2011 19:50:00 -0000 --0016e644cfe23b0f3d04995b0a97 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Sat, Jan 8, 2011 at 2:11 PM, Andrew Gallatin wrote: > (see appended output). =A0Has anybody tried =A0this before? =A0What are t= he > general steps for porting a driver? So I hacked on it for a while (see attached dirty patch) and I've got the em28xx device seen. But it dies in v4l2_device_register(): (gdb) bt #0 0x000000000040aeba in v4l2_device_register (dev=3D0x8011bf4b0, v4l2_dev=3D0x801202630) at /tank/ports/multimedia/webcamd/work.bak/webcamd-0.1.18/v4l-dvb/linux= /drivers/media/video/v4l2-device.c:47 #1 0x000000000046c933 in em28xx_usb_probe (interface=3D0x8011bf4b0, id=3D0= x6d43c8) at /tank/ports/multimedia/webcamd/work.bak/webcamd-0.1.18/v4l-dvb/linux= /drivers/media/video/em28xx/em28xx-cards.c:2908 #2 0x00000000004084f2 in usb_linux_probe_p (p_bus=3D0x758d50, p_addr=3D0x758d54, p_index=3D0x758d58) at /tank/ports/multimedia/webcamd/work.bak/webcamd-0.1.18/kernel/linux_usb.c:4= 15 #3 0x00000000004f04ff in main (argc=3D-5792, argv=3D0x7fffffffea80) at webcamd.c:482 (gdb) frame 0 #0 0x000000000040aeba in v4l2_device_register (dev=3D0x8011bf4b0, v4l2_dev=3D0x801202630) at /tank/ports/multimedia/webcamd/work.bak/webcamd-0.1.18/v4l-dvb/linux= /drivers/media/video/v4l2-device.c:47 47 snprintf(v4l2_dev->name, sizeof(v4l2_dev->name), "%s %s", (gdb) l 42 return 0; 43 } 44 45 /* Set name to driver name + device name if it is empty. */ 46 if (!v4l2_dev->name[0]) 47 snprintf(v4l2_dev->name, sizeof(v4l2_dev->name), "%s %s", 48 dev->driver->name, dev_name(dev)); 49 if (dev_get_drvdata(dev)) 50 v4l2_warn(v4l2_dev, "Non-NULL drvdata on register\n= "); 51 dev_set_drvdata(dev, v4l2_dev); (gdb) p dev->driver->name Cannot access memory at address 0x0 (gdb) p dev->driver $2 =3D (struct device_driver *) 0x0 (gdb) p dev $3 =3D (struct device *) 0x8011bf4b0 Advice? Thanks, Drew --0016e644cfe23b0f3d04995b0a97 Content-Type: text/x-patch; charset=US-ASCII; name="t.diff" Content-Disposition: attachment; filename="t.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gioxdk6t0 T25seSBpbiB3b3JrLmJhazogLlBMSVNULmZsYXR0ZW5lZApPbmx5IGluIHdvcmsuYmFrOiAuUExJ U1QubWt0bXAKT25seSBpbiB3b3JrLmJhazogLlBMSVNULm9iamR1bXAKT25seSBpbiB3b3JrLmJh azogLlBMSVNULnNldHVpZApPbmx5IGluIHdvcmsuYmFrOiAuUExJU1Qud3JpdGFibGUKT25seSBp biB3b3JrLmJhazogLmJ1aWxkX2RvbmUud2ViY2FtZC5fdXNyX2xvY2FsCk9ubHkgaW4gd29yay5i YWs6IC5jb25maWd1cmVfZG9uZS53ZWJjYW1kLl91c3JfbG9jYWwKT25seSBpbiB3b3JrLmJhazog Lmluc3RhbGxfZG9uZS53ZWJjYW1kLl91c3JfbG9jYWwKT25seSBpbiB3b3JrLmJhazogd2ViY2Ft ZApkaWZmIC11ciB3b3JrL3dlYmNhbWQtMC4xLjE4L01ha2VmaWxlIHdvcmsuYmFrL3dlYmNhbWQt MC4xLjE4L01ha2VmaWxlCi0tLSB3b3JrL3dlYmNhbWQtMC4xLjE4L01ha2VmaWxlCTIwMTEtMDEt MDggMTQ6NDM6MDkuMTQ3Nzk1OTE3IC0wNTAwCisrKyB3b3JrLmJhay93ZWJjYW1kLTAuMS4xOC9N YWtlZmlsZQkyMDExLTAxLTA4IDE0OjI4OjU5LjMxMTA1NDY1NSAtMDUwMApAQCAtMzE2LDEzICsz MTYsMTMgQEAKICMKIAogI1NSQ1MrPSBlbTI4eHgtYXVkaW8uYwotI1NSQ1MrPSBlbTI4eHgtY2Fy ZHMuYwotI1NSQ1MrPSBlbTI4eHgtY29yZS5jCi0jU1JDUys9IGVtMjh4eC1kdmIuYwotI1NSQ1Mr PSBlbTI4eHgtaTJjLmMKLSNTUkNTKz0gZW0yOHh4LWlucHV0LmMKLSNTUkNTKz0gZW0yOHh4LXZi aS5jCi0jU1JDUys9IGVtMjh4eC12aWRlby5jCitTUkNTKz0gZW0yOHh4LWNhcmRzLmMKK1NSQ1Mr PSBlbTI4eHgtY29yZS5jCitTUkNTKz0gZW0yOHh4LWR2Yi5jCitTUkNTKz0gZW0yOHh4LWkyYy5j CitTUkNTKz0gZW0yOHh4LWlucHV0LmMKK1NSQ1MrPSBlbTI4eHgtdmJpLmMKK1NSQ1MrPSBlbTI4 eHgtdmlkZW8uYwogCiAjCiAjIGhkcHZyCk9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6 IGEub3V0Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IGF1MDgyOC40Lmd6Ck9ubHkg aW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IGJlbnEuNC5negpPbmx5IGluIHdvcmsuYmFrL3dl YmNhbWQtMC4xLjE4OiBidHR2LjQuZ3oKT25seSBpbiB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODog Y29uZXguNC5negpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4OiBjcGlheC40Lmd6Ck9u bHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IGN4MjM4ODUuNC5negpPbmx5IGluIHdvcmsu YmFrL3dlYmNhbWQtMC4xLjE4OiBjeDg4LjQuZ3oKT25seSBpbiB3b3JrLmJhay93ZWJjYW1kLTAu MS4xODogZW0yOHh4LjQuZ3oKT25seSBpbiB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODogZXQ2MXgy NTEuNC5negpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4OiBmaW5lcGl4LjQuZ3oKT25s eSBpbiB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODogZ2w4NjAuNC5negpPbmx5IGluIHdvcmsuYmFr L3dlYmNhbWQtMC4xLjE4OiBpYm1jYW0uNC5negpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQtMC4x LjE4OiBpdnR2LjQuZ3oKT25seSBpbiB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODogamVpbGluai40 Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IG01NjAyLjQuZ3oKT25seSBpbiB3 b3JrLmJhay93ZWJjYW1kLTAuMS4xODogbWFycy40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2Ft ZC0wLjEuMTg6IG1leWUuNC5negpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4OiBtcjk3 MzEwYS40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IG92NTE5LjQuZ3oKT25s eSBpbiB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODogb3Y1MzQuNC5negpPbmx5IGluIHdvcmsuYmFr L3dlYmNhbWQtMC4xLjE4OiBwYWN4eHguNC5negpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQtMC4x LjE4OiBwdnJ1c2IyLjQuZ3oKT25seSBpbiB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODogcHdjLjQu Z3oKT25seSBpbiB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODogc2FhNzEzNC40Lmd6Ck9ubHkgaW4g d29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IHNhYTcxNjQuNC5negpPbmx5IGluIHdvcmsuYmFrL3dl YmNhbWQtMC4xLjE4OiBzZTQwMS40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6 IHNpNDcweC40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IHNuOWMxMDIuNC5n egpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4OiBzbjljMjB4LjQuZ3oKT25seSBpbiB3 b3JrLmJhay93ZWJjYW1kLTAuMS4xODogc29uaXhqLjQuZ3oKT25seSBpbiB3b3JrLmJhay93ZWJj YW1kLTAuMS4xODogc3BjYTV4eC40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6 IHNxOTA1Yy40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IHN0azAxNC40Lmd6 Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IHN0djA2eHguNC5negpPbmx5IGluIHdv cmsuYmFrL3dlYmNhbWQtMC4xLjE4OiBzdW5wbHVzLjQuZ3oKT25seSBpbiB3b3JrLmJhay93ZWJj YW1kLTAuMS4xODogdDYxMy40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IHR2 ODUzMi40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IHVzYnZpc2lvbi40Lmd6 CmRpZmYgLXVyIHdvcmsvd2ViY2FtZC0wLjEuMTgvdjRsLWR2Yi9saW51eC9kcml2ZXJzL21lZGlh L3ZpZGVvL2VtMjh4eC9lbTI4eHgtY29yZS5jIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4L3Y0bC1k dmIvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWNvcmUuYwotLS0gd29y ay93ZWJjYW1kLTAuMS4xOC92NGwtZHZiL2xpbnV4L2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4 L2VtMjh4eC1jb3JlLmMJMjAxMC0wNy0wMSAyMzozODo1NC4wMDAwMDAwMDAgLTA0MDAKKysrIHdv cmsuYmFrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmIvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9l bTI4eHgvZW0yOHh4LWNvcmUuYwkyMDExLTAxLTA4IDE0OjMxOjI1LjUxMjc5Mzk4MiAtMDUwMApA QCAtOTczLDkgKzk3MywxMSBAQAogCWZvciAoaSA9IDA7IGkgPCBkZXYtPmlzb2NfY3RsLm51bV9i dWZzOyBpKyspIHsKIAkJdXJiID0gZGV2LT5pc29jX2N0bC51cmJbaV07CiAJCWlmICh1cmIpIHsK KyNpZiAwCiAJCQlpZiAoIWlycXNfZGlzYWJsZWQoKSkKIAkJCQl1c2Jfa2lsbF91cmIodXJiKTsK IAkJCWVsc2UKKyNlbmRpZgogCQkJCXVzYl91bmxpbmtfdXJiKHVyYik7CiAKIAkJCWlmIChkZXYt Pmlzb2NfY3RsLnRyYW5zZmVyX2J1ZmZlcltpXSkgewpkaWZmIC11ciB3b3JrL3dlYmNhbWQtMC4x LjE4L3Y0bC1kdmIvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWR2Yi5j IHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmIvbGludXgvZHJpdmVycy9tZWRpYS92aWRl by9lbTI4eHgvZW0yOHh4LWR2Yi5jCi0tLSB3b3JrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmIvbGlu dXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWR2Yi5jCTIwMTAtMDctMDEgMjM6 Mzg6NTQuMDAwMDAwMDAwIC0wNDAwCisrKyB3b3JrLmJhay93ZWJjYW1kLTAuMS4xOC92NGwtZHZi L2xpbnV4L2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1kdmIuYwkyMDExLTAxLTA4 IDE0OjMwOjExLjE1NTc5OTcyNyAtMDUwMApAQCAtNTA0LDggKzUwNCwxMCBAQAogCS8qIGluaXQg ZnJvbnRlbmQgKi8KIAlzd2l0Y2ggKGRldi0+bW9kZWwpIHsKIAljYXNlIEVNMjg3NF9MRUFERVJT SElQX0lTREJUOgorI2lmIDAKIAkJZHZiLT5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczkyMV9hdHRh Y2gsCiAJCQkJJnNoYXJwX2lzZGJ0LCAmZGV2LT5pMmNfYWRhcCk7CisjZW5kaWYKIAogCQlpZiAo IWR2Yi0+ZnJvbnRlbmQpIHsKIAkJCXJlc3VsdCA9IC1FSU5WQUw7CmRpZmYgLXVyIHdvcmsvd2Vi Y2FtZC0wLjEuMTgvdjRsLWR2Yi9saW51eC9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4 eHgtaW5wdXQuYyB3b3JrLmJhay93ZWJjYW1kLTAuMS4xOC92NGwtZHZiL2xpbnV4L2RyaXZlcnMv bWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1pbnB1dC5jCi0tLSB3b3JrL3dlYmNhbWQtMC4xLjE4 L3Y0bC1kdmIvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWlucHV0LmMJ MjAxMC0wNy0wMSAyMzozODo1NC4wMDAwMDAwMDAgLTA0MDAKKysrIHdvcmsuYmFrL3dlYmNhbWQt MC4xLjE4L3Y0bC1kdmIvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWlu cHV0LmMJMjAxMS0wMS0wOCAxNDozNTo0Ni45OTIwMjU1NjAgLTA1MDAKQEAgLTMzNSw2ICszMzUs NyBAQAogCQlkcHJpbnRrKCIlczogdG9nZ2xlOiAlZCwgY291bnQ6ICVkLCBrZXkgMHglMDJ4JTAy eFxuIiwgX19mdW5jX18sCiAJCQlwb2xsX3Jlc3VsdC50b2dnbGVfYml0LCBwb2xsX3Jlc3VsdC5y ZWFkX2NvdW50LAogCQkJcG9sbF9yZXN1bHQucmNfYWRkcmVzcywgcG9sbF9yZXN1bHQucmNfZGF0 YVswXSk7CisjaWYgMAogCQlpZiAoaXItPmZ1bGxfY29kZSkKIAkJCWlyX2tleWRvd24oaXItPmlu cHV0LAogCQkJCSAgIHBvbGxfcmVzdWx0LnJjX2FkZHJlc3MgPDwgOCB8CkBAIC0zNDQsNyArMzQ1 LDcgQEAKIAkJCWlyX2tleWRvd24oaXItPmlucHV0LAogCQkJCSAgIHBvbGxfcmVzdWx0LnJjX2Rh dGFbMF0sCiAJCQkJICAgcG9sbF9yZXN1bHQudG9nZ2xlX2JpdCk7Ci0KKyNlbmRpZgogCQlpZiAo aXItPmRldi0+Y2hpcF9pZCA9PSBDSElQX0lEX0VNMjg3NCkKIAkJCS8qIFRoZSBlbTI4NzQgY2xl YXJzIHRoZSByZWFkY291bnQgZmllbGQgZXZlcnkgdGltZSB0aGUKIAkJCSAgIHJlZ2lzdGVyIGlz IHJlYWQuICBUaGUgZW0yODYwLzI4ODAgZGF0YXNoZWV0IHNheXMgdGhhdCBpdApAQCAtMzgyLDcg KzM4Myw3IEBACiAjZWxzZQogCUlOSVRfREVMQVlFRF9XT1JLKCZpci0+d29yaywgZW0yOHh4X2ly X3dvcmspOwogI2VuZGlmCi0Jc2NoZWR1bGVfZGVsYXllZF93b3JrKCZpci0+d29yaywgMCk7CisJ Ly9zY2hlZHVsZV9kZWxheWVkX3dvcmsoJmlyLT53b3JrLCAwKTsKIAogCXJldHVybiAwOwogfQpA QCAtMzkxLDcgKzM5Miw3IEBACiB7CiAJc3RydWN0IGVtMjh4eF9JUiAqaXIgPSBwcml2OwogCi0J Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpci0+d29yayk7CisJLy9jYW5jZWxfZGVsYXllZF93 b3JrX3N5bmMoJmlyLT53b3JrKTsKIH0KIAogaW50IGVtMjh4eF9pcl9jaGFuZ2VfcHJvdG9jb2wo dm9pZCAqcHJpdiwgdTY0IGlyX3R5cGUpCkBAIC00MzksNyArNDQwLDcgQEAKIAlzdHJ1Y3QgZW0y OHh4X0lSICppcjsKIAlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXY7CiAJaW50IGVyciA9IC1F Tk9NRU07Ci0KKyNpZiAwCiAJaWYgKGRldi0+Ym9hcmQuaXJfY29kZXMgPT0gTlVMTCkgewogCQkv KiBObyByZW1vdGUgY29udHJvbCBzdXBwb3J0ICovCiAJCXJldHVybiAwOwpAQCAtNTA3LDYgKzUw OCw3IEBACiAJZGV2LT5pciA9IE5VTEw7CiAgZXJyX291dF9mcmVlOgogCWtmcmVlKGlyKTsKKyNl bmRpZgogCXJldHVybiBlcnI7CiB9CiAKQEAgLTUxOSw3ICs1MjEsNyBAQAogCQlyZXR1cm4gMDsK IAogCWVtMjh4eF9pcl9zdG9wKGlyKTsKLQlpcl9pbnB1dF91bnJlZ2lzdGVyKGlyLT5pbnB1dCk7 CisvLwlpcl9pbnB1dF91bnJlZ2lzdGVyKGlyLT5pbnB1dCk7CiAJa2ZyZWUoaXIpOwogCiAJLyog ZG9uZSAqLwpkaWZmIC11ciB3b3JrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmIvbGludXgvZHJpdmVy cy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4Lmggd29yay5iYWsvd2ViY2FtZC0wLjEuMTgvdjRs LWR2Yi9saW51eC9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4eHguaAotLS0gd29yay93 ZWJjYW1kLTAuMS4xOC92NGwtZHZiL2xpbnV4L2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2Vt Mjh4eC5oCTIwMTAtMDctMDEgMjM6Mzg6NTQuMDAwMDAwMDAwIC0wNDAwCisrKyB3b3JrLmJhay93 ZWJjYW1kLTAuMS4xOC92NGwtZHZiL2xpbnV4L2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2Vt Mjh4eC5oCTIwMTEtMDEtMDggMTQ6MjM6MzEuNzUyMTQzOTU1IC0wNTAwCkBAIC0zNSw3ICszNSw3 IEBACiAjaW5jbHVkZSA8bWVkaWEvaXIta2JkLWkyYy5oPgogI2luY2x1ZGUgPG1lZGlhL2lyLWNv cmUuaD4KICNpZiBkZWZpbmVkKENPTkZJR19WSURFT19FTTI4WFhfRFZCKSB8fCBkZWZpbmVkKENP TkZJR19WSURFT19FTTI4WFhfRFZCX01PRFVMRSkKLSNpbmNsdWRlIDxtZWRpYS92aWRlb2J1Zi1k dmIuaD4KKy8vI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmLWR2Yi5oPgogI2VuZGlmCiAjaW5jbHVk ZSAidHVuZXIteGMyMDI4LmgiCiAjaW5jbHVkZSAiZW0yOHh4LXJlZy5oIgpkaWZmIC11ciB3b3Jr L3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmIvbGludXgvaW5jbHVkZS9tZWRpYS9pci1jb3JlLmggd29y ay5iYWsvd2ViY2FtZC0wLjEuMTgvdjRsLWR2Yi9saW51eC9pbmNsdWRlL21lZGlhL2lyLWNvcmUu aAotLS0gd29yay93ZWJjYW1kLTAuMS4xOC92NGwtZHZiL2xpbnV4L2luY2x1ZGUvbWVkaWEvaXIt Y29yZS5oCTIwMTAtMDctMDEgMjM6Mzg6NTQuMDAwMDAwMDAwIC0wNDAwCisrKyB3b3JrLmJhay93 ZWJjYW1kLTAuMS4xOC92NGwtZHZiL2xpbnV4L2luY2x1ZGUvbWVkaWEvaXItY29yZS5oCTIwMTEt MDEtMDggMTQ6MjQ6MDkuNTIyNzkxOTAxIC0wNTAwCkBAIC0xNyw3ICsxNyw3IEBACiAjZGVmaW5l IF9JUl9DT1JFCiAKICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgotI2luY2x1ZGUgPGxpbnV4 L2tmaWZvLmg+CisvLyNpbmNsdWRlIDxsaW51eC9rZmlmby5oPgogI2luY2x1ZGUgPGxpbnV4L3Rp bWUuaD4KICNpbmNsdWRlIDxsaW51eC90aW1lci5oPgogI2luY2x1ZGUgPG1lZGlhL3JjLW1hcC5o PgpkaWZmIC11ciB3b3JrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmItYWJkM2FhYzY2NDRlL2xpbnV4 L2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1jb3JlLmMgd29yay5iYWsvd2ViY2Ft ZC0wLjEuMTgvdjRsLWR2Yi1hYmQzYWFjNjY0NGUvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9l bTI4eHgvZW0yOHh4LWNvcmUuYwotLS0gd29yay93ZWJjYW1kLTAuMS4xOC92NGwtZHZiLWFiZDNh YWM2NjQ0ZS9saW51eC9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4eHgtY29yZS5jCTIw MTAtMDctMDEgMjM6Mzg6NTQuMDAwMDAwMDAwIC0wNDAwCisrKyB3b3JrLmJhay93ZWJjYW1kLTAu MS4xOC92NGwtZHZiLWFiZDNhYWM2NjQ0ZS9saW51eC9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4 eC9lbTI4eHgtY29yZS5jCTIwMTEtMDEtMDggMTQ6MzE6MjUuNTEyNzkzOTgyIC0wNTAwCkBAIC05 NzMsOSArOTczLDExIEBACiAJZm9yIChpID0gMDsgaSA8IGRldi0+aXNvY19jdGwubnVtX2J1ZnM7 IGkrKykgewogCQl1cmIgPSBkZXYtPmlzb2NfY3RsLnVyYltpXTsKIAkJaWYgKHVyYikgeworI2lm IDAKIAkJCWlmICghaXJxc19kaXNhYmxlZCgpKQogCQkJCXVzYl9raWxsX3VyYih1cmIpOwogCQkJ ZWxzZQorI2VuZGlmCiAJCQkJdXNiX3VubGlua191cmIodXJiKTsKIAogCQkJaWYgKGRldi0+aXNv Y19jdGwudHJhbnNmZXJfYnVmZmVyW2ldKSB7CmRpZmYgLXVyIHdvcmsvd2ViY2FtZC0wLjEuMTgv djRsLWR2Yi1hYmQzYWFjNjY0NGUvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0y OHh4LWR2Yi5jIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmItYWJkM2FhYzY2NDRlL2xp bnV4L2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1kdmIuYwotLS0gd29yay93ZWJj YW1kLTAuMS4xOC92NGwtZHZiLWFiZDNhYWM2NjQ0ZS9saW51eC9kcml2ZXJzL21lZGlhL3ZpZGVv L2VtMjh4eC9lbTI4eHgtZHZiLmMJMjAxMC0wNy0wMSAyMzozODo1NC4wMDAwMDAwMDAgLTA0MDAK KysrIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmItYWJkM2FhYzY2NDRlL2xpbnV4L2Ry aXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1kdmIuYwkyMDExLTAxLTA4IDE0OjMwOjEx LjE1NTc5OTcyNyAtMDUwMApAQCAtNTA0LDggKzUwNCwxMCBAQAogCS8qIGluaXQgZnJvbnRlbmQg Ki8KIAlzd2l0Y2ggKGRldi0+bW9kZWwpIHsKIAljYXNlIEVNMjg3NF9MRUFERVJTSElQX0lTREJU OgorI2lmIDAKIAkJZHZiLT5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczkyMV9hdHRhY2gsCiAJCQkJ JnNoYXJwX2lzZGJ0LCAmZGV2LT5pMmNfYWRhcCk7CisjZW5kaWYKIAogCQlpZiAoIWR2Yi0+ZnJv bnRlbmQpIHsKIAkJCXJlc3VsdCA9IC1FSU5WQUw7CmRpZmYgLXVyIHdvcmsvd2ViY2FtZC0wLjEu MTgvdjRsLWR2Yi1hYmQzYWFjNjY0NGUvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgv ZW0yOHh4LWlucHV0LmMgd29yay5iYWsvd2ViY2FtZC0wLjEuMTgvdjRsLWR2Yi1hYmQzYWFjNjY0 NGUvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWlucHV0LmMKLS0tIHdv cmsvd2ViY2FtZC0wLjEuMTgvdjRsLWR2Yi1hYmQzYWFjNjY0NGUvbGludXgvZHJpdmVycy9tZWRp YS92aWRlby9lbTI4eHgvZW0yOHh4LWlucHV0LmMJMjAxMC0wNy0wMSAyMzozODo1NC4wMDAwMDAw MDAgLTA0MDAKKysrIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmItYWJkM2FhYzY2NDRl L2xpbnV4L2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1pbnB1dC5jCTIwMTEtMDEt MDggMTQ6MzU6NDYuOTkyMDI1NTYwIC0wNTAwCkBAIC0zMzUsNiArMzM1LDcgQEAKIAkJZHByaW50 aygiJXM6IHRvZ2dsZTogJWQsIGNvdW50OiAlZCwga2V5IDB4JTAyeCUwMnhcbiIsIF9fZnVuY19f LAogCQkJcG9sbF9yZXN1bHQudG9nZ2xlX2JpdCwgcG9sbF9yZXN1bHQucmVhZF9jb3VudCwKIAkJ CXBvbGxfcmVzdWx0LnJjX2FkZHJlc3MsIHBvbGxfcmVzdWx0LnJjX2RhdGFbMF0pOworI2lmIDAK IAkJaWYgKGlyLT5mdWxsX2NvZGUpCiAJCQlpcl9rZXlkb3duKGlyLT5pbnB1dCwKIAkJCQkgICBw b2xsX3Jlc3VsdC5yY19hZGRyZXNzIDw8IDggfApAQCAtMzQ0LDcgKzM0NSw3IEBACiAJCQlpcl9r ZXlkb3duKGlyLT5pbnB1dCwKIAkJCQkgICBwb2xsX3Jlc3VsdC5yY19kYXRhWzBdLAogCQkJCSAg IHBvbGxfcmVzdWx0LnRvZ2dsZV9iaXQpOwotCisjZW5kaWYKIAkJaWYgKGlyLT5kZXYtPmNoaXBf aWQgPT0gQ0hJUF9JRF9FTTI4NzQpCiAJCQkvKiBUaGUgZW0yODc0IGNsZWFycyB0aGUgcmVhZGNv dW50IGZpZWxkIGV2ZXJ5IHRpbWUgdGhlCiAJCQkgICByZWdpc3RlciBpcyByZWFkLiAgVGhlIGVt Mjg2MC8yODgwIGRhdGFzaGVldCBzYXlzIHRoYXQgaXQKQEAgLTM4Miw3ICszODMsNyBAQAogI2Vs c2UKIAlJTklUX0RFTEFZRURfV09SSygmaXItPndvcmssIGVtMjh4eF9pcl93b3JrKTsKICNlbmRp ZgotCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmaXItPndvcmssIDApOworCS8vc2NoZWR1bGVfZGVs YXllZF93b3JrKCZpci0+d29yaywgMCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTM5MSw3ICszOTIs NyBAQAogewogCXN0cnVjdCBlbTI4eHhfSVIgKmlyID0gcHJpdjsKIAotCWNhbmNlbF9kZWxheWVk X3dvcmtfc3luYygmaXItPndvcmspOworCS8vY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpci0+ d29yayk7CiB9CiAKIGludCBlbTI4eHhfaXJfY2hhbmdlX3Byb3RvY29sKHZvaWQgKnByaXYsIHU2 NCBpcl90eXBlKQpAQCAtNDM5LDcgKzQ0MCw3IEBACiAJc3RydWN0IGVtMjh4eF9JUiAqaXI7CiAJ c3RydWN0IGlucHV0X2RldiAqaW5wdXRfZGV2OwogCWludCBlcnIgPSAtRU5PTUVNOwotCisjaWYg MAogCWlmIChkZXYtPmJvYXJkLmlyX2NvZGVzID09IE5VTEwpIHsKIAkJLyogTm8gcmVtb3RlIGNv bnRyb2wgc3VwcG9ydCAqLwogCQlyZXR1cm4gMDsKQEAgLTUwNyw2ICs1MDgsNyBAQAogCWRldi0+ aXIgPSBOVUxMOwogIGVycl9vdXRfZnJlZToKIAlrZnJlZShpcik7CisjZW5kaWYKIAlyZXR1cm4g ZXJyOwogfQogCkBAIC01MTksNyArNTIxLDcgQEAKIAkJcmV0dXJuIDA7CiAKIAllbTI4eHhfaXJf c3RvcChpcik7Ci0JaXJfaW5wdXRfdW5yZWdpc3Rlcihpci0+aW5wdXQpOworLy8JaXJfaW5wdXRf dW5yZWdpc3Rlcihpci0+aW5wdXQpOwogCWtmcmVlKGlyKTsKIAogCS8qIGRvbmUgKi8KZGlmZiAt dXIgd29yay93ZWJjYW1kLTAuMS4xOC92NGwtZHZiLWFiZDNhYWM2NjQ0ZS9saW51eC9kcml2ZXJz L21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4eHguaCB3b3JrLmJhay93ZWJjYW1kLTAuMS4xOC92NGwt ZHZiLWFiZDNhYWM2NjQ0ZS9saW51eC9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4eHgu aAotLS0gd29yay93ZWJjYW1kLTAuMS4xOC92NGwtZHZiLWFiZDNhYWM2NjQ0ZS9saW51eC9kcml2 ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4eHguaAkyMDEwLTA3LTAxIDIzOjM4OjU0LjAwMDAw MDAwMCAtMDQwMAorKysgd29yay5iYWsvd2ViY2FtZC0wLjEuMTgvdjRsLWR2Yi1hYmQzYWFjNjY0 NGUvbGludXgvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LmgJMjAxMS0wMS0wOCAx NDoyMzozMS43NTIxNDM5NTUgLTA1MDAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxtZWRp YS9pci1rYmQtaTJjLmg+CiAjaW5jbHVkZSA8bWVkaWEvaXItY29yZS5oPgogI2lmIGRlZmluZWQo Q09ORklHX1ZJREVPX0VNMjhYWF9EVkIpIHx8IGRlZmluZWQoQ09ORklHX1ZJREVPX0VNMjhYWF9E VkJfTU9EVUxFKQotI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmLWR2Yi5oPgorLy8jaW5jbHVkZSA8 bWVkaWEvdmlkZW9idWYtZHZiLmg+CiAjZW5kaWYKICNpbmNsdWRlICJ0dW5lci14YzIwMjguaCIK ICNpbmNsdWRlICJlbTI4eHgtcmVnLmgiCmRpZmYgLXVyIHdvcmsvd2ViY2FtZC0wLjEuMTgvdjRs LWR2Yi1hYmQzYWFjNjY0NGUvbGludXgvaW5jbHVkZS9tZWRpYS9pci1jb3JlLmggd29yay5iYWsv d2ViY2FtZC0wLjEuMTgvdjRsLWR2Yi1hYmQzYWFjNjY0NGUvbGludXgvaW5jbHVkZS9tZWRpYS9p ci1jb3JlLmgKLS0tIHdvcmsvd2ViY2FtZC0wLjEuMTgvdjRsLWR2Yi1hYmQzYWFjNjY0NGUvbGlu dXgvaW5jbHVkZS9tZWRpYS9pci1jb3JlLmgJMjAxMC0wNy0wMSAyMzozODo1NC4wMDAwMDAwMDAg LTA0MDAKKysrIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4L3Y0bC1kdmItYWJkM2FhYzY2NDRlL2xp bnV4L2luY2x1ZGUvbWVkaWEvaXItY29yZS5oCTIwMTEtMDEtMDggMTQ6MjQ6MDkuNTIyNzkxOTAx IC0wNTAwCkBAIC0xNyw3ICsxNyw3IEBACiAjZGVmaW5lIF9JUl9DT1JFCiAKICNpbmNsdWRlIDxs aW51eC9zcGlubG9jay5oPgotI2luY2x1ZGUgPGxpbnV4L2tmaWZvLmg+CisvLyNpbmNsdWRlIDxs aW51eC9rZmlmby5oPgogI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KICNpbmNsdWRlIDxsaW51eC90 aW1lci5oPgogI2luY2x1ZGUgPG1lZGlhL3JjLW1hcC5oPgpPbmx5IGluIHdvcmsuYmFrL3dlYmNh bWQtMC4xLjE4OiB2YzAzMnguNC5negpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4OiB3 OTk2Ni40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IHc5OTZ4LjQuZ3oKT25s eSBpbiB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODogd2ViY2FtZC44Lmd6Ck9ubHkgaW4gd29yay5i YWsvd2ViY2FtZC0wLjEuMTg6IHdlYmNhbWQuY29yZQpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQt MC4xLjE4OiB6YzAzMDEuNC5negpPbmx5IGluIHdvcmsuYmFrL3dlYmNhbWQtMC4xLjE4OiB6YzN4 eC40Lmd6Ck9ubHkgaW4gd29yay5iYWsvd2ViY2FtZC0wLjEuMTg6IHpvcmFuLjQuZ3oKT25seSBp biB3b3JrLmJhay93ZWJjYW1kLTAuMS4xODogenIzNjR4eC40Lmd6Ck9ubHkgaW4gd29yay5iYWs6 IHdlYmNhbWQuY29uZgo= --0016e644cfe23b0f3d04995b0a97--