From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0A1F7C47E49 for ; Mon, 4 Nov 2019 15:15:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CB656204FD for ; Mon, 4 Nov 2019 15:15:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="dZr8UmC9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729011AbfKDPPc (ORCPT ); Mon, 4 Nov 2019 10:15:32 -0500 Received: from aserp2120.oracle.com ([141.146.126.78]:54044 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727796AbfKDPPb (ORCPT ); Mon, 4 Nov 2019 10:15:31 -0500 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id xA4FCRhY032276; Mon, 4 Nov 2019 15:14:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=corp-2019-08-05; bh=DKkR9B0pyfeJWw3qfq3SJ4xhN9wi6hAARN2vGh5YHPc=; b=dZr8UmC9gIfWcs0WK5ETtt3pPs4C337gYK4dgkfk/PWmbwAoDuprjLQ+ydN7VX+BCikP ZmMJhbt0JUsmLHUHeGMo0/md0JKo6gE1CrCqeHgBM2+Knq9Bm0JQWPDJkrhpsQN12Nup pkBZB9zvi8IxNVeRs0zbUW/jZb2ZeHThtlvl23jJw4cdY1Ok/mDcxVox+nK/PjmOFmpj gIhV75FerBpZScRaoOP8guER/kZ6Citk/H6RNM/yk5HANkQbssS2XVwcVsPsLLXS9K6X cjpe2bqWJHwc/3U7k+M3ohHaG7sShK+LoJyH/W9pY79J1FSxe+Ouakdry1iHcU56YnWk bg== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by aserp2120.oracle.com with ESMTP id 2w11rpr135-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Nov 2019 15:14:30 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.27/8.16.0.27) with SMTP id xA4FAARU019949; Mon, 4 Nov 2019 15:14:30 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 2w1kxmhhe0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Nov 2019 15:14:29 +0000 Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id xA4FELkw010740; Mon, 4 Nov 2019 15:14:25 GMT Received: from tomti.i.net-space.pl (/10.175.168.29) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 04 Nov 2019 07:14:21 -0800 From: Daniel Kiper To: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, xen-devel@lists.xenproject.org Cc: ard.biesheuvel@linaro.org, boris.ostrovsky@oracle.com, bp@alien8.de, corbet@lwn.net, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, eric.snowberg@oracle.com, hpa@zytor.com, jgross@suse.com, kanth.ghatraju@oracle.com, konrad.wilk@oracle.com, mingo@redhat.com, rdunlap@infradead.org, ross.philipson@oracle.com, tglx@linutronix.de Subject: [PATCH v5 1/3] x86/boot: Introduce the kernel_info Date: Mon, 4 Nov 2019 16:13:52 +0100 Message-Id: <20191104151354.28145-2-daniel.kiper@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20191104151354.28145-1-daniel.kiper@oracle.com> References: <20191104151354.28145-1-daniel.kiper@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9431 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1911040151 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9431 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1911040151 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The relationships between the headers are analogous to the various data sections: setup_header = .data boot_params/setup_data = .bss What is missing from the above list? That's right: kernel_info = .rodata We have been (ab)using .data for things that could go into .rodata or .bss for a long time, for lack of alternatives and -- especially early on -- inertia. Also, the BIOS stub is responsible for creating boot_params, so it isn't available to a BIOS-based loader (setup_data is, though). setup_header is permanently limited to 144 bytes due to the reach of the 2-byte jump field, which doubles as a length field for the structure, combined with the size of the "hole" in struct boot_params that a protected-mode loader or the BIOS stub has to copy it into. It is currently 119 bytes long, which leaves us with 25 very precious bytes. This isn't something that can be fixed without revising the boot protocol entirely, breaking backwards compatibility. boot_params proper is limited to 4096 bytes, but can be arbitrarily extended by adding setup_data entries. It cannot be used to communicate properties of the kernel image, because it is .bss and has no image-provided content. kernel_info solves this by providing an extensible place for information about the kernel image. It is readonly, because the kernel cannot rely on a bootloader copying its contents anywhere, but that is OK; if it becomes necessary it can still contain data items that an enabled bootloader would be expected to copy into a setup_data chunk. This patch does not bump setup_header version in arch/x86/boot/header.S because it will be followed by additional changes coming into the Linux/x86 boot protocol. Suggested-by: H. Peter Anvin (Intel) Signed-off-by: Daniel Kiper Reviewed-by: Konrad Rzeszutek Wilk Reviewed-by: Ross Philipson Reviewed-by: H. Peter Anvin (Intel) --- v4 - suggestions/fixes: - improve the documentation (suggested by Randy Dunlap and Konrad Rzeszutek Wilk). v3 - suggestions/fixes: - split kernel_info data into fixed and variable sized regions, (suggested by H. Peter Anvin), - change kernel_info.header value to "LToP" (0x506f544c), (suggested by H. Peter Anvin), - improve the comments, - improve the documentation. v2 - suggestions/fixes: - rename setup_header2 to kernel_info, (suggested by H. Peter Anvin), - change kernel_info.header value to "InfO" (0x4f666e49), - new kernel_info description in Documentation/x86/boot.rst, (suggested by H. Peter Anvin), - drop kernel_info_offset_update() as an overkill and update kernel_info offset directly from main(), (suggested by Eric Snowberg), - new commit message (suggested by H. Peter Anvin), - fix some commit message misspellings (suggested by Eric Snowberg). --- Documentation/x86/boot.rst | 126 +++++++++++++++++++++++++++++++++ arch/x86/boot/Makefile | 2 +- arch/x86/boot/compressed/Makefile | 4 +- arch/x86/boot/compressed/kernel_info.S | 17 +++++ arch/x86/boot/header.S | 1 + arch/x86/boot/tools/build.c | 5 ++ arch/x86/include/uapi/asm/bootparam.h | 1 + 7 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 arch/x86/boot/compressed/kernel_info.S diff --git a/Documentation/x86/boot.rst b/Documentation/x86/boot.rst index 08a2f100c0e6..c60fafda9427 100644 --- a/Documentation/x86/boot.rst +++ b/Documentation/x86/boot.rst @@ -68,8 +68,25 @@ Protocol 2.12 (Kernel 3.8) Added the xloadflags field and extension fields Protocol 2.13 (Kernel 3.14) Support 32- and 64-bit flags being set in xloadflags to support booting a 64-bit kernel from 32-bit EFI + +Protocol 2.14: BURNT BY INCORRECT COMMIT ae7e1238e68f2a472a125673ab506d49158c1889 + (x86/boot: Add ACPI RSDP address to setup_header) + DO NOT USE!!! ASSUME SAME AS 2.13. + +Protocol 2.15: (Kernel 5.5) Added the kernel_info. ============= ============================================================ +.. note:: + The protocol version number should be changed only if the setup header + is changed. There is no need to update the version number if boot_params + or kernel_info are changed. Additionally, it is recommended to use + xloadflags (in this case the protocol version number should not be + updated either) or kernel_info to communicate supported Linux kernel + features to the boot loader. Due to very limited space available in + the original setup header every update to it should be considered + with great care. Starting from the protocol 2.15 the primary way to + communicate things to the boot loader is the kernel_info. + Memory Layout ============= @@ -207,6 +224,7 @@ Offset/Size Proto Name Meaning 0258/8 2.10+ pref_address Preferred loading address 0260/4 2.10+ init_size Linear memory required during initialization 0264/4 2.11+ handover_offset Offset of handover entry point +0268/4 2.15+ kernel_info_offset Offset of the kernel_info =========== ======== ===================== ============================================ .. note:: @@ -855,6 +873,114 @@ Offset/size: 0x264/4 See EFI HANDOVER PROTOCOL below for more details. +============ ================== +Field name: kernel_info_offset +Type: read +Offset/size: 0x268/4 +Protocol: 2.15+ +============ ================== + + This field is the offset from the beginning of the kernel image to the + kernel_info. The kernel_info structure is embedded in the Linux image + in the uncompressed protected mode region. + + +The kernel_info +=============== + +The relationships between the headers are analogous to the various data +sections: + + setup_header = .data + boot_params/setup_data = .bss + +What is missing from the above list? That's right: + + kernel_info = .rodata + +We have been (ab)using .data for things that could go into .rodata or .bss for +a long time, for lack of alternatives and -- especially early on -- inertia. +Also, the BIOS stub is responsible for creating boot_params, so it isn't +available to a BIOS-based loader (setup_data is, though). + +setup_header is permanently limited to 144 bytes due to the reach of the +2-byte jump field, which doubles as a length field for the structure, combined +with the size of the "hole" in struct boot_params that a protected-mode loader +or the BIOS stub has to copy it into. It is currently 119 bytes long, which +leaves us with 25 very precious bytes. This isn't something that can be fixed +without revising the boot protocol entirely, breaking backwards compatibility. + +boot_params proper is limited to 4096 bytes, but can be arbitrarily extended +by adding setup_data entries. It cannot be used to communicate properties of +the kernel image, because it is .bss and has no image-provided content. + +kernel_info solves this by providing an extensible place for information about +the kernel image. It is readonly, because the kernel cannot rely on a +bootloader copying its contents anywhere, but that is OK; if it becomes +necessary it can still contain data items that an enabled bootloader would be +expected to copy into a setup_data chunk. + +All kernel_info data should be part of this structure. Fixed size data have to +be put before kernel_info_var_len_data label. Variable size data have to be put +after kernel_info_var_len_data label. Each chunk of variable size data has to +be prefixed with header/magic and its size, e.g.: + + kernel_info: + .ascii "LToP" /* Header, Linux top (structure). */ + .long kernel_info_var_len_data - kernel_info + .long kernel_info_end - kernel_info + .long 0x01234567 /* Some fixed size data for the bootloaders. */ + kernel_info_var_len_data: + example_struct: /* Some variable size data for the bootloaders. */ + .ascii "0123" /* Header/Magic. */ + .long example_struct_end - example_struct + .ascii "Struct" + .long 0x89012345 + example_struct_end: + example_strings: /* Some variable size data for the bootloaders. */ + .ascii "ABCD" /* Header/Magic. */ + .long example_strings_end - example_strings + .asciz "String_0" + .asciz "String_1" + example_strings_end: + kernel_info_end: + +This way the kernel_info is self-contained blob. + +.. note:: + Each variable size data header/magic can be any 4-character string, + without \0 at the end of the string, which does not collide with + existing variable length data headers/magics. + + +Details of the kernel_info Fields +================================= + +============ ======== +Field name: header +Offset/size: 0x0000/4 +============ ======== + + Contains the magic number "LToP" (0x506f544c). + +============ ======== +Field name: size +Offset/size: 0x0004/4 +============ ======== + + This field contains the size of the kernel_info including kernel_info.header. + It does not count kernel_info.kernel_info_var_len_data size. This field should be + used by the bootloaders to detect supported fixed size fields in the kernel_info + and beginning of kernel_info.kernel_info_var_len_data. + +============ ======== +Field name: size_total +Offset/size: 0x0008/4 +============ ======== + + This field contains the size of the kernel_info including kernel_info.header + and kernel_info.kernel_info_var_len_data. + The Image Checksum ================== diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index e2839b5c246c..c30a9b642a86 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile @@ -87,7 +87,7 @@ $(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE SETUP_OBJS = $(addprefix $(obj)/,$(setup-y)) -sed-zoffset := -e 's/^\([0-9a-fA-F]*\) [ABCDGRSTVW] \(startup_32\|startup_64\|efi32_stub_entry\|efi64_stub_entry\|efi_pe_entry\|input_data\|_end\|_ehead\|_text\|z_.*\)$$/\#define ZO_\2 0x\1/p' +sed-zoffset := -e 's/^\([0-9a-fA-F]*\) [ABCDGRSTVW] \(startup_32\|startup_64\|efi32_stub_entry\|efi64_stub_entry\|efi_pe_entry\|input_data\|kernel_info\|_end\|_ehead\|_text\|z_.*\)$$/\#define ZO_\2 0x\1/p' quiet_cmd_zoffset = ZOFFSET $@ cmd_zoffset = $(NM) $< | sed -n $(sed-zoffset) > $@ diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile index 6b84afdd7538..fad3b18e2cc3 100644 --- a/arch/x86/boot/compressed/Makefile +++ b/arch/x86/boot/compressed/Makefile @@ -72,8 +72,8 @@ $(obj)/../voffset.h: vmlinux FORCE $(obj)/misc.o: $(obj)/../voffset.h -vmlinux-objs-y := $(obj)/vmlinux.lds $(obj)/head_$(BITS).o $(obj)/misc.o \ - $(obj)/string.o $(obj)/cmdline.o $(obj)/error.o \ +vmlinux-objs-y := $(obj)/vmlinux.lds $(obj)/kernel_info.o $(obj)/head_$(BITS).o \ + $(obj)/misc.o $(obj)/string.o $(obj)/cmdline.o $(obj)/error.o \ $(obj)/piggy.o $(obj)/cpuflags.o vmlinux-objs-$(CONFIG_EARLY_PRINTK) += $(obj)/early_serial_console.o diff --git a/arch/x86/boot/compressed/kernel_info.S b/arch/x86/boot/compressed/kernel_info.S new file mode 100644 index 000000000000..8ea6f6e3feef --- /dev/null +++ b/arch/x86/boot/compressed/kernel_info.S @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + + .section ".rodata.kernel_info", "a" + + .global kernel_info + +kernel_info: + /* Header, Linux top (structure). */ + .ascii "LToP" + /* Size. */ + .long kernel_info_var_len_data - kernel_info + /* Size total. */ + .long kernel_info_end - kernel_info + +kernel_info_var_len_data: + /* Empty for time being... */ +kernel_info_end: diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S index 2c11c0f45d49..22dcecaaa898 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S @@ -567,6 +567,7 @@ pref_address: .quad LOAD_PHYSICAL_ADDR # preferred load addr init_size: .long INIT_SIZE # kernel initialization size handover_offset: .long 0 # Filled in by build.c +kernel_info_offset: .long 0 # Filled in by build.c # End of setup header ##################################################### diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c index a93d44e58f9c..55e669d29e54 100644 --- a/arch/x86/boot/tools/build.c +++ b/arch/x86/boot/tools/build.c @@ -56,6 +56,7 @@ u8 buf[SETUP_SECT_MAX*512]; unsigned long efi32_stub_entry; unsigned long efi64_stub_entry; unsigned long efi_pe_entry; +unsigned long kernel_info; unsigned long startup_64; /*----------------------------------------------------------------------*/ @@ -321,6 +322,7 @@ static void parse_zoffset(char *fname) PARSE_ZOFS(p, efi32_stub_entry); PARSE_ZOFS(p, efi64_stub_entry); PARSE_ZOFS(p, efi_pe_entry); + PARSE_ZOFS(p, kernel_info); PARSE_ZOFS(p, startup_64); p = strchr(p, '\n'); @@ -410,6 +412,9 @@ int main(int argc, char ** argv) efi_stub_entry_update(); + /* Update kernel_info offset. */ + put_unaligned_le32(kernel_info, &buf[0x268]); + crc = partial_crc32(buf, i, crc); if (fwrite(buf, 1, i, dest) != i) die("Writing setup failed"); diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h index c895df5482c5..a1ebcd7a991c 100644 --- a/arch/x86/include/uapi/asm/bootparam.h +++ b/arch/x86/include/uapi/asm/bootparam.h @@ -88,6 +88,7 @@ struct setup_header { __u64 pref_address; __u32 init_size; __u32 handover_offset; + __u32 kernel_info_offset; } __attribute__((packed)); struct sys_desc_table { -- 2.11.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C5A80CA9EB5 for ; Mon, 4 Nov 2019 15:15:35 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8C25020650 for ; Mon, 4 Nov 2019 15:15:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="dZr8UmC9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8C25020650 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iRe4Y-0005zO-5h; Mon, 04 Nov 2019 15:15:14 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iRe4W-0005zJ-Go for xen-devel@lists.xenproject.org; Mon, 04 Nov 2019 15:15:12 +0000 X-Inumbo-ID: e4854032-ff15-11e9-a181-12813bfff9fa Received: from aserp2120.oracle.com (unknown [141.146.126.78]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id e4854032-ff15-11e9-a181-12813bfff9fa; Mon, 04 Nov 2019 15:15:11 +0000 (UTC) Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id xA4FCRhY032276; Mon, 4 Nov 2019 15:14:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=corp-2019-08-05; bh=DKkR9B0pyfeJWw3qfq3SJ4xhN9wi6hAARN2vGh5YHPc=; b=dZr8UmC9gIfWcs0WK5ETtt3pPs4C337gYK4dgkfk/PWmbwAoDuprjLQ+ydN7VX+BCikP ZmMJhbt0JUsmLHUHeGMo0/md0JKo6gE1CrCqeHgBM2+Knq9Bm0JQWPDJkrhpsQN12Nup pkBZB9zvi8IxNVeRs0zbUW/jZb2ZeHThtlvl23jJw4cdY1Ok/mDcxVox+nK/PjmOFmpj gIhV75FerBpZScRaoOP8guER/kZ6Citk/H6RNM/yk5HANkQbssS2XVwcVsPsLLXS9K6X cjpe2bqWJHwc/3U7k+M3ohHaG7sShK+LoJyH/W9pY79J1FSxe+Ouakdry1iHcU56YnWk bg== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by aserp2120.oracle.com with ESMTP id 2w11rpr135-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Nov 2019 15:14:30 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.27/8.16.0.27) with SMTP id xA4FAARU019949; Mon, 4 Nov 2019 15:14:30 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 2w1kxmhhe0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Nov 2019 15:14:29 +0000 Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id xA4FELkw010740; Mon, 4 Nov 2019 15:14:25 GMT Received: from tomti.i.net-space.pl (/10.175.168.29) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 04 Nov 2019 07:14:21 -0800 From: Daniel Kiper To: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, xen-devel@lists.xenproject.org Date: Mon, 4 Nov 2019 16:13:52 +0100 Message-Id: <20191104151354.28145-2-daniel.kiper@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20191104151354.28145-1-daniel.kiper@oracle.com> References: <20191104151354.28145-1-daniel.kiper@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9431 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1911040151 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9431 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1911040151 Subject: [Xen-devel] [PATCH v5 1/3] x86/boot: Introduce the kernel_info X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: jgross@suse.com, eric.snowberg@oracle.com, ard.biesheuvel@linaro.org, konrad.wilk@oracle.com, corbet@lwn.net, peterz@infradead.org, ross.philipson@oracle.com, dave.hansen@linux.intel.com, mingo@redhat.com, bp@alien8.de, rdunlap@infradead.org, luto@kernel.org, hpa@zytor.com, kanth.ghatraju@oracle.com, boris.ostrovsky@oracle.com, tglx@linutronix.de MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" VGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgaGVhZGVycyBhcmUgYW5hbG9nb3VzIHRvIHRo ZSB2YXJpb3VzIGRhdGEKc2VjdGlvbnM6CgogIHNldHVwX2hlYWRlciA9IC5kYXRhCiAgYm9vdF9w YXJhbXMvc2V0dXBfZGF0YSA9IC5ic3MKCldoYXQgaXMgbWlzc2luZyBmcm9tIHRoZSBhYm92ZSBs aXN0PyBUaGF0J3MgcmlnaHQ6CgogIGtlcm5lbF9pbmZvID0gLnJvZGF0YQoKV2UgaGF2ZSBiZWVu IChhYil1c2luZyAuZGF0YSBmb3IgdGhpbmdzIHRoYXQgY291bGQgZ28gaW50byAucm9kYXRhIG9y IC5ic3MgZm9yCmEgbG9uZyB0aW1lLCBmb3IgbGFjayBvZiBhbHRlcm5hdGl2ZXMgYW5kIC0tIGVz cGVjaWFsbHkgZWFybHkgb24gLS0gaW5lcnRpYS4KQWxzbywgdGhlIEJJT1Mgc3R1YiBpcyByZXNw b25zaWJsZSBmb3IgY3JlYXRpbmcgYm9vdF9wYXJhbXMsIHNvIGl0IGlzbid0CmF2YWlsYWJsZSB0 byBhIEJJT1MtYmFzZWQgbG9hZGVyIChzZXR1cF9kYXRhIGlzLCB0aG91Z2gpLgoKc2V0dXBfaGVh ZGVyIGlzIHBlcm1hbmVudGx5IGxpbWl0ZWQgdG8gMTQ0IGJ5dGVzIGR1ZSB0byB0aGUgcmVhY2gg b2YgdGhlCjItYnl0ZSBqdW1wIGZpZWxkLCB3aGljaCBkb3VibGVzIGFzIGEgbGVuZ3RoIGZpZWxk IGZvciB0aGUgc3RydWN0dXJlLCBjb21iaW5lZAp3aXRoIHRoZSBzaXplIG9mIHRoZSAiaG9sZSIg aW4gc3RydWN0IGJvb3RfcGFyYW1zIHRoYXQgYSBwcm90ZWN0ZWQtbW9kZSBsb2FkZXIKb3IgdGhl IEJJT1Mgc3R1YiBoYXMgdG8gY29weSBpdCBpbnRvLiBJdCBpcyBjdXJyZW50bHkgMTE5IGJ5dGVz IGxvbmcsIHdoaWNoCmxlYXZlcyB1cyB3aXRoIDI1IHZlcnkgcHJlY2lvdXMgYnl0ZXMuIFRoaXMg aXNuJ3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGZpeGVkCndpdGhvdXQgcmV2aXNpbmcgdGhlIGJv b3QgcHJvdG9jb2wgZW50aXJlbHksIGJyZWFraW5nIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgoK Ym9vdF9wYXJhbXMgcHJvcGVyIGlzIGxpbWl0ZWQgdG8gNDA5NiBieXRlcywgYnV0IGNhbiBiZSBh cmJpdHJhcmlseSBleHRlbmRlZApieSBhZGRpbmcgc2V0dXBfZGF0YSBlbnRyaWVzLiBJdCBjYW5u b3QgYmUgdXNlZCB0byBjb21tdW5pY2F0ZSBwcm9wZXJ0aWVzIG9mCnRoZSBrZXJuZWwgaW1hZ2Us IGJlY2F1c2UgaXQgaXMgLmJzcyBhbmQgaGFzIG5vIGltYWdlLXByb3ZpZGVkIGNvbnRlbnQuCgpr ZXJuZWxfaW5mbyBzb2x2ZXMgdGhpcyBieSBwcm92aWRpbmcgYW4gZXh0ZW5zaWJsZSBwbGFjZSBm b3IgaW5mb3JtYXRpb24gYWJvdXQKdGhlIGtlcm5lbCBpbWFnZS4gSXQgaXMgcmVhZG9ubHksIGJl Y2F1c2UgdGhlIGtlcm5lbCBjYW5ub3QgcmVseSBvbiBhCmJvb3Rsb2FkZXIgY29weWluZyBpdHMg Y29udGVudHMgYW55d2hlcmUsIGJ1dCB0aGF0IGlzIE9LOyBpZiBpdCBiZWNvbWVzCm5lY2Vzc2Fy eSBpdCBjYW4gc3RpbGwgY29udGFpbiBkYXRhIGl0ZW1zIHRoYXQgYW4gZW5hYmxlZCBib290bG9h ZGVyIHdvdWxkIGJlCmV4cGVjdGVkIHRvIGNvcHkgaW50byBhIHNldHVwX2RhdGEgY2h1bmsuCgpU aGlzIHBhdGNoIGRvZXMgbm90IGJ1bXAgc2V0dXBfaGVhZGVyIHZlcnNpb24gaW4gYXJjaC94ODYv Ym9vdC9oZWFkZXIuUwpiZWNhdXNlIGl0IHdpbGwgYmUgZm9sbG93ZWQgYnkgYWRkaXRpb25hbCBj aGFuZ2VzIGNvbWluZyBpbnRvIHRoZQpMaW51eC94ODYgYm9vdCBwcm90b2NvbC4KClN1Z2dlc3Rl ZC1ieTogSC4gUGV0ZXIgQW52aW4gKEludGVsKSA8aHBhQHp5dG9yLmNvbT4KU2lnbmVkLW9mZi1i eTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEtv bnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6 IFJvc3MgUGhpbGlwc29uIDxyb3NzLnBoaWxpcHNvbkBvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTog SC4gUGV0ZXIgQW52aW4gKEludGVsKSA8aHBhQHp5dG9yLmNvbT4KLS0tCnY0IC0gc3VnZ2VzdGlv bnMvZml4ZXM6CiAgIC0gaW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbgogICAgIChzdWdnZXN0ZWQg YnkgUmFuZHkgRHVubGFwIGFuZCBLb25yYWQgUnplc3p1dGVrIFdpbGspLgoKdjMgLSBzdWdnZXN0 aW9ucy9maXhlczoKICAgLSBzcGxpdCBrZXJuZWxfaW5mbyBkYXRhIGludG8gZml4ZWQgYW5kIHZh cmlhYmxlIHNpemVkIHJlZ2lvbnMsCiAgICAgKHN1Z2dlc3RlZCBieSBILiBQZXRlciBBbnZpbiks CiAgIC0gY2hhbmdlIGtlcm5lbF9pbmZvLmhlYWRlciB2YWx1ZSB0byAiTFRvUCIgKDB4NTA2ZjU0 NGMpLAogICAgIChzdWdnZXN0ZWQgYnkgSC4gUGV0ZXIgQW52aW4pLAogICAtIGltcHJvdmUgdGhl IGNvbW1lbnRzLAogICAtIGltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24uCgp2MiAtIHN1Z2dlc3Rp b25zL2ZpeGVzOgogICAtIHJlbmFtZSBzZXR1cF9oZWFkZXIyIHRvIGtlcm5lbF9pbmZvLAogICAg IChzdWdnZXN0ZWQgYnkgSC4gUGV0ZXIgQW52aW4pLAogICAtIGNoYW5nZSBrZXJuZWxfaW5mby5o ZWFkZXIgdmFsdWUgdG8gIkluZk8iICgweDRmNjY2ZTQ5KSwKICAgLSBuZXcga2VybmVsX2luZm8g ZGVzY3JpcHRpb24gaW4gRG9jdW1lbnRhdGlvbi94ODYvYm9vdC5yc3QsCiAgICAgKHN1Z2dlc3Rl ZCBieSBILiBQZXRlciBBbnZpbiksCiAgIC0gZHJvcCBrZXJuZWxfaW5mb19vZmZzZXRfdXBkYXRl KCkgYXMgYW4gb3ZlcmtpbGwgYW5kCiAgICAgdXBkYXRlIGtlcm5lbF9pbmZvIG9mZnNldCBkaXJl Y3RseSBmcm9tIG1haW4oKSwKICAgICAoc3VnZ2VzdGVkIGJ5IEVyaWMgU25vd2JlcmcpLAogICAt IG5ldyBjb21taXQgbWVzc2FnZQogICAgIChzdWdnZXN0ZWQgYnkgSC4gUGV0ZXIgQW52aW4pLAog ICAtIGZpeCBzb21lIGNvbW1pdCBtZXNzYWdlIG1pc3NwZWxsaW5ncwogICAgIChzdWdnZXN0ZWQg YnkgRXJpYyBTbm93YmVyZykuCi0tLQogRG9jdW1lbnRhdGlvbi94ODYvYm9vdC5yc3QgICAgICAg ICAgICAgfCAxMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9i b290L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQogYXJjaC94ODYvYm9vdC9jb21w cmVzc2VkL01ha2VmaWxlICAgICAgfCAgIDQgKy0KIGFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9r ZXJuZWxfaW5mby5TIHwgIDE3ICsrKysrCiBhcmNoL3g4Ni9ib290L2hlYWRlci5TICAgICAgICAg ICAgICAgICB8ICAgMSArCiBhcmNoL3g4Ni9ib290L3Rvb2xzL2J1aWxkLmMgICAgICAgICAgICB8 ICAgNSArKwogYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCAgfCAgIDEgKwog NyBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2VybmVsX2luZm8uUwoKZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veDg2L2Jvb3QucnN0IGIvRG9jdW1lbnRhdGlvbi94ODYv Ym9vdC5yc3QKaW5kZXggMDhhMmYxMDBjMGU2Li5jNjBmYWZkYTk0MjcgMTAwNjQ0Ci0tLSBhL0Rv Y3VtZW50YXRpb24veDg2L2Jvb3QucnN0CisrKyBiL0RvY3VtZW50YXRpb24veDg2L2Jvb3QucnN0 CkBAIC02OCw4ICs2OCwyNSBAQCBQcm90b2NvbCAyLjEyCShLZXJuZWwgMy44KSBBZGRlZCB0aGUg eGxvYWRmbGFncyBmaWVsZCBhbmQgZXh0ZW5zaW9uIGZpZWxkcwogUHJvdG9jb2wgMi4xMwkoS2Vy bmVsIDMuMTQpIFN1cHBvcnQgMzItIGFuZCA2NC1iaXQgZmxhZ3MgYmVpbmcgc2V0IGluCiAJCXhs b2FkZmxhZ3MgdG8gc3VwcG9ydCBib290aW5nIGEgNjQtYml0IGtlcm5lbCBmcm9tIDMyLWJpdAog CQlFRkkKKworUHJvdG9jb2wgMi4xNDoJQlVSTlQgQlkgSU5DT1JSRUNUIENPTU1JVCBhZTdlMTIz OGU2OGYyYTQ3MmExMjU2NzNhYjUwNmQ0OTE1OGMxODg5CisJCSh4ODYvYm9vdDogQWRkIEFDUEkg UlNEUCBhZGRyZXNzIHRvIHNldHVwX2hlYWRlcikKKwkJRE8gTk9UIFVTRSEhISBBU1NVTUUgU0FN RSBBUyAyLjEzLgorCitQcm90b2NvbCAyLjE1OgkoS2VybmVsIDUuNSkgQWRkZWQgdGhlIGtlcm5l bF9pbmZvLgogPT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorLi4gbm90ZTo6CisgICAgIFRoZSBwcm90b2Nv bCB2ZXJzaW9uIG51bWJlciBzaG91bGQgYmUgY2hhbmdlZCBvbmx5IGlmIHRoZSBzZXR1cCBoZWFk ZXIKKyAgICAgaXMgY2hhbmdlZC4gVGhlcmUgaXMgbm8gbmVlZCB0byB1cGRhdGUgdGhlIHZlcnNp b24gbnVtYmVyIGlmIGJvb3RfcGFyYW1zCisgICAgIG9yIGtlcm5lbF9pbmZvIGFyZSBjaGFuZ2Vk LiBBZGRpdGlvbmFsbHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZQorICAgICB4bG9hZGZsYWdz IChpbiB0aGlzIGNhc2UgdGhlIHByb3RvY29sIHZlcnNpb24gbnVtYmVyIHNob3VsZCBub3QgYmUK KyAgICAgdXBkYXRlZCBlaXRoZXIpIG9yIGtlcm5lbF9pbmZvIHRvIGNvbW11bmljYXRlIHN1cHBv cnRlZCBMaW51eCBrZXJuZWwKKyAgICAgZmVhdHVyZXMgdG8gdGhlIGJvb3QgbG9hZGVyLiBEdWUg dG8gdmVyeSBsaW1pdGVkIHNwYWNlIGF2YWlsYWJsZSBpbgorICAgICB0aGUgb3JpZ2luYWwgc2V0 dXAgaGVhZGVyIGV2ZXJ5IHVwZGF0ZSB0byBpdCBzaG91bGQgYmUgY29uc2lkZXJlZAorICAgICB3 aXRoIGdyZWF0IGNhcmUuIFN0YXJ0aW5nIGZyb20gdGhlIHByb3RvY29sIDIuMTUgdGhlIHByaW1h cnkgd2F5IHRvCisgICAgIGNvbW11bmljYXRlIHRoaW5ncyB0byB0aGUgYm9vdCBsb2FkZXIgaXMg dGhlIGtlcm5lbF9pbmZvLgorCiAKIE1lbW9yeSBMYXlvdXQKID09PT09PT09PT09PT0KQEAgLTIw Nyw2ICsyMjQsNyBAQCBPZmZzZXQvU2l6ZQlQcm90bwkJTmFtZQkJCU1lYW5pbmcKIDAyNTgvOAkJ Mi4xMCsJCXByZWZfYWRkcmVzcwkJUHJlZmVycmVkIGxvYWRpbmcgYWRkcmVzcwogMDI2MC80CQky LjEwKwkJaW5pdF9zaXplCQlMaW5lYXIgbWVtb3J5IHJlcXVpcmVkIGR1cmluZyBpbml0aWFsaXph dGlvbgogMDI2NC80CQkyLjExKwkJaGFuZG92ZXJfb2Zmc2V0CQlPZmZzZXQgb2YgaGFuZG92ZXIg ZW50cnkgcG9pbnQKKzAyNjgvNAkJMi4xNSsJCWtlcm5lbF9pbmZvX29mZnNldAlPZmZzZXQgb2Yg dGhlIGtlcm5lbF9pbmZvCiA9PT09PT09PT09PQk9PT09PT09PQk9PT09PT09PT09PT09PT09PT09 PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbm90 ZTo6CkBAIC04NTUsNiArODczLDExNCBAQCBPZmZzZXQvc2l6ZToJMHgyNjQvNAogCiAgIFNlZSBF RkkgSEFORE9WRVIgUFJPVE9DT0wgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KIAorPT09PT09PT09 PT09CT09PT09PT09PT09PT09PT09PQorRmllbGQgbmFtZToJa2VybmVsX2luZm9fb2Zmc2V0CitU eXBlOgkJcmVhZAorT2Zmc2V0L3NpemU6CTB4MjY4LzQKK1Byb3RvY29sOgkyLjE1KworPT09PT09 PT09PT09CT09PT09PT09PT09PT09PT09PQorCisgIFRoaXMgZmllbGQgaXMgdGhlIG9mZnNldCBm cm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGtlcm5lbCBpbWFnZSB0byB0aGUKKyAga2VybmVsX2lu Zm8uIFRoZSBrZXJuZWxfaW5mbyBzdHJ1Y3R1cmUgaXMgZW1iZWRkZWQgaW4gdGhlIExpbnV4IGlt YWdlCisgIGluIHRoZSB1bmNvbXByZXNzZWQgcHJvdGVjdGVkIG1vZGUgcmVnaW9uLgorCisKK1Ro ZSBrZXJuZWxfaW5mbworPT09PT09PT09PT09PT09CisKK1RoZSByZWxhdGlvbnNoaXBzIGJldHdl ZW4gdGhlIGhlYWRlcnMgYXJlIGFuYWxvZ291cyB0byB0aGUgdmFyaW91cyBkYXRhCitzZWN0aW9u czoKKworICBzZXR1cF9oZWFkZXIgPSAuZGF0YQorICBib290X3BhcmFtcy9zZXR1cF9kYXRhID0g LmJzcworCitXaGF0IGlzIG1pc3NpbmcgZnJvbSB0aGUgYWJvdmUgbGlzdD8gVGhhdCdzIHJpZ2h0 OgorCisgIGtlcm5lbF9pbmZvID0gLnJvZGF0YQorCitXZSBoYXZlIGJlZW4gKGFiKXVzaW5nIC5k YXRhIGZvciB0aGluZ3MgdGhhdCBjb3VsZCBnbyBpbnRvIC5yb2RhdGEgb3IgLmJzcyBmb3IKK2Eg bG9uZyB0aW1lLCBmb3IgbGFjayBvZiBhbHRlcm5hdGl2ZXMgYW5kIC0tIGVzcGVjaWFsbHkgZWFy bHkgb24gLS0gaW5lcnRpYS4KK0Fsc28sIHRoZSBCSU9TIHN0dWIgaXMgcmVzcG9uc2libGUgZm9y IGNyZWF0aW5nIGJvb3RfcGFyYW1zLCBzbyBpdCBpc24ndAorYXZhaWxhYmxlIHRvIGEgQklPUy1i YXNlZCBsb2FkZXIgKHNldHVwX2RhdGEgaXMsIHRob3VnaCkuCisKK3NldHVwX2hlYWRlciBpcyBw ZXJtYW5lbnRseSBsaW1pdGVkIHRvIDE0NCBieXRlcyBkdWUgdG8gdGhlIHJlYWNoIG9mIHRoZQor Mi1ieXRlIGp1bXAgZmllbGQsIHdoaWNoIGRvdWJsZXMgYXMgYSBsZW5ndGggZmllbGQgZm9yIHRo ZSBzdHJ1Y3R1cmUsIGNvbWJpbmVkCit3aXRoIHRoZSBzaXplIG9mIHRoZSAiaG9sZSIgaW4gc3Ry dWN0IGJvb3RfcGFyYW1zIHRoYXQgYSBwcm90ZWN0ZWQtbW9kZSBsb2FkZXIKK29yIHRoZSBCSU9T IHN0dWIgaGFzIHRvIGNvcHkgaXQgaW50by4gSXQgaXMgY3VycmVudGx5IDExOSBieXRlcyBsb25n LCB3aGljaAorbGVhdmVzIHVzIHdpdGggMjUgdmVyeSBwcmVjaW91cyBieXRlcy4gVGhpcyBpc24n dCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZml4ZWQKK3dpdGhvdXQgcmV2aXNpbmcgdGhlIGJvb3Qg cHJvdG9jb2wgZW50aXJlbHksIGJyZWFraW5nIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorCiti b290X3BhcmFtcyBwcm9wZXIgaXMgbGltaXRlZCB0byA0MDk2IGJ5dGVzLCBidXQgY2FuIGJlIGFy Yml0cmFyaWx5IGV4dGVuZGVkCitieSBhZGRpbmcgc2V0dXBfZGF0YSBlbnRyaWVzLiBJdCBjYW5u b3QgYmUgdXNlZCB0byBjb21tdW5pY2F0ZSBwcm9wZXJ0aWVzIG9mCit0aGUga2VybmVsIGltYWdl LCBiZWNhdXNlIGl0IGlzIC5ic3MgYW5kIGhhcyBubyBpbWFnZS1wcm92aWRlZCBjb250ZW50Lgor CitrZXJuZWxfaW5mbyBzb2x2ZXMgdGhpcyBieSBwcm92aWRpbmcgYW4gZXh0ZW5zaWJsZSBwbGFj ZSBmb3IgaW5mb3JtYXRpb24gYWJvdXQKK3RoZSBrZXJuZWwgaW1hZ2UuIEl0IGlzIHJlYWRvbmx5 LCBiZWNhdXNlIHRoZSBrZXJuZWwgY2Fubm90IHJlbHkgb24gYQorYm9vdGxvYWRlciBjb3B5aW5n IGl0cyBjb250ZW50cyBhbnl3aGVyZSwgYnV0IHRoYXQgaXMgT0s7IGlmIGl0IGJlY29tZXMKK25l Y2Vzc2FyeSBpdCBjYW4gc3RpbGwgY29udGFpbiBkYXRhIGl0ZW1zIHRoYXQgYW4gZW5hYmxlZCBi b290bG9hZGVyIHdvdWxkIGJlCitleHBlY3RlZCB0byBjb3B5IGludG8gYSBzZXR1cF9kYXRhIGNo dW5rLgorCitBbGwga2VybmVsX2luZm8gZGF0YSBzaG91bGQgYmUgcGFydCBvZiB0aGlzIHN0cnVj dHVyZS4gRml4ZWQgc2l6ZSBkYXRhIGhhdmUgdG8KK2JlIHB1dCBiZWZvcmUga2VybmVsX2luZm9f dmFyX2xlbl9kYXRhIGxhYmVsLiBWYXJpYWJsZSBzaXplIGRhdGEgaGF2ZSB0byBiZSBwdXQKK2Fm dGVyIGtlcm5lbF9pbmZvX3Zhcl9sZW5fZGF0YSBsYWJlbC4gRWFjaCBjaHVuayBvZiB2YXJpYWJs ZSBzaXplIGRhdGEgaGFzIHRvCitiZSBwcmVmaXhlZCB3aXRoIGhlYWRlci9tYWdpYyBhbmQgaXRz IHNpemUsIGUuZy46CisKKyAga2VybmVsX2luZm86CisgICAgICAgICAgLmFzY2lpICAiTFRvUCIg ICAgICAgICAgLyogSGVhZGVyLCBMaW51eCB0b3AgKHN0cnVjdHVyZSkuICovCisgICAgICAgICAg LmxvbmcgICBrZXJuZWxfaW5mb192YXJfbGVuX2RhdGEgLSBrZXJuZWxfaW5mbworICAgICAgICAg IC5sb25nICAga2VybmVsX2luZm9fZW5kIC0ga2VybmVsX2luZm8KKyAgICAgICAgICAubG9uZyAg IDB4MDEyMzQ1NjcgICAgICAvKiBTb21lIGZpeGVkIHNpemUgZGF0YSBmb3IgdGhlIGJvb3Rsb2Fk ZXJzLiAqLworICBrZXJuZWxfaW5mb192YXJfbGVuX2RhdGE6CisgIGV4YW1wbGVfc3RydWN0OiAg ICAgICAgICAgICAgICAgLyogU29tZSB2YXJpYWJsZSBzaXplIGRhdGEgZm9yIHRoZSBib290bG9h ZGVycy4gKi8KKyAgICAgICAgICAuYXNjaWkgICIwMTIzIiAgICAgICAgICAvKiBIZWFkZXIvTWFn aWMuICovCisgICAgICAgICAgLmxvbmcgICBleGFtcGxlX3N0cnVjdF9lbmQgLSBleGFtcGxlX3N0 cnVjdAorICAgICAgICAgIC5hc2NpaSAgIlN0cnVjdCIKKyAgICAgICAgICAubG9uZyAgIDB4ODkw MTIzNDUKKyAgZXhhbXBsZV9zdHJ1Y3RfZW5kOgorICBleGFtcGxlX3N0cmluZ3M6ICAgICAgICAg ICAgICAgIC8qIFNvbWUgdmFyaWFibGUgc2l6ZSBkYXRhIGZvciB0aGUgYm9vdGxvYWRlcnMuICov CisgICAgICAgICAgLmFzY2lpICAiQUJDRCIgICAgICAgICAgLyogSGVhZGVyL01hZ2ljLiAqLwor ICAgICAgICAgIC5sb25nICAgZXhhbXBsZV9zdHJpbmdzX2VuZCAtIGV4YW1wbGVfc3RyaW5ncwor ICAgICAgICAgIC5hc2NpeiAgIlN0cmluZ18wIgorICAgICAgICAgIC5hc2NpeiAgIlN0cmluZ18x IgorICBleGFtcGxlX3N0cmluZ3NfZW5kOgorICBrZXJuZWxfaW5mb19lbmQ6CisKK1RoaXMgd2F5 IHRoZSBrZXJuZWxfaW5mbyBpcyBzZWxmLWNvbnRhaW5lZCBibG9iLgorCisuLiBub3RlOjoKKyAg ICAgRWFjaCB2YXJpYWJsZSBzaXplIGRhdGEgaGVhZGVyL21hZ2ljIGNhbiBiZSBhbnkgNC1jaGFy YWN0ZXIgc3RyaW5nLAorICAgICB3aXRob3V0IFwwIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywg d2hpY2ggZG9lcyBub3QgY29sbGlkZSB3aXRoCisgICAgIGV4aXN0aW5nIHZhcmlhYmxlIGxlbmd0 aCBkYXRhIGhlYWRlcnMvbWFnaWNzLgorCisKK0RldGFpbHMgb2YgdGhlIGtlcm5lbF9pbmZvIEZp ZWxkcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKz09PT09PT09PT09PQk9 PT09PT09PQorRmllbGQgbmFtZToJaGVhZGVyCitPZmZzZXQvc2l6ZToJMHgwMDAwLzQKKz09PT09 PT09PT09PQk9PT09PT09PQorCisgIENvbnRhaW5zIHRoZSBtYWdpYyBudW1iZXIgIkxUb1AiICgw eDUwNmY1NDRjKS4KKworPT09PT09PT09PT09CT09PT09PT09CitGaWVsZCBuYW1lOglzaXplCitP ZmZzZXQvc2l6ZToJMHgwMDA0LzQKKz09PT09PT09PT09PQk9PT09PT09PQorCisgIFRoaXMgZmll bGQgY29udGFpbnMgdGhlIHNpemUgb2YgdGhlIGtlcm5lbF9pbmZvIGluY2x1ZGluZyBrZXJuZWxf aW5mby5oZWFkZXIuCisgIEl0IGRvZXMgbm90IGNvdW50IGtlcm5lbF9pbmZvLmtlcm5lbF9pbmZv X3Zhcl9sZW5fZGF0YSBzaXplLiBUaGlzIGZpZWxkIHNob3VsZCBiZQorICB1c2VkIGJ5IHRoZSBi b290bG9hZGVycyB0byBkZXRlY3Qgc3VwcG9ydGVkIGZpeGVkIHNpemUgZmllbGRzIGluIHRoZSBr ZXJuZWxfaW5mbworICBhbmQgYmVnaW5uaW5nIG9mIGtlcm5lbF9pbmZvLmtlcm5lbF9pbmZvX3Zh cl9sZW5fZGF0YS4KKworPT09PT09PT09PT09CT09PT09PT09CitGaWVsZCBuYW1lOglzaXplX3Rv dGFsCitPZmZzZXQvc2l6ZToJMHgwMDA4LzQKKz09PT09PT09PT09PQk9PT09PT09PQorCisgIFRo aXMgZmllbGQgY29udGFpbnMgdGhlIHNpemUgb2YgdGhlIGtlcm5lbF9pbmZvIGluY2x1ZGluZyBr ZXJuZWxfaW5mby5oZWFkZXIKKyAgYW5kIGtlcm5lbF9pbmZvLmtlcm5lbF9pbmZvX3Zhcl9sZW5f ZGF0YS4KKwogCiBUaGUgSW1hZ2UgQ2hlY2tzdW0KID09PT09PT09PT09PT09PT09PQpkaWZmIC0t Z2l0IGEvYXJjaC94ODYvYm9vdC9NYWtlZmlsZSBiL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUKaW5k ZXggZTI4MzliNWMyNDZjLi5jMzBhOWI2NDJhODYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3Qv TWFrZWZpbGUKKysrIGIvYXJjaC94ODYvYm9vdC9NYWtlZmlsZQpAQCAtODcsNyArODcsNyBAQCAk KG9iaikvdm1saW51eC5iaW46ICQob2JqKS9jb21wcmVzc2VkL3ZtbGludXggRk9SQ0UKIAogU0VU VVBfT0JKUyA9ICQoYWRkcHJlZml4ICQob2JqKS8sJChzZXR1cC15KSkKIAotc2VkLXpvZmZzZXQg Oj0gLWUgJ3MvXlwoWzAtOWEtZkEtRl0qXCkgW0FCQ0RHUlNUVlddIFwoc3RhcnR1cF8zMlx8c3Rh cnR1cF82NFx8ZWZpMzJfc3R1Yl9lbnRyeVx8ZWZpNjRfc3R1Yl9lbnRyeVx8ZWZpX3BlX2VudHJ5 XHxpbnB1dF9kYXRhXHxfZW5kXHxfZWhlYWRcfF90ZXh0XHx6Xy4qXCkkJC9cI2RlZmluZSBaT19c MiAweFwxL3AnCitzZWQtem9mZnNldCA6PSAtZSAncy9eXChbMC05YS1mQS1GXSpcKSBbQUJDREdS U1RWV10gXChzdGFydHVwXzMyXHxzdGFydHVwXzY0XHxlZmkzMl9zdHViX2VudHJ5XHxlZmk2NF9z dHViX2VudHJ5XHxlZmlfcGVfZW50cnlcfGlucHV0X2RhdGFcfGtlcm5lbF9pbmZvXHxfZW5kXHxf ZWhlYWRcfF90ZXh0XHx6Xy4qXCkkJC9cI2RlZmluZSBaT19cMiAweFwxL3AnCiAKIHF1aWV0X2Nt ZF96b2Zmc2V0ID0gWk9GRlNFVCAkQAogICAgICAgY21kX3pvZmZzZXQgPSAkKE5NKSAkPCB8IHNl ZCAtbiAkKHNlZC16b2Zmc2V0KSA+ICRACmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9ib290L2NvbXBy ZXNzZWQvTWFrZWZpbGUgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKaW5kZXgg NmI4NGFmZGQ3NTM4Li5mYWQzYjE4ZTJjYzMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29t cHJlc3NlZC9NYWtlZmlsZQorKysgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUK QEAgLTcyLDggKzcyLDggQEAgJChvYmopLy4uL3ZvZmZzZXQuaDogdm1saW51eCBGT1JDRQogCiAk KG9iaikvbWlzYy5vOiAkKG9iaikvLi4vdm9mZnNldC5oCiAKLXZtbGludXgtb2Jqcy15IDo9ICQo b2JqKS92bWxpbnV4LmxkcyAkKG9iaikvaGVhZF8kKEJJVFMpLm8gJChvYmopL21pc2MubyBcCi0J JChvYmopL3N0cmluZy5vICQob2JqKS9jbWRsaW5lLm8gJChvYmopL2Vycm9yLm8gXAordm1saW51 eC1vYmpzLXkgOj0gJChvYmopL3ZtbGludXgubGRzICQob2JqKS9rZXJuZWxfaW5mby5vICQob2Jq KS9oZWFkXyQoQklUUykubyBcCisJJChvYmopL21pc2MubyAkKG9iaikvc3RyaW5nLm8gJChvYmop L2NtZGxpbmUubyAkKG9iaikvZXJyb3IubyBcCiAJJChvYmopL3BpZ2d5Lm8gJChvYmopL2NwdWZs YWdzLm8KIAogdm1saW51eC1vYmpzLSQoQ09ORklHX0VBUkxZX1BSSU5USykgKz0gJChvYmopL2Vh cmx5X3NlcmlhbF9jb25zb2xlLm8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3Nl ZC9rZXJuZWxfaW5mby5TIGIvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2tlcm5lbF9pbmZvLlMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZWE2ZjZlM2ZlZWYKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2VybmVsX2luZm8uUwpA QCAtMCwwICsxLDE3IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwor CisJLnNlY3Rpb24gIi5yb2RhdGEua2VybmVsX2luZm8iLCAiYSIKKworCS5nbG9iYWwga2VybmVs X2luZm8KKwora2VybmVsX2luZm86CisJLyogSGVhZGVyLCBMaW51eCB0b3AgKHN0cnVjdHVyZSku ICovCisJLmFzY2lpCSJMVG9QIgorCS8qIFNpemUuICovCisJLmxvbmcJa2VybmVsX2luZm9fdmFy X2xlbl9kYXRhIC0ga2VybmVsX2luZm8KKwkvKiBTaXplIHRvdGFsLiAqLworCS5sb25nCWtlcm5l bF9pbmZvX2VuZCAtIGtlcm5lbF9pbmZvCisKK2tlcm5lbF9pbmZvX3Zhcl9sZW5fZGF0YToKKwkv KiBFbXB0eSBmb3IgdGltZSBiZWluZy4uLiAqLwora2VybmVsX2luZm9fZW5kOgpkaWZmIC0tZ2l0 IGEvYXJjaC94ODYvYm9vdC9oZWFkZXIuUyBiL2FyY2gveDg2L2Jvb3QvaGVhZGVyLlMKaW5kZXgg MmMxMWMwZjQ1ZDQ5Li4yMmRjZWNhYWE4OTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvaGVh ZGVyLlMKKysrIGIvYXJjaC94ODYvYm9vdC9oZWFkZXIuUwpAQCAtNTY3LDYgKzU2Nyw3IEBAIHBy ZWZfYWRkcmVzczoJCS5xdWFkIExPQURfUEhZU0lDQUxfQUREUgkjIHByZWZlcnJlZCBsb2FkIGFk ZHIKIAogaW5pdF9zaXplOgkJLmxvbmcgSU5JVF9TSVpFCQkjIGtlcm5lbCBpbml0aWFsaXphdGlv biBzaXplCiBoYW5kb3Zlcl9vZmZzZXQ6CS5sb25nIDAJCQkjIEZpbGxlZCBpbiBieSBidWlsZC5j CitrZXJuZWxfaW5mb19vZmZzZXQ6CS5sb25nIDAJCQkjIEZpbGxlZCBpbiBieSBidWlsZC5jCiAK ICMgRW5kIG9mIHNldHVwIGhlYWRlciAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9ib290L3Rvb2xzL2J1 aWxkLmMgYi9hcmNoL3g4Ni9ib290L3Rvb2xzL2J1aWxkLmMKaW5kZXggYTkzZDQ0ZTU4ZjljLi41 NWU2NjlkMjllNTQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvdG9vbHMvYnVpbGQuYworKysg Yi9hcmNoL3g4Ni9ib290L3Rvb2xzL2J1aWxkLmMKQEAgLTU2LDYgKzU2LDcgQEAgdTggYnVmW1NF VFVQX1NFQ1RfTUFYKjUxMl07CiB1bnNpZ25lZCBsb25nIGVmaTMyX3N0dWJfZW50cnk7CiB1bnNp Z25lZCBsb25nIGVmaTY0X3N0dWJfZW50cnk7CiB1bnNpZ25lZCBsb25nIGVmaV9wZV9lbnRyeTsK K3Vuc2lnbmVkIGxvbmcga2VybmVsX2luZm87CiB1bnNpZ25lZCBsb25nIHN0YXJ0dXBfNjQ7CiAK IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSovCkBAIC0zMjEsNiArMzIyLDcgQEAgc3RhdGljIHZvaWQgcGFyc2Vf em9mZnNldChjaGFyICpmbmFtZSkKIAkJUEFSU0VfWk9GUyhwLCBlZmkzMl9zdHViX2VudHJ5KTsK IAkJUEFSU0VfWk9GUyhwLCBlZmk2NF9zdHViX2VudHJ5KTsKIAkJUEFSU0VfWk9GUyhwLCBlZmlf cGVfZW50cnkpOworCQlQQVJTRV9aT0ZTKHAsIGtlcm5lbF9pbmZvKTsKIAkJUEFSU0VfWk9GUyhw LCBzdGFydHVwXzY0KTsKIAogCQlwID0gc3RyY2hyKHAsICdcbicpOwpAQCAtNDEwLDYgKzQxMiw5 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCiAKIAllZmlfc3R1Yl9lbnRyeV91 cGRhdGUoKTsKIAorCS8qIFVwZGF0ZSBrZXJuZWxfaW5mbyBvZmZzZXQuICovCisJcHV0X3VuYWxp Z25lZF9sZTMyKGtlcm5lbF9pbmZvLCAmYnVmWzB4MjY4XSk7CisKIAljcmMgPSBwYXJ0aWFsX2Ny YzMyKGJ1ZiwgaSwgY3JjKTsKIAlpZiAoZndyaXRlKGJ1ZiwgMSwgaSwgZGVzdCkgIT0gaSkKIAkJ ZGllKCJXcml0aW5nIHNldHVwIGZhaWxlZCIpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVk ZS91YXBpL2FzbS9ib290cGFyYW0uaCBiL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBh cmFtLmgKaW5kZXggYzg5NWRmNTQ4MmM1Li5hMWViY2Q3YTk5MWMgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS91 YXBpL2FzbS9ib290cGFyYW0uaApAQCAtODgsNiArODgsNyBAQCBzdHJ1Y3Qgc2V0dXBfaGVhZGVy IHsKIAlfX3U2NAlwcmVmX2FkZHJlc3M7CiAJX191MzIJaW5pdF9zaXplOwogCV9fdTMyCWhhbmRv dmVyX29mZnNldDsKKwlfX3UzMglrZXJuZWxfaW5mb19vZmZzZXQ7CiB9IF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogCiBzdHJ1Y3Qgc3lzX2Rlc2NfdGFibGUgewotLSAKMi4xMS4wCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==