From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756290AbdELG4z (ORCPT ); Fri, 12 May 2017 02:56:55 -0400 Received: from mail-sn1nam01on0068.outbound.protection.outlook.com ([104.47.32.68]:6638 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756111AbdELG4w (ORCPT ); Fri, 12 May 2017 02:56:52 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=amd.com; Subject: Re: [PATCH] drm/radeon: Unbreak HPD handling for r600+ To: Lyude , References: <20170511233112.15962-1-lyude@redhat.com> CC: , Alex Deucher , David Airlie , , From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <70de5a62-1afa-b13b-d0d1-c3415ddbc788@amd.com> Date: Fri, 12 May 2017 08:56:38 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <20170511233112.15962-1-lyude@redhat.com> Content-Type: text/plain; charset="iso-8859-15"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [2a02:908:1251:7981:fdfd:995b:6c6b:e217] X-ClientProxiedBy: DB5PR08CA0046.eurprd08.prod.outlook.com (10.166.166.142) To DM5PR12MB1308.namprd12.prod.outlook.com (10.168.238.7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: df62d225-ab27-404d-f4b2-08d4990410fa X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:DM5PR12MB1308; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1308;3:R7TE6vKjmdcwf4mGpopnE9A1wkIRNLQOpSx8bKlrUmVk43W+XR92swgLR2VbauQExMEeA/x8Jog+LRJbrtOO/oNOPpa3Lc7zgQT/Gcugmnf2Hya53dl0eeZszz5vVLXgXAD5FKxJh5d6DVPo7A222DwZXcEPnjGJ5BHI1IBBmzq8ZHujOMDWov4t6lo0dV368tnkXJEGJ+a3PnbSfoeeK3JIlHx9i+YW6Rt3d0XKvya43Oi2/0cuygvLZj9HB+mDtUZ+5b5endjDaiIMuc61yf5ws2jp1KUiQOVxCN5cWByBTvwj8CvUP8EZXUU7qVgm+opPqPizjOi32FgWZxiKOgcGOa7cdmdtDeLpB1Tzrww=;25:7SSdAqQuPCN0pMs8HSL/j8Tgd1Ct+3AuWpVmmuAIkj6K8UY7qE0xdY358S9lg/SlAzZLeCj+F9CXMUasy+H3vwuYdZEv4shAZVW4D7wttDWA3DeJbTOvmVKVydx2e+1hLKUFkj1Htrg6SHadaaZo5NsgTgYytFaSAb8OAmUZdlcbgYp+8rY+GoIVZ39vVQs3ms9SbvjU1z4f8bIYYYxI0Y5YOcweuuCzE68+fIsPk4A3F22KJMUvlIUBfd+umo89xensLZAN8uDfnqXx/ITquvAMt6BNjVJB4w/KqLJLMsLWocls5j0n/qkdgMBL05hcg9gFltL4PCsPRC9mkyXIoiQB4Fp/iDp8JQij6m59UuZi61LsRccvLZ4CJDQzRkjJYbI7QhYvtkbnkl2U7rjAnaAWBmYQqrmlPwzUxQrQ1SUoqW+xP8AkGq9ZGsy4tOcKBoKvnJZd4Epm/U9Ty8eQKdi7oohld3HOiZIQ5Tg0vtg= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1308;31:J6KWSrXlJVRmQ9iObzarUBCNeMFLhUYtTWCutS5nazFi4ZJg902poCXLXTIzpzi8zz8vGyYdr9+W/imUBgUt6F0M1B4bZpT32HOQhi9wlzCtiY9fGXsHRQ92s8DAusb6NINTho7e/s+v303gX6DDazOtg2/Hbk/ugt3GPdZQkq7RwHHg350ZThVU4KeMJVmn5riK+h/exVorOeKzsrykh70LFKDZmKpr/bMXZnOUSbI=;20:3r6wy3zFJh1wJh2gSVxL57RacCTZQNqEFp1oi5jPo/Q2ooHKbG42Q8oNIOH5R7Ch5Xcj+W7NcfMLxMLNNPb+P2HNr/disD++OaQqwNWtshkNZyoc4mEG4wYkwcUS3Cs9RpEKLPLdrKytAAIuWIYDksyTPzfajafO0TlvcakC50uuaFvC/mbRk1HgK3mslhakLZZ8goH5lB4fO75Mv7kU0AP+S6NIZTwC5K4ghNaed2iz8orZOivHGOl8ZE/wYvenXFApzI3Qja2bzURPd0UG8wk4ts9MEwH4LNHdThbeC0DFNHS2Y7U5v/u9F1xLj4qPYyY+GTCC9iHjW0zlKKSo2e74rDjm2HIZqTFsId716S+///kfkV/iRuuO2F1hK43+zFls9J+sz65NsqaUNKOEAztSlJzzgY+5wgbYw4sQbU3fuc1t9pzG0hG4kpZDO6Qi/Hs47Eecdm/oYjmDie1C2CKwjT4PSObbGcezVzZbQGX0jvVJEriEynMSAuwGiYWG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041248)(20161123558100)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148);SRVR:DM5PR12MB1308;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1308; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1308;4:eqGv57Zh4DrmI2xotwzUkiTopI3T8rCdwsJk0JMZCuYpLNfLYowj2e9vlE4XWN3xBG3mWebzrcV0TGuXBCp5aarcDfj7BPAZ1ACOEhj2r2d+Xs/0h59ffP580n7HjfqU+0cDO3u/pxAq6fMNPE0t0WCys9G9lyn09JLF2Ey/JYEb7VYSH9e9q5d+h5aiAnf2gKaxu+Kt0RJCmcHhnuPnoRdGaEeAbH7MWiKVTEYdVzm4lRzIsvXpAFha2y459LcJKTgaPs9zQyldm2ICPzR0ssv1LrAksNpE1W+Xb4fFmaoYAqa1K+9ouQoK8NRzmBPy2835zOb0oqEJDRZkifIDfDWc/Ly0pfF+yFMDt5CK/lBcSFC+qa/3SO+YvzrZNPRj+kSsN578s8BarTr+22hle/sOZ12cIJeCShPOnBUybnXN5vYYGNJFuvmjUCkrMYwTS4IUhESU7INZS+6AoUTyHrhIpjfNMcCjyHMNNH4yNodupt/MwVS8NXQtP2dOzomT9ShO+ZRl4UJlzV9R9XUMKflnlIrN3PWK6xLbtpPELfj20KC3OcmjZMqnsvgC1nff1RABKQ14ZziiDvpR+DE8rwBtKaatj2LgVLrVrJrga0tF8AbPnNysHeZ3Hf1+F9WUQre6EBD3ch7F/fcxsTRTEmi+Wvxy/UCMseH1mfHoB1JQ5HhXaNeLIMJFCGzGP7fnYHvXJM9ZM5S0eflhXB5xXGk2VOSLjvd9bb6oSV21vGwKzH2KNmUjdLF5GAznHlOzPzA3WBJF7cFfy0ii7gbstciUM7g8/H0ya5o+cR0/rFF/YzSWbYT/4kFliiBgtqVlIyDy07Bnv5KKbtMq8nIGjP3VyeojtfWe94qijo+t3thZv0gdJSnzRkK3v2PsQaEA X-Forefront-PRVS: 0305463112 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39850400002)(39400400002)(39860400002)(39840400002)(39410400002)(39450400003)(8676002)(6486002)(2906002)(65826007)(47776003)(31686004)(2870700001)(4001350100001)(54906002)(229853002)(65806001)(6116002)(81166006)(65956001)(83506001)(2950100002)(50466002)(478600001)(53936002)(6246003)(38730400002)(54356999)(25786009)(50986999)(76176999)(6666003)(575784001)(86362001)(4326008)(23756003)(31696002)(189998001)(36756003)(5660300001)(305945005)(42186005)(72206003)(33646002)(64126003)(7736002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1308;H:[IPv6:2a02:908:1251:7981:fdfd:995b:6c6b:e217];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-15?Q?1;DM5PR12MB1308;23:4Ji20QXW6JhC98p1sJkGUq/4U34iyT6xIJuK6f?= =?iso-8859-15?Q?EQATRydm/5PaDQICp3HO+hHcLgTVbieCS2PqbQILt9kLDOgOEFnlxXq/C?= =?iso-8859-15?Q?iH4lFFoEWiFFQa0/OlcQSH68tSJuJh3mcVnE1oq16w1zEpnNMX8swAEAA?= =?iso-8859-15?Q?iy4kTaRfx4MqNVmRz94fTiCOQABvm3BDAGgp0w5twKyPD3xy0qlIrNIr1?= =?iso-8859-15?Q?fouJEi6yb37ocuQ4qC9ZR5MNhizECXvQlcUUdZknr8NQ12SwO/Z4K7ghv?= =?iso-8859-15?Q?b1UcLueUEuoIqTtj3c1mWaYj5ncn0PpJoA/ekzZeRPWyO+rYFnvHS2/8o?= =?iso-8859-15?Q?cZC2sE+EwUpKC5PgCAesakhXANmsRpgCis2bSYMbJ7aKeEz8c8heR66oU?= =?iso-8859-15?Q?jbIHbXseLdah0M0+gLIKR3hxBOlgLHbLPN3gHlSXCymokXBbgHEGkSMlT?= =?iso-8859-15?Q?x8TqAL/ZVqOxL7Y32ZTS7iu7DkMBDQagtxrEKrzEMSANILZfyCcK40PdG?= =?iso-8859-15?Q?73dPs1UbglBV1fnO0TnzIFF8GNmS9OQ73pi2UT8y2xt6faFMAFrxkNTp9?= =?iso-8859-15?Q?lOCz0ZPuYqplctz8OdpMh3URFbEkbyj5ITx8Ms3naf3K4d/3ePhHi9CbI?= =?iso-8859-15?Q?+eM2ie9uxGJ494XERrn94DfTEmgGsQH9zh1uCy/tREjsX+ypsRDMPvDfP?= =?iso-8859-15?Q?EfqIxUt3qUDOvBOhDN8aPRaR48IKXNIMtEW2nSKu2O4ZdhD+kKA60H8Yj?= =?iso-8859-15?Q?xWJgenyswjJSZPqV+Uu0NiG0MNGxMD3JCLpHsxBfNH8KCg2QVWAcAu5hs?= =?iso-8859-15?Q?lpfAMpcfqgHGDEzq1csp3rfgnNT3u3VamEviP3ExDiajQy/0T+Wwq7/Aj?= =?iso-8859-15?Q?ZA8L04+tmC+lI6+R58YC/tKjahqtkaiOzStaB9rOx76YYx2GRt/RKtvx8?= =?iso-8859-15?Q?/1SLn0ekhSQQkAjhjs75CqpWnwv3Hfj6+8CkNgVghha6lHVE1E3PkzGfV?= =?iso-8859-15?Q?VCNovPwa/FPdUS4QNwGiv39t0gCmlZmaQZoEVM72W8EDN63enQw516ZrZ?= =?iso-8859-15?Q?jKd6v73U2he/3QORoXbigbw+7EO3DSrwL6s0KbumYwh6NPw5O5Kg3K7Zh?= =?iso-8859-15?Q?KF99+B4mZDe78ArG/LQXdvOi/DL4O3J2Eu/3YOPbBMaq7aL0o401xcKe0?= =?iso-8859-15?Q?M1h/mLHK28yP/7ybtJ/jmLpCL6fPAzNRCP4KT0AcYTq1eprWNH1g4zv6v?= =?iso-8859-15?Q?Ys3MJyq8+d+5UejdW804LVCTuOUAcKULXOqH4Jw34uNHCku6Jkt0W/HFn?= =?iso-8859-15?Q?i3Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1308;6:bNccrIF9LsPMUCyZdcjeGknwYy/XDuRIUH9CXNr3Bp1Rhuc8wrtNqmI4RDCf1dH+O5ID+IwJDWKrNdtHn3GZfQxKIeBsHo6XyGikW0obMCcxcptjC15V//62appHsI7jR1wpiT8TWCdvZUlu/rnABRxnjruJlhNsvkSNEi/AvPH79PC/wDdFmN+K0ID/zfGBmApMVzq7F8QhYV2xGV5jU30t9BRkHN4R/U8n7HnAFZRWWzkr7kwgnY2YM7CusIEI0u+g93L+RLByABq7u53Jdq6ZAl0jWlhRzH9KH79LzSLC7God5UlkFe9F5jdZYrkJf5vJKDN0cWDecwvsVsaxQnV/A7GKwQYTnU7L5+pvlszd58zO/dSW/QtZs/dA2rr1vujycMQ3y0Te0elVxrzma2eP5UtGUIaG5LGc4QAtKen4BeGbsKC/jD3ezmgLg0UZ01L0vd4hu5PMbMOzlJIhkvKj5IswvG+MblQZuWwCBQhacKO5rso9IRHm1ZALzUbcSt/fF0lRhk0pItsMjKYACzSkxDNuPcySmWbwM4kSkos=;5:D/0w6QGI2F4UNrn4yoDQxIsKyYMCc2pLdurBdRojmgh00vD6dYUJ6m2+VUkCYu4rqPN2DWbloNGm32V+Mg1yE9u6IGOnTTeqqCIWXl69mgmDWzXYwWh3Y2mpqbB1eqiD+Ti6BAM849l2vU6ovKrOag==;24:a2z89lnXolGfJQeUBxJNjDqRcaw/0zvwSy475mJz2K5PhhoW3dCvu4bOHOB2POOGqiFyPp2gMXHM9/jFR94l9ZPB5AaiQuD2bXV2PRrSmvs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1308;7:scetXINhOEuc8ADeK4rPWb3J74S2jesx8zqjkr/7fwTQQd6O40pTkVfkZ3pfedt46RK/XKr5iPXftM9PAgyC4+wEB/OqJAD2e/+9kudKE2J5WboiRkew2QV88FsMDDvpZ7GfklLOjIBdRknPvWlGG7xFCe8EdWEsjmzl2xpkNu5DGvwGHlvOcLcTxxjC3jIipvoGJOF60xaRzdKkWIAZ/Sk5/uhNGiiRKiin7tVLLe/5fcF/aJ+KPAmMAGXgd0prbUqde8/BxUQf/BC7KjUVQZa0iD4Nw5DC01BBYcRiEDDS3O5VCXUQZ6NIK3noczNGtumqEBaLIy6hoLswzs19/w==;20:V/GEPEH16xffYMQtlWBk4jNxd9CbX5V1d6JEJ1lQyvGY9q3EQ5idoE4cJFXsSPBKDc9Es1BayqpnuYvTVCh1QQuuyBS2pESJkJEj74qMwQPufPuPLqd2ObPlOU94VuufkUGUchhsn3kVWEd9KH7Vv36D5vD0rlV8HicsU1qLL5A8gSdSwjzsoGHTXOgw8LTYUOswgIHT//R54mY5htg5twTHnI8nOdpNY9i7LSWovZQ102U3dAFD4rGPPeldLoTs X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2017 06:56:49.2117 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1308 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 12.05.2017 um 01:31 schrieb Lyude: > We end up reading the interrupt register for HPD5, and then writing it > to HPD6 which on systems without anything using HPD5 results in > permanently disabling hotplug on one of the display outputs after the > first time we acknowledge a hotplug interrupt from the GPU. > > This code is really bad. But for now, let's just fix this. I will > hopefully have a large patch series to refactor all of this soon. > > Signed-off-by: Lyude > Cc: stable@vger.kernel.org Really nice catch! And yes I agree the copy&pasted code in HPD handling always scared me as well. Patch is Reviewed-by: Christian König . Christian. > --- > drivers/gpu/drm/radeon/cik.c | 4 ++-- > drivers/gpu/drm/radeon/evergreen.c | 4 ++-- > drivers/gpu/drm/radeon/r600.c | 2 +- > drivers/gpu/drm/radeon/si.c | 4 ++-- > 4 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c > index 53710dd..cfc917c 100644 > --- a/drivers/gpu/drm/radeon/cik.c > +++ b/drivers/gpu/drm/radeon/cik.c > @@ -7401,7 +7401,7 @@ static inline void cik_irq_ack(struct radeon_device *rdev) > WREG32(DC_HPD5_INT_CONTROL, tmp); > } > if (rdev->irq.stat_regs.cik.disp_int_cont5 & DC_HPD6_INTERRUPT) { > - tmp = RREG32(DC_HPD5_INT_CONTROL); > + tmp = RREG32(DC_HPD6_INT_CONTROL); > tmp |= DC_HPDx_INT_ACK; > WREG32(DC_HPD6_INT_CONTROL, tmp); > } > @@ -7431,7 +7431,7 @@ static inline void cik_irq_ack(struct radeon_device *rdev) > WREG32(DC_HPD5_INT_CONTROL, tmp); > } > if (rdev->irq.stat_regs.cik.disp_int_cont5 & DC_HPD6_RX_INTERRUPT) { > - tmp = RREG32(DC_HPD5_INT_CONTROL); > + tmp = RREG32(DC_HPD6_INT_CONTROL); > tmp |= DC_HPDx_RX_INT_ACK; > WREG32(DC_HPD6_INT_CONTROL, tmp); > } > diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c > index d1b1e0c..c48d19e 100644 > --- a/drivers/gpu/drm/radeon/evergreen.c > +++ b/drivers/gpu/drm/radeon/evergreen.c > @@ -4933,7 +4933,7 @@ static void evergreen_irq_ack(struct radeon_device *rdev) > WREG32(DC_HPD5_INT_CONTROL, tmp); > } > if (rdev->irq.stat_regs.evergreen.disp_int_cont5 & DC_HPD6_INTERRUPT) { > - tmp = RREG32(DC_HPD5_INT_CONTROL); > + tmp = RREG32(DC_HPD6_INT_CONTROL); > tmp |= DC_HPDx_INT_ACK; > WREG32(DC_HPD6_INT_CONTROL, tmp); > } > @@ -4964,7 +4964,7 @@ static void evergreen_irq_ack(struct radeon_device *rdev) > WREG32(DC_HPD5_INT_CONTROL, tmp); > } > if (rdev->irq.stat_regs.evergreen.disp_int_cont5 & DC_HPD6_RX_INTERRUPT) { > - tmp = RREG32(DC_HPD5_INT_CONTROL); > + tmp = RREG32(DC_HPD6_INT_CONTROL); > tmp |= DC_HPDx_RX_INT_ACK; > WREG32(DC_HPD6_INT_CONTROL, tmp); > } > diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c > index 0a08517..e06e2d8 100644 > --- a/drivers/gpu/drm/radeon/r600.c > +++ b/drivers/gpu/drm/radeon/r600.c > @@ -3988,7 +3988,7 @@ static void r600_irq_ack(struct radeon_device *rdev) > WREG32(DC_HPD5_INT_CONTROL, tmp); > } > if (rdev->irq.stat_regs.r600.disp_int_cont2 & DC_HPD6_INTERRUPT) { > - tmp = RREG32(DC_HPD5_INT_CONTROL); > + tmp = RREG32(DC_HPD6_INT_CONTROL); > tmp |= DC_HPDx_INT_ACK; > WREG32(DC_HPD6_INT_CONTROL, tmp); > } > diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c > index 528e5a4..bfeb774 100644 > --- a/drivers/gpu/drm/radeon/si.c > +++ b/drivers/gpu/drm/radeon/si.c > @@ -6330,7 +6330,7 @@ static inline void si_irq_ack(struct radeon_device *rdev) > WREG32(DC_HPD5_INT_CONTROL, tmp); > } > if (rdev->irq.stat_regs.evergreen.disp_int_cont5 & DC_HPD6_INTERRUPT) { > - tmp = RREG32(DC_HPD5_INT_CONTROL); > + tmp = RREG32(DC_HPD6_INT_CONTROL); > tmp |= DC_HPDx_INT_ACK; > WREG32(DC_HPD6_INT_CONTROL, tmp); > } > @@ -6361,7 +6361,7 @@ static inline void si_irq_ack(struct radeon_device *rdev) > WREG32(DC_HPD5_INT_CONTROL, tmp); > } > if (rdev->irq.stat_regs.evergreen.disp_int_cont5 & DC_HPD6_RX_INTERRUPT) { > - tmp = RREG32(DC_HPD5_INT_CONTROL); > + tmp = RREG32(DC_HPD6_INT_CONTROL); > tmp |= DC_HPDx_RX_INT_ACK; > WREG32(DC_HPD6_INT_CONTROL, tmp); > }