From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 01/10] x86/early-quirks: Extend Intel graphics stolen memory placement to 64bit Date: Wed, 6 Dec 2017 18:17:21 +0000 Message-ID: <20171206181730.30551-2-matthew.auld@intel.com> References: <20171206181730.30551-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id E23B38997C for ; Wed, 6 Dec 2017 18:17:35 +0000 (UTC) In-Reply-To: <20171206181730.30551-1-matthew.auld@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 Cc: x86@kernel.org, Paulo Zanoni , linux-kernel@vger.kernel.org, "H . Peter Anvin" , Thomas Gleixner , Ingo Molnar List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgoK VG8gZ2l2ZSB1cGNvbWluZyBTS1UgQklPU2VzIG1vcmUgZmxleGliaWxpdHkgaW4gcGxhY2luZyB0 aGUgSW50ZWwKZ3JhcGhpY3Mgc3RvbGVuIG1lbW9yeSwgbWFrZSBhbGwgdmFyaWFibGVzIHN0b3Jp bmcgdGhlIHBsYWNlbWVudCBvciBzaXplCmNvbXBhdGlibGUgd2l0aCBmdWxsIDY0IGJpdCByYW5n ZS4gQWxzbyBieSBleHBvcnRpbmcgdGhlIHN0b2xlbiByZWdpb24KYXMgYSByZXNvdXJjZSwgd2Ug Y2FuIHRoZW4gbnVrZSB0aGUgZHVwbGljYXRlZCBzdG9sZW4gZGlzY292ZXJ5IGluIGk5MTUuCgp2 MjogZXhwb3J0IHRoZSBzdG9sZW4gcmVnaW9uIGFzIGEgcmVzb3VyY2UKICAgIGZpeCB1MTYgPDwg MTYgKENocmlzKQp2MzogYWN0dWFsbHkgZml4IHUxNiA8PCAxNgoKU2lnbmVkLW9mZi1ieTogSm9v bmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFo dGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqw6Rs w6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGlu dGVsLmNvbT4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpDYzogSW5n byBNb2xuYXIgPG1pbmdvQGtlcm5lbC5vcmc+CkNjOiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9y LmNvbT4KQ2M6IHg4NkBrZXJuZWwub3JnCkNjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4gI3Yx Ci0tLQogYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jIHwgODYgKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2RybS9pOTE1X2RybS5oICAgICAg ICAgfCAgMyArKwogMiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMgYi9hcmNo L3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMKaW5kZXggMWU4MmY3ODdjMTYwLi5kNzIzNmUyZjVl ZWQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9lYXJseS1xdWlya3MuYworKysgYi9hcmNo L3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMKQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgdm9p ZCBfX2luaXQgaW50ZWxfcmVtYXBwaW5nX2NoZWNrKGludCBudW0sIGludCBzbG90LCBpbnQgZnVu YykKICNkZWZpbmUgS0IoeCkJKCh4KSAqIDEwMjRVTCkKICNkZWZpbmUgTUIoeCkJKEtCIChLQiAo eCkpKQogCi1zdGF0aWMgc2l6ZV90IF9faW5pdCBpODMwX3RzZWdfc2l6ZSh2b2lkKQorc3RhdGlj IHJlc291cmNlX3NpemVfdCBfX2luaXQgaTgzMF90c2VnX3NpemUodm9pZCkKIHsKIAl1OCBlc21y YW1jID0gcmVhZF9wY2lfY29uZmlnX2J5dGUoMCwgMCwgMCwgSTgzMF9FU01SQU1DKTsKIApAQCAt MjU2LDcgKzI1Niw3IEBAIHN0YXRpYyBzaXplX3QgX19pbml0IGk4MzBfdHNlZ19zaXplKHZvaWQp CiAJCXJldHVybiBLQig1MTIpOwogfQogCi1zdGF0aWMgc2l6ZV90IF9faW5pdCBpODQ1X3RzZWdf c2l6ZSh2b2lkKQorc3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgaTg0NV90c2VnX3NpemUo dm9pZCkKIHsKIAl1OCBlc21yYW1jID0gcmVhZF9wY2lfY29uZmlnX2J5dGUoMCwgMCwgMCwgSTg0 NV9FU01SQU1DKTsKIAl1OCB0c2VnX3NpemUgPSBlc21yYW1jICYgSTg0NV9UU0VHX1NJWkVfTUFT SzsKQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGF0aWMgc2l6ZV90IF9faW5pdCBpODQ1X3RzZWdfc2l6 ZSh2b2lkKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc2l6ZV90IF9faW5pdCBpODV4X3RzZWdf c2l6ZSh2b2lkKQorc3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgaTg1eF90c2VnX3NpemUo dm9pZCkKIHsKIAl1OCBlc21yYW1jID0gcmVhZF9wY2lfY29uZmlnX2J5dGUoMCwgMCwgMCwgSTg1 WF9FU01SQU1DKTsKIApAQCAtMjgzLDEyICsyODMsMTIgQEAgc3RhdGljIHNpemVfdCBfX2luaXQg aTg1eF90c2VnX3NpemUodm9pZCkKIAlyZXR1cm4gTUIoMSk7CiB9CiAKLXN0YXRpYyBzaXplX3Qg X19pbml0IGk4MzBfbWVtX3NpemUodm9pZCkKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0 IGk4MzBfbWVtX3NpemUodm9pZCkKIHsKIAlyZXR1cm4gcmVhZF9wY2lfY29uZmlnX2J5dGUoMCwg MCwgMCwgSTgzMF9EUkIzKSAqIE1CKDMyKTsKIH0KIAotc3RhdGljIHNpemVfdCBfX2luaXQgaTg1 eF9tZW1fc2l6ZSh2b2lkKQorc3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgaTg1eF9tZW1f c2l6ZSh2b2lkKQogewogCXJldHVybiByZWFkX3BjaV9jb25maWdfYnl0ZSgwLCAwLCAxLCBJODVY X0RSQjMpICogTUIoMzIpOwogfQpAQCAtMjk3LDM2ICsyOTcsMzYgQEAgc3RhdGljIHNpemVfdCBf X2luaXQgaTg1eF9tZW1fc2l6ZSh2b2lkKQogICogT24gODMwLzg0NS84NXggdGhlIHN0b2xlbiBt ZW1vcnkgYmFzZSBpc24ndCBhdmFpbGFibGUgaW4gYW55CiAgKiByZWdpc3Rlci4gV2UgbmVlZCB0 byBjYWxjdWxhdGUgaXQgYXMgVE9NLVRTRUdfU0laRS1zdG9sZW5fc2l6ZS4KICAqLwotc3RhdGlj IHBoeXNfYWRkcl90IF9faW5pdCBpODMwX3N0b2xlbl9iYXNlKGludCBudW0sIGludCBzbG90LCBp bnQgZnVuYywKLQkJCQkJICAgc2l6ZV90IHN0b2xlbl9zaXplKQorc3RhdGljIHJlc291cmNlX3Np emVfdCBfX2luaXQgaTgzMF9zdG9sZW5fYmFzZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMs CisJCQkJCSAgICAgICByZXNvdXJjZV9zaXplX3Qgc3RvbGVuX3NpemUpCiB7Ci0JcmV0dXJuIChw aHlzX2FkZHJfdClpODMwX21lbV9zaXplKCkgLSBpODMwX3RzZWdfc2l6ZSgpIC0gc3RvbGVuX3Np emU7CisJcmV0dXJuIGk4MzBfbWVtX3NpemUoKSAtIGk4MzBfdHNlZ19zaXplKCkgLSBzdG9sZW5f c2l6ZTsKIH0KIAotc3RhdGljIHBoeXNfYWRkcl90IF9faW5pdCBpODQ1X3N0b2xlbl9iYXNlKGlu dCBudW0sIGludCBzbG90LCBpbnQgZnVuYywKLQkJCQkJICAgc2l6ZV90IHN0b2xlbl9zaXplKQor c3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgaTg0NV9zdG9sZW5fYmFzZShpbnQgbnVtLCBp bnQgc2xvdCwgaW50IGZ1bmMsCisJCQkJCSAgICAgICByZXNvdXJjZV9zaXplX3Qgc3RvbGVuX3Np emUpCiB7Ci0JcmV0dXJuIChwaHlzX2FkZHJfdClpODMwX21lbV9zaXplKCkgLSBpODQ1X3RzZWdf c2l6ZSgpIC0gc3RvbGVuX3NpemU7CisJcmV0dXJuIGk4MzBfbWVtX3NpemUoKSAtIGk4NDVfdHNl Z19zaXplKCkgLSBzdG9sZW5fc2l6ZTsKIH0KIAotc3RhdGljIHBoeXNfYWRkcl90IF9faW5pdCBp ODV4X3N0b2xlbl9iYXNlKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYywKLQkJCQkJICAgc2l6 ZV90IHN0b2xlbl9zaXplKQorc3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgaTg1eF9zdG9s ZW5fYmFzZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCisJCQkJCSAgICAgICByZXNvdXJj ZV9zaXplX3Qgc3RvbGVuX3NpemUpCiB7Ci0JcmV0dXJuIChwaHlzX2FkZHJfdClpODV4X21lbV9z aXplKCkgLSBpODV4X3RzZWdfc2l6ZSgpIC0gc3RvbGVuX3NpemU7CisJcmV0dXJuIGk4NXhfbWVt X3NpemUoKSAtIGk4NXhfdHNlZ19zaXplKCkgLSBzdG9sZW5fc2l6ZTsKIH0KIAotc3RhdGljIHBo eXNfYWRkcl90IF9faW5pdCBpODY1X3N0b2xlbl9iYXNlKGludCBudW0sIGludCBzbG90LCBpbnQg ZnVuYywKLQkJCQkJICAgc2l6ZV90IHN0b2xlbl9zaXplKQorc3RhdGljIHJlc291cmNlX3NpemVf dCBfX2luaXQgaTg2NV9zdG9sZW5fYmFzZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCisJ CQkJCSAgICAgICByZXNvdXJjZV9zaXplX3Qgc3RvbGVuX3NpemUpCiB7CiAJdTE2IHRvdWQgPSAw OwogCiAJdG91ZCA9IHJlYWRfcGNpX2NvbmZpZ18xNigwLCAwLCAwLCBJODY1X1RPVUQpOwogCi0J cmV0dXJuIChwaHlzX2FkZHJfdCkodG91ZCA8PCAxNikgKyBpODQ1X3RzZWdfc2l6ZSgpOworCXJl dHVybiAodG91ZCAqIEtCKDY0KSkgKyBpODQ1X3RzZWdfc2l6ZSgpOwogfQogCi1zdGF0aWMgcGh5 c19hZGRyX3QgX19pbml0IGdlbjNfc3RvbGVuX2Jhc2UoaW50IG51bSwgaW50IHNsb3QsIGludCBm dW5jLAotCQkJCQkgICBzaXplX3Qgc3RvbGVuX3NpemUpCitzdGF0aWMgcmVzb3VyY2Vfc2l6ZV90 IF9faW5pdCBnZW4zX3N0b2xlbl9iYXNlKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYywKKwkJ CQkJICAgICAgIHJlc291cmNlX3NpemVfdCBzdG9sZW5fc2l6ZSkKIHsKIAl1MzIgYnNtOwogCkBA IC0zMzcsMTAgKzMzNywxMCBAQCBzdGF0aWMgcGh5c19hZGRyX3QgX19pbml0IGdlbjNfc3RvbGVu X2Jhc2UoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jLAogCSAqLwogCWJzbSA9IHJlYWRfcGNp X2NvbmZpZyhudW0sIHNsb3QsIGZ1bmMsIElOVEVMX0JTTSk7CiAKLQlyZXR1cm4gKHBoeXNfYWRk cl90KWJzbSAmIElOVEVMX0JTTV9NQVNLOworCXJldHVybiBic20gJiBJTlRFTF9CU01fTUFTSzsK IH0KIAotc3RhdGljIHNpemVfdCBfX2luaXQgaTgzMF9zdG9sZW5fc2l6ZShpbnQgbnVtLCBpbnQg c2xvdCwgaW50IGZ1bmMpCitzdGF0aWMgcmVzb3VyY2Vfc2l6ZV90IF9faW5pdCBpODMwX3N0b2xl bl9zaXplKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIHsKIAl1MTYgZ21jaF9jdHJsOwog CXUxNiBnbXM7CkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIHNpemVfdCBfX2luaXQgaTgzMF9z dG9sZW5fc2l6ZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyBzaXplX3QgX19pbml0IGdlbjNfc3RvbGVuX3NpemUoaW50IG51bSwgaW50IHNsb3Qs IGludCBmdW5jKQorc3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgZ2VuM19zdG9sZW5fc2l6 ZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpCiB7CiAJdTE2IGdtY2hfY3RybDsKIAl1MTYg Z21zOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHN0YXRpYyBzaXplX3QgX19pbml0IGdlbjNfc3RvbGVu X3NpemUoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogCXJldHVybiAwOwogfQogCi1zdGF0 aWMgc2l6ZV90IF9faW5pdCBnZW42X3N0b2xlbl9zaXplKGludCBudW0sIGludCBzbG90LCBpbnQg ZnVuYykKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGdlbjZfc3RvbGVuX3NpemUoaW50 IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogewogCXUxNiBnbWNoX2N0cmw7CiAJdTE2IGdtczsK QEAgLTM5OCwxMCArMzk4LDEwIEBAIHN0YXRpYyBzaXplX3QgX19pbml0IGdlbjZfc3RvbGVuX3Np emUoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogCWdtY2hfY3RybCA9IHJlYWRfcGNpX2Nv bmZpZ18xNihudW0sIHNsb3QsIGZ1bmMsIFNOQl9HTUNIX0NUUkwpOwogCWdtcyA9IChnbWNoX2N0 cmwgPj4gU05CX0dNQ0hfR01TX1NISUZUKSAmIFNOQl9HTUNIX0dNU19NQVNLOwogCi0JcmV0dXJu IChzaXplX3QpZ21zICogTUIoMzIpOworCXJldHVybiBnbXMgKiBNQigzMik7CiB9CiAKLXN0YXRp YyBzaXplX3QgX19pbml0IGdlbjhfc3RvbGVuX3NpemUoaW50IG51bSwgaW50IHNsb3QsIGludCBm dW5jKQorc3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgZ2VuOF9zdG9sZW5fc2l6ZShpbnQg bnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpCiB7CiAJdTE2IGdtY2hfY3RybDsKIAl1MTYgZ21zOwpA QCAtNDA5LDEwICs0MDksMTAgQEAgc3RhdGljIHNpemVfdCBfX2luaXQgZ2VuOF9zdG9sZW5fc2l6 ZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpCiAJZ21jaF9jdHJsID0gcmVhZF9wY2lfY29u ZmlnXzE2KG51bSwgc2xvdCwgZnVuYywgU05CX0dNQ0hfQ1RSTCk7CiAJZ21zID0gKGdtY2hfY3Ry bCA+PiBCRFdfR01DSF9HTVNfU0hJRlQpICYgQkRXX0dNQ0hfR01TX01BU0s7CiAKLQlyZXR1cm4g KHNpemVfdClnbXMgKiBNQigzMik7CisJcmV0dXJuIGdtcyAqIE1CKDMyKTsKIH0KIAotc3RhdGlj IHNpemVfdCBfX2luaXQgY2h2X3N0b2xlbl9zaXplKGludCBudW0sIGludCBzbG90LCBpbnQgZnVu YykKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGNodl9zdG9sZW5fc2l6ZShpbnQgbnVt LCBpbnQgc2xvdCwgaW50IGZ1bmMpCiB7CiAJdTE2IGdtY2hfY3RybDsKIAl1MTYgZ21zOwpAQCAt NDI2LDE0ICs0MjYsMTQgQEAgc3RhdGljIHNpemVfdCBfX2luaXQgY2h2X3N0b2xlbl9zaXplKGlu dCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIAkgKiAweDE3IHRvIDB4MWQ6IDRNQiBpbmNyZW1l bnRzIHN0YXJ0IGF0IDM2TUIKIAkgKi8KIAlpZiAoZ21zIDwgMHgxMSkKLQkJcmV0dXJuIChzaXpl X3QpZ21zICogTUIoMzIpOworCQlyZXR1cm4gZ21zICogTUIoMzIpOwogCWVsc2UgaWYgKGdtcyA8 IDB4MTcpCi0JCXJldHVybiAoc2l6ZV90KShnbXMgLSAweDExICsgMikgKiBNQig0KTsKKwkJcmV0 dXJuIChnbXMgLSAweDExICsgMikgKiBNQig0KTsKIAllbHNlCi0JCXJldHVybiAoc2l6ZV90KShn bXMgLSAweDE3ICsgOSkgKiBNQig0KTsKKwkJcmV0dXJuIChnbXMgLSAweDE3ICsgOSkgKiBNQig0 KTsKIH0KIAotc3RhdGljIHNpemVfdCBfX2luaXQgZ2VuOV9zdG9sZW5fc2l6ZShpbnQgbnVtLCBp bnQgc2xvdCwgaW50IGZ1bmMpCitzdGF0aWMgcmVzb3VyY2Vfc2l6ZV90IF9faW5pdCBnZW45X3N0 b2xlbl9zaXplKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIHsKIAl1MTYgZ21jaF9jdHJs OwogCXUxNiBnbXM7CkBAIC00NDQsMTQgKzQ0NCwxNSBAQCBzdGF0aWMgc2l6ZV90IF9faW5pdCBn ZW45X3N0b2xlbl9zaXplKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIAkvKiAweDAgIHRv IDB4ZWY6IDMyTUIgaW5jcmVtZW50cyBzdGFydGluZyBhdCAwTUIgKi8KIAkvKiAweGYwIHRvIDB4 ZmU6IDRNQiBpbmNyZW1lbnRzIHN0YXJ0aW5nIGF0IDRNQiAqLwogCWlmIChnbXMgPCAweGYwKQot CQlyZXR1cm4gKHNpemVfdClnbXMgKiBNQigzMik7CisJCXJldHVybiBnbXMgKiBNQigzMik7CiAJ ZWxzZQotCQlyZXR1cm4gKHNpemVfdCkoZ21zIC0gMHhmMCArIDEpICogTUIoNCk7CisJCXJldHVy biAoZ21zIC0gMHhmMCArIDEpICogTUIoNCk7CiB9CiAKIHN0cnVjdCBpbnRlbF9lYXJseV9vcHMg ewotCXNpemVfdCAoKnN0b2xlbl9zaXplKShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpOwot CXBoeXNfYWRkcl90ICgqc3RvbGVuX2Jhc2UpKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYywg c2l6ZV90IHNpemUpOworCXJlc291cmNlX3NpemVfdCAoKnN0b2xlbl9zaXplKShpbnQgbnVtLCBp bnQgc2xvdCwgaW50IGZ1bmMpOworCXJlc291cmNlX3NpemVfdCAoKnN0b2xlbl9iYXNlKShpbnQg bnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCisJCQkJICAgICAgIHJlc291cmNlX3NpemVfdCBzaXpl KTsKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZWFybHlfb3BzIGk4MzBfZWFybHlf b3BzIF9faW5pdGNvbnN0ID0gewpAQCAtNTMxLDEyICs1MzIsMTUgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBwY2lfZGV2aWNlX2lkIGludGVsX2Vhcmx5X2lkc1tdIF9faW5pdGNvbnN0ID0gewogCUlO VEVMX0NOTF9JRFMoJmdlbjlfZWFybHlfb3BzKSwKIH07CiAKK3N0cnVjdCByZXNvdXJjZSBpbnRl bF9ncmFwaGljc19zdG9sZW5fcmVzID0gREVGSU5FX1JFU19NRU0oMCwgMCk7CitFWFBPUlRfU1lN Qk9MKGludGVsX2dyYXBoaWNzX3N0b2xlbl9yZXMpOworCiBzdGF0aWMgdm9pZCBfX2luaXQKIGlu dGVsX2dyYXBoaWNzX3N0b2xlbihpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCiAJCSAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9lYXJseV9vcHMgKmVhcmx5X29wcykKIHsKLQlwaHlzX2FkZHJf dCBiYXNlLCBlbmQ7Ci0Jc2l6ZV90IHNpemU7CisJcmVzb3VyY2Vfc2l6ZV90IGJhc2UsIHNpemU7 CisJcmVzb3VyY2Vfc2l6ZV90IGVuZDsKIAogCXNpemUgPSBlYXJseV9vcHMtPnN0b2xlbl9zaXpl KG51bSwgc2xvdCwgZnVuYyk7CiAJYmFzZSA9IGVhcmx5X29wcy0+c3RvbGVuX2Jhc2UobnVtLCBz bG90LCBmdW5jLCBzaXplKTsKQEAgLTU0NSw4ICs1NDksMTIgQEAgaW50ZWxfZ3JhcGhpY3Nfc3Rv bGVuKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYywKIAkJcmV0dXJuOwogCiAJZW5kID0gYmFz ZSArIHNpemUgLSAxOwotCXByaW50ayhLRVJOX0lORk8gIlJlc2VydmluZyBJbnRlbCBncmFwaGlj cyBtZW1vcnkgYXQgJXBhLSVwYVxuIiwKLQkgICAgICAgJmJhc2UsICZlbmQpOworCisJaW50ZWxf Z3JhcGhpY3Nfc3RvbGVuX3Jlcy5zdGFydCA9IGJhc2U7CisJaW50ZWxfZ3JhcGhpY3Nfc3RvbGVu X3Jlcy5lbmQgPSBlbmQ7CisKKwlwcmludGsoS0VSTl9JTkZPICJSZXNlcnZpbmcgSW50ZWwgZ3Jh cGhpY3MgbWVtb3J5IGF0ICVwUlxuIiwKKwkgICAgICAgJmludGVsX2dyYXBoaWNzX3N0b2xlbl9y ZXMpOwogCiAJLyogTWFyayB0aGlzIHNwYWNlIGFzIHJlc2VydmVkICovCiAJZTgyMF9fcmFuZ2Vf YWRkKGJhc2UsIHNpemUsIEU4MjBfVFlQRV9SRVNFUlZFRCk7CmRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaAppbmRleCA0ZTFiMjc0ZTEx NjQuLmM5ZTVhNjYyMWI5NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaAorKysg Yi9pbmNsdWRlL2RybS9pOTE1X2RybS5oCkBAIC0zNiw2ICszNiw5IEBAIGV4dGVybiBib29sIGk5 MTVfZ3B1X2xvd2VyKHZvaWQpOwogZXh0ZXJuIGJvb2wgaTkxNV9ncHVfYnVzeSh2b2lkKTsKIGV4 dGVybiBib29sIGk5MTVfZ3B1X3R1cmJvX2Rpc2FibGUodm9pZCk7CiAKKy8qIEV4cG9ydGVkIGZy b20gYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jICovCitleHRlcm4gc3RydWN0IHJlc291 cmNlIGludGVsX2dyYXBoaWNzX3N0b2xlbl9yZXM7CisKIC8qCiAgKiBUaGUgQnJpZGdlIGRldmlj ZSdzIFBDSSBjb25maWcgc3BhY2UgaGFzIGluZm9ybWF0aW9uIGFib3V0IHRoZQogICogZmIgYXBl cnR1cmUgc2l6ZSBhbmQgdGhlIGFtb3VudCBvZiBwcmUtcmVzZXJ2ZWQgbWVtb3J5LgotLSAKMi4x NC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752320AbdLFSRk (ORCPT ); Wed, 6 Dec 2017 13:17:40 -0500 Received: from mga02.intel.com ([134.134.136.20]:59398 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752034AbdLFSRg (ORCPT ); Wed, 6 Dec 2017 13:17:36 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,369,1508828400"; d="scan'208";a="681865" From: Matthew Auld To: intel-gfx@lists.freedesktop.org Cc: Joonas Lahtinen , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Chris Wilson , Paulo Zanoni , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 01/10] x86/early-quirks: Extend Intel graphics stolen memory placement to 64bit Date: Wed, 6 Dec 2017 18:17:21 +0000 Message-Id: <20171206181730.30551-2-matthew.auld@intel.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171206181730.30551-1-matthew.auld@intel.com> References: <20171206181730.30551-1-matthew.auld@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joonas Lahtinen To give upcoming SKU BIOSes more flexibility in placing the Intel graphics stolen memory, make all variables storing the placement or size compatible with full 64 bit range. Also by exporting the stolen region as a resource, we can then nuke the duplicated stolen discovery in i915. v2: export the stolen region as a resource fix u16 << 16 (Chris) v3: actually fix u16 << 16 Signed-off-by: Joonas Lahtinen Signed-off-by: Matthew Auld Cc: Joonas Lahtinen Cc: Ville Syrjälä Cc: Chris Wilson Cc: Paulo Zanoni Cc: Thomas Gleixner Cc: Ingo Molnar Cc: H. Peter Anvin Cc: x86@kernel.org Cc: linux-kernel@vger.kernel.org Reviewed-by: Chris Wilson #v1 --- arch/x86/kernel/early-quirks.c | 86 +++++++++++++++++++++++------------------- include/drm/i915_drm.h | 3 ++ 2 files changed, 50 insertions(+), 39 deletions(-) diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c index 1e82f787c160..d7236e2f5eed 100644 --- a/arch/x86/kernel/early-quirks.c +++ b/arch/x86/kernel/early-quirks.c @@ -243,7 +243,7 @@ static void __init intel_remapping_check(int num, int slot, int func) #define KB(x) ((x) * 1024UL) #define MB(x) (KB (KB (x))) -static size_t __init i830_tseg_size(void) +static resource_size_t __init i830_tseg_size(void) { u8 esmramc = read_pci_config_byte(0, 0, 0, I830_ESMRAMC); @@ -256,7 +256,7 @@ static size_t __init i830_tseg_size(void) return KB(512); } -static size_t __init i845_tseg_size(void) +static resource_size_t __init i845_tseg_size(void) { u8 esmramc = read_pci_config_byte(0, 0, 0, I845_ESMRAMC); u8 tseg_size = esmramc & I845_TSEG_SIZE_MASK; @@ -273,7 +273,7 @@ static size_t __init i845_tseg_size(void) return 0; } -static size_t __init i85x_tseg_size(void) +static resource_size_t __init i85x_tseg_size(void) { u8 esmramc = read_pci_config_byte(0, 0, 0, I85X_ESMRAMC); @@ -283,12 +283,12 @@ static size_t __init i85x_tseg_size(void) return MB(1); } -static size_t __init i830_mem_size(void) +static resource_size_t __init i830_mem_size(void) { return read_pci_config_byte(0, 0, 0, I830_DRB3) * MB(32); } -static size_t __init i85x_mem_size(void) +static resource_size_t __init i85x_mem_size(void) { return read_pci_config_byte(0, 0, 1, I85X_DRB3) * MB(32); } @@ -297,36 +297,36 @@ static size_t __init i85x_mem_size(void) * On 830/845/85x the stolen memory base isn't available in any * register. We need to calculate it as TOM-TSEG_SIZE-stolen_size. */ -static phys_addr_t __init i830_stolen_base(int num, int slot, int func, - size_t stolen_size) +static resource_size_t __init i830_stolen_base(int num, int slot, int func, + resource_size_t stolen_size) { - return (phys_addr_t)i830_mem_size() - i830_tseg_size() - stolen_size; + return i830_mem_size() - i830_tseg_size() - stolen_size; } -static phys_addr_t __init i845_stolen_base(int num, int slot, int func, - size_t stolen_size) +static resource_size_t __init i845_stolen_base(int num, int slot, int func, + resource_size_t stolen_size) { - return (phys_addr_t)i830_mem_size() - i845_tseg_size() - stolen_size; + return i830_mem_size() - i845_tseg_size() - stolen_size; } -static phys_addr_t __init i85x_stolen_base(int num, int slot, int func, - size_t stolen_size) +static resource_size_t __init i85x_stolen_base(int num, int slot, int func, + resource_size_t stolen_size) { - return (phys_addr_t)i85x_mem_size() - i85x_tseg_size() - stolen_size; + return i85x_mem_size() - i85x_tseg_size() - stolen_size; } -static phys_addr_t __init i865_stolen_base(int num, int slot, int func, - size_t stolen_size) +static resource_size_t __init i865_stolen_base(int num, int slot, int func, + resource_size_t stolen_size) { u16 toud = 0; toud = read_pci_config_16(0, 0, 0, I865_TOUD); - return (phys_addr_t)(toud << 16) + i845_tseg_size(); + return (toud * KB(64)) + i845_tseg_size(); } -static phys_addr_t __init gen3_stolen_base(int num, int slot, int func, - size_t stolen_size) +static resource_size_t __init gen3_stolen_base(int num, int slot, int func, + resource_size_t stolen_size) { u32 bsm; @@ -337,10 +337,10 @@ static phys_addr_t __init gen3_stolen_base(int num, int slot, int func, */ bsm = read_pci_config(num, slot, func, INTEL_BSM); - return (phys_addr_t)bsm & INTEL_BSM_MASK; + return bsm & INTEL_BSM_MASK; } -static size_t __init i830_stolen_size(int num, int slot, int func) +static resource_size_t __init i830_stolen_size(int num, int slot, int func) { u16 gmch_ctrl; u16 gms; @@ -361,7 +361,7 @@ static size_t __init i830_stolen_size(int num, int slot, int func) return 0; } -static size_t __init gen3_stolen_size(int num, int slot, int func) +static resource_size_t __init gen3_stolen_size(int num, int slot, int func) { u16 gmch_ctrl; u16 gms; @@ -390,7 +390,7 @@ static size_t __init gen3_stolen_size(int num, int slot, int func) return 0; } -static size_t __init gen6_stolen_size(int num, int slot, int func) +static resource_size_t __init gen6_stolen_size(int num, int slot, int func) { u16 gmch_ctrl; u16 gms; @@ -398,10 +398,10 @@ static size_t __init gen6_stolen_size(int num, int slot, int func) gmch_ctrl = read_pci_config_16(num, slot, func, SNB_GMCH_CTRL); gms = (gmch_ctrl >> SNB_GMCH_GMS_SHIFT) & SNB_GMCH_GMS_MASK; - return (size_t)gms * MB(32); + return gms * MB(32); } -static size_t __init gen8_stolen_size(int num, int slot, int func) +static resource_size_t __init gen8_stolen_size(int num, int slot, int func) { u16 gmch_ctrl; u16 gms; @@ -409,10 +409,10 @@ static size_t __init gen8_stolen_size(int num, int slot, int func) gmch_ctrl = read_pci_config_16(num, slot, func, SNB_GMCH_CTRL); gms = (gmch_ctrl >> BDW_GMCH_GMS_SHIFT) & BDW_GMCH_GMS_MASK; - return (size_t)gms * MB(32); + return gms * MB(32); } -static size_t __init chv_stolen_size(int num, int slot, int func) +static resource_size_t __init chv_stolen_size(int num, int slot, int func) { u16 gmch_ctrl; u16 gms; @@ -426,14 +426,14 @@ static size_t __init chv_stolen_size(int num, int slot, int func) * 0x17 to 0x1d: 4MB increments start at 36MB */ if (gms < 0x11) - return (size_t)gms * MB(32); + return gms * MB(32); else if (gms < 0x17) - return (size_t)(gms - 0x11 + 2) * MB(4); + return (gms - 0x11 + 2) * MB(4); else - return (size_t)(gms - 0x17 + 9) * MB(4); + return (gms - 0x17 + 9) * MB(4); } -static size_t __init gen9_stolen_size(int num, int slot, int func) +static resource_size_t __init gen9_stolen_size(int num, int slot, int func) { u16 gmch_ctrl; u16 gms; @@ -444,14 +444,15 @@ static size_t __init gen9_stolen_size(int num, int slot, int func) /* 0x0 to 0xef: 32MB increments starting at 0MB */ /* 0xf0 to 0xfe: 4MB increments starting at 4MB */ if (gms < 0xf0) - return (size_t)gms * MB(32); + return gms * MB(32); else - return (size_t)(gms - 0xf0 + 1) * MB(4); + return (gms - 0xf0 + 1) * MB(4); } struct intel_early_ops { - size_t (*stolen_size)(int num, int slot, int func); - phys_addr_t (*stolen_base)(int num, int slot, int func, size_t size); + resource_size_t (*stolen_size)(int num, int slot, int func); + resource_size_t (*stolen_base)(int num, int slot, int func, + resource_size_t size); }; static const struct intel_early_ops i830_early_ops __initconst = { @@ -531,12 +532,15 @@ static const struct pci_device_id intel_early_ids[] __initconst = { INTEL_CNL_IDS(&gen9_early_ops), }; +struct resource intel_graphics_stolen_res = DEFINE_RES_MEM(0, 0); +EXPORT_SYMBOL(intel_graphics_stolen_res); + static void __init intel_graphics_stolen(int num, int slot, int func, const struct intel_early_ops *early_ops) { - phys_addr_t base, end; - size_t size; + resource_size_t base, size; + resource_size_t end; size = early_ops->stolen_size(num, slot, func); base = early_ops->stolen_base(num, slot, func, size); @@ -545,8 +549,12 @@ intel_graphics_stolen(int num, int slot, int func, return; end = base + size - 1; - printk(KERN_INFO "Reserving Intel graphics memory at %pa-%pa\n", - &base, &end); + + intel_graphics_stolen_res.start = base; + intel_graphics_stolen_res.end = end; + + printk(KERN_INFO "Reserving Intel graphics memory at %pR\n", + &intel_graphics_stolen_res); /* Mark this space as reserved */ e820__range_add(base, size, E820_TYPE_RESERVED); diff --git a/include/drm/i915_drm.h b/include/drm/i915_drm.h index 4e1b274e1164..c9e5a6621b95 100644 --- a/include/drm/i915_drm.h +++ b/include/drm/i915_drm.h @@ -36,6 +36,9 @@ extern bool i915_gpu_lower(void); extern bool i915_gpu_busy(void); extern bool i915_gpu_turbo_disable(void); +/* Exported from arch/x86/kernel/early-quirks.c */ +extern struct resource intel_graphics_stolen_res; + /* * The Bridge device's PCI config space has information about the * fb aperture size and the amount of pre-reserved memory. -- 2.14.3