From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH v3 2/8] drm/i915: Adds graphic address space ballooning logic Date: Thu, 13 Nov 2014 20:02:43 +0800 Message-ID: <1415880169-7656-3-git-send-email-yu.c.zhang@linux.intel.com> References: <1415880169-7656-1-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 22E2B6EB62 for ; Thu, 13 Nov 2014 04:32:24 -0800 (PST) In-Reply-To: <1415880169-7656-1-git-send-email-yu.c.zhang@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org V2l0aCBJbnRlbCBHVlQtZywgdGhlIGdsb2JhbCBncmFwaGljIG1lbW9yeSBzcGFjZSBpcyBwYXJ0 aXRpb25lZCBieQptdWx0aXBsZSB2R1BVIGluc3RhbmNlcyBpbiBkaWZmZXJlbnQgVk1zLiBUaGUg YmFsbG9vbmluZyBjb2RlIGlzIGNhbGxlZAppbiBpOTE1X2dlbV9zZXR1cF9nbG9iYWxfZ3R0KCks IHV0aWxpemluZyB0aGUgZHJtIG1tIGFsbG9jYXRvciBBUElzIHRvCm1hcmsgdGhlIGdyYXBoaWMg YWRkcmVzcyBzcGFjZSB3aGljaCBhcmUgcGFydGl0aW9uZWQgb3V0IHRvIG90aGVyIHZHUFVzCmFz IHJlc2VydmVkLgoKdjI6CnRha2UgQ2hyaXMgYW5kIERhbmllbCdzIGNvbW1lbnRzOgoJLSBubyBn dWFyZCBwYWdlIGJldHdlZW4gZGlmZmVyZW50IFZNcwoJLSB1c2UgZHJtX21tX3Jlc2VydmVfbm9k ZSgpIHRvIGRvIHRoZSByZXNlcnZhdGlvbiBmb3IgYmFsbG9vbmluZywKCWluc3RlYWQgb2YgdGhl IHByZXZpb3VzIGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKCkKCnYzOgp0YWtl IERhbmllbCdzIGNvbW1lbnRzOgoJLSBtb3ZlIGJhbGxvb25pbmcgZnVuY3Rpb25zIGludG8gaTkx NV92Z3B1LmMKCS0gYWRkIGtlcm5lbGRvYyB0byBiYWxsb29uaW5nIGZ1bmN0aW9ucwoKU2lnbmVk LW9mZi1ieTogWXUgWmhhbmcgPHl1LmMuemhhbmdAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBKaWtlIFNvbmcgPGppa2Uuc29uZ0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFpoaSBX YW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogRWRkaWUgRG9uZyA8ZWRk aWUuZG9uZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgfCAgMTcgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMgICAgfCAxNDkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3ZncHUuaCAgICB8ICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXgg ZGUxMjAxNy4uMmRmYWMxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTI3 LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9pOTE1X2Ry bS5oPgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCiAjaW5j bHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1ZGUgImludGVsX2Rydi5oIgogCkBAIC0xNjgzLDYg KzE2ODQsMTYgQEAgaW50IGk5MTVfZ2VtX3NldHVwX2dsb2JhbF9ndHQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAogCS8qIFN1YnRyYWN0IHRoZSBndWFyZCBwYWdlIC4uLiAqLwogCWRybV9tbV9p bml0KCZnZ3R0X3ZtLT5tbSwgc3RhcnQsIGVuZCAtIHN0YXJ0IC0gUEFHRV9TSVpFKTsKKworCWRl dl9wcml2LT5ndHQuYmFzZS5zdGFydCA9IHN0YXJ0OworCWRldl9wcml2LT5ndHQuYmFzZS50b3Rh bCA9IGVuZCAtIHN0YXJ0OworCisJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpIHsKKwkJcmV0 ID0gaW50ZWxfdmd0X2JhbGxvb24oZGV2KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJ fQorCiAJaWYgKCFIQVNfTExDKGRldikpCiAJCWRldl9wcml2LT5ndHQuYmFzZS5tbS5jb2xvcl9h ZGp1c3QgPSBpOTE1X2d0dF9jb2xvcl9hZGp1c3Q7CiAKQEAgLTE3MDIsOSArMTcxMyw2IEBAIGlu dCBpOTE1X2dlbV9zZXR1cF9nbG9iYWxfZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXZt YS0+Ym91bmQgfD0gR0xPQkFMX0JJTkQ7CiAJfQogCi0JZGV2X3ByaXYtPmd0dC5iYXNlLnN0YXJ0 ID0gc3RhcnQ7Ci0JZGV2X3ByaXYtPmd0dC5iYXNlLnRvdGFsID0gZW5kIC0gc3RhcnQ7Ci0KIAkv KiBDbGVhciBhbnkgbm9uLXByZWFsbG9jYXRlZCBibG9ja3MgKi8KIAlkcm1fbW1fZm9yX2VhY2hf aG9sZShlbnRyeSwgJmdndHRfdm0tPm1tLCBob2xlX3N0YXJ0LCBob2xlX2VuZCkgewogCQlEUk1f REVCVUdfS01TKCJjbGVhcmluZyB1bnVzZWQgR1RUIHNwYWNlOiBbJWx4LCAlbHhdXG4iLApAQCAt MTc1Niw2ICsxNzY0LDkgQEAgdm9pZCBpOTE1X2dsb2JhbF9ndHRfY2xlYW51cChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCX0KIAogCWlmIChkcm1fbW1faW5pdGlhbGl6ZWQoJnZtLT5tbSkpIHsK KwkJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpCisJCQlpbnRlbF92Z3RfZGViYWxsb29uKCk7 CisKIAkJZHJtX21tX3Rha2Vkb3duKCZ2bS0+bW0pOwogCQlsaXN0X2RlbCgmdm0tPmdsb2JhbF9s aW5rKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCmluZGV4IDNmNmI3OTcuLmZmNWZiYTMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCkBAIC04MywzICs4MywxNTIgQEAgdm9pZCBpOTE1 X2NoZWNrX3ZncHUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlkZXZfcHJpdi0+dmdwdS5hY3Rp dmUgPSB0cnVlOwogCURSTV9JTkZPKCJWaXJ0dWFsIEdQVSBmb3IgSW50ZWwgR1ZULWcgZGV0ZWN0 ZWQuXG4iKTsKIH0KKworc3RydWN0IF9iYWxsb29uX2luZm9fIHsKKwkvKgorCSAqIFRoZXJlIGFy ZSB1cCB0byAyIHJlZ2lvbnMgcGVyIGxvdy9oaWdoIGdyYXBoaWMgbWVtb3J5IHRoYXQKKwkgKiBt aWdodCBiZSBiYWxsb29uZWQuIEhlcmUsIGluZGV4IDAvMSBpcyBmb3IgbG93CisJICogZ3JhcGhp YyBtZW1vcnksIDIvMyBmb3IgaGlnaCBncmFwaGljIG1lbW9yeS4KKwkgKi8KKwlzdHJ1Y3QgZHJt X21tX25vZGUgc3BhY2VbNF07Cit9IGJsX2luZm87CisKKy8qKgorICogaW50ZWxfdmd0X2RlYmFs bG9vbiAtIGRlYmFsbG9vbiByZXNlcnZlZCBncmFwaGljcyBhZGRyZXNzIHRydW5rcworICoKKyAq IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGRlYWxsb2NhdGUgdGhlIGJhbGxvb25lZC1vdXQg Z3JhcGhpYyBtZW1vcnksIHdoZW4KKyAqIGRyaXZlciBpcyB1bmxvYWRlZCBvciB3aGVuIGJhbGxv b25pbmcgZmFpbHMuCisgKi8KK3ZvaWQgaW50ZWxfdmd0X2RlYmFsbG9vbih2b2lkKQoreworCWlu dCBpOworCisJRFJNX0lORk8oIlZHVCBkZWJhbGxvb24uXG4iKTsKKworCWZvciAoaSA9IDA7IGkg PCA0OyBpKyspIHsKKwkJaWYgKGJsX2luZm8uc3BhY2VbaV0uYWxsb2NhdGVkKQorCQkJZHJtX21t X3JlbW92ZV9ub2RlKCZibF9pbmZvLnNwYWNlW2ldKTsKKwl9CisKKwltZW1zZXQoJmJsX2luZm8s IDAsIHNpemVvZihibF9pbmZvKSk7Cit9CisKK3N0YXRpYyBpbnQgdmd0X2JhbGxvb25fc3BhY2Uo c3RydWN0IGRybV9tbSAqbW0sCisJCQkgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKKwkJ CSAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCit7CisJdW5zaWdu ZWQgbG9uZyBzaXplID0gZW5kIC0gc3RhcnQ7CisKKwlpZiAoc3RhcnQgPT0gZW5kKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCURSTV9JTkZPKCJiYWxsb29uIHNwYWNlOiByYW5nZSBbIDB4JWx4IC0g MHglbHggXSAlbHUgS0IuXG4iLAorCQkgc3RhcnQsIGVuZCwgc2l6ZSAvIDEwMjQpOworCisJbm9k ZS0+c3RhcnQgPSBzdGFydDsKKwlub2RlLT5zaXplID0gc2l6ZTsKKworCXJldHVybiBkcm1fbW1f cmVzZXJ2ZV9ub2RlKG1tLCBub2RlKTsKK30KKworLyoqCisgKiBpbnRlbF92Z3RfYmFsbG9vbiAt IGJhbGxvb24gb3V0IHJlc2VydmVkIGdyYXBoaWNzIGFkZHJlc3MgdHJ1bmtzCisgKiBAZGV2OiBk cm0gZGV2aWNlCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgdGhlIGluaXRpYWxp emF0aW9uIHN0YWdlLCB0byBiYWxsb29uIG91dCB0aGUKKyAqIGdyYXBoaWMgYWRkcmVzcyBzcGFj ZSBhbGxvY2F0ZWQgdG8gb3RoZXIgVk1zLCBieSBtYXJraW5nIHRoZXNlIHNwYWNlcyBhcworICog cmVzZXJ2ZWQuCisgKgorICogVGhlIGJhbGxvb25pbmcgcmVsYXRlZCBrbm93bGVkZ2VzKHN0YXJ0 aW5nIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGxvdy9oaWdoCisgKiBncmFwaGljIG1lbW9yeSkg YXJlIGRlcGljdGVkIGluIHRoZSB2Z3RfaWYgc3RydWN0dXJlIGluIGEgcmVzZXJ2ZWQgTU1JTwor ICogcmFuZ2UuCisgKgorICogUmV0dXJuczoKKyAqIHplcm8gb24gc3VjY2Vzcywgbm9uLXplcm8g aWYgY29uZmlndXJhdGlvbiBpbnZhbGlkIG9yIGJhbGxvb25pbmcgZmFpbGVkCisgKi8KK2ludCBp bnRlbF92Z3RfYmFsbG9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICpnZ3R0X3ZtID0gJmRldl9wcml2LT5ndHQuYmFzZTsKKwl1bnNpZ25lZCBsb25n IGdndHRfdm1fZW5kID0gZ2d0dF92bS0+c3RhcnQgKyBnZ3R0X3ZtLT50b3RhbDsKKworCXVuc2ln bmVkIGxvbmcgbG93X2dtX2Jhc2UsIGxvd19nbV9zaXplLCBsb3dfZ21fZW5kOworCXVuc2lnbmVk IGxvbmcgaGlnaF9nbV9iYXNlLCBoaWdoX2dtX3NpemUsIGhpZ2hfZ21fZW5kOworCWludCByZXQ7 CisKKwlsb3dfZ21fYmFzZSA9IEk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZhaWxfcnMubG93X2dtYWRy Lm15X2Jhc2UpKTsKKwlsb3dfZ21fc2l6ZSA9IEk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZhaWxfcnMu bG93X2dtYWRyLm15X3NpemUpKTsKKwloaWdoX2dtX2Jhc2UgPSBJOTE1X1JFQUQodmd0aWZfcmVn KGF2YWlsX3JzLmhpZ2hfZ21hZHIubXlfYmFzZSkpOworCWhpZ2hfZ21fc2l6ZSA9IEk5MTVfUkVB RCh2Z3RpZl9yZWcoYXZhaWxfcnMuaGlnaF9nbWFkci5teV9zaXplKSk7CisKKwlsb3dfZ21fZW5k ID0gbG93X2dtX2Jhc2UgKyBsb3dfZ21fc2l6ZTsKKwloaWdoX2dtX2VuZCA9IGhpZ2hfZ21fYmFz ZSArIGhpZ2hfZ21fc2l6ZTsKKworCURSTV9JTkZPKCJWR1QgYmFsbG9vbmluZyBjb25maWd1cmF0 aW9uOlxuIik7CisJRFJNX0lORk8oIkxvdyBncmFwaGljIG1lbW9yeTogYmFzZSAweCVseCBzaXpl ICVsZEtCXG4iLAorCQkgbG93X2dtX2Jhc2UsIGxvd19nbV9zaXplIC8gMTAyNCk7CisJRFJNX0lO Rk8oIkhpZ2ggZ3JhcGhpYyBtZW1vcnk6IGJhc2UgMHglbHggc2l6ZSAlbGRLQlxuIiwKKwkJIGhp Z2hfZ21fYmFzZSwgaGlnaF9nbV9zaXplIC8gMTAyNCk7CisKKwlpZiAobG93X2dtX2Jhc2UgPCBn Z3R0X3ZtLT5zdGFydAorCSAgICB8fCBsb3dfZ21fZW5kID4gZGV2X3ByaXYtPmd0dC5tYXBwYWJs ZV9lbmQKKwkgICAgfHwgaGlnaF9nbV9iYXNlIDwgZGV2X3ByaXYtPmd0dC5tYXBwYWJsZV9lbmQK KwkgICAgfHwgaGlnaF9nbV9lbmQgPiBnZ3R0X3ZtX2VuZCkgeworCQlEUk1fRVJST1IoIkludmFs aWQgYmFsbG9vbmluZyBjb25maWd1cmF0aW9uIVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0K KworCW1lbXNldCgmYmxfaW5mbywgMCwgc2l6ZW9mKGJsX2luZm8pKTsKKworCS8qIEhpZ2ggZ3Jh cGhpYyBtZW1vcnkgYmFsbG9vbmluZyAqLworCWlmIChoaWdoX2dtX2Jhc2UgPiBkZXZfcHJpdi0+ Z3R0Lm1hcHBhYmxlX2VuZCkgeworCQlyZXQgPSB2Z3RfYmFsbG9vbl9zcGFjZSgmZ2d0dF92bS0+ bW0sCisJCQkJCSZibF9pbmZvLnNwYWNlWzJdLAorCQkJCQlkZXZfcHJpdi0+Z3R0Lm1hcHBhYmxl X2VuZCwKKwkJCQkJaGlnaF9nbV9iYXNlKTsKKworCQlpZiAocmV0KQorCQkJZ290byBlcnI7CisJ fQorCisJLyoKKwkgKiBObyBuZWVkIHRvIHBhcnRpdGlvbiBvdXQgdGhlIGxhc3QgcGh5c2ljYWwg cGFnZSwKKwkgKiBiZWNhdXNlIGl0IGlzIHJlc2VydmVkIHRvIHRoZSBndWFyZCBwYWdlLgorCSAq LworCWlmIChoaWdoX2dtX2VuZCA8IGdndHRfdm1fZW5kIC0gUEFHRV9TSVpFKSB7CisJCXJldCA9 IHZndF9iYWxsb29uX3NwYWNlKCZnZ3R0X3ZtLT5tbSwKKwkJCQkJJmJsX2luZm8uc3BhY2VbM10s CisJCQkJCWhpZ2hfZ21fZW5kLAorCQkJCQlnZ3R0X3ZtX2VuZCAtIFBBR0VfU0laRSk7CisJCWlm IChyZXQpCisJCQlnb3RvIGVycjsKKwl9CisKKwkvKiBMb3cgZ3JhcGhpYyBtZW1vcnkgYmFsbG9v bmluZyAqLworCWlmIChsb3dfZ21fYmFzZSA+IGdndHRfdm0tPnN0YXJ0KSB7CisJCXJldCA9IHZn dF9iYWxsb29uX3NwYWNlKCZnZ3R0X3ZtLT5tbSwKKwkJCQkJJmJsX2luZm8uc3BhY2VbMF0sCisJ CQkJCWdndHRfdm0tPnN0YXJ0LCBsb3dfZ21fYmFzZSk7CisKKwkJaWYgKHJldCkKKwkJCWdvdG8g ZXJyOworCX0KKworCWlmIChsb3dfZ21fZW5kIDwgZGV2X3ByaXYtPmd0dC5tYXBwYWJsZV9lbmQp IHsKKwkJcmV0ID0gdmd0X2JhbGxvb25fc3BhY2UoJmdndHRfdm0tPm1tLAorCQkJCQkmYmxfaW5m by5zcGFjZVsxXSwKKwkJCQkJbG93X2dtX2VuZCwKKwkJCQkJZGV2X3ByaXYtPmd0dC5tYXBwYWJs ZV9lbmQpOworCisJCWlmIChyZXQpCisJCQlnb3RvIGVycjsKKwl9CisKKwlEUk1fSU5GTygiVkdU IGJhbGxvb24gc3VjY2Vzc2Z1bGx5XG4iKTsKKwlyZXR1cm4gMDsKKworZXJyOgorCURSTV9FUlJP UigiVkdUIGJhbGxvb24gZmFpbFxuIik7CisJaW50ZWxfdmd0X2RlYmFsbG9vbigpOworCXJldHVy biByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCmluZGV4IDVmNDFkMDFjLi5mNTM4YjE4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaApAQCAtODEsNSArODEsNyBAQCBzdHJ1Y3Qgdmd0 X2lmIHsKIAkoVkdUX1BWSU5GT19QQUdFICsgKGxvbmcpJigoc3RydWN0IHZndF9pZiAqKSBOVUxM KS0+eCkKIAogZXh0ZXJuIHZvaWQgaTkxNV9jaGVja192Z3B1KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOworZXh0ZXJuIGludCBpbnRlbF92Z3RfYmFsbG9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKK2V4dGVybiB2b2lkIGludGVsX3ZndF9kZWJhbGxvb24odm9pZCk7CiAKICNlbmRpZiAvKiBf STkxNV9WR1BVX0hfICovCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK