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=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 19490C47404 for ; Wed, 9 Oct 2019 10:55:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C835620B7C for ; Wed, 9 Oct 2019 10:55:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="IlPC+cnD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730659AbfJIKzL (ORCPT ); Wed, 9 Oct 2019 06:55:11 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:49852 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727035AbfJIKzJ (ORCPT ); Wed, 9 Oct 2019 06:55:09 -0400 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 x99An4Tu040554; Wed, 9 Oct 2019 10:54:25 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=/rwd8ihQ7AMV73wLIi8nYy2/ykfXtIeeP/WjUNs+InA=; b=IlPC+cnDTFEwEeWrvyRpMZLf321odHNzuBb4hwbiebKOzo5DFGW7EiS/ivYISwa04fQ3 Pj6i7+Sfl15LN/4aemsci0v/ZH1ZWK6sRR+FsZhDv54pcEepdNartEbnj1uqsT6O7gzB HtcHktoyU5kPVP7Q381SHXyFGAO0gqUTzU4C+RKqGv3Dp8BfYr5/agxLOsA/x2VlKBy4 cfjXlfkVKkUMUvArWNhizT+Gjn6CkzeFnaINp6UarIFpRt+kwsIZji+ZNjVnqbmi273y N0KAwa4abneRV/fGNakFK8lHEd/qdMFwBpSXCY3sZf+vgC0VsJGGr+sBraadGb6YhsP6 zg== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 2vek4qka7p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 09 Oct 2019 10:54:25 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x99Amesl162811; Wed, 9 Oct 2019 10:54:24 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3020.oracle.com with ESMTP id 2vh5caap73-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 09 Oct 2019 10:54:24 +0000 Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x99AsKD9031138; Wed, 9 Oct 2019 10:54:21 GMT Received: from tomti.i.net-space.pl (/10.175.167.68) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 09 Oct 2019 03:54:20 -0700 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, konrad.wilk@oracle.com, mingo@redhat.com, ross.philipson@oracle.com, tglx@linutronix.de Subject: [PATCH v3 1/3] x86/boot: Introduce the kernel_info Date: Wed, 9 Oct 2019 12:53:56 +0200 Message-Id: <20191009105358.32256-2-daniel.kiper@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20191009105358.32256-1-daniel.kiper@oracle.com> References: <20191009105358.32256-1-daniel.kiper@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9404 signatures=668684 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-1910090101 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9404 signatures=668684 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-1910090101 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 Signed-off-by: Daniel Kiper Reviewed-by: Konrad Rzeszutek Wilk Reviewed-by: Ross Philipson --- 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 | 121 +++++++++++++++++++++++++++++++++ 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, 148 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..d5323a39f5e3 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,109 @@ 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. It 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 +behind 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 "EsTT" /* 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 "EsTs" /* 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. + + +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 16357ECE58E for ; Wed, 9 Oct 2019 10:55:14 +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 D166320B7C for ; Wed, 9 Oct 2019 10:55:13 +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="IlPC+cnD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D166320B7C 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 1iI9cT-0004be-Nu; Wed, 09 Oct 2019 10:55:01 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iI9cR-0004bS-Qz for xen-devel@lists.xenproject.org; Wed, 09 Oct 2019 10:54:59 +0000 X-Inumbo-ID: 397d449c-ea83-11e9-80e3-bc764e2007e4 Received: from aserp2120.oracle.com (unknown [141.146.126.78]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 397d449c-ea83-11e9-80e3-bc764e2007e4; Wed, 09 Oct 2019 10:54:54 +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 x99An4Tu040554; Wed, 9 Oct 2019 10:54:25 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=/rwd8ihQ7AMV73wLIi8nYy2/ykfXtIeeP/WjUNs+InA=; b=IlPC+cnDTFEwEeWrvyRpMZLf321odHNzuBb4hwbiebKOzo5DFGW7EiS/ivYISwa04fQ3 Pj6i7+Sfl15LN/4aemsci0v/ZH1ZWK6sRR+FsZhDv54pcEepdNartEbnj1uqsT6O7gzB HtcHktoyU5kPVP7Q381SHXyFGAO0gqUTzU4C+RKqGv3Dp8BfYr5/agxLOsA/x2VlKBy4 cfjXlfkVKkUMUvArWNhizT+Gjn6CkzeFnaINp6UarIFpRt+kwsIZji+ZNjVnqbmi273y N0KAwa4abneRV/fGNakFK8lHEd/qdMFwBpSXCY3sZf+vgC0VsJGGr+sBraadGb6YhsP6 zg== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 2vek4qka7p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 09 Oct 2019 10:54:25 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x99Amesl162811; Wed, 9 Oct 2019 10:54:24 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3020.oracle.com with ESMTP id 2vh5caap73-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 09 Oct 2019 10:54:24 +0000 Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x99AsKD9031138; Wed, 9 Oct 2019 10:54:21 GMT Received: from tomti.i.net-space.pl (/10.175.167.68) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 09 Oct 2019 03:54:20 -0700 From: Daniel Kiper To: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, xen-devel@lists.xenproject.org Date: Wed, 9 Oct 2019 12:53:56 +0200 Message-Id: <20191009105358.32256-2-daniel.kiper@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20191009105358.32256-1-daniel.kiper@oracle.com> References: <20191009105358.32256-1-daniel.kiper@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9404 signatures=668684 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-1910090101 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9404 signatures=668684 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-1910090101 Subject: [Xen-devel] [PATCH v3 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, luto@kernel.org, hpa@zytor.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 ZC1ieTogSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+ClNpZ25lZC1vZmYtYnk6IERhbmll bCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBLb25yYWQgUnpl c3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBSb3NzIFBo aWxpcHNvbiA8cm9zcy5waGlsaXBzb25Ab3JhY2xlLmNvbT4KLS0tCnYzIC0gc3VnZ2VzdGlvbnMv Zml4ZXM6CiAgIC0gc3BsaXQga2VybmVsX2luZm8gZGF0YSBpbnRvIGZpeGVkIGFuZCB2YXJpYWJs ZSBzaXplZCByZWdpb25zLAogICAgIChzdWdnZXN0ZWQgYnkgSC4gUGV0ZXIgQW52aW4pLAogICAt IGNoYW5nZSBrZXJuZWxfaW5mby5oZWFkZXIgdmFsdWUgdG8gIkxUb1AiICgweDUwNmY1NDRjKSwK ICAgICAoc3VnZ2VzdGVkIGJ5IEguIFBldGVyIEFudmluKSwKICAgLSBpbXByb3ZlIHRoZSBjb21t ZW50cywKICAgLSBpbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uLgoKdjIgLSBzdWdnZXN0aW9ucy9m aXhlczoKICAgLSByZW5hbWUgc2V0dXBfaGVhZGVyMiB0byBrZXJuZWxfaW5mbywKICAgICAoc3Vn Z2VzdGVkIGJ5IEguIFBldGVyIEFudmluKSwKICAgLSBjaGFuZ2Uga2VybmVsX2luZm8uaGVhZGVy IHZhbHVlIHRvICJJbmZPIiAoMHg0ZjY2NmU0OSksCiAgIC0gbmV3IGtlcm5lbF9pbmZvIGRlc2Ny aXB0aW9uIGluIERvY3VtZW50YXRpb24veDg2L2Jvb3QucnN0LAogICAgIChzdWdnZXN0ZWQgYnkg SC4gUGV0ZXIgQW52aW4pLAogICAtIGRyb3Aga2VybmVsX2luZm9fb2Zmc2V0X3VwZGF0ZSgpIGFz IGFuIG92ZXJraWxsIGFuZAogICAgIHVwZGF0ZSBrZXJuZWxfaW5mbyBvZmZzZXQgZGlyZWN0bHkg ZnJvbSBtYWluKCksCiAgICAgKHN1Z2dlc3RlZCBieSBFcmljIFNub3diZXJnKSwKICAgLSBuZXcg Y29tbWl0IG1lc3NhZ2UKICAgICAoc3VnZ2VzdGVkIGJ5IEguIFBldGVyIEFudmluKSwKICAgLSBm aXggc29tZSBjb21taXQgbWVzc2FnZSBtaXNzcGVsbGluZ3MKICAgICAoc3VnZ2VzdGVkIGJ5IEVy aWMgU25vd2JlcmcpLgotLS0KIERvY3VtZW50YXRpb24veDg2L2Jvb3QucnN0ICAgICAgICAgICAg IHwgMTIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC94ODYvYm9vdC9N YWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGFyY2gveDg2L2Jvb3QvY29tcHJlc3Nl ZC9NYWtlZmlsZSAgICAgIHwgICA0ICstCiBhcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2VybmVs X2luZm8uUyB8ICAxNyArKysrKwogYXJjaC94ODYvYm9vdC9oZWFkZXIuUyAgICAgICAgICAgICAg ICAgfCAgIDEgKwogYXJjaC94ODYvYm9vdC90b29scy9idWlsZC5jICAgICAgICAgICAgfCAgIDUg KysKIGFyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmggIHwgICAxICsKIDcgZmls ZXMgY2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2tlcm5lbF9pbmZvLlMKCmRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni9ib290LnJzdCBiL0RvY3VtZW50YXRpb24veDg2L2Jvb3Qu cnN0CmluZGV4IDA4YTJmMTAwYzBlNi4uZDUzMjNhMzlmNWUzIDEwMDY0NAotLS0gYS9Eb2N1bWVu dGF0aW9uL3g4Ni9ib290LnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni9ib290LnJzdApAQCAt NjgsOCArNjgsMjUgQEAgUHJvdG9jb2wgMi4xMgkoS2VybmVsIDMuOCkgQWRkZWQgdGhlIHhsb2Fk ZmxhZ3MgZmllbGQgYW5kIGV4dGVuc2lvbiBmaWVsZHMKIFByb3RvY29sIDIuMTMJKEtlcm5lbCAz LjE0KSBTdXBwb3J0IDMyLSBhbmQgNjQtYml0IGZsYWdzIGJlaW5nIHNldCBpbgogCQl4bG9hZGZs YWdzIHRvIHN1cHBvcnQgYm9vdGluZyBhIDY0LWJpdCBrZXJuZWwgZnJvbSAzMi1iaXQKIAkJRUZJ CisKK1Byb3RvY29sIDIuMTQ6CUJVUk5UIEJZIElOQ09SUkVDVCBDT01NSVQgYWU3ZTEyMzhlNjhm MmE0NzJhMTI1NjczYWI1MDZkNDkxNThjMTg4OQorCQkoeDg2L2Jvb3Q6IEFkZCBBQ1BJIFJTRFAg YWRkcmVzcyB0byBzZXR1cF9oZWFkZXIpCisJCURPIE5PVCBVU0UhISEgQVNTVU1FIFNBTUUgQVMg Mi4xMy4KKworUHJvdG9jb2wgMi4xNToJKEtlcm5lbCA1LjUpIEFkZGVkIHRoZSBrZXJuZWxfaW5m by4KID09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAKKy4uIG5vdGU6OgorICAgICBUaGUgcHJvdG9jb2wgdmVy c2lvbiBudW1iZXIgc2hvdWxkIGJlIGNoYW5nZWQgb25seSBpZiB0aGUgc2V0dXAgaGVhZGVyCisg ICAgIGlzIGNoYW5nZWQuIFRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSB2ZXJzaW9uIG51 bWJlciBpZiBib290X3BhcmFtcworICAgICBvciBrZXJuZWxfaW5mbyBhcmUgY2hhbmdlZC4gQWRk aXRpb25hbGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UKKyAgICAgeGxvYWRmbGFncyAoaW4g dGhpcyBjYXNlIHRoZSBwcm90b2NvbCB2ZXJzaW9uIG51bWJlciBzaG91bGQgbm90IGJlCisgICAg IHVwZGF0ZWQgZWl0aGVyKSBvciBrZXJuZWxfaW5mbyB0byBjb21tdW5pY2F0ZSBzdXBwb3J0ZWQg TGludXgga2VybmVsCisgICAgIGZlYXR1cmVzIHRvIHRoZSBib290IGxvYWRlci4gRHVlIHRvIHZl cnkgbGltaXRlZCBzcGFjZSBhdmFpbGFibGUgaW4KKyAgICAgdGhlIG9yaWdpbmFsIHNldHVwIGhl YWRlciBldmVyeSB1cGRhdGUgdG8gaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQKKyAgICAgd2l0aCBn cmVhdCBjYXJlLiBTdGFydGluZyBmcm9tIHRoZSBwcm90b2NvbCAyLjE1IHRoZSBwcmltYXJ5IHdh eSB0bworICAgICBjb21tdW5pY2F0ZSB0aGluZ3MgdG8gdGhlIGJvb3QgbG9hZGVyIGlzIHRoZSBr ZXJuZWxfaW5mby4KKwogCiBNZW1vcnkgTGF5b3V0CiA9PT09PT09PT09PT09CkBAIC0yMDcsNiAr MjI0LDcgQEAgT2Zmc2V0L1NpemUJUHJvdG8JCU5hbWUJCQlNZWFuaW5nCiAwMjU4LzgJCTIuMTAr CQlwcmVmX2FkZHJlc3MJCVByZWZlcnJlZCBsb2FkaW5nIGFkZHJlc3MKIDAyNjAvNAkJMi4xMCsJ CWluaXRfc2l6ZQkJTGluZWFyIG1lbW9yeSByZXF1aXJlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24K IDAyNjQvNAkJMi4xMSsJCWhhbmRvdmVyX29mZnNldAkJT2Zmc2V0IG9mIGhhbmRvdmVyIGVudHJ5 IHBvaW50CiswMjY4LzQJCTIuMTUrCQlrZXJuZWxfaW5mb19vZmZzZXQJT2Zmc2V0IG9mIHRoZSBr ZXJuZWxfaW5mbwogPT09PT09PT09PT0JPT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09CT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIG5vdGU6OgpA QCAtODU1LDYgKzg3MywxMDkgQEAgT2Zmc2V0L3NpemU6CTB4MjY0LzQKIAogICBTZWUgRUZJIEhB TkRPVkVSIFBST1RPQ09MIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCiAKKz09PT09PT09PT09PQk9 PT09PT09PT09PT09PT09PT0KK0ZpZWxkIG5hbWU6CWtlcm5lbF9pbmZvX29mZnNldAorVHlwZToJ CXJlYWQKK09mZnNldC9zaXplOgkweDI2OC80CitQcm90b2NvbDoJMi4xNSsKKz09PT09PT09PT09 PQk9PT09PT09PT09PT09PT09PT0KKworICBUaGlzIGZpZWxkIGlzIHRoZSBvZmZzZXQgZnJvbSB0 aGUgYmVnaW5uaW5nIG9mIHRoZSBrZXJuZWwgaW1hZ2UgdG8gdGhlCisgIGtlcm5lbF9pbmZvLiBJ dCBpcyBlbWJlZGRlZCBpbiB0aGUgTGludXggaW1hZ2UgaW4gdGhlIHVuY29tcHJlc3NlZAorICBw cm90ZWN0ZWQgbW9kZSByZWdpb24uCisKKworVGhlIGtlcm5lbF9pbmZvCis9PT09PT09PT09PT09 PT0KKworVGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgaGVhZGVycyBhcmUgYW5hbG9nb3Vz IHRvIHRoZSB2YXJpb3VzIGRhdGEKK3NlY3Rpb25zOgorCisgIHNldHVwX2hlYWRlciA9IC5kYXRh CisgIGJvb3RfcGFyYW1zL3NldHVwX2RhdGEgPSAuYnNzCisKK1doYXQgaXMgbWlzc2luZyBmcm9t IHRoZSBhYm92ZSBsaXN0PyBUaGF0J3MgcmlnaHQ6CisKKyAga2VybmVsX2luZm8gPSAucm9kYXRh CisKK1dlIGhhdmUgYmVlbiAoYWIpdXNpbmcgLmRhdGEgZm9yIHRoaW5ncyB0aGF0IGNvdWxkIGdv IGludG8gLnJvZGF0YSBvciAuYnNzIGZvcgorYSBsb25nIHRpbWUsIGZvciBsYWNrIG9mIGFsdGVy bmF0aXZlcyBhbmQgLS0gZXNwZWNpYWxseSBlYXJseSBvbiAtLSBpbmVydGlhLgorQWxzbywgdGhl IEJJT1Mgc3R1YiBpcyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm9vdF9wYXJhbXMsIHNvIGl0 IGlzbid0CithdmFpbGFibGUgdG8gYSBCSU9TLWJhc2VkIGxvYWRlciAoc2V0dXBfZGF0YSBpcywg dGhvdWdoKS4KKworc2V0dXBfaGVhZGVyIGlzIHBlcm1hbmVudGx5IGxpbWl0ZWQgdG8gMTQ0IGJ5 dGVzIGR1ZSB0byB0aGUgcmVhY2ggb2YgdGhlCisyLWJ5dGUganVtcCBmaWVsZCwgd2hpY2ggZG91 YmxlcyBhcyBhIGxlbmd0aCBmaWVsZCBmb3IgdGhlIHN0cnVjdHVyZSwgY29tYmluZWQKK3dpdGgg dGhlIHNpemUgb2YgdGhlICJob2xlIiBpbiBzdHJ1Y3QgYm9vdF9wYXJhbXMgdGhhdCBhIHByb3Rl Y3RlZC1tb2RlIGxvYWRlcgorb3IgdGhlIEJJT1Mgc3R1YiBoYXMgdG8gY29weSBpdCBpbnRvLiBJ dCBpcyBjdXJyZW50bHkgMTE5IGJ5dGVzIGxvbmcsIHdoaWNoCitsZWF2ZXMgdXMgd2l0aCAyNSB2 ZXJ5IHByZWNpb3VzIGJ5dGVzLiBUaGlzIGlzbid0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBmaXhl ZAord2l0aG91dCByZXZpc2luZyB0aGUgYm9vdCBwcm90b2NvbCBlbnRpcmVseSwgYnJlYWtpbmcg YmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKK2Jvb3RfcGFyYW1zIHByb3BlciBpcyBsaW1pdGVk IHRvIDQwOTYgYnl0ZXMsIGJ1dCBjYW4gYmUgYXJiaXRyYXJpbHkgZXh0ZW5kZWQKK2J5IGFkZGlu ZyBzZXR1cF9kYXRhIGVudHJpZXMuIEl0IGNhbm5vdCBiZSB1c2VkIHRvIGNvbW11bmljYXRlIHBy b3BlcnRpZXMgb2YKK3RoZSBrZXJuZWwgaW1hZ2UsIGJlY2F1c2UgaXQgaXMgLmJzcyBhbmQgaGFz IG5vIGltYWdlLXByb3ZpZGVkIGNvbnRlbnQuCisKK2tlcm5lbF9pbmZvIHNvbHZlcyB0aGlzIGJ5 IHByb3ZpZGluZyBhbiBleHRlbnNpYmxlIHBsYWNlIGZvciBpbmZvcm1hdGlvbiBhYm91dAordGhl IGtlcm5lbCBpbWFnZS4gSXQgaXMgcmVhZG9ubHksIGJlY2F1c2UgdGhlIGtlcm5lbCBjYW5ub3Qg cmVseSBvbiBhCitib290bG9hZGVyIGNvcHlpbmcgaXRzIGNvbnRlbnRzIGFueXdoZXJlLCBidXQg dGhhdCBpcyBPSzsgaWYgaXQgYmVjb21lcworbmVjZXNzYXJ5IGl0IGNhbiBzdGlsbCBjb250YWlu IGRhdGEgaXRlbXMgdGhhdCBhbiBlbmFibGVkIGJvb3Rsb2FkZXIgd291bGQgYmUKK2V4cGVjdGVk IHRvIGNvcHkgaW50byBhIHNldHVwX2RhdGEgY2h1bmsuCisKK0FsbCBrZXJuZWxfaW5mbyBkYXRh IHNob3VsZCBiZSBwYXJ0IG9mIHRoaXMgc3RydWN0dXJlLiBGaXhlZCBzaXplIGRhdGEgaGF2ZSB0 bworYmUgcHV0IGJlZm9yZSBrZXJuZWxfaW5mb192YXJfbGVuX2RhdGEgbGFiZWwuIFZhcmlhYmxl IHNpemUgZGF0YSBoYXZlIHRvIGJlIHB1dAorYmVoaW5kIGtlcm5lbF9pbmZvX3Zhcl9sZW5fZGF0 YSBsYWJlbC4gRWFjaCBjaHVuayBvZiB2YXJpYWJsZSBzaXplIGRhdGEgaGFzIHRvCitiZSBwcmVm aXhlZCB3aXRoIGhlYWRlci9tYWdpYyBhbmQgaXRzIHNpemUsIGUuZy46CisKKyAga2VybmVsX2lu Zm86CisgICAgICAgICAgLmFzY2lpICAiTFRvUCIgICAgICAgICAgLyogSGVhZGVyLCBMaW51eCB0 b3AgKHN0cnVjdHVyZSkuICovCisgICAgICAgICAgLmxvbmcgICBrZXJuZWxfaW5mb192YXJfbGVu X2RhdGEgLSBrZXJuZWxfaW5mbworICAgICAgICAgIC5sb25nICAga2VybmVsX2luZm9fZW5kIC0g a2VybmVsX2luZm8KKyAgICAgICAgICAubG9uZyAgIDB4MDEyMzQ1NjcgICAgICAvKiBTb21lIGZp eGVkIHNpemUgZGF0YSBmb3IgdGhlIGJvb3Rsb2FkZXJzLiAqLworICBrZXJuZWxfaW5mb192YXJf bGVuX2RhdGE6CisgIGV4YW1wbGVfc3RydWN0OiAgICAgICAgICAgICAgICAgLyogU29tZSB2YXJp YWJsZSBzaXplIGRhdGEgZm9yIHRoZSBib290bG9hZGVycy4gKi8KKyAgICAgICAgICAuYXNjaWkg ICJFc1RUIiAgICAgICAgICAvKiBIZWFkZXIvTWFnaWMuICovCisgICAgICAgICAgLmxvbmcgICBl eGFtcGxlX3N0cnVjdF9lbmQgLSBleGFtcGxlX3N0cnVjdAorICAgICAgICAgIC5hc2NpaSAgIlN0 cnVjdCIKKyAgICAgICAgICAubG9uZyAgIDB4ODkwMTIzNDUKKyAgZXhhbXBsZV9zdHJ1Y3RfZW5k OgorICBleGFtcGxlX3N0cmluZ3M6ICAgICAgICAgICAgICAgIC8qIFNvbWUgdmFyaWFibGUgc2l6 ZSBkYXRhIGZvciB0aGUgYm9vdGxvYWRlcnMuICovCisgICAgICAgICAgLmFzY2lpICAiRXNUcyIg ICAgICAgICAgLyogSGVhZGVyL01hZ2ljLiAqLworICAgICAgICAgIC5sb25nICAgZXhhbXBsZV9z dHJpbmdzX2VuZCAtIGV4YW1wbGVfc3RyaW5ncworICAgICAgICAgIC5hc2NpeiAgIlN0cmluZ18w IgorICAgICAgICAgIC5hc2NpeiAgIlN0cmluZ18xIgorICBleGFtcGxlX3N0cmluZ3NfZW5kOgor ICBrZXJuZWxfaW5mb19lbmQ6CisKK1RoaXMgd2F5IHRoZSBrZXJuZWxfaW5mbyBpcyBzZWxmLWNv bnRhaW5lZCBibG9iLgorCisKK0RldGFpbHMgb2YgdGhlIGtlcm5lbF9pbmZvIEZpZWxkcworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKz09PT09PT09PT09PQk9PT09PT09PQor RmllbGQgbmFtZToJaGVhZGVyCitPZmZzZXQvc2l6ZToJMHgwMDAwLzQKKz09PT09PT09PT09PQk9 PT09PT09PQorCisgIENvbnRhaW5zIHRoZSBtYWdpYyBudW1iZXIgIkxUb1AiICgweDUwNmY1NDRj KS4KKworPT09PT09PT09PT09CT09PT09PT09CitGaWVsZCBuYW1lOglzaXplCitPZmZzZXQvc2l6 ZToJMHgwMDA0LzQKKz09PT09PT09PT09PQk9PT09PT09PQorCisgIFRoaXMgZmllbGQgY29udGFp bnMgdGhlIHNpemUgb2YgdGhlIGtlcm5lbF9pbmZvIGluY2x1ZGluZyBrZXJuZWxfaW5mby5oZWFk ZXIuCisgIEl0IGRvZXMgbm90IGNvdW50IGtlcm5lbF9pbmZvLmtlcm5lbF9pbmZvX3Zhcl9sZW5f ZGF0YSBzaXplLiBUaGlzIGZpZWxkIHNob3VsZCBiZQorICB1c2VkIGJ5IHRoZSBib290bG9hZGVy cyB0byBkZXRlY3Qgc3VwcG9ydGVkIGZpeGVkIHNpemUgZmllbGRzIGluIHRoZSBrZXJuZWxfaW5m bworICBhbmQgYmVnaW5uaW5nIG9mIGtlcm5lbF9pbmZvLmtlcm5lbF9pbmZvX3Zhcl9sZW5fZGF0 YS4KKworPT09PT09PT09PT09CT09PT09PT09CitGaWVsZCBuYW1lOglzaXplX3RvdGFsCitPZmZz ZXQvc2l6ZToJMHgwMDA4LzQKKz09PT09PT09PT09PQk9PT09PT09PQorCisgIFRoaXMgZmllbGQg Y29udGFpbnMgdGhlIHNpemUgb2YgdGhlIGtlcm5lbF9pbmZvIGluY2x1ZGluZyBrZXJuZWxfaW5m by5oZWFkZXIKKyAgYW5kIGtlcm5lbF9pbmZvLmtlcm5lbF9pbmZvX3Zhcl9sZW5fZGF0YS4KKwog CiBUaGUgSW1hZ2UgQ2hlY2tzdW0KID09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvYXJj aC94ODYvYm9vdC9NYWtlZmlsZSBiL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUKaW5kZXggZTI4Mzli NWMyNDZjLi5jMzBhOWI2NDJhODYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUK KysrIGIvYXJjaC94ODYvYm9vdC9NYWtlZmlsZQpAQCAtODcsNyArODcsNyBAQCAkKG9iaikvdm1s aW51eC5iaW46ICQob2JqKS9jb21wcmVzc2VkL3ZtbGludXggRk9SQ0UKIAogU0VUVVBfT0JKUyA9 ICQoYWRkcHJlZml4ICQob2JqKS8sJChzZXR1cC15KSkKIAotc2VkLXpvZmZzZXQgOj0gLWUgJ3Mv XlwoWzAtOWEtZkEtRl0qXCkgW0FCQ0RHUlNUVlddIFwoc3RhcnR1cF8zMlx8c3RhcnR1cF82NFx8 ZWZpMzJfc3R1Yl9lbnRyeVx8ZWZpNjRfc3R1Yl9lbnRyeVx8ZWZpX3BlX2VudHJ5XHxpbnB1dF9k YXRhXHxfZW5kXHxfZWhlYWRcfF90ZXh0XHx6Xy4qXCkkJC9cI2RlZmluZSBaT19cMiAweFwxL3An CitzZWQtem9mZnNldCA6PSAtZSAncy9eXChbMC05YS1mQS1GXSpcKSBbQUJDREdSU1RWV10gXChz dGFydHVwXzMyXHxzdGFydHVwXzY0XHxlZmkzMl9zdHViX2VudHJ5XHxlZmk2NF9zdHViX2VudHJ5 XHxlZmlfcGVfZW50cnlcfGlucHV0X2RhdGFcfGtlcm5lbF9pbmZvXHxfZW5kXHxfZWhlYWRcfF90 ZXh0XHx6Xy4qXCkkJC9cI2RlZmluZSBaT19cMiAweFwxL3AnCiAKIHF1aWV0X2NtZF96b2Zmc2V0 ID0gWk9GRlNFVCAkQAogICAgICAgY21kX3pvZmZzZXQgPSAkKE5NKSAkPCB8IHNlZCAtbiAkKHNl ZC16b2Zmc2V0KSA+ICRACmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFr ZWZpbGUgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKaW5kZXggNmI4NGFmZGQ3 NTM4Li5mYWQzYjE4ZTJjYzMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9N YWtlZmlsZQorKysgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKQEAgLTcyLDgg KzcyLDggQEAgJChvYmopLy4uL3ZvZmZzZXQuaDogdm1saW51eCBGT1JDRQogCiAkKG9iaikvbWlz Yy5vOiAkKG9iaikvLi4vdm9mZnNldC5oCiAKLXZtbGludXgtb2Jqcy15IDo9ICQob2JqKS92bWxp bnV4LmxkcyAkKG9iaikvaGVhZF8kKEJJVFMpLm8gJChvYmopL21pc2MubyBcCi0JJChvYmopL3N0 cmluZy5vICQob2JqKS9jbWRsaW5lLm8gJChvYmopL2Vycm9yLm8gXAordm1saW51eC1vYmpzLXkg Oj0gJChvYmopL3ZtbGludXgubGRzICQob2JqKS9rZXJuZWxfaW5mby5vICQob2JqKS9oZWFkXyQo QklUUykubyBcCisJJChvYmopL21pc2MubyAkKG9iaikvc3RyaW5nLm8gJChvYmopL2NtZGxpbmUu byAkKG9iaikvZXJyb3IubyBcCiAJJChvYmopL3BpZ2d5Lm8gJChvYmopL2NwdWZsYWdzLm8KIAog dm1saW51eC1vYmpzLSQoQ09ORklHX0VBUkxZX1BSSU5USykgKz0gJChvYmopL2Vhcmx5X3Nlcmlh bF9jb25zb2xlLm8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9rZXJuZWxf aW5mby5TIGIvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2tlcm5lbF9pbmZvLlMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZWE2ZjZlM2ZlZWYKLS0tIC9kZXYvbnVs bAorKysgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2VybmVsX2luZm8uUwpAQCAtMCwwICsx LDE3IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworCisJLnNlY3Rp b24gIi5yb2RhdGEua2VybmVsX2luZm8iLCAiYSIKKworCS5nbG9iYWwga2VybmVsX2luZm8KKwor a2VybmVsX2luZm86CisJLyogSGVhZGVyLCBMaW51eCB0b3AgKHN0cnVjdHVyZSkuICovCisJLmFz Y2lpCSJMVG9QIgorCS8qIFNpemUuICovCisJLmxvbmcJa2VybmVsX2luZm9fdmFyX2xlbl9kYXRh IC0ga2VybmVsX2luZm8KKwkvKiBTaXplIHRvdGFsLiAqLworCS5sb25nCWtlcm5lbF9pbmZvX2Vu ZCAtIGtlcm5lbF9pbmZvCisKK2tlcm5lbF9pbmZvX3Zhcl9sZW5fZGF0YToKKwkvKiBFbXB0eSBm b3IgdGltZSBiZWluZy4uLiAqLwora2VybmVsX2luZm9fZW5kOgpkaWZmIC0tZ2l0IGEvYXJjaC94 ODYvYm9vdC9oZWFkZXIuUyBiL2FyY2gveDg2L2Jvb3QvaGVhZGVyLlMKaW5kZXggMmMxMWMwZjQ1 ZDQ5Li4yMmRjZWNhYWE4OTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvaGVhZGVyLlMKKysr IGIvYXJjaC94ODYvYm9vdC9oZWFkZXIuUwpAQCAtNTY3LDYgKzU2Nyw3IEBAIHByZWZfYWRkcmVz czoJCS5xdWFkIExPQURfUEhZU0lDQUxfQUREUgkjIHByZWZlcnJlZCBsb2FkIGFkZHIKIAogaW5p dF9zaXplOgkJLmxvbmcgSU5JVF9TSVpFCQkjIGtlcm5lbCBpbml0aWFsaXphdGlvbiBzaXplCiBo YW5kb3Zlcl9vZmZzZXQ6CS5sb25nIDAJCQkjIEZpbGxlZCBpbiBieSBidWlsZC5jCitrZXJuZWxf aW5mb19vZmZzZXQ6CS5sb25nIDAJCQkjIEZpbGxlZCBpbiBieSBidWlsZC5jCiAKICMgRW5kIG9m IHNldHVwIGhlYWRlciAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9ib290L3Rvb2xzL2J1aWxkLmMgYi9h cmNoL3g4Ni9ib290L3Rvb2xzL2J1aWxkLmMKaW5kZXggYTkzZDQ0ZTU4ZjljLi41NWU2NjlkMjll NTQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvdG9vbHMvYnVpbGQuYworKysgYi9hcmNoL3g4 Ni9ib290L3Rvb2xzL2J1aWxkLmMKQEAgLTU2LDYgKzU2LDcgQEAgdTggYnVmW1NFVFVQX1NFQ1Rf TUFYKjUxMl07CiB1bnNpZ25lZCBsb25nIGVmaTMyX3N0dWJfZW50cnk7CiB1bnNpZ25lZCBsb25n IGVmaTY0X3N0dWJfZW50cnk7CiB1bnNpZ25lZCBsb25nIGVmaV9wZV9lbnRyeTsKK3Vuc2lnbmVk IGxvbmcga2VybmVsX2luZm87CiB1bnNpZ25lZCBsb25nIHN0YXJ0dXBfNjQ7CiAKIC8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSovCkBAIC0zMjEsNiArMzIyLDcgQEAgc3RhdGljIHZvaWQgcGFyc2Vfem9mZnNldChj aGFyICpmbmFtZSkKIAkJUEFSU0VfWk9GUyhwLCBlZmkzMl9zdHViX2VudHJ5KTsKIAkJUEFSU0Vf Wk9GUyhwLCBlZmk2NF9zdHViX2VudHJ5KTsKIAkJUEFSU0VfWk9GUyhwLCBlZmlfcGVfZW50cnkp OworCQlQQVJTRV9aT0ZTKHAsIGtlcm5lbF9pbmZvKTsKIAkJUEFSU0VfWk9GUyhwLCBzdGFydHVw XzY0KTsKIAogCQlwID0gc3RyY2hyKHAsICdcbicpOwpAQCAtNDEwLDYgKzQxMiw5IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCiAKIAllZmlfc3R1Yl9lbnRyeV91cGRhdGUoKTsK IAorCS8qIFVwZGF0ZSBrZXJuZWxfaW5mbyBvZmZzZXQuICovCisJcHV0X3VuYWxpZ25lZF9sZTMy KGtlcm5lbF9pbmZvLCAmYnVmWzB4MjY4XSk7CisKIAljcmMgPSBwYXJ0aWFsX2NyYzMyKGJ1Ziwg aSwgY3JjKTsKIAlpZiAoZndyaXRlKGJ1ZiwgMSwgaSwgZGVzdCkgIT0gaSkKIAkJZGllKCJXcml0 aW5nIHNldHVwIGZhaWxlZCIpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS91YXBpL2Fz bS9ib290cGFyYW0uaCBiL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgKaW5k ZXggYzg5NWRmNTQ4MmM1Li5hMWViY2Q3YTk5MWMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1 ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9i b290cGFyYW0uaApAQCAtODgsNiArODgsNyBAQCBzdHJ1Y3Qgc2V0dXBfaGVhZGVyIHsKIAlfX3U2 NAlwcmVmX2FkZHJlc3M7CiAJX191MzIJaW5pdF9zaXplOwogCV9fdTMyCWhhbmRvdmVyX29mZnNl dDsKKwlfX3UzMglrZXJuZWxfaW5mb19vZmZzZXQ7CiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkp OwogCiBzdHJ1Y3Qgc3lzX2Rlc2NfdGFibGUgewotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==