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=-10.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 EF76DC433B4 for ; Fri, 16 Apr 2021 17:00:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C821760FF1 for ; Fri, 16 Apr 2021 17:00:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237935AbhDPRBG (ORCPT ); Fri, 16 Apr 2021 13:01:06 -0400 Received: from foss.arm.com ([217.140.110.172]:46232 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234774AbhDPRBF (ORCPT ); Fri, 16 Apr 2021 13:01:05 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D79F011B3; Fri, 16 Apr 2021 10:00:39 -0700 (PDT) Received: from [192.168.178.6] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B1C4B3F99C; Fri, 16 Apr 2021 10:00:37 -0700 (PDT) Subject: Re: [PATCH v2 0/1] arm: topology: parse the topology from the dt To: Ruifeng Zhang Cc: Valentin Schneider , linux@armlinux.org.uk, sudeep.holla@arm.com, Greg KH , "Rafael J. Wysocki" , a.p.zijlstra@chello.nl, mingo@kernel.org, ruifeng.zhang1@unisoc.com, nianfu.bai@unisoc.com, linux-arm-kernel@lists.infradead.org, Linux Kernel Mailing List References: <20210414122326.5255-1-ruifeng.zhang0110@gmail.com> <8735vrmnc7.mognet@arm.com> <87wnt2lglo.mognet@arm.com> <44ab835f-3456-6bd9-97e9-5936cf5372da@arm.com> From: Dietmar Eggemann Message-ID: <2a4efeea-cc70-ca0a-81fd-84d8b54586c0@arm.com> Date: Fri, 16 Apr 2021 19:00:32 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 16/04/2021 13:04, Ruifeng Zhang wrote: > Dietmar Eggemann 于2021年4月16日周五 下午6:39写道: >> >> On 16/04/2021 11:32, Valentin Schneider wrote: >>> On 16/04/21 15:47, Ruifeng Zhang wrote: [...] >> I'm confused. Do you have the MT bit set to 1 then? So the issue that >> the mpidr handling in arm32's store_cpu_topology() is not correct does >> not exist? > > I have reconfirmed it, the MT bit has been set to 1. I am sorry for > the previous messages. > The mpidr parse by store_cpu_topology is correct, at least for the sc9863a. Nice! This is sorted then. [...] >> Is this what you need for your arm32 kernel system? Adding the >> possibility to parse cpu-map to create Phantom Domains? > > Yes, I need parse DT cpu-map to create different Phantom Domains. > With it, the dts should be change to: > cpu-map { > cluster0 { > core0 { > cpu = <&CPU0>; > }; > core1 { > cpu = <&CPU1>; > }; > core2 { > cpu = <&CPU2>; > }; > core3 { > cpu = <&CPU3>; > }; > }; > > cluster1 { > core0 { > cpu = <&CPU4>; > }; > core1 { > cpu = <&CPU5>; > }; > core2 { > cpu = <&CPU6>; > }; > core3 { > cpu = <&CPU7>; > }; > }; > }; > I'm afraid that this is now a much weaker case to get this into mainline. I'm able to run with an extra cpu-map entry: diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts index 012d40a7228c..f60d9b448253 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts @@ -35,6 +35,29 @@ cpus { #address-cells = <1>; #size-cells = <0>; + cpu-map { + cluster0 { + core0 { + cpu = <&cpu0>; + }; + core1 { + cpu = <&cpu1>; + }; + }; + + cluster1 { + core0 { + cpu = <&cpu2>; + }; + core1 { + cpu = <&cpu3>; + }; + core2 { + cpu = <&cpu4>; + }; + }; + }; + cpu0: cpu@0 { a condensed version (see below) of your patch on my Arm32 TC2. The move of update_cpu_capacity() in store_cpu_topology() is only necessary when I use the old clock-frequency based cpu_efficiency approach for asymmetric CPU capacity (TC2 is a15/a7): diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts index f60d9b448253..e0679cca40ed 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts @@ -64,7 +64,7 @@ cpu0: cpu@0 { reg = <0>; cci-control-port = <&cci_control1>; cpu-idle-states = <&CLUSTER_SLEEP_BIG>; - capacity-dmips-mhz = <1024>; + clock-frequency = <1000000000>; dynamic-power-coefficient = <990>; }; @@ -74,7 +74,7 @@ cpu1: cpu@1 { reg = <1>; cci-control-port = <&cci_control1>; cpu-idle-states = <&CLUSTER_SLEEP_BIG>; - capacity-dmips-mhz = <1024>; + clock-frequency = <1000000000>; dynamic-power-coefficient = <990>; }; @@ -84,7 +84,7 @@ cpu2: cpu@2 { reg = <0x100>; cci-control-port = <&cci_control2>; cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; - capacity-dmips-mhz = <516>; + clock-frequency = <800000000>; dynamic-power-coefficient = <133>; }; @@ -94,7 +94,7 @@ cpu3: cpu@3 { reg = <0x101>; cci-control-port = <&cci_control2>; cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; - capacity-dmips-mhz = <516>; + clock-frequency = <800000000>; dynamic-power-coefficient = <133>; }; @@ -104,7 +104,7 @@ cpu4: cpu@4 { reg = <0x102>; cci-control-port = <&cci_control2>; cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; - capacity-dmips-mhz = <516>; + clock-frequency = <800000000>; dynamic-power-coefficient = <133>; }; diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c index ef0058de432b..bff56c12c3a6 100644 --- a/arch/arm/kernel/topology.c +++ b/arch/arm/kernel/topology.c @@ -82,7 +82,7 @@ static bool cap_from_dt = true; * 'average' CPU is of middle capacity. Also see the comments near * table_efficiency[] and update_cpu_capacity(). */ -static void __init parse_dt_topology(void) +static void __init get_coretype_capacity(void) { const struct cpu_efficiency *cpu_eff; struct device_node *cn = NULL; @@ -173,7 +173,7 @@ static void update_cpu_capacity(unsigned int cpu) } #else -static inline void parse_dt_topology(void) {} +static inline void get_coretype_capacity(void) {} static inline void update_cpu_capacity(unsigned int cpuid) {} #endif @@ -221,14 +221,13 @@ void store_cpu_topology(unsigned int cpuid) cpuid_topo->package_id = -1; } - update_cpu_capacity(cpuid); - pr_info("CPU%u: thread %d, cpu %d, socket %d, mpidr %x\n", cpuid, cpu_topology[cpuid].thread_id, cpu_topology[cpuid].core_id, cpu_topology[cpuid].package_id, mpidr); topology_populated: + update_cpu_capacity(cpuid); update_siblings_masks(cpuid); } @@ -241,5 +240,6 @@ void __init init_cpu_topology(void) reset_cpu_topology(); smp_wmb(); + get_coretype_capacity(); parse_dt_topology(); } diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c index de8587cc119e..a2335da28f2a 100644 --- a/drivers/base/arch_topology.c +++ b/drivers/base/arch_topology.c @@ -295,7 +295,6 @@ static void parsing_done_workfn(struct work_struct *work) core_initcall(free_raw_capacity); #endif -#if defined(CONFIG_ARM64) || defined(CONFIG_RISCV) /* * This function returns the logic cpu number of the node. * There are basically three kinds of return values: @@ -441,7 +440,7 @@ static int __init parse_cluster(struct device_node *cluster, int depth) return 0; } -static int __init parse_dt_topology(void) +int __init parse_dt_topology(void) { struct device_node *cn, *map; int ret = 0; @@ -481,7 +480,6 @@ static int __init parse_dt_topology(void) of_node_put(cn); return ret; } -#endif /* * cpu topology table diff --git a/include/linux/arch_topology.h b/include/linux/arch_topology.h index 0f6cd6b73a61..cfa5a5072aa0 100644 --- a/include/linux/arch_topology.h +++ b/include/linux/arch_topology.h @@ -66,6 +66,7 @@ extern struct cpu_topology cpu_topology[NR_CPUS]; #define topology_llc_cpumask(cpu) (&cpu_topology[cpu].llc_sibling) void init_cpu_topology(void); void store_cpu_topology(unsigned int cpuid); +int __init parse_dt_topology(void); const struct cpumask *cpu_coregroup_mask(int cpu); void update_siblings_masks(unsigned int cpu); void remove_cpu_topology(unsigned int cpuid); 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=-10.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 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 BDE65C433B4 for ; Fri, 16 Apr 2021 17:02:51 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 3533A60FF1 for ; Fri, 16 Apr 2021 17:02:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3533A60FF1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=JkHoqd/8easnf2Z15OFwRkk+D2rZOviFYtbqZFU/a6A=; b=Zgx4rkRLBhtw62+SLNPQBDK8+ oveQfmkoYsmLrnvq3ODv22eeaPZK/hO+Dd2OEKdGoAa09SwWhpYCuu/w04erJcuyakCzmGNxjQ5cS HmMYStuxghp6NbQgPc3iAZlJpwzEDTa21riOWz2gTbGf1XLUd1CJiivC3ZHF1lfiopeF/Gwyz7xKp KqJvtlcH8intwraZeMcXewwiMHdyFKpJebqKwdQtkyG1ZkqwOF9plyQCmybk7uacjdx/YyH9J3dYb /1xZN/h+jNOfrZbFimLs/n0ljiFK3rhjknul7yolzEBu2GD6Atd3bTUoHw7Gr9Ra5Dlsec0TArRor V69WaZ9lg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lXRpy-002tEG-FM; Fri, 16 Apr 2021 17:01:00 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lXRpr-002tDC-Ty for linux-arm-kernel@desiato.infradead.org; Fri, 16 Apr 2021 17:00:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=mOm8uRdeJjHH7VkqdMNS2oPQm6sIHDlMtzpqshZp4xM=; b=kp58CuB7ys0q5urPZ3zUISipje xjO4uBHEG4tHIv6AJwN+4yvK1ZNPIKaXvIBrx/44hGRhYsaHHktDj6lK1oMb742ubwsKfrOlFjJ8h gPrGFiWtasoBBJszNK9ss/v6GMkE0Q14da/7MisQ9UFnteYx6fkLyV9+dV/pdZS2gz0+51UDcSUEo QVPjGjHuyxRyDUQedvYRVYSUBbnzT+pck89MHDIQJlGTYnhzCbi5BOoCaLAroMoFN1JVDJyM6a/b8 YmxeeRfWLJ82laUslpK4yskJLucD2Z/EPcxFGc9L4vM9aObhO16nXtT6klc4newf7x/QS1wKC9xCW bdLpBJ/Q==; Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lXRpo-009Zq4-N9 for linux-arm-kernel@lists.infradead.org; Fri, 16 Apr 2021 17:00:50 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D79F011B3; Fri, 16 Apr 2021 10:00:39 -0700 (PDT) Received: from [192.168.178.6] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B1C4B3F99C; Fri, 16 Apr 2021 10:00:37 -0700 (PDT) Subject: Re: [PATCH v2 0/1] arm: topology: parse the topology from the dt To: Ruifeng Zhang Cc: Valentin Schneider , linux@armlinux.org.uk, sudeep.holla@arm.com, Greg KH , "Rafael J. Wysocki" , a.p.zijlstra@chello.nl, mingo@kernel.org, ruifeng.zhang1@unisoc.com, nianfu.bai@unisoc.com, linux-arm-kernel@lists.infradead.org, Linux Kernel Mailing List References: <20210414122326.5255-1-ruifeng.zhang0110@gmail.com> <8735vrmnc7.mognet@arm.com> <87wnt2lglo.mognet@arm.com> <44ab835f-3456-6bd9-97e9-5936cf5372da@arm.com> From: Dietmar Eggemann Message-ID: <2a4efeea-cc70-ca0a-81fd-84d8b54586c0@arm.com> Date: Fri, 16 Apr 2021 19:00:32 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210416_100048_876835_A7B628D6 X-CRM114-Status: GOOD ( 24.78 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMTYvMDQvMjAyMSAxMzowNCwgUnVpZmVuZyBaaGFuZyB3cm90ZToKPiBEaWV0bWFyIEVnZ2Vt YW5uIDxkaWV0bWFyLmVnZ2VtYW5uQGFybS5jb20+IOS6jjIwMjHlubQ05pyIMTbml6XlkajkupQg 5LiL5Y2INjozOeWGmemBk++8mgo+Pgo+PiBPbiAxNi8wNC8yMDIxIDExOjMyLCBWYWxlbnRpbiBT Y2huZWlkZXIgd3JvdGU6Cj4+PiBPbiAxNi8wNC8yMSAxNTo0NywgUnVpZmVuZyBaaGFuZyB3cm90 ZToKClsuLi5dCgo+PiBJJ20gY29uZnVzZWQuIERvIHlvdSBoYXZlIHRoZSBNVCBiaXQgc2V0IHRv IDEgdGhlbj8gU28gdGhlIGlzc3VlIHRoYXQKPj4gdGhlIG1waWRyIGhhbmRsaW5nIGluIGFybTMy J3Mgc3RvcmVfY3B1X3RvcG9sb2d5KCkgaXMgbm90IGNvcnJlY3QgZG9lcwo+PiBub3QgZXhpc3Q/ Cj4gCj4gSSBoYXZlIHJlY29uZmlybWVkIGl0LCB0aGUgTVQgYml0IGhhcyBiZWVuIHNldCB0byAx LiBJIGFtIHNvcnJ5IGZvcgo+IHRoZSBwcmV2aW91cyBtZXNzYWdlcy4KPiBUaGUgbXBpZHIgcGFy c2UgYnkgc3RvcmVfY3B1X3RvcG9sb2d5IGlzIGNvcnJlY3QsIGF0IGxlYXN0IGZvciB0aGUgc2M5 ODYzYS4KCk5pY2UhIFRoaXMgaXMgc29ydGVkIHRoZW4uCgpbLi4uXQoKPj4gSXMgdGhpcyB3aGF0 IHlvdSBuZWVkIGZvciB5b3VyIGFybTMyIGtlcm5lbCBzeXN0ZW0/IEFkZGluZyB0aGUKPj4gcG9z c2liaWxpdHkgdG8gcGFyc2UgY3B1LW1hcCB0byBjcmVhdGUgUGhhbnRvbSBEb21haW5zPwo+IAo+ IFllcywgSSBuZWVkIHBhcnNlIERUIGNwdS1tYXAgdG8gY3JlYXRlIGRpZmZlcmVudCBQaGFudG9t IERvbWFpbnMuCj4gV2l0aCBpdCwgdGhlIGR0cyBzaG91bGQgYmUgY2hhbmdlIHRvOgo+ICAgICAg ICAgICAgICAgICBjcHUtbWFwIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyMCB7 Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlMCB7Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdSA9IDwmQ1BVMD47Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9Owo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29yZTEgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUgPSA8 JkNQVTE+Owo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvcmUyIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3B1ID0gPCZDUFUyPjsKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH07Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlMyB7Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdSA9IDwmQ1BVMz47Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+ICAgICAgICAgICAgICAgICAgICAgICAg IH07Cj4gCj4gICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3RlcjEgewo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29yZTAgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjcHUgPSA8JkNQVTQ+Owo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUxIHsKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1ID0gPCZDUFU1PjsKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb3JlMiB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNwdSA9IDwmQ1BVNj47Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZTMgewo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjcHUgPSA8JkNQVTc+Owo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfTsKPiAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+ICAgICAgICAg ICAgICAgICB9Owo+IAoKSSdtIGFmcmFpZCB0aGF0IHRoaXMgaXMgbm93IGEgbXVjaCB3ZWFrZXIg Y2FzZSB0byBnZXQgdGhpcyBpbnRvCm1haW5saW5lLgoKSSdtIGFibGUgdG8gcnVuIHdpdGggYW4g ZXh0cmEgY3B1LW1hcCBlbnRyeToKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy92ZXhw cmVzcy12MnAtY2ExNV9hNy5kdHMgYi9hcmNoL2FybS9ib290L2R0cy92ZXhwcmVzcy12MnAtY2Ex NV9hNy5kdHMKaW5kZXggMDEyZDQwYTcyMjhjLi5mNjBkOWI0NDgyNTMgMTAwNjQ0Ci0tLSBhL2Fy Y2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTE1X2E3LmR0cworKysgYi9hcmNoL2FybS9i b290L2R0cy92ZXhwcmVzcy12MnAtY2ExNV9hNy5kdHMKQEAgLTM1LDYgKzM1LDI5IEBAIGNwdXMg ewogICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CiAgICAgICAgICAgICAgICAj c2l6ZS1jZWxscyA9IDwwPjsKIAorICAgICAgICAgICAgICAgY3B1LW1hcCB7CisgICAgICAgICAg ICAgICAgICAgICAgIGNsdXN0ZXIwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b3JlMCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUgPSA8JmNw dTA+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29yZTEgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3B1ID0gPCZjcHUxPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owor ICAgICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0 ZXIxIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlMCB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUgPSA8JmNwdTI+OworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29y ZTEgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1ID0gPCZjcHUz PjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvcmUyIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNwdSA9IDwmY3B1ND47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAg ICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgIH07CisKICAgICAgICAgICAg ICAgIGNwdTA6IGNwdUAwIHsKIAphIGNvbmRlbnNlZCB2ZXJzaW9uIChzZWUgYmVsb3cpIG9mIHlv dXIgcGF0Y2ggb24gbXkgQXJtMzIgVEMyLgpUaGUgbW92ZSBvZiB1cGRhdGVfY3B1X2NhcGFjaXR5 KCkgaW4gc3RvcmVfY3B1X3RvcG9sb2d5KCkgaXMgb25seQpuZWNlc3Nhcnkgd2hlbiBJIHVzZSB0 aGUgb2xkIGNsb2NrLWZyZXF1ZW5jeSBiYXNlZCBjcHVfZWZmaWNpZW5jeQphcHByb2FjaCBmb3Ig YXN5bW1ldHJpYyBDUFUgY2FwYWNpdHkgKFRDMiBpcyBhMTUvYTcpOgoKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTE1X2E3LmR0cyBiL2FyY2gvYXJtL2Jvb3Qv ZHRzL3ZleHByZXNzLXYycC1jYTE1X2E3LmR0cwppbmRleCBmNjBkOWI0NDgyNTMuLmUwNjc5Y2Nh NDBlZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJwLWNhMTVfYTcu ZHRzCisrKyBiL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTE1X2E3LmR0cwpAQCAt NjQsNyArNjQsNyBAQCBjcHUwOiBjcHVAMCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9 IDwwPjsKICAgICAgICAgICAgICAgICAgICAgICAgY2NpLWNvbnRyb2wtcG9ydCA9IDwmY2NpX2Nv bnRyb2wxPjsKICAgICAgICAgICAgICAgICAgICAgICAgY3B1LWlkbGUtc3RhdGVzID0gPCZDTFVT VEVSX1NMRUVQX0JJRz47Ci0gICAgICAgICAgICAgICAgICAgICAgIGNhcGFjaXR5LWRtaXBzLW1o eiA9IDwxMDI0PjsKKyAgICAgICAgICAgICAgICAgICAgICAgY2xvY2stZnJlcXVlbmN5ID0gPDEw MDAwMDAwMDA+OwogICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljLXBvd2VyLWNvZWZmaWNp ZW50ID0gPDk5MD47CiAgICAgICAgICAgICAgICB9OwogCkBAIC03NCw3ICs3NCw3IEBAIGNwdTE6 IGNwdUAxIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDE+OwogICAgICAgICAgICAg ICAgICAgICAgICBjY2ktY29udHJvbC1wb3J0ID0gPCZjY2lfY29udHJvbDE+OwogICAgICAgICAg ICAgICAgICAgICAgICBjcHUtaWRsZS1zdGF0ZXMgPSA8JkNMVVNURVJfU0xFRVBfQklHPjsKLSAg ICAgICAgICAgICAgICAgICAgICAgY2FwYWNpdHktZG1pcHMtbWh6ID0gPDEwMjQ+OworICAgICAg ICAgICAgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwMDAwMD47CiAgICAgICAg ICAgICAgICAgICAgICAgIGR5bmFtaWMtcG93ZXItY29lZmZpY2llbnQgPSA8OTkwPjsKICAgICAg ICAgICAgICAgIH07CiAKQEAgLTg0LDcgKzg0LDcgQEAgY3B1MjogY3B1QDIgewogICAgICAgICAg ICAgICAgICAgICAgICByZWcgPSA8MHgxMDA+OwogICAgICAgICAgICAgICAgICAgICAgICBjY2kt Y29udHJvbC1wb3J0ID0gPCZjY2lfY29udHJvbDI+OwogICAgICAgICAgICAgICAgICAgICAgICBj cHUtaWRsZS1zdGF0ZXMgPSA8JkNMVVNURVJfU0xFRVBfTElUVExFPjsKLSAgICAgICAgICAgICAg ICAgICAgICAgY2FwYWNpdHktZG1pcHMtbWh6ID0gPDUxNj47CisgICAgICAgICAgICAgICAgICAg ICAgIGNsb2NrLWZyZXF1ZW5jeSA9IDw4MDAwMDAwMDA+OwogICAgICAgICAgICAgICAgICAgICAg ICBkeW5hbWljLXBvd2VyLWNvZWZmaWNpZW50ID0gPDEzMz47CiAgICAgICAgICAgICAgICB9Owog CkBAIC05NCw3ICs5NCw3IEBAIGNwdTM6IGNwdUAzIHsKICAgICAgICAgICAgICAgICAgICAgICAg cmVnID0gPDB4MTAxPjsKICAgICAgICAgICAgICAgICAgICAgICAgY2NpLWNvbnRyb2wtcG9ydCA9 IDwmY2NpX2NvbnRyb2wyPjsKICAgICAgICAgICAgICAgICAgICAgICAgY3B1LWlkbGUtc3RhdGVz ID0gPCZDTFVTVEVSX1NMRUVQX0xJVFRMRT47Ci0gICAgICAgICAgICAgICAgICAgICAgIGNhcGFj aXR5LWRtaXBzLW1oeiA9IDw1MTY+OworICAgICAgICAgICAgICAgICAgICAgICBjbG9jay1mcmVx dWVuY3kgPSA8ODAwMDAwMDAwPjsKICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pYy1wb3dl ci1jb2VmZmljaWVudCA9IDwxMzM+OwogICAgICAgICAgICAgICAgfTsKIApAQCAtMTA0LDcgKzEw NCw3IEBAIGNwdTQ6IGNwdUA0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4MTAy PjsKICAgICAgICAgICAgICAgICAgICAgICAgY2NpLWNvbnRyb2wtcG9ydCA9IDwmY2NpX2NvbnRy b2wyPjsKICAgICAgICAgICAgICAgICAgICAgICAgY3B1LWlkbGUtc3RhdGVzID0gPCZDTFVTVEVS X1NMRUVQX0xJVFRMRT47Ci0gICAgICAgICAgICAgICAgICAgICAgIGNhcGFjaXR5LWRtaXBzLW1o eiA9IDw1MTY+OworICAgICAgICAgICAgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3kgPSA8ODAw MDAwMDAwPjsKICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pYy1wb3dlci1jb2VmZmljaWVu dCA9IDwxMzM+OwogICAgICAgICAgICAgICAgfTsKCgoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tl cm5lbC90b3BvbG9neS5jIGIvYXJjaC9hcm0va2VybmVsL3RvcG9sb2d5LmMKaW5kZXggZWYwMDU4 ZGU0MzJiLi5iZmY1NmMxMmMzYTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC90b3BvbG9n eS5jCisrKyBiL2FyY2gvYXJtL2tlcm5lbC90b3BvbG9neS5jCkBAIC04Miw3ICs4Miw3IEBAIHN0 YXRpYyBib29sIGNhcF9mcm9tX2R0ID0gdHJ1ZTsKICAqICdhdmVyYWdlJyBDUFUgaXMgb2YgbWlk ZGxlIGNhcGFjaXR5LiBBbHNvIHNlZSB0aGUgY29tbWVudHMgbmVhcgogICogdGFibGVfZWZmaWNp ZW5jeVtdIGFuZCB1cGRhdGVfY3B1X2NhcGFjaXR5KCkuCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5p dCBwYXJzZV9kdF90b3BvbG9neSh2b2lkKQorc3RhdGljIHZvaWQgX19pbml0IGdldF9jb3JldHlw ZV9jYXBhY2l0eSh2b2lkKQogewogICAgICAgIGNvbnN0IHN0cnVjdCBjcHVfZWZmaWNpZW5jeSAq Y3B1X2VmZjsKICAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNuID0gTlVMTDsKQEAgLTE3Myw3 ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfY3B1X2NhcGFjaXR5KHVuc2lnbmVkIGludCBj cHUpCiB9CiAKICNlbHNlCi1zdGF0aWMgaW5saW5lIHZvaWQgcGFyc2VfZHRfdG9wb2xvZ3kodm9p ZCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBnZXRfY29yZXR5cGVfY2FwYWNpdHkodm9pZCkge30K IHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfY3B1X2NhcGFjaXR5KHVuc2lnbmVkIGludCBjcHVp ZCkge30KICNlbmRpZgogCkBAIC0yMjEsMTQgKzIyMSwxMyBAQCB2b2lkIHN0b3JlX2NwdV90b3Bv bG9neSh1bnNpZ25lZCBpbnQgY3B1aWQpCiAgICAgICAgICAgICAgICBjcHVpZF90b3BvLT5wYWNr YWdlX2lkID0gLTE7CiAgICAgICAgfQogCi0gICAgICAgdXBkYXRlX2NwdV9jYXBhY2l0eShjcHVp ZCk7Ci0KICAgICAgICBwcl9pbmZvKCJDUFUldTogdGhyZWFkICVkLCBjcHUgJWQsIHNvY2tldCAl ZCwgbXBpZHIgJXhcbiIsCiAgICAgICAgICAgICAgICBjcHVpZCwgY3B1X3RvcG9sb2d5W2NwdWlk XS50aHJlYWRfaWQsCiAgICAgICAgICAgICAgICBjcHVfdG9wb2xvZ3lbY3B1aWRdLmNvcmVfaWQs CiAgICAgICAgICAgICAgICBjcHVfdG9wb2xvZ3lbY3B1aWRdLnBhY2thZ2VfaWQsIG1waWRyKTsK IAogdG9wb2xvZ3lfcG9wdWxhdGVkOgorICAgICAgIHVwZGF0ZV9jcHVfY2FwYWNpdHkoY3B1aWQp OwogICAgICAgIHVwZGF0ZV9zaWJsaW5nc19tYXNrcyhjcHVpZCk7CiB9CiAKQEAgLTI0MSw1ICsy NDAsNiBAQCB2b2lkIF9faW5pdCBpbml0X2NwdV90b3BvbG9neSh2b2lkKQogICAgICAgIHJlc2V0 X2NwdV90b3BvbG9neSgpOwogICAgICAgIHNtcF93bWIoKTsKIAorICAgICAgIGdldF9jb3JldHlw ZV9jYXBhY2l0eSgpOwogICAgICAgIHBhcnNlX2R0X3RvcG9sb2d5KCk7CiB9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2Jhc2UvYXJjaF90b3BvbG9neS5jIGIvZHJpdmVycy9iYXNlL2FyY2hfdG9wb2xv Z3kuYwppbmRleCBkZTg1ODdjYzExOWUuLmEyMzM1ZGEyOGYyYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9iYXNlL2FyY2hfdG9wb2xvZ3kuYworKysgYi9kcml2ZXJzL2Jhc2UvYXJjaF90b3BvbG9neS5j CkBAIC0yOTUsNyArMjk1LDYgQEAgc3RhdGljIHZvaWQgcGFyc2luZ19kb25lX3dvcmtmbihzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiBjb3JlX2luaXRjYWxsKGZyZWVfcmF3X2NhcGFjaXR5KTsK ICNlbmRpZgogCi0jaWYgZGVmaW5lZChDT05GSUdfQVJNNjQpIHx8IGRlZmluZWQoQ09ORklHX1JJ U0NWKQogLyoKICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbG9naWMgY3B1IG51bWJlciBv ZiB0aGUgbm9kZS4KICAqIFRoZXJlIGFyZSBiYXNpY2FsbHkgdGhyZWUga2luZHMgb2YgcmV0dXJu IHZhbHVlczoKQEAgLTQ0MSw3ICs0NDAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9jbHVz dGVyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2x1c3RlciwgaW50IGRlcHRoKQogICAgICAgIHJldHVy biAwOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBwYXJzZV9kdF90b3BvbG9neSh2b2lkKQoraW50 IF9faW5pdCBwYXJzZV9kdF90b3BvbG9neSh2b2lkKQogewogICAgICAgIHN0cnVjdCBkZXZpY2Vf bm9kZSAqY24sICptYXA7CiAgICAgICAgaW50IHJldCA9IDA7CkBAIC00ODEsNyArNDgwLDYgQEAg c3RhdGljIGludCBfX2luaXQgcGFyc2VfZHRfdG9wb2xvZ3kodm9pZCkKICAgICAgICBvZl9ub2Rl X3B1dChjbik7CiAgICAgICAgcmV0dXJuIHJldDsKIH0KLSNlbmRpZgogCiAvKgogICogY3B1IHRv cG9sb2d5IHRhYmxlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2FyY2hfdG9wb2xvZ3kuaCBi L2luY2x1ZGUvbGludXgvYXJjaF90b3BvbG9neS5oCmluZGV4IDBmNmNkNmI3M2E2MS4uY2ZhNWE1 MDcyYWEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2FyY2hfdG9wb2xvZ3kuaAorKysgYi9p bmNsdWRlL2xpbnV4L2FyY2hfdG9wb2xvZ3kuaApAQCAtNjYsNiArNjYsNyBAQCBleHRlcm4gc3Ry dWN0IGNwdV90b3BvbG9neSBjcHVfdG9wb2xvZ3lbTlJfQ1BVU107CiAjZGVmaW5lIHRvcG9sb2d5 X2xsY19jcHVtYXNrKGNwdSkgICAgICAoJmNwdV90b3BvbG9neVtjcHVdLmxsY19zaWJsaW5nKQog dm9pZCBpbml0X2NwdV90b3BvbG9neSh2b2lkKTsKIHZvaWQgc3RvcmVfY3B1X3RvcG9sb2d5KHVu c2lnbmVkIGludCBjcHVpZCk7CitpbnQgX19pbml0IHBhcnNlX2R0X3RvcG9sb2d5KHZvaWQpOwog Y29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9jb3JlZ3JvdXBfbWFzayhpbnQgY3B1KTsKIHZvaWQg dXBkYXRlX3NpYmxpbmdzX21hc2tzKHVuc2lnbmVkIGludCBjcHUpOwogdm9pZCByZW1vdmVfY3B1 X3RvcG9sb2d5KHVuc2lnbmVkIGludCBjcHVpZCk7CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==