From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 08/15] drm/bochs: Convert Bochs driver to |struct drm_gem_ttm_object| Date: Mon, 8 Apr 2019 11:21:37 +0200 Message-ID: <20190408092144.4548-9-tzimmermann@suse.de> References: <20190408092144.4548-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 47C13891EF for ; Mon, 8 Apr 2019 09:21:54 +0000 (UTC) In-Reply-To: <20190408092144.4548-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: daniel@ffwll.ch, airlied@linux.ie, kraxel@redhat.com, christian.koenig@amd.com, ray.huang@amd.com, Jerry.Zhang@amd.com, hdegoede@redhat.com, z.liuxinliang@hisilicon.com, zourongrong@gmail.com, kong.kongxinwei@hisilicon.com, puck.chen@hisilicon.com Cc: Thomas Zimmermann , dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org List-Id: dri-devel@lists.freedesktop.org U2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2JvY2hzL0tjb25maWcgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9ib2Nocy9ib2Nocy5oICAgICB8ICAzNCArLS0tCiBkcml2ZXJzL2dwdS9kcm0vYm9jaHMv Ym9jaHNfZHJ2LmMgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9ib2Nocy9ib2Noc19rbXMuYyB8 ICAxOCArLQogZHJpdmVycy9ncHUvZHJtL2JvY2hzL2JvY2hzX21tLmMgIHwgMjY5ICsrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCsp LCAyOTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JvY2hzL0tj b25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvS2NvbmZpZwppbmRleCBiZDI3MTgwMTVjZGIu LjQwYzQ4N2I4OTc1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JvY2hzL0tjb25maWcK KysrIGIvZHJpdmVycy9ncHUvZHJtL2JvY2hzL0tjb25maWcKQEAgLTMsNiArMyw3IEBAIGNvbmZp ZyBEUk1fQk9DSFMKIAlkZXBlbmRzIG9uIERSTSAmJiBQQ0kgJiYgTU1VCiAJc2VsZWN0IERSTV9L TVNfSEVMUEVSCiAJc2VsZWN0IERSTV9UVE0KKwlzZWxlY3QgRFJNX0dFTV9UVE1fSEVMUEVSCiAJ aGVscAogCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGZvciBxZW11LgogCSAgSWYgTSBpcyBzZWxlY3Rl ZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGJvY2hzLWRybS4KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9ib2Nocy9ib2Nocy5oIGIvZHJpdmVycy9ncHUvZHJtL2JvY2hzL2JvY2hzLmgK aW5kZXggMDQ5ZDA1ODU3MWQ0Li40MzhiYmEwYjU2NWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9ib2Nocy9ib2Nocy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ib2Nocy9ib2Nocy5oCkBA IC05LDYgKzksNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CiAKICNpbmNsdWRl IDxkcm0vZHJtX2dlbS5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3R0bV9oZWxwZXIuaD4KIAog I2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2RyaXZlci5oPgogI2luY2x1ZGUgPGRybS90dG0vdHRt X3BhZ2VfYWxsb2MuaD4KQEAgLTgxLDMwICs4Miw2IEBAIHN0cnVjdCBib2Noc19kZXZpY2Ugewog CX0gdHRtOwogfTsKIAotc3RydWN0IGJvY2hzX2JvIHsKLQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgYm87Ci0Jc3RydWN0IHR0bV9wbGFjZW1lbnQgcGxhY2VtZW50OwotCXN0cnVjdCB0dG1fYm9f a21hcF9vYmoga21hcDsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgZ2VtOwotCXN0cnVjdCB0dG1f cGxhY2UgcGxhY2VtZW50c1szXTsKLQlpbnQgcGluX2NvdW50OwotfTsKLQotc3RhdGljIGlubGlu ZSBzdHJ1Y3QgYm9jaHNfYm8gKmJvY2hzX2JvKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8p Ci17Ci0JcmV0dXJuIGNvbnRhaW5lcl9vZihibywgc3RydWN0IGJvY2hzX2JvLCBibyk7Ci19Ci0K LXN0YXRpYyBpbmxpbmUgc3RydWN0IGJvY2hzX2JvICpnZW1fdG9fYm9jaHNfYm8oc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpnZW0pCi17Ci0JcmV0dXJuIGNvbnRhaW5lcl9vZihnZW0sIHN0cnVjdCBi b2Noc19ibywgZ2VtKTsKLX0KLQotc3RhdGljIGlubGluZSB1NjQgYm9jaHNfYm9fbW1hcF9vZmZz ZXQoc3RydWN0IGJvY2hzX2JvICpibykKLXsKLQlyZXR1cm4gZHJtX3ZtYV9ub2RlX29mZnNldF9h ZGRyKCZiby0+Ym8udm1hX25vZGUpOwotfQotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIGJv Y2hzX2h3LmMgKi8KQEAgLTEyNCwxNyArMTAxLDggQEAgaW50IGJvY2hzX21tX2luaXQoc3RydWN0 IGJvY2hzX2RldmljZSAqYm9jaHMpOwogdm9pZCBib2Noc19tbV9maW5pKHN0cnVjdCBib2Noc19k ZXZpY2UgKmJvY2hzKTsKIGludCBib2Noc19tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiAKLWludCBib2Noc19nZW1fY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHUzMiBzaXplLCBib29sIGlza2VybmVsLAotCQkgICAgIHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqKm9iaik7Ci1pbnQgYm9jaHNfZ2VtX2luaXRfb2JqZWN0KHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKTsKLXZvaWQgYm9jaHNfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKTsKIGludCBib2Noc19kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgICAgIHN0cnVjdCBkcm1fbW9kZV9j cmVhdGVfZHVtYiAqYXJncyk7Ci1pbnQgYm9jaHNfZHVtYl9tbWFwX29mZnNldChzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICB1aW50MzJfdCBoYW5k bGUsIHVpbnQ2NF90ICpvZmZzZXQpOwotCi1pbnQgYm9jaHNfYm9fcGluKHN0cnVjdCBib2Noc19i byAqYm8sIHUzMiBwbF9mbGFnKTsKLWludCBib2Noc19ib191bnBpbihzdHJ1Y3QgYm9jaHNfYm8g KmJvKTsKIAogaW50IGJvY2hzX2dlbV9wcmltZV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopOwogdm9pZCBib2Noc19nZW1fcHJpbWVfdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JvY2hzL2JvY2hzX2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL2JvY2hzL2JvY2hzX2Rydi5jCmluZGV4IDZiNmUwMzcyNThjMy4uNzk4ZGQ5 OGQ3MjE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9jaHNfZHJ2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2JvY2hzL2JvY2hzX2Rydi5jCkBAIC04Miw5ICs4Miw5IEBAIHN0 YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBib2Noc19kcml2ZXIgPSB7CiAJLmRhdGUJCQk9ICIyMDEz MDkyNSIsCiAJLm1ham9yCQkJPSAxLAogCS5taW5vcgkJCT0gMCwKLQkuZ2VtX2ZyZWVfb2JqZWN0 X3VubG9ja2VkID0gYm9jaHNfZ2VtX2ZyZWVfb2JqZWN0LAorCS5nZW1fZnJlZV9vYmplY3RfdW5s b2NrZWQgPSBkcm1fZ2VtX3R0bV9kcml2ZXJfZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkLAogCS5k dW1iX2NyZWF0ZSAgICAgICAgICAgID0gYm9jaHNfZHVtYl9jcmVhdGUsCi0JLmR1bWJfbWFwX29m ZnNldCAgICAgICAgPSBib2Noc19kdW1iX21tYXBfb2Zmc2V0LAorCS5kdW1iX21hcF9vZmZzZXQg ICAgICAgID0gZHJtX2dlbV90dG1fZHJpdmVyX2R1bWJfbW1hcF9vZmZzZXQsCiAKIAkuZ2VtX3By aW1lX2V4cG9ydCA9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAogCS5nZW1fcHJpbWVfaW1wb3J0ID0g ZHJtX2dlbV9wcmltZV9pbXBvcnQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYm9jaHMv Ym9jaHNfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9jaHNfa21zLmMKaW5kZXggNDg1 ZjljZjA1ZThiLi5iN2M0MTY4YmE0MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ib2No cy9ib2Noc19rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9jaHNfa21zLmMKQEAg LTc4LDM4ICs3OCwzOCBAQCBzdGF0aWMgdm9pZCBib2Noc19wbGFuZV9hdG9taWNfdXBkYXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCSAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg Km9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgYm9jaHNfZGV2aWNlICpib2NocyA9IHBsYW5lLT5kZXYt PmRldl9wcml2YXRlOwotCXN0cnVjdCBib2Noc19ibyAqYm87CisJc3RydWN0IGRybV9nZW1fdHRt X29iamVjdCAqZ2JvOwogCiAJaWYgKCFwbGFuZS0+c3RhdGUtPmZiKQogCQlyZXR1cm47Ci0JYm8g PSBnZW1fdG9fYm9jaHNfYm8ocGxhbmUtPnN0YXRlLT5mYi0+b2JqWzBdKTsKKwlnYm8gPSBkcm1f Z2VtX3R0bV9vZl9nZW0ocGxhbmUtPnN0YXRlLT5mYi0+b2JqWzBdKTsKIAlib2Noc19od19zZXRi YXNlKGJvY2hzLAogCQkJIHBsYW5lLT5zdGF0ZS0+Y3J0Y194LAogCQkJIHBsYW5lLT5zdGF0ZS0+ Y3J0Y195LAotCQkJIGJvLT5iby5vZmZzZXQpOworCQkJIGdiby0+Ym8ub2Zmc2V0KTsKIAlib2No c19od19zZXRmb3JtYXQoYm9jaHMsIHBsYW5lLT5zdGF0ZS0+ZmItPmZvcm1hdCk7CiB9CiAKIHN0 YXRpYyBpbnQgYm9jaHNfcGxhbmVfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAkJCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfc3RhdGUpCiB7Ci0Jc3RydWN0IGJvY2hz X2JvICpibzsKKwlzdHJ1Y3QgZHJtX2dlbV90dG1fb2JqZWN0ICpnYm87CiAKIAlpZiAoIW5ld19z dGF0ZS0+ZmIpCiAJCXJldHVybiAwOwotCWJvID0gZ2VtX3RvX2JvY2hzX2JvKG5ld19zdGF0ZS0+ ZmItPm9ialswXSk7Ci0JcmV0dXJuIGJvY2hzX2JvX3BpbihibywgVFRNX1BMX0ZMQUdfVlJBTSk7 CisJZ2JvID0gZHJtX2dlbV90dG1fb2ZfZ2VtKG5ld19zdGF0ZS0+ZmItPm9ialswXSk7CisJcmV0 dXJuIGRybV9nZW1fdHRtX3BpbihnYm8sIFRUTV9QTF9GTEFHX1ZSQU0pOwogfQogCiBzdGF0aWMg dm9pZCBib2Noc19wbGFuZV9jbGVhbnVwX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJ CSAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKLQlzdHJ1Y3QgYm9jaHNf Ym8gKmJvOworCXN0cnVjdCBkcm1fZ2VtX3R0bV9vYmplY3QgKmdibzsKIAogCWlmICghb2xkX3N0 YXRlLT5mYikKIAkJcmV0dXJuOwotCWJvID0gZ2VtX3RvX2JvY2hzX2JvKG9sZF9zdGF0ZS0+ZmIt Pm9ialswXSk7Ci0JYm9jaHNfYm9fdW5waW4oYm8pOworCWdibyA9IGRybV9nZW1fdHRtX29mX2dl bShvbGRfc3RhdGUtPmZiLT5vYmpbMF0pOworCWRybV9nZW1fdHRtX3VucGluKGdibyk7CiB9CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBib2Noc19wbGFuZV9o ZWxwZXJfZnVuY3MgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9jaHNf bW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ib2Nocy9ib2Noc19tbS5jCmluZGV4IDRhNDAzMDgxNjlj NC4uNjU1NGZkMTE2NzZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9jaHNf bW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9jaHNfbW0uYwpAQCAtNyw4ICs3LDYg QEAKIAogI2luY2x1ZGUgImJvY2hzLmgiCiAKLXN0YXRpYyB2b2lkIGJvY2hzX3R0bV9wbGFjZW1l bnQoc3RydWN0IGJvY2hzX2JvICpibywgaW50IGRvbWFpbik7Ci0KIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g Ki8KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgYm9jaHNfZGV2aWNlICpib2Noc19iZGV2KHN0cnVj dCB0dG1fYm9fZGV2aWNlICpiZCkKQEAgLTE2LDIyICsxNCw2IEBAIHN0YXRpYyBpbmxpbmUgc3Ry dWN0IGJvY2hzX2RldmljZSAqYm9jaHNfYmRldihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmQpCiAJ cmV0dXJuIGNvbnRhaW5lcl9vZihiZCwgc3RydWN0IGJvY2hzX2RldmljZSwgdHRtLmJkZXYpOwog fQogCi1zdGF0aWMgdm9pZCBib2Noc19ib190dG1fZGVzdHJveShzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKnRibykKLXsKLQlzdHJ1Y3QgYm9jaHNfYm8gKmJvOwotCi0JYm8gPSBjb250YWluZXJf b2YodGJvLCBzdHJ1Y3QgYm9jaHNfYm8sIGJvKTsKLQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKCZi by0+Z2VtKTsKLQlrZnJlZShibyk7Ci19Ci0KLXN0YXRpYyBib29sIGJvY2hzX3R0bV9ib19pc19i b2Noc19ibyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQotewotCWlmIChiby0+ZGVzdHJv eSA9PSAmYm9jaHNfYm9fdHRtX2Rlc3Ryb3kpCi0JCXJldHVybiB0cnVlOwotCXJldHVybiBmYWxz ZTsKLX0KLQogc3RhdGljIGludCBib2Noc19ib19pbml0X21lbV90eXBlKHN0cnVjdCB0dG1fYm9f ZGV2aWNlICpiZGV2LCB1aW50MzJfdCB0eXBlLAogCQkJCSAgc3RydWN0IHR0bV9tZW1fdHlwZV9t YW5hZ2VyICptYW4pCiB7CkBAIC01NiwyNyArMzgsNiBAQCBzdGF0aWMgaW50IGJvY2hzX2JvX2lu aXRfbWVtX3R5cGUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHVpbnQzMl90IHR5cGUsCiAJ cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkCi1ib2Noc19ib19ldmljdF9mbGFncyhzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgdHRtX3BsYWNlbWVudCAqcGwpCi17Ci0Jc3Ry dWN0IGJvY2hzX2JvICpib2Noc2JvID0gYm9jaHNfYm8oYm8pOwotCi0JaWYgKCFib2Noc190dG1f Ym9faXNfYm9jaHNfYm8oYm8pKQotCQlyZXR1cm47Ci0KLQlib2Noc190dG1fcGxhY2VtZW50KGJv Y2hzYm8sIFRUTV9QTF9GTEFHX1NZU1RFTSk7Ci0JKnBsID0gYm9jaHNiby0+cGxhY2VtZW50Owot fQotCi1zdGF0aWMgaW50IGJvY2hzX2JvX3ZlcmlmeV9hY2Nlc3Moc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICpibywKLQkJCQkgIHN0cnVjdCBmaWxlICpmaWxwKQotewotCXN0cnVjdCBib2Noc19i byAqYm9jaHNibyA9IGJvY2hzX2JvKGJvKTsKLQotCXJldHVybiBkcm1fdm1hX25vZGVfdmVyaWZ5 X2FjY2VzcygmYm9jaHNiby0+Z2VtLnZtYV9ub2RlLAotCQkJCQkgIGZpbHAtPnByaXZhdGVfZGF0 YSk7Ci19Ci0KIHN0YXRpYyBpbnQgYm9jaHNfdHRtX2lvX21lbV9yZXNlcnZlKHN0cnVjdCB0dG1f Ym9fZGV2aWNlICpiZGV2LAogCQkJCSAgICBzdHJ1Y3QgdHRtX21lbV9yZWcgKm1lbSkKIHsKQEAg LTE0MSw5ICsxMDIsOSBAQCBzdGF0aWMgc3RydWN0IHR0bV9ib19kcml2ZXIgYm9jaHNfYm9fZHJp dmVyID0gewogCS50dG1fdHRfY3JlYXRlID0gYm9jaHNfdHRtX3R0X2NyZWF0ZSwKIAkuaW5pdF9t ZW1fdHlwZSA9IGJvY2hzX2JvX2luaXRfbWVtX3R5cGUsCiAJLmV2aWN0aW9uX3ZhbHVhYmxlID0g dHRtX2JvX2V2aWN0aW9uX3ZhbHVhYmxlLAotCS5ldmljdF9mbGFncyA9IGJvY2hzX2JvX2V2aWN0 X2ZsYWdzLAorCS5ldmljdF9mbGFncyA9IGRybV9nZW1fdHRtX2JvX2RyaXZlcl9ldmljdF9mbGFn cywKIAkubW92ZSA9IE5VTEwsCi0JLnZlcmlmeV9hY2Nlc3MgPSBib2Noc19ib192ZXJpZnlfYWNj ZXNzLAorCS52ZXJpZnlfYWNjZXNzID0gZHJtX2dlbV90dG1fYm9fZHJpdmVyX3ZlcmlmeV9hY2Nl c3MsCiAJLmlvX21lbV9yZXNlcnZlID0gJmJvY2hzX3R0bV9pb19tZW1fcmVzZXJ2ZSwKIAkuaW9f bWVtX2ZyZWUgPSAmYm9jaHNfdHRtX2lvX21lbV9mcmVlLAogfTsKQEAgLTE4Miw4NSArMTQzLDYg QEAgdm9pZCBib2Noc19tbV9maW5pKHN0cnVjdCBib2Noc19kZXZpY2UgKmJvY2hzKQogCWJvY2hz LT50dG0uaW5pdGlhbGl6ZWQgPSBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgYm9jaHNfdHRtX3Bs YWNlbWVudChzdHJ1Y3QgYm9jaHNfYm8gKmJvLCBpbnQgZG9tYWluKQotewotCXVuc2lnbmVkIGk7 Ci0JdTMyIGMgPSAwOwotCWJvLT5wbGFjZW1lbnQucGxhY2VtZW50ID0gYm8tPnBsYWNlbWVudHM7 Ci0JYm8tPnBsYWNlbWVudC5idXN5X3BsYWNlbWVudCA9IGJvLT5wbGFjZW1lbnRzOwotCWlmIChk b21haW4gJiBUVE1fUExfRkxBR19WUkFNKSB7Ci0JCWJvLT5wbGFjZW1lbnRzW2MrK10uZmxhZ3Mg PSBUVE1fUExfRkxBR19XQwotCQkJfCBUVE1fUExfRkxBR19VTkNBQ0hFRAotCQkJfCBUVE1fUExf RkxBR19WUkFNOwotCX0KLQlpZiAoZG9tYWluICYgVFRNX1BMX0ZMQUdfU1lTVEVNKSB7Ci0JCWJv LT5wbGFjZW1lbnRzW2MrK10uZmxhZ3MgPSBUVE1fUExfTUFTS19DQUNISU5HCi0JCQl8IFRUTV9Q TF9GTEFHX1NZU1RFTTsKLQl9Ci0JaWYgKCFjKSB7Ci0JCWJvLT5wbGFjZW1lbnRzW2MrK10uZmxh Z3MgPSBUVE1fUExfTUFTS19DQUNISU5HCi0JCQl8IFRUTV9QTF9GTEFHX1NZU1RFTTsKLQl9Ci0J Zm9yIChpID0gMDsgaSA8IGM7ICsraSkgewotCQliby0+cGxhY2VtZW50c1tpXS5mcGZuID0gMDsK LQkJYm8tPnBsYWNlbWVudHNbaV0ubHBmbiA9IDA7Ci0JfQotCWJvLT5wbGFjZW1lbnQubnVtX3Bs YWNlbWVudCA9IGM7Ci0JYm8tPnBsYWNlbWVudC5udW1fYnVzeV9wbGFjZW1lbnQgPSBjOwotfQot Ci1pbnQgYm9jaHNfYm9fcGluKHN0cnVjdCBib2Noc19ibyAqYm8sIHUzMiBwbF9mbGFnKQotewot CXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZhbHNlLCBmYWxzZSB9OwotCWludCBp LCByZXQ7Ci0KLQlpZiAoYm8tPnBpbl9jb3VudCkgewotCQliby0+cGluX2NvdW50Kys7Ci0JCXJl dHVybiAwOwotCX0KLQotCWJvY2hzX3R0bV9wbGFjZW1lbnQoYm8sIHBsX2ZsYWcpOwotCWZvciAo aSA9IDA7IGkgPCBiby0+cGxhY2VtZW50Lm51bV9wbGFjZW1lbnQ7IGkrKykKLQkJYm8tPnBsYWNl bWVudHNbaV0uZmxhZ3MgfD0gVFRNX1BMX0ZMQUdfTk9fRVZJQ1Q7Ci0JcmV0ID0gdHRtX2JvX3Jl c2VydmUoJmJvLT5ibywgdHJ1ZSwgZmFsc2UsIE5VTEwpOwotCWlmIChyZXQpCi0JCXJldHVybiBy ZXQ7Ci0JcmV0ID0gdHRtX2JvX3ZhbGlkYXRlKCZiby0+Ym8sICZiby0+cGxhY2VtZW50LCAmY3R4 KTsKLQl0dG1fYm9fdW5yZXNlcnZlKCZiby0+Ym8pOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 Ci0KLQliby0+cGluX2NvdW50ID0gMTsKLQlyZXR1cm4gMDsKLX0KLQotaW50IGJvY2hzX2JvX3Vu cGluKHN0cnVjdCBib2Noc19ibyAqYm8pCi17Ci0Jc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0 eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0JaW50IGksIHJldDsKLQotCWlmICghYm8tPnBpbl9jb3Vu dCkgewotCQlEUk1fRVJST1IoInVucGluIGJhZCAlcFxuIiwgYm8pOwotCQlyZXR1cm4gMDsKLQl9 Ci0JYm8tPnBpbl9jb3VudC0tOwotCi0JaWYgKGJvLT5waW5fY291bnQpCi0JCXJldHVybiAwOwot Ci0JZm9yIChpID0gMDsgaSA8IGJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudDsgaSsrKQotCQli by0+cGxhY2VtZW50c1tpXS5mbGFncyAmPSB+VFRNX1BMX0ZMQUdfTk9fRVZJQ1Q7Ci0JcmV0ID0g dHRtX2JvX3Jlc2VydmUoJmJvLT5ibywgdHJ1ZSwgZmFsc2UsIE5VTEwpOwotCWlmIChyZXQpCi0J CXJldHVybiByZXQ7Ci0JcmV0ID0gdHRtX2JvX3ZhbGlkYXRlKCZiby0+Ym8sICZiby0+cGxhY2Vt ZW50LCAmY3R4KTsKLQl0dG1fYm9fdW5yZXNlcnZlKCZiby0+Ym8pOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7Ci0KLQlyZXR1cm4gMDsKLX0KLQogaW50IGJvY2hzX21tYXAoc3RydWN0IGZpbGUg KmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogewogCXN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2ID0gZmlscC0+cHJpdmF0ZV9kYXRhOwpAQCAtMjcxLDE3MSArMTUzLDYyIEBAIGlu dCBib2Noc19tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgaW50IGJvY2hzX2JvX2NyZWF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgc2l6ZSwgaW50IGFsaWduLAotCQkJICAgdWludDMy X3QgZmxhZ3MsIHN0cnVjdCBib2Noc19ibyAqKnBib2Noc2JvKQotewotCXN0cnVjdCBib2Noc19k ZXZpY2UgKmJvY2hzID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgYm9jaHNfYm8gKmJvY2hz Ym87Ci0Jc2l6ZV90IGFjY19zaXplOwotCWludCByZXQ7Ci0KLQlib2Noc2JvID0ga3phbGxvYyhz aXplb2Yoc3RydWN0IGJvY2hzX2JvKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFib2Noc2JvKQotCQly ZXR1cm4gLUVOT01FTTsKLQotCXJldCA9IGRybV9nZW1fb2JqZWN0X2luaXQoZGV2LCAmYm9jaHNi by0+Z2VtLCBzaXplKTsKLQlpZiAocmV0KSB7Ci0JCWtmcmVlKGJvY2hzYm8pOwotCQlyZXR1cm4g cmV0OwotCX0KLQotCWJvY2hzYm8tPmJvLmJkZXYgPSAmYm9jaHMtPnR0bS5iZGV2OwotCWJvY2hz Ym8tPmJvLmJkZXYtPmRldl9tYXBwaW5nID0gZGV2LT5hbm9uX2lub2RlLT5pX21hcHBpbmc7Ci0K LQlib2Noc190dG1fcGxhY2VtZW50KGJvY2hzYm8sIFRUTV9QTF9GTEFHX1ZSQU0gfCBUVE1fUExf RkxBR19TWVNURU0pOwotCi0JYWNjX3NpemUgPSB0dG1fYm9fZG1hX2FjY19zaXplKCZib2Nocy0+ dHRtLmJkZXYsIHNpemUsCi0JCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgYm9jaHNfYm8pKTsKLQot CXJldCA9IHR0bV9ib19pbml0KCZib2Nocy0+dHRtLmJkZXYsICZib2Noc2JvLT5ibywgc2l6ZSwK LQkJCSAgdHRtX2JvX3R5cGVfZGV2aWNlLCAmYm9jaHNiby0+cGxhY2VtZW50LAotCQkJICBhbGln biA+PiBQQUdFX1NISUZULCBmYWxzZSwgYWNjX3NpemUsCi0JCQkgIE5VTEwsIE5VTEwsIGJvY2hz X2JvX3R0bV9kZXN0cm95KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JKnBib2Noc2Jv ID0gYm9jaHNibzsKLQlyZXR1cm4gMDsKLX0KLQotaW50IGJvY2hzX2dlbV9jcmVhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdTMyIHNpemUsIGJvb2wgaXNrZXJuZWwsCi0JCSAgICAgc3RydWN0 IGRybV9nZW1fb2JqZWN0ICoqb2JqKQotewotCXN0cnVjdCBib2Noc19ibyAqYm9jaHNibzsKLQlp bnQgcmV0OwotCi0JKm9iaiA9IE5VTEw7Ci0KLQlzaXplID0gUEFHRV9BTElHTihzaXplKTsKLQlp ZiAoc2l6ZSA9PSAwKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCXJldCA9IGJvY2hzX2JvX2NyZWF0 ZShkZXYsIHNpemUsIDAsIDAsICZib2Noc2JvKTsKLQlpZiAocmV0KSB7Ci0JCWlmIChyZXQgIT0g LUVSRVNUQVJUU1lTKQotCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgR0VNIG9iamVj dFxuIik7Ci0JCXJldHVybiByZXQ7Ci0JfQotCSpvYmogPSAmYm9jaHNiby0+Z2VtOwotCXJldHVy biAwOwotfQotCiBpbnQgYm9jaHNfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLCBz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgICAgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1 bWIgKmFyZ3MpCiB7Ci0Jc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2JqOwotCXUzMiBoYW5kbGU7 Ci0JaW50IHJldDsKLQotCWFyZ3MtPnBpdGNoID0gYXJncy0+d2lkdGggKiAoKGFyZ3MtPmJwcCAr IDcpIC8gOCk7Ci0JYXJncy0+c2l6ZSA9IGFyZ3MtPnBpdGNoICogYXJncy0+aGVpZ2h0OwotCi0J cmV0ID0gYm9jaHNfZ2VtX2NyZWF0ZShkZXYsIGFyZ3MtPnNpemUsIGZhbHNlLAotCQkJICAgICAg ICZnb2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0ID0gZHJtX2dlbV9oYW5k bGVfY3JlYXRlKGZpbGUsIGdvYmosICZoYW5kbGUpOwotCWRybV9nZW1fb2JqZWN0X3B1dF91bmxv Y2tlZChnb2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JYXJncy0+aGFuZGxlID0g aGFuZGxlOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBib2Noc19ib191bnJlZihzdHJ1 Y3QgYm9jaHNfYm8gKipibykKLXsKLQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibzsKLQot CWlmICgoKmJvKSA9PSBOVUxMKQotCQlyZXR1cm47Ci0KLQl0Ym8gPSAmKCgqYm8pLT5ibyk7Ci0J dHRtX2JvX3B1dCh0Ym8pOwotCSpibyA9IE5VTEw7Ci19Ci0KLXZvaWQgYm9jaHNfZ2VtX2ZyZWVf b2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCBib2Noc19ibyAq Ym9jaHNfYm8gPSBnZW1fdG9fYm9jaHNfYm8ob2JqKTsKLQotCWJvY2hzX2JvX3VucmVmKCZib2No c19ibyk7Ci19Ci0KLWludCBib2Noc19kdW1iX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCSAgIHVpbnQzMl90IGhhbmRsZSwgdWlu dDY0X3QgKm9mZnNldCkKLXsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3Qg Ym9jaHNfYm8gKmJvOwotCi0Jb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGZpbGUsIGhhbmRs ZSk7Ci0JaWYgKG9iaiA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT0VOVDsKLQotCWJvID0gZ2VtX3Rv X2JvY2hzX2JvKG9iaik7Ci0JKm9mZnNldCA9IGJvY2hzX2JvX21tYXBfb2Zmc2V0KGJvKTsKKwlz dHJ1Y3QgYm9jaHNfZGV2aWNlICpib2NocyA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKLQlkcm1fZ2Vt X29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKLQlyZXR1cm4gMDsKKwlyZXR1cm4gZHJtX2dlbV90 dG1fZmlsbF9jcmVhdGVfZHVtYihmaWxlLCBkZXYsICZib2Nocy0+dHRtLmJkZXYsIDAsCisJCQkJ CSAgICBmYWxzZSwgYXJncyk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogaW50IGJvY2hz X2dlbV9wcmltZV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0Jc3RydWN0IGJv Y2hzX2JvICpibyA9IGdlbV90b19ib2Noc19ibyhvYmopOworCXN0cnVjdCBkcm1fZ2VtX3R0bV9v YmplY3QgKmdibyA9IGRybV9nZW1fdHRtX29mX2dlbShvYmopOwogCi0JcmV0dXJuIGJvY2hzX2Jv X3BpbihibywgVFRNX1BMX0ZMQUdfVlJBTSk7CisJcmV0dXJuIGRybV9nZW1fdHRtX3BpbihnYm8s IFRUTV9QTF9GTEFHX1ZSQU0pOwogfQogCiB2b2lkIGJvY2hzX2dlbV9wcmltZV91bnBpbihzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIHsKLQlzdHJ1Y3QgYm9jaHNfYm8gKmJvID0gZ2VtX3Rv X2JvY2hzX2JvKG9iaik7CisJc3RydWN0IGRybV9nZW1fdHRtX29iamVjdCAqZ2JvID0gZHJtX2dl bV90dG1fb2ZfZ2VtKG9iaik7CiAKLQlib2Noc19ib191bnBpbihibyk7CisJZHJtX2dlbV90dG1f dW5waW4oZ2JvKTsKIH0KIAogdm9pZCAqYm9jaHNfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopCiB7Ci0Jc3RydWN0IGJvY2hzX2JvICpibyA9IGdlbV90b19ib2Noc19i byhvYmopOworCXN0cnVjdCBkcm1fZ2VtX3R0bV9vYmplY3QgKmdibyA9IGRybV9nZW1fdHRtX29m X2dlbShvYmopOwogCWJvb2wgaXNfaW9tZW07CiAJaW50IHJldDsKKwl2b2lkKiBiYXNlOwogCi0J cmV0ID0gYm9jaHNfYm9fcGluKGJvLCBUVE1fUExfRkxBR19WUkFNKTsKKwlyZXQgPSBkcm1fZ2Vt X3R0bV9waW4oZ2JvLCBUVE1fUExfRkxBR19WUkFNKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gTlVM TDsKLQlyZXQgPSB0dG1fYm9fa21hcCgmYm8tPmJvLCAwLCBiby0+Ym8ubnVtX3BhZ2VzLCAmYm8t PmttYXApOwotCWlmIChyZXQpIHsKLQkJYm9jaHNfYm9fdW5waW4oYm8pOworCWJhc2UgPSBkcm1f Z2VtX3R0bV9rbWFwKGdibywgdHJ1ZSk7CisJaWYgKElTX0VSUihiYXNlKSkgeworCQlkcm1fZ2Vt X3R0bV91bnBpbihnYm8pOwogCQlyZXR1cm4gTlVMTDsKIAl9Ci0JcmV0dXJuIHR0bV9rbWFwX29i al92aXJ0dWFsKCZiby0+a21hcCwgJmlzX2lvbWVtKTsKKwlyZXR1cm4gdHRtX2ttYXBfb2JqX3Zp cnR1YWwoJmdiby0+a21hcCwgJmlzX2lvbWVtKTsKIH0KIAogdm9pZCBib2Noc19nZW1fcHJpbWVf dnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcikKIHsKLQlzdHJ1 Y3QgYm9jaHNfYm8gKmJvID0gZ2VtX3RvX2JvY2hzX2JvKG9iaik7CisJc3RydWN0IGRybV9nZW1f dHRtX29iamVjdCAqZ2JvID0gZHJtX2dlbV90dG1fb2ZfZ2VtKG9iaik7CiAKLQl0dG1fYm9fa3Vu bWFwKCZiby0+a21hcCk7Ci0JYm9jaHNfYm9fdW5waW4oYm8pOworCWRybV9nZW1fdHRtX2t1bm1h cChnYm8pOworCWRybV9nZW1fdHRtX3VucGluKGdibyk7CiB9CiAKIGludCBib2Noc19nZW1fcHJp bWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKIAkJCSBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSkKIHsKLQlzdHJ1Y3QgYm9jaHNfYm8gKmJvID0gZ2VtX3RvX2JvY2hzX2JvKG9i aik7CisJc3RydWN0IGRybV9nZW1fdHRtX29iamVjdCAqZ2JvID0gZHJtX2dlbV90dG1fb2ZfZ2Vt KG9iaik7CiAKLQliby0+Z2VtLnZtYV9ub2RlLnZtX25vZGUuc3RhcnQgPSBiby0+Ym8udm1hX25v ZGUudm1fbm9kZS5zdGFydDsKKwlnYm8tPmdlbS52bWFfbm9kZS52bV9ub2RlLnN0YXJ0ID0gZ2Jv LT5iby52bWFfbm9kZS52bV9ub2RlLnN0YXJ0OwogCXJldHVybiBkcm1fZ2VtX3ByaW1lX21tYXAo b2JqLCB2bWEpOwogfQotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWw=