From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 17/37] drm/i915: Test partial mappings Date: Wed, 11 Jan 2017 21:09:17 +0000 Message-ID: <20170111210937.29252-18-chris@chris-wilson.co.uk> References: <20170111210937.29252-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id D3E0F6EA5A for ; Wed, 11 Jan 2017 21:10:03 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id r126so796878wmr.3 for ; Wed, 11 Jan 2017 13:10:03 -0800 (PST) In-Reply-To: <20170111210937.29252-1-chris@chris-wilson.co.uk> 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 Q3JlYXRlIHBhcnRpYWwgbWFwcGluZ3MgdG8gY292ZXIgYSBsYXJnZSBvYmplY3QsIGludmVzdGln YXRpbmcgdGlsaW5nCihmZW5jZWQgcmVnaW9ucykgYW5kIFZNQSByZXVzZS4KClNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyB8IDI1MiArKysrKysrKysr KysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI1MiBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCmluZGV4IDA4 ZTZiNDliMWU3Ny4uZGYzNjI1ZjU1MWFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCkBAIC0xMzIsNiArMTMyLDI1NyBAQCBzdGF0aWMg aW50IGlndF9nZW1faHVnZSh2b2lkICphcmcpCiAJcmV0dXJuIGVycjsKIH0KIAorc3RydWN0IHRp bGUgeworCXVuc2lnbmVkIGludCB3aWR0aDsKKwl1bnNpZ25lZCBpbnQgaGVpZ2h0OworCXVuc2ln bmVkIGludCBzdHJpZGU7CisJdW5zaWduZWQgaW50IHNpemU7CisJdW5zaWduZWQgaW50IHRpbGlu ZzsKKwl1bnNpZ25lZCBpbnQgc3dpenpsZTsKK307CisKK3N0YXRpYyB1NjQgc3dpenpsZV9iaXQo dW5zaWduZWQgYml0LCB1NjQgb2Zmc2V0KQoreworCXJldHVybiAob2Zmc2V0ICYgQklUX1VMTChi aXQpKSA+PiAoYml0IC0gNik7Cit9CisKK3N0YXRpYyB1NjQgdGlsZWRfb2Zmc2V0KGNvbnN0IHN0 cnVjdCB0aWxlICp0aWxlLCB1NjQgdikKK3sKKwl1NjQgeCwgeTsKKworCWlmICh0aWxlLT50aWxp bmcgPT0gSTkxNV9USUxJTkdfTk9ORSkKKwkJcmV0dXJuIHY7CisKKwlzd2l0Y2ggKHRpbGUtPnN3 aXp6bGUpIHsKKwljYXNlIEk5MTVfQklUXzZfU1dJWlpMRV85OgorCQl2IF49IHN3aXp6bGVfYml0 KDksIHYpOworCQlicmVhazsKKwljYXNlIEk5MTVfQklUXzZfU1dJWlpMRV85XzEwOgorCQl2IF49 IHN3aXp6bGVfYml0KDksIHYpIF4gc3dpenpsZV9iaXQoMTAsIHYpOworCQlicmVhazsKKwljYXNl IEk5MTVfQklUXzZfU1dJWlpMRV85XzExOgorCQl2IF49IHN3aXp6bGVfYml0KDksIHYpIF4gc3dp enpsZV9iaXQoMTEsIHYpOworCQlicmVhazsKKwljYXNlIEk5MTVfQklUXzZfU1dJWlpMRV85XzEw XzExOgorCQl2IF49IHN3aXp6bGVfYml0KDksIHYpIF4gc3dpenpsZV9iaXQoMTAsIHYpIF4gc3dp enpsZV9iaXQoMTEsIHYpOworCQlicmVhazsKKwl9CisKKwl5ID0gZGl2NjRfdTY0X3JlbSh2LCB0 aWxlLT5zdHJpZGUsICZ4KTsKKwl2ID0gZGl2NjRfdTY0X3JlbSh5LCB0aWxlLT5oZWlnaHQsICZ5 KSAqIHRpbGUtPnN0cmlkZSAqIHRpbGUtPmhlaWdodDsKKworCWlmICh0aWxlLT50aWxpbmcgPT0g STkxNV9USUxJTkdfWCkgeworCQl2ICs9IHkgKiB0aWxlLT53aWR0aDsKKwkJdiArPSBkaXY2NF91 NjRfcmVtKHgsIHRpbGUtPndpZHRoLCAmeCkgPDwgdGlsZS0+c2l6ZTsKKwkJdiArPSB4OworCX0g ZWxzZSB7CisJCWNvbnN0IHVuc2lnbmVkIGludCB5dGlsZV9zcGFuID0gMTY7CisJCWNvbnN0IHVu c2lnbmVkIGludCB5dGlsZV9oZWlnaHQgPSAzMiAqIHl0aWxlX3NwYW47CisKKwkJdiArPSB5ICog eXRpbGVfc3BhbjsKKwkJdiArPSBkaXY2NF91NjRfcmVtKHgsIHl0aWxlX3NwYW4sICZ4KSAqIHl0 aWxlX2hlaWdodDsKKwkJdiArPSB4OworCX0KKworCXJldHVybiB2OworfQorCitzdGF0aWMgaW50 IGNoZWNrX3BhcnRpYWxfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAor CQkJCSBjb25zdCBzdHJ1Y3QgdGlsZSAqdGlsZSkKK3sKKwljb25zdCB1bnNpZ25lZCBpbnQgbnJl YWwgPSBvYmotPnNjcmF0Y2ggLyBQQUdFX1NJWkU7CisJY29uc3QgdW5zaWduZWQgbG9uZyBucGFn ZXMgPSBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK Kwl1bnNpZ25lZCBsb25nIHBhZ2U7CisJaW50IGVycjsKKworCWNvbmRfcmVzY2hlZCgpOworCWlm IChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKKwkJcmV0dXJuIC1FSU5UUjsKKworCWVyciA9IGk5 MTVfZ2VtX29iamVjdF9zZXRfdGlsaW5nKG9iaiwgdGlsZS0+dGlsaW5nLCB0aWxlLT5zdHJpZGUp OworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlHRU1fQlVHX09OKGk5MTVfZ2VtX29iamVj dF9nZXRfdGlsaW5nKG9iaikgIT0gdGlsZS0+dGlsaW5nKTsKKwlHRU1fQlVHX09OKGk5MTVfZ2Vt X29iamVjdF9nZXRfc3RyaWRlKG9iaikgIT0gdGlsZS0+c3RyaWRlKTsKKworCWZvcl9lYWNoX3By aW1lX251bWJlcl9mcm9tKHBhZ2UsIDEsIG5wYWdlcykgeworCQlzdHJ1Y3QgaTkxNV9nZ3R0X3Zp ZXcgdmlldyA9CisJCQljb21wdXRlX3BhcnRpYWxfdmlldyhvYmosIHBhZ2UsIE1JTl9DSFVOS19Q QUdFUyk7CisJCXUzMiBfX2lvbWVtICppbzsKKwkJc3RydWN0IHBhZ2UgKnA7CisJCXVuc2lnbmVk IGludCBuOworCQl1NjQgb2Zmc2V0OworCQl1MzIgKmNwdTsKKworCQlHRU1fQlVHX09OKGludGVs X3BhcnRpYWxfZ2V0X3BhZ2VfY291bnQoJnZpZXcucGFydGlhbCkgPiBucmVhbCk7CisKKwkJZXJy ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CisJCWlmIChl cnIpCisJCQlyZXR1cm4gZXJyOworCisJCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bpbihv YmosICZ2aWV3LCAwLCAwLCBQSU5fTUFQUEFCTEUpOworCQlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJ CXByX2VycigiRmFpbGVkIHRvIHBpbiBwYXJ0aWFsIHZpZXc6IG9mZnNldD0lbHVcbiIsCisJCQkg ICAgICAgcGFnZSk7CisJCQlyZXR1cm4gUFRSX0VSUih2bWEpOworCQl9CisKKwkJbiA9IHBhZ2Ug LSBpbnRlbF9wYXJ0aWFsX2dldF9wYWdlX29mZnNldCgmdmlldy5wYXJ0aWFsKTsKKwkJR0VNX0JV R19PTihuID49IGludGVsX3BhcnRpYWxfZ2V0X3BhZ2VfY291bnQoJnZpZXcucGFydGlhbCkpOwor CisJCWlvID0gaTkxNV92bWFfcGluX2lvbWFwKHZtYSk7CisJCWk5MTVfdm1hX3VucGluKHZtYSk7 CisJCWlmIChJU19FUlIoaW8pKSB7CisJCQlwcl9lcnIoIkZhaWxlZCB0byBpb21hcCBwYXJ0aWFs IHZpZXc6IG9mZnNldD0lbHVcbiIsCisJCQkgICAgICAgcGFnZSk7CisJCQlyZXR1cm4gUFRSX0VS Uihpbyk7CisJCX0KKworCQllcnIgPSBpOTE1X3ZtYV9nZXRfZmVuY2Uodm1hKTsKKwkJaWYgKGVy cikgeworCQkJcHJfZXJyKCJGYWlsZWQgdG8gZ2V0IGZlbmNlIGZvciBwYXJ0aWFsIHZpZXc6IG9m ZnNldD0lbHVcbiIsCisJCQkgICAgICAgcGFnZSk7CisJCQlpOTE1X3ZtYV91bnBpbl9pb21hcCh2 bWEpOworCQkJcmV0dXJuIFBUUl9FUlIoaW8pOworCQl9CisKKwkJaW93cml0ZTMyKHBhZ2UsIGlv ICsgbiAqIFBBR0VfU0laRS9zaXplb2YoKmlvKSk7CisJCWk5MTVfdm1hX3VucGluX2lvbWFwKHZt YSk7CisKKwkJb2Zmc2V0ID0gdGlsZWRfb2Zmc2V0KHRpbGUsIHBhZ2UgPDwgUEFHRV9TSElGVCk7 CisJCWlmIChvZmZzZXQgPj0gb2JqLT5iYXNlLnNpemUpCisJCQljb250aW51ZTsKKworCQlpOTE1 X2dlbV9vYmplY3RfZmx1c2hfZ3R0X3dyaXRlX2RvbWFpbihvYmopOworCisJCXAgPSBpOTE1X2dl bV9vYmplY3RfZ2V0X3BhZ2Uob2JqLCBvZmZzZXQgPj4gUEFHRV9TSElGVCk7CisJCWNwdSA9IGtt YXAocCkgKyBvZmZzZXRfaW5fcGFnZShvZmZzZXQpOworCQlkcm1fY2xmbHVzaF92aXJ0X3Jhbmdl KGNwdSwgc2l6ZW9mKCpjcHUpKTsKKwkJaWYgKCpjcHUgIT0gKHUzMilwYWdlKSB7CisJCQlwcl9l cnIoIlBhcnRpYWwgdmlldyBmb3IgJWx1IFsldV0gKG9mZnNldD0lbGx1LCBzaXplPSV1IFslbGx1 LCByb3cgc2l6ZSAldV0sIGZlbmNlPSVkLCB0aWxpbmc9JWQsIHN0cmlkZT0lZCkgbWlzYWxpZ25t ZW50LCBleHBlY3RlZCB3cml0ZSB0byBwYWdlICglbGx1ICsgJXUgWzB4JWxseF0pIG9mIDB4JXgs IGZvdW5kIDB4JXhcbiIsCisJCQkgICAgICAgcGFnZSwgbiwKKwkJCSAgICAgICBpbnRlbF9wYXJ0 aWFsX2dldF9wYWdlX29mZnNldCgmdmlldy5wYXJ0aWFsKSwKKwkJCSAgICAgICBpbnRlbF9wYXJ0 aWFsX2dldF9wYWdlX2NvdW50KCZ2aWV3LnBhcnRpYWwpLAorCQkJICAgICAgIHZtYS0+c2l6ZSA+ PiBQQUdFX1NISUZULAorCQkJICAgICAgIHRpbGVfcm93X3BhZ2VzKG9iaiksCisJCQkgICAgICAg dm1hLT5mZW5jZSA/IHZtYS0+ZmVuY2UtPmlkIDogLTEsIHRpbGUtPnRpbGluZywgdGlsZS0+c3Ry aWRlLAorCQkJICAgICAgIG9mZnNldCA+PiBQQUdFX1NISUZULAorCQkJICAgICAgICh1bnNpZ25l ZCBpbnQpb2Zmc2V0X2luX3BhZ2Uob2Zmc2V0KSwKKwkJCSAgICAgICBvZmZzZXQsCisJCQkgICAg ICAgKHUzMilwYWdlLCAqY3B1KTsKKwkJCWVyciA9IC1FSU5WQUw7CisJCX0KKwkJKmNwdSA9IDA7 CisJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UoY3B1LCBzaXplb2YoKmNwdSkpOworCQlrdW5tYXAo cCk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCX0KKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGlndF9wYXJ0aWFsX3RpbGluZyh2b2lkICphcmcpCit7CisJY29uc3QgdW5zaWdu ZWQgaW50IG5yZWFsID0gMSA8PCAxMjsgLyogbGFyZ2VzdCB0aWxlIHJvdyB4MiAqLworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7CisJc3RydWN0IHRpbGUgdGlsZTsKKwlpbnQgZXJyOworCisJb2JqID0gaHVnZV9n ZW1fb2JqZWN0KGk5MTUsCisJCQkgICAgICBucmVhbCA8PCBQQUdFX1NISUZULAorCQkJICAgICAg KDEgKyBuZXh0X3ByaW1lX251bWJlcihpOTE1LT5nZ3R0LmJhc2UudG90YWwgPj4gUEFHRV9TSElG VCkpIDw8IFBBR0VfU0hJRlQpOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIFBUUl9FUlIo b2JqKTsKKworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwlpZiAoZXJy KSB7CisJCXByX2VycigiRmFpbGVkIHRvIGFsbG9jYXRlICV1IHBhZ2VzICglenUgdG90YWwpLCBl cnI9JWRcbiIsCisJCSAgICAgICBucmVhbCwgb2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJWkUsIGVy cik7CisJCWdvdG8gZXJyOworCX0KKworCXRpbGUuaGVpZ2h0ID0gMTsKKwl0aWxlLndpZHRoID0g MTsKKwl0aWxlLnNpemUgPSAwOworCXRpbGUuc3RyaWRlID0gMDsKKwl0aWxlLnN3aXp6bGUgPSBJ OTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKKwl0aWxlLnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7 CisKKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwllcnIgPSBjaGVja19w YXJ0aWFsX21hcHBpbmcob2JqLCAmdGlsZSk7CisJaWYgKGVycikKKwkJZ290byBlcnJfdW5sb2Nr OworCisJZm9yICh0aWxlLnRpbGluZyA9IEk5MTVfVElMSU5HX1g7CisJICAgICB0aWxlLnRpbGlu ZyA8PSBJOTE1X1RJTElOR19ZOworCSAgICAgdGlsZS50aWxpbmcrKykgeworCQl1bnNpZ25lZCBp bnQgbWF4X3BpdGNoOworCQl1bnNpZ25lZCBpbnQgcGl0Y2g7CisKKwkJc3dpdGNoICh0aWxlLnRp bGluZykgeworCQljYXNlIEk5MTVfVElMSU5HX1g6CisJCQl0aWxlLnN3aXp6bGUgPSBpOTE1LT5t bS5iaXRfNl9zd2l6emxlX3g7CisJCQlicmVhazsKKwkJY2FzZSBJOTE1X1RJTElOR19ZOgorCQkJ dGlsZS5zd2l6emxlID0gaTkxNS0+bW0uYml0XzZfc3dpenpsZV95OworCQkJYnJlYWs7CisJCX0K KworCQlpZiAodGlsZS5zd2l6emxlID09IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOIHx8CisJ CSAgICB0aWxlLnN3aXp6bGUgPT0gSTkxNV9CSVRfNl9TV0laWkxFXzlfMTBfMTcpCisJCQljb250 aW51ZTsKKworCQlpZiAoSU5URUxfR0VOKGk5MTUpIDw9IDIpIHsKKwkJCXRpbGUuaGVpZ2h0ID0g MTY7CisJCQl0aWxlLndpZHRoID0gMTI4OworCQkJdGlsZS5zaXplID0gMTE7CisJCX0gZWxzZSBp ZiAodGlsZS50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSAmJgorCQkJICAgSEFTXzEyOF9CWVRFX1lf VElMSU5HKGk5MTUpKSB7CisJCQl0aWxlLmhlaWdodCA9IDMyOworCQkJdGlsZS53aWR0aCA9IDEy ODsKKwkJCXRpbGUuc2l6ZSA9IDEyOworCQl9IGVsc2UgeworCQkJdGlsZS5oZWlnaHQgPSA4Owor CQkJdGlsZS53aWR0aCA9IDUxMjsKKwkJCXRpbGUuc2l6ZSA9IDEyOworCQl9CisKKwkJaWYgKElO VEVMX0dFTihpOTE1KSA8IDQpCisJCQltYXhfcGl0Y2ggPSA4MTkyIC8gdGlsZS53aWR0aDsKKwkJ ZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpIDwgNykKKwkJCW1heF9waXRjaCA9IDEyOCAqIEk5NjVf RkVOQ0VfTUFYX1BJVENIX1ZBTCAvIHRpbGUud2lkdGg7CisJCWVsc2UKKwkJCW1heF9waXRjaCA9 IDEyOCAqIEdFTjdfRkVOQ0VfTUFYX1BJVENIX1ZBTCAvIHRpbGUud2lkdGg7CisKKwkJZm9yIChw aXRjaCA9IDE7IHBpdGNoIDw9IG1heF9waXRjaDsgcGl0Y2ggPDw9IDEpIHsKKwkJCXRpbGUuc3Ry aWRlID0gdGlsZS53aWR0aCAqIHBpdGNoOworCQkJZXJyID0gY2hlY2tfcGFydGlhbF9tYXBwaW5n KG9iaiwgJnRpbGUpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIGVycl91bmxvY2s7CisJCX0KKwor CQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDQpIHsKKwkJCWZvcl9lYWNoX3ByaW1lX251bWJlcihw aXRjaCwgbWF4X3BpdGNoKSB7CisJCQkJdGlsZS5zdHJpZGUgPSB0aWxlLndpZHRoICogcGl0Y2g7 CisJCQkJZXJyID0gY2hlY2tfcGFydGlhbF9tYXBwaW5nKG9iaiwgJnRpbGUpOworCQkJCWlmIChl cnIpCisJCQkJCWdvdG8gZXJyX3VubG9jazsKKwkJCX0KKwkJfQorCX0KKworZXJyX3VubG9jazoK KwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVfZ2VtX29iamVj dF91bnBpbl9wYWdlcyhvYmopOworZXJyOgorCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwly ZXR1cm4gZXJyOworfQorCiBpbnQgaTkxNV9nZW1fb2JqZWN0X21vY2tfc2VsZnRlc3RzKHZvaWQp CiB7CiAJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKQEAgLTE1 NSw2ICs0MDYsNyBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogewogCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0 ZXN0IHRlc3RzW10gPSB7CiAJCVNVQlRFU1QoaWd0X2dlbV9odWdlKSwKKwkJU1VCVEVTVChpZ3Rf cGFydGlhbF90aWxpbmcpLAogCX07CiAKIAlyZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgaTkx NSk7Ci0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=