From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulina Szubarczyk Subject: [PATCH RESEND 2/4] qdisk, hw/block/xen_disk: Removal of grant mapping Date: Tue, 31 May 2016 06:44:56 +0200 Message-ID: <1464669898-28495-3-git-send-email-paulinaszubarczyk@gmail.com> References: <1464669898-28495-1-git-send-email-paulinaszubarczyk@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b7bZJ-0007TQ-FD for xen-devel@lists.xenproject.org; Tue, 31 May 2016 04:46:17 +0000 Received: by mail-lf0-f65.google.com with SMTP id q63so6045136lfi.2 for ; Mon, 30 May 2016 21:46:15 -0700 (PDT) In-Reply-To: <1464669898-28495-1-git-send-email-paulinaszubarczyk@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, roger.pau@citrix.com Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, Paulina Szubarczyk , ian.jackson@eu.citrix.com, P.Gawkowski@ii.pw.edu.pl, anthony.perard@citrix.com List-Id: xen-devel@lists.xenproject.org R3JhbnQgbWFwcGluZyByZWxhdGVkIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIGFyZSByZW1vdmVk Cm9uIGJlaGFsZiBvZiBncmFudCBjb3B5IG9wZXJhdGlvbiBpbnRyb2R1Y2VkIGluIGZvbGxvd2lu ZyBjb21taXRzLgotLS0KIGh3L2Jsb2NrL3hlbl9kaXNrLmMgfCAyODQgKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEw IGluc2VydGlvbnMoKyksIDI3NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9ibG9jay94 ZW5fZGlzay5jIGIvaHcvYmxvY2sveGVuX2Rpc2suYwppbmRleCAzN2UxNGQxLi4zYjc4ODJlIDEw MDY0NAotLS0gYS9ody9ibG9jay94ZW5fZGlzay5jCisrKyBiL2h3L2Jsb2NrL3hlbl9kaXNrLmMK QEAgLTc5LDEzICs3OSwxMiBAQCBzdHJ1Y3QgaW9yZXEgewogICAgIGludCAgICAgICAgICAgICAg ICAgcG9zdHN5bmM7CiAgICAgdWludDhfdCAgICAgICAgICAgICBtYXBwZWQ7CiAKLSAgICAvKiBn cmFudCBtYXBwaW5nICovCi0gICAgdWludDMyX3QgICAgICAgICAgICBkb21pZHNbQkxLSUZfTUFY X1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKKyAgICAvKiBncmFudCBjb3B5ICovCisgICAgdWludDE2 X3QgICAgICAgICAgICBkb21pZHNbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKICAg ICB1aW50MzJfdCAgICAgICAgICAgIHJlZnNbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNU XTsKICAgICBpbnQgICAgICAgICAgICAgICAgIHByb3Q7CiAgICAgdm9pZCAgICAgICAgICAgICAg ICAqcGFnZVtCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOwogICAgIHZvaWQgICAgICAg ICAgICAgICAgKnBhZ2VzOwotICAgIGludCAgICAgICAgICAgICAgICAgbnVtX3VubWFwOwogCiAg ICAgLyogYWlvIHN0YXR1cyAqLwogICAgIGludCAgICAgICAgICAgICAgICAgYWlvX2luZmxpZ2h0 OwpAQCAtMTIzLDEzICsxMjIsOCBAQCBzdHJ1Y3QgWGVuQmxrRGV2IHsKICAgICBpbnQgICAgICAg ICAgICAgICAgIHJlcXVlc3RzX2luZmxpZ2h0OwogICAgIGludCAgICAgICAgICAgICAgICAgcmVx dWVzdHNfZmluaXNoZWQ7CiAKLSAgICAvKiBQZXJzaXN0ZW50IGdyYW50cyBleHRlbnNpb24gKi8K KyAgICAvKiAqLwogICAgIGdib29sZWFuICAgICAgICAgICAgZmVhdHVyZV9kaXNjYXJkOwotICAg IGdib29sZWFuICAgICAgICAgICAgZmVhdHVyZV9wZXJzaXN0ZW50OwotICAgIEdUcmVlICAgICAg ICAgICAgICAgKnBlcnNpc3RlbnRfZ250czsKLSAgICBHU0xpc3QgICAgICAgICAgICAgICpwZXJz aXN0ZW50X3JlZ2lvbnM7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICBwZXJzaXN0ZW50X2dudF9j b3VudDsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgIG1heF9ncmFudHM7CiAKICAgICAvKiBxZW11 IGJsb2NrIGRyaXZlciAqLwogICAgIERyaXZlSW5mbyAgICAgICAgICAgKmRpbmZvOwpAQCAtMTY0 LDQ2ICsxNTgsNiBAQCBzdGF0aWMgdm9pZCBpb3JlcV9yZXNldChzdHJ1Y3QgaW9yZXEgKmlvcmVx KQogICAgIHFlbXVfaW92ZWNfcmVzZXQoJmlvcmVxLT52KTsKIH0KIAotc3RhdGljIGdpbnQgaW50 X2NtcChnY29uc3Rwb2ludGVyIGEsIGdjb25zdHBvaW50ZXIgYiwgZ3BvaW50ZXIgdXNlcl9kYXRh KQotewotICAgIHVpbnQgdWEgPSBHUE9JTlRFUl9UT19VSU5UKGEpOwotICAgIHVpbnQgdWIgPSBH UE9JTlRFUl9UT19VSU5UKGIpOwotICAgIHJldHVybiAodWEgPiB1YikgLSAodWEgPCB1Yik7Ci19 Ci0KLXN0YXRpYyB2b2lkIGRlc3Ryb3lfZ3JhbnQoZ3BvaW50ZXIgcGdudCkKLXsKLSAgICBQZXJz aXN0ZW50R3JhbnQgKmdyYW50ID0gcGdudDsKLSAgICBYZW5HbnR0YWIgZ250ID0gZ3JhbnQtPmJs a2Rldi0+eGVuZGV2LmdudHRhYmRldjsKLQotICAgIGlmICh4Y19nbnR0YWJfbXVubWFwKGdudCwg Z3JhbnQtPnBhZ2UsIDEpICE9IDApIHsKLSAgICAgICAgeGVuX2JlX3ByaW50ZigmZ3JhbnQtPmJs a2Rldi0+eGVuZGV2LCAwLAotICAgICAgICAgICAgICAgICAgICAgICJ4Y19nbnR0YWJfbXVubWFw IGZhaWxlZDogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsK LSAgICB9Ci0gICAgZ3JhbnQtPmJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQtLTsKLSAgICB4 ZW5fYmVfcHJpbnRmKCZncmFudC0+YmxrZGV2LT54ZW5kZXYsIDMsCi0gICAgICAgICAgICAgICAg ICAidW5tYXBwZWQgZ3JhbnQgJXBcbiIsIGdyYW50LT5wYWdlKTsKLSAgICBnX2ZyZWUoZ3JhbnQp OwotfQotCi1zdGF0aWMgdm9pZCByZW1vdmVfcGVyc2lzdGVudF9yZWdpb24oZ3BvaW50ZXIgZGF0 YSwgZ3BvaW50ZXIgZGV2KQotewotICAgIFBlcnNpc3RlbnRSZWdpb24gKnJlZ2lvbiA9IGRhdGE7 Ci0gICAgc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2ID0gZGV2OwotICAgIFhlbkdudHRhYiBnbnQg PSBibGtkZXYtPnhlbmRldi5nbnR0YWJkZXY7Ci0KLSAgICBpZiAoeGNfZ250dGFiX211bm1hcChn bnQsIHJlZ2lvbi0+YWRkciwgcmVnaW9uLT5udW0pICE9IDApIHsKLSAgICAgICAgeGVuX2JlX3By aW50ZigmYmxrZGV2LT54ZW5kZXYsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgInhjX2dudHRh Yl9tdW5tYXAgcmVnaW9uICVwIGZhaWxlZDogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAg cmVnaW9uLT5hZGRyLCBzdHJlcnJvcihlcnJubykpOwotICAgIH0KLSAgICB4ZW5fYmVfcHJpbnRm KCZibGtkZXYtPnhlbmRldiwgMywKLSAgICAgICAgICAgICAgICAgICJ1bm1hcHBlZCBncmFudCBy ZWdpb24gJXAgd2l0aCAlZCBwYWdlc1xuIiwKLSAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+YWRk ciwgcmVnaW9uLT5udW0pOwotICAgIGdfZnJlZShyZWdpb24pOwotfQotCiBzdGF0aWMgc3RydWN0 IGlvcmVxICppb3JlcV9zdGFydChzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYpCiB7CiAgICAgc3Ry dWN0IGlvcmVxICppb3JlcSA9IE5VTEw7CkBAIC0zMTQsNyArMjY4LDkgQEAgc3RhdGljIGludCBp b3JlcV9wYXJzZShzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogICAgICAgICBpb3JlcS0+cmVmc1tpXSAg ID0gaW9yZXEtPnJlcS5zZWdbaV0uZ3JlZjsKIAogICAgICAgICBtZW0gPSBpb3JlcS0+cmVxLnNl Z1tpXS5maXJzdF9zZWN0ICogYmxrZGV2LT5maWxlX2JsazsKLSAgICAgICAgbGVuID0gKGlvcmVx LT5yZXEuc2VnW2ldLmxhc3Rfc2VjdCAtIGlvcmVxLT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKyAx KSAqIGJsa2Rldi0+ZmlsZV9ibGs7CisgICAgICAgIGxlbiA9IChpb3JlcS0+cmVxLnNlZ1tpXS5s YXN0X3NlY3QgLSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICsgMSkgCisgICAgICAgICAg ICAgICogYmxrZGV2LT5maWxlX2JsazsKKwogICAgICAgICBxZW11X2lvdmVjX2FkZCgmaW9yZXEt PnYsICh2b2lkKiltZW0sIGxlbik7CiAgICAgfQogICAgIGlmIChpb3JlcS0+c3RhcnQgKyBpb3Jl cS0+di5zaXplID4gYmxrZGV2LT5maWxlX3NpemUpIHsKQEAgLTMyOCwxNzggKzI4NCw2IEBAIGVy cjoKICAgICByZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyB2b2lkIGlvcmVxX3VubWFwKHN0cnVjdCBp b3JlcSAqaW9yZXEpCi17Ci0gICAgWGVuR250dGFiIGdudCA9IGlvcmVxLT5ibGtkZXYtPnhlbmRl di5nbnR0YWJkZXY7Ci0gICAgaW50IGk7Ci0KLSAgICBpZiAoaW9yZXEtPm51bV91bm1hcCA9PSAw IHx8IGlvcmVxLT5tYXBwZWQgPT0gMCkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm IChiYXRjaF9tYXBzKSB7Ci0gICAgICAgIGlmICghaW9yZXEtPnBhZ2VzKSB7Ci0gICAgICAgICAg ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHhjX2dudHRhYl9tdW5tYXAoZ250LCBp b3JlcS0+cGFnZXMsIGlvcmVxLT5udW1fdW5tYXApICE9IDApIHsKLSAgICAgICAgICAgIHhlbl9i ZV9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwgInhjX2dudHRhYl9tdW5tYXAgZmFp bGVkOiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsK LSAgICAgICAgfQotICAgICAgICBpb3JlcS0+YmxrZGV2LT5jbnRfbWFwIC09IGlvcmVxLT5udW1f dW5tYXA7Ci0gICAgICAgIGlvcmVxLT5wYWdlcyA9IE5VTEw7Ci0gICAgfSBlbHNlIHsKLSAgICAg ICAgZm9yIChpID0gMDsgaSA8IGlvcmVxLT5udW1fdW5tYXA7IGkrKykgewotICAgICAgICAgICAg aWYgKCFpb3JlcS0+cGFnZVtpXSkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg ICAgICAgfQotICAgICAgICAgICAgaWYgKHhjX2dudHRhYl9tdW5tYXAoZ250LCBpb3JlcS0+cGFn ZVtpXSwgMSkgIT0gMCkgewotICAgICAgICAgICAgICAgIHhlbl9iZV9wcmludGYoJmlvcmVxLT5i bGtkZXYtPnhlbmRldiwgMCwgInhjX2dudHRhYl9tdW5tYXAgZmFpbGVkOiAlc1xuIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgICBpb3JlcS0+YmxrZGV2LT5jbnRfbWFwLS07Ci0gICAgICAgICAgICBpb3Jl cS0+cGFnZVtpXSA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaW9yZXEtPm1hcHBlZCA9 IDA7Ci19Ci0KLXN0YXRpYyBpbnQgaW9yZXFfbWFwKHN0cnVjdCBpb3JlcSAqaW9yZXEpCi17Ci0g ICAgWGVuR250dGFiIGdudCA9IGlvcmVxLT5ibGtkZXYtPnhlbmRldi5nbnR0YWJkZXY7Ci0gICAg dWludDMyX3QgZG9taWRzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Ci0gICAgdWlu dDMyX3QgcmVmc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOwotICAgIHZvaWQgKnBh Z2VbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKLSAgICBpbnQgaSwgaiwgbmV3X21h cHMgPSAwOwotICAgIFBlcnNpc3RlbnRHcmFudCAqZ3JhbnQ7Ci0gICAgUGVyc2lzdGVudFJlZ2lv biAqcmVnaW9uOwotICAgIC8qIGRvbWlkcyBhbmQgcmVmcyB2YXJpYWJsZXMgd2lsbCBjb250YWlu IHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkKLSAgICAgKiB0byBtYXAgdGhlIGdyYW50cyB0aGF0 IGFyZSBuZWVkZWQgdG8gZnVsZmlsbCB0aGlzIHJlcXVlc3QuCi0gICAgICoKLSAgICAgKiBBZnRl ciBtYXBwaW5nIHRoZSBuZWVkZWQgZ3JhbnRzLCB0aGUgcGFnZSBhcnJheSB3aWxsIGNvbnRhaW4g dGhlCi0gICAgICogbWVtb3J5IGFkZHJlc3Mgb2YgZWFjaCBncmFudGVkIHBhZ2UgaW4gdGhlIG9y ZGVyIHNwZWNpZmllZCBpbiBpb3JlcQotICAgICAqIChkaXNyZWdhcmRpbmcgaWYgaXQncyBhIHBl cnNpc3RlbnQgZ3JhbnQgb3Igbm90KS4KLSAgICAgKi8KLQotICAgIGlmIChpb3JlcS0+di5uaW92 ID09IDAgfHwgaW9yZXEtPm1hcHBlZCA9PSAxKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K LSAgICBpZiAoaW9yZXEtPmJsa2Rldi0+ZmVhdHVyZV9wZXJzaXN0ZW50KSB7Ci0gICAgICAgIGZv ciAoaSA9IDA7IGkgPCBpb3JlcS0+di5uaW92OyBpKyspIHsKLSAgICAgICAgICAgIGdyYW50ID0g Z190cmVlX2xvb2t1cChpb3JlcS0+YmxrZGV2LT5wZXJzaXN0ZW50X2dudHMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHVUlOVF9UT19QT0lOVEVSKGlvcmVxLT5yZWZzW2ld KSk7Ci0KLSAgICAgICAgICAgIGlmIChncmFudCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAg cGFnZVtpXSA9IGdyYW50LT5wYWdlOwotICAgICAgICAgICAgICAgIHhlbl9iZV9wcmludGYoJmlv cmVxLT5ibGtkZXYtPnhlbmRldiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1 c2luZyBwZXJzaXN0ZW50LWdyYW50ICUiIFBSSXUzMiAiXG4iLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW9yZXEtPnJlZnNbaV0pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgICAgICAgLyogQWRkIHRoZSBncmFudCB0byB0aGUgbGlzdCBvZiBncmFudHMgdGhh dAotICAgICAgICAgICAgICAgICAgICAgKiBzaG91bGQgYmUgbWFwcGVkCi0gICAgICAgICAgICAg ICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICBkb21pZHNbbmV3X21hcHNdID0gaW9yZXEt PmRvbWlkc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgcmVmc1tuZXdfbWFwc10gPSBpb3JlcS0+ cmVmc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgcGFnZVtpXSA9IE5VTEw7Ci0gICAgICAgICAg ICAgICAgICAgIG5ld19tYXBzKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg LyogU2V0IHRoZSBwcm90ZWN0aW9uIHRvIFJXLCBzaW5jZSBncmFudHMgbWF5IGJlIHJldXNlZCBs YXRlcgotICAgICAgICAgKiB3aXRoIGEgZGlmZmVyZW50IHByb3RlY3Rpb24gdGhhbiB0aGUgb25l IG5lZWRlZCBmb3IgdGhpcyByZXF1ZXN0Ci0gICAgICAgICAqLwotICAgICAgICBpb3JlcS0+cHJv dCA9IFBST1RfV1JJVEUgfCBQUk9UX1JFQUQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogQWxs IGdyYW50cyBpbiB0aGUgcmVxdWVzdCBzaG91bGQgYmUgbWFwcGVkICovCi0gICAgICAgIG1lbWNw eShyZWZzLCBpb3JlcS0+cmVmcywgc2l6ZW9mKHJlZnMpKTsKLSAgICAgICAgbWVtY3B5KGRvbWlk cywgaW9yZXEtPmRvbWlkcywgc2l6ZW9mKGRvbWlkcykpOwotICAgICAgICBtZW1zZXQocGFnZSwg MCwgc2l6ZW9mKHBhZ2UpKTsKLSAgICAgICAgbmV3X21hcHMgPSBpb3JlcS0+di5uaW92OwotICAg IH0KLQotICAgIGlmIChiYXRjaF9tYXBzICYmIG5ld19tYXBzKSB7Ci0gICAgICAgIGlvcmVxLT5w YWdlcyA9IHhjX2dudHRhYl9tYXBfZ3JhbnRfcmVmcwotICAgICAgICAgICAgKGdudCwgbmV3X21h cHMsIGRvbWlkcywgcmVmcywgaW9yZXEtPnByb3QpOwotICAgICAgICBpZiAoaW9yZXEtPnBhZ2Vz ID09IE5VTEwpIHsKLSAgICAgICAgICAgIHhlbl9iZV9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhl bmRldiwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IG1hcCAlZCBncmFudCBy ZWZzICglcywgJWQgbWFwcylcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYXBz LCBzdHJlcnJvcihlcnJubyksIGlvcmVxLT5ibGtkZXYtPmNudF9tYXApOwotICAgICAgICAgICAg cmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgaW9y ZXEtPnYubmlvdjsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocGFnZVtpXSA9PSBOVUxMKSB7Ci0g ICAgICAgICAgICAgICAgcGFnZVtpXSA9IGlvcmVxLT5wYWdlcyArIChqKyspICogWENfUEFHRV9T SVpFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlvcmVxLT5ibGtkZXYtPmNu dF9tYXAgKz0gbmV3X21hcHM7Ci0gICAgfSBlbHNlIGlmIChuZXdfbWFwcykgIHsKLSAgICAgICAg Zm9yIChpID0gMDsgaSA8IG5ld19tYXBzOyBpKyspIHsKLSAgICAgICAgICAgIGlvcmVxLT5wYWdl W2ldID0geGNfZ250dGFiX21hcF9ncmFudF9yZWYKLSAgICAgICAgICAgICAgICAoZ250LCBkb21p ZHNbaV0sIHJlZnNbaV0sIGlvcmVxLT5wcm90KTsKLSAgICAgICAgICAgIGlmIChpb3JlcS0+cGFn ZVtpXSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgeGVuX2JlX3ByaW50ZigmaW9yZXEtPmJs a2Rldi0+eGVuZGV2LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IG1h cCBncmFudCByZWYgJWQgKCVzLCAlZCBtYXBzKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlZnNbaV0sIHN0cmVycm9yKGVycm5vKSwgaW9yZXEtPmJsa2Rldi0+Y250X21hcCk7 Ci0gICAgICAgICAgICAgICAgaW9yZXEtPm1hcHBlZCA9IDE7Ci0gICAgICAgICAgICAgICAgaW9y ZXFfdW5tYXAoaW9yZXEpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAg IH0KLSAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYtPmNudF9tYXArKzsKLSAgICAgICAgfQotICAg ICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGlvcmVxLT52Lm5pb3Y7IGkrKykgewotICAgICAg ICAgICAgaWYgKHBhZ2VbaV0gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHBhZ2VbaV0gPSBp b3JlcS0+cGFnZVtqKytdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGlm IChpb3JlcS0+YmxrZGV2LT5mZWF0dXJlX3BlcnNpc3RlbnQgJiYgbmV3X21hcHMgIT0gMCAmJgot ICAgICAgICAoIWJhdGNoX21hcHMgfHwgKGlvcmVxLT5ibGtkZXYtPnBlcnNpc3RlbnRfZ250X2Nv dW50ICsgbmV3X21hcHMgPD0KLSAgICAgICAgaW9yZXEtPmJsa2Rldi0+bWF4X2dyYW50cykpKSB7 Ci0gICAgICAgIC8qCi0gICAgICAgICAqIElmIHdlIGFyZSB1c2luZyBwZXJzaXN0ZW50IGdyYW50 cyBhbmQgYmF0Y2ggbWFwcGluZ3Mgb25seQotICAgICAgICAgKiBhZGQgdGhlIG5ldyBtYXBzIHRv IHRoZSBsaXN0IG9mIHBlcnNpc3RlbnQgZ3JhbnRzIGlmIHRoZSB3aG9sZQotICAgICAgICAgKiBh cmVhIGNhbiBiZSBwZXJzaXN0ZW50bHkgbWFwcGVkLgotICAgICAgICAgKi8KLSAgICAgICAgaWYg KGJhdGNoX21hcHMpIHsKLSAgICAgICAgICAgIHJlZ2lvbiA9IGdfbWFsbG9jMChzaXplb2YoKnJl Z2lvbikpOwotICAgICAgICAgICAgcmVnaW9uLT5hZGRyID0gaW9yZXEtPnBhZ2VzOwotICAgICAg ICAgICAgcmVnaW9uLT5udW0gPSBuZXdfbWFwczsKLSAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYt PnBlcnNpc3RlbnRfcmVnaW9ucyA9IGdfc2xpc3RfYXBwZW5kKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpb3JlcS0+YmxrZGV2LT5wZXJzaXN0ZW50X3JlZ2lv bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbik7 Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKChpb3JlcS0+YmxrZGV2LT5wZXJzaXN0ZW50X2du dF9jb3VudCA8IGlvcmVxLT5ibGtkZXYtPm1heF9ncmFudHMpCi0gICAgICAgICAgICAgICYmIG5l d19tYXBzKSB7Ci0gICAgICAgICAgICAvKiBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIG5ld2x5IG1h cHBlZCBncmFudHMgYW5kIGFkZCBhcyBtYW55Ci0gICAgICAgICAgICAgKiBhcyBwb3NzaWJsZSB0 byB0aGUgbGlzdCBvZiBwZXJzaXN0ZW50bHkgbWFwcGVkIGdyYW50cy4KLSAgICAgICAgICAgICAq Ci0gICAgICAgICAgICAgKiBTaW5jZSB3ZSBzdGFydCBhdCB0aGUgZW5kIG9mIGlvcmVxLT5wYWdl KHMpLCB3ZSBvbmx5IG5lZWQKLSAgICAgICAgICAgICAqIHRvIGRlY3JlYXNlIG5ld19tYXBzIHRv IHByZXZlbnQgdGhpcyBncmFudGVkIHBhZ2VzIGZyb20KLSAgICAgICAgICAgICAqIGJlaW5nIHVu bWFwcGVkIGluIGlvcmVxX3VubWFwLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBncmFu dCA9IGdfbWFsbG9jMChzaXplb2YoKmdyYW50KSk7Ci0gICAgICAgICAgICBuZXdfbWFwcy0tOwot ICAgICAgICAgICAgaWYgKGJhdGNoX21hcHMpIHsKLSAgICAgICAgICAgICAgICBncmFudC0+cGFn ZSA9IGlvcmVxLT5wYWdlcyArIChuZXdfbWFwcykgKiBYQ19QQUdFX1NJWkU7Ci0gICAgICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGdyYW50LT5wYWdlID0gaW9yZXEtPnBhZ2VbbmV3 X21hcHNdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZ3JhbnQtPmJsa2RldiA9IGlvcmVx LT5ibGtkZXY7Ci0gICAgICAgICAgICB4ZW5fYmVfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5k ZXYsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJhZGRpbmcgZ3JhbnQgJSIgUFJJdTMy ICIgcGFnZTogJXBcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNbbmV3X21hcHNd LCBncmFudC0+cGFnZSk7Ci0gICAgICAgICAgICBnX3RyZWVfaW5zZXJ0KGlvcmVxLT5ibGtkZXYt PnBlcnNpc3RlbnRfZ250cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR1VJTlRfVE9fUE9J TlRFUihyZWZzW25ld19tYXBzXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW50KTsK LSAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYtPnBlcnNpc3RlbnRfZ250X2NvdW50Kys7Ci0gICAg ICAgIH0KLSAgICAgICAgYXNzZXJ0KCFiYXRjaF9tYXBzIHx8IG5ld19tYXBzID09IDApOwotICAg IH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPnYubmlvdjsgaSsrKSB7Ci0gICAgICAgIGlv cmVxLT52LmlvdltpXS5pb3ZfYmFzZSArPSAodWludHB0cl90KXBhZ2VbaV07Ci0gICAgfQotICAg IGlvcmVxLT5tYXBwZWQgPSAxOwotICAgIGlvcmVxLT5udW1fdW5tYXAgPSBuZXdfbWFwczsKLSAg ICByZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBpb3JlcV9ydW5pb19xZW11X2FpbyhzdHJ1Y3Qg aW9yZXEgKmlvcmVxKTsKIAogc3RhdGljIHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAqb3Bh cXVlLCBpbnQgcmV0KQpAQCAtNTI5LDcgKzMxMyw3IEBAIHN0YXRpYyB2b2lkIHFlbXVfYWlvX2Nv bXBsZXRlKHZvaWQgKm9wYXF1ZSwgaW50IHJldCkKICAgICB9CiAKICAgICBpb3JlcS0+c3RhdHVz ID0gaW9yZXEtPmFpb19lcnJvcnMgPyBCTEtJRl9SU1BfRVJST1IgOiBCTEtJRl9SU1BfT0tBWTsK LSAgICBpb3JlcV91bm1hcChpb3JlcSk7CisKICAgICBpb3JlcV9maW5pc2goaW9yZXEpOwogICAg IHN3aXRjaCAoaW9yZXEtPnJlcS5vcGVyYXRpb24pIHsKICAgICBjYXNlIEJMS0lGX09QX1dSSVRF OgpAQCAtNTUxLDEwICszMzUsNiBAQCBzdGF0aWMgaW50IGlvcmVxX3J1bmlvX3FlbXVfYWlvKHN0 cnVjdCBpb3JlcSAqaW9yZXEpCiB7CiAgICAgc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2ID0gaW9y ZXEtPmJsa2RldjsKIAotICAgIGlmIChpb3JlcS0+cmVxLm5yX3NlZ21lbnRzICYmIGlvcmVxX21h cChpb3JlcSkgPT0gLTEpIHsKLSAgICAgICAgZ290byBlcnJfbm9fbWFwOwotICAgIH0KLQogICAg IGlvcmVxLT5haW9faW5mbGlnaHQrKzsKICAgICBpZiAoaW9yZXEtPnByZXN5bmMpIHsKICAgICAg ICAgYmxrX2Fpb19mbHVzaChpb3JlcS0+YmxrZGV2LT5ibGssIHFlbXVfYWlvX2NvbXBsZXRlLCBp b3JlcSk7CkBAIC01OTQsMTYgKzM3NCwxNCBAQCBzdGF0aWMgaW50IGlvcmVxX3J1bmlvX3FlbXVf YWlvKHN0cnVjdCBpb3JlcSAqaW9yZXEpCiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8q IHVua25vd24gb3BlcmF0aW9uIChzaG91bGRuJ3QgaGFwcGVuIC0tIHBhcnNlIGNhdGNoZXMgdGhp cykgKi8KLSAgICAgICAgZ290byBlcnI7CisgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAogICAg IHFlbXVfYWlvX2NvbXBsZXRlKGlvcmVxLCAwKTsKIAogICAgIHJldHVybiAwOwogCi1lcnI6Ci0g ICAgaW9yZXFfdW5tYXAoaW9yZXEpOwotZXJyX25vX21hcDoKK291dDoKICAgICBpb3JlcV9maW5p c2goaW9yZXEpOwogICAgIGlvcmVxLT5zdGF0dXMgPSBCTEtJRl9SU1BfRVJST1I7CiAgICAgcmV0 dXJuIC0xOwpAQCAtNzY0LDExICs1NDIsNiBAQCBzdGF0aWMgdm9pZCBibGtfYWxsb2Moc3RydWN0 IFhlbkRldmljZSAqeGVuZGV2KQogICAgIGlmICh4ZW5fbW9kZSAhPSBYRU5fRU1VTEFURSkgewog ICAgICAgICBiYXRjaF9tYXBzID0gMTsKICAgICB9Ci0gICAgaWYgKHhjX2dudHRhYl9zZXRfbWF4 X2dyYW50cyh4ZW5kZXYtPmdudHRhYmRldiwKLSAgICAgICAgICAgIE1BWF9HUkFOVFMobWF4X3Jl cXVlc3RzLCBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QpKSA8IDApIHsKLSAgICAgICAg eGVuX2JlX3ByaW50Zih4ZW5kZXYsIDAsICJ4Y19nbnR0YWJfc2V0X21heF9ncmFudHMgZmFpbGVk OiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgIH0K IH0KIAogc3RhdGljIHZvaWQgYmxrX3BhcnNlX2Rpc2NhcmQoc3RydWN0IFhlbkJsa0RldiAqYmxr ZGV2KQpAQCAtODgwLDcgKzY1Myw3IEBAIG91dF9lcnJvcjoKIHN0YXRpYyBpbnQgYmxrX2Nvbm5l Y3Qoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KQogewogICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJs a2RldiA9IGNvbnRhaW5lcl9vZih4ZW5kZXYsIHN0cnVjdCBYZW5CbGtEZXYsIHhlbmRldik7Ci0g ICAgaW50IHBlcnMsIGluZGV4LCBxZmxhZ3M7CisgICAgaW50IGluZGV4LCBxZmxhZ3M7CiAgICAg Ym9vbCByZWFkb25seSA9IHRydWU7CiAKICAgICAvKiByZWFkLW9ubHkgPyAqLwpAQCAtOTU4LDEx ICs3MzEsNiBAQCBzdGF0aWMgaW50IGJsa19jb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRl dikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsa2Rldi0+eGVuZGV2LnJlbW90ZV9w b3J0KSA9PSAtMSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmICh4ZW5zdG9y ZV9yZWFkX2ZlX2ludCgmYmxrZGV2LT54ZW5kZXYsICJmZWF0dXJlLXBlcnNpc3RlbnQiLCAmcGVy cykpIHsKLSAgICAgICAgYmxrZGV2LT5mZWF0dXJlX3BlcnNpc3RlbnQgPSBGQUxTRTsKLSAgICB9 IGVsc2UgewotICAgICAgICBibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCA9ICEhcGVyczsKLSAg ICB9CiAKICAgICBibGtkZXYtPnByb3RvY29sID0gQkxLSUZfUFJPVE9DT0xfTkFUSVZFOwogICAg IGlmIChibGtkZXYtPnhlbmRldi5wcm90b2NvbCkgewpAQCAtMTAwNiwxOCArNzc0LDYgQEAgc3Rh dGljIGludCBibGtfY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgfQogICAg IH0KIAotICAgIGlmIChibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkgewotICAgICAgICAvKiBJ bml0IHBlcnNpc3RlbnQgZ3JhbnRzICovCi0gICAgICAgIGJsa2Rldi0+bWF4X2dyYW50cyA9IG1h eF9yZXF1ZXN0cyAqIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVDsKLSAgICAgICAgYmxr ZGV2LT5wZXJzaXN0ZW50X2dudHMgPSBnX3RyZWVfbmV3X2Z1bGwoKEdDb21wYXJlRGF0YUZ1bmMp aW50X2NtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi YXRjaF9tYXBzID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChHRGVzdHJveU5vdGlmeSlnX2ZyZWUgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KWRlc3Ryb3lfZ3JhbnQpOwotICAgICAgICBi bGtkZXYtPnBlcnNpc3RlbnRfcmVnaW9ucyA9IE5VTEw7Ci0gICAgICAgIGJsa2Rldi0+cGVyc2lz dGVudF9nbnRfY291bnQgPSAwOwotICAgIH0KLQogICAgIHhlbl9iZV9iaW5kX2V2dGNobigmYmxr ZGV2LT54ZW5kZXYpOwogCiAgICAgeGVuX2JlX3ByaW50ZigmYmxrZGV2LT54ZW5kZXYsIDEsICJv azogcHJvdG8gJXMsIHJpbmctcmVmICVkLCAiCkBAIC0xMDQzLDI2ICs3OTksNiBAQCBzdGF0aWMg dm9pZCBibGtfZGlzY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgICAgIGJs a2Rldi0+Y250X21hcC0tOwogICAgICAgICBibGtkZXYtPnNyaW5nID0gTlVMTDsKICAgICB9Ci0K LSAgICAvKgotICAgICAqIFVubWFwIHBlcnNpc3RlbnQgZ3JhbnRzIGJlZm9yZSBzd2l0Y2hpbmcg dG8gdGhlIGNsb3NlZCBzdGF0ZQotICAgICAqIHNvIHRoZSBmcm9udGVuZCBjYW4gZnJlZSB0aGVt LgotICAgICAqCi0gICAgICogSW4gdGhlICFiYXRjaF9tYXBzIGNhc2UgZ190cmVlX2Rlc3Ryb3kg d2lsbCB0YWtlIGNhcmUgb2YgdW5tYXBwaW5nCi0gICAgICogdGhlIGdyYW50LCBidXQgaW4gdGhl IGJhdGNoX21hcHMgY2FzZSB3ZSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBldmVyeQotICAgICAqIHJl Z2lvbiBpbiBwZXJzaXN0ZW50X3JlZ2lvbnMgYW5kIHVubWFwIGl0LgotICAgICAqLwotICAgIGlm IChibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkgewotICAgICAgICBnX3RyZWVfZGVzdHJveShi bGtkZXYtPnBlcnNpc3RlbnRfZ250cyk7Ci0gICAgICAgIGFzc2VydChiYXRjaF9tYXBzIHx8IGJs a2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQgPT0gMCk7Ci0gICAgICAgIGlmIChiYXRjaF9tYXBz KSB7Ci0gICAgICAgICAgICBibGtkZXYtPnBlcnNpc3RlbnRfZ250X2NvdW50ID0gMDsKLSAgICAg ICAgICAgIGdfc2xpc3RfZm9yZWFjaChibGtkZXYtPnBlcnNpc3RlbnRfcmVnaW9ucywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoR0Z1bmMpcmVtb3ZlX3BlcnNpc3RlbnRfcmVnaW9uLCBi bGtkZXYpOwotICAgICAgICAgICAgZ19zbGlzdF9mcmVlKGJsa2Rldi0+cGVyc2lzdGVudF9yZWdp b25zKTsKLSAgICAgICAgfQotICAgICAgICBibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCA9IGZh bHNlOwotICAgIH0KIH0KIAogc3RhdGljIGludCBibGtfZnJlZShzdHJ1Y3QgWGVuRGV2aWNlICp4 ZW5kZXYpCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==