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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 069EEC433F5 for ; Thu, 30 Sep 2021 07:42:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D45EC6187A for ; Thu, 30 Sep 2021 07:42:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348794AbhI3Hoi (ORCPT ); Thu, 30 Sep 2021 03:44:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:40356 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348701AbhI3Hoh (ORCPT ); Thu, 30 Sep 2021 03:44:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1632987775; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IPnqe4/1NW8fM0FWI5JEcFoAmJYE/lm75RfKuKv23U0=; b=iFC2CRuOWgMnlibMdYKA0ajpDvfHY2kWdSU42zFxBdXnhIUGA4o1NjOJ6pKUMi9bnuwKiL lIXfysKZ+rTaYnSszb/M9V0363m/afx7ipMWphdYEeGJeKlUMYTUKwhgyDjrmmeNiQocS1 r6ZMZ5EFUP7TzlDohwt7KarckbjO0eM= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-221-hPf-rQuMMJao2LTLKkpKkQ-1; Thu, 30 Sep 2021 03:42:54 -0400 X-MC-Unique: hPf-rQuMMJao2LTLKkpKkQ-1 Received: by mail-wr1-f72.google.com with SMTP id z2-20020a5d4c82000000b0015b140e0562so1359643wrs.7 for ; Thu, 30 Sep 2021 00:42:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:subject:to:cc:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding:content-language; bh=IPnqe4/1NW8fM0FWI5JEcFoAmJYE/lm75RfKuKv23U0=; b=MISpG9nRdWUtKYAWYa4XRxcyJ8nmoCMNGRTPvCdwfauyH6zbADUSd5azLTOc7zb0CB VjutwmQz/z0NhHlYMBooZul1bSlfFICPeoXuw7n3eM3DGotULClmboaOhUXmk8HMug9J YV9FpUgmvKhdZweL6mV9jESx52N5b9wCwlcWK0U/ZHXkjYY/fbIFbGFenWAN764gHd19 k2TX3Ey4gM4Hbpe03LZDxLGUsRRrgszPT1CWad0XQKMzwO1MlbXrAx6/Uv1z7CseO2Fp CW8LkRkIPI4YK2SZgfF+cO8NzVM4iywzH2X35IqWxYRobsJoBqqL1w3ClrpyUj0+YiUO AJ5Q== X-Gm-Message-State: AOAM532U+Vw6V3BXSMyeepr+tNl3aZhuG6Mlli6mZy/u2eXDBX+Z1CmB Pgk0QpufhbrL2aZzGB+pRdtxYZBFsxDmawD67shTyxU4Bu8mb5rQh8HqlKmPt07AfcP2GEmWHWI y34rWa4J6/9jJ X-Received: by 2002:a5d:4851:: with SMTP id n17mr4261963wrs.191.1632987772779; Thu, 30 Sep 2021 00:42:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhlzaKa6LHbxGa5seCiD0C21SQXLN7ZrqE6U5ETyMCH2d6xh6rUVbXJXYiYB4iXDvOv1EkJg== X-Received: by 2002:a5d:4851:: with SMTP id n17mr4261944wrs.191.1632987772526; Thu, 30 Sep 2021 00:42:52 -0700 (PDT) Received: from ?IPv6:2a01:e0a:59e:9d80:527b:9dff:feef:3874? ([2a01:e0a:59e:9d80:527b:9dff:feef:3874]) by smtp.gmail.com with ESMTPSA id k18sm2143522wrh.68.2021.09.30.00.42.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 30 Sep 2021 00:42:52 -0700 (PDT) Reply-To: eric.auger@redhat.com Subject: Re: [PATCH v3 07/10] KVM: arm64: selftests: Add some tests for GICv2 in vgic_init To: Ricardo Koller , kvm@vger.kernel.org, maz@kernel.org, kvmarm@lists.cs.columbia.edu, drjones@redhat.com, alexandru.elisei@arm.com Cc: Paolo Bonzini , oupton@google.com, james.morse@arm.com, suzuki.poulose@arm.com, shuah@kernel.org, jingzhangos@google.com, pshier@google.com, rananta@google.com, reijiw@google.com References: <20210928184803.2496885-1-ricarkol@google.com> <20210928184803.2496885-8-ricarkol@google.com> From: Eric Auger Message-ID: <00b3c776-71e4-3687-0510-540462a43840@redhat.com> Date: Thu, 30 Sep 2021 09:42:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20210928184803.2496885-8-ricarkol@google.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Hi Ricardo, On 9/28/21 8:48 PM, Ricardo Koller wrote: > Add some GICv2 tests: general KVM device tests and DIST/REDIST overlap > tests. Do this by making test_vcpus_then_vgic and test_vgic_then_vcpus > in vgic_init GIC version agnostic. > > Signed-off-by: Ricardo Koller > --- > .../testing/selftests/kvm/aarch64/vgic_init.c | 107 ++++++++++++------ > 1 file changed, 75 insertions(+), 32 deletions(-) > > diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testing/selftests/kvm/aarch64/vgic_init.c > index b24067dbdac0..92f5c6ca6b8b 100644 > --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c > +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c > @@ -79,74 +79,116 @@ static void vm_gic_destroy(struct vm_gic *v) > kvm_vm_free(v->vm); > } > > +struct vgic_region_attr { > + uint64_t attr; > + uint64_t size; > + uint64_t alignment; > +}; > + > +struct vgic_region_attr gic_v3_dist_region = { > + .attr = KVM_VGIC_V3_ADDR_TYPE_DIST, > + .size = 0x10000, > + .alignment = 0x10000, > +}; > + > +struct vgic_region_attr gic_v3_redist_region = { > + .attr = KVM_VGIC_V3_ADDR_TYPE_REDIST, > + .size = NR_VCPUS * 0x20000, > + .alignment = 0x10000, > +}; > + > +struct vgic_region_attr gic_v2_dist_region = { > + .attr = KVM_VGIC_V2_ADDR_TYPE_DIST, > + .size = 0x1000, > + .alignment = 0x1000, > +}; > + > +struct vgic_region_attr gic_v2_cpu_region = { > + .attr = KVM_VGIC_V2_ADDR_TYPE_CPU, > + .size = 0x2000, > + .alignment = 0x1000, > +}; > + > /** > - * Helper routine that performs KVM device tests in general and > - * especially ARM_VGIC_V3 ones. Eventually the ARM_VGIC_V3 > - * device gets created, a legacy RDIST region is set at @0x0 > - * and a DIST region is set @0x60000 > + * Helper routine that performs KVM device tests in general. Eventually the > + * ARM_VGIC (GICv2 or GICv3) device gets created with an overlapping > + * DIST/REDIST. A RDIST region (legacy in the case of GICv3) is set at @0x0 and > + * a DIST region is set @0x70000 for GICv3 and @0x1000 for GICv2. I would add "Assumption is 4 vcpus are going to be used hence the overlap". Also the RDIST is GICv3 only. In the above comment also mention the CPU I/F. > */ > -static void subtest_v3_dist_rdist(struct vm_gic *v) > +static void subtest_dist_rdist(struct vm_gic *v) > { > int ret; > uint64_t addr; > + struct vgic_region_attr rdist; /* CPU interface in GICv2*/ > + struct vgic_region_attr dist; > + > + rdist = VGIC_DEV_IS_V3(v->gic_dev_type) ? gic_v3_redist_region > + : gic_v2_cpu_region; > + dist = VGIC_DEV_IS_V3(v->gic_dev_type) ? gic_v3_dist_region > + : gic_v2_dist_region; > > /* Check existing group/attributes */ > kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_DIST); > + dist.attr); > > kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_REDIST); > + rdist.attr); > > /* check non existing attribute */ > - ret = _kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, 0); > + ret = _kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, -1); was that necessary? > TEST_ASSERT(ret && errno == ENXIO, "attribute not supported"); > > /* misaligned DIST and REDIST address settings */ > - addr = 0x1000; > + addr = dist.alignment / 0x10; > ret = _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_DIST, &addr, true); > - TEST_ASSERT(ret && errno == EINVAL, "GICv3 dist base not 64kB aligned"); > + dist.attr, &addr, true); > + TEST_ASSERT(ret && errno == EINVAL, "GIC dist base not aligned"); > > + addr = rdist.alignment / 0x10; > ret = _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr, true); > - TEST_ASSERT(ret && errno == EINVAL, "GICv3 redist base not 64kB aligned"); > + rdist.attr, &addr, true); > + TEST_ASSERT(ret && errno == EINVAL, "GIC redist/cpu base not aligned"); > > /* out of range address */ > if (max_ipa_bits) { > addr = 1ULL << max_ipa_bits; > ret = _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_DIST, &addr, true); > + dist.attr, &addr, true); > TEST_ASSERT(ret && errno == E2BIG, "dist address beyond IPA limit"); > > ret = _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr, true); > + rdist.attr, &addr, true); > TEST_ASSERT(ret && errno == E2BIG, "redist address beyond IPA limit"); > } > > /* set REDIST base address @0x0*/ > addr = 0x00000; > kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr, true); > + rdist.attr, &addr, true); > > /* Attempt to create a second legacy redistributor region */ > addr = 0xE0000; > ret = _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr, true); > - TEST_ASSERT(ret && errno == EEXIST, "GICv3 redist base set again"); > + rdist.attr, &addr, true); > + TEST_ASSERT(ret && errno == EEXIST, "GIC redist base set again"); > > - /* Attempt to mix legacy and new redistributor regions */ > - addr = REDIST_REGION_ATTR_ADDR(NR_VCPUS, 0x100000, 0, 0); > - ret = _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); > - TEST_ASSERT(ret && errno == EINVAL, "attempt to mix GICv3 REDIST and REDIST_REGION"); > + if (VGIC_DEV_IS_V3(v->gic_dev_type)) { Instead you could check     ret = kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR,                      KVM_VGIC_V3_ADDR_TYPE_REDIST); > + /* Attempt to mix legacy and new redistributor regions */ > + addr = REDIST_REGION_ATTR_ADDR(NR_VCPUS, 0x100000, 0, 0); > + ret = _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, > + &addr, true); > + TEST_ASSERT(ret && errno == EINVAL, > + "attempt to mix GICv3 REDIST and REDIST_REGION"); > + } > > /* > * Set overlapping DIST / REDIST, cannot be detected here. Will be detected > * on first vcpu run instead. > */ > - addr = 3 * 2 * 0x10000; > - kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V3_ADDR_TYPE_DIST, > - &addr, true); > + addr = rdist.size - rdist.alignment; > + kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, > + dist.attr, &addr, true); > } > > /* Test the new REDIST region API */ > @@ -256,14 +298,14 @@ static void subtest_v3_redist_regions(struct vm_gic *v) > * VGIC KVM device is created and initialized before the secondary CPUs > * get created > */ > -static void test_v3_vgic_then_vcpus(uint32_t gic_dev_type) > +static void test_vgic_then_vcpus(uint32_t gic_dev_type) > { > struct vm_gic v; > int ret, i; > > v = vm_gic_create_with_vcpus(gic_dev_type, 1); > > - subtest_v3_dist_rdist(&v); > + subtest_dist_rdist(&v); > > /* Add the rest of the VCPUs */ > for (i = 1; i < NR_VCPUS; ++i) > @@ -276,14 +318,14 @@ static void test_v3_vgic_then_vcpus(uint32_t gic_dev_type) > } > > /* All the VCPUs are created before the VGIC KVM device gets initialized */ > -static void test_v3_vcpus_then_vgic(uint32_t gic_dev_type) > +static void test_vcpus_then_vgic(uint32_t gic_dev_type) > { > struct vm_gic v; > int ret; > > v = vm_gic_create_with_vcpus(gic_dev_type, NR_VCPUS); > > - subtest_v3_dist_rdist(&v); > + subtest_dist_rdist(&v); > > ret = run_vcpu(v.vm, 3); > TEST_ASSERT(ret == -EINVAL, "dist/rdist overlap detected on 1st vcpu run"); > @@ -552,9 +594,10 @@ int test_kvm_device(uint32_t gic_dev_type) > > void run_tests(uint32_t gic_dev_type) > { > + test_vcpus_then_vgic(gic_dev_type); > + test_vgic_then_vcpus(gic_dev_type); > + > if (VGIC_DEV_IS_V3(gic_dev_type)) { > - test_v3_vcpus_then_vgic(gic_dev_type); > - test_v3_vgic_then_vcpus(gic_dev_type); > test_v3_new_redist_regions(); > test_v3_typer_accesses(); > test_v3_last_bit_redist_regions(); Thanks Eric 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EBC3DC433FE for ; Thu, 30 Sep 2021 07:42:59 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id 5E4D261881 for ; Thu, 30 Sep 2021 07:42:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5E4D261881 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id E1C5A407ED; Thu, 30 Sep 2021 03:42:58 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Authentication-Results: mm01.cs.columbia.edu (amavisd-new); dkim=softfail (fail, message has been altered) header.i=@redhat.com Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CUT+K8kT+JOd; Thu, 30 Sep 2021 03:42:57 -0400 (EDT) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 97C9E49F5D; Thu, 30 Sep 2021 03:42:57 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id BC332407ED for ; Thu, 30 Sep 2021 03:42:56 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y82ycS+0buAh for ; Thu, 30 Sep 2021 03:42:55 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 714EC407D1 for ; Thu, 30 Sep 2021 03:42:55 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1632987775; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IPnqe4/1NW8fM0FWI5JEcFoAmJYE/lm75RfKuKv23U0=; b=iFC2CRuOWgMnlibMdYKA0ajpDvfHY2kWdSU42zFxBdXnhIUGA4o1NjOJ6pKUMi9bnuwKiL lIXfysKZ+rTaYnSszb/M9V0363m/afx7ipMWphdYEeGJeKlUMYTUKwhgyDjrmmeNiQocS1 r6ZMZ5EFUP7TzlDohwt7KarckbjO0eM= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-221-ixQEHmpaNOCBl899CDM5tg-1; Thu, 30 Sep 2021 03:42:54 -0400 X-MC-Unique: ixQEHmpaNOCBl899CDM5tg-1 Received: by mail-wm1-f71.google.com with SMTP id j82-20020a1c2355000000b0030cec9c9a66so2552438wmj.0 for ; Thu, 30 Sep 2021 00:42:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:subject:to:cc:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding:content-language; bh=IPnqe4/1NW8fM0FWI5JEcFoAmJYE/lm75RfKuKv23U0=; b=tceILs3ubgQ88Vuwx5NxeHxf1mnUhaVcGSt21pfUmuMMqmuts7FRxW8diEVYCqHbMf nBFxU3pGm+uugWb+hDjGlCPV3jRiYPNtIRp11A5LoUGkTv8QXC+IxPFAvgXB4FhQgY16 AxkuEcYPUbkTz4t5nJcVurN6L6XJ5zAE0RNUH/mBIgyUaEHDo2iEn4Jjv+EF7eAOHV9b qSKFWJBrD3Lve1BkLQ+xnQgmZC1tf4EEDLImnmg4V7QyqfrzQhT4rykpl78veU2qWdEl oF0vs5GHIuAvNXVo/FqE+S24Eer8Sym8TRieP95EtppGhRd1B6PwZ2NsQou1JK4EmvNn WOfA== X-Gm-Message-State: AOAM5327tBnsW7q5t1FSoim29HwiII8HP5xQC9R1MMNwz1lqJxxLuyGc wevc+MtxGZGS1ITC9u04rnToIFMoyUAxVn2UNqz5W0qngK14R88os1rXfOdjZSvkalnAzPelLg7 CghNFx61yHg29iHrZ/bpYoXUE X-Received: by 2002:a5d:4851:: with SMTP id n17mr4261965wrs.191.1632987772779; Thu, 30 Sep 2021 00:42:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhlzaKa6LHbxGa5seCiD0C21SQXLN7ZrqE6U5ETyMCH2d6xh6rUVbXJXYiYB4iXDvOv1EkJg== X-Received: by 2002:a5d:4851:: with SMTP id n17mr4261944wrs.191.1632987772526; Thu, 30 Sep 2021 00:42:52 -0700 (PDT) Received: from ?IPv6:2a01:e0a:59e:9d80:527b:9dff:feef:3874? ([2a01:e0a:59e:9d80:527b:9dff:feef:3874]) by smtp.gmail.com with ESMTPSA id k18sm2143522wrh.68.2021.09.30.00.42.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 30 Sep 2021 00:42:52 -0700 (PDT) Subject: Re: [PATCH v3 07/10] KVM: arm64: selftests: Add some tests for GICv2 in vgic_init To: Ricardo Koller , kvm@vger.kernel.org, maz@kernel.org, kvmarm@lists.cs.columbia.edu, drjones@redhat.com, alexandru.elisei@arm.com References: <20210928184803.2496885-1-ricarkol@google.com> <20210928184803.2496885-8-ricarkol@google.com> From: Eric Auger Message-ID: <00b3c776-71e4-3687-0510-540462a43840@redhat.com> Date: Thu, 30 Sep 2021 09:42:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20210928184803.2496885-8-ricarkol@google.com> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eric.auger@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: pshier@google.com, Paolo Bonzini , shuah@kernel.org X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list Reply-To: eric.auger@redhat.com List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu SGkgUmljYXJkbywKCk9uIDkvMjgvMjEgODo0OCBQTSwgUmljYXJkbyBLb2xsZXIgd3JvdGU6Cj4g QWRkIHNvbWUgR0lDdjIgdGVzdHM6IGdlbmVyYWwgS1ZNIGRldmljZSB0ZXN0cyBhbmQgRElTVC9S RURJU1Qgb3ZlcmxhcAo+IHRlc3RzLiAgRG8gdGhpcyBieSBtYWtpbmcgdGVzdF92Y3B1c190aGVu X3ZnaWMgYW5kIHRlc3RfdmdpY190aGVuX3ZjcHVzCj4gaW4gdmdpY19pbml0IEdJQyB2ZXJzaW9u IGFnbm9zdGljLgo+Cj4gU2lnbmVkLW9mZi1ieTogUmljYXJkbyBLb2xsZXIgPHJpY2Fya29sQGdv b2dsZS5jb20+Cj4gLS0tCj4gIC4uLi90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWFyY2g2NC92Z2lj X2luaXQuYyB8IDEwNyArKysrKysrKysrKystLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDc1IGlu c2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL2t2bS9hYXJjaDY0L3ZnaWNfaW5pdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMva3ZtL2FhcmNoNjQvdmdpY19pbml0LmMKPiBpbmRleCBiMjQwNjdkYmRhYzAuLjkyZjVj NmNhNmI4YiAxMDA2NDQKPiAtLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWFyY2g2 NC92Z2ljX2luaXQuYwo+ICsrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hYXJjaDY0 L3ZnaWNfaW5pdC5jCj4gQEAgLTc5LDc0ICs3OSwxMTYgQEAgc3RhdGljIHZvaWQgdm1fZ2ljX2Rl c3Ryb3koc3RydWN0IHZtX2dpYyAqdikKPiAgCWt2bV92bV9mcmVlKHYtPnZtKTsKPiAgfQo+ICAK PiArc3RydWN0IHZnaWNfcmVnaW9uX2F0dHIgewo+ICsJdWludDY0X3QgYXR0cjsKPiArCXVpbnQ2 NF90IHNpemU7Cj4gKwl1aW50NjRfdCBhbGlnbm1lbnQ7Cj4gK307Cj4gKwo+ICtzdHJ1Y3Qgdmdp Y19yZWdpb25fYXR0ciBnaWNfdjNfZGlzdF9yZWdpb24gPSB7Cj4gKwkuYXR0ciA9IEtWTV9WR0lD X1YzX0FERFJfVFlQRV9ESVNULAo+ICsJLnNpemUgPSAweDEwMDAwLAo+ICsJLmFsaWdubWVudCA9 IDB4MTAwMDAsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgdmdpY19yZWdpb25fYXR0ciBnaWNfdjNfcmVk aXN0X3JlZ2lvbiA9IHsKPiArCS5hdHRyID0gS1ZNX1ZHSUNfVjNfQUREUl9UWVBFX1JFRElTVCwK PiArCS5zaXplID0gTlJfVkNQVVMgKiAweDIwMDAwLAo+ICsJLmFsaWdubWVudCA9IDB4MTAwMDAs Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgdmdpY19yZWdpb25fYXR0ciBnaWNfdjJfZGlzdF9yZWdpb24g PSB7Cj4gKwkuYXR0ciA9IEtWTV9WR0lDX1YyX0FERFJfVFlQRV9ESVNULAo+ICsJLnNpemUgPSAw eDEwMDAsCj4gKwkuYWxpZ25tZW50ID0gMHgxMDAwLAo+ICt9Owo+ICsKPiArc3RydWN0IHZnaWNf cmVnaW9uX2F0dHIgZ2ljX3YyX2NwdV9yZWdpb24gPSB7Cj4gKwkuYXR0ciA9IEtWTV9WR0lDX1Yy X0FERFJfVFlQRV9DUFUsCj4gKwkuc2l6ZSA9IDB4MjAwMCwKPiArCS5hbGlnbm1lbnQgPSAweDEw MDAsCj4gK307Cj4gKwo+ICAvKioKPiAtICogSGVscGVyIHJvdXRpbmUgdGhhdCBwZXJmb3JtcyBL Vk0gZGV2aWNlIHRlc3RzIGluIGdlbmVyYWwgYW5kCj4gLSAqIGVzcGVjaWFsbHkgQVJNX1ZHSUNf VjMgb25lcy4gRXZlbnR1YWxseSB0aGUgQVJNX1ZHSUNfVjMKPiAtICogZGV2aWNlIGdldHMgY3Jl YXRlZCwgYSBsZWdhY3kgUkRJU1QgcmVnaW9uIGlzIHNldCBhdCBAMHgwCj4gLSAqIGFuZCBhIERJ U1QgcmVnaW9uIGlzIHNldCBAMHg2MDAwMAo+ICsgKiBIZWxwZXIgcm91dGluZSB0aGF0IHBlcmZv cm1zIEtWTSBkZXZpY2UgdGVzdHMgaW4gZ2VuZXJhbC4gRXZlbnR1YWxseSB0aGUKPiArICogQVJN X1ZHSUMgKEdJQ3YyIG9yIEdJQ3YzKSBkZXZpY2UgZ2V0cyBjcmVhdGVkIHdpdGggYW4gb3Zlcmxh cHBpbmcKPiArICogRElTVC9SRURJU1QuIEEgUkRJU1QgcmVnaW9uIChsZWdhY3kgaW4gdGhlIGNh c2Ugb2YgR0lDdjMpIGlzIHNldCBhdCBAMHgwIGFuZAo+ICsgKiBhIERJU1QgcmVnaW9uIGlzIHNl dCBAMHg3MDAwMCBmb3IgR0lDdjMgYW5kIEAweDEwMDAgZm9yIEdJQ3YyLgpJIHdvdWxkIGFkZCAi QXNzdW1wdGlvbiBpcyA0IHZjcHVzIGFyZSBnb2luZyB0byBiZSB1c2VkIGhlbmNlIHRoZSBvdmVy bGFwIi4KQWxzbyB0aGUgUkRJU1QgaXMgR0lDdjMgb25seS4gSW4gdGhlIGFib3ZlIGNvbW1lbnQg YWxzbyBtZW50aW9uIHRoZSBDUFUgSS9GLgo+ICAgKi8KPiAtc3RhdGljIHZvaWQgc3VidGVzdF92 M19kaXN0X3JkaXN0KHN0cnVjdCB2bV9naWMgKnYpCj4gK3N0YXRpYyB2b2lkIHN1YnRlc3RfZGlz dF9yZGlzdChzdHJ1Y3Qgdm1fZ2ljICp2KQo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAJdWludDY0X3Qg YWRkcjsKPiArCXN0cnVjdCB2Z2ljX3JlZ2lvbl9hdHRyIHJkaXN0OyAvKiBDUFUgaW50ZXJmYWNl IGluIEdJQ3YyKi8KPiArCXN0cnVjdCB2Z2ljX3JlZ2lvbl9hdHRyIGRpc3Q7Cj4gKwo+ICsJcmRp c3QgPSBWR0lDX0RFVl9JU19WMyh2LT5naWNfZGV2X3R5cGUpID8gZ2ljX3YzX3JlZGlzdF9yZWdp b24KPiArCQkJCQkJOiBnaWNfdjJfY3B1X3JlZ2lvbjsKPiArCWRpc3QgPSBWR0lDX0RFVl9JU19W Myh2LT5naWNfZGV2X3R5cGUpID8gZ2ljX3YzX2Rpc3RfcmVnaW9uCj4gKwkJCQkJCTogZ2ljX3Yy X2Rpc3RfcmVnaW9uOwo+ICAKPiAgCS8qIENoZWNrIGV4aXN0aW5nIGdyb3VwL2F0dHJpYnV0ZXMg Ki8KPiAgCWt2bV9kZXZpY2VfY2hlY2tfYXR0cih2LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNf R1JQX0FERFIsCj4gLQkJCSAgICAgIEtWTV9WR0lDX1YzX0FERFJfVFlQRV9ESVNUKTsKPiArCQkJ ICAgICAgZGlzdC5hdHRyKTsKPiAgCj4gIAlrdm1fZGV2aWNlX2NoZWNrX2F0dHIodi0+Z2ljX2Zk LCBLVk1fREVWX0FSTV9WR0lDX0dSUF9BRERSLAo+IC0JCQkgICAgICBLVk1fVkdJQ19WM19BRERS X1RZUEVfUkVESVNUKTsKPiArCQkJICAgICAgcmRpc3QuYXR0cik7Cj4gIAo+ICAJLyogY2hlY2sg bm9uIGV4aXN0aW5nIGF0dHJpYnV0ZSAqLwo+IC0JcmV0ID0gX2t2bV9kZXZpY2VfY2hlY2tfYXR0 cih2LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNfR1JQX0FERFIsIDApOwo+ICsJcmV0ID0gX2t2 bV9kZXZpY2VfY2hlY2tfYXR0cih2LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNfR1JQX0FERFIs IC0xKTsKd2FzIHRoYXQgbmVjZXNzYXJ5Pwo+ICAJVEVTVF9BU1NFUlQocmV0ICYmIGVycm5vID09 IEVOWElPLCAiYXR0cmlidXRlIG5vdCBzdXBwb3J0ZWQiKTsKPiAgCj4gIAkvKiBtaXNhbGlnbmVk IERJU1QgYW5kIFJFRElTVCBhZGRyZXNzIHNldHRpbmdzICovCj4gLQlhZGRyID0gMHgxMDAwOwo+ ICsJYWRkciA9IGRpc3QuYWxpZ25tZW50IC8gMHgxMDsKPiAgCXJldCA9IF9rdm1fZGV2aWNlX2Fj Y2Vzcyh2LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNfR1JQX0FERFIsCj4gLQkJCQkgS1ZNX1ZH SUNfVjNfQUREUl9UWVBFX0RJU1QsICZhZGRyLCB0cnVlKTsKPiAtCVRFU1RfQVNTRVJUKHJldCAm JiBlcnJubyA9PSBFSU5WQUwsICJHSUN2MyBkaXN0IGJhc2Ugbm90IDY0a0IgYWxpZ25lZCIpOwo+ ICsJCQkJIGRpc3QuYXR0ciwgJmFkZHIsIHRydWUpOwo+ICsJVEVTVF9BU1NFUlQocmV0ICYmIGVy cm5vID09IEVJTlZBTCwgIkdJQyBkaXN0IGJhc2Ugbm90IGFsaWduZWQiKTsKPiAgCj4gKwlhZGRy ID0gcmRpc3QuYWxpZ25tZW50IC8gMHgxMDsKPiAgCXJldCA9IF9rdm1fZGV2aWNlX2FjY2Vzcyh2 LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNfR1JQX0FERFIsCj4gLQkJCQkgS1ZNX1ZHSUNfVjNf QUREUl9UWVBFX1JFRElTVCwgJmFkZHIsIHRydWUpOwo+IC0JVEVTVF9BU1NFUlQocmV0ICYmIGVy cm5vID09IEVJTlZBTCwgIkdJQ3YzIHJlZGlzdCBiYXNlIG5vdCA2NGtCIGFsaWduZWQiKTsKPiAr CQkJCSByZGlzdC5hdHRyLCAmYWRkciwgdHJ1ZSk7Cj4gKwlURVNUX0FTU0VSVChyZXQgJiYgZXJy bm8gPT0gRUlOVkFMLCAiR0lDIHJlZGlzdC9jcHUgYmFzZSBub3QgYWxpZ25lZCIpOwo+ICAKPiAg CS8qIG91dCBvZiByYW5nZSBhZGRyZXNzICovCj4gIAlpZiAobWF4X2lwYV9iaXRzKSB7Cj4gIAkJ YWRkciA9IDFVTEwgPDwgbWF4X2lwYV9iaXRzOwo+ICAJCXJldCA9IF9rdm1fZGV2aWNlX2FjY2Vz cyh2LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNfR1JQX0FERFIsCj4gLQkJCQkJIEtWTV9WR0lD X1YzX0FERFJfVFlQRV9ESVNULCAmYWRkciwgdHJ1ZSk7Cj4gKwkJCQkJIGRpc3QuYXR0ciwgJmFk ZHIsIHRydWUpOwo+ICAJCVRFU1RfQVNTRVJUKHJldCAmJiBlcnJubyA9PSBFMkJJRywgImRpc3Qg YWRkcmVzcyBiZXlvbmQgSVBBIGxpbWl0Iik7Cj4gIAo+ICAJCXJldCA9IF9rdm1fZGV2aWNlX2Fj Y2Vzcyh2LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNfR1JQX0FERFIsCj4gLQkJCQkJIEtWTV9W R0lDX1YzX0FERFJfVFlQRV9SRURJU1QsICZhZGRyLCB0cnVlKTsKPiArCQkJCQkgcmRpc3QuYXR0 ciwgJmFkZHIsIHRydWUpOwo+ICAJCVRFU1RfQVNTRVJUKHJldCAmJiBlcnJubyA9PSBFMkJJRywg InJlZGlzdCBhZGRyZXNzIGJleW9uZCBJUEEgbGltaXQiKTsKPiAgCX0KPiAgCj4gIAkvKiBzZXQg UkVESVNUIGJhc2UgYWRkcmVzcyBAMHgwKi8KPiAgCWFkZHIgPSAweDAwMDAwOwo+ICAJa3ZtX2Rl dmljZV9hY2Nlc3Modi0+Z2ljX2ZkLCBLVk1fREVWX0FSTV9WR0lDX0dSUF9BRERSLAo+IC0JCQkg IEtWTV9WR0lDX1YzX0FERFJfVFlQRV9SRURJU1QsICZhZGRyLCB0cnVlKTsKPiArCQkJICByZGlz dC5hdHRyLCAmYWRkciwgdHJ1ZSk7Cj4gIAo+ICAJLyogQXR0ZW1wdCB0byBjcmVhdGUgYSBzZWNv bmQgbGVnYWN5IHJlZGlzdHJpYnV0b3IgcmVnaW9uICovCj4gIAlhZGRyID0gMHhFMDAwMDsKPiAg CXJldCA9IF9rdm1fZGV2aWNlX2FjY2Vzcyh2LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNfR1JQ X0FERFIsCj4gLQkJCQkgS1ZNX1ZHSUNfVjNfQUREUl9UWVBFX1JFRElTVCwgJmFkZHIsIHRydWUp Owo+IC0JVEVTVF9BU1NFUlQocmV0ICYmIGVycm5vID09IEVFWElTVCwgIkdJQ3YzIHJlZGlzdCBi YXNlIHNldCBhZ2FpbiIpOwo+ICsJCQkJIHJkaXN0LmF0dHIsICZhZGRyLCB0cnVlKTsKPiArCVRF U1RfQVNTRVJUKHJldCAmJiBlcnJubyA9PSBFRVhJU1QsICJHSUMgcmVkaXN0IGJhc2Ugc2V0IGFn YWluIik7Cj4gIAo+IC0JLyogQXR0ZW1wdCB0byBtaXggbGVnYWN5IGFuZCBuZXcgcmVkaXN0cmli dXRvciByZWdpb25zICovCj4gLQlhZGRyID0gUkVESVNUX1JFR0lPTl9BVFRSX0FERFIoTlJfVkNQ VVMsIDB4MTAwMDAwLCAwLCAwKTsKPiAtCXJldCA9IF9rdm1fZGV2aWNlX2FjY2Vzcyh2LT5naWNf ZmQsIEtWTV9ERVZfQVJNX1ZHSUNfR1JQX0FERFIsCj4gLQkJCQkgS1ZNX1ZHSUNfVjNfQUREUl9U WVBFX1JFRElTVF9SRUdJT04sICZhZGRyLCB0cnVlKTsKPiAtCVRFU1RfQVNTRVJUKHJldCAmJiBl cnJubyA9PSBFSU5WQUwsICJhdHRlbXB0IHRvIG1peCBHSUN2MyBSRURJU1QgYW5kIFJFRElTVF9S RUdJT04iKTsKPiArCWlmIChWR0lDX0RFVl9JU19WMyh2LT5naWNfZGV2X3R5cGUpKSB7Ckluc3Rl YWQgeW91IGNvdWxkIGNoZWNrCsKgwqDCoCByZXQgPSBrdm1fZGV2aWNlX2NoZWNrX2F0dHIodi0+ Z2ljX2ZkLCBLVk1fREVWX0FSTV9WR0lDX0dSUF9BRERSLArCoMKgwqAgwqDCoMKgIMKgwqDCoCDC oMKgwqAgwqDCoMKgwqAgS1ZNX1ZHSUNfVjNfQUREUl9UWVBFX1JFRElTVCk7Cj4gKwkJLyogQXR0 ZW1wdCB0byBtaXggbGVnYWN5IGFuZCBuZXcgcmVkaXN0cmlidXRvciByZWdpb25zICovCj4gKwkJ YWRkciA9IFJFRElTVF9SRUdJT05fQVRUUl9BRERSKE5SX1ZDUFVTLCAweDEwMDAwMCwgMCwgMCk7 Cj4gKwkJcmV0ID0gX2t2bV9kZXZpY2VfYWNjZXNzKHYtPmdpY19mZCwgS1ZNX0RFVl9BUk1fVkdJ Q19HUlBfQUREUiwKPiArCQkJCQkgS1ZNX1ZHSUNfVjNfQUREUl9UWVBFX1JFRElTVF9SRUdJT04s Cj4gKwkJCQkJICZhZGRyLCB0cnVlKTsKPiArCQlURVNUX0FTU0VSVChyZXQgJiYgZXJybm8gPT0g RUlOVkFMLAo+ICsJCQkgICAgImF0dGVtcHQgdG8gbWl4IEdJQ3YzIFJFRElTVCBhbmQgUkVESVNU X1JFR0lPTiIpOwo+ICsJfQo+ICAKPiAgCS8qCj4gIAkgKiBTZXQgb3ZlcmxhcHBpbmcgRElTVCAv IFJFRElTVCwgY2Fubm90IGJlIGRldGVjdGVkIGhlcmUuIFdpbGwgYmUgZGV0ZWN0ZWQKPiAgCSAq IG9uIGZpcnN0IHZjcHUgcnVuIGluc3RlYWQuCj4gIAkgKi8KPiAtCWFkZHIgPSAzICogMiAqIDB4 MTAwMDA7Cj4gLQlrdm1fZGV2aWNlX2FjY2Vzcyh2LT5naWNfZmQsIEtWTV9ERVZfQVJNX1ZHSUNf R1JQX0FERFIsIEtWTV9WR0lDX1YzX0FERFJfVFlQRV9ESVNULAo+IC0JCQkgICZhZGRyLCB0cnVl KTsKPiArCWFkZHIgPSByZGlzdC5zaXplIC0gcmRpc3QuYWxpZ25tZW50Owo+ICsJa3ZtX2Rldmlj ZV9hY2Nlc3Modi0+Z2ljX2ZkLCBLVk1fREVWX0FSTV9WR0lDX0dSUF9BRERSLAo+ICsJCQkgIGRp c3QuYXR0ciwgJmFkZHIsIHRydWUpOwo+ICB9Cj4gIAo+ICAvKiBUZXN0IHRoZSBuZXcgUkVESVNU IHJlZ2lvbiBBUEkgKi8KPiBAQCAtMjU2LDE0ICsyOTgsMTQgQEAgc3RhdGljIHZvaWQgc3VidGVz dF92M19yZWRpc3RfcmVnaW9ucyhzdHJ1Y3Qgdm1fZ2ljICp2KQo+ICAgKiBWR0lDIEtWTSBkZXZp Y2UgaXMgY3JlYXRlZCBhbmQgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBzZWNvbmRhcnkgQ1BVcwo+ ICAgKiBnZXQgY3JlYXRlZAo+ICAgKi8KPiAtc3RhdGljIHZvaWQgdGVzdF92M192Z2ljX3RoZW5f dmNwdXModWludDMyX3QgZ2ljX2Rldl90eXBlKQo+ICtzdGF0aWMgdm9pZCB0ZXN0X3ZnaWNfdGhl bl92Y3B1cyh1aW50MzJfdCBnaWNfZGV2X3R5cGUpCj4gIHsKPiAgCXN0cnVjdCB2bV9naWMgdjsK PiAgCWludCByZXQsIGk7Cj4gIAo+ICAJdiA9IHZtX2dpY19jcmVhdGVfd2l0aF92Y3B1cyhnaWNf ZGV2X3R5cGUsIDEpOwo+ICAKPiAtCXN1YnRlc3RfdjNfZGlzdF9yZGlzdCgmdik7Cj4gKwlzdWJ0 ZXN0X2Rpc3RfcmRpc3QoJnYpOwo+ICAKPiAgCS8qIEFkZCB0aGUgcmVzdCBvZiB0aGUgVkNQVXMg Ki8KPiAgCWZvciAoaSA9IDE7IGkgPCBOUl9WQ1BVUzsgKytpKQo+IEBAIC0yNzYsMTQgKzMxOCwx NCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3YzX3ZnaWNfdGhlbl92Y3B1cyh1aW50MzJfdCBnaWNfZGV2 X3R5cGUpCj4gIH0KPiAgCj4gIC8qIEFsbCB0aGUgVkNQVXMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRo ZSBWR0lDIEtWTSBkZXZpY2UgZ2V0cyBpbml0aWFsaXplZCAqLwo+IC1zdGF0aWMgdm9pZCB0ZXN0 X3YzX3ZjcHVzX3RoZW5fdmdpYyh1aW50MzJfdCBnaWNfZGV2X3R5cGUpCj4gK3N0YXRpYyB2b2lk IHRlc3RfdmNwdXNfdGhlbl92Z2ljKHVpbnQzMl90IGdpY19kZXZfdHlwZSkKPiAgewo+ICAJc3Ry dWN0IHZtX2dpYyB2Owo+ICAJaW50IHJldDsKPiAgCj4gIAl2ID0gdm1fZ2ljX2NyZWF0ZV93aXRo X3ZjcHVzKGdpY19kZXZfdHlwZSwgTlJfVkNQVVMpOwo+ICAKPiAtCXN1YnRlc3RfdjNfZGlzdF9y ZGlzdCgmdik7Cj4gKwlzdWJ0ZXN0X2Rpc3RfcmRpc3QoJnYpOwo+ICAKPiAgCXJldCA9IHJ1bl92 Y3B1KHYudm0sIDMpOwo+ICAJVEVTVF9BU1NFUlQocmV0ID09IC1FSU5WQUwsICJkaXN0L3JkaXN0 IG92ZXJsYXAgZGV0ZWN0ZWQgb24gMXN0IHZjcHUgcnVuIik7Cj4gQEAgLTU1Miw5ICs1OTQsMTAg QEAgaW50IHRlc3Rfa3ZtX2RldmljZSh1aW50MzJfdCBnaWNfZGV2X3R5cGUpCj4gIAo+ICB2b2lk IHJ1bl90ZXN0cyh1aW50MzJfdCBnaWNfZGV2X3R5cGUpCj4gIHsKPiArCXRlc3RfdmNwdXNfdGhl bl92Z2ljKGdpY19kZXZfdHlwZSk7Cj4gKwl0ZXN0X3ZnaWNfdGhlbl92Y3B1cyhnaWNfZGV2X3R5 cGUpOwo+ICsKPiAgCWlmIChWR0lDX0RFVl9JU19WMyhnaWNfZGV2X3R5cGUpKSB7Cj4gLQkJdGVz dF92M192Y3B1c190aGVuX3ZnaWMoZ2ljX2Rldl90eXBlKTsKPiAtCQl0ZXN0X3YzX3ZnaWNfdGhl bl92Y3B1cyhnaWNfZGV2X3R5cGUpOwo+ICAJCXRlc3RfdjNfbmV3X3JlZGlzdF9yZWdpb25zKCk7 Cj4gIAkJdGVzdF92M190eXBlcl9hY2Nlc3NlcygpOwo+ICAJCXRlc3RfdjNfbGFzdF9iaXRfcmVk aXN0X3JlZ2lvbnMoKTsKVGhhbmtzCgpFcmljCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwprdm1hcm0gbWFpbGluZyBsaXN0Cmt2bWFybUBsaXN0cy5jcy5j b2x1bWJpYS5lZHUKaHR0cHM6Ly9saXN0cy5jcy5jb2x1bWJpYS5lZHUvbWFpbG1hbi9saXN0aW5m by9rdm1hcm0K