From patchwork Mon Apr 10 23:43:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 749285 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3w26L41PV9z9sN8 for ; Tue, 11 Apr 2017 09:47:24 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="desUGqHX"; dkim-atps=neutral Received: from localhost ([::1]:36476 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cxj1l-0001h7-Nt for incoming@patchwork.ozlabs.org; Mon, 10 Apr 2017 19:47:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59413) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cxj0x-0001cy-HF for qemu-devel@nongnu.org; Mon, 10 Apr 2017 19:46:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cxj0u-0002TY-DO for qemu-devel@nongnu.org; Mon, 10 Apr 2017 19:46:31 -0400 Received: from mail-bn3nam01on0064.outbound.protection.outlook.com ([104.47.33.64]:28076 helo=NAM01-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cxj0u-0002TA-4U for qemu-devel@nongnu.org; Mon, 10 Apr 2017 19:46:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=mnGbK9yeTXoSG2/q1sggl5ZlBaKd6IsswfCHs+51Btk=; b=desUGqHXFTfg2N9DJ42rW3tOq4usNsBGK0czPP5qq//b5w4FTTBCC6FiioPh2JCG/AQhiPW1WNBUzQY+U7fbjDb8xhiseUS9AGWNavGjDUqCYafFCqZ0nJI8rwLZpmmoAvSowqmkY0tsRSCYmDC8t0WVnzhIB4QhZMYosR+o494= Received: from MWHPR02CA0013.namprd02.prod.outlook.com (10.168.209.151) by MWHPR02MB2591.namprd02.prod.outlook.com (10.168.205.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17; Mon, 10 Apr 2017 23:46:26 +0000 Received: from BL2NAM02FT023.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::207) by MWHPR02CA0013.outlook.office365.com (2603:10b6:300:4b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17 via Frontend Transport; Mon, 10 Apr 2017 23:46:25 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; amsat.org; dkim=none (message not signed) header.d=none;amsat.org; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by BL2NAM02FT023.mail.protection.outlook.com (10.152.77.72) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14 via Frontend Transport; Mon, 10 Apr 2017 23:46:24 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:35381 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1cxj0q-0001GR-IQ; Mon, 10 Apr 2017 16:46:24 -0700 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1cxj0q-0000VX-FC; Mon, 10 Apr 2017 16:46:24 -0700 Received: from xsj-pvapsmtp01 (mailhost.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id v3ANkGdd001599; Mon, 10 Apr 2017 16:46:17 -0700 Received: from [172.19.2.220] (helo=xsjalistai50.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1cxj0i-0000UF-QG; Mon, 10 Apr 2017 16:46:16 -0700 From: Alistair Francis To: , Date: Mon, 10 Apr 2017 16:43:49 -0700 Message-ID: X-Mailer: git-send-email 2.9.3 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.1.0.1062-22996.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39850400002)(39840400002)(39860400002)(39450400003)(39400400002)(39410400002)(2980300002)(438002)(189002)(199003)(9170700003)(9786002)(356003)(5660300001)(305945005)(4326008)(36386004)(5003940100001)(38730400002)(189998001)(39060400002)(47776003)(2906002)(8676002)(48376002)(6666003)(2950100002)(8936002)(81166006)(50466002)(50226002)(76176999)(77096006)(118296001)(36756003)(63266004)(50986999)(106466001)(33646002)(54906002)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR02MB2591; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; MLV:ovrnspm; MX:1; A:1; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2NAM02FT023; 1:TzSw5kMZ5oVqGi8NyiK4EIGEgCEw1OJCTTekulnJJ1LOAaWWnq2zBMK4rN5KFqq25dwA/9qg+8R7L+nJFVnXtW29NpQSpiE4E/3QJppD3R4IT6jZmI3PodlX6eYoqlm0RHhJ7/jhqZsj9CDM6wPajav36JICBfBC6sCqn+PuGFWjkKNcy85E10KIyspMNIr9Qq/5s7Eq+xT3jJjGLI7J/y6/nBySkak+R/eWJU0eoTRwsMnKgI513GlGsNQCgFNjeHb6I2c6cxM4C8YTr5fEE+kK60FmIfpqipbiQKcTbV9vrNdvT7gGsjt5IgUmPrMjH5GzZtEORSUMdsMrBqH78bswWpVQZN2YddElqFAPRpCUl0bj57YiH4WdtaDg9+GgYlq1pGrxXwEd2u0GbanycVwD95WaOLwNcCn4/PD4v55HLZpE0t1BKJHhjpWggsZTSD5Vfa/IdWxtpsW1K9qcOJs7Nf4IFUZz2I7dBm6F8K//TCKlkhPGOzdpgi4xqALUuK9FJHJhlKr97FZjtb5x6cmu36uJoc1i+hQDo0nbVwb3g9LvNcjLQZXJ6kT10cF0CqC3gHBKkFBZuArd9gQf2gEPRMNvKS5V6fJbK4seAkE= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 355a2fcf-30ef-4dfd-f7bc-08d4806bccc5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:MWHPR02MB2591; X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB2591; 3:+Yk1baEGmgdHTyxN3jnDSZrb3cUB+YAq3dNaI5iAbvnR/aKlf5pdxvwZoq7WwY+ujweoG7Q1RzENBeLeFyIHbA1d7z7lrgt5nxbYq6Ctm4FS2BIUVcH3eLKLAJlRjRMwomITu4fk4dvNHi5Dry+O5jMu3xtdIzfTQWj6WYsgPK4snq852z4tt+AUtEaUwnYwYdPyHqGpBmlBG60SjFG2hlPHgdt1WEGncLSHjbB1TZ3TDYhUoaSYwdG8Pj5wUWMxNX0d/5tzBPC/tEqVFNMuDNS5JOXM04PCtOcZM4E33dh6siwinPmEDctAkUF6Nw+LPKZvpY8EiUZhkIL96urgsqLTX8GvwQH0GCXuY7nq+2LftlX/XxOuCgZIeP8+PQFanPXdl79eZpkGFnNsCm4fbUei91x8QFkB9TduH81lVarGlnXKDoZESc/d81vtd1ksEhKptfnacQFMWk8fSaK2eboPObnFJ0dj+b7ABSzIB5dCF+WofxX5/95kf4Bb2rePSUQFLptjSMQ1FdRvkI+urw== X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB2591; 25:T/Fidsj7Oxm0suNprhRYnxuxirSMk2fDi1FDm9QNSUZqCkRAd+E0NjovgTw3Yjo3aajGGs6jkGMzV1EZ9bai8OmCOxCvLqyzn8lrgB22xh7yOHA0ccBN5VdrERQjMEO9e5EY8appQHvl6mjiULboX7x0IBh6WDgKzmpRD/tdTHV73wY+CCm340rH8YPJm5pHW0jNZPV3Y8SEoaqzDU31G6ArhTeBf5FTvPfY+jai5yVbkqRAL/Jz0vvWjHfaFnRlMOnrlr1NmjKbVleOI2XvU58uzFifUCU89I1sdtxryJ231a7a8Wl0VtUlTQCsaJzX5V/ywrk2j1fEjkwjUJDthjDGH3jRbk4/6tUNOx/Rx56p5vtd6q3hb7wMj9mawhhZ6lGPfwECG8Xp7ffD0P1Hx5SyttzUOt5fEoi+p4qNt/p7zvpqO5B16dydmC94ElHYRPUX8YY2tH5PqNnyGM/eVw==; 31:AJS+6ID0Dqux4jCnmh1uEXUXZPLW0xaxlHfKKeRoPn7AummxmZnw0ANEC8wKE+Uq69yUFAgyUj7D0tsy47QIB96w7YCkqA1yUaJthK7Iz9gZCLwE4JfLdsYjZR2gKcu17PjExGu6Z92blcZtmKwBLL0a90XxKobznUY+BJh2C9zCaeR3K2XmdrNPS+G8RVnTefdnN9yag9TWZCIM2z2Io6SeorHyAZw0EDJ9ki4ZFQZZlGBTZ5oeG1noH9+jNPo/8dCLZfHsTzT3EQJ+6lLaOQ== X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB2591; 20:clM8jSd7zbLPMsDgVxIOvrY+PDuYddGitXSj8ZAbw6lcMegEcmQddI3mbfK2L6lb2DjN178Hw9l2MMnowwYNHAurIGy3B/BJI+E17T4guxDYzyVbjOZpaYndyzisch7fNixA6A86uOqnaxNsvS1Xsfr7NIQkxJSwv84r1NZQCNG5pJZOAsDYrlwVBNwl/KfC7T0JY/o19Vmp/hBtz+CL7jkqh+uu2TQJKHj8+ZV7cILJ5Bxqbzph0gzBqWas/enTQq+W6WjJUvOxcWeatertJEMZdTJsQnbOwoUppxK2ulttvUYjSVQkxX5oybqXbjhTp3jWY3CMQ3uQvfSvHh6z4Itkv3jRYFlD2VRUGVW6KCbLs2QxNHrfm/TMEKnOzkPblLdx5AUtYypD+/Ubjj3ebeJ5xL4X+6RBq1TZnLsBR4uCpJczq7ZHIG8sPGxiTOlWZVj84KXO2FopfRbydhUKSDZqu4UKuJNs+zjmHJn0y9N8Epbc8tpVPlv8DyJv6Qs9 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(13015025)(8121501046)(5005006)(13017025)(13018025)(13024025)(13023025)(3002001)(10201501046)(93006095)(93004095)(6055026)(6041248)(20161123562025)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(6072148); SRVR:MWHPR02MB2591; BCL:0; PCL:0; RULEID:; SRVR:MWHPR02MB2591; X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB2591; 4:vdn2DBPm30T2e/5aDm5YIR3eI3yIqzm/6tpeKN6vA9zgI1BF3x5LQ4t+taSpJ5VPdislSM6fVslafR5h4iynx2FEsXqDGDiEj7DYk9Nz6/tPXlqma2LRzP3B9g8IRtl5SYe0Ys/PdMOPKiAvCt6fxU+CmqvNSo6WUoB37VnQub1mE4sXLngnkGMTfOPh9BvO6YkO3ClU8AaCzSJwGALyfkV4MRrbFCNryoVlKux+JN/zwG1qp1Yu+46KRAxAgNJaiULmjxk/EKJBn6Pfkf1gYZ09aIhDf8zTyN/PtfN0uSOEOeXl9HIcv+ScwSaWwbpPr4VlPHBi+k1h9GhllIslZnNQhJE7us+53nXmWcel0XjAjjTrpYPP5qPHc9gXVmrK8T7Dt5tUniMt2kUrw3caBuHEI6VVUv+ocXqPcYrIfgsyBikT3dHqrEdNbZT/cxagaTaVq4JdZhsBB6x7mEYxYqogkrFje8sBlFytCZcIhwYKMLGUQVVMAu9t0wPqgd9W9IWV9b2yL20ywVRe0PucTtk2E+OxxL55JDGhqRRkbnTY2I9FsStBOwfqLY3p8PEfoSwRpoxpH5s9vSornDAulYVyvi9lxmGuUTD2PnXXVHqQsMPx6ngoRqXpcvTyG9bcHj0DUCwquajv+lwpPrbbKx6dAVSJnF0Esl4dxuh5Ss5Dq4yyMXWKSSjw+kAUtzDDRSETZq/My2dpeTlNvTdGag9jwo48ISKsVvVXIjeScnAj5MiEccn/Rk536U5H3xWb9IsQ0QbwoJS1YmwPTwQxsKnCxVpfDM+xjr3kGuMUjZoCnv+vF0URTgv1GlngoWiolAGRxQV40+a/maB1b4SjTnufy5+SkilWYG4EblUQJdoycqaek/PMa9lGM9NhrFEuht+yejGi+wqoo0TrRrAm+hWa4hfhjZvRc8dYvUkcoEc= X-Forefront-PRVS: 027367F73D X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR02MB2591; 23:VmnLE3fUD6U5fUjTT9yJ2TvBgFXJkKZLdPERcGIuj?= =?us-ascii?Q?YS4Z4XnNZ0Xm86OlgQN9ix/Dp0nIifRjr8pp+vka0oL9leHuUVs23JU+CJtj?= =?us-ascii?Q?oQEsx6b74i5v85CurhnbTbMOv8GijR1VTAU0te+KtUC03lBEmmBb87dM0qfg?= =?us-ascii?Q?JZF3Ty5aV3VF6fZz6AngbI2jSmpMIRDYlCuuDdb7Zgr6EepfpABNyOWNu+ii?= =?us-ascii?Q?msSe/ZZMrtyEMU6Tv1CVwubiNp7eyYcG8Knth5Bixg8lQXvrhJSXeqvaRtp2?= =?us-ascii?Q?Jagr9YsQ+SfW/uVMKa2pEolvJGmMw3YN2M0WHPXFHUv6ko6PZsfPG8uPBjB0?= =?us-ascii?Q?zdm/nnDQK73AZ2f+jZ7ihy12Gblkr5EA19n7uk2YeGVeatjFxNHKYHo/dVoS?= =?us-ascii?Q?7E0df0FYVmltCgpD2PAZxMt76wvpK51Ub18qaMk00lv+z6PRIvLz63FSxXId?= =?us-ascii?Q?BF/lxl6cfQVz7E/VSG70Gs4suSkz6xwnyEDYPKRtPAb8oOXJifLKOB7m1Deg?= =?us-ascii?Q?02CDkeIOdDdzeCjic7nXwDefS91JGqPymZG2SBV3xLBHNciIkzMPiPsbFV12?= =?us-ascii?Q?rvf1+qzUKWulEONRd9BA0rrun90Jt7YwXwvO5n58Iv7XAOFEVwKWynflPtnP?= =?us-ascii?Q?5ZDuP9EnxZxn3VVr1rR+HNQJPA2Vdr9iK8oHhRVvpT1OJjEcj8EMH+cDVXY8?= =?us-ascii?Q?IdMGtrqUWHT17o8iB3oeCxzkVi83RqKXl85HDj1tGvK66nEfn+HGVLMRnjkS?= =?us-ascii?Q?zMxIuT6yYm88j/jBmf17ABFBiioqcnNXKZa/cC93YEYRnEemMoqZGTAn7P2T?= =?us-ascii?Q?lwTfO+iwW1JAh0/5+wQstpzexxz9tUoRGHp8iuOdNOeOy5cD/vFV294krkeF?= =?us-ascii?Q?7b0FPScqex9CNWveIeuvfVLWn+tcK7kS76Tj0c5Y2NxXCLo23QRjfzfvn5pn?= =?us-ascii?Q?D5YOfNOyVFaHC8eI8gmotv8DIYocIFgVPj4KDk354y2c6JzEYWrYweaPvFda?= =?us-ascii?Q?Ve+ba1JI1AByuKPsqjUt+QIFvi/fZkiJVsVNn5NHN5gCyYIQvDgXka5f+IWU?= =?us-ascii?Q?hUl46IWlQeZp/iJ8o+z+pk4yvt0?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB2591; 6:TRWha9dex/c38YQyLKovB5+AhTfPOYuqoanifY8QLFPR4WBPKbQKOrRrUfzZR7gDCaYrBJ1GC9tCfWfSEJLuwBoGYief2s8cWgNGA0Hwd0DHUTbZ+3AfuxIqu2k5p9VlDdUtdT2i+G5kyVCJRIQwR7bjqWS0rfhV4ba+zaLnVuWH6/5BneLHZsK0AUBTGoOFvcwzs/WxRkjwMwSIW5L60z3JItEIGR6ohRghzmiQVKc7emavrBzLUD2z3GR5rWoE+6V9d1jxxEhLyoewmoEf4vfwPXcojNrFaTIHUw8XZbdJEjGHMooykQbHAc4WTbuyHSrRUJw8rXZeQ5ho0XPry6djmGMFxdmwO/ZrCI23YvxkCuPB31GO/YPPzf55Dym5EYia7bIOtUAtsAfvny/6KSFoJsgh36fZVznFrgl3um0bdWJdIKVQLPvCfZmBwhI2VQQ6Tauhkd1oaWAR8Uc/XPa91ySrrYaiwDgxLWI9UZI=; 5:7x9czFmiOT6qFhHN62u6dGsLgU77DpciyY9Qwrx9uXeACkJIEiix5EtF1sl1QV+mswv97G+wCWaiUYZSRxApj+TivLd+/G/y7qtKGlLPJjJbcP39no0XbNNnWuGl+6Yw19GyMY0Ov87kTD4+7Gy1EXxS7OB7gNbETq1jY/5SW1s=; 24:QH0G17zLoRLXFHPB3nhNDqO1Vpoj2ty8n80RWQW1Zw3i7WE0jCbQWcVV3xYTIooL+Vlz8NQofNJ/tMQYhKsuMVhICnQF38GBhG6jOQxuv9w= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB2591; 7:jokRZybVuasL04udxpMHvOx0RTaNvfbwkzrvPq5FXqvezgj6bxad4xYL7WzeMPwBd7FJGnUHdDgobu0CyZOvCs62hgdCtaJNksx/894T9woSVKyzNsOHCKkZEa5GLJ+WDe4/xhhzQFtXrQjLWCGXnbr2CmlLy5XWjYn0OrjLQt+cXQhSKz3ZkkFrRWzTY/pVvmRl6upd/FgKENmWP7qi1wGK3M1+9c5jc9gqAM+C8k3LJadWMPkPNsMwl8lFU3hpRWVI2ChT4xxvdVrT9g5IYshTZ+MP67vdGhJQ9pR0e15QS5U5caaaHE5Wg2Bs1uyu39SCLsFPnT3awHGIBmlNTg== X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2017 23:46:24.9589 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2591 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.33.64 Subject: [Qemu-devel] [PATCH v2 3/5] cadence_gem: Correct the interupt logic X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, f4bug@amsat.org, alistair.francis@xilinx.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This patch fixes two mistakes in the interrupt logic. First we only trigger single-queue or multi-queue interrupts if the status register is set. This logic was already used for non multi-queue interrupts but it also applies to multi-queue interrupts. Secondly we need to lower the interrupts if the ISR isn't set. As part of this we can remove the other interrupt lowering logic and consolidate it inside gem_update_int_status(). Signed-off-by: Alistair Francis --- hw/net/cadence_gem.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c index a66a9cc..fc3a184 100644 --- a/hw/net/cadence_gem.c +++ b/hw/net/cadence_gem.c @@ -509,7 +509,18 @@ static void gem_update_int_status(CadenceGEMState *s) { int i; - if ((s->num_priority_queues == 1) && s->regs[GEM_ISR]) { + if (!s->regs[GEM_ISR]) { + /* ISR isn't set, clear all the interrupts */ + for (i = 0; i < s->num_priority_queues; ++i) { + qemu_set_irq(s->irq[i], 0); + } + return; + } + + /* If we get here we know s->regs[GEM_ISR] is set, so we don't need to + * check it again. + */ + if (s->num_priority_queues == 1) { /* No priority queues, just trigger the interrupt */ DB_PRINT("asserting int.\n"); qemu_set_irq(s->irq[0], 1); @@ -1274,7 +1285,6 @@ static uint64_t gem_read(void *opaque, hwaddr offset, unsigned size) { CadenceGEMState *s; uint32_t retval; - int i; s = (CadenceGEMState *)opaque; offset >>= 2; @@ -1285,9 +1295,7 @@ static uint64_t gem_read(void *opaque, hwaddr offset, unsigned size) switch (offset) { case GEM_ISR: DB_PRINT("lowering irqs on ISR read\n"); - for (i = 0; i < s->num_priority_queues; ++i) { - qemu_set_irq(s->irq[i], 0); - } + gem_update_int_status(s); break; case GEM_PHYMNTNC: if (retval & GEM_PHYMNTNC_OP_R) {