From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753871AbdEQIdA (ORCPT ); Wed, 17 May 2017 04:33:00 -0400 Received: from mail-dm3nam03on0043.outbound.protection.outlook.com ([104.47.41.43]:6425 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753795AbdEQIcz (ORCPT ); Wed, 17 May 2017 04:32:55 -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 0/3] Cleanup evergreen/si IRQ handling code To: Lyude , References: <20170516211202.20325-1-lyude@redhat.com> CC: Alex Deucher , David Airlie , , From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <4ab5a070-25ab-1e08-429a-9dcd9218a1af@amd.com> Date: Wed, 17 May 2017 10:32: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: <20170516211202.20325-1-lyude@redhat.com> Content-Type: text/plain; charset="iso-8859-15"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [2a02:908:1251:7981:f869:d664:ea8a:b6d2] X-ClientProxiedBy: AM5PR0101CA0013.eurprd01.prod.exchangelabs.com (10.169.240.23) To BN6PR12MB1297.namprd12.prod.outlook.com (10.168.227.147) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c2ea2de1-108f-48ed-e5c0-08d49cff4cac X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:BN6PR12MB1297; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1297;3:vHPZZm5bFZOo7LApqIUUxytLq8lYYNSegjI0krmoZxuYmqE0B4bv9PgRLzqrwd3fh+WxQytpIpjCy9UE1nX/yPSNfDjVu34FmFexEDFOCh2oQGYmTl/LO9phE6ms/Ew7+rsUhK5JQdMwnzrdbkK/pZbQ9b7zbgvyMuC6juw4ci3G6iYr7yyTG80KtcYnuS6e56k3dlKYHXT34UMkJoJHvTcgVboVpEyeliOE+B9kyM8uSVzZFgA3WaXcOPjjResEJ+txjjSjkDwTdtejlfvJCMauRjDUwxGWF44SQ6c+q+/UatUTuvHiALKQlc5big62oUYnyv8mJWdmartqCu80tNEtByXQz6PsMmtSky6AOWs=;25:9GYxkrmNizYbNeEEaWWl53H5xPufxp/+e4fSHVcxzMXf5VbppsJqc/8Y8Zc12m1VFuK/gCAQOd/Z47XSfn7Gvsa96BHfDoYrpFLNEG8EifZFUZ0z7292FZzfdejqGVDu9KDCW9Q9VuZd1b9tReUmRMVTxlz5ncRd+/2r+aY/PETdkW7IfltM276GIE553195B0b46zNgVQm7P+SoNvo2XrBwrS0yIe+F0Ify//2Eh1FC150iFYpvVg4uxp84UfhHc7LS/6aPXNvWCqhC8OLiGWA6qtev8nVPfjSUl3ItcLFJoS03Tj/MYQJ11X+QPbAk8E5W7h8ZwZ0hHFI8wPPu8S/yeriSsK8oDcTLpEOqWQVQW24L79v/y38ZAf6dxhIyqGeQ1J5lkGZxPZSJ2M8/GviX36S+tTmRVa4TlyzTxXyMbp9kGMoJZV+p2GWu0BI5RRVbZ4SMLyKkZ9mJe1lDC8+93oCRDuuknXITUApH3zo= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1297;31:8/dSOonvS8nreb7E+YB77W8xnOEgI6/o4c5gHnDe+Akinhvkz2GODc9tpJpUHOz+j4bqBISjIr/h42cZGK64cCb7IBJZRM3cecz6mDOu0S8Eo9SOXgn4HFM3dj9OLMXwt6E+kYyJShGvFcSHdFyc2bE91X0LAfyeufrTEalDMri1YH3Xq1kHfaAgK9MvwMYos8E/GLLbC8KHe+x/mLFp7QCMnJQW1Q1gMpEPmG41Ok8=;20:bOoMg1yzLexhzF3ntZl3Xxgm7vVGl9k6zr4Lgmfl96u9eSSoAJhVmGqL8uQaCZNWbS49E6r/lssE4iKPAZnGwQYqDBHqH93Ac4KedZ2RHFTmlVAxaLB7D6ymmwOilO8g3R0IoSWckETl7OSQNtwWn4m24z1kSATgS+eL6X//2aYWP8EfjgRLaNj/ihKl4WMu9jVvhr4VO5OKUn3RX+r2D1KRqIv29Xc60PSDdoyPhKSxMx6H1Hc9PT3xFCz6kmrlpxzbiQ7gObQwDZOFYGq5W7y0/S+pYMv+kxoz80Y2fqTmb0mSNkJ72LY6oYEWotz/yc7mLLQ3Ilf/waPJsIZrWsbUWGBh9bkAPOCfPcQTtKi3+cSieCJeHIyKM3NDy1IwLhmf5NogtHUdpghcb2I/aN2KPAKuaFyx9vU6Zsp6wMg1hkLBA96HCJDY7vEQAJROOx0TcJkBI+93DLxYR0LzbiywrnSHhSYOmPoJh/N0dEqFzGJUgK3/xmqGYB2+9wx0 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148);SRVR:BN6PR12MB1297;BCL:0;PCL:0;RULEID:;SRVR:BN6PR12MB1297; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1297;4:yB2dCqvclSsRBeNosukLRU8N1WwA4T8eyHTql+YAQl3l9Go9dgxEwBq10cWq7WyV1fuqpy4HWp8H5Q4lkptHh1bnQplDfhOw5XYDA7YXOunoWRD8SQ4x0oiI2yTTb/e86/D4ffrPsaDGzkQZpbobpVNVq5D2Moe78f7OX/YVgjK6zTTox0cDq6susPvLx8h2d0HymJILOqXD7xnkRQgXtIWc5b3AVsCKOhw7X+QnFANIgwkxzSeTVH2TiO2rJRsChIrIvwXgwRgKCyOp6aBd+LQkzw+F80ooU0MuboyMhe2CnkWPigMk6AkfoLLuzfKl7kAZ8EfxOft1ST3KX1HL0UM/hvdbc+3JHpJeDgIB2zqjWjyhWZ2ZYkly9qQZn3p3mmoKnk5bcQ0bRG/9iLgIY5u2cTSK5douO2Cw428rT90RCTgL9z4sHh8JjI5YmUPlxqQvd3cSF+rOex6RbrH3sKeLsWTh4yDLmM0ZHADAwC1lS+msAgPDYStbrvsgB1epItvfha1j9aiMHV81AB3q3VWn7fIqHSqrpNABoJFd3wFfmR9MZudvVs0BkhaHEjUkPChW4E+AZEFXkAPhWn0dOX2mNNcokdIWUgzZVfTV1gLVmuYYtdXO8V3vl2FRrxQvwKptOHQTE+YN0M8X0rfwFMuZRaOgx7pN6Z7AXMDIVcOUDY3YSuv194t0VQNAwsBmkzqQ9Vnzk7qidSpEOVgD1K/x2LT64Xt3I6EkpqnKCkhR712yAtBcBYg9lj6Ih1Cm/EFuZ5ALB+VXiO85qzhAsDyTtkaTDdW2ONxWwTv7anesL6eIsoQeiS0d9/5yLN+9eHqyfkmAZ70MRE4T2JNyKw== X-Forefront-PRVS: 0310C78181 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39400400002)(39850400002)(39860400002)(39410400002)(39840400002)(39450400003)(83506001)(4326008)(6666003)(2950100002)(42186005)(36756003)(23756003)(64126003)(25786009)(8676002)(81166006)(6246003)(50986999)(54356999)(76176999)(38730400002)(72206003)(478600001)(189998001)(6486002)(5660300001)(54906002)(4001350100001)(86362001)(229853002)(31696002)(53936002)(2906002)(230700001)(65806001)(31686004)(47776003)(305945005)(50466002)(7736002)(33646002)(6116002);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1297;H:[IPv6:2a02:908:1251:7981:f869:d664:ea8a:b6d2];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-15?Q?1;BN6PR12MB1297;23:kck5C/CbcnNzHjbLvyTg4rucdm2eRqBRn/xTvr?= =?iso-8859-15?Q?XgZB9S9YdRXOD9Rp13AwVDjWKl+uIePunAjcze5SBPKHGPUbQ4UTshdaN?= =?iso-8859-15?Q?BBfe+ukpiZm3lXrBVr0hEsV1ZX6HBc/jzfQeB/axJ8zp48Xkt6DPjwUst?= =?iso-8859-15?Q?iMcXD6i/v/vFYEuFctzjLGLq0Wug0iQ3P2vRxSqcK8RYYl1f82CJW57o7?= =?iso-8859-15?Q?wbfCOMsHJmILNI3FlIJ3s94+nDZQpAThqh1WGlekozuSJt9gPnozJzrx/?= =?iso-8859-15?Q?QrwoQdYkaJTX2XwDZJG09dbqaTHdNKsRY1EHfgA1NEmNtbmqbxiIiUxZI?= =?iso-8859-15?Q?8K11SGXI1ifG7ke086FBnnqcdb7cPrJ1or1xNZLCXhSoP+57jgEhLmRzl?= =?iso-8859-15?Q?VQc2g3XEq7Xt0i0YNETBAsHHYXB5M2ggLnVTjgG2BKnYEGDDSLI2suA8V?= =?iso-8859-15?Q?qG9RemuMcQ65ARfiNVYKxo1ChFv3LlDWpt55di6ChNfPETe0a4a0qGmrt?= =?iso-8859-15?Q?CqGUpCnoZ7mbmXwmgusAoWGRe9YIz1kfqXRguagN+TadnsOO4ylUnMFZz?= =?iso-8859-15?Q?6i6zrh8ierT1zKz2YJyM0Re/a0VUYzM2m4+NZsNixkzgfkg/IgrFxWOSg?= =?iso-8859-15?Q?h4m08DeV2EZaPuhtV05UKwwjegOVPkrUYwxlPFu1mSkhyl4tJ0lArx9yZ?= =?iso-8859-15?Q?957KYKpwn0WIqFiGPXhjs4lR7d+a20JETr4smOj+XkJj30Sf5RsSZuWyo?= =?iso-8859-15?Q?+EbNU/2WyIT2T0lPvjebA1YvULjG/fKUgZMRs1kFIQNaQoPUB+8CPA+SC?= =?iso-8859-15?Q?qWdluOdwyecBsxYob6ntflWxagvXj9n7Bm3y/UvAp/3rm2cEgYD6wo2zC?= =?iso-8859-15?Q?E73bkRNDSJZCLljz4IcnH/XLO+wB8SEjb6/0ggQCodZk4tGa0Dh8A3nqg?= =?iso-8859-15?Q?SlZnosBtJRMQ06JjMeCsk5+e4eA0W1hYvv7HAXr9Ob/uw00k8EicEbsTg?= =?iso-8859-15?Q?aY5jGEgFNvGgSGM1ld5Cn1JnCdzDEZ0TZt3mECjXSIQKx8dt2y2QPb3T5?= =?iso-8859-15?Q?7qATA8MG7oQxw17bqazlnTONPGv42xHMXTU1qDgcXNt/NdUfn7hDfQiuB?= =?iso-8859-15?Q?O8auxKiuhiltgSIfN92+XQtkq8IEJwyfb2X/F8nFFWtCaB3yn80MUS5/d?= =?iso-8859-15?Q?g8U835RBUfJiS1qc0uS29GWZpUyM1iY?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1297;6:5KqzgmcRfByO4JSwVosl24uv4PoSmhtALU83smlUvawdGMIAPFulDFwOCGsB5q2vyWA5eSSAM8DZaWasMae29ZTzm4EqyfNMdarGxAlDj1gosfhv1tSsEOwOmlCZ/x4FVLU5HFixPjwZ6XKK+Ad3ukLd1ain3mna+4l2+O0Lzwl8tJsFQaWpfomQO4kjbpvbvMsP8yOdY0EftowLs6Hnvy+JW9+KE8b4QcsZIB7pdnQq7DG5glPvq8nhHPH8yJqaByg4fH5p+RY/nM+gnpaIHEaFQph/Kn0GAxYxlNtbnrsxcAUK2eutqQSe86HF3fWDg0ybM/QYCMpIl+dRVc2D35CtC8sDUfBCRgmCUM0+B6q/Vxrx6zPI0oZ9oAGKHNGaLbS20KAQ25+vrmGtEBptMpksgSvHDX++Ubz/91eMb6J7q1wNn8b4zV1rq5YKmn6n+jjWwAXmaxU4S/cU8U1hs3z3+e5R7iVAZNbCm1FXBDniOzIbbkNkzDiTXyGcLnd7JHBxmlBbDfu3e0DDAT7SDPIvRtaBFIZDfoxOV4n0NQo=;5:U86KiOLD0PHEs4iOiO75gRz7RbsZkqLFgY5hqCicRAUyJEUJIiZ0QavhKMbiVRL65l1sl7znk8/CB7md4OpENABdXf4fLTueNIY1X9nV+abFd12ab7FcPXe5A3vYc+/LhJCWUgSQMJCOqSUIq8rVtg==;24:rrwhVARIqmmyIX1L1yQOSp4XAsHGKSgXaOKJ+wTXF0wR/GutNiOQScxwIM/AMZgJyiNBfeCH4m5hFvkmudQb2dI3dQVsPvlS0YwATCSSc8Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1297;7:qCex/+bVdm+Dh7S/N/qnQyHhppPPeXyT6s659vPYL+L2gGt4/JcgWZWBduGnzkVa/1yPYnmyz3lZMlusr/V7n4uGhYbu7KT7pb+ARVeAUOXlyA171ZDzQW8fYTYPCs12QskUZbWaChIqKdUIUtFmTE/LyxtBaXajiSLT6OPecv943TOxa+Dcw/x55bti4nTD53QFPEnPbOUMza2sZEulsZt5C54wY9kc3C8YSUZ5feBWuATZPWPZAE1DJS35+HeG+vpxJ5F48Q9IRNCLVxgxHySip84EW5b7n5+etkinYoYefG/wjdDZavqO1ofvsux5dnLo7ABuaGYMKkoLpNgpeQ==;20:THXXOHzBvILRVJ8Gnyi9GvMiu65oWO+7LHFKYHRkOnVcw1/VMYkNz5HuWNc6v1vbJMCVNViNu3t/ra2THqFr5ic7EQrsmmYQA9fYCQ4D/XQmvgTRWnBnNVHGADsuOA2T5cpw4+ezitzff8/AY6U0YyNnbzsmRF8cVkSz6ctoe89p5rtWtrNUcFIty3taFwfwulxvysco4OidS7WGkYMjKpbS4m7YTg09iQT2DrHrbU4Pg19X5GuPpugQwlAVQdiv X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2017 08:32:47.1756 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1297 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 16.05.2017 um 23:11 schrieb Lyude: > This is the first part of me going through and cleaning up the IRQ handling > code for radeon, since after taking a look at it the other day while trying to > debug something I realized basically all of the code was copy pasted > everywhere, and quite difficult to actually read through. > > Will come up with something for r600 and cik once I've got the chipsets on hand > to test with. Oh, yes please. This always annoyed me as well, but never had the time to clean it up globally. Just two general comments: 1. Don't modify the register headers. They are more or less from a database and we don't want manual code like this in there: > +#define DISP_INTERRUPT_STATUS(i) \ > + ((i < 4) ? 0x60f4 + (0x4 * i) : 0x614c + (0x4 * (i - 4))) Instead use a static constant array, e.g. like this: static const uint32_t disp_interrupt_status[4] { DISP_INTERRUPT_STATUS, DISP_INTERRUPT_STATUS_CONTINUE, ... }; 2. Keep the order in which stuff is written to the regs exactly the same. In other words, don't replace this: > - rdev->irq.stat_regs.evergreen.afmt_status1 = RREG32(AFMT_STATUS + EVERGREEN_CRTC0_REGISTER_OFFSET); > - rdev->irq.stat_regs.evergreen.afmt_status2 = RREG32(AFMT_STATUS + EVERGREEN_CRTC1_REGISTER_OFFSET); > - rdev->irq.stat_regs.evergreen.afmt_status3 = RREG32(AFMT_STATUS + EVERGREEN_CRTC2_REGISTER_OFFSET); > - rdev->irq.stat_regs.evergreen.afmt_status4 = RREG32(AFMT_STATUS + EVERGREEN_CRTC3_REGISTER_OFFSET); > - rdev->irq.stat_regs.evergreen.afmt_status5 = RREG32(AFMT_STATUS + EVERGREEN_CRTC4_REGISTER_OFFSET); > - rdev->irq.stat_regs.evergreen.afmt_status6 = RREG32(AFMT_STATUS + EVERGREEN_CRTC5_REGISTER_OFFSET); With: > for (i = 0; i < EVERGREEN_MAX_DISP_REGISTERS; i++) { > disp_int[i] = RREG32(DISP_INTERRUPT_STATUS(i)); > + afmt_status[i] = RREG32(AFMT_STATUS + crtc_offsets[i]); > > if (disp_int[i] & DC_HPDx_INTERRUPT) > WREG32_OR(DC_HPDx_INT_CONTROL(i), DC_HPDx_INT_ACK); > if (disp_int[i] & DC_HPDx_RX_INTERRUPT) > WREG32_OR(DC_HPDx_INT_CONTROL(i), DC_HPDx_RX_INT_ACK); > + if (afmt_status[i] & AFMT_AZ_FORMAT_WTRIG) > + WREG32_OR(AFMT_AUDIO_PACKET_CONTROL + crtc_offsets[i], > + AFMT_AZ_FORMAT_WTRIG_ACK); Regards, Christian. > > Lyude (3): > drm/radeon: Cleanup display interrupt handling for evergreen, si > drm/radeon: Cleanup HDMI audio interrupt handling for evergreen > drm/radeon: Cleanup pageflipping IRQ handling for evergreen, si > > drivers/gpu/drm/radeon/evergreen.c | 915 +++++--------------------------- > drivers/gpu/drm/radeon/evergreend.h | 74 +-- > drivers/gpu/drm/radeon/radeon.h | 27 +- > drivers/gpu/drm/radeon/radeon_irq_kms.c | 35 ++ > drivers/gpu/drm/radeon/si.c | 627 ++++------------------ > drivers/gpu/drm/radeon/sid.h | 72 +-- > 6 files changed, 328 insertions(+), 1422 deletions(-) >