From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 1/8] x86/early-quirks: Extend Intel graphics stolen memory placement to 64bit Date: Mon, 11 Dec 2017 12:14:20 +0000 Message-ID: <20171211121427.26205-2-matthew.auld@intel.com> References: <20171211121427.26205-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6E4536E1A5 for ; Mon, 11 Dec 2017 12:14:31 +0000 (UTC) In-Reply-To: <20171211121427.26205-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 Y2FuIHRoZW4gbnVrZSB0aGUgZHVwbGljYXRlZCBzdG9sZW4gZGlzY292ZXJ5IGluIGk5MTUuCgpT aWduZWQtb2ZmLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNv bT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4K Q2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFBhdWxvIFphbm9uaSA8 cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgpDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0 cm9uaXguZGU+CkNjOiBJbmdvIE1vbG5hciA8bWluZ29Aa2VybmVsLm9yZz4KQ2M6IEguIFBldGVy IEFudmluIDxocGFAenl0b3IuY29tPgpDYzogeDg2QGtlcm5lbC5vcmcKQ2M6IGxpbnV4LWtlcm5l bEB2Z2VyLmtlcm5lbC5vcmcKUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPiAjdjMKLS0tCgp2MjogZXhwb3J0IHRoZSBzdG9sZW4gcmVnaW9uIGFzIGEg cmVzb3VyY2UKICAgIGZpeCB1MTYgPDwgMTYgKENocmlzKQp2MzogYWN0dWFsbHkgZml4IHUxNiA8 PCAxNgp2NDogbWFyayBpbnRlbF9ncmFwaGljc19zdG9sZW5fcmVzIGFzIF9fcm9fYWZ0ZXJfaW5p dCAoVGhvbWFzKQoKIGFyY2gveDg2L2tlcm5lbC9lYXJseS1xdWlya3MuYyB8IDg2ICsrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9kcm0vaTkxNV9kcm0u aCAgICAgICAgIHwgIDMgKysKIDIgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMzkg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5j IGIvYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jCmluZGV4IDFlODJmNzg3YzE2MC4uNmMx NjI0ODg5MDExIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMKKysr IGIvYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jCkBAIC0yNDMsNyArMjQzLDcgQEAgc3Rh dGljIHZvaWQgX19pbml0IGludGVsX3JlbWFwcGluZ19jaGVjayhpbnQgbnVtLCBpbnQgc2xvdCwg aW50IGZ1bmMpCiAjZGVmaW5lIEtCKHgpCSgoeCkgKiAxMDI0VUwpCiAjZGVmaW5lIE1CKHgpCShL QiAoS0IgKHgpKSkKIAotc3RhdGljIHNpemVfdCBfX2luaXQgaTgzMF90c2VnX3NpemUodm9pZCkK K3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGk4MzBfdHNlZ19zaXplKHZvaWQpCiB7CiAJ dTggZXNtcmFtYyA9IHJlYWRfcGNpX2NvbmZpZ19ieXRlKDAsIDAsIDAsIEk4MzBfRVNNUkFNQyk7 CiAKQEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0aWMgc2l6ZV90IF9faW5pdCBpODMwX3RzZWdfc2l6 ZSh2b2lkKQogCQlyZXR1cm4gS0IoNTEyKTsKIH0KIAotc3RhdGljIHNpemVfdCBfX2luaXQgaTg0 NV90c2VnX3NpemUodm9pZCkKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGk4NDVfdHNl Z19zaXplKHZvaWQpCiB7CiAJdTggZXNtcmFtYyA9IHJlYWRfcGNpX2NvbmZpZ19ieXRlKDAsIDAs IDAsIEk4NDVfRVNNUkFNQyk7CiAJdTggdHNlZ19zaXplID0gZXNtcmFtYyAmIEk4NDVfVFNFR19T SVpFX01BU0s7CkBAIC0yNzMsNyArMjczLDcgQEAgc3RhdGljIHNpemVfdCBfX2luaXQgaTg0NV90 c2VnX3NpemUodm9pZCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHNpemVfdCBfX2luaXQgaTg1 eF90c2VnX3NpemUodm9pZCkKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGk4NXhfdHNl Z19zaXplKHZvaWQpCiB7CiAJdTggZXNtcmFtYyA9IHJlYWRfcGNpX2NvbmZpZ19ieXRlKDAsIDAs IDAsIEk4NVhfRVNNUkFNQyk7CiAKQEAgLTI4MywxMiArMjgzLDEyIEBAIHN0YXRpYyBzaXplX3Qg X19pbml0IGk4NXhfdHNlZ19zaXplKHZvaWQpCiAJcmV0dXJuIE1CKDEpOwogfQogCi1zdGF0aWMg c2l6ZV90IF9faW5pdCBpODMwX21lbV9zaXplKHZvaWQpCitzdGF0aWMgcmVzb3VyY2Vfc2l6ZV90 IF9faW5pdCBpODMwX21lbV9zaXplKHZvaWQpCiB7CiAJcmV0dXJuIHJlYWRfcGNpX2NvbmZpZ19i eXRlKDAsIDAsIDAsIEk4MzBfRFJCMykgKiBNQigzMik7CiB9CiAKLXN0YXRpYyBzaXplX3QgX19p bml0IGk4NXhfbWVtX3NpemUodm9pZCkKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGk4 NXhfbWVtX3NpemUodm9pZCkKIHsKIAlyZXR1cm4gcmVhZF9wY2lfY29uZmlnX2J5dGUoMCwgMCwg MSwgSTg1WF9EUkIzKSAqIE1CKDMyKTsKIH0KQEAgLTI5NywzNiArMjk3LDM2IEBAIHN0YXRpYyBz aXplX3QgX19pbml0IGk4NXhfbWVtX3NpemUodm9pZCkKICAqIE9uIDgzMC84NDUvODV4IHRoZSBz dG9sZW4gbWVtb3J5IGJhc2UgaXNuJ3QgYXZhaWxhYmxlIGluIGFueQogICogcmVnaXN0ZXIuIFdl IG5lZWQgdG8gY2FsY3VsYXRlIGl0IGFzIFRPTS1UU0VHX1NJWkUtc3RvbGVuX3NpemUuCiAgKi8K LXN0YXRpYyBwaHlzX2FkZHJfdCBfX2luaXQgaTgzMF9zdG9sZW5fYmFzZShpbnQgbnVtLCBpbnQg c2xvdCwgaW50IGZ1bmMsCi0JCQkJCSAgIHNpemVfdCBzdG9sZW5fc2l6ZSkKK3N0YXRpYyByZXNv dXJjZV9zaXplX3QgX19pbml0IGk4MzBfc3RvbGVuX2Jhc2UoaW50IG51bSwgaW50IHNsb3QsIGlu dCBmdW5jLAorCQkJCQkgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHN0b2xlbl9zaXplKQogewotCXJl dHVybiAocGh5c19hZGRyX3QpaTgzMF9tZW1fc2l6ZSgpIC0gaTgzMF90c2VnX3NpemUoKSAtIHN0 b2xlbl9zaXplOworCXJldHVybiBpODMwX21lbV9zaXplKCkgLSBpODMwX3RzZWdfc2l6ZSgpIC0g c3RvbGVuX3NpemU7CiB9CiAKLXN0YXRpYyBwaHlzX2FkZHJfdCBfX2luaXQgaTg0NV9zdG9sZW5f YmFzZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCi0JCQkJCSAgIHNpemVfdCBzdG9sZW5f c2l6ZSkKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGk4NDVfc3RvbGVuX2Jhc2UoaW50 IG51bSwgaW50IHNsb3QsIGludCBmdW5jLAorCQkJCQkgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHN0 b2xlbl9zaXplKQogewotCXJldHVybiAocGh5c19hZGRyX3QpaTgzMF9tZW1fc2l6ZSgpIC0gaTg0 NV90c2VnX3NpemUoKSAtIHN0b2xlbl9zaXplOworCXJldHVybiBpODMwX21lbV9zaXplKCkgLSBp ODQ1X3RzZWdfc2l6ZSgpIC0gc3RvbGVuX3NpemU7CiB9CiAKLXN0YXRpYyBwaHlzX2FkZHJfdCBf X2luaXQgaTg1eF9zdG9sZW5fYmFzZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCi0JCQkJ CSAgIHNpemVfdCBzdG9sZW5fc2l6ZSkKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGk4 NXhfc3RvbGVuX2Jhc2UoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jLAorCQkJCQkgICAgICAg cmVzb3VyY2Vfc2l6ZV90IHN0b2xlbl9zaXplKQogewotCXJldHVybiAocGh5c19hZGRyX3QpaTg1 eF9tZW1fc2l6ZSgpIC0gaTg1eF90c2VnX3NpemUoKSAtIHN0b2xlbl9zaXplOworCXJldHVybiBp ODV4X21lbV9zaXplKCkgLSBpODV4X3RzZWdfc2l6ZSgpIC0gc3RvbGVuX3NpemU7CiB9CiAKLXN0 YXRpYyBwaHlzX2FkZHJfdCBfX2luaXQgaTg2NV9zdG9sZW5fYmFzZShpbnQgbnVtLCBpbnQgc2xv dCwgaW50IGZ1bmMsCi0JCQkJCSAgIHNpemVfdCBzdG9sZW5fc2l6ZSkKK3N0YXRpYyByZXNvdXJj ZV9zaXplX3QgX19pbml0IGk4NjVfc3RvbGVuX2Jhc2UoaW50IG51bSwgaW50IHNsb3QsIGludCBm dW5jLAorCQkJCQkgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHN0b2xlbl9zaXplKQogewogCXUxNiB0 b3VkID0gMDsKIAogCXRvdWQgPSByZWFkX3BjaV9jb25maWdfMTYoMCwgMCwgMCwgSTg2NV9UT1VE KTsKIAotCXJldHVybiAocGh5c19hZGRyX3QpKHRvdWQgPDwgMTYpICsgaTg0NV90c2VnX3NpemUo KTsKKwlyZXR1cm4gdG91ZCAqIEtCKDY0KSArIGk4NDVfdHNlZ19zaXplKCk7CiB9CiAKLXN0YXRp YyBwaHlzX2FkZHJfdCBfX2luaXQgZ2VuM19zdG9sZW5fYmFzZShpbnQgbnVtLCBpbnQgc2xvdCwg aW50IGZ1bmMsCi0JCQkJCSAgIHNpemVfdCBzdG9sZW5fc2l6ZSkKK3N0YXRpYyByZXNvdXJjZV9z aXplX3QgX19pbml0IGdlbjNfc3RvbGVuX2Jhc2UoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5j LAorCQkJCQkgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHN0b2xlbl9zaXplKQogewogCXUzMiBic207 CiAKQEAgLTMzNywxMCArMzM3LDEwIEBAIHN0YXRpYyBwaHlzX2FkZHJfdCBfX2luaXQgZ2VuM19z dG9sZW5fYmFzZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCiAJICovCiAJYnNtID0gcmVh ZF9wY2lfY29uZmlnKG51bSwgc2xvdCwgZnVuYywgSU5URUxfQlNNKTsKIAotCXJldHVybiAocGh5 c19hZGRyX3QpYnNtICYgSU5URUxfQlNNX01BU0s7CisJcmV0dXJuIGJzbSAmIElOVEVMX0JTTV9N QVNLOwogfQogCi1zdGF0aWMgc2l6ZV90IF9faW5pdCBpODMwX3N0b2xlbl9zaXplKGludCBudW0s IGludCBzbG90LCBpbnQgZnVuYykKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGk4MzBf c3RvbGVuX3NpemUoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogewogCXUxNiBnbWNoX2N0 cmw7CiAJdTE2IGdtczsKQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgc2l6ZV90IF9faW5pdCBp ODMwX3N0b2xlbl9zaXplKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIAlyZXR1cm4gMDsK IH0KIAotc3RhdGljIHNpemVfdCBfX2luaXQgZ2VuM19zdG9sZW5fc2l6ZShpbnQgbnVtLCBpbnQg c2xvdCwgaW50IGZ1bmMpCitzdGF0aWMgcmVzb3VyY2Vfc2l6ZV90IF9faW5pdCBnZW4zX3N0b2xl bl9zaXplKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIHsKIAl1MTYgZ21jaF9jdHJsOwog CXUxNiBnbXM7CkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIHNpemVfdCBfX2luaXQgZ2VuM19z dG9sZW5fc2l6ZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyBzaXplX3QgX19pbml0IGdlbjZfc3RvbGVuX3NpemUoaW50IG51bSwgaW50IHNsb3Qs IGludCBmdW5jKQorc3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgZ2VuNl9zdG9sZW5fc2l6 ZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpCiB7CiAJdTE2IGdtY2hfY3RybDsKIAl1MTYg Z21zOwpAQCAtMzk4LDEwICszOTgsMTAgQEAgc3RhdGljIHNpemVfdCBfX2luaXQgZ2VuNl9zdG9s ZW5fc2l6ZShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpCiAJZ21jaF9jdHJsID0gcmVhZF9w Y2lfY29uZmlnXzE2KG51bSwgc2xvdCwgZnVuYywgU05CX0dNQ0hfQ1RSTCk7CiAJZ21zID0gKGdt Y2hfY3RybCA+PiBTTkJfR01DSF9HTVNfU0hJRlQpICYgU05CX0dNQ0hfR01TX01BU0s7CiAKLQly ZXR1cm4gKHNpemVfdClnbXMgKiBNQigzMik7CisJcmV0dXJuIGdtcyAqIE1CKDMyKTsKIH0KIAot c3RhdGljIHNpemVfdCBfX2luaXQgZ2VuOF9zdG9sZW5fc2l6ZShpbnQgbnVtLCBpbnQgc2xvdCwg aW50IGZ1bmMpCitzdGF0aWMgcmVzb3VyY2Vfc2l6ZV90IF9faW5pdCBnZW44X3N0b2xlbl9zaXpl KGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIHsKIAl1MTYgZ21jaF9jdHJsOwogCXUxNiBn bXM7CkBAIC00MDksMTAgKzQwOSwxMCBAQCBzdGF0aWMgc2l6ZV90IF9faW5pdCBnZW44X3N0b2xl bl9zaXplKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIAlnbWNoX2N0cmwgPSByZWFkX3Bj aV9jb25maWdfMTYobnVtLCBzbG90LCBmdW5jLCBTTkJfR01DSF9DVFJMKTsKIAlnbXMgPSAoZ21j aF9jdHJsID4+IEJEV19HTUNIX0dNU19TSElGVCkgJiBCRFdfR01DSF9HTVNfTUFTSzsKIAotCXJl dHVybiAoc2l6ZV90KWdtcyAqIE1CKDMyKTsKKwlyZXR1cm4gZ21zICogTUIoMzIpOwogfQogCi1z dGF0aWMgc2l6ZV90IF9faW5pdCBjaHZfc3RvbGVuX3NpemUoaW50IG51bSwgaW50IHNsb3QsIGlu dCBmdW5jKQorc3RhdGljIHJlc291cmNlX3NpemVfdCBfX2luaXQgY2h2X3N0b2xlbl9zaXplKGlu dCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIHsKIAl1MTYgZ21jaF9jdHJsOwogCXUxNiBnbXM7 CkBAIC00MjYsMTQgKzQyNiwxNCBAQCBzdGF0aWMgc2l6ZV90IF9faW5pdCBjaHZfc3RvbGVuX3Np emUoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogCSAqIDB4MTcgdG8gMHgxZDogNE1CIGlu Y3JlbWVudHMgc3RhcnQgYXQgMzZNQgogCSAqLwogCWlmIChnbXMgPCAweDExKQotCQlyZXR1cm4g KHNpemVfdClnbXMgKiBNQigzMik7CisJCXJldHVybiBnbXMgKiBNQigzMik7CiAJZWxzZSBpZiAo Z21zIDwgMHgxNykKLQkJcmV0dXJuIChzaXplX3QpKGdtcyAtIDB4MTEgKyAyKSAqIE1CKDQpOwor CQlyZXR1cm4gKGdtcyAtIDB4MTEgKyAyKSAqIE1CKDQpOwogCWVsc2UKLQkJcmV0dXJuIChzaXpl X3QpKGdtcyAtIDB4MTcgKyA5KSAqIE1CKDQpOworCQlyZXR1cm4gKGdtcyAtIDB4MTcgKyA5KSAq IE1CKDQpOwogfQogCi1zdGF0aWMgc2l6ZV90IF9faW5pdCBnZW45X3N0b2xlbl9zaXplKGludCBu dW0sIGludCBzbG90LCBpbnQgZnVuYykKK3N0YXRpYyByZXNvdXJjZV9zaXplX3QgX19pbml0IGdl bjlfc3RvbGVuX3NpemUoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogewogCXUxNiBnbWNo X2N0cmw7CiAJdTE2IGdtczsKQEAgLTQ0NCwxNCArNDQ0LDE1IEBAIHN0YXRpYyBzaXplX3QgX19p bml0IGdlbjlfc3RvbGVuX3NpemUoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogCS8qIDB4 MCAgdG8gMHhlZjogMzJNQiBpbmNyZW1lbnRzIHN0YXJ0aW5nIGF0IDBNQiAqLwogCS8qIDB4ZjAg dG8gMHhmZTogNE1CIGluY3JlbWVudHMgc3RhcnRpbmcgYXQgNE1CICovCiAJaWYgKGdtcyA8IDB4 ZjApCi0JCXJldHVybiAoc2l6ZV90KWdtcyAqIE1CKDMyKTsKKwkJcmV0dXJuIGdtcyAqIE1CKDMy KTsKIAllbHNlCi0JCXJldHVybiAoc2l6ZV90KShnbXMgLSAweGYwICsgMSkgKiBNQig0KTsKKwkJ cmV0dXJuIChnbXMgLSAweGYwICsgMSkgKiBNQig0KTsKIH0KIAogc3RydWN0IGludGVsX2Vhcmx5 X29wcyB7Ci0Jc2l6ZV90ICgqc3RvbGVuX3NpemUpKGludCBudW0sIGludCBzbG90LCBpbnQgZnVu Yyk7Ci0JcGh5c19hZGRyX3QgKCpzdG9sZW5fYmFzZSkoaW50IG51bSwgaW50IHNsb3QsIGludCBm dW5jLCBzaXplX3Qgc2l6ZSk7CisJcmVzb3VyY2Vfc2l6ZV90ICgqc3RvbGVuX3NpemUpKGludCBu dW0sIGludCBzbG90LCBpbnQgZnVuYyk7CisJcmVzb3VyY2Vfc2l6ZV90ICgqc3RvbGVuX2Jhc2Up KGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYywKKwkJCQkgICAgICAgcmVzb3VyY2Vfc2l6ZV90 IHNpemUpOwogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9lYXJseV9vcHMgaTgzMF9l YXJseV9vcHMgX19pbml0Y29uc3QgPSB7CkBAIC01MzEsMTIgKzUzMiwxNSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZWFybHlfaWRzW10gX19pbml0Y29uc3QgPSB7 CiAJSU5URUxfQ05MX0lEUygmZ2VuOV9lYXJseV9vcHMpLAogfTsKIAorc3RydWN0IHJlc291cmNl IGludGVsX2dyYXBoaWNzX3N0b2xlbl9yZXMgX19yb19hZnRlcl9pbml0ID0gREVGSU5FX1JFU19N RU0oMCwgMCk7CitFWFBPUlRfU1lNQk9MKGludGVsX2dyYXBoaWNzX3N0b2xlbl9yZXMpOworCiBz dGF0aWMgdm9pZCBfX2luaXQKIGludGVsX2dyYXBoaWNzX3N0b2xlbihpbnQgbnVtLCBpbnQgc2xv dCwgaW50IGZ1bmMsCiAJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9lYXJseV9vcHMgKmVhcmx5 X29wcykKIHsKLQlwaHlzX2FkZHJfdCBiYXNlLCBlbmQ7Ci0Jc2l6ZV90IHNpemU7CisJcmVzb3Vy Y2Vfc2l6ZV90IGJhc2UsIHNpemU7CisJcmVzb3VyY2Vfc2l6ZV90IGVuZDsKIAogCXNpemUgPSBl YXJseV9vcHMtPnN0b2xlbl9zaXplKG51bSwgc2xvdCwgZnVuYyk7CiAJYmFzZSA9IGVhcmx5X29w cy0+c3RvbGVuX2Jhc2UobnVtLCBzbG90LCBmdW5jLCBzaXplKTsKQEAgLTU0NSw4ICs1NDksMTIg QEAgaW50ZWxfZ3JhcGhpY3Nfc3RvbGVuKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYywKIAkJ cmV0dXJuOwogCiAJZW5kID0gYmFzZSArIHNpemUgLSAxOwotCXByaW50ayhLRVJOX0lORk8gIlJl c2VydmluZyBJbnRlbCBncmFwaGljcyBtZW1vcnkgYXQgJXBhLSVwYVxuIiwKLQkgICAgICAgJmJh c2UsICZlbmQpOworCisJaW50ZWxfZ3JhcGhpY3Nfc3RvbGVuX3Jlcy5zdGFydCA9IGJhc2U7CisJ aW50ZWxfZ3JhcGhpY3Nfc3RvbGVuX3Jlcy5lbmQgPSBlbmQ7CisKKwlwcmludGsoS0VSTl9JTkZP ICJSZXNlcnZpbmcgSW50ZWwgZ3JhcGhpY3MgbWVtb3J5IGF0ICVwUlxuIiwKKwkgICAgICAgJmlu dGVsX2dyYXBoaWNzX3N0b2xlbl9yZXMpOwogCiAJLyogTWFyayB0aGlzIHNwYWNlIGFzIHJlc2Vy dmVkICovCiAJZTgyMF9fcmFuZ2VfYWRkKGJhc2UsIHNpemUsIEU4MjBfVFlQRV9SRVNFUlZFRCk7 CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS9kcm0vaTkxNV9k cm0uaAppbmRleCA0ZTFiMjc0ZTExNjQuLmM5ZTVhNjYyMWI5NSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL2RybS9pOTE1X2RybS5oCkBAIC0zNiw2ICsz Niw5IEBAIGV4dGVybiBib29sIGk5MTVfZ3B1X2xvd2VyKHZvaWQpOwogZXh0ZXJuIGJvb2wgaTkx NV9ncHVfYnVzeSh2b2lkKTsKIGV4dGVybiBib29sIGk5MTVfZ3B1X3R1cmJvX2Rpc2FibGUodm9p ZCk7CiAKKy8qIEV4cG9ydGVkIGZyb20gYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jICov CitleHRlcm4gc3RydWN0IHJlc291cmNlIGludGVsX2dyYXBoaWNzX3N0b2xlbl9yZXM7CisKIC8q CiAgKiBUaGUgQnJpZGdlIGRldmljZSdzIFBDSSBjb25maWcgc3BhY2UgaGFzIGluZm9ybWF0aW9u IGFib3V0IHRoZQogICogZmIgYXBlcnR1cmUgc2l6ZSBhbmQgdGhlIGFtb3VudCBvZiBwcmUtcmVz ZXJ2ZWQgbWVtb3J5LgotLSAKMi4xNC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752815AbdLKMOe (ORCPT ); Mon, 11 Dec 2017 07:14:34 -0500 Received: from mga07.intel.com ([134.134.136.100]:31112 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752484AbdLKMOc (ORCPT ); Mon, 11 Dec 2017 07:14:32 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,391,1508828400"; d="scan'208";a="185935453" 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 1/8] x86/early-quirks: Extend Intel graphics stolen memory placement to 64bit Date: Mon, 11 Dec 2017 12:14:20 +0000 Message-Id: <20171211121427.26205-2-matthew.auld@intel.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171211121427.26205-1-matthew.auld@intel.com> References: <20171211121427.26205-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. 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 #v3 --- v2: export the stolen region as a resource fix u16 << 16 (Chris) v3: actually fix u16 << 16 v4: mark intel_graphics_stolen_res as __ro_after_init (Thomas) 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..6c1624889011 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 __ro_after_init = 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