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=-3.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 0B383C4363A for ; Tue, 27 Oct 2020 22:12:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C29E222202 for ; Tue, 27 Oct 2020 22:12:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="LtnA6UTj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S374764AbgJ0WMK (ORCPT ); Tue, 27 Oct 2020 18:12:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:37218 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S374763AbgJ0WMJ (ORCPT ); Tue, 27 Oct 2020 18:12:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603836727; h=from:from: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=zRuFbHtaAkJdPTvp6LEp7mXtZfo5ruFW5uTt7pI7cuY=; b=LtnA6UTjdjPStLmy4DNZkY+3AXxGpStS94smwBkRXdpja+eoKAM1KUIJmfJmt9nITZwxhC UahVIvjeJz22vutJtEga1nhrVoo8ebLfbtC+8pYPxN58Z/+RWhHhkJGa1+oAbeKHmGQnjm BuOK+FVpUf5IE4QMWCeUTq7upWjnyL0= Received: from mail-io1-f72.google.com (mail-io1-f72.google.com [209.85.166.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-182-a_ZfZFROP9el93sjYNJsBQ-1; Tue, 27 Oct 2020 18:12:05 -0400 X-MC-Unique: a_ZfZFROP9el93sjYNJsBQ-1 Received: by mail-io1-f72.google.com with SMTP id s10so1966586iot.21 for ; Tue, 27 Oct 2020 15:12:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=zRuFbHtaAkJdPTvp6LEp7mXtZfo5ruFW5uTt7pI7cuY=; b=P6hY1Vsi0qLw3U1C6QwT6kjJ3vQcGxpR8zaf8HhVPJbQeiZKPszU2QCM2GU3ovO8kZ GXR+AxZBNtjnhdnj7PI8rgSksq7BS/RT4kQ+9osxIXoUvJ2BBn1dGYYtSviPzGP0yiAb DAIcBGmDWZWgx5OlKfqI6Nlyzonl4li61eboTHNQTVjRCc3sDOBnHkxnG863+izTonRk ROoCvwzicgK9TXwSNJUvFXtgQwgj01so2a68T6jzb0+ZbRKzN/dfDRnif7x57hGyHBz8 cetM875D3EySEYLM0nLEBpHjcuH4+7+FcRCE7iown1HCfxhGbopbLFRL+5o7BmDsnqUV qb8w== X-Gm-Message-State: AOAM531kU+1PXSznM7JBaOEr/19HPrdNYo7WvkQSboX5Q6JIe7RirjOU zOFFQCUMPDKKNikUCLqI/2j5LSR2scIAlnnjHgRCKbeeXal/7DrqEqF/R3C+hUzENhjW/T8gd1p lnzmXFMIA5EeIDsJWEKkG X-Received: by 2002:a92:9911:: with SMTP id p17mr3568415ili.165.1603836725024; Tue, 27 Oct 2020 15:12:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwlvUTTXC9XO8ce1nBV02/0A4u/BTtOd3xrQaDggtovnoJg4byxd6zmlfrpKkEBHIvzOElcaQ== X-Received: by 2002:a92:9911:: with SMTP id p17mr3568390ili.165.1603836724725; Tue, 27 Oct 2020 15:12:04 -0700 (PDT) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id m66sm1731362ill.69.2020.10.27.15.12.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2020 15:12:04 -0700 (PDT) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 422C2181CED; Tue, 27 Oct 2020 23:12:02 +0100 (CET) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: vtolkm@gmail.com Cc: linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Rob Herring , Ilias Apalodimas , Bjorn Helgaas Subject: Re: PCI trouble on mvebu (Turris Omnia) In-Reply-To: <15545174-46bf-8a35-0612-950a3dbefd0a@gmail.com> References: <20201027172006.GA186901@bjorn-Precision-5520> <87d013wl52.fsf@toke.dk> <874kmfwhdb.fsf@toke.dk> <03d03828-fec2-5062-5c0b-ffc1df719911@gmail.com> <87y2jruziw.fsf@toke.dk> <15545174-46bf-8a35-0612-950a3dbefd0a@gmail.com> X-Clacks-Overhead: GNU Terry Pratchett Date: Tue, 27 Oct 2020 23:12:02 +0100 Message-ID: <87v9evuxn1.fsf@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org "=E2=84=A2=D6=9F=E2=98=BB=D2=87=CC=AD =D1=BC =D2=89 =C2=AE" writes: > On 27/10/2020 22:31, Toke H=C3=B8iland-J=C3=B8rgensen wrote: >>>> To follow up on this, everything seems to work just fine (ath10k init = at >>>> boot + regulatory db load) if I simply set: >>>> >>>> CONFIG_EXTRA_FIRMWARE=3D"ath10k/QCA988X/hw2.0/board.bin ath10k/QCA988X= /hw2.0/firmware-5.bin regulatory.db regulatory.db.p7s" >>>> >>>> -Toke >>>> >>> That works on my node only for the regulatory files but not the ath10 >>> firmware with kconfig: >>> >>> =C2=A0Symbol: EXTRA_FIRMWARE_DIR [=3D/srv/fw] >>> =C2=A0Type=C2=A0 : string >>> =C2=A0Defined at drivers/base/firmware_loader/Kconfig:63 >>> =C2=A0=C2=A0 Prompt: Firmware blobs root directory >>> =C2=A0=C2=A0 Depends on: FW_LOADER [=3Dy] && EXTRA_FIRMWARE [=3Dregul= atory.db >>> regulatory.db.p7s board.bin firmware-5.bin]!=3D >>> =C2=A0=C2=A0 Location: >>> =C2=A0=C2=A0=C2=A0 -> Device Drivers >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -> Generic Driver Options >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -> Firmware loader >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -> Firmware lo= ading facility (FW_LOADER [=3Dy]) >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ->= Build named firmware blobs into the kernel binary >>> (EXTRA_FIRMWARE [=3Dregulatory.db regulatory.db.p7s board.bin >>> firmware-5.bin]) >> I think that's because you're missing the path prefix >> (ath10k/QCA988X/hw2.0/) from board.bin and firmware-5.bin? >> request_firmware() uses the full path... >> >> -Toke > > Well, that would be weird/strange having to specify the path prefix for=20 > build-in firmware,considering: > > =C2=A0CONFIG_FW_LOADER: > > =C2=A0This enables the firmware loading facility in the kernel. The kern= el > =C2=A0will first look for built-in firmware, if it has any. Next, it will > =C2=A0look for the requested firmware in a series of filesystem paths: > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 o firmware_class path module parame= ter or kernel boot param > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 o /lib/firmware/updates/UTS_RELEASE > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 o /lib/firmware/updates > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 o /lib/firmware/UTS_RELEASE > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 o /lib/firmware Why would that be weird? The driver is requesting firmware with a path prefix, so the firmware location has to match... Doesn't matter if it's in the filesystem or builtin. > ---- > > Nevertheless, I tried with same path prefix as per your kconfig but the=20 > compilation fails, which I am not surprised since the ath10 blobs are=20 > not located at that path Well you'd need to fix that :) > =C2=A0 UPD=C2=A0=C2=A0=C2=A0=C2=A0 drivers/base/firmware_loader/builtin/= regulatory.db.gen.S > =C2=A0 UPD drivers/base/firmware_loader/builtin/regulatory.db.p7s.gen.S > make[4]: *** No rule to make target=20 > '/srv/fw/ath10k/QCA988X/hw2.0/board.bin', needed by Based on that error message, you'd need to do something like: mkdir -p /srv/fw/ath10k/QCA988X/hw2.0 mv /srv/fw/{board.bin,firmware-5.bin} /srv/fw/ath10k/QCA988X/hw2.0 > 'drivers/base/firmware_loader/builtin/ath10k/QCA988X/hw2.0/board.bin.gen.= o'.=20 > Stop. > make[4]: *** Waiting for unfinished jobs.... > =C2=A0 UPD=20 > drivers/base/firmware_loader/builtin/ath10k/QCA988X/hw2.0/board.bin.gen.S > make[3]: *** [scripts/Makefile.build:500:=20 > drivers/base/firmware_loader/builtin] Error 2 > make[2]: *** [scripts/Makefile.build:500: drivers/base/firmware_loader]=20 > Error 2 > make[1]: *** [scripts/Makefile.build:500: drivers/base] Error 2 > make[1]: *** Waiting for unfinished jobs.... > make: *** [Makefile:1799: drivers] Error 2 > make: *** Waiting for unfinished jobs.... > > I suspect that since you are booting the kernel directly from my build=20 > box over tftp it accesses the ath10 firmware blobs on the build box. Yes, obviously it's reading the firmware blobs at build time from the location on the build box, then embedding them in the kernel image, which is then served over tftp to the Omnia. It's not loading anything from the build box after that (how would that work?) -Toke 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=-3.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 1EEA0C4363A for ; Tue, 27 Oct 2020 22:13:47 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 98D1521D24 for ; Tue, 27 Oct 2020 22:13:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="3kn4xAr/"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="aOus+LTM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 98D1521D24 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=C5KCZHg6+F3OMrEuYLInTOSqWLXkDbqj6duO7n72WIQ=; b=3kn4xAr/UpiIL1nwy5jSa660C 6EExGRCFg8AKrzExCUdvKWwReJDghmKX9TM8e6mtsSelVLYMGJwZ6xQwOCqvKLS4HiU8qfFucmyf3 W+fS8ZC5O1szbfSuNcgIO7FpXu3t4SEPWU+VX9DVTUF2C4F8UqqVB7+Jptd2DWbS08I27ZRepITI2 0AzQjbYGbF6705ZZ1B0WCg/32Vj0eI4uaNEXAGWZl8BbUC1K7+fHGrcjiW96MBcJFUetxJGmDkpUE ASTpudGkA6NFpZDwOFLA5UPea8+LILwsI44Mu9u7yFI9twtjYHBAh1RNRKWGRb2Q6XTza46UbPjYb 80L4TNnhg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kXXCM-0000KH-U3; Tue, 27 Oct 2020 22:12:11 +0000 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kXXCK-0000Jk-FP for linux-arm-kernel@lists.infradead.org; Tue, 27 Oct 2020 22:12:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603836727; h=from:from: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=XdA6FIVkNQMiQNqdodfet7VLU9AWb0lAl8g3s3tyGEk=; b=aOus+LTMqMP3QlaSM6q+sTcJv7/yaqNTkn6onkdzXGUoKxtgUhUHzKSZ/dugeXXKNw02/r lWGpcA6tYs8KxAS9nL4wybtYCFkSMvrnsFjgZ3e3VoPU7IbrcV968MJNz6VVS0GZiL7ga4 tKolpXwGwaOpkw453XDahyzYPMgpry0= Received: from mail-io1-f70.google.com (mail-io1-f70.google.com [209.85.166.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-455-NseKbfiVPimolwoxz-YSeg-1; Tue, 27 Oct 2020 18:12:05 -0400 X-MC-Unique: NseKbfiVPimolwoxz-YSeg-1 Received: by mail-io1-f70.google.com with SMTP id m25so1955172ioh.18 for ; Tue, 27 Oct 2020 15:12:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=zRuFbHtaAkJdPTvp6LEp7mXtZfo5ruFW5uTt7pI7cuY=; b=AaEReh/A1TdClysKJnBtwgDlcTqUo4P3cO7fRqtKZerBaXYX1kd1Om0sEOn8IwdRWX RcFs8lHIzkIV9uhOZ2gkEtYnuIZsYRwuwmdqzsHf37J7iGyzvGTLZ/zItAjTEbLVdV1/ tPIJuWYi5oqk3J0NJqyj4fAlKS+dapbCyhwqoeqVzNjZtdfSNIQUgOdl9xiivFws160J ta/C9e+tjKdMCZEUw2x4SGDzVaRffF87gt2dMCwW20doxPBjIc7Aq8jM2QXM3dEYl4ta 4fjx+AltmNa4qeSFH/NnTGfz4LJOcT3hVTMeF/JmqGk+YSaydZljzuTKunLGeY8aVRGf NbFA== X-Gm-Message-State: AOAM533MiUuSKU2oHzui+8W6TJ7Kp9dlXY4NONQ83b0YfXIiZPMiEJnr DDuSNMM7BS8IEaGnUy0hdEZMqpoqUmHseMV8D0bIh9einr8O7SXS2YgcY8MY0A5jLv76pZ0jMR5 vcEt5oI4Bf/JibPnAewAvM5LPEn5DyLmk+sc= X-Received: by 2002:a92:9911:: with SMTP id p17mr3568417ili.165.1603836725024; Tue, 27 Oct 2020 15:12:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwlvUTTXC9XO8ce1nBV02/0A4u/BTtOd3xrQaDggtovnoJg4byxd6zmlfrpKkEBHIvzOElcaQ== X-Received: by 2002:a92:9911:: with SMTP id p17mr3568390ili.165.1603836724725; Tue, 27 Oct 2020 15:12:04 -0700 (PDT) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id m66sm1731362ill.69.2020.10.27.15.12.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2020 15:12:04 -0700 (PDT) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 422C2181CED; Tue, 27 Oct 2020 23:12:02 +0100 (CET) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: vtolkm@gmail.com Subject: Re: PCI trouble on mvebu (Turris Omnia) In-Reply-To: <15545174-46bf-8a35-0612-950a3dbefd0a@gmail.com> References: <20201027172006.GA186901@bjorn-Precision-5520> <87d013wl52.fsf@toke.dk> <874kmfwhdb.fsf@toke.dk> <03d03828-fec2-5062-5c0b-ffc1df719911@gmail.com> <87y2jruziw.fsf@toke.dk> <15545174-46bf-8a35-0612-950a3dbefd0a@gmail.com> X-Clacks-Overhead: GNU Terry Pratchett Date: Tue, 27 Oct 2020 23:12:02 +0100 Message-ID: <87v9evuxn1.fsf@toke.dk> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=toke@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201027_181208_614475_397FD022 X-CRM114-Status: GOOD ( 17.77 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-pci@vger.kernel.org, Ilias Apalodimas , Bjorn Helgaas , linux-arm-kernel@lists.infradead.org, Rob Herring 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 IuKEotaf4pi70ofMrSDRvCDSiSDCriIgPHZ0b2xrbUBnb29nbGVtYWlsLmNvbT4gd3JpdGVzOgoK PiBPbiAyNy8xMC8yMDIwIDIyOjMxLCBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gd3JvdGU6Cj4+ Pj4gVG8gZm9sbG93IHVwIG9uIHRoaXMsIGV2ZXJ5dGhpbmcgc2VlbXMgdG8gd29yayBqdXN0IGZp bmUgKGF0aDEwayBpbml0IGF0Cj4+Pj4gYm9vdCArIHJlZ3VsYXRvcnkgZGIgbG9hZCkgaWYgSSBz aW1wbHkgc2V0Ogo+Pj4+Cj4+Pj4gQ09ORklHX0VYVFJBX0ZJUk1XQVJFPSJhdGgxMGsvUUNBOTg4 WC9odzIuMC9ib2FyZC5iaW4gYXRoMTBrL1FDQTk4OFgvaHcyLjAvZmlybXdhcmUtNS5iaW4gcmVn dWxhdG9yeS5kYiByZWd1bGF0b3J5LmRiLnA3cyIKPj4+Pgo+Pj4+IC1Ub2tlCj4+Pj4KPj4+IFRo YXQgd29ya3Mgb24gbXkgbm9kZSBvbmx5IGZvciB0aGUgcmVndWxhdG9yeSBmaWxlcyBidXQgbm90 IHRoZSBhdGgxMAo+Pj4gZmlybXdhcmUgd2l0aCBrY29uZmlnOgo+Pj4KPj4+ICAgwqBTeW1ib2w6 IEVYVFJBX0ZJUk1XQVJFX0RJUiBbPS9zcnYvZnddCj4+PiAgIMKgVHlwZcKgIDogc3RyaW5nCj4+ PiAgIMKgRGVmaW5lZCBhdCBkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWc6NjMK Pj4+ICAgwqDCoCBQcm9tcHQ6IEZpcm13YXJlIGJsb2JzIHJvb3QgZGlyZWN0b3J5Cj4+PiAgIMKg wqAgRGVwZW5kcyBvbjogRldfTE9BREVSIFs9eV0gJiYgRVhUUkFfRklSTVdBUkUgWz1yZWd1bGF0 b3J5LmRiCj4+PiByZWd1bGF0b3J5LmRiLnA3cyBib2FyZC5iaW4gZmlybXdhcmUtNS5iaW5dIT0K Pj4+ICAgwqDCoCBMb2NhdGlvbjoKPj4+ICAgwqDCoMKgIC0+IERldmljZSBEcml2ZXJzCj4+PiAg IMKgwqDCoMKgwqAgLT4gR2VuZXJpYyBEcml2ZXIgT3B0aW9ucwo+Pj4gICDCoMKgwqDCoMKgwqDC oCAtPiBGaXJtd2FyZSBsb2FkZXIKPj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIC0+IEZpcm13YXJl IGxvYWRpbmcgZmFjaWxpdHkgKEZXX0xPQURFUiBbPXldKQo+Pj4gICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC0+IEJ1aWxkIG5hbWVkIGZpcm13YXJlIGJsb2JzIGludG8gdGhlIGtlcm5lbCBiaW5h cnkKPj4+IChFWFRSQV9GSVJNV0FSRSBbPXJlZ3VsYXRvcnkuZGIgcmVndWxhdG9yeS5kYi5wN3Mg Ym9hcmQuYmluCj4+PiBmaXJtd2FyZS01LmJpbl0pCj4+IEkgdGhpbmsgdGhhdCdzIGJlY2F1c2Ug eW91J3JlIG1pc3NpbmcgdGhlIHBhdGggcHJlZml4Cj4+IChhdGgxMGsvUUNBOTg4WC9odzIuMC8p IGZyb20gYm9hcmQuYmluIGFuZCBmaXJtd2FyZS01LmJpbj8KPj4gcmVxdWVzdF9maXJtd2FyZSgp IHVzZXMgdGhlIGZ1bGwgcGF0aC4uLgo+Pgo+PiAtVG9rZQo+Cj4gV2VsbCwgdGhhdCB3b3VsZCBi ZSB3ZWlyZC9zdHJhbmdlIGhhdmluZyB0byBzcGVjaWZ5IHRoZSBwYXRoIHByZWZpeCBmb3IgCj4g YnVpbGQtaW4gZmlybXdhcmUsY29uc2lkZXJpbmc6Cj4KPiAgwqBDT05GSUdfRldfTE9BREVSOgo+ Cj4gIMKgVGhpcyBlbmFibGVzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGZhY2lsaXR5IGluIHRoZSBr ZXJuZWwuIFRoZSBrZXJuZWwKPiAgwqB3aWxsIGZpcnN0IGxvb2sgZm9yIGJ1aWx0LWluIGZpcm13 YXJlLCBpZiBpdCBoYXMgYW55LiBOZXh0LCBpdCB3aWxsCj4gIMKgbG9vayBmb3IgdGhlIHJlcXVl c3RlZCBmaXJtd2FyZSBpbiBhIHNlcmllcyBvZiBmaWxlc3lzdGVtIHBhdGhzOgo+Cj4gIMKgwqDC oMKgwqDCoCBvIGZpcm13YXJlX2NsYXNzIHBhdGggbW9kdWxlIHBhcmFtZXRlciBvciBrZXJuZWwg Ym9vdCBwYXJhbQo+ICDCoMKgwqDCoMKgwqAgbyAvbGliL2Zpcm13YXJlL3VwZGF0ZXMvVVRTX1JF TEVBU0UKPiAgwqDCoMKgwqDCoMKgIG8gL2xpYi9maXJtd2FyZS91cGRhdGVzCj4gIMKgwqDCoMKg wqDCoCBvIC9saWIvZmlybXdhcmUvVVRTX1JFTEVBU0UKPiAgwqDCoMKgwqDCoMKgIG8gL2xpYi9m aXJtd2FyZQoKV2h5IHdvdWxkIHRoYXQgYmUgd2VpcmQ/IFRoZSBkcml2ZXIgaXMgcmVxdWVzdGlu ZyBmaXJtd2FyZSB3aXRoIGEgcGF0aApwcmVmaXgsIHNvIHRoZSBmaXJtd2FyZSBsb2NhdGlvbiBo YXMgdG8gbWF0Y2guLi4gRG9lc24ndCBtYXR0ZXIgaWYgaXQncwppbiB0aGUgZmlsZXN5c3RlbSBv ciBidWlsdGluLgoKPiAtLS0tCj4KPiBOZXZlcnRoZWxlc3MsIEkgdHJpZWQgd2l0aCBzYW1lIHBh dGggcHJlZml4IGFzIHBlciB5b3VyIGtjb25maWcgYnV0IHRoZSAKPiBjb21waWxhdGlvbiBmYWls cywgd2hpY2ggSSBhbSBub3Qgc3VycHJpc2VkIHNpbmNlIHRoZSBhdGgxMCBibG9icyBhcmUgCj4g bm90IGxvY2F0ZWQgYXQgdGhhdCBwYXRoCgpXZWxsIHlvdSdkIG5lZWQgdG8gZml4IHRoYXQgOikK Cj4gIMKgIFVQRMKgwqDCoMKgIGRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvYnVpbHRpbi9y ZWd1bGF0b3J5LmRiLmdlbi5TCj4gIMKgIFVQRCBkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVy L2J1aWx0aW4vcmVndWxhdG9yeS5kYi5wN3MuZ2VuLlMKPiBtYWtlWzRdOiAqKiogTm8gcnVsZSB0 byBtYWtlIHRhcmdldCAKPiAnL3Nydi9mdy9hdGgxMGsvUUNBOTg4WC9odzIuMC9ib2FyZC5iaW4n LCBuZWVkZWQgYnkKCkJhc2VkIG9uIHRoYXQgZXJyb3IgbWVzc2FnZSwgeW91J2QgbmVlZCB0byBk byBzb21ldGhpbmcgbGlrZToKCm1rZGlyIC1wIC9zcnYvZncvYXRoMTBrL1FDQTk4OFgvaHcyLjAK bXYgL3Nydi9mdy97Ym9hcmQuYmluLGZpcm13YXJlLTUuYmlufSAvc3J2L2Z3L2F0aDEway9RQ0E5 ODhYL2h3Mi4wCgo+ICdkcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL2J1aWx0aW4vYXRoMTBr L1FDQTk4OFgvaHcyLjAvYm9hcmQuYmluLmdlbi5vJy4gCj4gU3RvcC4KPiBtYWtlWzRdOiAqKiog V2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgo+ICDCoCBVUEQgCj4gZHJpdmVycy9iYXNl L2Zpcm13YXJlX2xvYWRlci9idWlsdGluL2F0aDEway9RQ0E5ODhYL2h3Mi4wL2JvYXJkLmJpbi5n ZW4uUwo+IG1ha2VbM106ICoqKiBbc2NyaXB0cy9NYWtlZmlsZS5idWlsZDo1MDA6IAo+IGRyaXZl cnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvYnVpbHRpbl0gRXJyb3IgMgo+IG1ha2VbMl06ICoqKiBb c2NyaXB0cy9NYWtlZmlsZS5idWlsZDo1MDA6IGRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXJd IAo+IEVycm9yIDIKPiBtYWtlWzFdOiAqKiogW3NjcmlwdHMvTWFrZWZpbGUuYnVpbGQ6NTAwOiBk cml2ZXJzL2Jhc2VdIEVycm9yIDIKPiBtYWtlWzFdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hl ZCBqb2JzLi4uLgo+IG1ha2U6ICoqKiBbTWFrZWZpbGU6MTc5OTogZHJpdmVyc10gRXJyb3IgMgo+ IG1ha2U6ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCj4KPiBJIHN1c3BlY3Qg dGhhdCBzaW5jZSB5b3UgYXJlIGJvb3RpbmcgdGhlIGtlcm5lbCBkaXJlY3RseSBmcm9tIG15IGJ1 aWxkIAo+IGJveCBvdmVyIHRmdHAgaXQgYWNjZXNzZXMgdGhlIGF0aDEwIGZpcm13YXJlIGJsb2Jz IG9uIHRoZSBidWlsZCBib3guCgpZZXMsIG9idmlvdXNseSBpdCdzIHJlYWRpbmcgdGhlIGZpcm13 YXJlIGJsb2JzIGF0IGJ1aWxkIHRpbWUgZnJvbSB0aGUKbG9jYXRpb24gb24gdGhlIGJ1aWxkIGJv eCwgdGhlbiBlbWJlZGRpbmcgdGhlbSBpbiB0aGUga2VybmVsIGltYWdlLAp3aGljaCBpcyB0aGVu IHNlcnZlZCBvdmVyIHRmdHAgdG8gdGhlIE9tbmlhLiBJdCdzIG5vdCBsb2FkaW5nIGFueXRoaW5n CmZyb20gdGhlIGJ1aWxkIGJveCBhZnRlciB0aGF0IChob3cgd291bGQgdGhhdCB3b3JrPykKCi1U b2tlCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=