From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753795AbbFRH6Y (ORCPT ); Thu, 18 Jun 2015 03:58:24 -0400 Received: from mail-bn1bon0132.outbound.protection.outlook.com ([157.56.111.132]:19328 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753332AbbFRH6Q convert rfc822-to-8bit (ORCPT ); Thu, 18 Jun 2015 03:58:16 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.221) smtp.mailfrom=amd.com; canonical.com; dkim=none (message not signed) header.d=none; X-WSS-ID: 0NQ4RH0-07-A5G-02 X-M-MSG: Message-ID: <55827A11.30900@amd.com> Date: Thu, 18 Jun 2015 09:58:09 +0200 From: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Kamal Mostafa , , , CC: Alex Deucher Subject: Re: [PATCH 3.19.y-ckt 058/146] drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling References: <1434579851-1719-1-git-send-email-kamal@canonical.com> <1434579851-1719-59-git-send-email-kamal@canonical.com> In-Reply-To: <1434579851-1719-59-git-send-email-kamal@canonical.com> Content-Type: text/plain; charset="utf-8"; format=flowed X-Originating-IP: [10.224.54.222] Content-Transfer-Encoding: 8BIT X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD044;1:ixzUPDDtgn2Cd+D73pAqc+UvVTZGU7mGIPTNOWjGnnJH5+UEjKG0ZIMsHSzhVI8/k3ZRUH+djMQMOI37vzc/eA3xwb2+fOI6wr2kxqNNNp4FMQmKAA8X9zGUPiRa3CGh2Y8/TVUZXTfYE30yyoQVTRxoX5BJU1SbSvbOIpNIv/nyVEIsPBzKVGQ2ajm7n5qtLMivm56Cr72zcB2tKEcr9mAlPvE+u+/1vmue/n3NSQbWuZWSMHqOgKHy1SaMxAqhinyr3nPWh7bGBy5wtUs+h70xV/ekxPWeXHROe5+ZngU= X-Forefront-Antispam-Report: CIP:165.204.84.221;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(428002)(51704005)(189002)(199003)(24454002)(105586002)(87936001)(23676002)(64126003)(2201001)(86362001)(5001770100001)(77096005)(4001350100001)(189998001)(33656002)(46102003)(65956001)(76176999)(65806001)(54356999)(50986999)(50466002)(65816999)(101416001)(47776003)(36756003)(2950100001)(62966003)(77156002)(85182001)(19580395003)(85202003)(19580405001)(106466001)(92566002)(83506001)(3940600001);DIR:OUT;SFP:1102;SCL:1;SRVR:SN1PR0201MB1501;H:atltwp01.amd.com;FPR:;SPF:None;MLV:ovrnspm;MX:1;A:1;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1501;2:2w54eKtNE9aoWydgLrqU4j/jwnpQRDd+UeNm82QttX7Dq7AjR3K5Wj6zO4wWHbNe;2:PE+ePjfdolfGrYU5qnQiP6WQ4/j7l/DawLMIZSUPdPvSPJFG8pgKof4zhwKJKDJAoHPavIK6YDfPzIfPUmqtGS3TQC8LvoW9Szqi3JmuHLefM2/WrDeXtj6ZtTd9zOWz5tsMz3Hiq23E5VyK1gcgUuvuJ1cju4OuFatESM2bqZzihVFV9N9xdqKb7QPoU4tiOew05K83NOUhUI/f/eXQ9bd4hQYOjEEh7+AJYtpFQRDY2OjhOqdtZbD7qi/nju06;6:4L59ULucz9UxlBtWO6MbDWyESATlnDacd8Dmp8Grke/shBNGnep1NRH7D5+BesTWx/5LDAmWRay/EHELVFo2GzP+jEy7DhjFtQfysIIbCex2UzcXMUYjqBaFuo1itqaEKyppjQY9t/wjaSBGYBJTgzCRZNDBA9E/ImmUHIWYxk7uvwzEb9arFqKL1M2yG8LoMlN5TPjzqnotcjKWh61jnKNgzYYshLcHFJh1uh227LUdS8LFdgpGTuXnTxZVUNFp9YVHa0LAzRJXIqsD9JAnYtoJSkl7E1nrE1QkFiGs+cav3+JADnvvFcJhiQryD7LfSo5ZRpeKSdfBJalwcjc74xSrAEfk0Tzy8XULDQrAMcwkPlUH4+kxz/0XhMe6CPXBT/de1Swm3+gLKG0Zh66A+4OWkdh4UR1RkmYCG6sU9QctUeGrsjbWh4yy7jmnv3AZxvXgXFDzVKEjI4zb8iwXOHzECVHFhr/BnWfMKsUt3x3oaJqkVvmL57TqwFPjeMkQ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1501; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(520003)(3002001);SRVR:SN1PR0201MB1501;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1501; X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1501;3:WU1HVR1CZhx3QhO1FJxM/DJfiay9zPZuu9SPhiZLVm0GMbHJOwNDFr8yw43JV6GCDlHgtza8lzYfZ6kqXD/JYJq9zhvycXPUSWFbAYqCyDAubsSghViYHKgzucw2KyuSqr4U3DnS8XU2jTD6nOORMAIIN2tf52Tt51aojQEM9/aPjFn3JN0YaMhjIfhq9yoqQCveS+R2gviHuMFgEphXeSNM64Q4UFsmUKaTVPAckSOHUO2Oqi4LyVnqvYBjCwevYp3hHtL61Z0CvlMeXcNgugfVqIy94YI8k6y0wzWqevIjQ4iQSMpFBlT4oYUvpmfT X-Forefront-PRVS: 0611A21987 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjAyMDFNQjE1MDE7OTpmSHNaZFVnT2Q0QVYxbUwyWEQrdjhmN054?= =?utf-8?B?ZkdFQmxOYitLV2JxMWdJQXdIbGVIeVNKMEtrZituemZZWitDc1Z5OTBxUGtU?= =?utf-8?B?dVRMb2pXRGF0dC9TVmdjUXByZnl5SE5FS0Y0eUZLUmQyYkNFUTRUaDlTT29C?= =?utf-8?B?YUhsRGpicjdKcFViNExwNWVoVXNIM0UwU3h3MTQrRmxzMllOZlVVd1c2TXpw?= =?utf-8?B?UVNRVDFqM3F4ejFFdnNycS9sWmQvcGhYMkVnSXdhUXN6UVlSUlEvRmFvRWQ5?= =?utf-8?B?bHFqc2JDUmdBbUJRRENDTWZVU0Rtc2tVdkxuaGdSTm1qcTJDbUIrc3c2emRy?= =?utf-8?B?cWw3SmZnUy96RFdDbGlzM2hWZzZFVURQOUZSa1puZEswVTFrMnpvbzFmVXBO?= =?utf-8?B?dEE0bjBlWDVnNlJJYSs1WXVmYkdoaGE4VEZ2Zkw0elZtV01qZzFwTmlqeEow?= =?utf-8?B?enpRdTNhYWl0b3FtZWRZcVF5cis4S2taN0h2WVhlSjEybFBnQzFPK2FmeVcz?= =?utf-8?B?elkwem5Bdk9sYVc4SS9teDF6QlVPQ0MrZ2NtUWlNTkhzYklpWVZpMTZwOEtX?= =?utf-8?B?dnVZcUlkaUFic0wrVDVnRWpwR3FSWlNNUEdCdG8yUDdNem5acE9ERUhFMnFU?= =?utf-8?B?SS9IQlhiR0VGTVJ1bVM5S3N0Q0RZT2lIL3Zyd0crd2JLc09STWZNbTNsUEc2?= =?utf-8?B?Ky92bXBCc0tnaUlLaU9ZVDNqUkd2WHlMVG5xbHhvMXAvN2ZqVUwxeXU2em1G?= =?utf-8?B?cHdNTHVSakFtWTBBZGFNM1hqWm96c3ZqOGJoK1J5VWc1ZDRSeXp1WVZZRXdt?= =?utf-8?B?akxzRnhyc201eTZWSTFCb3pTWmQxajR5OGdXbHhxUXZtSXFMY0hMbnE2RzRs?= =?utf-8?B?aFVjMzJ6NVlrbElrdWJFdGt3aFJETUNIckhXTG5UVmlFcWxFQXVicUtTNFU4?= =?utf-8?B?aVdSSjZvcXk3YjBUNzNnWm54R1NCcWpsTVRpbTQ4U0lVVWdRaGkzREVaNkxy?= =?utf-8?B?NE1JQ2lzaFhoZUxUaE9XWStwVmRjbXQvYnBjMTZURGRGSEt0RDJ3TnE1a2FK?= =?utf-8?B?Z0lDMXAyUEJhVnhRZDdkY1hPTXJNbzljUWw3SGV6SGszVTc5RnFFMFFET1N0?= =?utf-8?B?NjJCK1JMQXBvaWo2QUVja0wxd05oQVJKcTE3U1J3dkFxYWUxcjFjNTVaTkgv?= =?utf-8?B?RzEzd1BteDRhQVFZOTRnVmZ6VlpIcWp1Z1J3T0tSbU1xL1FzNkk3WitzZTkz?= =?utf-8?B?VXZGR1ZkOExPbjJHL1M0eCtZMTB1dFdoMzE4a3dSSlBvU3hyNkxHM3J2U2lR?= =?utf-8?B?L2ZCc2kxSlZSWElnbG8yT2w2dVlPRXVMT0paSTF4ZlpkMThrTXhUQ05acGg3?= =?utf-8?B?VXA0Q1QvMHFMMFJtbll1NlJ1Z2R2M2ZYUng1cmV1QT09?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1501;3:xoyeOMsD53sMV6wFbzBKGb9TN0gaUwCdp1cbruHvEF2EK9HJj4Tgbxdh6aqDW9NktNDHDFRWV7VpWlHnRQ8tzTs/U2bleqWz4yWRoX4ZiAFIngbnbOFsz3jG09qFnQxzbwtr7PFGTBL2TPWBQCBuig==;10:rb47ZFVvWmTiIpgfEz/MsD+IuQcjfPR9V1eN8hfIgkUMiUW/iZdRTI5I+eFup6fLm+phUSQQp6xwx2DqyDiRsyYfAI7KdUbhjEse2KB4+8k=;6:EqiT2dFuFjVEsqVipim25QmuR9Bat4jMQLHYf3CvMd9R7W8lVkuSfVg8JbweqUZd X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2015 07:58:13.7282 (UTC) X-MS-Exchange-CrossTenant-Id: fde4dada-be84-483f-92cc-e026cbee8e96 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fde4dada-be84-483f-92cc-e026cbee8e96;Ip=[165.204.84.221];Helo=[atltwp01.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0201MB1501 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Please note that you also need to include the partial revert of this patch. Fixing this for VM_CONTEXT0 had negative side effects for some users, because of this I reverted parts of this patch and only kept the change for VM_CONTEXT1 where it really matters. Regards, Christian. On 18.06.2015 00:22, Kamal Mostafa wrote: > 3.19.8-ckt2 -stable review patch. If anyone has any objections, please let me know. > > ------------------ > > From: =?UTF-8?q?Christian=20K=C3=B6nig?= > > commit 607d48063512707a414e346972e2210dc71ab491 upstream. > > The mapping range is inclusive between starting and ending addresses. > > Signed-off-by: Christian König > Signed-off-by: Alex Deucher > Signed-off-by: Kamal Mostafa > --- > drivers/gpu/drm/radeon/cik.c | 4 ++-- > drivers/gpu/drm/radeon/evergreen.c | 2 +- > drivers/gpu/drm/radeon/ni.c | 5 +++-- > drivers/gpu/drm/radeon/r600.c | 2 +- > drivers/gpu/drm/radeon/rv770.c | 2 +- > drivers/gpu/drm/radeon/si.c | 4 ++-- > 6 files changed, 10 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c > index 53b9ac3..799a29f 100644 > --- a/drivers/gpu/drm/radeon/cik.c > +++ b/drivers/gpu/drm/radeon/cik.c > @@ -5764,7 +5764,7 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev) > L2_CACHE_BIGK_FRAGMENT_SIZE(4)); > /* setup context0 */ > WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12); > - WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12); > + WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1); > WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12); > WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR, > (u32)(rdev->dummy_page.addr >> 12)); > @@ -5779,7 +5779,7 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev) > /* restore context1-15 */ > /* set vm size, must be a multiple of 4 */ > WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0); > - WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn); > + WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn - 1); > for (i = 1; i < 16; i++) { > if (i < 8) > WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2), > diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c > index c674f63..d9f431d 100644 > --- a/drivers/gpu/drm/radeon/evergreen.c > +++ b/drivers/gpu/drm/radeon/evergreen.c > @@ -2456,7 +2456,7 @@ static int evergreen_pcie_gart_enable(struct radeon_device *rdev) > WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp); > WREG32(MC_VM_MB_L1_TLB3_CNTL, tmp); > WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12); > - WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12); > + WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1); > WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12); > WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) | > RANGE_PROTECTION_FAULT_ENABLE_DEFAULT); > diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c > index 88b2c36..16f912a 100644 > --- a/drivers/gpu/drm/radeon/ni.c > +++ b/drivers/gpu/drm/radeon/ni.c > @@ -1250,7 +1250,7 @@ static int cayman_pcie_gart_enable(struct radeon_device *rdev) > L2_CACHE_BIGK_FRAGMENT_SIZE(6)); > /* setup context0 */ > WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12); > - WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12); > + WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1); > WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12); > WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR, > (u32)(rdev->dummy_page.addr >> 12)); > @@ -1269,7 +1269,8 @@ static int cayman_pcie_gart_enable(struct radeon_device *rdev) > */ > for (i = 1; i < 8; i++) { > WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR + (i << 2), 0); > - WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR + (i << 2), rdev->vm_manager.max_pfn); > + WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR + (i << 2), > + rdev->vm_manager.max_pfn - 1); > WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2), > rdev->vm_manager.saved_table_addr[i]); > } > diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c > index 0e2cf2a..64ca89e 100644 > --- a/drivers/gpu/drm/radeon/r600.c > +++ b/drivers/gpu/drm/radeon/r600.c > @@ -1085,7 +1085,7 @@ static int r600_pcie_gart_enable(struct radeon_device *rdev) > WREG32(MC_VM_L1_TLB_MCB_RD_SEM_CNTL, tmp | ENABLE_SEMAPHORE_MODE); > WREG32(MC_VM_L1_TLB_MCB_WR_SEM_CNTL, tmp | ENABLE_SEMAPHORE_MODE); > WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12); > - WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12); > + WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1); > WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12); > WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) | > RANGE_PROTECTION_FAULT_ENABLE_DEFAULT); > diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c > index 372016e..819c2c1 100644 > --- a/drivers/gpu/drm/radeon/rv770.c > +++ b/drivers/gpu/drm/radeon/rv770.c > @@ -920,7 +920,7 @@ static int rv770_pcie_gart_enable(struct radeon_device *rdev) > WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp); > WREG32(MC_VM_MB_L1_TLB3_CNTL, tmp); > WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12); > - WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12); > + WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1); > WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12); > WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) | > RANGE_PROTECTION_FAULT_ENABLE_DEFAULT); > diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c > index eed21db..2c8be31 100644 > --- a/drivers/gpu/drm/radeon/si.c > +++ b/drivers/gpu/drm/radeon/si.c > @@ -4270,7 +4270,7 @@ static int si_pcie_gart_enable(struct radeon_device *rdev) > L2_CACHE_BIGK_FRAGMENT_SIZE(4)); > /* setup context0 */ > WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12); > - WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12); > + WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1); > WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12); > WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR, > (u32)(rdev->dummy_page.addr >> 12)); > @@ -4285,7 +4285,7 @@ static int si_pcie_gart_enable(struct radeon_device *rdev) > /* empty context1-15 */ > /* set vm size, must be a multiple of 4 */ > WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0); > - WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn); > + WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn - 1); > /* Assign the pt base to something valid for now; the pts used for > * the VMs are determined by the application and setup and assigned > * on the fly in the vm part of radeon_gart.c