From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haixia Shi Subject: [PATCH v2 2/2] drm: remove drm_device_is_unplugged checks in common drm code. Date: Wed, 10 Feb 2016 15:16:31 -0800 Message-ID: <1455146191-38419-1-git-send-email-hshi@chromium.org> References: <1454709464-2536-2-git-send-email-hshi@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-f175.google.com (mail-pf0-f175.google.com [209.85.192.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id D46B56E780 for ; Wed, 10 Feb 2016 15:16:38 -0800 (PST) Received: by mail-pf0-f175.google.com with SMTP id x65so19450088pfb.1 for ; Wed, 10 Feb 2016 15:16:38 -0800 (PST) In-Reply-To: <1454709464-2536-2-git-send-email-hshi@chromium.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "dri-devel @ lists . freedesktop . org " Cc: Haixia Shi List-Id: dri-devel@lists.freedesktop.org V2hlbiBVU0IgY2FibGUgaXMgZGlzY29ubmVjdGVkLCB3ZSBtYXJrIHVkbCBkZXZpY2UgYXMgdW5w bHVnZ2VkIHNvIHRoYXQKdWRsX2RldGVjdCByZXBvcnRzIGNvbm5lY3RvciBzdGF0dXMgYXMgZGlz Y29ubmVjdGVkLCBidXQgc3RpbGwga2VlcAp0aGUgZHJtIGRldmljZSBhbGl2ZSB1bnRpbCB1c2Vy LXNwYWNlIGNsb3NlcyBpdC4KClNpZ25lZC1vZmYtYnk6IEhhaXhpYSBTaGkgPGhzaGlAY2hyb21p dW0ub3JnPgpSZXZpZXdlZC1ieTogU3TDqXBoYW5lIE1hcmNoZXNpbiA8bWFyY2hldUBjaHJvbWl1 bS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyAgICAgICAgICAgfCAgNiAtLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jICAgICAgICAgIHwgIDIgLS0KIGRyaXZlcnMv Z3B1L2RybS9kcm1fZ2VtLmMgICAgICAgICAgIHwgIDMgLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJt X2lvY3RsLmMgICAgICAgICB8ICAzIC0tLQogZHJpdmVycy9ncHUvZHJtL2RybV92bS5jICAgICAg ICAgICAgfCAgMyAtLS0KIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Nvbm5lY3Rvci5jIHwgIDIg Ky0KIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5jICAgICAgIHwgIDEgKwogZHJpdmVycy9n cHUvZHJtL3VkbC91ZGxfZHJ2LmggICAgICAgfCAgMyArKysKIGRyaXZlcnMvZ3B1L2RybS91ZGwv dWRsX2ZiLmMgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21haW4uYyAg ICAgIHwgMTUgKysrKysrKysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1QLmggICAgICAgICAgICAg ICAgICB8IDE0IC0tLS0tLS0tLS0tLS0tCiAxMSBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25z KCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ry di5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwppbmRleCAxNjdjOGQzLi5mOTNlZTEyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZHJ2LmMKQEAgLTM3Niw5ICszNzYsNiBAQCBzdHJ1Y3QgZHJtX21pbm9yICpkcm1fbWlu b3JfYWNxdWlyZSh1bnNpZ25lZCBpbnQgbWlub3JfaWQpCiAKIAlpZiAoIW1pbm9yKSB7CiAJCXJl dHVybiBFUlJfUFRSKC1FTk9ERVYpOwotCX0gZWxzZSBpZiAoZHJtX2RldmljZV9pc191bnBsdWdn ZWQobWlub3ItPmRldikpIHsKLQkJZHJtX2Rldl91bnJlZihtaW5vci0+ZGV2KTsKLQkJcmV0dXJu IEVSUl9QVFIoLUVOT0RFVik7CiAJfQogCiAJcmV0dXJuIG1pbm9yOwpAQCAtNDY0LDkgKzQ2MSw2 IEBAIHZvaWQgZHJtX3VucGx1Z19kZXYoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlkcm1fbWlu b3JfdW5yZWdpc3RlcihkZXYsIERSTV9NSU5PUl9DT05UUk9MKTsKIAogCW11dGV4X2xvY2soJmRy bV9nbG9iYWxfbXV0ZXgpOwotCi0JZHJtX2RldmljZV9zZXRfdW5wbHVnZ2VkKGRldik7Ci0KIAlp ZiAoZGV2LT5vcGVuX2NvdW50ID09IDApIHsKIAkJZHJtX3B1dF9kZXYoZGV2KTsKIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f Zm9wcy5jCmluZGV4IDFlYTg3OTAuLmI0MzMyZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZm9wcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jCkBAIC00OTcsOCAr NDk3LDYgQEAgaW50IGRybV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxl ICpmaWxwKQogCiAJaWYgKCEtLWRldi0+b3Blbl9jb3VudCkgewogCQlyZXRjb2RlID0gZHJtX2xh c3RjbG9zZShkZXYpOwotCQlpZiAoZHJtX2RldmljZV9pc191bnBsdWdnZWQoZGV2KSkKLQkJCWRy bV9wdXRfZGV2KGRldik7CiAJfQogCW11dGV4X3VubG9jaygmZHJtX2dsb2JhbF9tdXRleCk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2dlbS5jCmluZGV4IDJlOGM3N2UuLmM2MjJlMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYwpAQCAtOTAwLDkg KzkwMCw2IEBAIGludCBkcm1fZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKQogCXN0cnVjdCBkcm1fdm1hX29mZnNldF9ub2RlICpub2RlOwogCWlu dCByZXQ7CiAKLQlpZiAoZHJtX2RldmljZV9pc191bnBsdWdnZWQoZGV2KSkKLQkJcmV0dXJuIC1F Tk9ERVY7Ci0KIAlkcm1fdm1hX29mZnNldF9sb2NrX2xvb2t1cChkZXYtPnZtYV9vZmZzZXRfbWFu YWdlcik7CiAJbm9kZSA9IGRybV92bWFfb2Zmc2V0X2V4YWN0X2xvb2t1cF9sb2NrZWQoZGV2LT52 bWFfb2Zmc2V0X21hbmFnZXIsCiAJCQkJCQkgIHZtYS0+dm1fcGdvZmYsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMK aW5kZXggOGNlMmEwYy4uZjk1OTA3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9p b2N0bC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwpAQCAtNjk1LDkgKzY5NSw2 IEBAIGxvbmcgZHJtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAogCiAJZGV2ID0gZmlsZV9wcml2 LT5taW5vci0+ZGV2OwogCi0JaWYgKGRybV9kZXZpY2VfaXNfdW5wbHVnZ2VkKGRldikpCi0JCXJl dHVybiAtRU5PREVWOwotCiAJaXNfZHJpdmVyX2lvY3RsID0gbnIgPj0gRFJNX0NPTU1BTkRfQkFT RSAmJiBuciA8IERSTV9DT01NQU5EX0VORDsKIAogCWlmIChpc19kcml2ZXJfaW9jdGwpIHsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f dm0uYwppbmRleCBmOTBiZDVmLi4zYTY4YmU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX3ZtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92bS5jCkBAIC02NTcsOSArNjU3LDYg QEAgaW50IGRybV9sZWdhY3lfbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHByaXYtPm1pbm9yLT5kZXY7 CiAJaW50IHJldDsKIAotCWlmIChkcm1fZGV2aWNlX2lzX3VucGx1Z2dlZChkZXYpKQotCQlyZXR1 cm4gLUVOT0RFVjsKLQogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlyZXQgPSBk cm1fbW1hcF9sb2NrZWQoZmlscCwgdm1hKTsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Nvbm5lY3Rvci5jIGIv ZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfY29ubmVjdG9yLmMKaW5kZXggNDcwOWI1NC4uYjE2OGYy YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfY29ubmVjdG9yLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfY29ubmVjdG9yLmMKQEAgLTk2LDcgKzk2LDcgQEAgc3Rh dGljIGludCB1ZGxfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAog c3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKIHVkbF9kZXRlY3Qoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKIHsKLQlpZiAoZHJtX2RldmljZV9pc191 bnBsdWdnZWQoY29ubmVjdG9yLT5kZXYpKQorCWlmICh1ZGxfZGV2aWNlX2lzX3VucGx1Z2dlZChj b25uZWN0b3ItPmRldikpCiAJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsK IAlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7CiB9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdWRsL3VkbF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5j CmluZGV4IGQ1NzI4ZWMuLjNjYmFmZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS91ZGwv dWRsX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5jCkBAIC05Nyw2ICs5 Nyw3IEBAIHN0YXRpYyB2b2lkIHVkbF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFj ZSAqaW50ZXJmYWNlKQogCWRybV9jb25uZWN0b3JfdW5wbHVnX2FsbChkZXYpOwogCXVkbF9mYmRl dl91bnBsdWcoZGV2KTsKIAl1ZGxfZHJvcF91c2IoZGV2KTsKKwl1ZGxfZGV2aWNlX3NldF91bnBs dWdnZWQoZGV2KTsKIAlkcm1fdW5wbHVnX2RldihkZXYpOwogfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdWRsL3VkbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5o CmluZGV4IDRhMDY0ZWYuLjYxZTExN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS91ZGwv dWRsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5oCkBAIC02NSw2ICs2 NSw3IEBAIHN0cnVjdCB1ZGxfZGV2aWNlIHsKIAlhdG9taWNfdCBieXRlc19pZGVudGljYWw7IC8q IHNhdmVkIGVmZm9ydCB3aXRoIGJhY2tidWZmZXIgY29tcGFyaXNvbiAqLwogCWF0b21pY190IGJ5 dGVzX3NlbnQ7IC8qIHRvIHVzYiwgYWZ0ZXIgY29tcHJlc3Npb24gaW5jbHVkaW5nIG92ZXJoZWFk ICovCiAJYXRvbWljX3QgY3B1X2tjeWNsZXNfdXNlZDsgLyogdHJhbnNwaXJlZCBkdXJpbmcgcGl4 ZWwgcHJvY2Vzc2luZyAqLworCWF0b21pY190IHVucGx1Z2dlZDsgLyogZGV2aWNlIGhhcyBiZWVu IHVucGx1Z2dlZCBvciBnb25lIGF3YXkgKi8KIH07CiAKIHN0cnVjdCB1ZGxfZ2VtX29iamVjdCB7 CkBAIC0xNDAsNiArMTQxLDggQEAgaW50IHVkbF9oYW5kbGVfZGFtYWdlKHN0cnVjdCB1ZGxfZnJh bWVidWZmZXIgKmZiLCBpbnQgeCwgaW50IHksCiAJCSAgICAgIGludCB3aWR0aCwgaW50IGhlaWdo dCk7CiAKIGludCB1ZGxfZHJvcF91c2Ioc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIHVk bF9kZXZpY2Vfc2V0X3VucGx1Z2dlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2ludCB1ZGxf ZGV2aWNlX2lzX3VucGx1Z2dlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIAogI2RlZmluZSBD TURfV1JJVEVfUkFXOCAgICJceEFGXHg2MCIgLyoqPCA4IGJpdCByYXcgd3JpdGUgY29tbWFuZC4g Ki8KICNkZWZpbmUgQ01EX1dSSVRFX1JMOCAgICAiXHhBRlx4NjEiIC8qKjwgOCBiaXQgcnVuIGxl bmd0aCBjb21tYW5kLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZmIu YyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2ZiLmMKaW5kZXggMjAwNDE5ZC4uZGYxZDUzZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZmIuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdWRsL3VkbF9mYi5jCkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGljIGludCB1ZGxfZmJf b3BlbihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHVzZXIpCiAJc3RydWN0IHVkbF9kZXZpY2Ug KnVkbCA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKIAkvKiBJZiB0aGUgVVNCIGRldmljZSBpcyBnb25l LCB3ZSBkb24ndCBhY2NlcHQgbmV3IG9wZW5zICovCi0JaWYgKGRybV9kZXZpY2VfaXNfdW5wbHVn Z2VkKHVkbC0+ZGRldikpCisJaWYgKHVkbF9kZXZpY2VfaXNfdW5wbHVnZ2VkKHVkbC0+ZGRldikp CiAJCXJldHVybiAtRU5PREVWOwogCiAJdWZiZGV2LT5mYl9jb3VudCsrOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbWFpbi5jIGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxf bWFpbi5jCmluZGV4IDMzZGJmYjIuLmY2MDI4YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS91ZGwvdWRsX21haW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tYWluLmMKQEAg LTM1MCwzICszNTAsMTggQEAgaW50IHVkbF9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJa2ZyZWUodWRsKTsKIAlyZXR1cm4gMDsKIH0KKwordm9pZCB1ZGxfZGV2aWNlX3Nl dF91bnBsdWdnZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdWRsX2Rldmlj ZSAqdWRsID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzbXBfd21iKCk7CisJYXRvbWljX3NldCgmdWRs LT51bnBsdWdnZWQsIDEpOworfQorCitpbnQgdWRsX2RldmljZV9pc191bnBsdWdnZWQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdWRsX2RldmljZSAqdWRsID0gZGV2LT5kZXZf cHJpdmF0ZTsKKwlpbnQgcmV0ID0gYXRvbWljX3JlYWQoJnVkbC0+dW5wbHVnZ2VkKTsKKwlzbXBf cm1iKCk7CisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAuaCBi L2luY2x1ZGUvZHJtL2RybVAuaAppbmRleCBkNzE2MmNmLi40MGM2MDk5IDEwMDY0NAotLS0gYS9p bmNsdWRlL2RybS9kcm1QLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC03NDgsNyArNzQ4 LDYgQEAgc3RydWN0IGRybV9kZXZpY2UgewogCXN0cnVjdCBkcm1fbWlub3IgKmNvbnRyb2w7CQkv Kio8IENvbnRyb2wgbm9kZSAqLwogCXN0cnVjdCBkcm1fbWlub3IgKnByaW1hcnk7CQkvKio8IFBy aW1hcnkgbm9kZSAqLwogCXN0cnVjdCBkcm1fbWlub3IgKnJlbmRlcjsJCS8qKjwgUmVuZGVyIG5v ZGUgKi8KLQlhdG9taWNfdCB1bnBsdWdnZWQ7CQkJLyoqPCBGbGFnIHdoZXRoZXIgZGV2IGlzIGRl YWQgKi8KIAlzdHJ1Y3QgaW5vZGUgKmFub25faW5vZGU7CQkvKio8IGlub2RlIGZvciBwcml2YXRl IGFkZHJlc3Mtc3BhY2UgKi8KIAljaGFyICp1bmlxdWU7CQkJCS8qKjwgdW5pcXVlIG5hbWUgb2Yg dGhlIGRldmljZSAqLwogCS8qQH0gKi8KQEAgLTg3OSwxOSArODc4LDYgQEAgc3RhdGljIF9faW5s aW5lX18gaW50IGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAlyZXR1cm4gKChkZXYtPmRyaXZlci0+ZHJpdmVyX2ZlYXR1cmVzICYgZmVhdHVyZSkgPyAxIDog MCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fZGV2aWNlX3NldF91bnBsdWdnZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlzbXBfd21iKCk7Ci0JYXRvbWljX3NldCgmZGV2LT51 bnBsdWdnZWQsIDEpOwotfQotCi1zdGF0aWMgaW5saW5lIGludCBkcm1fZGV2aWNlX2lzX3VucGx1 Z2dlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQotewotCWludCByZXQgPSBhdG9taWNfcmVhZCgm ZGV2LT51bnBsdWdnZWQpOwotCXNtcF9ybWIoKTsKLQlyZXR1cm4gcmV0OwotfQotCiBzdGF0aWMg aW5saW5lIGJvb2wgZHJtX2lzX3JlbmRlcl9jbGllbnQoY29uc3Qgc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXYpCiB7CiAJcmV0dXJuIGZpbGVfcHJpdi0+bWlub3ItPnR5cGUgPT0gRFJNX01JTk9S X1JFTkRFUjsKLS0gCjIuNy4wLnJjMy4yMDcuZzBhYzUzNDQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=