From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 2/2] drm/drivers: add support for using the arch wc mapping API. Date: Mon, 24 Oct 2016 16:03:24 +1000 Message-ID: <1477289004-2183-3-git-send-email-airlied@redhat.com> References: <1477289004-2183-1-git-send-email-airlied@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0FE56E32A for ; Mon, 24 Oct 2016 06:03:53 +0000 (UTC) In-Reply-To: <1477289004-2183-1-git-send-email-airlied@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: mcgrof@suse.com, torvalds@linux-foundation.org, dan.j.williams@intel.com, x86@kernel.org Cc: Dave Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gaW4gYWxsIHRoZXNlIGRyaXZlcnMgc2luY2UgdGhlIGNh Y2hlCm1vZGUgdHJhY2tpbmcgd2FzIGZpeGVkIGZvciBtaXhlZCBtYXBwaW5ncy4gSXQgdXNlcyB0 aGUgbmV3CmFyY2ggQVBJIHRvIGFkZCB0aGUgVlJBTSByYW5nZSB0byB0aGUgUEFUIG1hcHBpbmcg dHJhY2tpbmcKdGFibGVzLgoKRml4ZXM6IDg3NzQ0YWIzODMyIChtbTogZml4IGNhY2hlIG1vZGUg dHJhY2tpbmcgaW4gdm1faW5zZXJ0X21peGVkKCkpClNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGll IDxhaXJsaWVkQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5jIHwgNSArKysrKwogZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdHRtLmMgICAg ICAgICAgICAgIHwgNiArKysrKysKIGRyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX3R0bS5j ICAgICAgICB8IDcgKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF90dG0u YyAgICAgIHwgNyArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3R0bS5j ICAgICAgfCA4ICsrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3Qu YyAgICAgfCA1ICsrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKaW5kZXggYWEwNzRmYS4uZjNl ZmIxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVj dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwpAQCAt NzU0LDYgKzc1NCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqYW1kZ3B1X3ZyYW1fbmFtZXNbXSA9 IHsKIAogaW50IGFtZGdwdV9ib19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewor CS8qIHJlc2VydmUgUEFUIG1lbW9yeSBzcGFjZSB0byBXQyBmb3IgVlJBTSAqLworCWFyY2hfaW9f cmVzZXJ2ZV9tZW10eXBlX3djKGFkZXYtPm1jLmFwZXJfYmFzZSwKKwkJCQkgICBhZGV2LT5tYy5h cGVyX3NpemUpOworCiAJLyogQWRkIGFuIE1UUlIgZm9yIHRoZSBWUkFNICovCiAJYWRldi0+bWMu dnJhbV9tdHJyID0gYXJjaF9waHlzX3djX2FkZChhZGV2LT5tYy5hcGVyX2Jhc2UsCiAJCQkJCSAg ICAgIGFkZXYtPm1jLmFwZXJfc2l6ZSk7CkBAIC03NjksNiArNzczLDcgQEAgdm9pZCBhbWRncHVf Ym9fZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlhbWRncHVfdHRtX2Zpbmko YWRldik7CiAJYXJjaF9waHlzX3djX2RlbChhZGV2LT5tYy52cmFtX210cnIpOworCWFyY2hfaW9f ZnJlZV9tZW10eXBlX3djKGFkZXYtPm1jLmFwZXJfYmFzZSwgYWRldi0+bWMuYXBlcl9zaXplKTsK IH0KIAogaW50IGFtZGdwdV9ib19mYmRldl9tbWFwKHN0cnVjdCBhbWRncHVfYm8gKmJvLApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF90dG0uYwppbmRleCA2MDhkZjRjLi4wNzQzZTY1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF90dG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90dG0u YwpAQCAtMjY3LDYgKzI2Nyw4IEBAIGludCBhc3RfbW1faW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUg KmFzdCkKIAkJcmV0dXJuIHJldDsKIAl9CiAKKwlhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93Yyhw Y2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wZGV2LCAwKSwKKwkJCQkgICBwY2lfcmVzb3VyY2VfbGVu KGRldi0+cGRldiwgMCkpOwogCWFzdC0+ZmJfbXRyciA9IGFyY2hfcGh5c193Y19hZGQocGNpX3Jl c291cmNlX3N0YXJ0KGRldi0+cGRldiwgMCksCiAJCQkJCXBjaV9yZXNvdXJjZV9sZW4oZGV2LT5w ZGV2LCAwKSk7CiAKQEAgLTI3NSwxMSArMjc3LDE1IEBAIGludCBhc3RfbW1faW5pdChzdHJ1Y3Qg YXN0X3ByaXZhdGUgKmFzdCkKIAogdm9pZCBhc3RfbW1fZmluaShzdHJ1Y3QgYXN0X3ByaXZhdGUg KmFzdCkKIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gYXN0LT5kZXY7CisKIAl0dG1fYm9f ZGV2aWNlX3JlbGVhc2UoJmFzdC0+dHRtLmJkZXYpOwogCiAJYXN0X3R0bV9nbG9iYWxfcmVsZWFz ZShhc3QpOwogCiAJYXJjaF9waHlzX3djX2RlbChhc3QtPmZiX210cnIpOworCWFyY2hfaW9fZnJl ZV9tZW10eXBlX3djKHBjaV9yZXNvdXJjZV9zdGFydChkZXYtPnBkZXYsIDApLAorCQkJCXBjaV9y ZXNvdXJjZV9sZW4oZGV2LT5wZGV2LCAwKSk7CiB9CiAKIHZvaWQgYXN0X3R0bV9wbGFjZW1lbnQo c3RydWN0IGFzdF9ibyAqYm8sIGludCBkb21haW4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vY2lycnVzL2NpcnJ1c190dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX3R0 bS5jCmluZGV4IGJiMjQzOGQuLjVlN2U2M2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9j aXJydXMvY2lycnVzX3R0bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX3R0 bS5jCkBAIC0yNjcsNiArMjY3LDkgQEAgaW50IGNpcnJ1c19tbV9pbml0KHN0cnVjdCBjaXJydXNf ZGV2aWNlICpjaXJydXMpCiAJCXJldHVybiByZXQ7CiAJfQogCisJYXJjaF9pb19yZXNlcnZlX21l bXR5cGVfd2MocGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+cGRldiwgMCksCisJCQkJICAgcGNpX3Jl c291cmNlX2xlbihkZXYtPnBkZXYsIDApKTsKKwogCWNpcnJ1cy0+ZmJfbXRyciA9IGFyY2hfcGh5 c193Y19hZGQocGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+cGRldiwgMCksCiAJCQkJCSAgIHBjaV9y ZXNvdXJjZV9sZW4oZGV2LT5wZGV2LCAwKSk7CiAKQEAgLTI3Niw2ICsyNzksOCBAQCBpbnQgY2ly cnVzX21tX2luaXQoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cykKIAogdm9pZCBjaXJydXNf bW1fZmluaShzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzKQogeworCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjaXJydXMtPmRldjsKKwogCWlmICghY2lycnVzLT5tbV9pbml0ZWQpCiAJCXJl dHVybjsKIApAQCAtMjg1LDYgKzI5MCw4IEBAIHZvaWQgY2lycnVzX21tX2Zpbmkoc3RydWN0IGNp cnJ1c19kZXZpY2UgKmNpcnJ1cykKIAogCWFyY2hfcGh5c193Y19kZWwoY2lycnVzLT5mYl9tdHJy KTsKIAljaXJydXMtPmZiX210cnIgPSAwOworCWFyY2hfaW9fZnJlZV9tZW10eXBlX3djKHBjaV9y ZXNvdXJjZV9zdGFydChkZXYtPnBkZXYsIDApLAorCQkJCXBjaV9yZXNvdXJjZV9sZW4oZGV2LT5w ZGV2LCAwKSk7CiB9CiAKIHZvaWQgY2lycnVzX3R0bV9wbGFjZW1lbnQoc3RydWN0IGNpcnJ1c19i byAqYm8sIGludCBkb21haW4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9t Z2FnMjAwX3R0bS5jIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF90dG0uYwppbmRl eCA5MTliMzVmLi5kY2Y3ZDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9t Z2FnMjAwX3R0bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfdHRtLmMK QEAgLTI2Niw2ICsyNjYsOSBAQCBpbnQgbWdhZzIwMF9tbV9pbml0KHN0cnVjdCBtZ2FfZGV2aWNl ICptZGV2KQogCQlyZXR1cm4gcmV0OwogCX0KIAorCWFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3dj KHBjaV9yZXNvdXJjZV9zdGFydChkZXYtPnBkZXYsIDApLAorCQkJCSAgIHBjaV9yZXNvdXJjZV9s ZW4oZGV2LT5wZGV2LCAwKSk7CisKIAltZGV2LT5mYl9tdHJyID0gYXJjaF9waHlzX3djX2FkZChw Y2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wZGV2LCAwKSwKIAkJCQkJIHBjaV9yZXNvdXJjZV9sZW4o ZGV2LT5wZGV2LCAwKSk7CiAKQEAgLTI3NCwxMCArMjc3LDE0IEBAIGludCBtZ2FnMjAwX21tX2lu aXQoc3RydWN0IG1nYV9kZXZpY2UgKm1kZXYpCiAKIHZvaWQgbWdhZzIwMF9tbV9maW5pKHN0cnVj dCBtZ2FfZGV2aWNlICptZGV2KQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtZGV2LT5k ZXY7CisKIAl0dG1fYm9fZGV2aWNlX3JlbGVhc2UoJm1kZXYtPnR0bS5iZGV2KTsKIAogCW1nYWcy MDBfdHRtX2dsb2JhbF9yZWxlYXNlKG1kZXYpOwogCisJYXJjaF9pb19mcmVlX21lbXR5cGVfd2Mo cGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+cGRldiwgMCksCisJCQkJcGNpX3Jlc291cmNlX2xlbihk ZXYtPnBkZXYsIDApKTsKIAlhcmNoX3BoeXNfd2NfZGVsKG1kZXYtPmZiX210cnIpOwogCW1kZXYt PmZiX210cnIgPSAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91 dmVhdV90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmMKaW5kZXgg MTgyNWRiYy4uYTZkYmU4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91 dmVhdV90dG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3R0bS5jCkBA IC0zOTgsNiArMzk4LDkgQEAgbm91dmVhdV90dG1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRy bSkKIAkvKiBWUkFNIGluaXQgKi8KIAlkcm0tPmdlbS52cmFtX2F2YWlsYWJsZSA9IGRybS0+ZGV2 aWNlLmluZm8ucmFtX3VzZXI7CiAKKwlhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhkZXZpY2Ut PmZ1bmMtPnJlc291cmNlX2FkZHIoZGV2aWNlLCAxKSwKKwkJCQkgICBkZXZpY2UtPmZ1bmMtPnJl c291cmNlX3NpemUoZGV2aWNlLCAxKSk7CisKIAlyZXQgPSB0dG1fYm9faW5pdF9tbSgmZHJtLT50 dG0uYmRldiwgVFRNX1BMX1ZSQU0sCiAJCQkgICAgICBkcm0tPmdlbS52cmFtX2F2YWlsYWJsZSA+ PiBQQUdFX1NISUZUKTsKIAlpZiAocmV0KSB7CkBAIC00MzAsNiArNDMzLDggQEAgbm91dmVhdV90 dG1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSkKIHZvaWQKIG5vdXZlYXVfdHRtX2Zpbmko c3RydWN0IG5vdXZlYXVfZHJtICpkcm0pCiB7CisJc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2Ug PSBudnh4X2RldmljZSgmZHJtLT5kZXZpY2UpOworCiAJdHRtX2JvX2NsZWFuX21tKCZkcm0tPnR0 bS5iZGV2LCBUVE1fUExfVlJBTSk7CiAJdHRtX2JvX2NsZWFuX21tKCZkcm0tPnR0bS5iZGV2LCBU VE1fUExfVFQpOwogCkBAIC00MzksNCArNDQ0LDcgQEAgbm91dmVhdV90dG1fZmluaShzdHJ1Y3Qg bm91dmVhdV9kcm0gKmRybSkKIAogCWFyY2hfcGh5c193Y19kZWwoZHJtLT50dG0ubXRycik7CiAJ ZHJtLT50dG0ubXRyciA9IDA7CisJYXJjaF9pb19mcmVlX21lbXR5cGVfd2MoZGV2aWNlLT5mdW5j LT5yZXNvdXJjZV9hZGRyKGRldmljZSwgMSksCisJCQkJZGV2aWNlLT5mdW5jLT5yZXNvdXJjZV9z aXplKGRldmljZSwgMSkpOworCiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5j CmluZGV4IGJlMzA4NjEuLjQxYjcyY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX29iamVjdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29i amVjdC5jCkBAIC00NDYsNiArNDQ2LDEwIEBAIHZvaWQgcmFkZW9uX2JvX2ZvcmNlX2RlbGV0ZShz dHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIAogaW50IHJhZGVvbl9ib19pbml0KHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2KQogeworCS8qIHJlc2VydmUgUEFUIG1lbW9yeSBzcGFjZSB0byBX QyBmb3IgVlJBTSAqLworCWFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKHJkZXYtPm1jLmFwZXJf YmFzZSwKKwkJCQkgICByZGV2LT5tYy5hcGVyX3NpemUpOworCiAJLyogQWRkIGFuIE1UUlIgZm9y IHRoZSBWUkFNICovCiAJaWYgKCFyZGV2LT5mYXN0ZmJfd29ya2luZykgewogCQlyZGV2LT5tYy52 cmFtX210cnIgPSBhcmNoX3BoeXNfd2NfYWRkKHJkZXYtPm1jLmFwZXJfYmFzZSwKQEAgLTQ2Myw2 ICs0NjcsNyBAQCB2b2lkIHJhZGVvbl9ib19maW5pKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2 KQogewogCXJhZGVvbl90dG1fZmluaShyZGV2KTsKIAlhcmNoX3BoeXNfd2NfZGVsKHJkZXYtPm1j LnZyYW1fbXRycik7CisJYXJjaF9pb19mcmVlX21lbXR5cGVfd2MocmRldi0+bWMuYXBlcl9iYXNl LCByZGV2LT5tYy5hcGVyX3NpemUpOwogfQogCiAvKiBSZXR1cm5zIGhvdyBtYW55IGJ5dGVzIFRU TSBjYW4gbW92ZSBwZXIgSUIuCi0tIAoyLjUuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934089AbcJXGDv (ORCPT ); Mon, 24 Oct 2016 02:03:51 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55318 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933883AbcJXGDs (ORCPT ); Mon, 24 Oct 2016 02:03:48 -0400 From: Dave Airlie To: mcgrof@suse.com, torvalds@linux-foundation.org, dan.j.williams@intel.com, x86@kernel.org Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Dave Airlie Subject: [PATCH 2/2] drm/drivers: add support for using the arch wc mapping API. Date: Mon, 24 Oct 2016 16:03:24 +1000 Message-Id: <1477289004-2183-3-git-send-email-airlied@redhat.com> In-Reply-To: <1477289004-2183-1-git-send-email-airlied@redhat.com> References: <1477289004-2183-1-git-send-email-airlied@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 24 Oct 2016 06:03:47 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This fixes a regression in all these drivers since the cache mode tracking was fixed for mixed mappings. It uses the new arch API to add the VRAM range to the PAT mapping tracking tables. Fixes: 87744ab3832 (mm: fix cache mode tracking in vm_insert_mixed()) Signed-off-by: Dave Airlie --- drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 5 +++++ drivers/gpu/drm/ast/ast_ttm.c | 6 ++++++ drivers/gpu/drm/cirrus/cirrus_ttm.c | 7 +++++++ drivers/gpu/drm/mgag200/mgag200_ttm.c | 7 +++++++ drivers/gpu/drm/nouveau/nouveau_ttm.c | 8 ++++++++ drivers/gpu/drm/radeon/radeon_object.c | 5 +++++ 6 files changed, 38 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index aa074fa..f3efb1c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -754,6 +754,10 @@ static const char *amdgpu_vram_names[] = { int amdgpu_bo_init(struct amdgpu_device *adev) { + /* reserve PAT memory space to WC for VRAM */ + arch_io_reserve_memtype_wc(adev->mc.aper_base, + adev->mc.aper_size); + /* Add an MTRR for the VRAM */ adev->mc.vram_mtrr = arch_phys_wc_add(adev->mc.aper_base, adev->mc.aper_size); @@ -769,6 +773,7 @@ void amdgpu_bo_fini(struct amdgpu_device *adev) { amdgpu_ttm_fini(adev); arch_phys_wc_del(adev->mc.vram_mtrr); + arch_io_free_memtype_wc(adev->mc.aper_base, adev->mc.aper_size); } int amdgpu_bo_fbdev_mmap(struct amdgpu_bo *bo, diff --git a/drivers/gpu/drm/ast/ast_ttm.c b/drivers/gpu/drm/ast/ast_ttm.c index 608df4c..0743e65 100644 --- a/drivers/gpu/drm/ast/ast_ttm.c +++ b/drivers/gpu/drm/ast/ast_ttm.c @@ -267,6 +267,8 @@ int ast_mm_init(struct ast_private *ast) return ret; } + arch_io_reserve_memtype_wc(pci_resource_start(dev->pdev, 0), + pci_resource_len(dev->pdev, 0)); ast->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0), pci_resource_len(dev->pdev, 0)); @@ -275,11 +277,15 @@ int ast_mm_init(struct ast_private *ast) void ast_mm_fini(struct ast_private *ast) { + struct drm_device *dev = ast->dev; + ttm_bo_device_release(&ast->ttm.bdev); ast_ttm_global_release(ast); arch_phys_wc_del(ast->fb_mtrr); + arch_io_free_memtype_wc(pci_resource_start(dev->pdev, 0), + pci_resource_len(dev->pdev, 0)); } void ast_ttm_placement(struct ast_bo *bo, int domain) diff --git a/drivers/gpu/drm/cirrus/cirrus_ttm.c b/drivers/gpu/drm/cirrus/cirrus_ttm.c index bb2438d..5e7e63c 100644 --- a/drivers/gpu/drm/cirrus/cirrus_ttm.c +++ b/drivers/gpu/drm/cirrus/cirrus_ttm.c @@ -267,6 +267,9 @@ int cirrus_mm_init(struct cirrus_device *cirrus) return ret; } + arch_io_reserve_memtype_wc(pci_resource_start(dev->pdev, 0), + pci_resource_len(dev->pdev, 0)); + cirrus->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0), pci_resource_len(dev->pdev, 0)); @@ -276,6 +279,8 @@ int cirrus_mm_init(struct cirrus_device *cirrus) void cirrus_mm_fini(struct cirrus_device *cirrus) { + struct drm_device *dev = cirrus->dev; + if (!cirrus->mm_inited) return; @@ -285,6 +290,8 @@ void cirrus_mm_fini(struct cirrus_device *cirrus) arch_phys_wc_del(cirrus->fb_mtrr); cirrus->fb_mtrr = 0; + arch_io_free_memtype_wc(pci_resource_start(dev->pdev, 0), + pci_resource_len(dev->pdev, 0)); } void cirrus_ttm_placement(struct cirrus_bo *bo, int domain) diff --git a/drivers/gpu/drm/mgag200/mgag200_ttm.c b/drivers/gpu/drm/mgag200/mgag200_ttm.c index 919b35f..dcf7d11 100644 --- a/drivers/gpu/drm/mgag200/mgag200_ttm.c +++ b/drivers/gpu/drm/mgag200/mgag200_ttm.c @@ -266,6 +266,9 @@ int mgag200_mm_init(struct mga_device *mdev) return ret; } + arch_io_reserve_memtype_wc(pci_resource_start(dev->pdev, 0), + pci_resource_len(dev->pdev, 0)); + mdev->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0), pci_resource_len(dev->pdev, 0)); @@ -274,10 +277,14 @@ int mgag200_mm_init(struct mga_device *mdev) void mgag200_mm_fini(struct mga_device *mdev) { + struct drm_device *dev = mdev->dev; + ttm_bo_device_release(&mdev->ttm.bdev); mgag200_ttm_global_release(mdev); + arch_io_free_memtype_wc(pci_resource_start(dev->pdev, 0), + pci_resource_len(dev->pdev, 0)); arch_phys_wc_del(mdev->fb_mtrr); mdev->fb_mtrr = 0; } diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c index 1825dbc..a6dbe82 100644 --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c @@ -398,6 +398,9 @@ nouveau_ttm_init(struct nouveau_drm *drm) /* VRAM init */ drm->gem.vram_available = drm->device.info.ram_user; + arch_io_reserve_memtype_wc(device->func->resource_addr(device, 1), + device->func->resource_size(device, 1)); + ret = ttm_bo_init_mm(&drm->ttm.bdev, TTM_PL_VRAM, drm->gem.vram_available >> PAGE_SHIFT); if (ret) { @@ -430,6 +433,8 @@ nouveau_ttm_init(struct nouveau_drm *drm) void nouveau_ttm_fini(struct nouveau_drm *drm) { + struct nvkm_device *device = nvxx_device(&drm->device); + ttm_bo_clean_mm(&drm->ttm.bdev, TTM_PL_VRAM); ttm_bo_clean_mm(&drm->ttm.bdev, TTM_PL_TT); @@ -439,4 +444,7 @@ nouveau_ttm_fini(struct nouveau_drm *drm) arch_phys_wc_del(drm->ttm.mtrr); drm->ttm.mtrr = 0; + arch_io_free_memtype_wc(device->func->resource_addr(device, 1), + device->func->resource_size(device, 1)); + } diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c index be30861..41b72ce 100644 --- a/drivers/gpu/drm/radeon/radeon_object.c +++ b/drivers/gpu/drm/radeon/radeon_object.c @@ -446,6 +446,10 @@ void radeon_bo_force_delete(struct radeon_device *rdev) int radeon_bo_init(struct radeon_device *rdev) { + /* reserve PAT memory space to WC for VRAM */ + arch_io_reserve_memtype_wc(rdev->mc.aper_base, + rdev->mc.aper_size); + /* Add an MTRR for the VRAM */ if (!rdev->fastfb_working) { rdev->mc.vram_mtrr = arch_phys_wc_add(rdev->mc.aper_base, @@ -463,6 +467,7 @@ void radeon_bo_fini(struct radeon_device *rdev) { radeon_ttm_fini(rdev); arch_phys_wc_del(rdev->mc.vram_mtrr); + arch_io_free_memtype_wc(rdev->mc.aper_base, rdev->mc.aper_size); } /* Returns how many bytes TTM can move per IB. -- 2.5.5