Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Mon, 30 Oct 2000 22:07:31 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Mon, 30 Oct 2000 22:07:21 -0500 Received: from ARGENTIUM.MIT.EDU ([18.241.0.107]:34821 "EHLO argentium.mit.edu") by vger.kernel.org with ESMTP id ; Mon, 30 Oct 2000 22:07:05 -0500 Message-ID: <39FE3744.1F6ABC14@mit.edu> Date: Mon, 30 Oct 2000 22:06:44 -0500 From: Matt Yourst Organization: Massachusetts Institute of Technology X-Mailer: Mozilla 4.75 [en] (X11; U; Linux 2.4.0-mty10p6-i686-pII i686) X-Accept-Language: en MIME-Version: 1.0 To: aer-list@mailandnews.com CC: linux-kernel@vger.kernel.org Subject: Re: / on ramfs, possible? [yes! - patch included] Content-Type: multipart/mixed; boundary="------------530003EC3520321800336EE1" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------530003EC3520321800336EE1 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, I read your post and I think I have just what you're looking for. I've attached a patch that allows you to mount root as ramfs and populate it directly from a tar archive (specified just like an initrd image, but without having to deal with a fixed-size initrd or pivot_root at all.) This was based on some earlier work from the Linux router project that I rewrote and ported to 2.2 and 2.4 a few months ago. I didn't post it to the list since I figured it was too late for 2.4.0, but if you're interested, here it is. Here's the Configure.help description: CONFIG_RAMFS_ROOT Allow the kernel to mount a ramfs namespace as the root filesystem or as a pre-root filesystem for running a /linuxrc script (similar to how initial RAM disk (initrd) support works.) Since ramfs has no physical or virtual block device to provide its data as an initrd image would, you must provide a standard tar format archive to be extracted into the empty ramfs root filesystem. Currently this tar archive may *not* be compressed (i.e., tar.gz style); if compression is desired, use a bootloader with automatic gunzip support such as GRUB. To specify the tar archive used to build the root filesystem, use the initrd= kernel command line option (except with a tar archive instead of a real ext2/minix/romfs filesystem image.) To mount the tar archive as the actual root filesystem, specify the same initrd= option above and also include "root=/dev/ramfs" in the kernel command line. You may enable both this option and initrd support; however, if a tar archive is detected instead of an initrd-supported filesystem image, this option will override initrd support. Note: Some versions of GNU tar create invalid archives that cannot be extracted by the kernel. In particular, tar may add a file to an archive without previously adding its containing directory. If your ramfs archive does not mount correctly because of this, try creating it in another way or with another file order. (Patch should apply to 2.4.0-test10-pre6 on i386. It needs to be updated for other architectures, mostly in setup.c though.) I hope this is helpful. Maybe the maintainers would like to comment on this too (i.e., might it be considered for 2.4.1, etc.?) - Matt Yourst ------------------------------------------------------------- Matt T. Yourst Massachusetts Institute of Technology yourst@mit.edu 617.225.7690 513 French House - 476 Memorial Drive - Cambridge, MA 02136 ------------------------------------------------------------- --------------530003EC3520321800336EE1 Content-Type: application/octet-stream; name="linux-ramfs-tar-root.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="linux-ramfs-tar-root.diff" LS0tIGxpbnV4L2ZzL3JhbWZzL01ha2VmaWxlLm9yaWcJU2F0IE9jdCAyOCAyMTo1NjoxMiAy MDAwCisrKyBsaW51eC9mcy9yYW1mcy9NYWtlZmlsZQlTYXQgT2N0IDI4IDIxOjU2OjI1IDIw MDAKQEAgLTUsNiArNSw5IEBACiBPX1RBUkdFVCA6PSByYW1mcy5vCiAKIE9fT0JKUyA6PSBp bm9kZS5vCitpZmVxICgkKENPTkZJR19SQU1GU19ST09UKSx5KQorCU9fT0JKUyArPSB1bnRh ci5vCitlbmRpZgogCiBNX09CSlMgOj0gJChPX1RBUkdFVCkKIAotLS0gbGludXgvZnMvcmFt ZnMvdW50YXIuYy5lbXB0eQlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkKKysrIGxpbnV4L2Zz L3JhbWZzL3VudGFyLmMJU2F0IE9jdCAyOCAyMjo1MjoxNSAyMDAwCkBAIC0wLDAgKzEsMzA3 IEBACisvKgorICogbGludXgvZnMvcmFtZnMvdW50YXIuYworICogTW91bnQgYSBSQU0tYmFz ZWQgcm9vdCBmaWxlc3lzdGVtIGZyb20gdGhlIGNvbnRlbnRzIG9mIGEgdGFyIGFyY2hpdmUK KyAqCisgKiBMaW51eCAyLjQgdmVyc2lvbiBDb3B5cmlnaHQgKGMpIDIwMDAgTWF0dCBULiBZ b3Vyc3QgPHlvdXJzdEBtaXQuZWR1PgorICogT3JpZ2luYWwgY29kZSBmb3IgTGludXggMi4w IENvcHlyaWdodCAoYykgMTk5OCBEaW1pdHJpIE1heml1ayBhbmQgRGF2ZSBDaW5lZ2UKKyAq IAorICogMjAwMC0wNy0yOSBNYXR0IFQuIFlvdXJzdCA8eW91cnN0QG1pdC5lZHU+CisgKiBV cGdyYWRlZCBhbGwgY29kZSB0byBMaW51eCAyLjQuIE5vdyBleHRyYWN0cyB0byBhIGZ1bGwg cmVhZC13cml0ZSByYW1mcyAKKyAqIGJhc2VkIHJvb3QgcnVubmluZyBkaXJlY3RseSBvdXQg b2YgdGhlIHBhZ2UgY2FjaGUuCisgKgorICogMTk5OC0wMy0zMQorICogU3VibWlzc2lvbiBm b3IgbGludXgga2VybmVsIDIuMC4zNAorICogVGhpcyB2ZXJzaW9uIGlzIGV4ZWN0bHkgbGlr ZSB0aGUgMTk5OC0wMS0xNyB2ZXJzaW9uLCBwbHVzIHRoZSBhZGRpdGlvbgorICogb2YgYSB3 cmFwcGVyIGZ1bmN0aW9uIHRvIGRlYWwgd2l0aCB0aGUgdGhlIHNpbXBsZV9zdHJ0b3VsIHNw YWNlcyBpc3N1ZS4KKyAqIEkgZGlkIG5vdCBmZWVsIGl0IHdhcyB3aXNlIChhbmQgd291bGQg bWVhbiB0aGlzIHBhdGNoIGlzIHJlamVjdGVkIDogPikgCisgKiB0byByZXF1aXJlIHRoZSB2 c3ByaW50ZiBjaGFuZ2UgaW4gdGhlIHN0YWJsZSBrZXJuZWwgc2VyaWVzLgorICoKKyAqIDE5 OTgtMDEtMTcKKyAqIElzIEdOVXRhciB0aGUgYmlnZ2VzdCBmdWNrLXVwIGluIHJlbGVhc2Vk IHNvZnR3YXJlIHNpbmNlIE1TLURPUz8gCisgKiBJdCBjb3VsZCBiZS4KKyAqIAorICogVGFy IGRlY2lkZXMgaXQgc29tZXRpbWVzIGxpa2VzIHRvIG1ha2UgYSBkaXIgZW50cnkgdGhhdCBp cyBibGFuayBvciAiLi8iLgorICogV2Ugbm93IGNoZWNrIGZvciB0aGlzLCBhbmQgbW9kaWZp ZWQgb3VyIGV4aXQgcGF0dGVybiB0byBkZWFsIHdpdGggaXQuCisgKiAKKyAqIEFsdGhvdWdo IGJvdGggRGltYSBhbmQgSSB0aG91Z2h0IGl0IHdhc24ndCBwb3NzaWJsZSwgdGFyIGNhbiAg CisgKiBzdG9yIGZpbGVzIHdpdGhvdXQgZmlyc3Qgc3RvcmluZyB0aGUgZGlyIHRoZXkgcmVx dWlyZS4KKyAqIElmIHlvdXIgbmljZSBmcmVzaGx5IG1hZGUgYXJjaGl2ZSBkb2Vzbid0IHdv cmsgZG9uJ3QgYmUgc3VycHJpc2VkLgorICogVHJ5IHNwZWNpbmcgYSBkaWZmZXJlbnQgd2F5 IHRvIG1ha2UgaXQuCisgKgorICogRGltYSBoYXMgYSBmb3J0aGNvbWluZyBtaW5pIHRhciBh cmNoaXZlIGNyZWF0b3IgKGN0YXIpIHRoYXQgc2hvdWxkCisgKiBiZXR0ZXIgZGVhbCB3aXRo IHRoZXNlIHByb2JsZW1zLiBZb3UgbWF5IHdhbnQgdG8gbG9vayBmb3IgaXQgaWYgbm9ybWFs CisgKiB0YXIgZG9lcyBub3Qgc3VpdGUgeW91ciBuZWVkcyB3aGVuIHVzaW5nIHRoaXMga2Vy bmVsIGZlYXR1cmUuCisgKgorICogMTk5OC0wMS0xMAorICogVGhpcyB2ZXJzaW9uIG9mIHVu dGFyIGlzIHZlcnkgbGltaXRlZC4gSXQgZXhwZWN0cyBhIGZhaXJseSBnb29kIGFyY2hpdmUs IAorICogYXMgd2VsbCBhcyBleHBhbnNpb24gdG8gYSBjbGVhbiByb290LgorICogCisgKiBJ dCBkb2VzIG5vdDoKKyAqIAorICogTG9vayBmb3IgYSBsZWFkaW5nICcvJworICogQ2hlY2sg YmVmb3JlIG1ha2luZyBsaW5rcworICogTG9vayBhdCB0aGUgaGVhZGVyIGNoZWNrc3VtCisg KiBDaGVjayBvciBjcmVhdGUgYW55IGxlYWRpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorICog CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5oPgorI2luY2x1ZGUgPGxpbnV4L3N0 YXQuaD4KKyNpbmNsdWRlIDxsaW51eC9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L3N0ZGRlZi5o PgorI2luY2x1ZGUgPGxpbnV4L3V0aW1lLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNp bmNsdWRlIDxsaW51eC9pbml0Lmg+CisKKyNpZm5kZWYgbWluCisjZGVmaW5lIG1pbih4LCB5 KSAoKCh4KSA8ICh5KSkgPyAoeCkgOiAoeSkpCisjZW5kaWYKKworZXh0ZXJuIHVuc2lnbmVk IGxvbmcgaW5pdHJkX3N0YXJ0OworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW5pdHJkX2VuZDsK K2V4dGVybiBpbnQgbW91bnRfaW5pdHJkOworCisjZGVmaW5lIEVfTkFNRVRPT0xPTkcJMQor I2RlZmluZSBFX0NBTk5PVFNUQVQJMgorI2RlZmluZSBFX1JFQURMSU5LCTMKKyNkZWZpbmUg RV9TSE9SVFdSSVRFCTQKKyNkZWZpbmUgRV9GT1BFTgkJNQorI2RlZmluZSBFX01BTExPQwk2 CisjZGVmaW5lIEVfT1BFTkRJUgk3CisjZGVmaW5lIEVfV1JPTkdfRlRZUEUJOAorCisjZGVm aW5lCVRBUkJMT0NLU0laRQk1MTIKKworI2RlZmluZSBOQU1FX0ZJRUxEX1NJWkUgICAxMDAK KyNkZWZpbmUgUFJFRklYX0ZJRUxEX1NJWkUgMTU1CisjZGVmaW5lIFVOQU1FX0ZJRUxEX1NJ WkUgICAzMgorI2RlZmluZSBHTkFNRV9GSUVMRF9TSVpFICAgMzIKKworI2RlZmluZSBUTUFH SUMgICAidXN0YXIiCS8qIHVzdGFyIHNpZ25hdHVyZSAqLworI2RlZmluZSBUTUFHTEVOICA1 CisjZGVmaW5lIFRWRVJTSU9OICIgXDAiCQkvKiAwMCBhbmQgbm8gbnVsbCAqLworI2RlZmlu ZSBUVkVSU0xFTiAyCisKKyNkZWZpbmUgUkVHVFlQRQkgJzAnCQkvKiByZWd1bGFyIGZpbGUg Ki8KKyNkZWZpbmUgQVJFR1RZUEUgJ1wwJwkJLyogcmVndWxhciBmaWxlICovCisjZGVmaW5l IExOS1RZUEUgICcxJwkJLyogbGluayAqLworI2RlZmluZSBTWU1UWVBFICAnMicJCS8qIHJl c2VydmVkICovCisjZGVmaW5lIENIUlRZUEUgICczJwkJLyogY2hhcmFjdGVyIHNwZWNpYWwg Ki8KKyNkZWZpbmUgQkxLVFlQRSAgJzQnCQkvKiBibG9jayBzcGVjaWFsICovCisjZGVmaW5l IERJUlRZUEUgICc1JwkJLyogZGlyZWN0b3J5ICovCisjZGVmaW5lIEZJRk9UWVBFICc2JwkJ LyogRklGTyBzcGVjaWFsICovCisjZGVmaW5lIENPTlRUWVBFICc3JwkJLyogcmVzZXJ2ZWQg Ki8KKworLyogUE9TSVggdGFyIGhlYWRlciAqLworc3RydWN0IGZpbGVIZWFkZXIKK3sJCQkJ CS8qIGJ5dGUgb2Zmc2V0ICovCisgIGNoYXIgbmFtZVtOQU1FX0ZJRUxEX1NJWkVdOwkJLyog ICAwICovCisgIGNoYXIgbW9kZVs4XTsJCQkJLyogMTAwICovCisgIGNoYXIgdWlkWzhdOwkJ CQkvKiAxMDggKi8KKyAgY2hhciBnaWRbOF07CQkJCS8qIDExNiAqLworICBjaGFyIHNpemVb MTJdOwkJCS8qIDEyNCAqLworICBjaGFyIG10aW1lWzEyXTsJCQkvKiAxMzYgKi8KKyAgY2hh ciBjaGtzdW1bOF07CQkJLyogMTQ4ICovCisgIGNoYXIgdHlwZWZsYWc7CQkJLyogMTU2ICov CisgIGNoYXIgbGlua25hbWVbTkFNRV9GSUVMRF9TSVpFXTsJLyogMTU3ICovCisgIGNoYXIg bWFnaWNbVE1BR0xFTl07CQkJLyogMjU3ICovCisgIGNoYXIgdmVyc2lvbltUVkVSU0xFTl07 CQkvKiAyNjMgKi8KKyAgY2hhciB1bmFtZVtVTkFNRV9GSUVMRF9TSVpFXTsJCS8qIDI2NSAq LworICBjaGFyIGduYW1lW0dOQU1FX0ZJRUxEX1NJWkVdOwkJLyogMjk3ICovCisgIGNoYXIg ZGV2bWFqb3JbOF07CQkJLyogMzI5ICovCisgIGNoYXIgZGV2bWlub3JbOF07CQkJLyogMzM3 ICovCisgIGNoYXIgcHJlZml4W1BSRUZJWF9GSUVMRF9TSVpFXTsJLyogMzQ1ICovCisJCQkJ CS8qIDUwMCAqLworfTsKKwordW5pb24gVGFySW5mbyAKK3sKKyAgY2hhciBidWZbVEFSQkxP Q0tTSVpFXTsKKyAgc3RydWN0IGZpbGVIZWFkZXIgaGVhZGVyOworfTsKKwordHlwZWRlZiB1 bmlvbiBUYXJJbmZvCVRhckluZm87CisKKy8qIFdlIHVzZSB0aGUgbm9ybWFsIHN5c3RlbSBj YWxscyB0byBidWlsZCB0aGUgZmlsZXN5c3RlbTogKi8KK2V4dGVybiBpbnQgc3lzX3dyaXRl KHVuc2lnbmVkIGludCBmZCwgY2hhciAqYnVmLHVuc2lnbmVkIGludCBjb3VudCk7CitleHRl cm4gaW50IHN5c19jaG1vZChjb25zdCBjaGFyICpmaWxlbmFtZSwgbW9kZV90IG1vZGUpOwor ZXh0ZXJuIGludCBzeXNfY2hvd24oY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpZF90IHVzZXIs IGdpZF90IGdyb3VwKTsKK2V4dGVybiBpbnQgc3lzX21rbm9kKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBpbnQgbW9kZSwgZGV2X3QgZGV2KTsKK2V4dGVybiBpbnQgc3lzX21rZGlyKGNvbnN0 IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSk7CitleHRlcm4gaW50IHN5c19jaGRpcihjb25z dCBjaGFyICpmaWxlbmFtZSk7CitleHRlcm4gaW50IHN5c19saW5rKGNvbnN0IGNoYXIgKm9s ZG5hbWUsIGNvbnN0IGNoYXIgKm5ld25hbWUpOworZXh0ZXJuIGludCBzeXNfc3ltbGluayhj b25zdCBjaGFyICpvbGRuYW1lLCBjb25zdCBjaGFyICpuZXduYW1lKTsKK2V4dGVybiBpbnQg c3lzX3V0aW1lKGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgdXRpbWJ1ZiAqdGltZXMpOworZXh0 ZXJuIGludCBzeXNfdGltZShpbnQgKnQpOworCisvKgorICogRmluZCBvdXQgaG93IG11Y2gg c3BhY2UgaXMgbGVmdCBpbiB0aGUgaW4tbWVtb3J5IHRhciBhcmNoaXZlLAorICogdGhlbiBy ZXR1cm4gdGhlIGFtb3VudCBhY3R1YWxseSAicmVhZCIganVzdCBsaWtlIHJlYWQoKSBkb2Vz LgorICogVGhlIGNhbGxlciBzaG91bGQgbm90ZSB0aGUgcG9pbnRlciB0byB0aGUgYWN0dWFs IGRhdGEgKGF0IAorICogZmlsZXB0cikgYmVmb3JlIGNhbGxpbmcgdGhpcyByb3V0aW5lLgor ICovCitzdGF0aWMgaW5saW5lIGludCBfX2luaXQgcmVhZF90YXJfbWVtb3J5KGNoYXIqKiBm aWxlcHRyLCBjaGFyKiBmaWxlZW5kLCBzaXplX3Qgc2l6ZSkKK3sKKyAgc2l6ZV90IGJ5dGVz X3RvX3JlYWQgPSBtaW4oc2l6ZSwgZmlsZWVuZCAtICpmaWxlcHRyKTsKKyAgKmZpbGVwdHIg Kz0gYnl0ZXNfdG9fcmVhZDsKKyAgcmV0dXJuIGJ5dGVzX3RvX3JlYWQ7Cit9CisKKy8qCisg KiBUaGlzIGlzIGNhbGxlZCBieSBzZXR1cC5jIHRvIGxldCB0aGUgcmFtZnMgaW1hZ2UgdGFr ZSBjb250cm9sCisgKiBiZWZvcmUgdGhlIHRyYWRpdGlvbmFsIGluaXRyZCBjb2RlIGZhaWxz IHRvIHJlY29nbml6ZSBpdCBhbmQKKyAqIGhlbmNlIGZyZWVzIHRoZSBtZW1vcnkuCisgKgor ICogSWYgdGhpcyBpcyBhIHJhbWZzIHRhciBmaWxlIGltYWdlLCByZXR1cm4gMS4gT3RoZXJ3 aXNlLCByZXR1cm4gMC4KKyAqLworaW50IF9faW5pdCByYW1mc19jaGVja19yb290KHZvaWQp Cit7CisgIGNoYXIqIG1hZ2ljID0gKGNoYXIqKShpbml0cmRfc3RhcnQgKyAweDEwMSk7CisJ aWYgKGluaXRyZF9zdGFydCAmJiAoIXN0cm5jbXAobWFnaWMsIFRNQUdJQywgVE1BR0xFTikp KSB7CisJCW1vdW50X2luaXRyZCA9IDA7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsK K30KKworZXh0ZXJuIHZvaWQgZnJlZV9pbml0cmRfbWVtKHVuc2lnbmVkIGxvbmcgc3RhcnQs IHVuc2lnbmVkIGxvbmcgZW5kKTsKKworLyoKKyAqIFRoaXMgcm91dGluZSByZWFkcyBpbiBh IHN0YW5kYXJkIHRhciBhcmNoaXZlIHN0cmVhbSBpbiAKKyAqIGNvbnRpZ3VvdXMgbWVtb3J5 IHN0YXJ0aW5nIGF0IHN0YXJ0IGFuZCBlbmRpbmcgYXQgZW5kLgorICovCitpbnQgX19pbml0 IHJhbWZzX3VudGFyKGNoYXIqIHN0YXJ0LCBjaGFyKiBlbmQpCit7CisgCWNoYXIgKmJ1ZiA9 IDA7CisJaW50IGVyciwgZmQ7CisJdW5zaWduZWQgbG9uZyBmc2l6ZTsKKwltb2RlX3QgZm1v ZGU7CisJa2Rldl90IGZkZXY7CisJc3RydWN0IHV0aW1idWYgdXQ7CisJdW5pb24gVGFySW5m byAqdGFySW5mbzsJCisKKwlwcmludGsoS0VSTl9OT1RJQ0UgInJhbWZzOiBCdWlsZGluZyBy b290Li4uIik7CisKKwlmb3IgKDs7KSB7CisJCS8qIFJlYWQgaGVhZGVyIG9yIHJldHVybiBz aG9ydCByZWFkICovCisJCXRhckluZm8gPSAoVGFySW5mbyopc3RhcnQ7CisJCWVyciA9IHJl YWRfdGFyX21lbW9yeSgmc3RhcnQsIGVuZCwgVEFSQkxPQ0tTSVpFKTsKKwkJaWYgKGVyciA8 IFRBUkJMT0NLU0laRSkgeworCQkJaWYgKGVyciA9PSAwKSB7CisJCQkJZ290byBleGl0Owor CQkJfSBlbHNlIHsKKwkJCQlwcmludGsoS0VSTl9FUlIgInJhbWZzOiBDb3JydXB0IHRhciBh cmNoaXZlXG4iKTsKKwkJCQllcnIgPSAtMTsKKwkJCQlnb3RvIGV4aXQ7CisJCQl9CisJCX0K KworCQlmbW9kZSA9IHNpbXBsZV9zdHJ0b3VsKHRhckluZm8tPmhlYWRlci5tb2RlLCBOVUxM LCA4KTsKKwkJZnNpemUgPSBzaW1wbGVfc3RydG91bCh0YXJJbmZvLT5oZWFkZXIuc2l6ZSwg TlVMTCwgOCk7CisKKyNpZmRlZiBERUJVR19VTlRBUgorCQlwcmludGsoIlxuJWMvJTAxMm8g JTAxM2QgJXMiLCB0YXJJbmZvLT5oZWFkZXIudHlwZWZsYWcsIGZtb2RlLCBmc2l6ZSwgdGFy SW5mby0+aGVhZGVyLm5hbWUpOworI2VuZGlmCisKKyAgICAvKgorICAgICAqIFRoaXMgc2hv dWxkIGZpeCB0aGUgcHJvYmxlbSB3aXRoICdcMCcgbmFtZWQgZGlycyBraWxsaW5nIHRoZSBh cmNoaXZlCisgICAgICogZXh0cmFjdGlvbi4gQSBiZXR0ZXIgd2F5IHdvdWxkIGJlIHRvIGxv b2sgdG8gc2VlIGlmIGZzaXplWzBdIGNvbnRhaW5zIAorICAgICAqICdcMCcgYXMgYSBub3Jt YWwgaGVhZGVyIHdvdWxkIGVpdGhlciBoYXZlIGEgbnVtYmVyIHRoZWlyIG9yIHBhZCBpdCB3 aXRoCisgICAgICogYSAnICcuIE5vdCBzdXJlIGlmIGFsbCB0YXIncyBkbyB0aGlzLCBzbyBp dCBtYXkgbm90IGJlIHNhZmUKKyAgICAgKi8KKwkJaWYgKCh0YXJJbmZvLT5oZWFkZXIubmFt ZVswXSA9PSAnXDAnKSAmJiAoZm1vZGUgPT0gMCkgJiYgKGZzaXplID09IDApKSB7CisJCQll cnIgPSAwOworCQkJZ290byBleGl0OworCQl9CisKKwkJZXJyID0gMDsKKworCQkvKiBDaGVj ayB0aGUgZmlsZSB0eXBlIGFuZCBleHRyYWN0IGFzIGFwcHJvcHJpYXRlICovCisJCXN3aXRj aCAodGFySW5mby0+aGVhZGVyLnR5cGVmbGFnKSB7CisJCQljYXNlIEFSRUdUWVBFOiAKKwkJ CWNhc2UgUkVHVFlQRToKKwkJCQlmZCA9IHN5c19vcGVuKHRhckluZm8tPmhlYWRlci5uYW1l LCBPX0NSRUFUfE9fV1JPTkxZfE9fVFJVTkMsIGZtb2RlKTsKKwkJCQlpZiAoZmQgPCAwKSB7 CisJCQkJCWVyciA9IDE7CisJCQkJCWJyZWFrOworCQkJCX0KKworICAgICAgICBidWYgPSAo Y2hhciopc3RhcnQ7CisJCQkJaWYgKHJlYWRfdGFyX21lbW9yeSgmc3RhcnQsIGVuZCwgZnNp emUpIDwgZnNpemUpIAorCQkJCQllcnI9MTsKKwkJCisJCQkJaWYgKHN5c193cml0ZShmZCwg YnVmLCBmc2l6ZSkgPCBmc2l6ZSkKKwkJCQkJZXJyPTE7CisKKwkJCQlzeXNfY2xvc2UoZmQp OworCQorCQkJCWlmIChmc2l6ZSAlIFRBUkJMT0NLU0laRSAhPSAwKSAKKwkJCQkJc3RhcnQg Kz0gKFRBUkJMT0NLU0laRSAqIChmc2l6ZSAvIFRBUkJMT0NLU0laRSArIDEpKSAtIGZzaXpl OworCQkJCWJyZWFrOworCisJCQljYXNlIERJUlRZUEU6CisJCQkJLyogU2tpcCBpZiBuYW1l IGlzICIiICIuLyIgIi4iICIuLiIgKi8KKwkJCQlpZiAoKHRhckluZm8tPmhlYWRlci5uYW1l WzBdICE9ICcuJyAmJiB0YXJJbmZvLT5oZWFkZXIubmFtZVswXSAhPSAnXDAnKSAmJgorCQkJ CQkJKHRhckluZm8tPmhlYWRlci5uYW1lWzFdICE9ICcvJyAmJiB0YXJJbmZvLT5oZWFkZXIu bmFtZVsxXSAhPSAnXDAnKSAmJgorCQkJCQkJKHRhckluZm8tPmhlYWRlci5uYW1lWzFdICE9 ICdcMCcpKQorCQkJCQllcnI9c3lzX21rZGlyKHRhckluZm8tPmhlYWRlci5uYW1lLGZtb2Rl KTsKKwkJCQllbHNlIGNvbnRpbnVlOworCQkJCWJyZWFrOworCisJCQljYXNlIFNZTVRZUEU6 CQkJCisJCQkJZXJyID0gc3lzX3N5bWxpbmsodGFySW5mby0+aGVhZGVyLmxpbmtuYW1lLCB0 YXJJbmZvLT5oZWFkZXIubmFtZSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgTE5LVFlQRToJ IAorCQkJCWVyciA9IHN5c19saW5rKHRhckluZm8tPmhlYWRlci5saW5rbmFtZSwgdGFySW5m by0+aGVhZGVyLm5hbWUpOworCQkJCWJyZWFrOworCisJCQljYXNlIEZJRk9UWVBFOgorCQkJ Y2FzZSBDSFJUWVBFOgorCQkJY2FzZSBCTEtUWVBFOgorCQkJCWZkZXYgPSBNS0RFVihzaW1w bGVfc3RydG91bCh0YXJJbmZvLT5oZWFkZXIuZGV2bWFqb3IsIE5VTEwsIDgpLAorCQkJCQkJ CQkJCSBzaW1wbGVfc3RydG91bCh0YXJJbmZvLT5oZWFkZXIuZGV2bWlub3IsIE5VTEwsIDgp KTsKKwkJCQllcnIgPSBzeXNfbWtub2QodGFySW5mby0+aGVhZGVyLm5hbWUsIGZtb2RlLCBm ZGV2KTsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQlwcmludGsoS0VSTl9FUlIg IlxucmFtZnM6IENvcnJ1cHQgdGFyIGFyY2hpdmVcbiIpOworCQkJCWVyciA9IC0xOworCQkJ CWdvdG8gZXhpdDsKKwkJfQorCisJCWlmIChlcnIpIHByaW50ayhLRVJOX1dBUk5JTkcgIlxu cmFtZnM6IEVycm9yIGNyZWF0aW5nICVzXG4iLCB0YXJJbmZvLT5oZWFkZXIubmFtZSk7CisK KwkJLyogU2V0IHRoZSBvd25lci9ncm91cCBhbmQgcGVybWlzc2lvbnMgKi8KKwkJaWYgKHRh ckluZm8tPmhlYWRlci50eXBlZmxhZyAhPSBMTktUWVBFICYmIHRhckluZm8tPmhlYWRlci50 eXBlZmxhZyAhPSBTWU1UWVBFKSB7CisJCQllcnIgPSBzeXNfY2hvd24odGFySW5mby0+aGVh ZGVyLm5hbWUsCisJCQkJCQkJCQkJCXNpbXBsZV9zdHJ0b3VsKHRhckluZm8tPmhlYWRlci51 aWQsIE5VTEwsIDgpLAorCQkJCQkJCQkJCQlzaW1wbGVfc3RydG91bCh0YXJJbmZvLT5oZWFk ZXIuZ2lkLCBOVUxMLCA4KSk7CisJCQlpZiAoZXJyKSB7CisJCQkJcHJpbnRrKEtFUk5fV0FS TklORyAiXG5yYW1mczogRXJyb3Igc2V0dGluZyBvd25lciBvbiAlc1xuIiwgdGFySW5mby0+ aGVhZGVyLm5hbWUpOworCQkJCXN5c19jaG93bih0YXJJbmZvLT5oZWFkZXIubmFtZSwgMCwg MCk7IC8qIEp1c3QgdG8gYmUgc2FmZSAqLworCQkJfQorCisJCQllcnIgPSBzeXNfY2htb2Qo dGFySW5mby0+aGVhZGVyLm5hbWUsIGZtb2RlKTsKKwkJCWlmIChlcnIpIHsKKwkJCQlpZiAo ZXJyKSBwcmludGsoS0VSTl9XQVJOSU5HICJcbnJhbWZzOiBFcnJvciBzZXR0aW5nIHBlcm1p c3Npb25zIG9uICVzXG4iLCB0YXJJbmZvLT5oZWFkZXIubmFtZSk7CisJCQkJc3lzX2NobW9k KHRhckluZm8tPmhlYWRlci5uYW1lLCBTX0lSV1hVIHwgU19JUldYRyB8IFNfSVJPVEgpOyAv KiBKdXN0IHRvIGJlIHNhZmUgKi8KKwkJCX0KKwkJfQorCisJCS8qIFVwZGF0ZSB0aGUgdGlt ZXN0YW1wcyAqLworCQl1dC5hY3RpbWUgPSBzeXNfdGltZShOVUxMKTsKKwkJdXQubW9kdGlt ZSA9IHNpbXBsZV9zdHJ0b3VsKHRhckluZm8tPmhlYWRlci5tdGltZSwgTlVMTCwgOCk7CisJ CXN5c191dGltZSh0YXJJbmZvLT5oZWFkZXIubmFtZSwgJnV0KTsKKwl9CisKK2V4aXQ6CisJ cHJpbnRrKEtFUk5fTk9USUNFICJkb25lXG4iKTsKKworCWZyZWVfaW5pdHJkX21lbShpbml0 cmRfc3RhcnQsIGluaXRyZF9lbmQpOworI2lmZGVmIERFQlVHX1VOVEFSCisJcHJpbnRrKEtF Uk5fTk9USUNFICJpbml0cmQgbWVtb3J5IGZvciByYW1mcyB0YXIgZnJlZWQ6IDB4JTA4eCB0 byAweCUwOHhcbiIsIGluaXRyZF9zdGFydCwgaW5pdHJkX2VuZCk7CisjZW5kaWYKKwlpbml0 cmRfc3RhcnQgPSAwOworCXJldHVybiBlcnI7Cit9Ci0tLSBsaW51eC9mcy9Db25maWcuaW4u b3JpZwlTYXQgT2N0IDI4IDIxOjU2OjEyIDIwMDAKKysrIGxpbnV4L2ZzL0NvbmZpZy5pbglT YXQgT2N0IDI4IDIxOjU2OjI1IDIwMDAKQEAgLTQwLDYgKzQwLDcgQEAKIGZpCiB0cmlzdGF0 ZSAnQ29tcHJlc3NlZCBST00gZmlsZSBzeXN0ZW0gc3VwcG9ydCcgQ09ORklHX0NSQU1GUwog dHJpc3RhdGUgJ1NpbXBsZSBSQU0tYmFzZWQgZmlsZSBzeXN0ZW0gc3VwcG9ydCcgQ09ORklH X1JBTUZTCitkZXBfYm9vbCAnICBSQU0tYmFzZWQgcm9vdCBmaWxlc3lzdGVtIGZyb20gdGFy IGFyY2hpdmUnIENPTkZJR19SQU1GU19ST09UICRDT05GSUdfUkFNRlMKIAogdHJpc3RhdGUg J0lTTyA5NjYwIENEUk9NIGZpbGUgc3lzdGVtIHN1cHBvcnQnIENPTkZJR19JU085NjYwX0ZT CiBkZXBfbWJvb2wgJyAgTWljcm9zb2Z0IEpvbGlldCBDRFJPTSBleHRlbnNpb25zJyBDT05G SUdfSk9MSUVUICRDT05GSUdfSVNPOTY2MF9GUwotLS0gbGludXgvYXJjaC9pMzg2L21tL2lu aXQuYy5vcmlnCVNhdCBPY3QgMjggMjE6NTY6MTIgMjAwMAorKysgbGludXgvYXJjaC9pMzg2 L21tL2luaXQuYwlTYXQgT2N0IDI4IDIxOjU2OjI1IDIwMDAKQEAgLTY2OSw3ICs2NjksNyBA QAogCXByaW50ayAoIkZyZWVpbmcgdW51c2VkIGtlcm5lbCBtZW1vcnk6ICVkayBmcmVlZFxu IiwgKCZfX2luaXRfZW5kIC0gJl9faW5pdF9iZWdpbikgPj4gMTApOwogfQogCi0jaWZkZWYg Q09ORklHX0JMS19ERVZfSU5JVFJECisjaWYgKGRlZmluZWQoQ09ORklHX0JMS19ERVZfSU5J VFJEKSB8fCBkZWZpbmVkKENPTkZJR19SQU1GU19ST09UKSkKIHZvaWQgZnJlZV9pbml0cmRf bWVtKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogewogCWlmIChz dGFydCA8IGVuZCkKLS0tIGxpbnV4L2FyY2gvaTM4Ni9rZXJuZWwvc2V0dXAuYy5vcmlnCVNh dCBPY3QgMjggMjE6NTY6MTIgMjAwMAorKysgbGludXgvYXJjaC9pMzg2L2tlcm5lbC9zZXR1 cC5jCVNhdCBPY3QgMjggMjI6MDY6NDUgMjAwMApAQCAtMTQwLDYgKzE0MCwxNiBAQAogZXh0 ZXJuIGludCByZF9pbWFnZV9zdGFydDsJLyogc3RhcnRpbmcgYmxvY2sgIyBvZiBpbWFnZSAq LwogI2VuZGlmCiAKKyNpZiAoZGVmaW5lZChDT05GSUdfUkFNRlNfUk9PVCkgfHwgZGVmaW5l ZChDT05GSUdfQkxLX0RFVl9JTklUUkQpKQordW5zaWduZWQgbG9uZyBpbml0cmRfc3RhcnQs IGluaXRyZF9lbmQ7CitpbnQgbW91bnRfaW5pdHJkID0gMTsJCS8qIHplcm8gaWYgaW5pdHJk IHNob3VsZCBub3QgYmUgbW91bnRlZCAqLworaW50IGluaXRyZF9iZWxvd19zdGFydF9vazsK KyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1JBTUZTX1JPT1QKK2V4dGVybiBpbnQgcmFtZnNf Y2hlY2tfcm9vdCh2b2lkKTsKKyNlbmRpZgorCiBleHRlcm4gaW50IHJvb3RfbW91bnRmbGFn czsKIGV4dGVybiBjaGFyIF90ZXh0LCBfZXRleHQsIF9lZGF0YSwgX2VuZDsKIGV4dGVybiB1 bnNpZ25lZCBsb25nIGNwdV9raHo7CkBAIC05MDAsNyArOTEwLDcgQEAKICNpZmRlZiBDT05G SUdfWDg2X0xPQ0FMX0FQSUMKIAlpbml0X2FwaWNfbWFwcGluZ3MoKTsKICNlbmRpZgotI2lm ZGVmIENPTkZJR19CTEtfREVWX0lOSVRSRAorI2lmIChkZWZpbmVkKENPTkZJR19CTEtfREVW X0lOSVRSRCkgfHwgZGVmaW5lZChDT05GSUdfUkFNRlNfUk9PVCkpCiAJaWYgKExPQURFUl9U WVBFICYmIElOSVRSRF9TVEFSVCkgewogCQlpZiAoSU5JVFJEX1NUQVJUICsgSU5JVFJEX1NJ WkUgPD0gKG1heF9sb3dfcGZuIDw8IFBBR0VfU0hJRlQpKSB7CiAJCQlyZXNlcnZlX2Jvb3Rt ZW0oSU5JVFJEX1NUQVJULCBJTklUUkRfU0laRSk7CkBAIC05MTYsNiArOTI2LDEzIEBACiAJ CQlpbml0cmRfc3RhcnQgPSAwOwogCQl9CiAJfQorI2lmZGVmIENPTkZJR19SQU1GU19ST09U CisJLyogCisJICogR2l2ZSByYW1mcyBhIGNoYW5jZSB0byB0YWtlIGNvbnRyb2wgYmVmb3Jl IGluaXRyZAorCSAqIGRvZXNuJ3QgcmVjb2duaXplIHRoZSB0YXIgZm9ybWF0IGFuZCBmcmVl cyB0aGUgbWVtb3J5IAorCSAqLworCXJhbWZzX2NoZWNrX3Jvb3QoKTsKKyNlbmRpZgogI2Vu ZGlmCiAKIAkvKgotLS0gbGludXgvaW5pdC9tYWluLmMub3JpZwlTYXQgT2N0IDI4IDIxOjU2 OjEyIDIwMDAKKysrIGxpbnV4L2luaXQvbWFpbi5jCVNhdCBPY3QgMjggMjM6MDA6MzMgMjAw MApAQCAtMTIzLDEwICsxMjMsMTQgQEAKIAogaW50IHJvd3MsIGNvbHM7CiAKLSNpZmRlZiBD T05GSUdfQkxLX0RFVl9JTklUUkQKKyNpZiAoZGVmaW5lZChDT05GSUdfQkxLX0RFVl9JTklU UkQpIHx8IGRlZmluZWQoQ09ORklHX1JBTUZTX1JPT1QpKQoga2Rldl90IHJlYWxfcm9vdF9k ZXY7CiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19SQU1GU19ST09UCitleHRlcm4gaW50IHJh bWZzX2NoZWNrX3Jvb3Qodm9pZCk7CisjZW5kaWYKKwogaW50IHJvb3RfbW91bnRmbGFncyA9 IE1TX1JET05MWTsKIGNoYXIgKmV4ZWN1dGVfY29tbWFuZDsKIGNoYXIgcm9vdF9kZXZpY2Vf bmFtZVs2NF07CkBAIC0xNDQsMTIgKzE0OCwxMiBAQAogCiBfX3NldHVwKCJwcm9maWxlPSIs IHByb2ZpbGVfc2V0dXApOwogCi0KIHN0YXRpYyBzdHJ1Y3QgZGV2X25hbWVfc3RydWN0IHsK IAljb25zdCBjaGFyICpuYW1lOwogCWNvbnN0IGludCBudW07CiB9IHJvb3RfZGV2X25hbWVz W10gX19pbml0ZGF0YSA9IHsKIAl7ICJuZnMiLCAgICAgMHgwMGZmIH0sCisJeyAicmFtZnMi LCAgIDB4MDBmZSB9LAogCXsgImhkYSIsICAgICAweDAzMDAgfSwKIAl7ICJoZGIiLCAgICAg MHgwMzQwIH0sCiAJeyAiaGRjIiwgICAgIDB4MTYwMCB9LApAQCAtNTQyLDcgKzU0Niw3IEBA CiAJa21lbV9jYWNoZV9pbml0KCk7CiAJc3RpKCk7CiAJY2FsaWJyYXRlX2RlbGF5KCk7Ci0j aWZkZWYgQ09ORklHX0JMS19ERVZfSU5JVFJECisjaWYgKGRlZmluZWQoQ09ORklHX0JMS19E RVZfSU5JVFJEKSB8fCBkZWZpbmVkKENPTkZJR19SQU1GU19ST09UKSkKIAlpZiAoaW5pdHJk X3N0YXJ0ICYmICFpbml0cmRfYmVsb3dfc3RhcnRfb2sgJiYKIAkJCWluaXRyZF9zdGFydCA8 IG1pbl9sb3dfcGZuIDw8IFBBR0VfU0hJRlQpIHsKIAkJcHJpbnRrKEtFUk5fQ1JJVCAiaW5p dHJkIG92ZXJ3cml0dGVuICgweCUwOGx4IDwgMHglMDhseCkgLSAiCkBAIC01OTAsNyArNTk0 LDcgQEAKICAJY3B1X2lkbGUoKTsKIH0KIAotI2lmZGVmIENPTkZJR19CTEtfREVWX0lOSVRS RAorI2lmIChkZWZpbmVkKENPTkZJR19CTEtfREVWX0lOSVRSRCkgfHwgZGVmaW5lZChDT05G SUdfUkFNRlNfUk9PVCkpCiBzdGF0aWMgaW50IGRvX2xpbnV4cmModm9pZCAqIHNoZWxsKQog ewogCXN0YXRpYyBjaGFyICphcmd2W10gPSB7ICJsaW51eHJjIiwgTlVMTCwgfTsKQEAgLTYy Nyw4ICs2MzEsOSBAQAogICovCiBzdGF0aWMgdm9pZCBfX2luaXQgZG9fYmFzaWNfc2V0dXAo dm9pZCkKIHsKLSNpZmRlZiBDT05GSUdfQkxLX0RFVl9JTklUUkQKKyNpZiAoZGVmaW5lZChD T05GSUdfQkxLX0RFVl9JTklUUkQpIHx8IGRlZmluZWQoQ09ORklHX1JBTUZTX1JPT1QpKQog CWludCByZWFsX3Jvb3RfbW91bnRmbGFnczsKKwlpbnQgaW5pdF9yYW1mczsKICNlbmRpZgog CiAJLyoKQEAgLTY5MiwxMSArNjk3LDE2IEBACiAJLyogTmV0d29ya2luZyBpbml0aWFsaXph dGlvbiBuZWVkcyBhIHByb2Nlc3MgY29udGV4dCAqLyAKIAlzb2NrX2luaXQoKTsKIAotI2lm ZGVmIENPTkZJR19CTEtfREVWX0lOSVRSRAorI2lmIChkZWZpbmVkKENPTkZJR19CTEtfREVW X0lOSVRSRCkgfHwgZGVmaW5lZChDT05GSUdfUkFNRlNfUk9PVCkpCiAJcmVhbF9yb290X2Rl diA9IFJPT1RfREVWOwogCXJlYWxfcm9vdF9tb3VudGZsYWdzID0gcm9vdF9tb3VudGZsYWdz OworI2lmZGVmIENPTkZJR19SQU1GU19ST09UCisJaW5pdF9yYW1mcyA9IHJhbWZzX2NoZWNr X3Jvb3QoKTsKKyNlbHNlCisJaW5pdF9yYW1mcyA9IDA7CisjZW5kaWYKIAlpZiAoaW5pdHJk X3N0YXJ0ICYmIG1vdW50X2luaXRyZCkgcm9vdF9tb3VudGZsYWdzICY9IH5NU19SRE9OTFk7 Ci0JZWxzZSBtb3VudF9pbml0cmQgPTA7CisJZWxzZSBtb3VudF9pbml0cmQgPSAwOwogI2Vu ZGlmCiAKIAlkb19pbml0Y2FsbHMoKTsKQEAgLTcxNSwxMyArNzI1LDEzIEBACiAKIAltb3Vu dF9kZXZmc19mcyAoKTsKIAotI2lmZGVmIENPTkZJR19CTEtfREVWX0lOSVRSRAorI2lmIChk ZWZpbmVkKENPTkZJR19CTEtfREVWX0lOSVRSRCkgfHwgZGVmaW5lZChDT05GSUdfUkFNRlNf Uk9PVCkpCiAJcm9vdF9tb3VudGZsYWdzID0gcmVhbF9yb290X21vdW50ZmxhZ3M7Ci0JaWYg KG1vdW50X2luaXRyZCAmJiBST09UX0RFViAhPSByZWFsX3Jvb3RfZGV2Ci0JICAgICYmIE1B Sk9SKFJPT1RfREVWKSA9PSBSQU1ESVNLX01BSk9SICYmIE1JTk9SKFJPT1RfREVWKSA9PSAw KSB7CisJaWYgKChtb3VudF9pbml0cmQgJiYgUk9PVF9ERVYgIT0gcmVhbF9yb290X2Rldgor CSAgICAmJiBNQUpPUihST09UX0RFVikgPT0gUkFNRElTS19NQUpPUiAmJiBNSU5PUihST09U X0RFVikgPT0gMCkgCisgICAgICB8fCBpbml0X3JhbWZzKSB7CiAJCWludCBlcnJvcjsKIAkJ aW50IGksIHBpZDsKLQogCQlwaWQgPSBrZXJuZWxfdGhyZWFkKGRvX2xpbnV4cmMsICIvbGlu dXhyYyIsIFNJR0NITEQpOwogCQlpZiAocGlkPjApCiAJCQl3aGlsZSAocGlkICE9IHdhaXQo JmkpKTsKLS0tIGxpbnV4L2RyaXZlcnMvYmxvY2svcmQuYy5vcmlnCVNhdCBPY3QgMjggMjE6 NTY6MTIgMjAwMAorKysgbGludXgvZHJpdmVycy9ibG9jay9yZC5jCVNhdCBPY3QgMjggMjE6 NTY6MjUgMjAwMApAQCAtMTI4LDkgKzEyOCwxMCBAQAogaW50IHJkX3Byb21wdCA9IDE7CQkv KiAxID0gcHJvbXB0IGZvciBSQU0gZGlzaywgMCA9IGRvbid0IHByb21wdCAqLwogaW50IHJk X2ltYWdlX3N0YXJ0OwkJLyogc3RhcnRpbmcgYmxvY2sgIyBvZiBpbWFnZSAqLwogI2lmZGVm IENPTkZJR19CTEtfREVWX0lOSVRSRAotdW5zaWduZWQgbG9uZyBpbml0cmRfc3RhcnQsIGlu aXRyZF9lbmQ7Ci1pbnQgbW91bnRfaW5pdHJkID0gMTsJCS8qIHplcm8gaWYgaW5pdHJkIHNo b3VsZCBub3QgYmUgbW91bnRlZCAqLwotaW50IGluaXRyZF9iZWxvd19zdGFydF9vazsKKy8q IFRoZXNlIHRocmVlIGFyZSBub3cgaW4gYXJjaC8uLi4vc2V0dXAuYzogKi8KK2V4dGVybiB1 bnNpZ25lZCBsb25nIGluaXRyZF9zdGFydCwgaW5pdHJkX2VuZDsKK2V4dGVybiBpbnQgbW91 bnRfaW5pdHJkOwkJLyogemVybyBpZiBpbml0cmQgc2hvdWxkIG5vdCBiZSBtb3VudGVkICov CitleHRlcm4gaW50IGluaXRyZF9iZWxvd19zdGFydF9vazsKIAogc3RhdGljIGludCBfX2lu aXQgbm9faW5pdHJkKGNoYXIgKnN0cikKIHsKLS0tIGxpbnV4L2ZzL3N1cGVyLmMub3JpZwlT YXQgT2N0IDI4IDIxOjU2OjEyIDIwMDAKKysrIGxpbnV4L2ZzL3N1cGVyLmMJU2F0IE9jdCAy OCAyMjo1MjozMSAyMDAwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8bGludXgvbmZz X2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvbmZzX2ZzX3NiLmg+CiAjaW5jbHVkZSA8bGludXgv bmZzX21vdW50Lmg+CisjaW5jbHVkZSA8bGludXgvYmxrLmg+CiAKICNpbmNsdWRlIDxsaW51 eC9rbW9kLmg+CiAjZGVmaW5lIF9fTk9fVkVSU0lPTl9fCkBAIC01Myw2ICs1NCwxMSBAQAog CiBleHRlcm4gaW50IHJvb3RfbW91bnRmbGFnczsKIAorI2lmZGVmIENPTkZJR19SQU1GU19S T09UCitleHRlcm4gaW50IHJhbWZzX3VudGFyKGNoYXIqIHN0YXJ0LCBjaGFyKiBlbmQpOwor ZXh0ZXJuIGludCByYW1mc19jaGVja19yb290KHZvaWQpOworI2VuZGlmCisKIHN0YXRpYyBp bnQgZG9fcmVtb3VudF9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgZmxhZ3MsIGNo YXIgKiBkYXRhKTsKIAogLyogdGhpcyBpcyBpbml0aWFsaXplZCBpbiBpbml0L21haW4uYyAq LwpAQCAtMTQ3MCwxMCArMTQ3NiwzMSBAQAogCXZvaWQgKmhhbmRsZTsKIAljaGFyIHBhdGhb NjRdOwogCWludCBwYXRoX3N0YXJ0ID0gLTE7CisJdm9pZCAqZGF0YTsKKwlpbnQgdXNpbmdf cmFtZnMgPSAxOworCisjaWZkZWYgQ09ORklHX1JBTUZTX1JPT1QKKwlpZiAoKCFyYW1mc19j aGVja19yb290KCkpICYmIChST09UX0RFViAhPSBNS0RFVihVTk5BTUVEX01BSk9SLCAweGZl KSkpCisJCWdvdG8gc2tpcF9yYW1mczsKKwlmc190eXBlID0gZ2V0X2ZzX3R5cGUoInJhbWZz Iik7CisJaWYgKCFmc190eXBlKQorCQlnb3RvIG5vX3JhbWZzOworCVJPT1RfREVWID0gZ2V0 X3VubmFtZWRfZGV2KCk7CisJaWYgKCFST09UX0RFVikKKwkJZ290byBub19hbm9uX3JhbWZz OworCXNiID0gcmVhZF9zdXBlcihST09UX0RFViwgTlVMTCwgZnNfdHlwZSwgMCwgaW5pdHJk X3N0YXJ0LCAxKTsKKwlpZiAoc2IpCisJCWdvdG8gbW91bnRfaXQ7Citub19hbm9uX3JhbWZz OgorCXB1dF9maWxlc3lzdGVtKGZzX3R5cGUpOworbm9fcmFtZnM6CisJcGFuaWMoS0VSTl9F UlIgIlZGUzogVW5hYmxlIHRvIG1vdW50IHJvb3QgcmFtZnMuXG4iKTsKK3NraXBfcmFtZnM6 CisJdXNpbmdfcmFtZnMgPSAwOworI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfUk9PVF9ORlMK LQl2b2lkICpkYXRhOwotCWlmIChNQUpPUihST09UX0RFVikgIT0gVU5OQU1FRF9NQUpPUikK KwlpZiAoUk9PVF9ERVYgIT0gTUtERVYoVU5OQU1FRF9NQUpPUiwgMHhmZikpCiAJCWdvdG8g c2tpcF9uZnM7CiAJZnNfdHlwZSA9IGdldF9mc190eXBlKCJuZnMiKTsKIAlpZiAoIWZzX3R5 cGUpCkBAIC0xNjEzLDYgKzE2NDAsMTAgQEAKIAkJc2V0X2ZzX3B3ZChjdXJyZW50LT5mcywg dmZzbW50LCBzYi0+c19yb290KTsKIAkJaWYgKGJkZXYpCiAJCQliZHB1dChiZGV2KTsgLyog c2IgaG9sZHMgYSByZWZlcmVuY2UgKi8KKyNpZmRlZiBDT05GSUdfUkFNRlNfUk9PVAorCWlm ICh1c2luZ19yYW1mcykKKwkJcmFtZnNfdW50YXIoKGNoYXIqKWluaXRyZF9zdGFydCwgKGNo YXIqKWluaXRyZF9lbmQpOworI2VuZGlmCiAJCXJldHVybjsKIAl9CiAJcGFuaWMoIlZGUzog YWRkX3Zmc21udCBmYWlsZWQgZm9yIHJvb3QgZnMiKTsKQEAgLTE3NDYsOCArMTc3Nyw3IEBA CiAJZ290byBvdXQyOwogfQogCi0KLSNpZmRlZiBDT05GSUdfQkxLX0RFVl9JTklUUkQKKyNp ZiAoZGVmaW5lZChDT05GSUdfQkxLX0RFVl9JTklUUkQpIHx8IGRlZmluZWQoQ09ORklHX1JB TUZTX1JPT1QpKQogCiBpbnQgX19pbml0IGNoYW5nZV9yb290KGtkZXZfdCBuZXdfcm9vdF9k ZXYsY29uc3QgY2hhciAqcHV0X29sZCkKIHsKLS0tIGxpbnV4L0RvY3VtZW50YXRpb24vQ29u ZmlndXJlLmhlbHAub2xkCVN1biBPY3QgMjkgMTQ6NTY6NDIgMjAwMAorKysgbGludXgvRG9j dW1lbnRhdGlvbi9Db25maWd1cmUuaGVscAlTdW4gT2N0IDI5IDE1OjAyOjM4IDIwMDAKQEAg LTEwODI2LDYgKzEwODI2LDM3IEBACiAgIHNheSBNIGhlcmUgYW5kIHJlYWQgRG9jdW1lbnRh dGlvbi9tb2R1bGVzLnR4dC4gVGhlIG1vZHVsZSB3aWxsIGJlCiAgIGNhbGxlZCByYW1mcy5v LgogCitSQU0tYmFzZWQgcm9vdCBmaWxlc3lzdGVtIGZyb20gdGFyIGFyY2hpdmUKK0NPTkZJ R19SQU1GU19ST09UCisgIEFsbG93IHRoZSBrZXJuZWwgdG8gbW91bnQgYSByYW1mcyBuYW1l c3BhY2UgYXMgdGhlIHJvb3QgZmlsZXN5c3RlbQorICBvciBhcyBhIHByZS1yb290IGZpbGVz eXN0ZW0gZm9yIHJ1bm5pbmcgYSAvbGludXhyYyBzY3JpcHQgKHNpbWlsYXIKKyAgdG8gaG93 IGluaXRpYWwgUkFNIGRpc2sgKGluaXRyZCkgc3VwcG9ydCB3b3Jrcy4pCisKKyAgU2luY2Ug cmFtZnMgaGFzIG5vIHBoeXNpY2FsIG9yIHZpcnR1YWwgYmxvY2sgZGV2aWNlIHRvIHByb3Zp ZGUgaXRzCisgIGRhdGEgYXMgYW4gaW5pdHJkIGltYWdlIHdvdWxkLCB5b3UgbXVzdCBwcm92 aWRlIGEgc3RhbmRhcmQgdGFyIGZvcm1hdAorICBhcmNoaXZlIHRvIGJlIGV4dHJhY3RlZCBp bnRvIHRoZSBlbXB0eSByYW1mcyByb290IGZpbGVzeXN0ZW0uIEN1cnJlbnRseQorICB0aGlz IHRhciBhcmNoaXZlIG1heSAqbm90KiBiZSBjb21wcmVzc2VkIChpLmUuLCB0YXIuZ3ogc3R5 bGUpOyBpZgorICBjb21wcmVzc2lvbiBpcyBkZXNpcmVkLCB1c2UgYSBib290bG9hZGVyIHdp dGggYXV0b21hdGljIGd1bnppcCBzdXBwb3J0CisgIHN1Y2ggYXMgR1JVQi4KKworICBUbyBz cGVjaWZ5IHRoZSB0YXIgYXJjaGl2ZSB1c2VkIHRvIGJ1aWxkIHRoZSByb290IGZpbGVzeXN0 ZW0sIHVzZSB0aGUKKyAgaW5pdHJkPTxmaWxlbmFtZT4ga2VybmVsIGNvbW1hbmQgbGluZSBv cHRpb24gKGV4Y2VwdCB3aXRoIGEgdGFyIGFyY2hpdmUKKyAgaW5zdGVhZCBvZiBhIHJlYWwg ZXh0Mi9taW5peC9yb21mcyBmaWxlc3lzdGVtIGltYWdlLikKKworICBUbyBtb3VudCB0aGUg dGFyIGFyY2hpdmUgYXMgdGhlIGFjdHVhbCByb290IGZpbGVzeXN0ZW0sIHNwZWNpZnkgdGhl CisgIHNhbWUgaW5pdHJkPTxmaWxlbmFtZT4gb3B0aW9uIGFib3ZlIGFuZCBhbHNvIGluY2x1 ZGUgInJvb3Q9L2Rldi9yYW1mcyIKKyAgaW4gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuCisK KyAgWW91IG1heSBlbmFibGUgYm90aCB0aGlzIG9wdGlvbiBhbmQgaW5pdHJkIHN1cHBvcnQ7 IGhvd2V2ZXIsIGlmIGEKKyAgdGFyIGFyY2hpdmUgaXMgZGV0ZWN0ZWQgaW5zdGVhZCBvZiBh biBpbml0cmQtc3VwcG9ydGVkIGZpbGVzeXN0ZW0KKyAgaW1hZ2UsIHRoaXMgb3B0aW9uIHdp bGwgb3ZlcnJpZGUgaW5pdHJkIHN1cHBvcnQuCisKKyAgTm90ZTogU29tZSB2ZXJzaW9ucyBv ZiBHTlUgdGFyIGNyZWF0ZSBpbnZhbGlkIGFyY2hpdmVzIHRoYXQgY2Fubm90CisgIGJlIGV4 dHJhY3RlZCBieSB0aGUga2VybmVsLiBJbiBwYXJ0aWN1bGFyLCB0YXIgbWF5IGFkZCBhIGZp bGUgdG8gYW4KKyAgYXJjaGl2ZSB3aXRob3V0IHByZXZpb3VzbHkgYWRkaW5nIGl0cyBjb250 YWluaW5nIGRpcmVjdG9yeS4gSWYgeW91cgorICByYW1mcyBhcmNoaXZlIGRvZXMgbm90IG1v dW50IGNvcnJlY3RseSBiZWNhdXNlIG9mIHRoaXMsIHRyeSBjcmVhdGluZworICBpdCBpbiBh bm90aGVyIHdheSBvciB3aXRoIGFub3RoZXIgZmlsZSBvcmRlci4KKwogSVNPIDk2NjAgQ0RS T00gZmlsZSBzeXN0ZW0gc3VwcG9ydAogQ09ORklHX0lTTzk2NjBfRlMKICAgVGhpcyBpcyB0 aGUgc3RhbmRhcmQgZmlsZSBzeXN0ZW0gdXNlZCBvbiBDRFJPTXMuIEl0IHdhcyBwcmV2aW91 c2x5Ci0tLSBsaW51eC9DUkVESVRTLm9sZAlNb24gT2N0IDMwIDIxOjQ5OjM1IDIwMDAKKysr IGxpbnV4L0NSRURJVFMJTW9uIE9jdCAzMCAyMTo1MToyMCAyMDAwCkBAIC0yOTI4LDYgKzI5 MjgsMTMgQEAKIFM6IEFsZXhhbmRyaWEsIFZpcmdpbmlhIDIyMzA0CiBTOiBVU0EKIAorTjog TWF0dCBZb3Vyc3QKK0U6IHlvdXJzdEBtaXQuZWR1CitEOiByYW1mcyByb290IGZpbGVzeXN0 ZW0gc3VwcG9ydAorUzogNDc2IE1lbW9yaWFsIERyaXZlCitTOiBDYW1icmlkZ2UsIE1BIDAy MTM5CitTOiBVU0EKKwogTjogTmlpYmUgWXV0YWthCiBFOiBnbmlpYmVAbXJpLmNvLmpwCiBE OiBQTElQIGRyaXZlcgo= --------------530003EC3520321800336EE1-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/