From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Subject: [PATCH v6 09/14] jump_label: port __jump_table to linker tables Date: Mon, 9 Jan 2017 06:58:27 -0800 Message-ID: <20170109145833.11502-10-mcgrof@kernel.org> References: <20161222023811.21246-1-mcgrof@kernel.org> <20170109145833.11502-1-mcgrof@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170109145833.11502-1-mcgrof@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: gnomes@lxorguk.ukuu.org.uk, linux-ia64@vger.kernel.org, jkosina@suse.cz, benh@kernel.crashing.org, ming.lei@canonical.com, linux@rasmusvillemoes.dk, platform-driver-x86@vger.kernel.org, James.Bottomley@HansenPartnership.com, paul.gortmaker@windriver.com, paulus@samba.org, sparclinux@vger.kernel.org, wangnan0@huawei.com, mchehab@osg.samsung.com, linux-arch@vger.kernel.org, markus.heiser@darmarit.de, xen-devel@lists.xensource.com, msalter@redhat.com, linux-sh@vger.kernel.org, mpe@ellerman.id.au, joro@8bytes.org, x86@kernel.org, fontana@sharpeleven.org, dsahern@gmail.com, linux-arm-kernel@lists.infradead.org, catalin.marinas@arm.com, dvhart@infradead.org, dwmw2@infradead.org, linux@roeck-us.net, linux-xtensa@linux-xtensa.org, pali.rohar@gmail.com, keescook@chromium.org, arnd@arndb.de, jani.nikula@intel.com, will.deacon@arm.com, rusty@rustcorp.com.au, rostedt@goodmis.org, ak@ List-Id: linux-arch.vger.kernel.org TW92ZSB0aGUgX19qdW1wX3RhYmxlIGZyb20gdGhlIGEgY3VzdG9tIHNlY3Rpb24gc29sdXRpb24K dG8gYSBnZW5lcmljIHNvbHV0aW9uLCB0aGlzIGF2b2lkaW5nIGV4dHJhIHZtbGludXgubGRzLmgK Y3VzdG9taXphdGlvbnMuCgpUaGlzIGFsc28gZGVtb3MgdGhlIHVzZSBvZiB0aGUgLmRhdGEgbGlu a2VyIHRhYmxlIGFuZCBvZgp0aGUgc2hhcmVkIGFzbSBjYWxsIHB1c2hfc2VjdGlvbl90YmwoKS4K CkJ1aWx0LWluIGtlcm5lbCBmdW5jdGlvbmFsaXR5IHdhcyB0ZXN0ZWQgd2l0aCBDT05GSUdfU1RB VElDX0tFWVNfU0VMRlRFU1QuCk1vZHVsZXIgIGtlcm5lbCBmdW5jdGlvbmFsaXR5IHdhcyB0ZXN0 ZWQgd2l0aCBDT05GSUdfVEVTVF9TVEFUSUNfS0VZUy4KQm90aCB3b3JrIGFzIGV4cGVjdGVkLgoK U2luY2UgX19qdW1wX3RhYmxlIHNlY3Rpb25zIGFyZSBhbHNvIHN1cHBvcnRlZCBwZXIKbW9kdWxl IHRoaXMgYWxzbyByZXF1aXJlZCBleHBhbmRpbmcgbW9kdWxlLWNvbW1vbi5sZHMuUwp0byBjYXB0 dXJlIGFuZCBmb2xkIGFsbCAuZGF0YS50bGIuX19qdW1wX3RhYmxlLiogb250bwp0aGUgdGhlIHNl Y3Rpb24gX19qdW1wX3RhYmxlIC0tIGluIHRoaXMgY2FzZSBmb3IgbW9kdWxlcwpuZWVkIHRvIGtl ZXAgYSByZWZlcmVuY2UgaW4gcGxhY2UsIGdpdmVuIHRoZSBhbHRlcm5hdGl2ZQppcyB0byB1c2Ug REVGSU5FX0xJTktUQUJMRShzdHJ1Y3QganVtcF9lbnRyeSwgX19qdW1wX3RhYmxlKQpwZXIgbW9k dWxlIC0tIGFuZCBsYXRlciB0aHJvdWdoIG1hY3JvIGhhY2tzIGluc3RhbnRpYXRlCnRoZSBqdW1w IGVudHJpZXMgcGVyIG1vZHVsZSB1cG9uIGluaXQuIFRoaXMgaXMgZG9hYmxlIGJ1dAp3ZSdkIGxv b3NlIG91dCBvbiB0aGUgc29ydGluZyBvZiB0aGUgdGFibGUgdXNpbmcgdGhlCmxpbmtlciwgdG8g c29ydCB3ZSdkIGFsd2F5cyBzdGlsbCBuZWVkIHRvIGV4cGFuZCB0aGUKbW9kdWxlIGNvbW1vbiBs aW5rZXIgc2NyaXB0LiBBbiBhbHRlcm5hdGl2ZSBtZWNoYW5pc20KaXMgcG9zc2libGUgd2hpY2gg d291bGQgbWFrZSB0aGVzZSBjdXN0b20gbW9kdWxlIHNlY3Rpb25zCmV4dGVuc2lvbnMgZHluYW1p YyB3aXRob3V0IHJlcXVpcmluZyBtYW51YWwgY2hhbmdlcywgdGhpcwpob3dldmVyIGlzIGJlc3Qg ZG9uZSBsYXRlciB0aHJvdWdoIGEgc2VwYXJhdGUgZXZvbHV0aW9uCm9uY2UgbGlua2VyIHRhYmxl cyBhcmUgaW4gcGxhY2UuCgpBIGNhcmVmdWwgcmV2aWV3ZXIgbWF5IG5vdGUgdGhhdCBzb21lIGFy Y2hpdGVjdHVyZXMgdXNlCiJcblx0IiB0byBzZXBhcmF0ZSBhc20gY29kZSwgd2hpbGUgb3RoZXJz IGp1c3QgdXNlIGEgbmV3IGxpbmUuClVwb24gcmV2aWV3IGxhc3QgdGltZSBpdCB3YXMgZGVlbWVk IHJlYXNvbmFibGUgdG8gZm9yIGFsbAphcmNoaXRlY3R1cmVzIHRvIGp1c3QgdXNlICJcbiIsIHRo aXMgaXMgZGVmaW5lZCBhcyBBU01fQ01EX1NFUCwKYW5kIGlmIGFuIGFyY2hpdGVjdHVyZSBuZWVk cyB0byBvdmVycmlkZSB0aGV5IGNhbiBkbyBzbyBvbiB0aGVpcgphcmNoaXRlY3R1cmUgc2VjdGlv bnMuaCBwcmlvciB0byBpbmNsdWRpbmcgYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAoKdjY6IHJlbmFt ZSB0YWJsZSBtYWNybyBhcyBzdWdnZXN0ZWQgYnkgQW5keSBTaGV2Y2hlbmtvCgp2NToKCm8gVXNl IC4udGJsIGluc3RlYWQgb2YgLnRibCBhcyBzdWdnZXN0ZWQgYnkgTmljaG9sYXMgUGlnZ2luLgog IFRoaXMgaXMgdGhlIHR5cGljYWwgd2F5IHRvIGF2b2lkIGNsYXNoIHdpdGggY29tcGlsZXIgZ2Vu ZXJhdGVkCiAgc2VjdGlvbi4KCm8gUmVwbGFjZSBzZWN0aW9uIG1hY3JvcyB3aXRoIHNlY3Rpb24g bmFtZXMKCm8gVXNlIExJTktUQUJMRV9TVEFSVCgpIGFuZCBMSU5LVEFCTEVfRU5EKCkKCm8gZml4 ZWQgdGlsZSBqdW1wIGxhYmVsIHBvcnQgLS0gdGlsZSBnb3QganVtcCBsYWJlbCBzdXBwb3J0IGFz IG9mIGNvbW1pdAogIDY1YTc5MmU4NGYyNWQxICgidGlsZS9qdW1wX2xhYmVsOiBhZGQganVtcCBs YWJlbCBzdXBwb3J0IGZvciBUSUxFLUd4IiksCiAgYXMgc3VjaCB3ZSBqdXN0IG5lZWRlZCB0byBh ZGp1c3QgdGhlIGFzbSB0byBhY2NvdW50IGZvciB0aGUgbmV3CiAgbGlua2VyIHRhYmxlIEFQSSB1 c2UuIFRoaXMgY29tbWl0IHdhcyBtZXJnZWQgYXMgb2YgdjQuNS1yYzEuCgp2NDoKCm8gU29tZSBh cmNoaXRlY3R1cmVzIGFsbG93IGxpbmtlciBzY3JpcHRzIHRvIGZvbGxvdyBpbmNsdWRpbmcgaGVh ZGVyCiAgZmlsZXMsIHNvbWUgb3RoZXJzIGRvIG5vdCwgc28gaWYgeW91IG5lZWQgYSBoZWxwZXIg b24gYSBsaW5rZXIgc2NyaXB0CiAgeW91IG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIGl0LiBT byBmb3IgaW5zdGFuY2UgYWx0aG91Z2gKICBzY3JpcHRzL21vZHVsZS1jb21tb24ubGRzLlMgaW5j bHVkZXMgPGFzbS90YWJsZXMuaD4gYW5kIHRoaXMgZmlsZQogIGluY2x1ZGVzIDxhc20vc2VjdGlv bi1jb3JlLmg+LCB5b3Ugc3RpbGwgbmVlZCB0byBleHBsaWNpdGx5CiAgaW5jbHVkZSBpdCBvbiB0 aGUgbGlua2VyIHNjcmlwdC4gVGhpcyBpc3N1ZSBpcyBwcmVzZW50IG9uIEFSTS4KCm8gYXMgcGVy IEpvc2ggUG9pbWJvZXVmIG9wZW4gY29kZSB0aGUgc2VjdGlvbiB0YWJsZSBuYW1lIGluc3RlYWQK ICBvZiBpbmNsdWRpbmcgdGhlIGtlcm5lbCBzZWN0aW9uIGhlYWRlcnMsIHRoZSBzaW1wbGljaXR5 IGFuZAogIGluZGVwZW5kZW5jZSBmcm9tIHRoZSBrZXJuZWwgaXMgcHJlZmVycmVkLgoKdjM6Cgpv IE1vcmUgZWxhYm9yYXRlIHRlc3RzIHBlcmZvcm1lZApvIGZpcnN0IG1vZHVsYXIgc3VwcG9ydCB1 c2UgY2FzZSwgbW9kdWxlIHRlc3RlZCB3YXMKICBDT05GSUdfVEVTVF9TVEFUSUNfS0VZUyAobGli L3Rlc3Rfc3RhdGljX2tleXMua28pLCB0aGlzCiAgcmVxdWlyZWQgdXMgdG8gZXh0ZW5kIG1vZHVs ZS1jb21tb24ubGRzLlMKbyB1c2UgZ2VuZXJpYyBwdXNoX3NlY3Rpb25fdGJsX2FueSgpIGZvciBh bGwgYXJjaGl0ZWN0dXJlcwpvIE1ha2VzIHVzZSBvZiBBU01fQ01EX1NFUCB0byBlbmFibGUgYXJj aGl0ZWN0dXJlcyB0byBvdmVycmlkZSBsYXRlcgogIGlmIG5lZWRlZApvIGd1YXJkIHRhYmxlcy5o IGluY2x1c2lvbiBhbmQgdGFibGUgZGVmaW5pdGlvbiB3aXRoIF9fS0VSTkVMX18KCnYyOiBpbnRy b2R1Y2VkIGluIHRoaXMgc2VyaWVzCgpTaWduZWQtb2ZmLWJ5OiBMdWlzIFIuIFJvZHJpZ3VleiA8 bWNncm9mQGtlcm5lbC5vcmc+Ci0tLQogYXJjaC9hcm0vaW5jbHVkZS9hc20vanVtcF9sYWJlbC5o ICAgICB8ICA2ICsrKystLQogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9qdW1wX2xhYmVsLmggICB8 ICA2ICsrKystLQogYXJjaC9taXBzL2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCAgICB8ICA2ICsr KystLQogYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCB8ICA4ICsrKysrLS0t CiBhcmNoL3MzOTAvaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oICAgIHwgIDYgKysrKy0tCiBhcmNo L3NwYXJjL2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCAgIHwgIDYgKysrKy0tCiBhcmNoL3RpbGUv aW5jbHVkZS9hc20vanVtcF9sYWJlbC5oICAgIHwgIDUgKysrLS0KIGFyY2gveDg2L2luY2x1ZGUv YXNtL2p1bXBfbGFiZWwuaCAgICAgfCAxMCArKysrKystLS0tCiBpbmNsdWRlL2FzbS1nZW5lcmlj L3ZtbGludXgubGRzLmggICAgIHwgIDUgLS0tLS0KIGluY2x1ZGUvbGludXgvanVtcF9sYWJlbC5o ICAgICAgICAgICAgfCAgNCArKy0tCiBrZXJuZWwvanVtcF9sYWJlbC5jICAgICAgICAgICAgICAg ICAgIHwgMTcgKysrKysrKysrKy0tLS0tLS0KIHNjcmlwdHMvbW9kdWxlLWNvbW1vbi5sZHMgICAg ICAgICAgICAgfCAgMSArCiB0b29scy9vYmp0b29sL3NwZWNpYWwuYyAgICAgICAgICAgICAgIHwg IDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCBiL2FyY2gv YXJtL2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaAppbmRleCAzNGY3YjY5ODBkMjEuLjYwOWUwNTky YTk0MiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oCisrKyBi L2FyY2gvYXJtL2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaApAQCAtMSw2ICsxLDggQEAKICNpZm5k ZWYgX0FTTV9BUk1fSlVNUF9MQUJFTF9ICiAjZGVmaW5lIF9BU01fQVJNX0pVTVBfTEFCRUxfSAog CisjaW5jbHVkZSA8YXNtL3RhYmxlcy5oPgorCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogCiAjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KQEAgLTEyLDcgKzE0LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lu bGluZSBib29sIGFyY2hfc3RhdGljX2JyYW5jaChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LCBib29s IGJyYW4KIHsKIAlhc21fdm9sYXRpbGVfZ290bygiMTpcblx0IgogCQkgV0FTTShub3ApICJcblx0 IgotCQkgIi5wdXNoc2VjdGlvbiBfX2p1bXBfdGFibGUsICBcImF3XCJcblx0IgorCQkgcHVzaF9z ZWN0aW9uX3RibF9hbnkoLmRhdGEsIF9fanVtcF90YWJsZSwgYXcpCiAJCSAiLndvcmQgMWIsICVs W2xfeWVzXSwgJWMwXG5cdCIKIAkJICIucG9wc2VjdGlvblxuXHQiCiAJCSA6IDogICJpIiAoJigo Y2hhciAqKWtleSlbYnJhbmNoXSkgOiAgOiBsX3llcyk7CkBAIC0yNiw3ICsyOCw3IEBAIHN0YXRp YyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3N0YXRpY19icmFuY2hfanVtcChzdHJ1Y3Qgc3Rh dGljX2tleSAqa2V5LCBib29sCiB7CiAJYXNtX3ZvbGF0aWxlX2dvdG8oIjE6XG5cdCIKIAkJIFdB U00oYikgIiAlbFtsX3llc11cblx0IgotCQkgIi5wdXNoc2VjdGlvbiBfX2p1bXBfdGFibGUsICBc ImF3XCJcblx0IgorCQkgcHVzaF9zZWN0aW9uX3RibF9hbnkoLmRhdGEsIF9fanVtcF90YWJsZSwg YXcpCiAJCSAiLndvcmQgMWIsICVsW2xfeWVzXSwgJWMwXG5cdCIKIAkJICIucG9wc2VjdGlvblxu XHQiCiAJCSA6IDogICJpIiAoJigoY2hhciAqKWtleSlbYnJhbmNoXSkgOiAgOiBsX3llcyk7CmRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCBiL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oCmluZGV4IDFiNWUwZTg0M2MzYS4uYmI1NmFjNGZh ZmI1IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaAorKysg Yi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaApAQCAtMTksNiArMTksOCBAQAog I2lmbmRlZiBfX0FTTV9KVU1QX0xBQkVMX0gKICNkZWZpbmUgX19BU01fSlVNUF9MQUJFTF9ICiAK KyNpbmNsdWRlIDxhc20vdGFibGVzLmg+CisKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKICNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgpAQCAtMjksNyArMzEsNyBAQAogc3RhdGljIF9fYWx3YXlzX2lu bGluZSBib29sIGFyY2hfc3RhdGljX2JyYW5jaChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LCBib29s IGJyYW5jaCkKIHsKIAlhc20gZ290bygiMTogbm9wXG5cdCIKLQkJICIucHVzaHNlY3Rpb24gX19q dW1wX3RhYmxlLCAgXCJhd1wiXG5cdCIKKwkJIHB1c2hfc2VjdGlvbl90YmxfYW55KC5kYXRhLCBf X2p1bXBfdGFibGUsIGF3KQogCQkgIi5hbGlnbiAzXG5cdCIKIAkJICIucXVhZCAxYiwgJWxbbF95 ZXNdLCAlYzBcblx0IgogCQkgIi5wb3BzZWN0aW9uXG5cdCIKQEAgLTQzLDcgKzQ1LDcgQEAgc3Rh dGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfc3RhdGljX2JyYW5jaChzdHJ1Y3Qgc3RhdGlj X2tleSAqa2V5LCBib29sIGJyYW4KIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3N0 YXRpY19icmFuY2hfanVtcChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LCBib29sIGJyYW5jaCkKIHsK IAlhc20gZ290bygiMTogYiAlbFtsX3llc11cblx0IgotCQkgIi5wdXNoc2VjdGlvbiBfX2p1bXBf dGFibGUsICBcImF3XCJcblx0IgorCQkgcHVzaF9zZWN0aW9uX3RibF9hbnkoLmRhdGEsIF9fanVt cF90YWJsZSwgYXcpCiAJCSAiLmFsaWduIDNcblx0IgogCQkgIi5xdWFkIDFiLCAlbFtsX3llc10s ICVjMFxuXHQiCiAJCSAiLnBvcHNlY3Rpb25cblx0IgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2lu Y2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9qdW1wX2xhYmVs LmgKaW5kZXggZTc3NjcyNTM5ZThlLi4wNzI4OWExYjFiY2QgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlw cy9pbmNsdWRlL2FzbS9qdW1wX2xhYmVsLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2p1 bXBfbGFiZWwuaApAQCAtOCw2ICs4LDggQEAKICNpZm5kZWYgX0FTTV9NSVBTX0pVTVBfTEFCRUxf SAogI2RlZmluZSBfQVNNX01JUFNfSlVNUF9MQUJFTF9ICiAKKyNpbmNsdWRlIDxhc20vdGFibGVz Lmg+CisKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgpA QCAtMzAsNyArMzIsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgYXJjaF9zdGF0aWNf YnJhbmNoKHN0cnVjdCBzdGF0aWNfa2V5ICprZXksIGJvb2wgYnJhbgogewogCWFzbV92b2xhdGls ZV9nb3RvKCIxOlx0IiBOT1BfSU5TTiAiXG5cdCIKIAkJIm5vcFxuXHQiCi0JCSIucHVzaHNlY3Rp b24gX19qdW1wX3RhYmxlLCAgXCJhd1wiXG5cdCIKKwkJcHVzaF9zZWN0aW9uX3RibF9hbnkoLmRh dGEsIF9fanVtcF90YWJsZSwgYXcpCiAJCVdPUkRfSU5TTiAiIDFiLCAlbFtsX3llc10sICUwXG5c dCIKIAkJIi5wb3BzZWN0aW9uXG5cdCIKIAkJOiA6ICAiaSIgKCYoKGNoYXIgKilrZXkpW2JyYW5j aF0pIDogOiBsX3llcyk7CkBAIC00NCw3ICs0Niw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUg Ym9vbCBhcmNoX3N0YXRpY19icmFuY2hfanVtcChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LCBib29s CiB7CiAJYXNtX3ZvbGF0aWxlX2dvdG8oIjE6XHRqICVsW2xfeWVzXVxuXHQiCiAJCSJub3Bcblx0 IgotCQkiLnB1c2hzZWN0aW9uIF9fanVtcF90YWJsZSwgIFwiYXdcIlxuXHQiCisJCXB1c2hfc2Vj dGlvbl90YmxfYW55KC5kYXRhLCBfX2p1bXBfdGFibGUsIGF3KQogCQlXT1JEX0lOU04gIiAxYiwg JWxbbF95ZXNdLCAlMFxuXHQiCiAJCSIucG9wc2VjdGlvblxuXHQiCiAJCTogOiAgImkiICgmKChj aGFyICopa2V5KVticmFuY2hdKSA6IDogbF95ZXMpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBj L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9qdW1w X2xhYmVsLmgKaW5kZXggOWEyODdlMGFjOGIxLi43YTc1NjIzNzQwZDAgMTAwNjQ0Ci0tLSBhL2Fy Y2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9qdW1wX2xhYmVsLmgKKysrIGIvYXJjaC9wb3dlcnBjL2lu Y2x1ZGUvYXNtL2p1bXBfbGFiZWwuaApAQCAtMTAsNiArMTAsOCBAQAogICogMiBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqLwogCisjaW5j bHVkZSA8YXNtL3RhYmxlcy5oPgorCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+CiAKQEAgLTIzLDcgKzI1LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBi b29sIGFyY2hfc3RhdGljX2JyYW5jaChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LCBib29sIGJyYW4K IHsKIAlhc21fdm9sYXRpbGVfZ290bygiMTpcblx0IgogCQkgIm5vcCAjIGFyY2hfc3RhdGljX2Jy YW5jaFxuXHQiCi0JCSAiLnB1c2hzZWN0aW9uIF9fanVtcF90YWJsZSwgIFwiYXdcIlxuXHQiCisJ CSBwdXNoX3NlY3Rpb25fdGJsX2FueSguZGF0YSwgX19qdW1wX3RhYmxlLCBhdykKIAkJIEpVTVBf RU5UUllfVFlQRSAiMWIsICVsW2xfeWVzXSwgJWMwXG5cdCIKIAkJICIucG9wc2VjdGlvbiBcblx0 IgogCQkgOiA6ICAiaSIgKCYoKGNoYXIgKilrZXkpW2JyYW5jaF0pIDogOiBsX3llcyk7CkBAIC0z Nyw3ICszOSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3N0YXRpY19icmFu Y2hfanVtcChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LCBib29sCiB7CiAJYXNtX3ZvbGF0aWxlX2dv dG8oIjE6XG5cdCIKIAkJICJiICVsW2xfeWVzXSAjIGFyY2hfc3RhdGljX2JyYW5jaF9qdW1wXG5c dCIKLQkJICIucHVzaHNlY3Rpb24gX19qdW1wX3RhYmxlLCAgXCJhd1wiXG5cdCIKKwkJIHB1c2hf c2VjdGlvbl90YmxfYW55KC5kYXRhLCBfX2p1bXBfdGFibGUsIGF3KQogCQkgSlVNUF9FTlRSWV9U WVBFICIxYiwgJWxbbF95ZXNdLCAlYzBcblx0IgogCQkgIi5wb3BzZWN0aW9uIFxuXHQiCiAJCSA6 IDogICJpIiAoJigoY2hhciAqKWtleSlbYnJhbmNoXSkgOiA6IGxfeWVzKTsKQEAgLTYyLDcgKzY0 LDcgQEAgc3RydWN0IGp1bXBfZW50cnkgewogI2Vsc2UKICNkZWZpbmUgQVJDSF9TVEFUSUNfQlJB TkNIKExBQkVMLCBLRVkpCQlcCiAxMDk4Oglub3A7CQkJCQlcCi0JLnB1c2hzZWN0aW9uIF9fanVt cF90YWJsZSwgImF3IjsJXAorCXB1c2hfc2VjdGlvbl90YmxfYW55KC5kYXRhLCBfX2p1bXBfdGFi bGUsIGF3KTsgXAogCUZUUl9FTlRSWV9MT05HIDEwOThiLCBMQUJFTCwgS0VZOwlcCiAJLnBvcHNl Y3Rpb24KICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2p1bXBfbGFi ZWwuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9qdW1wX2xhYmVsLmgKaW5kZXggOWJlMTk4ZjVl ZTc5Li41OGU1M2FmNDllN2UgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9qdW1w X2xhYmVsLmgKKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaApAQCAtMSw2 ICsxLDggQEAKICNpZm5kZWYgX0FTTV9TMzkwX0pVTVBfTEFCRUxfSAogI2RlZmluZSBfQVNNX1Mz OTBfSlVNUF9MQUJFTF9ICiAKKyNpbmNsdWRlIDxhc20vdGFibGVzLmg+CisKICNpZm5kZWYgX19B U1NFTUJMWV9fCiAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgpAQCAtMTYsNyArMTgsNyBAQAog c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfc3RhdGljX2JyYW5jaChzdHJ1Y3Qgc3Rh dGljX2tleSAqa2V5LCBib29sIGJyYW5jaCkKIHsKIAlhc21fdm9sYXRpbGVfZ290bygiMDoJYnJj bCAwLCJfX3N0cmluZ2lmeShKVU1QX0xBQkVMX05PUF9PRkZTRVQpIlxuIgotCQkiLnB1c2hzZWN0 aW9uIF9fanVtcF90YWJsZSwgXCJhd1wiXG4iCisJCXB1c2hfc2VjdGlvbl90YmxfYW55KC5kYXRh LCBfX2p1bXBfdGFibGUsIGF3KQogCQkiLmJhbGlnbiA4XG4iCiAJCSIucXVhZCAwYiwgJWxbbGFi ZWxdLCAlMFxuIgogCQkiLnBvcHNlY3Rpb25cbiIKQEAgLTMwLDcgKzMyLDcgQEAgc3RhdGljIF9f YWx3YXlzX2lubGluZSBib29sIGFyY2hfc3RhdGljX2JyYW5jaChzdHJ1Y3Qgc3RhdGljX2tleSAq a2V5LCBib29sIGJyYW4KIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3N0YXRpY19i cmFuY2hfanVtcChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LCBib29sIGJyYW5jaCkKIHsKIAlhc21f dm9sYXRpbGVfZ290bygiMDoJYnJjbCAxNSwgJWxbbGFiZWxdXG4iCi0JCSIucHVzaHNlY3Rpb24g X19qdW1wX3RhYmxlLCBcImF3XCJcbiIKKwkJcHVzaF9zZWN0aW9uX3RibF9hbnkoLmRhdGEsIF9f anVtcF90YWJsZSwgYXcpCiAJCSIuYmFsaWduIDhcbiIKIAkJIi5xdWFkIDBiLCAlbFtsYWJlbF0s ICUwXG4iCiAJCSIucG9wc2VjdGlvblxuIgpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9pbmNsdWRl L2FzbS9qdW1wX2xhYmVsLmggYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaApp bmRleCA2MmQwMzU0ZDE3MjcuLjM1ZDNlNWQzMTgyMSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9p bmNsdWRlL2FzbS9qdW1wX2xhYmVsLmgKKysrIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9qdW1w X2xhYmVsLmgKQEAgLTEsNiArMSw4IEBACiAjaWZuZGVmIF9BU01fU1BBUkNfSlVNUF9MQUJFTF9I CiAjZGVmaW5lIF9BU01fU1BBUkNfSlVNUF9MQUJFTF9ICiAKKyNpbmNsdWRlIDxhc20vdGFibGVz Lmg+CisKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgpA QCAtMTIsNyArMTQsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgYXJjaF9zdGF0aWNf YnJhbmNoKHN0cnVjdCBzdGF0aWNfa2V5ICprZXksIGJvb2wgYnJhbgogCWFzbV92b2xhdGlsZV9n b3RvKCIxOlxuXHQiCiAJCSAibm9wXG5cdCIKIAkJICJub3Bcblx0IgotCQkgIi5wdXNoc2VjdGlv biBfX2p1bXBfdGFibGUsICBcImF3XCJcblx0IgorCQkgcHVzaF9zZWN0aW9uX3RibF9hbnkoLmRh dGEsIF9fanVtcF90YWJsZSwgYXcpCiAJCSAiLmFsaWduIDRcblx0IgogCQkgIi53b3JkIDFiLCAl bFtsX3llc10sICVjMFxuXHQiCiAJCSAiLnBvcHNlY3Rpb24gXG5cdCIKQEAgLTI4LDcgKzMwLDcg QEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfc3RhdGljX2JyYW5jaF9qdW1wKHN0 cnVjdCBzdGF0aWNfa2V5ICprZXksIGJvb2wKIAlhc21fdm9sYXRpbGVfZ290bygiMTpcblx0Igog CQkgImIgJWxbbF95ZXNdXG5cdCIKIAkJICJub3Bcblx0IgotCQkgIi5wdXNoc2VjdGlvbiBfX2p1 bXBfdGFibGUsICBcImF3XCJcblx0IgorCQkgcHVzaF9zZWN0aW9uX3RibF9hbnkoLmRhdGEsIF9f anVtcF90YWJsZSwgYXcpCiAJCSAiLmFsaWduIDRcblx0IgogCQkgIi53b3JkIDFiLCAlbFtsX3ll c10sICVjMFxuXHQiCiAJCSAiLnBvcHNlY3Rpb24gXG5cdCIKZGlmZiAtLWdpdCBhL2FyY2gvdGls ZS9pbmNsdWRlL2FzbS9qdW1wX2xhYmVsLmggYi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vanVtcF9s YWJlbC5oCmluZGV4IGNkZTc1NzNmMzk3Yi4uOWJkOTg5ZGFhZDRhIDEwMDY0NAotLS0gYS9hcmNo L3RpbGUvaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oCisrKyBiL2FyY2gvdGlsZS9pbmNsdWRlL2Fz bS9qdW1wX2xhYmVsLmgKQEAgLTE2LDYgKzE2LDcgQEAKICNkZWZpbmUgX0FTTV9USUxFX0pVTVBf TEFCRUxfSAogCiAjaW5jbHVkZSA8YXJjaC9vcGNvZGUuaD4KKyNpbmNsdWRlIDxhc20vdGFibGVz Lmg+CiAKICNkZWZpbmUgSlVNUF9MQUJFTF9OT1BfU0laRQlUSUxFX0JVTkRMRV9TSVpFX0lOX0JZ VEVTCiAKQEAgLTI0LDcgKzI1LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hf c3RhdGljX2JyYW5jaChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LAogewogCWFzbV92b2xhdGlsZV9n b3RvKCIxOlxuXHQiCiAJCSJub3AiICJcblx0IgotCQkiLnB1c2hzZWN0aW9uIF9fanVtcF90YWJs ZSwgIFwiYXdcIlxuXHQiCisJCXB1c2hfc2VjdGlvbl90YmxfYW55KC5kYXRhLCBfX2p1bXBfdGFi bGUsIGF3KQogCQkiLnF1YWQgMWIsICVsW2xfeWVzXSwgJTAgKyAlMSBcblx0IgogCQkiLnBvcHNl Y3Rpb25cblx0IgogCQk6IDogICJpIiAoa2V5KSwgImkiIChicmFuY2gpIDogOiBsX3llcyk7CkBA IC0zOCw3ICszOSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3N0YXRpY19i cmFuY2hfanVtcChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LAogewogCWFzbV92b2xhdGlsZV9nb3Rv KCIxOlxuXHQiCiAJCSJqICVsW2xfeWVzXSIgIlxuXHQiCi0JCSIucHVzaHNlY3Rpb24gX19qdW1w X3RhYmxlLCAgXCJhd1wiXG5cdCIKKwkJcHVzaF9zZWN0aW9uX3RibF9hbnkoLmRhdGEsIF9fanVt cF90YWJsZSwgYXcpCiAJCSIucXVhZCAxYiwgJWxbbF95ZXNdLCAlMCArICUxIFxuXHQiCiAJCSIu cG9wc2VjdGlvblxuXHQiCiAJCTogOiAgImkiIChrZXkpLCAiaSIgKGJyYW5jaCkgOiA6IGxfeWVz KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCBiL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaAppbmRleCBhZGM1NGMxMmNiZDEuLjYyN2RmNDc1 MmRiMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oCisrKyBi L2FyY2gveDg2L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaApAQCAtMSw2ICsxLDggQEAKICNpZm5k ZWYgX0FTTV9YODZfSlVNUF9MQUJFTF9ICiAjZGVmaW5lIF9BU01fWDg2X0pVTVBfTEFCRUxfSAog CisjaW5jbHVkZSA8YXNtL3RhYmxlcy5oPgorCiAjaWZuZGVmIEhBVkVfSlVNUF9MQUJFTAogLyoK ICAqIEZvciBiZXR0ZXIgb3IgZm9yIHdvcnNlLCBpZiBqdW1wIGxhYmVscyAodGhlIGdjYyBleHRl bnNpb24pIGFyZSBtaXNzaW5nLApAQCAtMzQsNyArMzYsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5s aW5lIGJvb2wgYXJjaF9zdGF0aWNfYnJhbmNoKHN0cnVjdCBzdGF0aWNfa2V5ICprZXksIGJvb2wg YnJhbgogewogCWFzbV92b2xhdGlsZV9nb3RvKCIxOiIKIAkJIi5ieXRlICIgX19zdHJpbmdpZnko U1RBVElDX0tFWV9JTklUX05PUCkgIlxuXHQiCi0JCSIucHVzaHNlY3Rpb24gX19qdW1wX3RhYmxl LCAgXCJhd1wiIFxuXHQiCisJCXB1c2hfc2VjdGlvbl90YmxfYW55KC5kYXRhLCBfX2p1bXBfdGFi bGUsIGF3KQogCQlfQVNNX0FMSUdOICJcblx0IgogCQlfQVNNX1BUUiAiMWIsICVsW2xfeWVzXSwg JWMwICsgJWMxIFxuXHQiCiAJCSIucG9wc2VjdGlvbiBcblx0IgpAQCAtNTAsNyArNTIsNyBAQCBz dGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgYXJjaF9zdGF0aWNfYnJhbmNoX2p1bXAoc3RydWN0 IHN0YXRpY19rZXkgKmtleSwgYm9vbAogCWFzbV92b2xhdGlsZV9nb3RvKCIxOiIKIAkJIi5ieXRl IDB4ZTlcblx0IC5sb25nICVsW2xfeWVzXSAtIDJmXG5cdCIKIAkJIjI6XG5cdCIKLQkJIi5wdXNo c2VjdGlvbiBfX2p1bXBfdGFibGUsICBcImF3XCIgXG5cdCIKKwkJcHVzaF9zZWN0aW9uX3RibF9h bnkoLmRhdGEsIF9fanVtcF90YWJsZSwgYXcpCiAJCV9BU01fQUxJR04gIlxuXHQiCiAJCV9BU01f UFRSICIxYiwgJWxbbF95ZXNdLCAlYzAgKyAlYzEgXG5cdCIKIAkJIi5wb3BzZWN0aW9uIFxuXHQi CkBAIC04NSw3ICs4Nyw3IEBAIHN0cnVjdCBqdW1wX2VudHJ5IHsKIAkuZWxzZQogCS5ieXRlCQlT VEFUSUNfS0VZX0lOSVRfTk9QCiAJLmVuZGlmCi0JLnB1c2hzZWN0aW9uIF9fanVtcF90YWJsZSwg ImF3IgorCXB1c2hfc2VjdGlvbl90YmxfYW55KC5kYXRhLCBfX2p1bXBfdGFibGUsIGF3KQogCV9B U01fQUxJR04KIAlfQVNNX1BUUgkuTHN0YXRpY19qdW1wX1xALCBcdGFyZ2V0LCBca2V5CiAJLnBv cHNlY3Rpb24KQEAgLTEwMSw3ICsxMDMsNyBAQCBzdHJ1Y3QganVtcF9lbnRyeSB7CiAJLmxvbmcJ CVx0YXJnZXQgLSAuTHN0YXRpY19qdW1wX2FmdGVyX1xACiAuTHN0YXRpY19qdW1wX2FmdGVyX1xA OgogCS5lbmRpZgotCS5wdXNoc2VjdGlvbiBfX2p1bXBfdGFibGUsICJhdyIKKwlwdXNoX3NlY3Rp b25fdGJsX2FueSguZGF0YSwgX19qdW1wX3RhYmxlLCBhdykKIAlfQVNNX0FMSUdOCiAJX0FTTV9Q VFIJLkxzdGF0aWNfanVtcF9cQCwgXHRhcmdldCwgXGtleSArIDEKIAkucG9wc2VjdGlvbgpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oIGIvaW5jbHVkZS9hc20t Z2VuZXJpYy92bWxpbnV4Lmxkcy5oCmluZGV4IDhhNTMyNWQ3NTkzMi4uODg3ZDg0NGYwNDA2IDEw MDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKKysrIGIvaW5jbHVk ZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCkBAIC0yMTYsMTEgKzIxNiw2IEBACiAJKiguZGF0 YS51bmxpa2VseSkJCQkJCQlcCiAJU1RSVUNUX0FMSUdOKCk7CQkJCQkJCVwKIAkqKF9fdHJhY2Vw b2ludHMpCQkJCQkJXAotCS8qIGltcGxlbWVudCBkeW5hbWljIHByaW50ayBkZWJ1ZyAqLwkJCQlc Ci0JLiA9IEFMSUdOKDgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLQlWTUxJTlVYX1NZTUJPTChfX3N0YXJ0X19fanVtcF90YWJsZSkgPSAuOyAg ICAgICAgICAgICAgICAgICAgICAgXAotCUtFRVAoKihfX2p1bXBfdGFibGUpKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JVk1MSU5VWF9TWU1CT0woX19zdG9w X19fanVtcF90YWJsZSkgPSAuOyAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkuID0gQUxJR04o OCk7CQkJCQkJCVwKIAlWTUxJTlVYX1NZTUJPTChfX3N0YXJ0X19fdmVyYm9zZSkgPSAuOyAgICAg ICAgICAgICAgICAgICAgICAgICAgXAogCUtFRVAoKihfX3ZlcmJvc2UpKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2p1bXBfbGFiZWwuaCBiL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oCmluZGV4IGI2M2Q2 YjdiMGRiMC4uZTYyNzc4ODhiNTU4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2p1bXBfbGFi ZWwuaAorKysgYi9pbmNsdWRlL2xpbnV4L2p1bXBfbGFiZWwuaApAQCAtMTE3LDYgKzExNyw3IEBA IGVudW0ganVtcF9sYWJlbF90eXBlIHsKIHN0cnVjdCBtb2R1bGU7CiAKICNpZmRlZiBIQVZFX0pV TVBfTEFCRUwKKyNpbmNsdWRlIDxsaW51eC90YWJsZXMuaD4KIAogI2RlZmluZSBKVU1QX1RZUEVf RkFMU0UJMFVMCiAjZGVmaW5lIEpVTVBfVFlQRV9UUlVFCTFVTApAQCAtMTMyLDggKzEzMyw3IEBA IHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBzdGF0aWNfa2V5X3RydWUoc3RydWN0IHN0YXRp Y19rZXkgKmtleSkKIAlyZXR1cm4gIWFyY2hfc3RhdGljX2JyYW5jaChrZXksIHRydWUpOwogfQog Ci1leHRlcm4gc3RydWN0IGp1bXBfZW50cnkgX19zdGFydF9fX2p1bXBfdGFibGVbXTsKLWV4dGVy biBzdHJ1Y3QganVtcF9lbnRyeSBfX3N0b3BfX19qdW1wX3RhYmxlW107CitERUNMQVJFX0xJTktU QUJMRShzdHJ1Y3QganVtcF9lbnRyeSwgX19qdW1wX3RhYmxlKTsKIAogZXh0ZXJuIHZvaWQganVt cF9sYWJlbF9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQganVtcF9sYWJlbF9sb2NrKHZvaWQpOwpk aWZmIC0tZ2l0IGEva2VybmVsL2p1bXBfbGFiZWwuYyBiL2tlcm5lbC9qdW1wX2xhYmVsLmMKaW5k ZXggOTNhZDZjMWZiOWI2Li40MjUyZjE3ZWFlYjUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9qdW1wX2xh YmVsLmMKKysrIGIva2VybmVsL2p1bXBfbGFiZWwuYwpAQCAtMTUsOSArMTUsMTIgQEAKICNpbmNs dWRlIDxsaW51eC9zdGF0aWNfa2V5Lmg+CiAjaW5jbHVkZSA8bGludXgvanVtcF9sYWJlbF9yYXRl bGltaXQuaD4KICNpbmNsdWRlIDxsaW51eC9idWcuaD4KKyNpbmNsdWRlIDxsaW51eC90YWJsZXMu aD4KIAogI2lmZGVmIEhBVkVfSlVNUF9MQUJFTAogCitERUZJTkVfTElOS1RBQkxFKHN0cnVjdCBq dW1wX2VudHJ5LCBfX2p1bXBfdGFibGUpOworCiAvKiBtdXRleCB0byBwcm90ZWN0IGNvbWluZy9n b2luZyBvZiB0aGUgdGhlIGp1bXBfbGFiZWwgdGFibGUgKi8KIHN0YXRpYyBERUZJTkVfTVVURVgo anVtcF9sYWJlbF9tdXRleCk7CiAKQEAgLTI3NCw4ICsyNzcsNiBAQCBzdGF0aWMgdm9pZCBfX2p1 bXBfbGFiZWxfdXBkYXRlKHN0cnVjdCBzdGF0aWNfa2V5ICprZXksCiAKIHZvaWQgX19pbml0IGp1 bXBfbGFiZWxfaW5pdCh2b2lkKQogewotCXN0cnVjdCBqdW1wX2VudHJ5ICppdGVyX3N0YXJ0ID0g X19zdGFydF9fX2p1bXBfdGFibGU7Ci0Jc3RydWN0IGp1bXBfZW50cnkgKml0ZXJfc3RvcCA9IF9f c3RvcF9fX2p1bXBfdGFibGU7CiAJc3RydWN0IHN0YXRpY19rZXkgKmtleSA9IE5VTEw7CiAJc3Ry dWN0IGp1bXBfZW50cnkgKml0ZXI7CiAKQEAgLTI5Miw5ICsyOTMsMTAgQEAgdm9pZCBfX2luaXQg anVtcF9sYWJlbF9pbml0KHZvaWQpCiAJCXJldHVybjsKIAogCWp1bXBfbGFiZWxfbG9jaygpOwot CWp1bXBfbGFiZWxfc29ydF9lbnRyaWVzKGl0ZXJfc3RhcnQsIGl0ZXJfc3RvcCk7CisJanVtcF9s YWJlbF9zb3J0X2VudHJpZXMoTElOS1RBQkxFX1NUQVJUKF9fanVtcF90YWJsZSksCisJCQkJTElO S1RBQkxFX0VORChfX2p1bXBfdGFibGUpKTsKIAotCWZvciAoaXRlciA9IGl0ZXJfc3RhcnQ7IGl0 ZXIgPCBpdGVyX3N0b3A7IGl0ZXIrKykgeworCWxpbmt0YWJsZV9mb3JfZWFjaChpdGVyLCBfX2p1 bXBfdGFibGUpIHsKIAkJc3RydWN0IHN0YXRpY19rZXkgKml0ZXJrOwogCiAJCS8qIHJld3JpdGUg Tk9QcyAqLwpAQCAtNTM5LDggKzU0MSw5IEBAIGVhcmx5X2luaXRjYWxsKGp1bXBfbGFiZWxfaW5p dF9tb2R1bGUpOwogICovCiBpbnQganVtcF9sYWJlbF90ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0 LCB2b2lkICplbmQpCiB7Ci0JaW50IHJldCA9IF9fanVtcF9sYWJlbF90ZXh0X3Jlc2VydmVkKF9f c3RhcnRfX19qdW1wX3RhYmxlLAotCQkJX19zdG9wX19fanVtcF90YWJsZSwgc3RhcnQsIGVuZCk7 CisJaW50IHJldCA9IF9fanVtcF9sYWJlbF90ZXh0X3Jlc2VydmVkKExJTktUQUJMRV9TVEFSVChf X2p1bXBfdGFibGUpLAorCQkJCQkgICAgIExJTktUQUJMRV9FTkQoX19qdW1wX3RhYmxlKSwKKwkJ CQkJICAgICBzdGFydCwgZW5kKTsKIAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC01NTMs NyArNTU2LDcgQEAgaW50IGp1bXBfbGFiZWxfdGV4dF9yZXNlcnZlZCh2b2lkICpzdGFydCwgdm9p ZCAqZW5kKQogCiBzdGF0aWMgdm9pZCBqdW1wX2xhYmVsX3VwZGF0ZShzdHJ1Y3Qgc3RhdGljX2tl eSAqa2V5KQogewotCXN0cnVjdCBqdW1wX2VudHJ5ICpzdG9wID0gX19zdG9wX19fanVtcF90YWJs ZTsKKwlzdHJ1Y3QganVtcF9lbnRyeSAqc3RvcCA9IExJTktUQUJMRV9FTkQoX19qdW1wX3RhYmxl KTsKIAlzdHJ1Y3QganVtcF9lbnRyeSAqZW50cnkgPSBzdGF0aWNfa2V5X2VudHJpZXMoa2V5KTsK ICNpZmRlZiBDT05GSUdfTU9EVUxFUwogCXN0cnVjdCBtb2R1bGUgKm1vZDsKZGlmZiAtLWdpdCBh L3NjcmlwdHMvbW9kdWxlLWNvbW1vbi5sZHMgYi9zY3JpcHRzL21vZHVsZS1jb21tb24ubGRzCmlu ZGV4IDczYTJjN2RhMGU1NS4uZGIwZTcyNDU1NmM1IDEwMDY0NAotLS0gYS9zY3JpcHRzL21vZHVs ZS1jb21tb24ubGRzCisrKyBiL3NjcmlwdHMvbW9kdWxlLWNvbW1vbi5sZHMKQEAgLTE2LDYgKzE2 LDcgQEAgU0VDVElPTlMgewogCV9fa2NyY3RhYl91bnVzZWQJMCA6IHsgKihTT1JUKF9fX2tjcmN0 YWJfdW51c2VkKyopKSB9CiAJX19rY3JjdGFiX3VudXNlZF9ncGwJMCA6IHsgKihTT1JUKF9fX2tj cmN0YWJfdW51c2VkX2dwbCsqKSkgfQogCV9fa2NyY3RhYl9ncGxfZnV0dXJlCTAgOiB7ICooU09S VChfX19rY3JjdGFiX2dwbF9mdXR1cmUrKikpIH0KKwlfX2p1bXBfdGFibGUJCTAgOiB7ICooU09S VCguZGF0YS4udGJsLl9fanVtcF90YWJsZS4qKSkgfQogCiAJLiA9IEFMSUdOKDgpOwogCS5pbml0 X2FycmF5CQkwIDogeyAqKFNPUlQoLmluaXRfYXJyYXkuKikpICooLmluaXRfYXJyYXkpIH0KZGlm ZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvc3BlY2lhbC5jIGIvdG9vbHMvb2JqdG9vbC9zcGVjaWFs LmMKaW5kZXggYmZmOGFiYjNhNGFhLi43OTk2OGUxMTgyOTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL29i anRvb2wvc3BlY2lhbC5jCisrKyBiL3Rvb2xzL29ianRvb2wvc3BlY2lhbC5jCkBAIC02Myw3ICs2 Myw3IEBAIHN0cnVjdCBzcGVjaWFsX2VudHJ5IGVudHJpZXNbXSA9IHsKIAkJLmZlYXR1cmUgPSBB TFRfRkVBVFVSRV9PRkZTRVQsCiAJfSwKIAl7Ci0JCS5zZWMgPSAiX19qdW1wX3RhYmxlIiwKKwkJ LnNlYyA9ICIuZGF0YS4udGJsLl9fanVtcF90YWJsZS5hbnkiLAogCQkuanVtcF9vcl9ub3AgPSB0 cnVlLAogCQkuc2l6ZSA9IEpVTVBfRU5UUllfU0laRSwKIAkJLm9yaWcgPSBKVU1QX09SSUdfT0ZG U0VULAotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.kernel.org ([198.145.29.136]:53196 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S937192AbdAIO72 (ORCPT ); Mon, 9 Jan 2017 09:59:28 -0500 From: "Luis R. Rodriguez" Subject: [PATCH v6 09/14] jump_label: port __jump_table to linker tables Date: Mon, 9 Jan 2017 06:58:27 -0800 Message-ID: <20170109145833.11502-10-mcgrof@kernel.org> In-Reply-To: <20170109145833.11502-1-mcgrof@kernel.org> References: <20161222023811.21246-1-mcgrof@kernel.org> <20170109145833.11502-1-mcgrof@kernel.org> Sender: linux-arch-owner@vger.kernel.org List-ID: To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel.org, tony.luck@intel.com, akpm@linux-foundation.org, linux-ia64@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, catalin.marinas@arm.com, will.deacon@arm.com, rostedt@goodmis.org, jani.nikula@intel.com, mchehab@osg.samsung.com, markus.heiser@darmarit.de, jolsa@kernel.org, msalter@redhat.com, chris@zankel.net, jcmvbkbc@gmail.com, linux-xtensa@linux-xtensa.org, adrian.hunter@intel.com, dsahern@gmail.com, namhyung@kernel.org, wangnan0@huawei.com, dmitry.torokhov@gmail.com, joro@8bytes.org, paulus@samba.org, mpe@ellerman.id.au, James.Bottomley@HansenPartnership.com, "Luis R. Rodriguez" Message-ID: <20170109145827.XNzP0Ki7qi01vkmnGDYAWLt9KYZc9mZef3lDoiirYtg@z> Move the __jump_table from the a custom section solution to a generic solution, this avoiding extra vmlinux.lds.h customizations. This also demos the use of the .data linker table and of the shared asm call push_section_tbl(). Built-in kernel functionality was tested with CONFIG_STATIC_KEYS_SELFTEST. Moduler kernel functionality was tested with CONFIG_TEST_STATIC_KEYS. Both work as expected. Since __jump_table sections are also supported per module this also required expanding module-common.lds.S to capture and fold all .data.tlb.__jump_table.* onto the the section __jump_table -- in this case for modules need to keep a reference in place, given the alternative is to use DEFINE_LINKTABLE(struct jump_entry, __jump_table) per module -- and later through macro hacks instantiate the jump entries per module upon init. This is doable but we'd loose out on the sorting of the table using the linker, to sort we'd always still need to expand the module common linker script. An alternative mechanism is possible which would make these custom module sections extensions dynamic without requiring manual changes, this however is best done later through a separate evolution once linker tables are in place. A careful reviewer may note that some architectures use "\n\t" to separate asm code, while others just use a new line. Upon review last time it was deemed reasonable to for all architectures to just use "\n", this is defined as ASM_CMD_SEP, and if an architecture needs to override they can do so on their architecture sections.h prior to including asm-generic/sections.h v6: rename table macro as suggested by Andy Shevchenko v5: o Use ..tbl instead of .tbl as suggested by Nicholas Piggin. This is the typical way to avoid clash with compiler generated section. o Replace section macros with section names o Use LINKTABLE_START() and LINKTABLE_END() o fixed tile jump label port -- tile got jump label support as of commit 65a792e84f25d1 ("tile/jump_label: add jump label support for TILE-Gx"), as such we just needed to adjust the asm to account for the new linker table API use. This commit was merged as of v4.5-rc1. v4: o Some architectures allow linker scripts to follow including header files, some others do not, so if you need a helper on a linker script you need to explicitly include it. So for instance although scripts/module-common.lds.S includes and this file includes , you still need to explicitly include it on the linker script. This issue is present on ARM. o as per Josh Poimboeuf open code the section table name instead of including the kernel section headers, the simplicity and independence from the kernel is preferred. v3: o More elaborate tests performed o first modular support use case, module tested was CONFIG_TEST_STATIC_KEYS (lib/test_static_keys.ko), this required us to extend module-common.lds.S o use generic push_section_tbl_any() for all architectures o Makes use of ASM_CMD_SEP to enable architectures to override later if needed o guard tables.h inclusion and table definition with __KERNEL__ v2: introduced in this series Signed-off-by: Luis R. Rodriguez --- arch/arm/include/asm/jump_label.h | 6 ++++-- arch/arm64/include/asm/jump_label.h | 6 ++++-- arch/mips/include/asm/jump_label.h | 6 ++++-- arch/powerpc/include/asm/jump_label.h | 8 +++++--- arch/s390/include/asm/jump_label.h | 6 ++++-- arch/sparc/include/asm/jump_label.h | 6 ++++-- arch/tile/include/asm/jump_label.h | 5 +++-- arch/x86/include/asm/jump_label.h | 10 ++++++---- include/asm-generic/vmlinux.lds.h | 5 ----- include/linux/jump_label.h | 4 ++-- kernel/jump_label.c | 17 ++++++++++------- scripts/module-common.lds | 1 + tools/objtool/special.c | 2 +- 13 files changed, 48 insertions(+), 34 deletions(-) diff --git a/arch/arm/include/asm/jump_label.h b/arch/arm/include/asm/jump_label.h index 34f7b6980d21..609e0592a942 100644 --- a/arch/arm/include/asm/jump_label.h +++ b/arch/arm/include/asm/jump_label.h @@ -1,6 +1,8 @@ #ifndef _ASM_ARM_JUMP_LABEL_H #define _ASM_ARM_JUMP_LABEL_H +#include + #ifndef __ASSEMBLY__ #include @@ -12,7 +14,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran { asm_volatile_goto("1:\n\t" WASM(nop) "\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) ".word 1b, %l[l_yes], %c0\n\t" ".popsection\n\t" : : "i" (&((char *)key)[branch]) : : l_yes); @@ -26,7 +28,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool { asm_volatile_goto("1:\n\t" WASM(b) " %l[l_yes]\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) ".word 1b, %l[l_yes], %c0\n\t" ".popsection\n\t" : : "i" (&((char *)key)[branch]) : : l_yes); diff --git a/arch/arm64/include/asm/jump_label.h b/arch/arm64/include/asm/jump_label.h index 1b5e0e843c3a..bb56ac4fafb5 100644 --- a/arch/arm64/include/asm/jump_label.h +++ b/arch/arm64/include/asm/jump_label.h @@ -19,6 +19,8 @@ #ifndef __ASM_JUMP_LABEL_H #define __ASM_JUMP_LABEL_H +#include + #ifndef __ASSEMBLY__ #include @@ -29,7 +31,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { asm goto("1: nop\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) ".align 3\n\t" ".quad 1b, %l[l_yes], %c0\n\t" ".popsection\n\t" @@ -43,7 +45,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) { asm goto("1: b %l[l_yes]\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) ".align 3\n\t" ".quad 1b, %l[l_yes], %c0\n\t" ".popsection\n\t" diff --git a/arch/mips/include/asm/jump_label.h b/arch/mips/include/asm/jump_label.h index e77672539e8e..07289a1b1bcd 100644 --- a/arch/mips/include/asm/jump_label.h +++ b/arch/mips/include/asm/jump_label.h @@ -8,6 +8,8 @@ #ifndef _ASM_MIPS_JUMP_LABEL_H #define _ASM_MIPS_JUMP_LABEL_H +#include + #ifndef __ASSEMBLY__ #include @@ -30,7 +32,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran { asm_volatile_goto("1:\t" NOP_INSN "\n\t" "nop\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) WORD_INSN " 1b, %l[l_yes], %0\n\t" ".popsection\n\t" : : "i" (&((char *)key)[branch]) : : l_yes); @@ -44,7 +46,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool { asm_volatile_goto("1:\tj %l[l_yes]\n\t" "nop\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) WORD_INSN " 1b, %l[l_yes], %0\n\t" ".popsection\n\t" : : "i" (&((char *)key)[branch]) : : l_yes); diff --git a/arch/powerpc/include/asm/jump_label.h b/arch/powerpc/include/asm/jump_label.h index 9a287e0ac8b1..7a75623740d0 100644 --- a/arch/powerpc/include/asm/jump_label.h +++ b/arch/powerpc/include/asm/jump_label.h @@ -10,6 +10,8 @@ * 2 of the License, or (at your option) any later version. */ +#include + #ifndef __ASSEMBLY__ #include @@ -23,7 +25,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran { asm_volatile_goto("1:\n\t" "nop # arch_static_branch\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) JUMP_ENTRY_TYPE "1b, %l[l_yes], %c0\n\t" ".popsection \n\t" : : "i" (&((char *)key)[branch]) : : l_yes); @@ -37,7 +39,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool { asm_volatile_goto("1:\n\t" "b %l[l_yes] # arch_static_branch_jump\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) JUMP_ENTRY_TYPE "1b, %l[l_yes], %c0\n\t" ".popsection \n\t" : : "i" (&((char *)key)[branch]) : : l_yes); @@ -62,7 +64,7 @@ struct jump_entry { #else #define ARCH_STATIC_BRANCH(LABEL, KEY) \ 1098: nop; \ - .pushsection __jump_table, "aw"; \ + push_section_tbl_any(.data, __jump_table, aw); \ FTR_ENTRY_LONG 1098b, LABEL, KEY; \ .popsection #endif diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h index 9be198f5ee79..58e53af49e7e 100644 --- a/arch/s390/include/asm/jump_label.h +++ b/arch/s390/include/asm/jump_label.h @@ -1,6 +1,8 @@ #ifndef _ASM_S390_JUMP_LABEL_H #define _ASM_S390_JUMP_LABEL_H +#include + #ifndef __ASSEMBLY__ #include @@ -16,7 +18,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { asm_volatile_goto("0: brcl 0,"__stringify(JUMP_LABEL_NOP_OFFSET)"\n" - ".pushsection __jump_table, \"aw\"\n" + push_section_tbl_any(.data, __jump_table, aw) ".balign 8\n" ".quad 0b, %l[label], %0\n" ".popsection\n" @@ -30,7 +32,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) { asm_volatile_goto("0: brcl 15, %l[label]\n" - ".pushsection __jump_table, \"aw\"\n" + push_section_tbl_any(.data, __jump_table, aw) ".balign 8\n" ".quad 0b, %l[label], %0\n" ".popsection\n" diff --git a/arch/sparc/include/asm/jump_label.h b/arch/sparc/include/asm/jump_label.h index 62d0354d1727..35d3e5d31821 100644 --- a/arch/sparc/include/asm/jump_label.h +++ b/arch/sparc/include/asm/jump_label.h @@ -1,6 +1,8 @@ #ifndef _ASM_SPARC_JUMP_LABEL_H #define _ASM_SPARC_JUMP_LABEL_H +#include + #ifndef __ASSEMBLY__ #include @@ -12,7 +14,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran asm_volatile_goto("1:\n\t" "nop\n\t" "nop\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) ".align 4\n\t" ".word 1b, %l[l_yes], %c0\n\t" ".popsection \n\t" @@ -28,7 +30,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool asm_volatile_goto("1:\n\t" "b %l[l_yes]\n\t" "nop\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) ".align 4\n\t" ".word 1b, %l[l_yes], %c0\n\t" ".popsection \n\t" diff --git a/arch/tile/include/asm/jump_label.h b/arch/tile/include/asm/jump_label.h index cde7573f397b..9bd989daad4a 100644 --- a/arch/tile/include/asm/jump_label.h +++ b/arch/tile/include/asm/jump_label.h @@ -16,6 +16,7 @@ #define _ASM_TILE_JUMP_LABEL_H #include +#include #define JUMP_LABEL_NOP_SIZE TILE_BUNDLE_SIZE_IN_BYTES @@ -24,7 +25,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, { asm_volatile_goto("1:\n\t" "nop" "\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) ".quad 1b, %l[l_yes], %0 + %1 \n\t" ".popsection\n\t" : : "i" (key), "i" (branch) : : l_yes); @@ -38,7 +39,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, { asm_volatile_goto("1:\n\t" "j %l[l_yes]" "\n\t" - ".pushsection __jump_table, \"aw\"\n\t" + push_section_tbl_any(.data, __jump_table, aw) ".quad 1b, %l[l_yes], %0 + %1 \n\t" ".popsection\n\t" : : "i" (key), "i" (branch) : : l_yes); diff --git a/arch/x86/include/asm/jump_label.h b/arch/x86/include/asm/jump_label.h index adc54c12cbd1..627df4752db0 100644 --- a/arch/x86/include/asm/jump_label.h +++ b/arch/x86/include/asm/jump_label.h @@ -1,6 +1,8 @@ #ifndef _ASM_X86_JUMP_LABEL_H #define _ASM_X86_JUMP_LABEL_H +#include + #ifndef HAVE_JUMP_LABEL /* * For better or for worse, if jump labels (the gcc extension) are missing, @@ -34,7 +36,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran { asm_volatile_goto("1:" ".byte " __stringify(STATIC_KEY_INIT_NOP) "\n\t" - ".pushsection __jump_table, \"aw\" \n\t" + push_section_tbl_any(.data, __jump_table, aw) _ASM_ALIGN "\n\t" _ASM_PTR "1b, %l[l_yes], %c0 + %c1 \n\t" ".popsection \n\t" @@ -50,7 +52,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool asm_volatile_goto("1:" ".byte 0xe9\n\t .long %l[l_yes] - 2f\n\t" "2:\n\t" - ".pushsection __jump_table, \"aw\" \n\t" + push_section_tbl_any(.data, __jump_table, aw) _ASM_ALIGN "\n\t" _ASM_PTR "1b, %l[l_yes], %c0 + %c1 \n\t" ".popsection \n\t" @@ -85,7 +87,7 @@ struct jump_entry { .else .byte STATIC_KEY_INIT_NOP .endif - .pushsection __jump_table, "aw" + push_section_tbl_any(.data, __jump_table, aw) _ASM_ALIGN _ASM_PTR .Lstatic_jump_\@, \target, \key .popsection @@ -101,7 +103,7 @@ struct jump_entry { .long \target - .Lstatic_jump_after_\@ .Lstatic_jump_after_\@: .endif - .pushsection __jump_table, "aw" + push_section_tbl_any(.data, __jump_table, aw) _ASM_ALIGN _ASM_PTR .Lstatic_jump_\@, \target, \key + 1 .popsection diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 8a5325d75932..887d844f0406 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -216,11 +216,6 @@ *(.data.unlikely) \ STRUCT_ALIGN(); \ *(__tracepoints) \ - /* implement dynamic printk debug */ \ - . = ALIGN(8); \ - VMLINUX_SYMBOL(__start___jump_table) = .; \ - KEEP(*(__jump_table)) \ - VMLINUX_SYMBOL(__stop___jump_table) = .; \ . = ALIGN(8); \ VMLINUX_SYMBOL(__start___verbose) = .; \ KEEP(*(__verbose)) \ diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index b63d6b7b0db0..e6277888b558 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h @@ -117,6 +117,7 @@ enum jump_label_type { struct module; #ifdef HAVE_JUMP_LABEL +#include #define JUMP_TYPE_FALSE 0UL #define JUMP_TYPE_TRUE 1UL @@ -132,8 +133,7 @@ static __always_inline bool static_key_true(struct static_key *key) return !arch_static_branch(key, true); } -extern struct jump_entry __start___jump_table[]; -extern struct jump_entry __stop___jump_table[]; +DECLARE_LINKTABLE(struct jump_entry, __jump_table); extern void jump_label_init(void); extern void jump_label_lock(void); diff --git a/kernel/jump_label.c b/kernel/jump_label.c index 93ad6c1fb9b6..4252f17eaeb5 100644 --- a/kernel/jump_label.c +++ b/kernel/jump_label.c @@ -15,9 +15,12 @@ #include #include #include +#include #ifdef HAVE_JUMP_LABEL +DEFINE_LINKTABLE(struct jump_entry, __jump_table); + /* mutex to protect coming/going of the the jump_label table */ static DEFINE_MUTEX(jump_label_mutex); @@ -274,8 +277,6 @@ static void __jump_label_update(struct static_key *key, void __init jump_label_init(void) { - struct jump_entry *iter_start = __start___jump_table; - struct jump_entry *iter_stop = __stop___jump_table; struct static_key *key = NULL; struct jump_entry *iter; @@ -292,9 +293,10 @@ void __init jump_label_init(void) return; jump_label_lock(); - jump_label_sort_entries(iter_start, iter_stop); + jump_label_sort_entries(LINKTABLE_START(__jump_table), + LINKTABLE_END(__jump_table)); - for (iter = iter_start; iter < iter_stop; iter++) { + linktable_for_each(iter, __jump_table) { struct static_key *iterk; /* rewrite NOPs */ @@ -539,8 +541,9 @@ early_initcall(jump_label_init_module); */ int jump_label_text_reserved(void *start, void *end) { - int ret = __jump_label_text_reserved(__start___jump_table, - __stop___jump_table, start, end); + int ret = __jump_label_text_reserved(LINKTABLE_START(__jump_table), + LINKTABLE_END(__jump_table), + start, end); if (ret) return ret; @@ -553,7 +556,7 @@ int jump_label_text_reserved(void *start, void *end) static void jump_label_update(struct static_key *key) { - struct jump_entry *stop = __stop___jump_table; + struct jump_entry *stop = LINKTABLE_END(__jump_table); struct jump_entry *entry = static_key_entries(key); #ifdef CONFIG_MODULES struct module *mod; diff --git a/scripts/module-common.lds b/scripts/module-common.lds index 73a2c7da0e55..db0e724556c5 100644 --- a/scripts/module-common.lds +++ b/scripts/module-common.lds @@ -16,6 +16,7 @@ SECTIONS { __kcrctab_unused 0 : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl 0 : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future 0 : { *(SORT(___kcrctab_gpl_future+*)) } + __jump_table 0 : { *(SORT(.data..tbl.__jump_table.*)) } . = ALIGN(8); .init_array 0 : { *(SORT(.init_array.*)) *(.init_array) } diff --git a/tools/objtool/special.c b/tools/objtool/special.c index bff8abb3a4aa..79968e118294 100644 --- a/tools/objtool/special.c +++ b/tools/objtool/special.c @@ -63,7 +63,7 @@ struct special_entry entries[] = { .feature = ALT_FEATURE_OFFSET, }, { - .sec = "__jump_table", + .sec = ".data..tbl.__jump_table.any", .jump_or_nop = true, .size = JUMP_ENTRY_SIZE, .orig = JUMP_ORIG_OFFSET, -- 2.11.0