From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhai, Edwin" Subject: Re: [PATCH] enable PCI multiple-segments for pass-through device Date: Mon, 01 Feb 2010 17:22:47 +0800 Message-ID: <4B669D67.4080303@intel.com> References: <4B628274.5020005@intel.com> <20100130000816.GL13518@sequoia.sous-sol.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020407060601080107090501" Cc: Marcelo Tosatti , "kvm@vger.kernel.org" To: Chris Wright Return-path: Received: from mga11.intel.com ([192.55.52.93]:32510 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750724Ab0BAJWt (ORCPT ); Mon, 1 Feb 2010 04:22:49 -0500 In-Reply-To: <20100130000816.GL13518@sequoia.sous-sol.org> Sender: kvm-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------020407060601080107090501 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Wright, Thanks for your comments. I have updated the qemu-options.hx and used following new CAP. Updated version is also attached. Index: qemu-kvm/hw/device-assignment.c =================================================================== --- qemu-kvm.orig/hw/device-assignment.c +++ qemu-kvm/hw/device-assignment.c @@ -809,6 +809,16 @@ static int assign_device(AssignedDevice struct kvm_assigned_pci_dev assigned_dev_data; int r; +#ifdef KVM_CAP_PCI_SEGMENT + /* Only pass non-zero PCI segment to capable module */ + if (!kvm_check_extension(kvm_state, KVM_CAP_PCI_SEGMENT) && + dev->h_segnr) { + fprintf(stderr, "Can't assign device inside non-zero PCI segment " + "as this KVM module doesn't support it.\n"); + return -ENODEV; + } +#endif + memset(&assigned_dev_data, 0, sizeof(assigned_dev_data)); assigned_dev_data.assigned_dev_id = calc_assigned_dev_id(dev->h_segnr, dev->h_busnr, dev->h_devfn); Index: qemu-kvm/kvm/include/linux/kvm.h =================================================================== --- qemu-kvm.orig/kvm/include/linux/kvm.h +++ qemu-kvm/kvm/include/linux/kvm.h @@ -498,6 +498,8 @@ struct kvm_ioeventfd { #define KVM_CAP_S390_PSW 42 #define KVM_CAP_PPC_SEGSTATE 43 +#define KVM_CAP_PCI_SEGMENT 47 + #ifdef KVM_CAP_IRQ_ROUTING struct kvm_irq_routing_irqchip { Index: linux-2.6/include/linux/kvm.h =================================================================== --- linux-2.6.orig/include/linux/kvm.h +++ linux-2.6/include/linux/kvm.h @@ -500,6 +500,7 @@ struct kvm_ioeventfd { #define KVM_CAP_HYPERV 44 #define KVM_CAP_HYPERV_VAPIC 45 #define KVM_CAP_HYPERV_SPIN 46 +#define KVM_CAP_PCI_SEGMENT 47 #ifdef KVM_CAP_IRQ_ROUTING Index: linux-2.6/arch/x86/kvm/x86.c =================================================================== --- linux-2.6.orig/arch/x86/kvm/x86.c +++ linux-2.6/arch/x86/kvm/x86.c @@ -1569,6 +1569,7 @@ int kvm_dev_ioctl_check_extension(long e case KVM_CAP_HYPERV: case KVM_CAP_HYPERV_VAPIC: case KVM_CAP_HYPERV_SPIN: + case KVM_CAP_PCI_SEGMENT: r = 1; break; case KVM_CAP_COALESCED_MMIO: Chris Wright wrote: > * Zhai, Edwin (edwin.zhai@intel.com) wrote: > > These 2 patches enable optional parameter(default 0) - PCI segment(or > > domain) besides BDF, when assigning PCI device to guest. > > > > Signed-off-by: Zhai Edwin > > Looks good. For compatibility, an old userspace will zero the padding > and keep the default 0 segment when running w/ a new kernel, a new > userspace won't be able to pass a non-zero segment value to an old > kernel. If that latter bit matters, need a capability to express this > change. Looks like qemu-options.hx needs an update too. Otherwise... > > Acked-by: Chris Wright > --------------020407060601080107090501 Content-Type: application/octet-stream; name="kvm_vtd_multi_seg_qemu_v2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kvm_vtd_multi_seg_qemu_v2.patch" SW5kZXg6IHFlbXUta3ZtL2h3L2RldmljZS1hc3NpZ25tZW50LmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS1rdm0ub3JpZy9ody9kZXZpY2UtYXNzaWdubWVudC5jCisrKyBxZW11LWt2bS9o dy9kZXZpY2UtYXNzaWdubWVudC5jCkBAIC01OTUsOCArNTk1LDggQEAgc3RhdGljIGludCBn ZXRfcmVhbF9kZXZpY2VfaWQoY29uc3QgY2hhcgogICAgIHJldHVybiBnZXRfcmVhbF9pZChk ZXZwYXRoLCAiZGV2aWNlIiwgdmFsKTsKIH0KIAotc3RhdGljIGludCBnZXRfcmVhbF9kZXZp Y2UoQXNzaWduZWREZXZpY2UgKnBjaV9kZXYsIHVpbnQ4X3Qgcl9idXMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50OF90IHJfZGV2LCB1aW50OF90IHJfZnVuYykKK3N0YXRp YyBpbnQgZ2V0X3JlYWxfZGV2aWNlKEFzc2lnbmVkRGV2aWNlICpwY2lfZGV2LCB1aW50MTZf dCByX3NlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgcl9idXMsIHVp bnQ4X3Qgcl9kZXYsIHVpbnQ4X3Qgcl9mdW5jKQogewogICAgIGNoYXIgZGlyWzEyOF0sIG5h bWVbMTI4XTsKICAgICBpbnQgZmQsIHIgPSAwLCB2OwpAQCAtNjA5LDggKzYwOSw4IEBAIHN0 YXRpYyBpbnQgZ2V0X3JlYWxfZGV2aWNlKEFzc2lnbmVkRGV2aWMKIAogICAgIGRldi0+cmVn aW9uX251bWJlciA9IDA7CiAKLSAgICBzbnByaW50ZihkaXIsIHNpemVvZihkaXIpLCAiL3N5 cy9idXMvcGNpL2RldmljZXMvMDAwMDolMDJ4OiUwMnguJXgvIiwKLQkgICAgIHJfYnVzLCBy X2Rldiwgcl9mdW5jKTsKKyAgICBzbnByaW50ZihkaXIsIHNpemVvZihkaXIpLCAiL3N5cy9i dXMvcGNpL2RldmljZXMvJTA0eDolMDJ4OiUwMnguJXgvIiwKKwkgICAgIHJfc2VnLCByX2J1 cywgcl9kZXYsIHJfZnVuYyk7CiAKICAgICBzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSks ICIlc2NvbmZpZyIsIGRpcik7CiAKQEAgLTc1Miw5ICs3NTIsOSBAQCBzdGF0aWMgdm9pZCBm cmVlX2Fzc2lnbmVkX2RldmljZShBc3NpZ25lCiAgICAgfQogfQogCi1zdGF0aWMgdWludDMy X3QgY2FsY19hc3NpZ25lZF9kZXZfaWQodWludDhfdCBidXMsIHVpbnQ4X3QgZGV2Zm4pCitz dGF0aWMgdWludDMyX3QgY2FsY19hc3NpZ25lZF9kZXZfaWQodWludDE2X3Qgc2VnLCB1aW50 OF90IGJ1cywgdWludDhfdCBkZXZmbikKIHsKLSAgICByZXR1cm4gKHVpbnQzMl90KWJ1cyA8 PCA4IHwgKHVpbnQzMl90KWRldmZuOworICAgIHJldHVybiAodWludDMyX3Qpc2VnIDw8IDE2 IHwgKHVpbnQzMl90KWJ1cyA8PCA4IHwgKHVpbnQzMl90KWRldmZuOwogfQogCiBzdGF0aWMg dm9pZCBhc3NpZ25fZmFpbGVkX2V4YW1pbmUoQXNzaWduZWREZXZpY2UgKmRldikKQEAgLTc2 Myw5ICs3NjMsOCBAQCBzdGF0aWMgdm9pZCBhc3NpZ25fZmFpbGVkX2V4YW1pbmUoQXNzaWdu CiAgICAgdWludDE2X3QgdmVuZG9yX2lkLCBkZXZpY2VfaWQ7CiAgICAgaW50IHI7CiAKLSAg ICAvKiBYWFggaW1wbGVtZW50IG11bHRpZG9tYWluICovCi0gICAgc3ByaW50ZihkaXIsICIv c3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwOiUwMng6JTAyeC4lMDF4LyIsCi0gICAgICAgICAg ICAgZGV2LT5ob3N0LmJ1cywgZGV2LT5ob3N0LmRldiwgZGV2LT5ob3N0LmZ1bmMpOworICAg IHNwcmludGYoZGlyLCAiL3N5cy9idXMvcGNpL2RldmljZXMvJTA0eDolMDJ4OiUwMnguJTAx eC8iLAorICAgICAgICAgICAgZGV2LT5ob3N0LnNlZywgZGV2LT5ob3N0LmJ1cywgZGV2LT5o b3N0LmRldiwgZGV2LT5ob3N0LmZ1bmMpOwogCiAgICAgc3ByaW50ZihuYW1lLCAiJXNkcml2 ZXIiLCBkaXIpOwogCkBAIC03ODIsMTkgKzc4MSwxOSBAQCBzdGF0aWMgdm9pZCBhc3NpZ25f ZmFpbGVkX2V4YW1pbmUoQXNzaWduCiAgICAgfQogCiAgICAgZnByaW50ZihzdGRlcnIsICIq KiogVGhlIGRyaXZlciAnJXMnIGlzIG9jY3VweWluZyB5b3VyIGRldmljZSAiCi0gICAgICAg ICAgICAgICAgICAgICIlMDJ4OiUwMnguJXguXG4iLAotICAgICAgICAgICAgbnMsIGRldi0+ aG9zdC5idXMsIGRldi0+aG9zdC5kZXYsIGRldi0+aG9zdC5mdW5jKTsKKyAgICAgICAgICAg ICAgICAgICAgIiUwNHg6JTAyeDolMDJ4LiV4LlxuIiwKKyAgICAgICAgICAgIG5zLCBkZXYt Pmhvc3Quc2VnLCBkZXYtPmhvc3QuYnVzLCBkZXYtPmhvc3QuZGV2LCBkZXYtPmhvc3QuZnVu Yyk7CiAgICAgZnByaW50ZihzdGRlcnIsICIqKipcbiIpOwogICAgIGZwcmludGYoc3RkZXJy LCAiKioqIFlvdSBjYW4gdHJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gZnJlZSBpdDpc biIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiKioqXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVy ciwgIioqKiAkIGVjaG8gXCIlMDR4ICUwNHhcIiA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzL3Bj aS1zdHViLyIKICAgICAgICAgICAgICAgICAgICAgIm5ld19pZFxuIiwgdmVuZG9yX2lkLCBk ZXZpY2VfaWQpOwotICAgIGZwcmludGYoc3RkZXJyLCAiKioqICQgZWNobyBcIjAwMDA6JTAy eDolMDJ4LiV4XCIgPiAvc3lzL2J1cy9wY2kvZHJpdmVycy8iCisgICAgZnByaW50ZihzdGRl cnIsICIqKiogJCBlY2hvIFwiJTA0eDolMDJ4OiUwMnguJXhcIiA+IC9zeXMvYnVzL3BjaS9k cml2ZXJzLyIKICAgICAgICAgICAgICAgICAgICAgIiVzL3VuYmluZFxuIiwKLSAgICAgICAg ICAgIGRldi0+aG9zdC5idXMsIGRldi0+aG9zdC5kZXYsIGRldi0+aG9zdC5mdW5jLCBucyk7 Ci0gICAgZnByaW50ZihzdGRlcnIsICIqKiogJCBlY2hvIFwiMDAwMDolMDJ4OiUwMnguJXhc IiA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzLyIKKyAgICAgICAgICAgIGRldi0+aG9zdC5zZWcs IGRldi0+aG9zdC5idXMsIGRldi0+aG9zdC5kZXYsIGRldi0+aG9zdC5mdW5jLCBucyk7Cisg ICAgZnByaW50ZihzdGRlcnIsICIqKiogJCBlY2hvIFwiJTA0eDolMDJ4OiUwMnguJXhcIiA+ IC9zeXMvYnVzL3BjaS9kcml2ZXJzLyIKICAgICAgICAgICAgICAgICAgICAgInBjaS1zdHVi L2JpbmRcbiIsCi0gICAgICAgICAgICBkZXYtPmhvc3QuYnVzLCBkZXYtPmhvc3QuZGV2LCBk ZXYtPmhvc3QuZnVuYyk7CisgICAgICAgICAgICBkZXYtPmhvc3Quc2VnLCBkZXYtPmhvc3Qu YnVzLCBkZXYtPmhvc3QuZGV2LCBkZXYtPmhvc3QuZnVuYyk7CiAgICAgZnByaW50ZihzdGRl cnIsICIqKiogJCBlY2hvIFwiJTA0eCAlMDR4XCIgPiAvc3lzL2J1cy9wY2kvZHJpdmVycy9w Y2ktc3R1YiIKICAgICAgICAgICAgICAgICAgICAgIi9yZW1vdmVfaWRcbiIsIHZlbmRvcl9p ZCwgZGV2aWNlX2lkKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIioqKlxuIik7CkBAIC04MTAs OSArODA5LDIwIEBAIHN0YXRpYyBpbnQgYXNzaWduX2RldmljZShBc3NpZ25lZERldmljZSAK ICAgICBzdHJ1Y3Qga3ZtX2Fzc2lnbmVkX3BjaV9kZXYgYXNzaWduZWRfZGV2X2RhdGE7CiAg ICAgaW50IHI7CiAKKyNpZmRlZiBLVk1fQ0FQX1BDSV9TRUdNRU5UCisgICAgLyogT25seSBw YXNzIG5vbi16ZXJvIFBDSSBzZWdtZW50IHRvIGNhcGFibGUgbW9kdWxlICovCisgICAgaWYg KCFrdm1fY2hlY2tfZXh0ZW5zaW9uKGt2bV9zdGF0ZSwgS1ZNX0NBUF9QQ0lfU0VHTUVOVCkg JiYKKyAgICAgICAgZGV2LT5oX3NlZ25yKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi Q2FuJ3QgYXNzaWduIGRldmljZSBpbnNpZGUgbm9uLXplcm8gUENJIHNlZ21lbnQgIgorICAg ICAgICAgICAgICAgICJhcyB0aGlzIEtWTSBtb2R1bGUgZG9lc24ndCBzdXBwb3J0IGl0Llxu Iik7CisgICAgICAgIHJldHVybiAtRU5PREVWOworICAgIH0KKyNlbmRpZgorCiAgICAgbWVt c2V0KCZhc3NpZ25lZF9kZXZfZGF0YSwgMCwgc2l6ZW9mKGFzc2lnbmVkX2Rldl9kYXRhKSk7 CiAgICAgYXNzaWduZWRfZGV2X2RhdGEuYXNzaWduZWRfZGV2X2lkICA9Ci0JY2FsY19hc3Np Z25lZF9kZXZfaWQoZGV2LT5oX2J1c25yLCBkZXYtPmhfZGV2Zm4pOworCWNhbGNfYXNzaWdu ZWRfZGV2X2lkKGRldi0+aF9zZWduciwgZGV2LT5oX2J1c25yLCBkZXYtPmhfZGV2Zm4pOwor ICAgIGFzc2lnbmVkX2Rldl9kYXRhLnNlZ25yID0gZGV2LT5oX3NlZ25yOwogICAgIGFzc2ln bmVkX2Rldl9kYXRhLmJ1c25yID0gZGV2LT5oX2J1c25yOwogICAgIGFzc2lnbmVkX2Rldl9k YXRhLmRldmZuID0gZGV2LT5oX2RldmZuOwogCkBAIC04NjcsNyArODc3LDcgQEAgc3RhdGlj IGludCBhc3NpZ25faXJxKEFzc2lnbmVkRGV2aWNlICpkZQogCiAgICAgbWVtc2V0KCZhc3Np Z25lZF9pcnFfZGF0YSwgMCwgc2l6ZW9mKGFzc2lnbmVkX2lycV9kYXRhKSk7CiAgICAgYXNz aWduZWRfaXJxX2RhdGEuYXNzaWduZWRfZGV2X2lkID0KLSAgICAgICAgY2FsY19hc3NpZ25l ZF9kZXZfaWQoZGV2LT5oX2J1c25yLCBkZXYtPmhfZGV2Zm4pOworICAgICAgICBjYWxjX2Fz c2lnbmVkX2Rldl9pZChkZXYtPmhfc2VnbnIsIGRldi0+aF9idXNuciwgZGV2LT5oX2RldmZu KTsKICAgICBhc3NpZ25lZF9pcnFfZGF0YS5ndWVzdF9pcnEgPSBpcnE7CiAgICAgYXNzaWdu ZWRfaXJxX2RhdGEuaG9zdF9pcnEgPSBkZXYtPnJlYWxfZGV2aWNlLmlycTsKICNpZmRlZiBL Vk1fQ0FQX0FTU0lHTl9ERVZfSVJRCkBAIC05MDgsNyArOTE4LDcgQEAgc3RhdGljIHZvaWQg ZGVhc3NpZ25fZGV2aWNlKEFzc2lnbmVkRGV2aQogCiAgICAgbWVtc2V0KCZhc3NpZ25lZF9k ZXZfZGF0YSwgMCwgc2l6ZW9mKGFzc2lnbmVkX2Rldl9kYXRhKSk7CiAgICAgYXNzaWduZWRf ZGV2X2RhdGEuYXNzaWduZWRfZGV2X2lkICA9Ci0JY2FsY19hc3NpZ25lZF9kZXZfaWQoZGV2 LT5oX2J1c25yLCBkZXYtPmhfZGV2Zm4pOworCWNhbGNfYXNzaWduZWRfZGV2X2lkKGRldi0+ aF9zZWduciwgZGV2LT5oX2J1c25yLCBkZXYtPmhfZGV2Zm4pOwogCiAgICAgciA9IGt2bV9k ZWFzc2lnbl9wY2lfZGV2aWNlKGt2bV9jb250ZXh0LCAmYXNzaWduZWRfZGV2X2RhdGEpOwog ICAgIGlmIChyIDwgMCkKQEAgLTk2NCw3ICs5NzQsNyBAQCBzdGF0aWMgdm9pZCBhc3NpZ25l ZF9kZXZfdXBkYXRlX21zaShQQ0lECiAKICAgICBtZW1zZXQoJmFzc2lnbmVkX2lycV9kYXRh LCAwLCBzaXplb2YgYXNzaWduZWRfaXJxX2RhdGEpOwogICAgIGFzc2lnbmVkX2lycV9kYXRh LmFzc2lnbmVkX2Rldl9pZCAgPQotICAgICAgICBjYWxjX2Fzc2lnbmVkX2Rldl9pZChhc3Np Z25lZF9kZXYtPmhfYnVzbnIsCisgICAgICAgIGNhbGNfYXNzaWduZWRfZGV2X2lkKGFzc2ln bmVkX2Rldi0+aF9zZWduciwgYXNzaWduZWRfZGV2LT5oX2J1c25yLAogICAgICAgICAgICAg ICAgICh1aW50OF90KWFzc2lnbmVkX2Rldi0+aF9kZXZmbik7CiAKICAgICBpZiAoYXNzaWdu ZWRfZGV2LT5pcnFfcmVxdWVzdGVkX3R5cGUpIHsKQEAgLTEwNDgsNyArMTA1OCw3IEBAIHN0 YXRpYyBpbnQgYXNzaWduZWRfZGV2X3VwZGF0ZV9tc2l4X21taW8KICAgICAgICAgZnByaW50 ZihzdGRlcnIsICJNU0ktWCBlbnRyeSBudW1iZXIgaXMgemVybyFcbiIpOwogICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKICAgICB9Ci0gICAgbXNpeF9uci5hc3NpZ25lZF9kZXZfaWQgPSBj YWxjX2Fzc2lnbmVkX2Rldl9pZChhZGV2LT5oX2J1c25yLAorICAgIG1zaXhfbnIuYXNzaWdu ZWRfZGV2X2lkID0gY2FsY19hc3NpZ25lZF9kZXZfaWQoYWRldi0+aF9zZWduciwgYWRldi0+ aF9idXNuciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1 aW50OF90KWFkZXYtPmhfZGV2Zm4pOwogICAgIG1zaXhfbnIuZW50cnlfbnIgPSBlbnRyaWVz X25yOwogICAgIHIgPSBrdm1fYXNzaWduX3NldF9tc2l4X25yKGt2bV9jb250ZXh0LCAmbXNp eF9ucik7CkBAIC0xMTIxLDcgKzExMzEsNyBAQCBzdGF0aWMgdm9pZCBhc3NpZ25lZF9kZXZf dXBkYXRlX21zaXgoUENJCiAKICAgICBtZW1zZXQoJmFzc2lnbmVkX2lycV9kYXRhLCAwLCBz aXplb2YgYXNzaWduZWRfaXJxX2RhdGEpOwogICAgIGFzc2lnbmVkX2lycV9kYXRhLmFzc2ln bmVkX2Rldl9pZCAgPQotICAgICAgICAgICAgY2FsY19hc3NpZ25lZF9kZXZfaWQoYXNzaWdu ZWRfZGV2LT5oX2J1c25yLAorICAgICAgICAgICAgY2FsY19hc3NpZ25lZF9kZXZfaWQoYXNz aWduZWRfZGV2LT5oX3NlZ25yLCBhc3NpZ25lZF9kZXYtPmhfYnVzbnIsCiAgICAgICAgICAg ICAgICAgICAgICh1aW50OF90KWFzc2lnbmVkX2Rldi0+aF9kZXZmbik7CiAKICAgICBpZiAo YXNzaWduZWRfZGV2LT5pcnFfcmVxdWVzdGVkX3R5cGUpIHsKQEAgLTEzMTcsMTIgKzEzMjcs MTMgQEAgc3RhdGljIGludCBhc3NpZ25lZF9pbml0Zm4oc3RydWN0IFBDSURldgogICAgIHVp bnQ4X3QgZV9kZXZpY2UsIGVfaW50eDsKICAgICBpbnQgcjsKIAotICAgIGlmICghZGV2LT5o b3N0LmJ1cyAmJiAhZGV2LT5ob3N0LmRldiAmJiAhZGV2LT5ob3N0LmZ1bmMpIHsKKyAgICBp ZiAoIWRldi0+aG9zdC5zZWcgJiYgIWRldi0+aG9zdC5idXMgJiYgIWRldi0+aG9zdC5kZXYg JiYgIWRldi0+aG9zdC5mdW5jKSB7CiAgICAgICAgIHFlbXVfZXJyb3IoInBjaS1hc3NpZ246 IGVycm9yOiBubyBob3N0IGRldmljZSBzcGVjaWZpZWRcbiIpOwogICAgICAgICBnb3RvIG91 dDsKICAgICB9CiAKLSAgICBpZiAoZ2V0X3JlYWxfZGV2aWNlKGRldiwgZGV2LT5ob3N0LmJ1 cywgZGV2LT5ob3N0LmRldiwgZGV2LT5ob3N0LmZ1bmMpKSB7CisgICAgaWYgKGdldF9yZWFs X2RldmljZShkZXYsIGRldi0+aG9zdC5zZWcsIGRldi0+aG9zdC5idXMsCisgICAgICAgICAg ICAgICAgICAgICAgICBkZXYtPmhvc3QuZGV2LCBkZXYtPmhvc3QuZnVuYykpIHsKICAgICAg ICAgcWVtdV9lcnJvcigicGNpLWFzc2lnbjogRXJyb3I6IENvdWxkbid0IGdldCByZWFsIGRl dmljZSAoJXMpIVxuIiwKICAgICAgICAgICAgICAgICAgICBkZXYtPmRldi5xZGV2LmlkKTsK ICAgICAgICAgZ290byBvdXQ7CkBAIC0xMzQwLDEyICsxMzUxLDEzIEBAIHN0YXRpYyBpbnQg YXNzaWduZWRfaW5pdGZuKHN0cnVjdCBQQ0lEZXYKICAgICBkZXYtPmludHBpbiA9IGVfaW50 eDsKICAgICBkZXYtPnJ1biA9IDA7CiAgICAgZGV2LT5naXJxID0gMDsKKyAgICBkZXYtPmhf c2VnbnIgPSBkZXYtPmhvc3Quc2VnOwogICAgIGRldi0+aF9idXNuciA9IGRldi0+aG9zdC5i dXM7CiAgICAgZGV2LT5oX2RldmZuID0gUENJX0RFVkZOKGRldi0+aG9zdC5kZXYsIGRldi0+ aG9zdC5mdW5jKTsKIAogICAgIHBhY2MgPSBwY2lfYWxsb2MoKTsKICAgICBwY2lfaW5pdChw YWNjKTsKLSAgICBkZXYtPnBkZXYgPSBwY2lfZ2V0X2RldihwYWNjLCAwLCBkZXYtPmhvc3Qu YnVzLCBkZXYtPmhvc3QuZGV2LCBkZXYtPmhvc3QuZnVuYyk7CisgICAgZGV2LT5wZGV2ID0g cGNpX2dldF9kZXYocGFjYywgZGV2LT5ob3N0LnNlZywgZGV2LT5ob3N0LmJ1cywgZGV2LT5o b3N0LmRldiwgZGV2LT5ob3N0LmZ1bmMpOwogCiAgICAgaWYgKHBjaV9lbmFibGVfY2FwYWJp bGl0eV9zdXBwb3J0KHBjaV9kZXYsIDAsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgIGFz c2lnbmVkX2RldmljZV9wY2lfY2FwX3dyaXRlX2NvbmZpZywKQEAgLTEzOTIsNyArMTQwNCw3 IEBAIHN0YXRpYyBpbnQgcGFyc2VfaG9zdGFkZHIoRGV2aWNlU3RhdGUgKmQKICAgICBQQ0lI b3N0RGV2aWNlICpwdHIgPSBxZGV2X2dldF9wcm9wX3B0cihkZXYsIHByb3ApOwogICAgIGlu dCByYzsKIAotICAgIHJjID0gcGNpX3BhcnNlX2hvc3RfZGV2YWRkcihzdHIsICZwdHItPmJ1 cywgJnB0ci0+ZGV2LCAmcHRyLT5mdW5jKTsKKyAgICByYyA9IHBjaV9wYXJzZV9ob3N0X2Rl dmFkZHIoc3RyLCAmcHRyLT5zZWcsICZwdHItPmJ1cywgJnB0ci0+ZGV2LCAmcHRyLT5mdW5j KTsKICAgICBpZiAocmMgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiAw OwpAQCAtMTUxMiw4ICsxNTI0LDggQEAgc3RhdGljIHZvaWQgYXNzaWduZWRfZGV2X2xvYWRf b3B0aW9uX3JvbQogICAgIGNoYXIgcm9tX2ZpbGVbNjRdOwogCiAgICAgc25wcmludGYocm9t X2ZpbGUsIHNpemVvZihyb21fZmlsZSksCi0gICAgICAgICAgICAgIi9zeXMvYnVzL3BjaS9k ZXZpY2VzLzAwMDA6JTAyeDolMDJ4LiUwMXgvcm9tIiwKLSAgICAgICAgICAgICBkZXYtPmhv c3QuYnVzLCBkZXYtPmhvc3QuZGV2LCBkZXYtPmhvc3QuZnVuYyk7CisgICAgICAgICAgICAg Ii9zeXMvYnVzL3BjaS9kZXZpY2VzLyUwNHg6JTAyeDolMDJ4LiUwMXgvcm9tIiwKKyAgICAg ICAgICAgICBkZXYtPmhvc3Quc2VnLCBkZXYtPmhvc3QuYnVzLCBkZXYtPmhvc3QuZGV2LCBk ZXYtPmhvc3QuZnVuYyk7CiAKICAgICBpZiAoYWNjZXNzKHJvbV9maWxlLCBGX09LKSkKICAg ICAgICAgcmV0dXJuOwpJbmRleDogcWVtdS1rdm0vaHcvZGV2aWNlLWFzc2lnbm1lbnQuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11LWt2bS5vcmlnL2h3L2RldmljZS1hc3NpZ25tZW50LmgK KysrIHFlbXUta3ZtL2h3L2RldmljZS1hc3NpZ25tZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAK ICNkZWZpbmUgUENJX0RFVkZOKHNsb3QsIGZ1bmMpICAgKCgoKHNsb3QpICYgMHgxZikgPDwg MykgfCAoKGZ1bmMpICYgMHgwNykpCiAKIHR5cGVkZWYgc3RydWN0IFBDSUhvc3REZXZpY2Ug eworICAgIGludCBzZWc7CiAgICAgaW50IGJ1czsKICAgICBpbnQgZGV2OwogICAgIGludCBm dW5jOwpAQCAtODIsNiArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBBc3NpZ25lZERldmljZSB7 CiAgICAgUENJRGV2UmVnaW9ucyByZWFsX2RldmljZTsKICAgICBpbnQgcnVuOwogICAgIGlu dCBnaXJxOworICAgIHVuc2lnbmVkIGludCBoX3NlZ25yOwogICAgIHVuc2lnbmVkIGNoYXIg aF9idXNucjsKICAgICB1bnNpZ25lZCBpbnQgaF9kZXZmbjsKICAgICBpbnQgaXJxX3JlcXVl c3RlZF90eXBlOwpJbmRleDogcWVtdS1rdm0vaHcvcGNpLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cWVtdS1rdm0ub3JpZy9ody9wY2kuYworKysgcWVtdS1rdm0vaHcvcGNpLmMKQEAgLTQ4MCwy MSArNDgwLDQ4IEBAIHN0YXRpYyBpbnQgcGNpX3BhcnNlX2RldmFkZHIoY29uc3QgY2hhciAK IH0KIAogLyoKLSAqIFBhcnNlIGRldmljZSBiZGYgaW4gZGV2aWNlIGFzc2lnbm1lbnQgY29t bWFuZDoKKyAqIFBhcnNlIGRldmljZSBzZWcgYW5kIGJkZiBpbiBkZXZpY2UgYXNzaWdubWVu dCBjb21tYW5kOgogICoKLSAqIC1wY2lkZXZpY2UgaG9zdD1idXM6ZGV2LmZ1bmMKKyAqIC1w Y2lkZXZpY2UgaG9zdD1bc2VnOl1idXM6ZGV2LmZ1bmMKICAqCi0gKiBQYXJzZSA8YnVzPjo8 c2xvdD4uPGZ1bmM+IHJldHVybiAtMSBvbiBlcnJvcgorICogUGFyc2UgW3NlZzpdPGJ1cz46 PHNsb3Q+LjxmdW5jPiByZXR1cm4gLTEgb24gZXJyb3IKICAqLwotaW50IHBjaV9wYXJzZV9o b3N0X2RldmFkZHIoY29uc3QgY2hhciAqYWRkciwgaW50ICpidXNwLAoraW50IHBjaV9wYXJz ZV9ob3N0X2RldmFkZHIoY29uc3QgY2hhciAqYWRkciwgaW50ICpzZWdwLCBpbnQgKmJ1c3As CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNsb3RwLCBpbnQgKmZ1bmNwKQog ewogICAgIGNvbnN0IGNoYXIgKnA7CiAgICAgY2hhciAqZTsKICAgICBpbnQgdmFsOwotICAg IGludCBidXMgPSAwLCBzbG90ID0gMCwgZnVuYyA9IDA7CisgICAgaW50IHNlZyA9IDAsIGJ1 cyA9IDAsIHNsb3QgPSAwLCBmdW5jID0gMDsKIAorICAgIC8qIHBhcnNlIG9wdGlvbmFsIHNl ZyAqLwogICAgIHAgPSBhZGRyOworICAgIHZhbCA9IDA7CisgICAgd2hpbGUgKDEpIHsKKyAg ICAgICAgcCA9IHN0cmNocihwLCAnOicpOworICAgICAgICBpZiAocCkgeworICAgICAgICAg ICAgdmFsKys7CisgICAgICAgICAgICBwKys7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg ICAgYnJlYWs7CisgICAgfQorICAgIGlmICh2YWwgPD0gMCB8fCB2YWwgPiAyKQorICAgICAg ICByZXR1cm4gLTE7CisKKyAgICBwID0gYWRkcjsKKyAgICBpZiAodmFsID09IDIpIHsKKyAg ICAgICAgdmFsID0gc3RydG91bChwLCAmZSwgMTYpOworICAgICAgICBpZiAoZSA9PSBwKQor ICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoKmUgPT0gJzonKSB7CisgICAg ICAgICAgICBzZWcgPSB2YWw7CisgICAgICAgICAgICBwID0gZSArIDE7CisgICAgICAgIH0K KyAgICB9IGVsc2UKKyAgICAgICAgc2VnID0gMDsKKworCisgICAgLyogcGFyc2UgYmRmICov CiAgICAgdmFsID0gc3RydG91bChwLCAmZSwgMTYpOwogICAgIGlmIChlID09IHApCiAJcmV0 dXJuIC0xOwpAQCAtNTE2LDEyICs1NDMsMTMgQEAgaW50IHBjaV9wYXJzZV9ob3N0X2RldmFk ZHIoY29uc3QgY2hhciAqYQogICAgIH0gZWxzZQogCXJldHVybiAtMTsKIAotICAgIGlmIChi dXMgPiAweGZmIHx8IHNsb3QgPiAweDFmIHx8IGZ1bmMgPiAweDcpCisgICAgaWYgKHNlZyA+ IDB4ZmZmZiB8fCBidXMgPiAweGZmIHx8IHNsb3QgPiAweDFmIHx8IGZ1bmMgPiAweDcpCiAJ cmV0dXJuIC0xOwogCiAgICAgaWYgKCplKQogCXJldHVybiAtMTsKIAorICAgICpzZWdwID0g c2VnOwogICAgICpidXNwID0gYnVzOwogICAgICpzbG90cCA9IHNsb3Q7CiAgICAgKmZ1bmNw ID0gZnVuYzsKSW5kZXg6IHFlbXUta3ZtL2h3L3BjaS5oCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFl bXUta3ZtLm9yaWcvaHcvcGNpLmgKKysrIHFlbXUta3ZtL2h3L3BjaS5oCkBAIC0yNzYsNyAr Mjc2LDcgQEAgUENJQnVzICpwY2lfZ2V0X2J1c19kZXZmbihpbnQgKmRldmZucCwgYwogaW50 IHBjaV9yZWFkX2RldmFkZHIoTW9uaXRvciAqbW9uLCBjb25zdCBjaGFyICphZGRyLCBpbnQg KmRvbXAsIGludCAqYnVzcCwKICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICpzbG90 cCk7CiAKLWludCBwY2lfcGFyc2VfaG9zdF9kZXZhZGRyKGNvbnN0IGNoYXIgKmFkZHIsIGlu dCAqYnVzcCwKK2ludCBwY2lfcGFyc2VfaG9zdF9kZXZhZGRyKGNvbnN0IGNoYXIgKmFkZHIs IGludCAqc2VncCwgaW50ICpidXNwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ICpzbG90cCwgaW50ICpmdW5jcCk7CiAKIHZvaWQgcGNpX2luZm8oTW9uaXRvciAqbW9uKTsK SW5kZXg6IHFlbXUta3ZtL2t2bS9pbmNsdWRlL2xpbnV4L2t2bS5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHFlbXUta3ZtLm9yaWcva3ZtL2luY2x1ZGUvbGludXgva3ZtLmgKKysrIHFlbXUta3Zt L2t2bS9pbmNsdWRlL2xpbnV4L2t2bS5oCkBAIC00OTgsNiArNDk4LDggQEAgc3RydWN0IGt2 bV9pb2V2ZW50ZmQgewogI2RlZmluZSBLVk1fQ0FQX1MzOTBfUFNXIDQyCiAjZGVmaW5lIEtW TV9DQVBfUFBDX1NFR1NUQVRFIDQzCiAKKyNkZWZpbmUgS1ZNX0NBUF9QQ0lfU0VHTUVOVCA0 NworCiAjaWZkZWYgS1ZNX0NBUF9JUlFfUk9VVElORwogCiBzdHJ1Y3Qga3ZtX2lycV9yb3V0 aW5nX2lycWNoaXAgewpAQCAtNjkxLDggKzY5Myw5IEBAIHN0cnVjdCBrdm1fYXNzaWduZWRf cGNpX2RldiB7CiAJX191MzIgYnVzbnI7CiAJX191MzIgZGV2Zm47CiAJX191MzIgZmxhZ3M7 CisJX191MzIgc2VnbnI7CiAJdW5pb24gewotCQlfX3UzMiByZXNlcnZlZFsxMl07CisJCV9f dTMyIHJlc2VydmVkWzExXTsKIAl9OwogfTsKIApJbmRleDogcWVtdS1rdm0vcWVtdS1vcHRp b25zLmh4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUta3ZtLm9yaWcvcWVtdS1vcHRpb25zLmh4 CisrKyBxZW11LWt2bS9xZW11LW9wdGlvbnMuaHgKQEAgLTE5NzcsNyArMTk3Nyw3IEBAIERF Rigibm8ta3ZtLXBpdC1yZWluamVjdGlvbiIsIDAsIFFFTVVfT1AKICAgICAiICAgICAgICAg ICAgICAgIGRpc2FibGUgS1ZNIGtlcm5lbCBtb2RlIFBJVCBpbnRlcnJ1cHQgcmVpbmplY3Rp b25cbiIpCiAjaWYgZGVmaW5lZChUQVJHRVRfSTM4NikgfHwgZGVmaW5lZChUQVJHRVRfWDg2 XzY0KSB8fCBkZWZpbmVkKFRBUkdFVF9JQTY0KSB8fCBkZWZpbmVkKF9fbGludXhfXykKIERF RigicGNpZGV2aWNlIiwgSEFTX0FSRywgUUVNVV9PUFRJT05fcGNpZGV2aWNlLAotICAgICIt cGNpZGV2aWNlIGhvc3Q9YnVzOmRldi5mdW5jWyxkbWE9bm9uZV1bLG5hbWU9c3RyaW5nXVxu IgorICAgICItcGNpZGV2aWNlIGhvc3Q9W3NlZzpdYnVzOmRldi5mdW5jWyxkbWE9bm9uZV1b LG5hbWU9c3RyaW5nXVxuIgogICAgICIgICAgICAgICAgICAgICAgZXhwb3NlIGEgUENJIGRl dmljZSB0byB0aGUgZ3Vlc3QgT1NcbiIKICAgICAiICAgICAgICAgICAgICAgIGRtYT1ub25l OiBkb24ndCBwZXJmb3JtIGFueSBkbWEgdHJhbnNsYXRpb25zIChkZWZhdWx0IGlzIHRvIHVz ZSBhbiBpb21tdSlcbiIKICAgICAiICAgICAgICAgICAgICAgICdzdHJpbmcnIGlzIHVzZWQg aW4gbG9nIG91dHB1dFxuIikK --------------020407060601080107090501 Content-Type: application/octet-stream; name="kvm_vtd_multi_seg_kmod_v2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kvm_vtd_multi_seg_kmod_v2.patch" SW5kZXg6IGxpbnV4LTIuNi92aXJ0L2t2bS9hc3NpZ25lZC1kZXYuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBsaW51eC0yLjYub3JpZy92aXJ0L2t2bS9hc3NpZ25lZC1kZXYuYworKysgbGludXgt Mi42L3ZpcnQva3ZtL2Fzc2lnbmVkLWRldi5jCkBAIC01MjYsNyArNTI2LDggQEAgc3RhdGlj IGludCBrdm1fdm1faW9jdGxfYXNzaWduX2RldmljZShzdAogCQlyID0gLUVOT01FTTsKIAkJ Z290byBvdXQ7CiAJfQotCWRldiA9IHBjaV9nZXRfYnVzX2FuZF9zbG90KGFzc2lnbmVkX2Rl di0+YnVzbnIsCisJZGV2ID0gcGNpX2dldF9kb21haW5fYnVzX2FuZF9zbG90KGFzc2lnbmVk X2Rldi0+c2VnbnIsCisJCQkJICAgYXNzaWduZWRfZGV2LT5idXNuciwKIAkJCQkgICBhc3Np Z25lZF9kZXYtPmRldmZuKTsKIAlpZiAoIWRldikgewogCQlwcmludGsoS0VSTl9JTkZPICIl czogaG9zdCBkZXZpY2Ugbm90IGZvdW5kXG4iLCBfX2Z1bmNfXyk7CkBAIC01NDgsNiArNTQ5 LDcgQEAgc3RhdGljIGludCBrdm1fdm1faW9jdGxfYXNzaWduX2RldmljZShzdAogCXBjaV9y ZXNldF9mdW5jdGlvbihkZXYpOwogCiAJbWF0Y2gtPmFzc2lnbmVkX2Rldl9pZCA9IGFzc2ln bmVkX2Rldi0+YXNzaWduZWRfZGV2X2lkOworCW1hdGNoLT5ob3N0X3NlZ25yID0gYXNzaWdu ZWRfZGV2LT5zZWducjsKIAltYXRjaC0+aG9zdF9idXNuciA9IGFzc2lnbmVkX2Rldi0+YnVz bnI7CiAJbWF0Y2gtPmhvc3RfZGV2Zm4gPSBhc3NpZ25lZF9kZXYtPmRldmZuOwogCW1hdGNo LT5mbGFncyA9IGFzc2lnbmVkX2Rldi0+ZmxhZ3M7CkluZGV4OiBsaW51eC0yLjYvdmlydC9r dm0vaW9tbXUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy92aXJ0L2t2bS9p b21tdS5jCisrKyBsaW51eC0yLjYvdmlydC9rdm0vaW9tbXUuYwpAQCAtMTA2LDcgKzEwNiw4 IEBAIGludCBrdm1fYXNzaWduX2RldmljZShzdHJ1Y3Qga3ZtICprdm0sCiAKIAlyID0gaW9t bXVfYXR0YWNoX2RldmljZShkb21haW4sICZwZGV2LT5kZXYpOwogCWlmIChyKSB7Ci0JCXBy aW50ayhLRVJOX0VSUiAiYXNzaWduIGRldmljZSAleDoleC4leCBmYWlsZWQiLAorCQlwcmlu dGsoS0VSTl9FUlIgImFzc2lnbiBkZXZpY2UgJXg6JXg6JXguJXggZmFpbGVkIiwKKwkJCXBj aV9kb21haW5fbnIocGRldi0+YnVzKSwKIAkJCXBkZXYtPmJ1cy0+bnVtYmVyLAogCQkJUENJ X1NMT1QocGRldi0+ZGV2Zm4pLAogCQkJUENJX0ZVTkMocGRldi0+ZGV2Zm4pKTsKQEAgLTEy Nyw3ICsxMjgsOCBAQCBpbnQga3ZtX2Fzc2lnbl9kZXZpY2Uoc3RydWN0IGt2bSAqa3ZtLAog CQkJZ290byBvdXRfdW5tYXA7CiAJfQogCi0JcHJpbnRrKEtFUk5fREVCVUcgImFzc2lnbiBk ZXZpY2U6IGhvc3QgYmRmID0gJXg6JXg6JXhcbiIsCisJcHJpbnRrKEtFUk5fREVCVUcgImFz c2lnbiBkZXZpY2UgJXg6JXg6JXguJXhcbiIsCisJCWFzc2lnbmVkX2Rldi0+aG9zdF9zZWdu ciwKIAkJYXNzaWduZWRfZGV2LT5ob3N0X2J1c25yLAogCQlQQ0lfU0xPVChhc3NpZ25lZF9k ZXYtPmhvc3RfZGV2Zm4pLAogCQlQQ0lfRlVOQyhhc3NpZ25lZF9kZXYtPmhvc3RfZGV2Zm4p KTsKQEAgLTE1NCw3ICsxNTYsOCBAQCBpbnQga3ZtX2RlYXNzaWduX2RldmljZShzdHJ1Y3Qg a3ZtICprdm0sCiAKIAlpb21tdV9kZXRhY2hfZGV2aWNlKGRvbWFpbiwgJnBkZXYtPmRldik7 CiAKLQlwcmludGsoS0VSTl9ERUJVRyAiZGVhc3NpZ24gZGV2aWNlOiBob3N0IGJkZiA9ICV4 OiV4OiV4XG4iLAorCXByaW50ayhLRVJOX0RFQlVHICJkZWFzc2lnbiBkZXZpY2UgJXg6JXg6 JXguJXhcbiIsCisJCWFzc2lnbmVkX2Rldi0+aG9zdF9zZWduciwKIAkJYXNzaWduZWRfZGV2 LT5ob3N0X2J1c25yLAogCQlQQ0lfU0xPVChhc3NpZ25lZF9kZXYtPmhvc3RfZGV2Zm4pLAog CQlQQ0lfRlVOQyhhc3NpZ25lZF9kZXYtPmhvc3RfZGV2Zm4pKTsKSW5kZXg6IGxpbnV4LTIu Ni9pbmNsdWRlL2xpbnV4L2t2bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmln L2luY2x1ZGUvbGludXgva3ZtLmgKKysrIGxpbnV4LTIuNi9pbmNsdWRlL2xpbnV4L2t2bS5o CkBAIC01MDAsNiArNTAwLDcgQEAgc3RydWN0IGt2bV9pb2V2ZW50ZmQgewogI2RlZmluZSBL Vk1fQ0FQX0hZUEVSViA0NAogI2RlZmluZSBLVk1fQ0FQX0hZUEVSVl9WQVBJQyA0NQogI2Rl ZmluZSBLVk1fQ0FQX0hZUEVSVl9TUElOIDQ2CisjZGVmaW5lIEtWTV9DQVBfUENJX1NFR01F TlQgNDcKIAogI2lmZGVmIEtWTV9DQVBfSVJRX1JPVVRJTkcKIApAQCAtNjk0LDggKzY5NSw5 IEBAIHN0cnVjdCBrdm1fYXNzaWduZWRfcGNpX2RldiB7CiAJX191MzIgYnVzbnI7CiAJX191 MzIgZGV2Zm47CiAJX191MzIgZmxhZ3M7CisJX191MzIgc2VnbnI7CiAJdW5pb24gewotCQlf X3UzMiByZXNlcnZlZFsxMl07CisJCV9fdTMyIHJlc2VydmVkWzExXTsKIAl9OwogfTsKIApJ bmRleDogbGludXgtMi42L2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBsaW51eC0yLjYub3JpZy9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKKysrIGxpbnV4 LTIuNi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKQEAgLTQwMCw2ICs0MDAsNyBAQCBzdHJ1 Y3Qga3ZtX2Fzc2lnbmVkX2Rldl9rZXJuZWwgewogCXN0cnVjdCB3b3JrX3N0cnVjdCBpbnRl cnJ1cHRfd29yazsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAJaW50IGFzc2lnbmVkX2Rl dl9pZDsKKwlpbnQgaG9zdF9zZWducjsKIAlpbnQgaG9zdF9idXNucjsKIAlpbnQgaG9zdF9k ZXZmbjsKIAl1bnNpZ25lZCBpbnQgZW50cmllc19ucjsKSW5kZXg6IGxpbnV4LTIuNi9hcmNo L3g4Ni9rdm0veDg2LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvYXJjaC94 ODYva3ZtL3g4Ni5jCisrKyBsaW51eC0yLjYvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0xNTY5 LDYgKzE1NjksNyBAQCBpbnQga3ZtX2Rldl9pb2N0bF9jaGVja19leHRlbnNpb24obG9uZyBl CiAJY2FzZSBLVk1fQ0FQX0hZUEVSVjoKIAljYXNlIEtWTV9DQVBfSFlQRVJWX1ZBUElDOgog CWNhc2UgS1ZNX0NBUF9IWVBFUlZfU1BJTjoKKwljYXNlIEtWTV9DQVBfUENJX1NFR01FTlQ6 CiAJCXIgPSAxOwogCQlicmVhazsKIAljYXNlIEtWTV9DQVBfQ09BTEVTQ0VEX01NSU86Cg== --------------020407060601080107090501--