From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932706AbeEaDBk (ORCPT ); Wed, 30 May 2018 23:01:40 -0400 Received: from mailout.easymail.ca ([64.68.200.34]:50142 "EHLO mailout.easymail.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932633AbeEaDBg (ORCPT ); Wed, 30 May 2018 23:01:36 -0400 From: "Shuah Khan (Samsung OSG)" To: shuah@kernel.org, valentina.manea.m@gmail.com Cc: gregkh@linuxfoundation.org, mchehab+samsung@kernel.org, davem@davemloft.net, akpm@linux-foundation.org, linus.walleij@linaro.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH] selftests: add test for USB over IP driver Date: Wed, 30 May 2018 21:00:57 -0600 Message-Id: <20180531030057.32442-1-shuah@kernel.org> X-Mailer: git-send-email 2.14.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add test for USB over IP driver. This test runs several tests on a device specified in the -b argument and path to the usbip tools. usbip_test.sh -b -p e.g: cd tools/testing selftests/drivers/usb/usbip sudo ./usbip_test.sh -b 3-10.2 -p /tools/usb/usbip This test should be run as root and user should build usbip tools before running the test. The usbip test isn't included in the Kselftest run as it requires user to specify a device to run tests on. Signed-off-by: Shuah Khan (Samsung OSG) --- MAINTAINERS | 1 + .../selftests/drivers/usb/usbip/usbip_test.sh | 198 +++++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100755 tools/testing/selftests/drivers/usb/usbip/usbip_test.sh diff --git a/MAINTAINERS b/MAINTAINERS index ca4afd68530c..708b681a6fbd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14661,6 +14661,7 @@ S: Maintained F: Documentation/usb/usbip_protocol.txt F: drivers/usb/usbip/ F: tools/usb/usbip/ +F: tools/testing/selftests/drivers/usb/usbip/ USB PEGASUS DRIVER M: Petko Manolov diff --git a/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh b/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh new file mode 100755 index 000000000000..1893d0f59ad7 --- /dev/null +++ b/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh @@ -0,0 +1,198 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# Kselftest framework requirement - SKIP code is 4. +ksft_skip=4 + +usage() { echo "usbip_test.sh -b -p "; exit 1; } + +while getopts "h:b:p:" arg; do + case "${arg}" in + h) + usage + ;; + b) + busid=${OPTARG} + ;; + p) + tools_path=${OPTARG} + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +if [ -z "${busid}" ]; then + usage +fi + +echo "Running USB over IP Testing on $busid"; + +test_end_msg="End of USB over IP Testing on $busid" + +if [ $UID != 0 ]; then + echo "Please run usbip_test as root [SKIP]" + echo $test_end_msg + exit $ksft_skip +fi + +echo "Load usbip_host module" +if ! /sbin/modprobe -q -n usbip_host; then + echo "usbip_test: module usbip_host is not found [SKIP]" + echo $test_end_msg + exit $ksft_skip +fi + +if /sbin/modprobe -q usbip_host; then + /sbin/modprobe -q -r test_bitmap + echo "usbip_test: module usbip_host is loaded [OK]" +else + echo "usbip_test: module usbip_host failed to load [FAIL]" + echo $test_end_msg + exit 1 +fi + +echo "Load vhci_hcd module" +if /sbin/modprobe -q vhci_hcd; then + /sbin/modprobe -q -r test_bitmap + echo "usbip_test: module vhci_hcd is loaded [OK]" +else + echo "usbip_test: module vhci_hcd failed to load [FAIL]" + echo $test_end_msg + exit 1 +fi +echo "==============================================================" + +cd $tools_path; + +if [ ! -f src/usbip ]; then + echo "Please build usbip tools" + echo $test_end_msg + exit $ksft_skip +fi + +echo "Expect to see export-able devices"; +src/usbip list -l; +echo "==============================================================" + +echo "Run lsusb to see all usb devices" +lsusb -t; +echo "==============================================================" + +src/usbipd -D; + +echo "Get exported devices from localhost - expect to see none"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "bind devices"; +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Run lsusb - bound devices should be under usbip_host control" +lsusb -t; +echo "==============================================================" + +echo "bind devices - expect already bound messages" +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Get exported devices from localhost - expect to see exported devices"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "unbind devices"; +src/usbip unbind -b $busid; +echo "==============================================================" + +echo "Run lsusb - bound devices should be rebound to original drivers" +lsusb -t; +echo "==============================================================" + +echo "unbind devices - expect no devices bound message"; +src/usbip unbind -b $busid; +echo "==============================================================" + +echo "Get exported devices from localhost - expect to see none"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - should fail with no devices" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "bind devices"; +src/usbip bind -b $busid; +echo "==============================================================" + +echo "List imported devices - expect to see exported devices"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - should work" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "List imported devices - expect to see imported devices"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - expect already imported messages" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "Un-import devices"; +src/usbip detach -p 00; +src/usbip detach -p 01; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Un-import devices - expect no devices to detach messages"; +src/usbip detach -p 00; +src/usbip detach -p 01; +echo "==============================================================" + +echo "Detach invalid port tests - expect invalid port error message"; +src/usbip detach -p 100; +echo "==============================================================" + +echo "Expect to see export-able devices"; +src/usbip list -l; +echo "==============================================================" + +echo "Remove usbip_host module"; +rmmod usbip_host; + +echo "Run lsusb - bound devices should be rebound to original drivers" +lsusb -t; +echo "==============================================================" + +echo "Run bind without usbip_host - expect fail" +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Run lsusb - devices that failed to bind aren't bound to any driver" +lsusb -t; +echo "==============================================================" + +echo "modprobe usbip_host - does it work?" +/sbin/modprobe usbip_host +echo "Should see -busid- is not in match_busid table... skip! dmesg" +echo "==============================================================" +dmesg | grep "is not in match_busid table" +echo "==============================================================" + +echo $test_end_msg -- 2.14.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: shuah at kernel.org (Shuah Khan (Samsung OSG)) Date: Wed, 30 May 2018 21:00:57 -0600 Subject: [PATCH] selftests: add test for USB over IP driver Message-ID: <20180531030057.32442-1-shuah@kernel.org> Add test for USB over IP driver. This test runs several tests on a device specified in the -b argument and path to the usbip tools. usbip_test.sh -b -p e.g: cd tools/testing selftests/drivers/usb/usbip sudo ./usbip_test.sh -b 3-10.2 -p /tools/usb/usbip This test should be run as root and user should build usbip tools before running the test. The usbip test isn't included in the Kselftest run as it requires user to specify a device to run tests on. Signed-off-by: Shuah Khan (Samsung OSG) --- MAINTAINERS | 1 + .../selftests/drivers/usb/usbip/usbip_test.sh | 198 +++++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100755 tools/testing/selftests/drivers/usb/usbip/usbip_test.sh diff --git a/MAINTAINERS b/MAINTAINERS index ca4afd68530c..708b681a6fbd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14661,6 +14661,7 @@ S: Maintained F: Documentation/usb/usbip_protocol.txt F: drivers/usb/usbip/ F: tools/usb/usbip/ +F: tools/testing/selftests/drivers/usb/usbip/ USB PEGASUS DRIVER M: Petko Manolov diff --git a/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh b/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh new file mode 100755 index 000000000000..1893d0f59ad7 --- /dev/null +++ b/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh @@ -0,0 +1,198 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# Kselftest framework requirement - SKIP code is 4. +ksft_skip=4 + +usage() { echo "usbip_test.sh -b -p "; exit 1; } + +while getopts "h:b:p:" arg; do + case "${arg}" in + h) + usage + ;; + b) + busid=${OPTARG} + ;; + p) + tools_path=${OPTARG} + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +if [ -z "${busid}" ]; then + usage +fi + +echo "Running USB over IP Testing on $busid"; + +test_end_msg="End of USB over IP Testing on $busid" + +if [ $UID != 0 ]; then + echo "Please run usbip_test as root [SKIP]" + echo $test_end_msg + exit $ksft_skip +fi + +echo "Load usbip_host module" +if ! /sbin/modprobe -q -n usbip_host; then + echo "usbip_test: module usbip_host is not found [SKIP]" + echo $test_end_msg + exit $ksft_skip +fi + +if /sbin/modprobe -q usbip_host; then + /sbin/modprobe -q -r test_bitmap + echo "usbip_test: module usbip_host is loaded [OK]" +else + echo "usbip_test: module usbip_host failed to load [FAIL]" + echo $test_end_msg + exit 1 +fi + +echo "Load vhci_hcd module" +if /sbin/modprobe -q vhci_hcd; then + /sbin/modprobe -q -r test_bitmap + echo "usbip_test: module vhci_hcd is loaded [OK]" +else + echo "usbip_test: module vhci_hcd failed to load [FAIL]" + echo $test_end_msg + exit 1 +fi +echo "==============================================================" + +cd $tools_path; + +if [ ! -f src/usbip ]; then + echo "Please build usbip tools" + echo $test_end_msg + exit $ksft_skip +fi + +echo "Expect to see export-able devices"; +src/usbip list -l; +echo "==============================================================" + +echo "Run lsusb to see all usb devices" +lsusb -t; +echo "==============================================================" + +src/usbipd -D; + +echo "Get exported devices from localhost - expect to see none"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "bind devices"; +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Run lsusb - bound devices should be under usbip_host control" +lsusb -t; +echo "==============================================================" + +echo "bind devices - expect already bound messages" +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Get exported devices from localhost - expect to see exported devices"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "unbind devices"; +src/usbip unbind -b $busid; +echo "==============================================================" + +echo "Run lsusb - bound devices should be rebound to original drivers" +lsusb -t; +echo "==============================================================" + +echo "unbind devices - expect no devices bound message"; +src/usbip unbind -b $busid; +echo "==============================================================" + +echo "Get exported devices from localhost - expect to see none"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - should fail with no devices" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "bind devices"; +src/usbip bind -b $busid; +echo "==============================================================" + +echo "List imported devices - expect to see exported devices"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - should work" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "List imported devices - expect to see imported devices"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - expect already imported messages" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "Un-import devices"; +src/usbip detach -p 00; +src/usbip detach -p 01; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Un-import devices - expect no devices to detach messages"; +src/usbip detach -p 00; +src/usbip detach -p 01; +echo "==============================================================" + +echo "Detach invalid port tests - expect invalid port error message"; +src/usbip detach -p 100; +echo "==============================================================" + +echo "Expect to see export-able devices"; +src/usbip list -l; +echo "==============================================================" + +echo "Remove usbip_host module"; +rmmod usbip_host; + +echo "Run lsusb - bound devices should be rebound to original drivers" +lsusb -t; +echo "==============================================================" + +echo "Run bind without usbip_host - expect fail" +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Run lsusb - devices that failed to bind aren't bound to any driver" +lsusb -t; +echo "==============================================================" + +echo "modprobe usbip_host - does it work?" +/sbin/modprobe usbip_host +echo "Should see -busid- is not in match_busid table... skip! dmesg" +echo "==============================================================" +dmesg | grep "is not in match_busid table" +echo "==============================================================" + +echo $test_end_msg -- 2.14.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From mboxrd@z Thu Jan 1 00:00:00 1970 From: shuah@kernel.org (Shuah Khan (Samsung OSG)) Date: Wed, 30 May 2018 21:00:57 -0600 Subject: [PATCH] selftests: add test for USB over IP driver Message-ID: <20180531030057.32442-1-shuah@kernel.org> Content-Type: text/plain; charset="UTF-8" Message-ID: <20180531030057.XzC64a4SwyjGLDr0XEa4uyEHw4CpO6iXjei6mVOtq7Y@z> Add test for USB over IP driver. This test runs several tests on a device specified in the -b argument and path to the usbip tools. usbip_test.sh -b -p e.g: cd tools/testing selftests/drivers/usb/usbip sudo ./usbip_test.sh -b 3-10.2 -p /tools/usb/usbip This test should be run as root and user should build usbip tools before running the test. The usbip test isn't included in the Kselftest run as it requires user to specify a device to run tests on. Signed-off-by: Shuah Khan (Samsung OSG) --- MAINTAINERS | 1 + .../selftests/drivers/usb/usbip/usbip_test.sh | 198 +++++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100755 tools/testing/selftests/drivers/usb/usbip/usbip_test.sh diff --git a/MAINTAINERS b/MAINTAINERS index ca4afd68530c..708b681a6fbd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14661,6 +14661,7 @@ S: Maintained F: Documentation/usb/usbip_protocol.txt F: drivers/usb/usbip/ F: tools/usb/usbip/ +F: tools/testing/selftests/drivers/usb/usbip/ USB PEGASUS DRIVER M: Petko Manolov diff --git a/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh b/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh new file mode 100755 index 000000000000..1893d0f59ad7 --- /dev/null +++ b/tools/testing/selftests/drivers/usb/usbip/usbip_test.sh @@ -0,0 +1,198 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# Kselftest framework requirement - SKIP code is 4. +ksft_skip=4 + +usage() { echo "usbip_test.sh -b -p "; exit 1; } + +while getopts "h:b:p:" arg; do + case "${arg}" in + h) + usage + ;; + b) + busid=${OPTARG} + ;; + p) + tools_path=${OPTARG} + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +if [ -z "${busid}" ]; then + usage +fi + +echo "Running USB over IP Testing on $busid"; + +test_end_msg="End of USB over IP Testing on $busid" + +if [ $UID != 0 ]; then + echo "Please run usbip_test as root [SKIP]" + echo $test_end_msg + exit $ksft_skip +fi + +echo "Load usbip_host module" +if ! /sbin/modprobe -q -n usbip_host; then + echo "usbip_test: module usbip_host is not found [SKIP]" + echo $test_end_msg + exit $ksft_skip +fi + +if /sbin/modprobe -q usbip_host; then + /sbin/modprobe -q -r test_bitmap + echo "usbip_test: module usbip_host is loaded [OK]" +else + echo "usbip_test: module usbip_host failed to load [FAIL]" + echo $test_end_msg + exit 1 +fi + +echo "Load vhci_hcd module" +if /sbin/modprobe -q vhci_hcd; then + /sbin/modprobe -q -r test_bitmap + echo "usbip_test: module vhci_hcd is loaded [OK]" +else + echo "usbip_test: module vhci_hcd failed to load [FAIL]" + echo $test_end_msg + exit 1 +fi +echo "==============================================================" + +cd $tools_path; + +if [ ! -f src/usbip ]; then + echo "Please build usbip tools" + echo $test_end_msg + exit $ksft_skip +fi + +echo "Expect to see export-able devices"; +src/usbip list -l; +echo "==============================================================" + +echo "Run lsusb to see all usb devices" +lsusb -t; +echo "==============================================================" + +src/usbipd -D; + +echo "Get exported devices from localhost - expect to see none"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "bind devices"; +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Run lsusb - bound devices should be under usbip_host control" +lsusb -t; +echo "==============================================================" + +echo "bind devices - expect already bound messages" +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Get exported devices from localhost - expect to see exported devices"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "unbind devices"; +src/usbip unbind -b $busid; +echo "==============================================================" + +echo "Run lsusb - bound devices should be rebound to original drivers" +lsusb -t; +echo "==============================================================" + +echo "unbind devices - expect no devices bound message"; +src/usbip unbind -b $busid; +echo "==============================================================" + +echo "Get exported devices from localhost - expect to see none"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - should fail with no devices" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "bind devices"; +src/usbip bind -b $busid; +echo "==============================================================" + +echo "List imported devices - expect to see exported devices"; +src/usbip list -r localhost; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - should work" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "List imported devices - expect to see imported devices"; +src/usbip port; +echo "==============================================================" + +echo "Import devices from localhost - expect already imported messages" +src/usbip attach -r localhost -b $busid; +echo "==============================================================" + +echo "Un-import devices"; +src/usbip detach -p 00; +src/usbip detach -p 01; +echo "==============================================================" + +echo "List imported devices - expect to see none"; +src/usbip port; +echo "==============================================================" + +echo "Un-import devices - expect no devices to detach messages"; +src/usbip detach -p 00; +src/usbip detach -p 01; +echo "==============================================================" + +echo "Detach invalid port tests - expect invalid port error message"; +src/usbip detach -p 100; +echo "==============================================================" + +echo "Expect to see export-able devices"; +src/usbip list -l; +echo "==============================================================" + +echo "Remove usbip_host module"; +rmmod usbip_host; + +echo "Run lsusb - bound devices should be rebound to original drivers" +lsusb -t; +echo "==============================================================" + +echo "Run bind without usbip_host - expect fail" +src/usbip bind -b $busid; +echo "==============================================================" + +echo "Run lsusb - devices that failed to bind aren't bound to any driver" +lsusb -t; +echo "==============================================================" + +echo "modprobe usbip_host - does it work?" +/sbin/modprobe usbip_host +echo "Should see -busid- is not in match_busid table... skip! dmesg" +echo "==============================================================" +dmesg | grep "is not in match_busid table" +echo "==============================================================" + +echo $test_end_msg -- 2.14.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: selftests: add test for USB over IP driver From: Shuah Khan Message-Id: <20180531030057.32442-1-shuah@kernel.org> Date: Wed, 30 May 2018 21:00:57 -0600 To: shuah@kernel.org, valentina.manea.m@gmail.com Cc: gregkh@linuxfoundation.org, mchehab+samsung@kernel.org, davem@davemloft.net, akpm@linux-foundation.org, linus.walleij@linaro.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, linux-kselftest@vger.kernel.org List-ID: QWRkIHRlc3QgZm9yIFVTQiBvdmVyIElQIGRyaXZlci4gVGhpcyB0ZXN0IHJ1bnMgc2V2ZXJhbCB0 ZXN0cyBvbiBhIGRldmljZQpzcGVjaWZpZWQgaW4gdGhlIC1iIDxidXNpZD4gYXJndW1lbnQgYW5k IHBhdGggdG8gdGhlIHVzYmlwIHRvb2xzLgoKdXNiaXBfdGVzdC5zaCAtYiA8YnVzaWQ+IC1wIDx1 c2JpcCB0b29scyBwYXRoPgoKZS5nOgpjZCB0b29scy90ZXN0aW5nIHNlbGZ0ZXN0cy9kcml2ZXJz L3VzYi91c2JpcApzdWRvIC4vdXNiaXBfdGVzdC5zaCAtYiAzLTEwLjIgLXAgPHlvdXJzcmN0cmVl Pi90b29scy91c2IvdXNiaXAKClRoaXMgdGVzdCBzaG91bGQgYmUgcnVuIGFzIHJvb3QgYW5kIHVz ZXIgc2hvdWxkIGJ1aWxkIHVzYmlwIHRvb2xzIGJlZm9yZQpydW5uaW5nIHRoZSB0ZXN0LgoKVGhl IHVzYmlwIHRlc3QgaXNuJ3QgaW5jbHVkZWQgaW4gdGhlIEtzZWxmdGVzdCBydW4gYXMgaXQgcmVx dWlyZXMgdXNlciB0bwpzcGVjaWZ5IGEgZGV2aWNlIHRvIHJ1biB0ZXN0cyBvbi4KClNpZ25lZC1v ZmYtYnk6IFNodWFoIEtoYW4gKFNhbXN1bmcgT1NHKSA8c2h1YWhAa2VybmVsLm9yZz4KLS0tCiBN QUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiAuLi4vc2VsZnRlc3RzL2RyaXZlcnMvdXNiL3VzYmlwL3VzYmlwX3Rlc3Quc2ggICAgICB8IDE5 OCArKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTk5IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDc1NSB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL3Vz Yi91c2JpcC91c2JpcF90ZXN0LnNoCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJ TkVSUwppbmRleCBjYTRhZmQ2ODUzMGMuLjcwOGI2ODFhNmZiZCAxMDA2NDQKLS0tIGEvTUFJTlRB SU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTE0NjYxLDYgKzE0NjYxLDcgQEAgUzoJTWFpbnRh aW5lZAogRjoJRG9jdW1lbnRhdGlvbi91c2IvdXNiaXBfcHJvdG9jb2wudHh0CiBGOglkcml2ZXJz L3VzYi91c2JpcC8KIEY6CXRvb2xzL3VzYi91c2JpcC8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL2RyaXZlcnMvdXNiL3VzYmlwLwogCiBVU0IgUEVHQVNVUyBEUklWRVIKIE06CVBldGtvIE1h bm9sb3YgPHBldGthbkBudWNsZXVzeXMuY29tPgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9z ZWxmdGVzdHMvZHJpdmVycy91c2IvdXNiaXAvdXNiaXBfdGVzdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL2RyaXZlcnMvdXNiL3VzYmlwL3VzYmlwX3Rlc3Quc2gKbmV3IGZpbGUgbW9kZSAx MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwLi4xODkzZDBmNTlhZDcKLS0tIC9kZXYvbnVsbAorKysg Yi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL3VzYi91c2JpcC91c2JpcF90ZXN0LnNo CkBAIC0wLDAgKzEsMTk4IEBACisjIS9iaW4vYmFzaAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAorCisjIEtzZWxmdGVzdCBmcmFtZXdvcmsgcmVxdWlyZW1lbnQgLSBTS0lQIGNv ZGUgaXMgNC4KK2tzZnRfc2tpcD00CisKK3VzYWdlKCkgeyBlY2hvICJ1c2JpcF90ZXN0LnNoIC1i IDxidXNpZD4gLXAgPHVzYmlwIHRvb2xzIHBhdGg+IjsgZXhpdCAxOyB9CisKK3doaWxlIGdldG9w dHMgImg6YjpwOiIgYXJnOyBkbworICAgIGNhc2UgIiR7YXJnfSIgaW4KKwloKQorCSAgICB1c2Fn ZQorCSAgICA7OworCWIpCisJICAgIGJ1c2lkPSR7T1BUQVJHfQorCSAgICA7OworCXApCisJICAg IHRvb2xzX3BhdGg9JHtPUFRBUkd9CisJICAgIDs7CisJKikKKwkgICAgdXNhZ2UKKwkgICAgOzsK KyAgICBlc2FjCitkb25lCitzaGlmdCAkKChPUFRJTkQtMSkpCisKK2lmIFsgLXogIiR7YnVzaWR9 IiBdOyB0aGVuCisJdXNhZ2UKK2ZpCisKK2VjaG8gIlJ1bm5pbmcgVVNCIG92ZXIgSVAgVGVzdGlu ZyBvbiAkYnVzaWQiOworCit0ZXN0X2VuZF9tc2c9IkVuZCBvZiBVU0Igb3ZlciBJUCBUZXN0aW5n IG9uICRidXNpZCIKKworaWYgWyAkVUlEICE9IDAgXTsgdGhlbgorCWVjaG8gIlBsZWFzZSBydW4g dXNiaXBfdGVzdCBhcyByb290IFtTS0lQXSIKKwllY2hvICR0ZXN0X2VuZF9tc2cKKwlleGl0ICRr c2Z0X3NraXAKK2ZpCisKK2VjaG8gIkxvYWQgdXNiaXBfaG9zdCBtb2R1bGUiCitpZiAhIC9zYmlu L21vZHByb2JlIC1xIC1uIHVzYmlwX2hvc3Q7IHRoZW4KKwllY2hvICJ1c2JpcF90ZXN0OiBtb2R1 bGUgdXNiaXBfaG9zdCBpcyBub3QgZm91bmQgW1NLSVBdIgorCWVjaG8gJHRlc3RfZW5kX21zZwor CWV4aXQgJGtzZnRfc2tpcAorZmkKKworaWYgL3NiaW4vbW9kcHJvYmUgLXEgdXNiaXBfaG9zdDsg dGhlbgorCS9zYmluL21vZHByb2JlIC1xIC1yIHRlc3RfYml0bWFwCisJZWNobyAidXNiaXBfdGVz dDogbW9kdWxlIHVzYmlwX2hvc3QgaXMgbG9hZGVkIFtPS10iCitlbHNlCisJZWNobyAidXNiaXBf dGVzdDogbW9kdWxlIHVzYmlwX2hvc3QgZmFpbGVkIHRvIGxvYWQgW0ZBSUxdIgorCWVjaG8gJHRl c3RfZW5kX21zZworCWV4aXQgMQorZmkKKworZWNobyAiTG9hZCB2aGNpX2hjZCBtb2R1bGUiCitp ZiAvc2Jpbi9tb2Rwcm9iZSAtcSB2aGNpX2hjZDsgdGhlbgorCS9zYmluL21vZHByb2JlIC1xIC1y IHRlc3RfYml0bWFwCisJZWNobyAidXNiaXBfdGVzdDogbW9kdWxlIHZoY2lfaGNkIGlzIGxvYWRl ZCBbT0tdIgorZWxzZQorCWVjaG8gInVzYmlwX3Rlc3Q6IG1vZHVsZSB2aGNpX2hjZCBmYWlsZWQg dG8gbG9hZCBbRkFJTF0iCisJZWNobyAkdGVzdF9lbmRfbXNnCisJZXhpdCAxCitmaQorZWNobyAi PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0iCisKK2NkICR0b29sc19wYXRoOworCitpZiBbICEgLWYgc3JjL3VzYmlwIF07IHRoZW4K KwllY2hvICJQbGVhc2UgYnVpbGQgdXNiaXAgdG9vbHMiCisJZWNobyAkdGVzdF9lbmRfbXNnCisJ ZXhpdCAka3NmdF9za2lwCitmaQorCitlY2hvICJFeHBlY3QgdG8gc2VlIGV4cG9ydC1hYmxlIGRl dmljZXMiOworc3JjL3VzYmlwIGxpc3QgLWw7CitlY2hvICI9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKworZWNobyAiUnVuIGxz dXNiIHRvIHNlZSBhbGwgdXNiIGRldmljZXMiCitsc3VzYiAtdDsKK2VjaG8gIj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorCitz cmMvdXNiaXBkIC1EOworCitlY2hvICJHZXQgZXhwb3J0ZWQgZGV2aWNlcyBmcm9tIGxvY2FsaG9z dCAtIGV4cGVjdCB0byBzZWUgbm9uZSI7CitzcmMvdXNiaXAgbGlzdCAtciBsb2NhbGhvc3Q7Citl Y2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSIKKworZWNobyAiYmluZCBkZXZpY2VzIjsKK3NyYy91c2JpcCBiaW5kIC1iICRi dXNpZDsKK2VjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09IgorCitlY2hvICJSdW4gbHN1c2IgLSBib3VuZCBkZXZpY2VzIHNo b3VsZCBiZSB1bmRlciB1c2JpcF9ob3N0IGNvbnRyb2wiCitsc3VzYiAtdDsKK2VjaG8gIj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 IgorCitlY2hvICJiaW5kIGRldmljZXMgLSBleHBlY3QgYWxyZWFkeSBib3VuZCBtZXNzYWdlcyIK K3NyYy91c2JpcCBiaW5kIC1iICRidXNpZDsKK2VjaG8gIj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorCitlY2hvICJHZXQgZXhw b3J0ZWQgZGV2aWNlcyBmcm9tIGxvY2FsaG9zdCAtIGV4cGVjdCB0byBzZWUgZXhwb3J0ZWQgZGV2 aWNlcyI7CitzcmMvdXNiaXAgbGlzdCAtciBsb2NhbGhvc3Q7CitlY2hvICI9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKworZWNo byAidW5iaW5kIGRldmljZXMiOworc3JjL3VzYmlwIHVuYmluZCAtYiAkYnVzaWQ7CitlY2hvICI9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSIKKworZWNobyAiUnVuIGxzdXNiIC0gYm91bmQgZGV2aWNlcyBzaG91bGQgYmUgcmVib3Vu ZCB0byBvcmlnaW5hbCBkcml2ZXJzIgorbHN1c2IgLXQ7CitlY2hvICI9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKworZWNobyAi dW5iaW5kIGRldmljZXMgLSBleHBlY3Qgbm8gZGV2aWNlcyBib3VuZCBtZXNzYWdlIjsKK3NyYy91 c2JpcCB1bmJpbmQgLWIgJGJ1c2lkOworZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCisKK2VjaG8gIkdldCBleHBvcnRl ZCBkZXZpY2VzIGZyb20gbG9jYWxob3N0IC0gZXhwZWN0IHRvIHNlZSBub25lIjsKK3NyYy91c2Jp cCBsaXN0IC1yIGxvY2FsaG9zdDsKK2VjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorCitlY2hvICJMaXN0IGltcG9ydGVk IGRldmljZXMgLSBleHBlY3QgdG8gc2VlIG5vbmUiOworc3JjL3VzYmlwIHBvcnQ7CitlY2hvICI9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSIKKworZWNobyAiSW1wb3J0IGRldmljZXMgZnJvbSBsb2NhbGhvc3QgLSBzaG91bGQgZmFp bCB3aXRoIG5vIGRldmljZXMiCitzcmMvdXNiaXAgYXR0YWNoIC1yIGxvY2FsaG9zdCAtYiAkYnVz aWQ7CitlY2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSIKKworZWNobyAiYmluZCBkZXZpY2VzIjsKK3NyYy91c2JpcCBiaW5k IC1iICRidXNpZDsKK2VjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09IgorCitlY2hvICJMaXN0IGltcG9ydGVkIGRldmljZXMg LSBleHBlY3QgdG8gc2VlIGV4cG9ydGVkIGRldmljZXMiOworc3JjL3VzYmlwIGxpc3QgLXIgbG9j YWxob3N0OworZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0iCisKK2VjaG8gIkxpc3QgaW1wb3J0ZWQgZGV2aWNlcyAtIGV4 cGVjdCB0byBzZWUgbm9uZSI7CitzcmMvdXNiaXAgcG9ydDsKK2VjaG8gIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorCitlY2hv ICJJbXBvcnQgZGV2aWNlcyBmcm9tIGxvY2FsaG9zdCAtIHNob3VsZCB3b3JrIgorc3JjL3VzYmlw IGF0dGFjaCAtciBsb2NhbGhvc3QgLWIgJGJ1c2lkOworZWNobyAiPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCisKK2VjaG8gIkxp c3QgaW1wb3J0ZWQgZGV2aWNlcyAtIGV4cGVjdCB0byBzZWUgaW1wb3J0ZWQgZGV2aWNlcyI7Citz cmMvdXNiaXAgcG9ydDsKK2VjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorCitlY2hvICJJbXBvcnQgZGV2aWNlcyBmcm9t IGxvY2FsaG9zdCAtIGV4cGVjdCBhbHJlYWR5IGltcG9ydGVkIG1lc3NhZ2VzIgorc3JjL3VzYmlw IGF0dGFjaCAtciBsb2NhbGhvc3QgLWIgJGJ1c2lkOworZWNobyAiPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCisKK2VjaG8gIlVu LWltcG9ydCBkZXZpY2VzIjsKK3NyYy91c2JpcCBkZXRhY2ggLXAgMDA7CitzcmMvdXNiaXAgZGV0 YWNoIC1wIDAxOworZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0iCisKK2VjaG8gIkxpc3QgaW1wb3J0ZWQgZGV2aWNlcyAt IGV4cGVjdCB0byBzZWUgbm9uZSI7CitzcmMvdXNiaXAgcG9ydDsKK2VjaG8gIj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorCitl Y2hvICJVbi1pbXBvcnQgZGV2aWNlcyAtIGV4cGVjdCBubyBkZXZpY2VzIHRvIGRldGFjaCBtZXNz YWdlcyI7CitzcmMvdXNiaXAgZGV0YWNoIC1wIDAwOworc3JjL3VzYmlwIGRldGFjaCAtcCAwMTsK K2VjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09IgorCitlY2hvICJEZXRhY2ggaW52YWxpZCBwb3J0IHRlc3RzIC0gZXhwZWN0 IGludmFsaWQgcG9ydCBlcnJvciBtZXNzYWdlIjsKK3NyYy91c2JpcCBkZXRhY2ggLXAgMTAwOwor ZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0iCisKK2VjaG8gIkV4cGVjdCB0byBzZWUgZXhwb3J0LWFibGUgZGV2aWNlcyI7 CitzcmMvdXNiaXAgbGlzdCAtbDsKK2VjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorCitlY2hvICJSZW1vdmUgdXNiaXBf aG9zdCBtb2R1bGUiOworcm1tb2QgdXNiaXBfaG9zdDsKKworZWNobyAiUnVuIGxzdXNiIC0gYm91 bmQgZGV2aWNlcyBzaG91bGQgYmUgcmVib3VuZCB0byBvcmlnaW5hbCBkcml2ZXJzIgorbHN1c2Ig LXQ7CitlY2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSIKKworZWNobyAiUnVuIGJpbmQgd2l0aG91dCB1c2JpcF9ob3N0IC0g ZXhwZWN0IGZhaWwiCitzcmMvdXNiaXAgYmluZCAtYiAkYnVzaWQ7CitlY2hvICI9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKwor ZWNobyAiUnVuIGxzdXNiIC0gZGV2aWNlcyB0aGF0IGZhaWxlZCB0byBiaW5kIGFyZW4ndCBib3Vu ZCB0byBhbnkgZHJpdmVyIgorbHN1c2IgLXQ7CitlY2hvICI9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKworZWNobyAibW9kcHJv YmUgdXNiaXBfaG9zdCAtIGRvZXMgaXQgd29yaz8iCisvc2Jpbi9tb2Rwcm9iZSB1c2JpcF9ob3N0 CitlY2hvICJTaG91bGQgc2VlIC1idXNpZC0gaXMgbm90IGluIG1hdGNoX2J1c2lkIHRhYmxlLi4u IHNraXAhIGRtZXNnIgorZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0iCitkbWVzZyB8IGdyZXAgImlzIG5vdCBpbiBtYXRj aF9idXNpZCB0YWJsZSIKK2VjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorCitlY2hvICR0ZXN0X2VuZF9tc2cK