From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155873; cv=none; d=zohomail.com; s=zohoarc; b=ktQaGEwVxzdUz7BuHE1tkLeJhQRqh6R4zE7epwmGPAMKHGqjdxZEkco6G1aWuIVt4arfsu8R67Ss8T4SuWRE0kOAuoMV4wHnrm/Fpn8+NMOsov88z8T0DRwcd2v8Bpj2i8rM4iqInTmXd3kd3sHuqvKKWRN3aFCDGl7JvK6+N6s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155873; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GRZOC2tSqmQDMujWz+eg0jjAA3OFDUOED5xf58eJ/zc=; b=JbS9A8aGdqikRGjB1O9EZsJamsS6VvMQJxnt42nR9jVYUY6wB07bE6tjgPKbLs55wwrDqGeaJ4HdAB7FTImznTJ9oZ+ojKNcoQT1ooQIIanY1c9fqUUNjp/5493rxuZD5N6RqKpKXleAak5bXvEvJ8IZ0rOk4YESDiiT40rRLgw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155873615921.8632143220776; Thu, 1 May 2025 20:17:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAgtz-0003nb-RS; Thu, 01 May 2025 23:17:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAgtw-0003nM-Tn for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:25 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAgtu-0003NE-PB for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:24 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-7399a2dc13fso2410908b3a.2 for ; Thu, 01 May 2025 20:17:22 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:17:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155841; x=1746760641; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GRZOC2tSqmQDMujWz+eg0jjAA3OFDUOED5xf58eJ/zc=; b=M3LVXI8NDODMJmPayzpm8Q4q8H+vGejj+RXDlBKp4Thk5cl5q61twS7FgBwKuouUxL s9geUpy/qHW5Atc76iN3EFgbo4YVaK8eQXvAv4HorpiU+GJNirMwcK0Va9AJXjOGVFx4 M8XmdhfS665OfSIv2WwJ3XHJfz8wAU7j2vnEzhODjn2RlaTjpF+2dyjZ4nGHNjKmQIky lriLRhu2LjJBXIdice9cb58u6UljqArDcBWac/u6/7WhEIOafzPG4H3VgbWsrEJ9fHEy szoZkMKnEIgqrUfSC5nvyEpuGLcBYHNuLx8Gt1j4wjoyXZf8iDR4N2ADGHjuXwvTnte+ wSRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155841; x=1746760641; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GRZOC2tSqmQDMujWz+eg0jjAA3OFDUOED5xf58eJ/zc=; b=h6J7Ox2F6mE/Cof0zTDm/X7qgLPuQOEOhd1D+i2UokbwR0j+/xBocl8KQMHWIrrY4F kxbNBladagAboDbjdgcE0TQ9fOX445w/Ir0z5AvKJ6DT3v8PCIhxQw6vr8dJpIQZEVwM TqYJaWu+nHKea2Plp7oYrNU5lBh1n2iDhLS1sm1/vaYNhwdETnffShNdesxMMeGaTSIC LImLQ0+sEdx0NBmlcUpf2WMbBDDQncRvY1uqcyEZka01+BWfzCCKlsVpl4nBG8U/Zpz5 Q16dGXt6YaFsE1H6/f4vHv9gtlDlP4XLG7zWrxDAVuyCDJXs9qW9FtixOhxNr7V7xaOJ 2Hlw== X-Forwarded-Encrypted: i=1; AJvYcCXibzLHX4rRugnhlW7txPGPw9EnMk8zA/gu6NxFSZyQiS7HfSNrKSNZPZOsy9lQo7R5MHiSKkHQjyAY@nongnu.org X-Gm-Message-State: AOJu0YxL0pPPRDGFK2q78+z36FzcWLkaWSU9ZPcCLtSgZCUz5G6HVwc/ rzSCFeDFFqzc2EOWOi4xGQ1ir/G0ItGC4/bmvkNSiOUJctfau/nI X-Gm-Gg: ASbGncvnEuOqdhJpeMO3oXXMFDcCRFP8wHkwYL1mkKTqACdSALuIXjE5azKAbjG65Kt LfOpLVlFv9fpbYBhISMUa6AX4UXEppusM3a1U5A/0DQVDchBM4atjLrh9TAyHYPwpesLBtLuCh0 uYqKIn6RRTcOUo4ziJ/6Ogjo7ccyKCGwTqhEffu3qAdayMnv+CaBCIqxjnrNCOPSj7Kg84OZ6Jz bLFSyE39g0lyoZQs4+ckRSVVRDoQ6buC+6svweqBH6c9CIiU6dD3ZN5a1ymjOaW5+yLDZQv3d+b xFRgPaRnxqH/DlbRctfIsbZyWOvgNC8lOJqTlKlpiRwp X-Google-Smtp-Source: AGHT+IFRWe8seUINssS/IjzjxANGuLPyfDc2PfnmvUIHJP+vZ8d5whePr1MXR06O4adg0cHEbMcvTQ== X-Received: by 2002:a05:6a00:300a:b0:736:5664:53f3 with SMTP id d2e1a72fcca58-74058af0dfdmr1649720b3a.15.1746155841073; Thu, 01 May 2025 20:17:21 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , "Michael S. Tsirkin" , Marcel Apfelbaum Subject: [PATCH v3 01/12] qtest/e1000e|igb: Clear interrupt-cause and msix pending bits after irq Date: Fri, 2 May 2025 13:16:53 +1000 Message-ID: <20250502031705.100768-2-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155874974124100 Content-Type: text/plain; charset="utf-8" The e1000e and igb tests do not clear the ICR/EICR cause bits (or set auto-clear) on seeing queue interrupts, which inhibits the triggering of a new interrupt. The msix pending bit which is used to test for the interrupt is also not cleared (the vector is masked). Fix this by clearing the ICR/EICR cause bits, and the msix pending bit using the PBACLR device register. Cc: Michael S. Tsirkin Cc: Marcel Apfelbaum Cc: Dmitry Fleytman Cc: Akihiko Odaki Cc: Sriram Yagnaraman Signed-off-by: Nicholas Piggin Reviewed-by: Fabiano Rosas --- tests/qtest/e1000e-test.c | 9 ++++++++- tests/qtest/igb-test.c | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/qtest/e1000e-test.c b/tests/qtest/e1000e-test.c index de9738fdb74..746d26cfb67 100644 --- a/tests/qtest/e1000e-test.c +++ b/tests/qtest/e1000e-test.c @@ -66,6 +66,10 @@ static void e1000e_send_verify(QE1000E *d, int *test_soc= kets, QGuestAllocator *a =20 /* Wait for TX WB interrupt */ e1000e_wait_isr(d, E1000E_TX0_MSG_ID); + /* Read ICR to make it ready for next interrupt, assert TXQ0 cause */ + g_assert(e1000e_macreg_read(d, E1000_ICR) & E1000_ICR_TXQ0); + /* Write PBACLR to clear the MSIX pending bit */ + e1000e_macreg_write(d, E1000_PBACLR, (1 << E1000E_TX0_MSG_ID)); =20 /* Check DD bit */ g_assert_cmphex(le32_to_cpu(descr.upper.data) & E1000_TXD_STAT_DD, =3D= =3D, @@ -117,7 +121,10 @@ static void e1000e_receive_verify(QE1000E *d, int *tes= t_sockets, QGuestAllocator =20 /* Wait for TX WB interrupt */ e1000e_wait_isr(d, E1000E_RX0_MSG_ID); - + /* Read ICR to make it ready for next interrupt, assert RXQ0 cause */ + g_assert(e1000e_macreg_read(d, E1000_ICR) & E1000_ICR_RXQ0); + /* Write PBACLR to clear the MSIX pending bit */ + e1000e_macreg_write(d, E1000_PBACLR, (1 << E1000E_RX0_MSG_ID)); /* Check DD bit */ g_assert_cmphex(le32_to_cpu(descr.wb.upper.status_error) & E1000_RXD_STAT_DD, =3D=3D, E1000_RXD_STAT_DD); diff --git a/tests/qtest/igb-test.c b/tests/qtest/igb-test.c index 3d397ea6973..cf8b4131cf2 100644 --- a/tests/qtest/igb-test.c +++ b/tests/qtest/igb-test.c @@ -69,6 +69,10 @@ static void igb_send_verify(QE1000E *d, int *test_socket= s, QGuestAllocator *allo =20 /* Wait for TX WB interrupt */ e1000e_wait_isr(d, E1000E_TX0_MSG_ID); + /* Read EICR which clears it ready for next interrupt, assert TXQ0 cau= se */ + g_assert(e1000e_macreg_read(d, E1000_EICR) & (1 << E1000E_TX0_MSG_ID)); + /* Write PBACLR to clear the MSIX pending bit */ + e1000e_macreg_write(d, E1000_PBACLR, (1 << E1000E_TX0_MSG_ID)); =20 /* Check DD bit */ g_assert_cmphex(le32_to_cpu(descr.wb.status) & E1000_TXD_STAT_DD, =3D= =3D, @@ -120,6 +124,10 @@ static void igb_receive_verify(QE1000E *d, int *test_s= ockets, QGuestAllocator *a =20 /* Wait for TX WB interrupt */ e1000e_wait_isr(d, E1000E_RX0_MSG_ID); + /* Read EICR which clears it ready for next interrupt, assert RXQ0 cau= se */ + g_assert(e1000e_macreg_read(d, E1000_EICR) & (1 << E1000E_RX0_MSG_ID)); + /* Write PBACLR to clear the MSIX pending bit */ + e1000e_macreg_write(d, E1000_PBACLR, (1 << E1000E_RX0_MSG_ID)); =20 /* Check DD bit */ g_assert_cmphex(le32_to_cpu(descr.wb.upper.status_error) & --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155928; cv=none; d=zohomail.com; s=zohoarc; b=dGXYRtv5bvyEXewvrvaZ0j7sK/5JdEj0gbJEeIynLy43dygQuz5pFjq7oc3PMAuxHzIcVSPqOX3lX1qX8TYj84zr3J/Fbfl0Z31TnIxIXroyagwxjX59ENXlHmDct9rpnifcrK/wSaQ6ACjpTdqIBN+HAlcZAwZvqyg6W4EQf3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155928; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=y4nGvPDfisSj/GZ4L69AKp/Fu/wL8ilfAEpfXHq2Joo=; b=nZSKBM6yP4tVox0NdI7U6p4FV7KkT0u760ed8lDU+yH1cGB/9Ii/6P955QaS5FGYTOK1C8sbedTo1HQN0HLkvcgXHloq6JwYkpRYHrAGDkjYjF3qFwIcg4VyGyaabA4iyPduhFshA/oVy7ky0dlND8gVHMziZRaisJa2gQYPw4w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155928520912.4691108839588; Thu, 1 May 2025 20:18:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAgu6-0003oP-1X; Thu, 01 May 2025 23:17:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAgu1-0003nz-6g for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:31 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAgtz-0003O1-F2 for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:28 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-736b0c68092so1544902b3a.0 for ; Thu, 01 May 2025 20:17:26 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:17:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155846; x=1746760646; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=y4nGvPDfisSj/GZ4L69AKp/Fu/wL8ilfAEpfXHq2Joo=; b=GJqPCAs0/k/3vs8BHfu0mIClZs/xl1fApf6kVkJJhBtagX+H757ltiIRk+5gua8ph7 gGxach5JWWdoCNAZ9DqQzTBggxEamdvD6z1Th8MEvJ+J/Q3AT8+Z3i8mmITuVXPAnn5A nFcXSvGjE1Z0RwZRv/+2I1atBz/dUbQqDFdrTgbANzwIWY4gNkgC/TULrXVins2PbDxy CrgObjsa9aS39y+5Qq1erk6MgnLbPMGN5GebNowViPRMT4gO5FXUjIT5tCP3cSlnZKX7 1MZc0I49IC74EcLD1ExAV9k8b0iYONECGzC8eKxAxTd9bV6ri3vm+0Au8PpSCfSSRFzf Xtow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155846; x=1746760646; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y4nGvPDfisSj/GZ4L69AKp/Fu/wL8ilfAEpfXHq2Joo=; b=IJS80ky7RytfqyYm72znHzsdzWpUdkIbog2IaWEepD7ITJpuWwiKrzxPzSohjayUAQ 0Qh7LU1LzoE1+h8KqsP2XU1yI3DQS/JAcHL75Z7XaDk2rRl7vYCNPXE0tlqQ40H9UglN ZqJPygoU2IxbOh0RT4Cd7rqKcV3je52X+6AL4od7Ivvy4n2jHtSKxAIOh9fUCDz9J02f 5jiX6t2oDQzt+r3YuSVcMVgs4sTof5dkQXVfpfUNm7wUgymLR3MpFIs0flUy4/zr/+kK GsYz54h02CQUTSfMX4x2yAovvxqp3XgaS+rKcdTICJEj5Hbt1X59jadK0ozS1LLJqNdi EYpA== X-Forwarded-Encrypted: i=1; AJvYcCX0BEaLXtCOUXqJqtL0MuL1yjGlC1d5RcfQHPoCsXYYIS95XVw4UMnhVdz4dK8BlIwMeERJrM3B1tdj@nongnu.org X-Gm-Message-State: AOJu0YxDL6U+fQmCQpB7l0d0NR70pqbGwaBZxrjRWGiNWC/nvpORJyIZ bxiWeMmpYzRozfhz52rOK1v4HmHc1CtxmE1nlrHFXaf+v2O069kb X-Gm-Gg: ASbGncvh8Nb9MBPGxOcSwbmndH2EMgYknGGJT3QKgIHOkqF01N63IAhPmGMj/lVym91 HwgWG5jVLZHD6D0lIQw1hsM+poS0SPBedw+Et2yQbb17bP9+5NZdRqNlcAeiNsRsemggajeMsuJ 3Rl5o8RfS73k/Qzha0hng4+zy6kAWfX7M4K0+pvtVE5faOXZSWdKVHaaHCf3zfJ83UdP7fTJPTf Zzd3a4QfGSKQ5vF9Nb+iRJ5Dz/sCMAFfLtqXUGBPrEtZ+O0EimXDLRmG1NVww5D6nj1FN+7TE4n hAy1yqR73O/Aj0qG8mLVz/AELHgg3yq+qWEsyhztxmCB X-Google-Smtp-Source: AGHT+IFLhUyUZYQWnAI5Yy4bIabVGxRfQm2aJUS9fsGLvfXolpoU3A9FqLfoHdqa54XcrSUt5SUdjQ== X-Received: by 2002:a05:6a00:ad8f:b0:736:65c9:9187 with SMTP id d2e1a72fcca58-74058a210e8mr1492473b3a.9.1746155845779; Thu, 01 May 2025 20:17:25 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 02/12] net/e1000e: Permit disabling interrupt throttling Date: Fri, 2 May 2025 13:16:54 +1000 Message-ID: <20250502031705.100768-3-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=npiggin@gmail.com; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155932496019100 Content-Type: text/plain; charset="utf-8" The spec explicitly permits xITR register interval field to have a value of zero to disable throttling. The e1000e model already allows for this in the throttling logic, so remove the minimum value for the register. The spec appears to say there is a maximum observable interrupt rate when throttling is enabled, regardless of ITR value, so throttle timer calculation is clamped to that minimum value. EITR registers default to 0, as specified in spec 7.4.4. Signed-off-by: Nicholas Piggin --- hw/net/e1000e_core.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c index 24138587905..96f74f1ea14 100644 --- a/hw/net/e1000e_core.c +++ b/hw/net/e1000e_core.c @@ -51,8 +51,17 @@ =20 #include "trace.h" =20 -/* No more then 7813 interrupts per second according to spec 10.2.4.2 */ -#define E1000E_MIN_XITR (500) +/* + * A suggested range for ITR is 651-5580, according to spec 10.2.4.2, but + * QEMU has traditionally set 500 here. + */ +#define E1000E_DEFAULT_ITR (500) + +/* + * spec 7.4.4 ITR rules says the maximum observable interrupt rate from the + * adapter should not exceed 7813/s (corresponding to 500). + */ +#define E1000E_EFFECTIVE_MIN_XITR (500) =20 #define E1000E_MAX_TX_FRAGS (64) =20 @@ -105,8 +114,9 @@ e1000e_lower_legacy_irq(E1000ECore *core) static inline void e1000e_intrmgr_rearm_timer(E1000IntrDelayTimer *timer) { - int64_t delay_ns =3D (int64_t) timer->core->mac[timer->delay_reg] * - timer->delay_resolution_ns; + uint32_t delay =3D MAX(timer->core->mac[timer->delay_reg], + E1000E_EFFECTIVE_MIN_XITR); + int64_t delay_ns =3D (int64_t)delay * timer->delay_resolution_ns; =20 trace_e1000e_irq_rearm_timer(timer->delay_reg << 2, delay_ns); =20 @@ -2783,7 +2793,7 @@ e1000e_set_itr(E1000ECore *core, int index, uint32_t = val) trace_e1000e_irq_itr_set(val); =20 core->itr_guest_value =3D interval; - core->mac[index] =3D MAX(interval, E1000E_MIN_XITR); + core->mac[index] =3D interval; } =20 static void @@ -2795,7 +2805,7 @@ e1000e_set_eitr(E1000ECore *core, int index, uint32_t= val) trace_e1000e_irq_eitr_set(eitr_num, val); =20 core->eitr_guest_value[eitr_num] =3D interval; - core->mac[index] =3D MAX(interval, E1000E_MIN_XITR); + core->mac[index] =3D interval; } =20 static void @@ -3444,8 +3454,7 @@ static const uint32_t e1000e_mac_reg_init[] =3D { [FACTPS] =3D E1000_FACTPS_LAN0_ON | 0x20000000, [SWSM] =3D 1, [RXCSUM] =3D E1000_RXCSUM_IPOFLD | E1000_RXCSUM_TUOFLD, - [ITR] =3D E1000E_MIN_XITR, - [EITR...EITR + E1000E_MSIX_VEC_NUM - 1] =3D E1000E_MIN_XITR, + [ITR] =3D E1000E_DEFAULT_ITR, }; =20 static void e1000e_reset(E1000ECore *core, bool sw) --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155880; cv=none; d=zohomail.com; s=zohoarc; b=md7fv5fFf4B/A/mCKB8Ynomx7Fq9MhbR3Vjmy+1+qat0Ss1xqV+xHpjp+PisrgUBYnwayJu4eaFkRAP9MsalqWOZS5edp26npUmntLyTcE7GNEPnh8sbyWfbWjVHXtHOyKjXVGvxADaWZ28WWMTWRl+ttBHt4Twy8o/B8+hB9uI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155880; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=usc1iImkjRDDNy/viNJ0vQB1ad6BcL3XRMiXbZYdyis=; b=Mdz4yleFVbIswEnqAz1sjp41OKPpJurhhcQixBdE79dkw+YQEQ/n5ZKYGvtOvitzBKdBp195velthZ5Sz7EnVT4uMzLDsIdhR5rycb+u/KE+kG2p3E6QZ6P3/HEOckAsQr2UEbPjcpJsHmDDi/w10ShO4hdNcdgEuIj/SZ6vI9A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174615588049179.90509630303814; Thu, 1 May 2025 20:18:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAguF-0003pZ-Ab; Thu, 01 May 2025 23:17:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAgu6-0003op-TW for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:35 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAgu4-0003Oi-AY for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:33 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-73bb647eb23so1568795b3a.0 for ; Thu, 01 May 2025 20:17:31 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:17:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155851; x=1746760651; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=usc1iImkjRDDNy/viNJ0vQB1ad6BcL3XRMiXbZYdyis=; b=HPln83gsaM2L2AuGUgBDciy0Rc3tvmfudN496FHjG+w4OPk18hgdwItygp39SH21jw WFEDqIcjWLPYD8YoVsD9zvy97FZ8Z0pPUMvEG5bneI6wI3SMGJpAVvfJwhLVWm+XfVMe f+VfCzaI2kCPb36k5eAGAhzqYuNPj36PArvKBnxRhYH9oPKweAVFQGpHiGjZX1C8p6ci uH6mzT5ZH130NQe4Ptwpxcg47dlffAMvdowao0DqjY4vZ7VFhnou6Bb1EgeppfyewpMv tJR64VrtME6dsWRrBpb0ruG/4fjtS8Pv9swujto3UXPRL0aU+S7OcKbwLNYUF0cfWWlw utJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155851; x=1746760651; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=usc1iImkjRDDNy/viNJ0vQB1ad6BcL3XRMiXbZYdyis=; b=RznO7jmbojplrvjWzvCu3J0DYUogsJrazLRXrJLg0VCJZGZ/wyQN+wkPYPQiVIJ+Ns yukpDnM+5Qx5SW9EYoNVf0AvYUZP5u/QsZ7vao72G3WuOSGVgWuwTuEOdwfriMYsIj5Z puDAwn2J+fxj3PbUG/38dr6PrTcKVD8SPnTotiS2WCOtVO5Vz9TjTsNoK3NiP5lu604O Q8doNF1O3F3/1Q3yBgkC+VL+SzRj4sydFE6MZ5fMbqZKXPHsJA/uaNz5lzOA5vCZIO1e kMnXNmmkSiPBwpc5aX5lcaWxFxBI7GGnQRYzSeH8vlwp2oNaGiaEzvOgkF5RBJ3AoXGy 7Lbg== X-Forwarded-Encrypted: i=1; AJvYcCW7tSHk4YpLKDHM4WTcGl1VapiNfYYvNAFRUxX4u+hPpnkif5QDUB3/0e7b/4eXETwpmPUSxTnpWAPM@nongnu.org X-Gm-Message-State: AOJu0YxS4eV8Jovr90IQ/l5VLkFHuGMmYUXxV9J6UgeRc5MmFVkHMbBB DX+FkbfVw0i4/RU/Rz0UHShc6HAkOXTsAXvtEKVepcmwVnJpb6q3 X-Gm-Gg: ASbGncsdIs22c/AmyY7XbjnqF2SjTefsJNJ/iP+O7nYU/7F+WboJk66YM1uFhwPShBj HMam6Q7JaYGByFMX/tG8D8PslERlj/OGFiiceAVUpjcj443TtOso3jEbDjmOcnc3tFarYR549Mh +CuezxvDwzBW/l1Gd5eFO9Q5Y8R4CerBwJv3vE/SYXenwRIEyi4htj0wLw+t/K4NCufPgIn3rxK clvxT37kJ2mFAUAfu2fV13K+bVNGQCFag5Eoz30am3pC/qtJPez/i5EBVhdvfGCQBQL7l/y0+Ek OMPiloOLbsmu0dKMGwS78bIH2KFsyCWyMPusATQ1rzKY X-Google-Smtp-Source: AGHT+IEkLH7R0K+dZ70l8hy5yxKx5v+4yg9xpdhMGciYVUp9boNogvOqmTqVao+V/6WRoD1bCcWQww== X-Received: by 2002:a05:6a00:8415:b0:740:5927:92cb with SMTP id d2e1a72fcca58-740592793a1mr1141954b3a.0.1746155850816; Thu, 01 May 2025 20:17:30 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 03/12] hw/net/e1000e|igb: Remove xitr_guest_value logic Date: Fri, 2 May 2025 13:16:55 +1000 Message-ID: <20250502031705.100768-4-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155882891124100 Content-Type: text/plain; charset="utf-8" The guest value xITR logic is not required now that the write functions store necessary data to be read back, and internal users mask and shift fields they need as they go. Signed-off-by: Nicholas Piggin --- hw/net/e1000e_core.c | 31 +++++++++++++++---------------- hw/net/igb_core.c | 16 +++++++++++++--- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c index 96f74f1ea14..f8e6522f810 100644 --- a/hw/net/e1000e_core.c +++ b/hw/net/e1000e_core.c @@ -2563,18 +2563,6 @@ e1000e_mac_swsm_read(E1000ECore *core, int index) return val; } =20 -static uint32_t -e1000e_mac_itr_read(E1000ECore *core, int index) -{ - return core->itr_guest_value; -} - -static uint32_t -e1000e_mac_eitr_read(E1000ECore *core, int index) -{ - return core->eitr_guest_value[index - EITR]; -} - static uint32_t e1000e_mac_icr_read(E1000ECore *core, int index) { @@ -2792,7 +2780,6 @@ e1000e_set_itr(E1000ECore *core, int index, uint32_t = val) =20 trace_e1000e_irq_itr_set(val); =20 - core->itr_guest_value =3D interval; core->mac[index] =3D interval; } =20 @@ -2804,7 +2791,6 @@ e1000e_set_eitr(E1000ECore *core, int index, uint32_t= val) =20 trace_e1000e_irq_eitr_set(eitr_num, val); =20 - core->eitr_guest_value[eitr_num] =3D interval; core->mac[index] =3D interval; } =20 @@ -3029,6 +3015,7 @@ static const readops e1000e_macreg_readops[] =3D { e1000e_getreg(GSCN_1), e1000e_getreg(FCAL), e1000e_getreg(FLSWCNT), + e1000e_getreg(ITR), =20 [TOTH] =3D e1000e_mac_read_clr8, [GOTCH] =3D e1000e_mac_read_clr8, @@ -3062,7 +3049,6 @@ static const readops e1000e_macreg_readops[] =3D { [MPRC] =3D e1000e_mac_read_clr4, [BPTC] =3D e1000e_mac_read_clr4, [TSCTC] =3D e1000e_mac_read_clr4, - [ITR] =3D e1000e_mac_itr_read, [CTRL] =3D e1000e_get_ctrl, [TARC1] =3D e1000e_get_tarc, [SWSM] =3D e1000e_mac_swsm_read, @@ -3087,7 +3073,7 @@ static const readops e1000e_macreg_readops[] =3D { [RETA ... RETA + 31] =3D e1000e_mac_readreg, [RSSRK ... RSSRK + 31] =3D e1000e_mac_readreg, [MAVTV0 ... MAVTV3] =3D e1000e_mac_readreg, - [EITR...EITR + E1000E_MSIX_VEC_NUM - 1] =3D e1000e_mac_eitr_read + [EITR...EITR + E1000E_MSIX_VEC_NUM - 1] =3D e1000e_mac_readreg, }; enum { E1000E_NREADOPS =3D ARRAY_SIZE(e1000e_macreg_readops) }; =20 @@ -3517,13 +3503,26 @@ void e1000e_core_pre_save(E1000ECore *core) core->tx[i].skip_cp =3D true; } } + + /* back compat, QEMU moves xITR in itr_guest_value state */ + core->itr_guest_value =3D core->mac[ITR]; + for (i =3D 0; i < E1000E_MSIX_VEC_NUM; i++) { + core->eitr_guest_value[i] =3D core->mac[EITR + i]; + } } =20 int e1000e_core_post_load(E1000ECore *core) { + int i; NetClientState *nc =3D qemu_get_queue(core->owner_nic); =20 + /* back compat */ + core->mac[ITR] =3D core->itr_guest_value; + for (i =3D 0; i < E1000E_MSIX_VEC_NUM; i++) { + core->mac[EITR + i] =3D core->eitr_guest_value[i]; + } + /* * nc.link_down can't be migrated, so infer link_down according * to link status bit in core.mac[STATUS]. diff --git a/hw/net/igb_core.c b/hw/net/igb_core.c index 39e3ce1c8fe..271c54380e9 100644 --- a/hw/net/igb_core.c +++ b/hw/net/igb_core.c @@ -2880,7 +2880,7 @@ igb_mac_swsm_read(IGBCore *core, int index) static uint32_t igb_mac_eitr_read(IGBCore *core, int index) { - return core->eitr_guest_value[index - EITR0]; + return core->mac[index - EITR0]; } =20 static uint32_t igb_mac_vfmailbox_read(IGBCore *core, int index) @@ -3046,8 +3046,7 @@ igb_set_eitr(IGBCore *core, int index, uint32_t val) =20 trace_igb_irq_eitr_set(eitr_num, val); =20 - core->eitr_guest_value[eitr_num] =3D val & ~E1000_EITR_CNT_IGNR; - core->mac[index] =3D val & 0x7FFE; + core->mac[index] =3D val; } =20 static void @@ -4527,13 +4526,24 @@ void igb_core_pre_save(IGBCore *core) core->tx[i].skip_cp =3D true; } } + + /* back compat, QEMU moves EITR in eitr_guest_value state */ + for (i =3D 0; i < IGB_INTR_NUM; i++) { + core->eitr_guest_value[i] =3D core->mac[EITR0 + i]; + } } =20 int igb_core_post_load(IGBCore *core) { + int i; NetClientState *nc =3D qemu_get_queue(core->owner_nic); =20 + /* back compat */ + for (i =3D 0; i < IGB_INTR_NUM; i++) { + core->mac[EITR0 + i] =3D core->eitr_guest_value[i]; + } + /* * nc.link_down can't be migrated, so infer link_down according * to link status bit in core.mac[STATUS]. --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155878; cv=none; d=zohomail.com; s=zohoarc; b=S7u1Fr7R2mh0hXBbZzeEn01uChejcfSszhAg5Eyi2QY0FLRLwBP6ye+XmW6bbLifbislQ01C1Om+WiGCoNlJCa4H1tfHjYpmK9e3Mkw3NoDUYpAG2rVIW+oIoonssgsVO2rQxGwujK1ymgVnEJhbOpO+dneem/W6c1d/BAVpZNQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155878; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EdEHRQIcS/KoLKBQT/QdqdalMsNW84j9PK9MoRDA6/o=; b=kf6uzA9PXNOwJcQ5SYa1LZT9SQ++dVbTlaodPNrIvFE0gKWgDFa3aFFdKt9aJiaV9S37ZnmHEZoT2FEqiERxmL5cgt+UKeemNSaLEGoDgu7bSn79KJx94WPgEv7nQPirhTQVm4ObWxXg7smlUlttF8GNl3KUcW6zeJAeOH8VGW8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155878435695.3698187698983; Thu, 1 May 2025 20:17:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAguQ-0003qr-5z; Thu, 01 May 2025 23:17:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAguC-0003pd-TC for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:43 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAguA-0003PJ-HB for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:40 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-736c1138ae5so1704143b3a.3 for ; Thu, 01 May 2025 20:17:37 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:17:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155856; x=1746760656; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EdEHRQIcS/KoLKBQT/QdqdalMsNW84j9PK9MoRDA6/o=; b=HVXMVc0ZpzYVIbUfJz/Tw4TqqINe3nLVpiNsJDEa6lR5BKHI7tKJwqHrqQnBU4gXuc tnLtsNykDQ9feKAQianC6VK41LA5FU4dRYZxC5wfbVX/276NxPJxaonl2N+8D/uu5l0f X4Fy+5647MALYmRCrg/U4pLoqdMv5uSrLb1kmeKN+WJRqeAEWWXeQaQcBZHEf2WFPYbY 6970TrrGpak05H4wfOfvv/s6QktaC2RozyAq3pYvPYHiQrWZG3oVxGf+9X/lmH/kbt81 KkV45gfvEIfBsjzM3g3O1Lwn8wklgYOB47vHCa/O33z3oE4EB6ly/Hlu3VnVZJB63iAc hbVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155856; x=1746760656; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EdEHRQIcS/KoLKBQT/QdqdalMsNW84j9PK9MoRDA6/o=; b=FYqIDwHJoZQuvxi6iCvLUDeib+TCpeKs3EjZPLoAklBUEpT4E1v7dtrpH48zqdTX0S wKFrQyKB30Duo9b6QYi4l7QmQyXSO4UfTzKPU51eg2C5dJ9vaviXVILXHiTVPFHuveNg D7v3CvoQww4rlo+gTpBcxX7492Ezoj8ujQlHzeWti1xaTwr3tAbhU4cHA/qMRs3Vwf48 6gPtCf6d07e2h0lnxs+yI1bM4lzndyj+GbLAiYcUWRrCy62ORyK+ey6RIbgdXTdjl0FR bOfkdJhrNc+68itQQFuL0jOG1udjh6ZqJ7sOsrlkTtUTHEEnz+z85IqKReFtrMr+M4FZ wuQw== X-Forwarded-Encrypted: i=1; AJvYcCUHp1eevgm6ylGFeQ3KjF1RCJBq3zFllAkPcdg4k0dxKrydydq6bLsu+nCsOdlU6PJ7/74QEyvNlzZg@nongnu.org X-Gm-Message-State: AOJu0YxiWX5yowXrPYOys/ieYMBWyY7FUGMZpRHAmy94Ec7na1+/T2dr UelZqk3CdQsACGWaY+6CjiWQb2KFfwO1GydcxGjQ6MwwSbJdlwNP X-Gm-Gg: ASbGncstePIimiaZ7dbTI6IT8cBkMFZ9BS6i7doYcW/mBiCvxtZcZoBK2gSWbCKAjWf tqAUHy4AclUe+0WPWPwKfzCL8Hdt22rYlgzfTiIxJbFVKC8FxAkESE35RAN+g0H252Jbu5kYXxD 9bs50Fm8XcNSltKc2HiVM3QJdf65yWTxlVihielmaiaRuZ/5FFMnKHUdPJKdHV4G9OKx58kwuUm I2TvbPKeX0F5g3NUMBUsIk3oAJVjlbiL8EDcBU/vv0toeDHTbMGDzHMTT33FPy0dYbH6OGalXfi sR+pN2H3UGw/6Qk4Obb0ZvQAtdrYBgIhjs28ZwTkjTxO X-Google-Smtp-Source: AGHT+IGPFXZ+aVyCfmzu9mQk0VHNfFOH4Cfft520U5+JSR7ZVpuP9LBXgiHesA31kCA72x9bkaLK4Q== X-Received: by 2002:a05:6a00:1d0a:b0:740:41eb:5850 with SMTP id d2e1a72fcca58-74058903c55mr1774936b3a.4.1746155856185; Thu, 01 May 2025 20:17:36 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , "Michael S. Tsirkin" , Marcel Apfelbaum Subject: [PATCH v3 04/12] qtest/e1000e|igb: assert irqs are clear before triggering an irq Date: Fri, 2 May 2025 13:16:56 +1000 Message-ID: <20250502031705.100768-5-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155880867124100 Content-Type: text/plain; charset="utf-8" Assert there is no existing irq raised that would lead to a false positive interrupt test. e1000e has to disable interrupt throttling for this test, because it can cause delayed superfluous interrupts which trip the assertions. Cc: Michael S. Tsirkin Cc: Marcel Apfelbaum Cc: Dmitry Fleytman Cc: Akihiko Odaki Cc: Sriram Yagnaraman Signed-off-by: Nicholas Piggin Reviewed-by: Fabiano Rosas --- tests/qtest/libqos/e1000e.h | 1 + tests/qtest/e1000e-test.c | 10 ++++++++++ tests/qtest/igb-test.c | 6 ++++++ tests/qtest/libqos/e1000e.c | 9 ++++++++- 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/qtest/libqos/e1000e.h b/tests/qtest/libqos/e1000e.h index 30643c80949..e693670119f 100644 --- a/tests/qtest/libqos/e1000e.h +++ b/tests/qtest/libqos/e1000e.h @@ -54,6 +54,7 @@ static inline uint32_t e1000e_macreg_read(QE1000E *d, uin= t32_t reg) return qpci_io_readl(&d_pci->pci_dev, d_pci->mac_regs, reg); } =20 +bool e1000e_pending_isr(QE1000E *d, uint16_t msg_id); void e1000e_wait_isr(QE1000E *d, uint16_t msg_id); void e1000e_tx_ring_push(QE1000E *d, void *descr); void e1000e_rx_ring_push(QE1000E *d, void *descr); diff --git a/tests/qtest/e1000e-test.c b/tests/qtest/e1000e-test.c index 746d26cfb67..a538c72cc84 100644 --- a/tests/qtest/e1000e-test.c +++ b/tests/qtest/e1000e-test.c @@ -61,6 +61,9 @@ static void e1000e_send_verify(QE1000E *d, int *test_sock= ets, QGuestAllocator *a E1000_TXD_DTYP_D | sizeof(buffer)); =20 + /* Ensure the interrupt has not been taken already */ + g_assert(!e1000e_pending_isr(d, E1000E_TX0_MSG_ID)); + /* Put descriptor to the ring */ e1000e_tx_ring_push(d, &descr); =20 @@ -105,6 +108,9 @@ static void e1000e_receive_verify(QE1000E *d, int *test= _sockets, QGuestAllocator char buffer[64]; int ret; =20 + /* Ensure the interrupt has not been taken already */ + g_assert(!e1000e_pending_isr(d, E1000E_RX0_MSG_ID)); + /* Send a dummy packet to device's socket*/ ret =3D iov_send(test_sockets[0], iov, 2, 0, sizeof(len) + sizeof(pack= et)); g_assert_cmpint(ret, =3D=3D , sizeof(packet) + sizeof(len)); @@ -188,6 +194,10 @@ static void test_e1000e_multiple_transfers(void *obj, = void *data, return; } =20 + /* Clear EITR because buggy QEMU throttle timer causes superfluous irq= s */ + e1000e_macreg_write(d, E1000_EITR + E1000E_RX0_MSG_ID * 4, 0); + e1000e_macreg_write(d, E1000_EITR + E1000E_TX0_MSG_ID * 4, 0); + for (i =3D 0; i < iterations; i++) { e1000e_send_verify(d, data, alloc); e1000e_receive_verify(d, data, alloc); diff --git a/tests/qtest/igb-test.c b/tests/qtest/igb-test.c index cf8b4131cf2..12cdd8b498a 100644 --- a/tests/qtest/igb-test.c +++ b/tests/qtest/igb-test.c @@ -64,6 +64,9 @@ static void igb_send_verify(QE1000E *d, int *test_sockets= , QGuestAllocator *allo E1000_TXD_DTYP_D | sizeof(buffer)); =20 + /* Ensure the interrupt has not been taken already */ + g_assert(!e1000e_pending_isr(d, E1000E_TX0_MSG_ID)); + /* Put descriptor to the ring */ e1000e_tx_ring_push(d, &descr); =20 @@ -119,6 +122,9 @@ static void igb_receive_verify(QE1000E *d, int *test_so= ckets, QGuestAllocator *a memset(&descr, 0, sizeof(descr)); descr.read.pkt_addr =3D cpu_to_le64(data); =20 + /* Ensure the interrupt has not been taken already */ + g_assert(!e1000e_pending_isr(d, E1000E_RX0_MSG_ID)); + /* Put descriptor to the ring */ e1000e_rx_ring_push(d, &descr); =20 diff --git a/tests/qtest/libqos/e1000e.c b/tests/qtest/libqos/e1000e.c index 925654c7fd4..0bf70e25389 100644 --- a/tests/qtest/libqos/e1000e.c +++ b/tests/qtest/libqos/e1000e.c @@ -77,13 +77,20 @@ static void e1000e_foreach_callback(QPCIDevice *dev, in= t devfn, void *data) g_free(dev); } =20 +bool e1000e_pending_isr(QE1000E *d, uint16_t msg_id) +{ + QE1000E_PCI *d_pci =3D container_of(d, QE1000E_PCI, e1000e); + + return qpci_msix_pending(&d_pci->pci_dev, msg_id); +} + void e1000e_wait_isr(QE1000E *d, uint16_t msg_id) { QE1000E_PCI *d_pci =3D container_of(d, QE1000E_PCI, e1000e); guint64 end_time =3D g_get_monotonic_time() + 5 * G_TIME_SPAN_SECOND; =20 do { - if (qpci_msix_pending(&d_pci->pci_dev, msg_id)) { + if (e1000e_pending_isr(d, msg_id)) { return; } qtest_clock_step(d_pci->pci_dev.bus->qts, 10000); --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155976; cv=none; d=zohomail.com; s=zohoarc; b=NUc4S65fNsM01Bu0B9N9kpYEQlkos+eVFK2fv6gElEQVR4Wxl5rpDl0ByOATG0gjX1r4k8mRmsESVSyA5RmXIiAJ64ucbk5DMqJzGZz3uXNIVjhqbpifmpnUpb3Ij+esTgTiaTqi9nB5Vl4mMB6TAKMo3iZx6ak7blzcKuPgBF8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155976; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Q5no8ddhr8154W5pKhH05o9hD5LHHhM1KYUT49zmTjI=; b=b0AsCLqFqgeAxBPdzKBh00qoI3KDzTrrYItd9TmSm5ISADeuZfWRhEc9/eUHvPU10FUXaH+rgyn9Bt8KdZIX5jptKJckq3OL550kM0XBJQ4SsyvBGlOFJQAaW/iYrDqmAP2K/DxFzzbP09ZWMyV5KcPPU9qS/gASExu8HUOz5Cg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155976621932.3873090864203; Thu, 1 May 2025 20:19:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAguO-0003qc-56; Thu, 01 May 2025 23:17:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAguG-0003pz-Gx for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:45 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAguE-0003UV-UX for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:44 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-736aaeed234so1539471b3a.0 for ; Thu, 01 May 2025 20:17:42 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:17:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155861; x=1746760661; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q5no8ddhr8154W5pKhH05o9hD5LHHhM1KYUT49zmTjI=; b=lQrp5tPqeuuNk2jheHGkWxdEbGNfiT6Tk/VnoR4l3IQxiEBskv24o3EKW5mwLIs6BR jbg5/wTJd9q2KJW55mmG4RO5QRJ5pTbl4gf7njIUPqtxBRhJllCuyY6b1e1susvyvrov PnEdquMMkJMXwVVhJg30JPIv3Ftd7/312vJ03HzxUUuy3zLOmKd1xny1EPGpKUwajyET NzO1cap1ZhyeDsMZ94GxIamRZwiPZH6wJGrYDQQR7h9aIQd1f/j1vsVpylKqJoECk+0I FGIXRm1f7vK8cAFBr/8Dbc8TSBAkRkc6P76UNp72+ZfiVW9bpgdGxIILK7iqp14XDym0 vRwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155861; x=1746760661; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q5no8ddhr8154W5pKhH05o9hD5LHHhM1KYUT49zmTjI=; b=ijuN2LTn+qBZj7/hNO7U/WvJOs8vWZ0MWJSMu6YXSVsEza9xqlUHDJ8WthDaN4nORD 7UQyHjOO71oqK6Ebk2o1I/wUZamD1Om2tOoTHGyrSD67xh0DgvvnYzMn6Xwmtt5IZMUa Du1HL71K6ad3OVxsGLzP2dKqry2Ag00QMaRimq3AbDw93fKZpmj2TTMgaCWSf5evwem1 eHonsJ00zDpWLLrjI5z75ZKQARoGf5V3teJjsTXaxLuPsIkgy4/u+dUJfi312LaoU8l5 aGbID6CnJQLAqR/j+pHgjYG/xDhkVmYRTYNJB9pX3AneoI/pg11SDm85HhuAelqEcTmZ YkEg== X-Forwarded-Encrypted: i=1; AJvYcCXjeiZr5CGOQ2opvGBt5kRgG2i2q02ScvWUqzZZ4cx5E80JMojOy73vYG9+lrMM8Fh4bVUb4Bqhofsx@nongnu.org X-Gm-Message-State: AOJu0YyRTw6gazKSLD4eQp/0/iYDW9b6NQxWAxz4fjLg042YPkYO3CyM vh0oyxLfhic7X8r4K+YNC8Wt40uNv5fnIOHOvZMujxKnezFvsUdx401Seg== X-Gm-Gg: ASbGncsJq8Vk+Qw6X24zx0uN4i1nSjWNcO8EX1OA9fO6s0mV3LeLVk0qeGiRZo4/ZNF NpdyXxr1qOLm3Su6IoQRdhInCWvNwLsQtx7e5rbOFXkh3QDHc+x+M6RM5B/JbUyCk4676DnXlII 9dim/5AKdHev7goXJFa/vo6xirbwj003GQO63jHmUkO3CUaqUG+TsjvqOwT+t16+YJRhQIFA0GW OXLe0132U9rPye9NH00vkma3nOZeFRDWNDYQUhzL01qiXGlbAV6Wusv5imOdg/Q9c6NBbFAUCb2 qaLENrq/v/Dnkm7svC+NCQuD4/WqCn5Ru5t196BRefdr X-Google-Smtp-Source: AGHT+IEbWaYjtf0OKUtqDYYT6VEsR8gwVHqNlDvytC7IU6hjb/p/oSP6FTeucW8OeCkc7RkZKVpEmQ== X-Received: by 2002:a05:6a00:8d86:b0:730:95a6:375f with SMTP id d2e1a72fcca58-740588fac49mr1891360b3a.3.1746155861307; Thu, 01 May 2025 20:17:41 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 05/12] net/igb: Fix interrupt throttling interval calculation Date: Fri, 2 May 2025 13:16:57 +1000 Message-ID: <20250502031705.100768-6-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155979215019100 Content-Type: text/plain; charset="utf-8" IGB throttling granularity is 1us, and interval field is in bits 2..14 of the EITRx registers. Fixes: 3a977deebe6b ("Intrdocue igb device emulation") Signed-off-by: Nicholas Piggin --- hw/net/igb_regs.h | 3 +++ hw/net/igb_core.c | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/hw/net/igb_regs.h b/hw/net/igb_regs.h index 4dc4c31da27..a87aa44f5f3 100644 --- a/hw/net/igb_regs.h +++ b/hw/net/igb_regs.h @@ -146,6 +146,9 @@ union e1000_adv_rx_desc { #define IGB_82576_VF_DEV_ID 0x10CA #define IGB_I350_VF_DEV_ID 0x1520 =20 +/* Delay increments in nanoseconds for interrupt throttling registers */ +#define IGB_INTR_THROTTLING_NS_RES (1 * SCALE_US) + /* VLAN info */ #define IGB_TX_FLAGS_VLAN_MASK 0xffff0000 #define IGB_TX_FLAGS_VLAN_SHIFT 16 diff --git a/hw/net/igb_core.c b/hw/net/igb_core.c index 271c54380e9..9e9e6e3354f 100644 --- a/hw/net/igb_core.c +++ b/hw/net/igb_core.c @@ -142,8 +142,9 @@ static void igb_msix_notify(IGBCore *core, unsigned int= cause) static inline void igb_intrmgr_rearm_timer(IGBIntrDelayTimer *timer) { - int64_t delay_ns =3D (int64_t) timer->core->mac[timer->delay_reg] * - timer->delay_resolution_ns; + int64_t delay_ns =3D + (int64_t)((timer->core->mac[timer->delay_reg] & 0x7FFC) >> 2) * + timer->delay_resolution_ns; =20 trace_e1000e_irq_rearm_timer(timer->delay_reg << 2, delay_ns); =20 @@ -180,7 +181,7 @@ igb_intrmgr_initialize_all_timers(IGBCore *core, bool c= reate) for (i =3D 0; i < IGB_INTR_NUM; i++) { core->eitr[i].core =3D core; core->eitr[i].delay_reg =3D EITR0 + i; - core->eitr[i].delay_resolution_ns =3D E1000_INTR_DELAY_NS_RES; + core->eitr[i].delay_resolution_ns =3D IGB_INTR_THROTTLING_NS_RES; } =20 if (!create) { --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155982; cv=none; d=zohomail.com; s=zohoarc; b=DVI0SkZ9IiUBG7DUqZZ4WUbRw3ns5KNj1Wnxs4Isuw0FV2iPRf46oSQsqqTD+n7TfsJ4/q/1VTE4WDkRiLghshJcLByRhkWNi9994+16xlOdPrwkyFb5h18iud0FdjL1zpckCSDwtXskxw99UVgtfNu4ZCZNTfdEnE8uC9eR7WY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155982; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W/uPVqTrOylFMnnjOT+v+C9KrHxggrfQhY/SHrGtSGE=; b=mFE0AALwDKsJbyzPABGT6bhieQRJYnwG72Kh79V64cMEdnOpwntYp4Hdp/+QCagexkSxngmFPmbGfZsB50QYuCni/PzcR4zg6Q4tu+M62vHqZuNUNFYgF17m8B5+x4JjnUGLJ03H5dKFFgrMbJaDiRTXhMBtSeP/VlTOEf6h9eg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155982042121.1721038351194; Thu, 1 May 2025 20:19:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAguU-0003xm-U8; Thu, 01 May 2025 23:17:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAguO-0003rC-Hc for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:54 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAguJ-0003Zz-MY for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:52 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-736c1138ae5so1704215b3a.3 for ; Thu, 01 May 2025 20:17:47 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:17:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155866; x=1746760666; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=W/uPVqTrOylFMnnjOT+v+C9KrHxggrfQhY/SHrGtSGE=; b=KqFvS0+299BOL4+Mu+nKD6I2UA7xrw0CCfXfRQKee1f0hAEvfvEK4YtKSAtf4qUyRl pIyxkeFVO4QMryf8rKj2CekDBg8hMdKRn91CFRF8nuLLwT4cC7/B1wJyBFEMXuFof4rQ 01TFWq4HQrN4ZZAHYY4UvG36edHJQ7pn6K5N77tb0L6M52zLzpo7Gq3hsoS44vxOTiGg PlAl28GS21XJHoBXT+Bdhe5mBYHUp/3jhd3YjyOrKEpofPnF5bdhQ6Ii5S1VhR1SWGhm AYrHSFmJhXqAnx4xf7Z2/BZ4uq4s1KXPmtNXFTi0hgvZcBdO9MMdGOUL/9d73dlPaRNa 3LHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155866; x=1746760666; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=W/uPVqTrOylFMnnjOT+v+C9KrHxggrfQhY/SHrGtSGE=; b=hYPLDlki868mOoGfp4OCSaCMBHeJXnd8V8H8PbEEz6vaoqLfUVHi0+H1WDI1f4kTBL qaoIAi9us3Cu/sxDvL9pFHauqS0/12Zl9gdzERVRvMGmjsgi3DOHu/x9SxtKGMXN8W22 Bawq6QcloqUDGnEmC0LZSz12NCo50EjgG3D1mn15DoWYs7U3DEYuZV2fM41zGQ1yYdtw bZdXPfDa35L0n68KhKM1VOIwHJpa3yqp5OX3llOj2d77BeWe4joJ4nV/IarV6DZP+axx TVBxeMb+x85ruM/TA6pk7izorSopZk3Z5Pi66qvxOYQ7hzba+e5380Ci3s1suBzxUZOg 59tg== X-Forwarded-Encrypted: i=1; AJvYcCXQ9iuZoBQ2k4WKie6pZxF572lUTyExl+aRhNDEcK3aSzl/BR/khPgELyN9hIQ8Ohmkx9h5Gt17hJhO@nongnu.org X-Gm-Message-State: AOJu0Yyn6LORSCdHixh7SCPb2E2Q4DHaCfL7tq0IxwtM6xqDURk++Gyc JVDN58q0u0U+bLFBS2dW15G5X5zvTJiFyw9wx5ZR4B2C+V2dboUU X-Gm-Gg: ASbGncuWbgv5LzjZ/AN+NnwjJMBW9C/DagrIfZVDONz7I5T28gYsEUTHERuzZe+YLwu o+vgUaNoG97lxVtH9LIQMOp1x0ERdeQoZcYlT95UfzQ0e7dooynGKM27Qwbanso/Wshpayc0eoE +aWj/PkJVpyJG7jqUUSWfJ+6eqx1J6FFkPwONX9XtX6uKsdjFd/nn/39kdrTT8x9+GhnLSAXHYj PkgcaPZnmtSYXAAoL1w3VnTP8iaLXgxpFx/XYi5VGCt+AepMH36nmVyagu+VBhjVvnnqg2lNrvx 0lmtROA+G29ApYiQdj1JySKThdkFM8ENGeV3LMNLTpLw X-Google-Smtp-Source: AGHT+IH5fc7iEhgOzIxFncQkKmks2ox542BW/hbfxkS6FmjRUAPpb5dSOI7Dsqw2ow9jvKvN+GWm6w== X-Received: by 2002:a05:6a21:33a2:b0:1f5:709d:e0c6 with SMTP id adf61e73a8af0-20ce04e7422mr1852965637.42.1746155866207; Thu, 01 May 2025 20:17:46 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 06/12] net/igb: Implement EITR Moderation Counter Date: Fri, 2 May 2025 13:16:58 +1000 Message-ID: <20250502031705.100768-7-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155983413019100 Content-Type: text/plain; charset="utf-8" IGB EITR registers have counter fields which reflect the current ITR and LLI counter values, as well as a bit to enable LLI moderation, and a bit to write the register without modifying the counter fields. Implement the EITR Moderation Counter (aka EITR counter), and counter ignore bit. The EITR counter is the time remaining in the interrupt moderation delay which is implemented as a QEMU timer. Log an unimp message if software tries to enable LLI moderation. Signed-off-by: Nicholas Piggin --- hw/net/igb_regs.h | 6 ++++++ hw/net/igb_core.c | 48 +++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 48 insertions(+), 6 deletions(-) diff --git a/hw/net/igb_regs.h b/hw/net/igb_regs.h index a87aa44f5f3..c4785eda0ce 100644 --- a/hw/net/igb_regs.h +++ b/hw/net/igb_regs.h @@ -631,6 +631,12 @@ union e1000_adv_rx_desc { #define E1000_EICR_MSIX_MASK 0x01FFFFFF /* Bits used in MSI-X mode */ #define E1000_EICR_LEGACY_MASK 0x4000FFFF /* Bits used in non MSI-X mode */ =20 +/* These are only for 82576 and newer */ +#define E1000_EITR_INTERVAL 0x00007FFC +#define E1000_EITR_LLI_EN 0x00008000 +#define E1000_EITR_LLI_CNT 0x001F0000 +#define E1000_EITR_ITR_CNT 0x7FE00000 + /* Mirror VF Control (only RST bit); RW */ #define E1000_PVTCTRL(_n) (0x10000 + (_n) * 0x100) =20 diff --git a/hw/net/igb_core.c b/hw/net/igb_core.c index 9e9e6e3354f..eedc341f298 100644 --- a/hw/net/igb_core.c +++ b/hw/net/igb_core.c @@ -140,12 +140,8 @@ static void igb_msix_notify(IGBCore *core, unsigned in= t cause) } =20 static inline void -igb_intrmgr_rearm_timer(IGBIntrDelayTimer *timer) +igb_intrmgr_arm_timer(IGBIntrDelayTimer *timer, int64_t delay_ns) { - int64_t delay_ns =3D - (int64_t)((timer->core->mac[timer->delay_reg] & 0x7FFC) >> 2) * - timer->delay_resolution_ns; - trace_e1000e_irq_rearm_timer(timer->delay_reg << 2, delay_ns); =20 timer_mod(timer->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + delay_= ns); @@ -153,6 +149,16 @@ igb_intrmgr_rearm_timer(IGBIntrDelayTimer *timer) timer->running =3D true; } =20 +static inline void +igb_intrmgr_rearm_timer(IGBIntrDelayTimer *timer) +{ + uint32_t interval =3D (timer->core->mac[timer->delay_reg] & + E1000_EITR_INTERVAL) >> 2; + int64_t delay_ns =3D (int64_t)interval * timer->delay_resolution_ns; + + igb_intrmgr_arm_timer(timer, delay_ns); +} + static void igb_intmgr_timer_resume(IGBIntrDelayTimer *timer) { @@ -2881,7 +2887,21 @@ igb_mac_swsm_read(IGBCore *core, int index) static uint32_t igb_mac_eitr_read(IGBCore *core, int index) { - return core->mac[index - EITR0]; + uint32_t eitr_num =3D index - EITR0; + uint32_t val =3D core->mac[eitr_num]; + IGBIntrDelayTimer *timer =3D &core->eitr[eitr_num]; + + if (timer->running) { /* timer is pending, find time remaining */ + int64_t remains =3D timer_expire_time_ns(timer->timer) - + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); + if (remains > 0) { + uint32_t cnt; /* CNT is the most significant 10 of 12 bits */ + cnt =3D remains / timer->delay_resolution_ns; + val |=3D ((cnt >> 2) << 21) & E1000_EITR_ITR_CNT; + } + } + + return val; } =20 static uint32_t igb_mac_vfmailbox_read(IGBCore *core, int index) @@ -3047,6 +3067,22 @@ igb_set_eitr(IGBCore *core, int index, uint32_t val) =20 trace_igb_irq_eitr_set(eitr_num, val); =20 + if (val & (E1000_EITR_LLI_EN | E1000_EITR_LLI_CNT)) { + qemu_log_mask(LOG_UNIMP, "%s: LLI moderation not supported, ignori= ng\n", + __func__); + } + + if (!(val & E1000_EITR_CNT_IGNR)) { + IGBIntrDelayTimer *timer =3D &core->eitr[eitr_num]; + uint32_t itr_cnt =3D (val & E1000_EITR_ITR_CNT) >> 21; + /* CNT is the most significant 10 of 12 bits */ + uint64_t ns =3D (itr_cnt << 2) * timer->delay_resolution_ns; + + igb_intrmgr_arm_timer(timer, ns); + } + + val &=3D E1000_EITR_INTERVAL | E1000_EITR_LLI_EN; + core->mac[index] =3D val; } =20 --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155946; cv=none; d=zohomail.com; s=zohoarc; b=G0psfGKwojAP8BdPYsCA94nHPOxNIV2SNzPEGRjCiR7grd/HkP/gja0HGrEvrH1053pxYRswSG0VRvKalvVJhG4EagXVCgy9t8CjWj3jSyl36Fvb1pheg+lfEbbgziqm+ejJdTx/gmViIME2cujDl3gVzZmhPHOaK3clEYLb+0U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155946; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0ZHn8bqcj4q9CJJxCqBE9dI5/6R1oiuiTmmuYFd25J4=; b=LGpY16JI+cJQlLYQnJotLWbrKnQ3fOIu16C7+1lEtywMAVCSpvPdrykj+UgX1vMfZ/bbUkt2JvZ/GXTtwBLsxzw6NDu7xkVnRYuK/NomOg+cbq4OFOnH9U9x/86d/kcDTaQqG5LEionxhbo6p1VWDByl7eJqyE3ECEn9RmHCZ5s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155946415747.6150914369704; Thu, 1 May 2025 20:19:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAguY-00043E-Uw; Thu, 01 May 2025 23:18:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAguQ-0003v5-Sw for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:55 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAguP-0003ky-Bi for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:54 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-72d3b48d2ffso1842108b3a.2 for ; Thu, 01 May 2025 20:17:52 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:17:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155871; x=1746760671; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0ZHn8bqcj4q9CJJxCqBE9dI5/6R1oiuiTmmuYFd25J4=; b=iUpcMBxgQQL6I7dI+TEf+9U3RO9HKYAbXe2X7aqKfCrq01hMdoN53t/TdlUz5B1tzN MuQQCFm5VsyUisrRhZF8lVY7Fe9Lr9gu8EVnz9TPLA0Mkw/s6ZaQxkq0Dzo0ypTwI0xR 0KYhLoTPqbe/4gHciUaUYHqbpDXF1/xEzZbTwb0voj6nfYcNBqzUrNymVoJTGbV1D+CF qZfVHj9Z4Ffz0O1J/B4hflK8i4gU+wt2VItQMHJqrGXJT4EAiNn3qhXfpHH3hMi3EG/9 nCCURw2bUmCzyG2QIcifTPrWWTzDeuG2sCs03Sz05L7Br8z5Fa9rA3uB04e+yn261ZIR QZPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155871; x=1746760671; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0ZHn8bqcj4q9CJJxCqBE9dI5/6R1oiuiTmmuYFd25J4=; b=f/y/MVTrBiZvB4gvUp3RUUejhJNWsiIHFmkNN+FuFoEoEDIuR+YuIHkZilxQCpv4mu w7xwujaDONvJls1QgpGkjQOVrzNcKr8WqQFDF7QEiZsysWKFnCSNKhsqjX8UJIQjQeh/ cclgAJSaIQUShEuJhXXpmYNmoUSqwivaW9Dc6sRl2ZDmYdk3CekYO6RwgAhpCaPpYGy5 8y5fhZGCvMcudRbljxBiQpeG7058ZArAfjelOU0Z9ELT0ukSPEHEZ06bXeWBG+Pl6IQF z/u2bUlecjuAFo6gv0dWPgz65b1aR/q0yjXY4pUumNIDYTw0+irP93/O2SLlwIJZuWod FwyQ== X-Forwarded-Encrypted: i=1; AJvYcCWX1n11yAyDTbVB7CFCJGeW2jvTYDue2D317FcgIR4swrYaEU4Wt/DEcybciisgrYlj7XCpuRy7WlPY@nongnu.org X-Gm-Message-State: AOJu0YzH/l3v559jhDWujEKiZqyKiVeo23EXlc6M0YQ5E0yZSoni7Bf7 YQ7PfDhh0r5kYhXW2y51sPAdXLZCQIaMZ+3pmSAv46Zeh4sh7GpQ X-Gm-Gg: ASbGncsdQEmPukg3f2j+ogyP+k9D29sbe4LxP5Os2IftzFhw5lU/X1gGV350yJFK8Uc e0+cel4EHWtCgp8xgjBNE7fpo3NDeHAs+WPT4txN17P3og95/VAhZ3aarBPs0SNPUYGp6lyBFC5 ZaKbMLUITpBK335cRVPEkrizHuKDrcMD+M18aJ++5NoMOayS2cCytoxuNKRFG91WMc3oksZOjk8 ZR6MQ5F13pznaR1sZ0a8pd21ZXrC6Z+y5jDHQBcT4yO+e8AxzsyTDBPSKRomzBJ7UbKivI0SvwX na4VQ1yVqbSjgxGzT4ZVaU+WYnbgQm7nqh86jOriRtyc X-Google-Smtp-Source: AGHT+IFz3WvjRR3ebp/n+kH3zxPdAK8r5G7wCeua16UPCMAPBiYLFVZnBEEhNOeGGr2ypZ1dZHL8dw== X-Received: by 2002:a05:6a00:420a:b0:72d:3b2e:fef9 with SMTP id d2e1a72fcca58-74058b4e8eamr1817262b3a.20.1746155871190; Thu, 01 May 2025 20:17:51 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 07/12] igb: Add a note about re-loading timers breaking deterministic replay Date: Fri, 2 May 2025 13:16:59 +1000 Message-ID: <20250502031705.100768-8-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=npiggin@gmail.com; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155949196019100 Content-Type: text/plain; charset="utf-8" Add a note about the problem re-loading timers with default values. Deterministic replay requires the timers be migrated with the same value. Signed-off-by: Nicholas Piggin --- hw/net/igb_core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/net/igb_core.c b/hw/net/igb_core.c index eedc341f298..3ae3e53530b 100644 --- a/hw/net/igb_core.c +++ b/hw/net/igb_core.c @@ -4589,7 +4589,9 @@ igb_core_post_load(IGBCore *core) =20 /* * we need to restart intrmgr timers, as an older version of - * QEMU can have stopped them before migration + * QEMU can have stopped them before migration. + * XXX: re-setting timers with fresh values breaks deterministic + * replay. */ igb_intrmgr_resume(core); igb_autoneg_resume(core); --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155947; cv=none; d=zohomail.com; s=zohoarc; b=UOiitFyOpwodyC9QaXE3jatJD7CbMfvFRmk+2DXmeror6Hll6sAN8haPfurqoeFqMwTbs6g05fFutdB+DygeGiUALNfRGOff2otMBDSpfFLl1hy4gpv1zTZiEKINlE5L/1FpGCPk/Q1FVQUt3Lcq3APkzY/1Q/3Lnmn+q7uwUfo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155947; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pLzHhIcQuQ6FEeR22YuCCdcJNCbyDKG+84iGXCJrQqU=; b=SnVysqIxPdAf+vib1DR1OHViUjxLhF3RRHNOg9UfWwTjd6XPIBG4h1SMtIyWRpmwJUIXrzL3l0NPGrr7i5PTE1FE0KjY9fQV7fV404vDTtK4jEcVSKCfj0gD3Z7qjOhuphA5fcdc3qcBZE4+NxlQF8nS8ttC6+h3jILCHbqE0WI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155947400709.4241586873004; Thu, 1 May 2025 20:19:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAgub-00045V-HN; Thu, 01 May 2025 23:18:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAguV-0003zs-Ea for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:59 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAguT-0003su-Ou for qemu-devel@nongnu.org; Thu, 01 May 2025 23:17:59 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-739525d4e12so1648382b3a.3 for ; Thu, 01 May 2025 20:17:57 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:17:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155876; x=1746760676; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pLzHhIcQuQ6FEeR22YuCCdcJNCbyDKG+84iGXCJrQqU=; b=ZxonigaUKVuDnGNvyHYUEmKfjnVBCDWd3VF9RUYLzSKNPIoZ1kJ6L/tU1t5moQ3nK1 Q59blzUpK1UDcvmZqCxi2ahxDOZW/w3zwp9+uUFYQDDL+AeNIcaliTI0+5BiGNU7NPcs PXpW8Ksl42dljkGvrY/tYBv0tm+9cYrSEiDHSPKAlYQGRaAr1bIkJViX4R78/vzMx6X7 NoaaCqBMEgiLLyMLLLBqXTYG/PnUatgE9RCZY88eVvUx2FNoMdlrE9DcwDvK8T37ylBC jjKXBk5cyc2CY3ilcwJkVP3vf3z/6CHaU6acDF3qvzAd804v5kJPBcdYyei70NwtRiKu qAmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155876; x=1746760676; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pLzHhIcQuQ6FEeR22YuCCdcJNCbyDKG+84iGXCJrQqU=; b=JbQQFCacH/EiMwMsdCLr3uIBcWgDbjTXXLJUWnSB8MH2zNv0AcTiSiIwTRtc4ZGgg6 gLO3FjcwpiJvsXmgfv9Wtna4onIIJGXA2LA+R7MCLnhj4EgQC6EK1ooeMkc5jdWxDj8V I0PF/0yGJ4ute4nCYzeewjtO9QMY/OfglZMnxsYWX7lGsMK/d5TBv7D6wGV6tU2m4BI6 Y14/KZgmzQV7NdJUvPgd9oBkE5ZlCwNWvf54IgdWX0PINunIcmPiGRlamLrTTkv7+4HD FXUl3/wfSuufStTlhabqNx0C9LJElgxdTNAFNZN6l586UFqQubkZ/Q5n8u8Wf65xPFMW 84dg== X-Forwarded-Encrypted: i=1; AJvYcCWTC8SkBusw1cnspe/7tPkBe1/WHytKwRwPJ7EIdPrGCF07doR1M9/iJvoHKzpUJiIYNzArSdiMMs1W@nongnu.org X-Gm-Message-State: AOJu0YxGDnu2mJdydrOu/YpaXVG/ZaRXT0gfOXctUz8jDGVGHnIRdXUw x59gQ24yRE7/441GsfgSe4MtWXoL4bQxZJW5mhlIsjhxuyxMTLLe X-Gm-Gg: ASbGncs66iGCVC7WWJsq9N88kmsAp4/bvPESFI/s3HTRcRxjZ3E2dP9SFPnIy/ZguhH +Xv3yPKbfATv3vzYnEAC/aHZ7cVa1rUEjGy9IbM/G0Qf37oxpCwHirXarLJxinkdBQsKoGNYJ5h NHKfw3C56I25aYK+xdnBpZYHwUhXXqxPFSZ8qjydBLb+eBKmJpxp+lrZrLx1A9/hsnf12vby7PI nKwGm294vsAK+MLAGxylH18N20m/ZVx6zy1Qg2NT1PTAZkYUdDivs+sbYROMXelgKFCGDMw+ux5 SLKf9BxF25d9oCbST4OuXoFJdB+bviprSHc/cTy5DE9G X-Google-Smtp-Source: AGHT+IE9h006LyR3sjjnzqkl6eccA0RYvP3fedvKQ9dPXg9w/fUe7IwB0VXoyzZ6lVkbTVwJUAA1KA== X-Received: by 2002:a05:6a00:301f:b0:736:9e40:13b1 with SMTP id d2e1a72fcca58-74058b25ab3mr1834029b3a.23.1746155876297; Thu, 01 May 2025 20:17:56 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 08/12] hw/net/e1000e: Postponed msix interrupt processing should auto-clear cause Date: Fri, 2 May 2025 13:17:00 +1000 Message-ID: <20250502031705.100768-9-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155949177019100 Content-Type: text/plain; charset="utf-8" Cause auto-clearing and masking should be performed during msix interrupt processing. Signed-off-by: Nicholas Piggin --- hw/net/e1000e_core.c | 86 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 69 insertions(+), 17 deletions(-) diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c index f8e6522f810..5969f49e8fd 100644 --- a/hw/net/e1000e_core.c +++ b/hw/net/e1000e_core.c @@ -178,16 +178,62 @@ e1000e_intrmgr_on_throttling_timer(void *opaque) } } =20 +/* returns the bitmap of causes that are mapped to a given vector */ +static uint32_t find_msix_causes(E1000ECore *core, int vec) +{ + uint32_t causes =3D 0; + uint32_t int_cfg; + + int_cfg =3D E1000_IVAR_RXQ0(core->mac[IVAR]); + if (E1000_IVAR_ENTRY_VALID(int_cfg) && + E1000_IVAR_ENTRY_VEC(int_cfg) =3D=3D vec) { + causes |=3D E1000_ICR_RXQ0; + } + + int_cfg =3D E1000_IVAR_RXQ1(core->mac[IVAR]); + if (E1000_IVAR_ENTRY_VALID(int_cfg) && + E1000_IVAR_ENTRY_VEC(int_cfg) =3D=3D vec) { + causes |=3D E1000_ICR_RXQ1; + } + + int_cfg =3D E1000_IVAR_TXQ0(core->mac[IVAR]); + if (E1000_IVAR_ENTRY_VALID(int_cfg) && + E1000_IVAR_ENTRY_VEC(int_cfg) =3D=3D vec) { + causes |=3D E1000_ICR_TXQ0; + } + + int_cfg =3D E1000_IVAR_TXQ1(core->mac[IVAR]); + if (E1000_IVAR_ENTRY_VALID(int_cfg) && + E1000_IVAR_ENTRY_VEC(int_cfg) =3D=3D vec) { + causes |=3D E1000_ICR_TXQ1; + } + + int_cfg =3D E1000_IVAR_OTHER(core->mac[IVAR]); + if (E1000_IVAR_ENTRY_VALID(int_cfg) && + E1000_IVAR_ENTRY_VEC(int_cfg) =3D=3D vec) { + causes |=3D E1000_ICR_OTHER; + } + + return causes; +} + +static void +e1000e_msix_auto_clear_mask(E1000ECore *core, uint32_t cause); + static void e1000e_intrmgr_on_msix_throttling_timer(void *opaque) { E1000IntrDelayTimer *timer =3D opaque; - int idx =3D timer - &timer->core->eitr[0]; + E1000ECore *core =3D timer->core; + int idx =3D timer - &core->eitr[0]; + uint32_t causes; =20 timer->running =3D false; =20 + causes =3D find_msix_causes(core, idx); trace_e1000e_irq_msix_notify_postponed_vec(idx); - msix_notify(timer->core->owner, idx); + msix_notify(core->owner, idx); + e1000e_msix_auto_clear_mask(core, causes); } =20 static void @@ -1985,24 +2031,10 @@ e1000e_eitr_should_postpone(E1000ECore *core, int i= dx) } =20 static void -e1000e_msix_notify_one(E1000ECore *core, uint32_t cause, uint32_t int_cfg) +e1000e_msix_auto_clear_mask(E1000ECore *core, uint32_t cause) { uint32_t effective_eiac; =20 - if (E1000_IVAR_ENTRY_VALID(int_cfg)) { - uint32_t vec =3D E1000_IVAR_ENTRY_VEC(int_cfg); - if (vec < E1000E_MSIX_VEC_NUM) { - if (!e1000e_eitr_should_postpone(core, vec)) { - trace_e1000e_irq_msix_notify_vec(vec); - msix_notify(core->owner, vec); - } - } else { - trace_e1000e_wrn_msix_vec_wrong(cause, int_cfg); - } - } else { - trace_e1000e_wrn_msix_invalid(cause, int_cfg); - } - if (core->mac[CTRL_EXT] & E1000_CTRL_EXT_EIAME) { trace_e1000e_irq_iam_clear_eiame(core->mac[IAM], cause); core->mac[IAM] &=3D ~cause; @@ -2019,6 +2051,26 @@ e1000e_msix_notify_one(E1000ECore *core, uint32_t ca= use, uint32_t int_cfg) } } =20 +static void +e1000e_msix_notify_one(E1000ECore *core, uint32_t cause, uint32_t int_cfg) +{ + if (E1000_IVAR_ENTRY_VALID(int_cfg)) { + uint32_t vec =3D E1000_IVAR_ENTRY_VEC(int_cfg); + if (vec < E1000E_MSIX_VEC_NUM) { + if (!e1000e_eitr_should_postpone(core, vec)) { + trace_e1000e_irq_msix_notify_vec(vec); + msix_notify(core->owner, vec); + } + } else { + trace_e1000e_wrn_msix_vec_wrong(cause, int_cfg); + } + } else { + trace_e1000e_wrn_msix_invalid(cause, int_cfg); + } + + e1000e_msix_auto_clear_mask(core, cause); +} + static void e1000e_msix_notify(E1000ECore *core, uint32_t causes) { --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155937; cv=none; d=zohomail.com; s=zohoarc; b=hEVc8J5wYP74lRDNE/p19fzpr2ZBx/rSQsCqkEPGhDtQ4Sc4s7C2h1gsTPriOQi4BNHOEmng67CO1rZZMDfr4l0dtIf65+2vD+Ehl6R4Zaz+jD0KCWyGwkeuDlV6dQ01316VyrvW78NHWbgvW8AlkCQY1Yf2h8K44nyLXBD6HRw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155937; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=c4QqPt240JeB7hjh0OkecHrTdb+ZtBLKIB7bPU4Cqdw=; b=fIQyMdlQF/Hrz7Di/pEnBZ8AX5b+KlCsTbJyqB5WqJofwn00EtR+zEATOVp+TYHW7Hw4oQWLiDciWDib1QQUlEwl+k4cLe9BzGN2sQ8D7gxGOQaGqkedTAjpC0RYtXPWRHpMOlm7OkWCiku2YWe2mwr16jkdGjjg3MPJZFhWNoI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155937361635.8813334196764; Thu, 1 May 2025 20:18:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAguh-0004Fy-B2; Thu, 01 May 2025 23:18:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAgua-00045e-FO for qemu-devel@nongnu.org; Thu, 01 May 2025 23:18:05 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAguY-0003zd-Ti for qemu-devel@nongnu.org; Thu, 01 May 2025 23:18:04 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-7394945d37eso1433057b3a.3 for ; Thu, 01 May 2025 20:18:02 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.17.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:18:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155881; x=1746760681; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=c4QqPt240JeB7hjh0OkecHrTdb+ZtBLKIB7bPU4Cqdw=; b=R6iHV9QwqxA1HCEDjYd6Pmmb+TWzYKxY1SQbP8lSSoO9q4/E62G5iACfsK7ccGme2i OTEnHF3ooWWESS4NHTwnR068G13pozc3lr1sr6Tt3BwWk0IIUHUVUewNwDbtr47SPv+S vl4HC1b8Qk3F5b19gXMuig2QdUrOnJb9HEAe3NJXQWZyh+xWvvQEsB2EfD6IQZZBFRtD 8Ubj+Bk7NnQHnNezuP5t1HL7SN9aJ6ePnbKPcAd1cAIAKT1TPH7n+qRL5F2pS2IhO48t w+EaHUk6Jj2nNr80xmwJ/54TuX67Kx22Yn/UVHbVl43nV8KTNmwuenjYAtaAE7/LuWs0 3mkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155881; x=1746760681; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=c4QqPt240JeB7hjh0OkecHrTdb+ZtBLKIB7bPU4Cqdw=; b=bzIwze0v0YY8AcJ+17jmzaXYIus0e4Y2viwhNafxRL7W7IvoZUeedvRB5uiu9Onwtl w2NFdmkE8x2stE3BF+R03zm1vE4MiNgHM4rGETv+cfiSAuCWhoJjyvTpICNvZvef6k7+ /zAuQjq3UJ/nLAazb3ohrhO7ZDl2+zx3OWjMVo3nSD1kwz4ckFyCKLNcESA5FqgHOFTi xDM2FU01I45NR297zNqFSTQAUXgaYGPqhywoOn3msMNfIl9MkSDBK6jIhwubDHY3bYbL OZcy8FJSlJBDo5PxjmbYEiEmDwdeKFcFIEYNgYL/8kxEtbI8+3A7flSUyytXviLnATzr ckBg== X-Forwarded-Encrypted: i=1; AJvYcCX9lhwp0jdezUjjRHhQUVRZysCmjVGfo9TWUqrngpQdJZ3UEQQd4kM8vPQHAm3s0wAySswuEDOa/H22@nongnu.org X-Gm-Message-State: AOJu0YykK6T0RqzjjXr88SI5DzJZ/szzhEp8D5YBnGrR1W11abyZd+q0 XmhA38rnhjAtcQuwAgqBUgT04phTlk1y9QqqtyK1z6gGaxUg64sQ X-Gm-Gg: ASbGncv9i23iHUTMcWJuH3REZWInsLt+kZyCXzMrHemPukmhcS0UoNidywL5xkm2PJY r7MlkquXpE0SgrZ/GuaN7VTvqDzQqmCqd0zqfmtyGaJkOGy1nMWZfZGyUKR430TQrGTPoQhk3gk ijX6q+uN2gHUEmVkdLIaOIsN9+Hu1ASxL5HT3ZXTqqI8TQqDOH/JZmpR0P4qFpcIwe+Fxuu0hNF WPz4Ydgf6jGgU0imIVQr3OTxGNP1x+ICT7jj6qshDKatapjJ960nHBKI/2WEFEY3tw6E0WwR9FJ 0DKSPS3ANlmALWCRwBUYl18PjpuwrlhhDtFcPI5Ejfb6 X-Google-Smtp-Source: AGHT+IF3FZRxTD8+cRIoOYfIktJ0/OnEm+G4+fcejmszQ8lCw6Txqk02bWPbqJfl/CFa2LIfrdV67w== X-Received: by 2002:a05:6a21:78d:b0:1f5:8622:5ecb with SMTP id adf61e73a8af0-20ce04e7581mr2186136637.34.1746155881616; Thu, 01 May 2025 20:18:01 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 09/12] hw/net/e1000e: Do not auto-clear cause on postponed msix interrupt Date: Fri, 2 May 2025 13:17:01 +1000 Message-ID: <20250502031705.100768-10-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=npiggin@gmail.com; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155939114019100 Content-Type: text/plain; charset="utf-8" If an interrupt is postponed, it should not do cause auto-clearing or auto-masking. That is done when the interrupt processing occurs. Signed-off-by: Nicholas Piggin --- hw/net/e1000e_core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c index 5969f49e8fd..022884a2ea0 100644 --- a/hw/net/e1000e_core.c +++ b/hw/net/e1000e_core.c @@ -2057,10 +2057,11 @@ e1000e_msix_notify_one(E1000ECore *core, uint32_t c= ause, uint32_t int_cfg) if (E1000_IVAR_ENTRY_VALID(int_cfg)) { uint32_t vec =3D E1000_IVAR_ENTRY_VEC(int_cfg); if (vec < E1000E_MSIX_VEC_NUM) { - if (!e1000e_eitr_should_postpone(core, vec)) { - trace_e1000e_irq_msix_notify_vec(vec); - msix_notify(core->owner, vec); + if (e1000e_eitr_should_postpone(core, vec)) { + return; } + trace_e1000e_irq_msix_notify_vec(vec); + msix_notify(core->owner, vec); } else { trace_e1000e_wrn_msix_vec_wrong(cause, int_cfg); } --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155999; cv=none; d=zohomail.com; s=zohoarc; b=ETmld9Yn9+Rc/oGFuFO3AFHMmKkva4tJkrVzFPDXNdCwvHRTvssoYS17iY7QDrDSeE0CwaN38JEm3KyfwdQQf+vsDuDspLcL4mDl6C8pixBHJWU89E6NX/EVf2orXrVs3ZKpXclGOc83vMVSQdI6efNvKcU4AUhBzGbwi7N/xs8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155999; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BKvR1gZcRBT/ylC50kaOx9Jww1GBQEMF/HrSuO992Q0=; b=iJbGEsjEKDvzO+Eo38+S5sEVGaUVFxrQ2XBeh2N3tHyVr1LBDzVOkDfZgnStDtr5bXY5iwsZ908oBm9uwrGmIO0n5FQskIZ4zhK2fde9W//OCNmqmVlOvI1iI/oBj3ISPBIVGCalBEuL8waiOg9JYR/6nsJatqI+IB/31gfOdq0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155999377853.8517759549082; Thu, 1 May 2025 20:19:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAguu-0004QN-Js; Thu, 01 May 2025 23:18:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAguh-0004GH-3T for qemu-devel@nongnu.org; Thu, 01 May 2025 23:18:11 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAgue-0004AJ-PV for qemu-devel@nongnu.org; Thu, 01 May 2025 23:18:10 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-72d3b48d2ffso1842232b3a.2 for ; Thu, 01 May 2025 20:18:08 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.18.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:18:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155887; x=1746760687; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BKvR1gZcRBT/ylC50kaOx9Jww1GBQEMF/HrSuO992Q0=; b=ggJ++p2yVN18tlMRyuVPBoW8pIdeXCWhT//KmfyhBCnAXmJaU73na4kRanDvKDfI43 h2SVxldFNchOBXvnuf3dkjCgyZnIIp4nYYrY2r6uzyMBWp44ARxxPEOgVVFusaLnQP4W uAsUA+akgD3cJs7zStZndbbJQ8F2xkL8aEOvYNKNXaUjmqrNaEqCNyNjcYl0Eu5VKHYY 7hjbekThgiZga1nZk2A83qfW1qStcl4uVFxbi88f/7yEpEVwMHyznn8kzgzFynhcgpwv E2kmuTO2jj+UVCZsv3ofGpq8Sn8JWYPeAuK1uuUBnvmLP6LCpuPPFRoH42fzcLS4JMbR eEkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155887; x=1746760687; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BKvR1gZcRBT/ylC50kaOx9Jww1GBQEMF/HrSuO992Q0=; b=dQqPISu23+pwXkMYyCXuBdFu3fezDjIirljw6vVDBAyI505XrpTE+lWkJOX60eTrGQ al5RMaXVc2JG8Typ1mJpSqPSntcbYGdIZmHitHX4w/gZPkbXMPUsjjChtfPt3joQZzM2 ZG8G6GKtmXfYeQ7VevQgSaSC1HBJvE7pA97GNkYnRIja15QguJL5bseoGDs4BEO7szwX +MptTL/i8cuPlCwNoOgyBGq+SiaqvPAB489rdzvyAW+/rGs3VF4VcAY5LFfgKlJMVgDP OFwltZyXajpr0mBpDFfGHnquiqdrTTtt+FqEn7hNuYGunsr5MwpPb2Iz306zZSZT4Uav RZSw== X-Forwarded-Encrypted: i=1; AJvYcCXLYxAUnNcK69DhixwAqFnwOPH+lejfsNJ7klxDCoGdRxjf+yoyUgs/4zwbLtah1J3NfM58HJVbwpbI@nongnu.org X-Gm-Message-State: AOJu0YzdkohFI0KQUCPacldyV5wHn7ooC3fzBRmuZbtOn9z0/k1SLLnt HISbacHO32DFqJ8iou4aMbpiRCa46SdTle2y3JuziOc8vj75Vo66 X-Gm-Gg: ASbGnctKDlvYeFwpWaG/t0WM2uzitqW/fDSKgKJ1K1sp1GHQGbXCsWAPKxHI39GVpHS 47Wh9xTAy923KwZFewkbyFlZq0UX/La+sUfzwY/Ac11+xQolUQN2QF+X6DtX7C9mH+viHOHRJZi hIj++VsBMlWFc09qhcuG/vN1zVXIGM53FT8D5B61H6mQINKByd+kMWtO9Onydxwu6op2YhnUgKH DvcqNGGghlllnFextmNgTGBm3CQVj86z7MaDa9pmLeclpPqF2z1xiyTnrk8GjbvciE9bPafKqvs NZ3agr/U46rRUUT1ePqCzSaIRQDCKbcDxsksZdFfReih X-Google-Smtp-Source: AGHT+IHAjCNYKWJVRSiXKvEdBuzly5m7pHr7CcdbYuiBtzQ+yzmsMLHyR2+40n1ctPV4GccKwKiunA== X-Received: by 2002:a05:6a20:3d90:b0:20a:53e7:4a44 with SMTP id adf61e73a8af0-20cdec4b676mr1787185637.19.1746155886992; Thu, 01 May 2025 20:18:06 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 10/12] net/e1000e|igb: Only send delayed msix interrupts that have a cause Date: Fri, 2 May 2025 13:17:02 +1000 Message-ID: <20250502031705.100768-11-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746156000351124100 Content-Type: text/plain; charset="utf-8" The msix interrupt throttling timer expiry sends an interrupt even if there is no unmasked interrupt causes. This can be observed by seeing two interrupts in response to a single event when throttling is active. The e1000e non-msix paths seem to get this right by masking and testing ICR and IMS. Add similar checks for the msix cases in e1000e and igb. Signed-off-by: Nicholas Piggin --- hw/net/e1000e_core.c | 10 ++++++---- hw/net/igb_core.c | 11 ++++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c index 022884a2ea0..d53f70065ef 100644 --- a/hw/net/e1000e_core.c +++ b/hw/net/e1000e_core.c @@ -230,10 +230,12 @@ e1000e_intrmgr_on_msix_throttling_timer(void *opaque) =20 timer->running =3D false; =20 - causes =3D find_msix_causes(core, idx); - trace_e1000e_irq_msix_notify_postponed_vec(idx); - msix_notify(core->owner, idx); - e1000e_msix_auto_clear_mask(core, causes); + causes =3D find_msix_causes(core, idx) & core->mac[IMS] & core->mac[IC= R]; + if (causes) { + trace_e1000e_irq_msix_notify_postponed_vec(idx); + msix_notify(core->owner, causes); + e1000e_msix_auto_clear_mask(core, causes); + } } =20 static void diff --git a/hw/net/igb_core.c b/hw/net/igb_core.c index 3ae3e53530b..035637f81f8 100644 --- a/hw/net/igb_core.c +++ b/hw/net/igb_core.c @@ -171,12 +171,17 @@ static void igb_intrmgr_on_msix_throttling_timer(void *opaque) { IGBIntrDelayTimer *timer =3D opaque; - int idx =3D timer - &timer->core->eitr[0]; + IGBCore *core =3D timer->core; + int vector =3D timer - &core->eitr[0]; + uint32_t causes; =20 timer->running =3D false; =20 - trace_e1000e_irq_msix_notify_postponed_vec(idx); - igb_msix_notify(timer->core, idx); + causes =3D core->mac[EICR] & core->mac[EIMS]; + if (causes & BIT(vector)) { + trace_e1000e_irq_msix_notify_postponed_vec(vector); + igb_msix_notify(core, vector); + } } =20 static void --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155987; cv=none; d=zohomail.com; s=zohoarc; b=O5CeaWnnEMQeSDtATYEDOsmGjK/hB1Kk+wwSVJHHnXD8Rw0YDDggrk2UuYkk13ZRhzR0D4j2c6s9cAWc3XbkZHvxhtJGGG9FI8YkbRgcp2Mik9+TWUPKi82F0X1pghy4NuowJRUNNAtUpw5aU9l9wH508jIutGy6QBM+gkTFH9Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155987; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=69mKuFE3hql0lZ2w4laAr5osBAUcA87Gfn7jgseJ534=; b=LG1mNXb+z4TVQl9ETbYxo6VJQjjl7gXKsBwt/x0YEcvq+2FG0Er7wgRgjCgR98CSoc6iE/+0uDW6SYGl6D5W8SR4Npw1pCe4ds0j+QNQ1ULFMNlioIwpoAJolqztez+Om7sQEJ3Q8h4m/hXj075DpqgjkXz/h8d0WTyWjIu3AOI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155987649801.0609309808864; Thu, 1 May 2025 20:19:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAgvI-0004wK-TF; Thu, 01 May 2025 23:18:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAgul-0004Po-MC for qemu-devel@nongnu.org; Thu, 01 May 2025 23:18:16 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAguj-0004Fu-Le for qemu-devel@nongnu.org; Thu, 01 May 2025 23:18:15 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-7394945d37eso1433128b3a.3 for ; Thu, 01 May 2025 20:18:13 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.18.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:18:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155892; x=1746760692; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=69mKuFE3hql0lZ2w4laAr5osBAUcA87Gfn7jgseJ534=; b=Yc7r1S9zXY8RsHxtB0+3CRYnhvR/1L2yve2Ikctx+2StzPCWr+bYsOfof48RhZ6Lfs piQeb4a5msj0CVnjmTSqcoVgJ62ZmlA6Dy/S5KtxvnaINBOqVwCRn+NOtQklO/I0m+EK irypGYqPEHOCww/KnLx73K0IEnqgUD1d7ESLXbgiq6XxohbTuBxEFQAgYfm126PQ4yLp B4gIJbaoZgsZz3D8Jsd4mEhciGmrcJOvVomwHyuQhc7IWxKJONmuMPKcD6OKul6Cey1w /Ebg/rWBP4CQpGAbltRpE0nQymXQbTJ3B8din9yKbChEclpBQXVN3J9nM0fr7CbhvRY2 1kzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155892; x=1746760692; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=69mKuFE3hql0lZ2w4laAr5osBAUcA87Gfn7jgseJ534=; b=WpHf2gITnYjwIE+YZoaJNFPJd8sXBayiC1pi9y+EKKwNDSGxgOqCJNcMJOYdz3hhIO fc9vDOJ/XthhEB8e/vaO3c4abZqXRQYw/EJVBfSajNoMQunnZmyNd+LELmG0u115oykE CxSMA1WMSMmLLw77wGCehYbiYOQHPuVhOv7Ux2ENbUlhkgZUphLrK4T3HTCVjtofb/fv eKMJdc2YX5T6+hfDvNVPoqElsimzyiRzk12lbZqEj8gX8LfBIiCPLbbqQNcfDyP9MzAm svCHTyUVvYVOeOgR4lS2r2n3bRbFTjty2zIxNjqZfX9xJmuaoojUkdN2M+S8y+JN/0Bf 7E6A== X-Forwarded-Encrypted: i=1; AJvYcCUHGtVNoIqug7NKEEnaG2GDSa75836ONsgrXKlTKyH1OAyh4cISSh5l4puTDzGreJNcgYpxLwEbn4cI@nongnu.org X-Gm-Message-State: AOJu0Yz2/Cwo7/qSuf97a1bHG3ePitXtozxb9/AqpYrjUA4BT9bo6kg4 YYFOLXz1d+oqU00ciM4gX30QdY8/XtXxvs6++QxMC46nV8GPBwdt X-Gm-Gg: ASbGnctO0yh7OtapiuHepmCakvR7Xu2U8nqG3pocK6DhWO9G2MXx+mbczNN89rNHGuo YoeDqhZx/Jes8FfQgtmdM1hPOCGiVAGWT0yXcFY/CakFJKgRCMlLDR2OyydkCnnCYSsEi0JN8mq B3F9kmiqP8ucvgLpvR/kO/plLDOawzPrA/2Q7Dh1mBR7bs5ko/YBGzw1HwgeGjO7+TQP6Daznr2 LpkRcxeg3VcqZ6xMWXvZlxOcQ2ho39LMk0GQ63L0Q5T4fc38Pmmj9shup3UYVic0YuOXUcGQDr3 4Cgsbhp05f2M4li5VNL0wBJdeOaOZmS+gqqCdmQVmwp/ X-Google-Smtp-Source: AGHT+IEWrlX/enTXJSa5gJPSVOE3vr8hvCW34MGAs9k9z/9sCKivxJjUTnLnJLcuMTjCm6ZlEPytCQ== X-Received: by 2002:a05:6a00:4acd:b0:736:ff65:3fcc with SMTP id d2e1a72fcca58-74058ae68a2mr1920693b3a.16.1746155892230; Thu, 01 May 2025 20:18:12 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 11/12] net/e1000e|igb: Fix interrupt throttling rearming Date: Fri, 2 May 2025 13:17:03 +1000 Message-ID: <20250502031705.100768-12-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=npiggin@gmail.com; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155989204019100 Content-Type: text/plain; charset="utf-8" Timer expiry that results in an interrupt does not rearm the timer so an interrupt can appear immediately after the interrupt generated by timer expiry. Fix this by rearming the throttle timer when a delayed interrupt is processed. e1000e gets this by reusing the e1000e_msix_notify() logic, igb calls igb_intrmgr_rearm_timer() directly. Signed-off-by: Nicholas Piggin --- hw/net/e1000e_core.c | 5 ++-- hw/net/igb_core.c | 55 ++++++++++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c index d53f70065ef..2932122c04b 100644 --- a/hw/net/e1000e_core.c +++ b/hw/net/e1000e_core.c @@ -218,7 +218,7 @@ static uint32_t find_msix_causes(E1000ECore *core, int = vec) } =20 static void -e1000e_msix_auto_clear_mask(E1000ECore *core, uint32_t cause); +e1000e_msix_notify(E1000ECore *core, uint32_t causes); =20 static void e1000e_intrmgr_on_msix_throttling_timer(void *opaque) @@ -233,8 +233,7 @@ e1000e_intrmgr_on_msix_throttling_timer(void *opaque) causes =3D find_msix_causes(core, idx) & core->mac[IMS] & core->mac[IC= R]; if (causes) { trace_e1000e_irq_msix_notify_postponed_vec(idx); - msix_notify(core->owner, causes); - e1000e_msix_auto_clear_mask(core, causes); + e1000e_msix_notify(core, causes); } } =20 diff --git a/hw/net/igb_core.c b/hw/net/igb_core.c index 035637f81f8..cc25a1d5baa 100644 --- a/hw/net/igb_core.c +++ b/hw/net/igb_core.c @@ -152,11 +152,14 @@ igb_intrmgr_arm_timer(IGBIntrDelayTimer *timer, int64= _t delay_ns) static inline void igb_intrmgr_rearm_timer(IGBIntrDelayTimer *timer) { - uint32_t interval =3D (timer->core->mac[timer->delay_reg] & - E1000_EITR_INTERVAL) >> 2; - int64_t delay_ns =3D (int64_t)interval * timer->delay_resolution_ns; + uint32_t eitr =3D timer->core->mac[timer->delay_reg]; =20 - igb_intrmgr_arm_timer(timer, delay_ns); + if (eitr !=3D 0) { + uint32_t interval =3D (eitr & E1000_EITR_INTERVAL) >> 2; + int64_t delay_ns =3D (int64_t)interval * timer->delay_resolution_n= s; + + igb_intrmgr_arm_timer(timer, delay_ns); + } } =20 static void @@ -168,21 +171,7 @@ igb_intmgr_timer_resume(IGBIntrDelayTimer *timer) } =20 static void -igb_intrmgr_on_msix_throttling_timer(void *opaque) -{ - IGBIntrDelayTimer *timer =3D opaque; - IGBCore *core =3D timer->core; - int vector =3D timer - &core->eitr[0]; - uint32_t causes; - - timer->running =3D false; - - causes =3D core->mac[EICR] & core->mac[EIMS]; - if (causes & BIT(vector)) { - trace_e1000e_irq_msix_notify_postponed_vec(vector); - igb_msix_notify(core, vector); - } -} +igb_intrmgr_on_msix_throttling_timer(void *opaque); =20 static void igb_intrmgr_initialize_all_timers(IGBCore *core, bool create) @@ -2258,9 +2247,7 @@ igb_postpone_interrupt(IGBIntrDelayTimer *timer) return true; } =20 - if (timer->core->mac[timer->delay_reg] !=3D 0) { - igb_intrmgr_rearm_timer(timer); - } + igb_intrmgr_rearm_timer(timer); =20 return false; } @@ -2284,6 +2271,30 @@ static void igb_send_msix(IGBCore *core, uint32_t ca= uses) } } =20 +static void +igb_intrmgr_on_msix_throttling_timer(void *opaque) +{ + IGBIntrDelayTimer *timer =3D opaque; + IGBCore *core =3D timer->core; + int vector =3D timer - &core->eitr[0]; + uint32_t causes; + + timer->running =3D false; + + causes =3D core->mac[EICR] & core->mac[EIMS]; + if (causes & BIT(vector)) { + /* + * The moderation counter is loaded with interval value whenever t= he + * interrupt is signaled. This includes when the interrupt is sign= aled + * by the counter reaching 0. + */ + igb_intrmgr_rearm_timer(timer); + + trace_e1000e_irq_msix_notify_postponed_vec(vector); + igb_msix_notify(core, vector); + } +} + static inline void igb_fix_icr_asserted(IGBCore *core) { --=20 2.47.1 From nobody Sat Nov 15 22:23:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1746155961; cv=none; d=zohomail.com; s=zohoarc; b=XUwsOzkqphwrJkNyfbdky5aMPV5NqzcQGRdCsOW7eUvbGVIQeDZ8AmOovRm619ztTNbXfSx1415RtDtSyJG87IMxhkg/NTCKf2Q0gvXcqkENKoIaMVIL+mPFPjODcqSU5euhj0GY/i8KzcitQww06CdtG2VHfGKehWCudOhazBk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746155961; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mcgWH2x0gAyjXMufV1B2NOlfCFMvX5UXpeLLJX0H558=; b=fiKLFrBPRDzKYGzR540WkVAKeJWd1WQrVK5Kj8TM5exG5/Y0eY+Lr+Cnt2A9KbcUJdjTT8j+CGWlWStUeoEPDWb3hh0hOVHX4qOe1pabaFh1ITZvr/9weofCFBQxm8clAzEY3gvE1X+pG7b7S6f0wPusb2O394qeUFPprE0ayDU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746155961125690.9952969030766; Thu, 1 May 2025 20:19:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uAgva-0005WE-P7; Thu, 01 May 2025 23:19:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uAgut-0004dc-TV for qemu-devel@nongnu.org; Thu, 01 May 2025 23:18:27 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uAguo-0004Gc-IF for qemu-devel@nongnu.org; Thu, 01 May 2025 23:18:23 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-7403f3ece96so2254720b3a.0 for ; Thu, 01 May 2025 20:18:18 -0700 (PDT) Received: from wheely.local0.net ([220.253.99.94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74058ded48fsm467883b3a.83.2025.05.01.20.18.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 20:18:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746155897; x=1746760697; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mcgWH2x0gAyjXMufV1B2NOlfCFMvX5UXpeLLJX0H558=; b=HDICwuy+HMkcWNHr1uW73b+k0YHMVUu9+BoYLi42ARQgsrHttpvR0fBRSh2FlOOAgS 55aXlp9mjypfKHb3sFbaCFq6Eint1ackzRGxKyi9rRns5vLp1efcea8mUJa2czIScDAs fiLS+H4sau8cLoq7rxvmmj9b0c5q0BQ5Ix5dO64RI2IU1fPpW7WSPFJ73bNC/w29wlZX yYzaU+K0Xvpgt4chW9IGXhfRuvMHWLNMMghmyqyMh1f0W4GmHd7AM7hTNCbeLF5v2mLi 8fNO/UKMcq0PUEwkyvScgLEbPtejJCNUPa/1PMsArb40HokcrPK2rtUDDOR5jP4cchYJ /XRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746155897; x=1746760697; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mcgWH2x0gAyjXMufV1B2NOlfCFMvX5UXpeLLJX0H558=; b=iyDcTbgC9uSbLdiW9u5CkiMypd/0CPYGNvh4FYd8VQwPnlShB/rUqqJQ+PKUa6VEyK mmLiE2eA7w7JW8x0IkrLcDTSIpPqv875MdBzFlfFL+nTF1cbGxB3OE/NjXzUDaUsM+lE wOWcXJq1IKtIlMvSMlvn8QWXScvW5uqi7otWnWgwfzyV1Xh/UkC/KOa/6o+79T4WgxYD W/8YJGkZ8wCnCKCXEBtVojfFBbNbcSkTZeplOXQoU9hXLMgY1l1eUF+uncKdyhyJKm2L 6iGeoFWP4D6X75tFY+TYe4EZNUNTiRRQkJtnZu2CE6CDm8clsVebLvgau5lSek5yzEU2 Xn0Q== X-Forwarded-Encrypted: i=1; AJvYcCXhSN3Wz0qUgquOZQuFQuNHi7VhS6B8SgEUJ1t0AAORHDq0xlWnEaW8gKHc6U+jHS1/Evwv4YoRNaIA@nongnu.org X-Gm-Message-State: AOJu0Yw8PqK0FRb/FKL9nGQZqrfrj9fx8npnmaQ5E/ZdYB4wOnpMpoPL UkYGTNF+us26QCPEg6fi3q2Dl35DvoXplorg/GFnmqMVITa9lpAT X-Gm-Gg: ASbGncuF1X5QrJuMr8dXIn/fIvGyFNGPmBOZk1Q0uQa9/jn7NTRs2jIBPUOtWunn4t9 5UlrIZnEFprGZpFFyk0+CSm3l7aoJ1AngYQU83oAlQCNCfGJRhi0TIPI/zOnnu2NHqRUWQAtA3P dZHcNVZ1Zd5gS5mv19DJGgIvAol7Iow+Gt8xMlHDKvgi3+d/c+NfseGtPSFLGgPga6FMef46Q8C wHGJzWK6tdtVot4qSWNaJGxAOhmUuBGqJoF1CGdSiu4o+aIOkmFxVAETHGcG0Ap1q2snC1asZi3 38Uo5gpZHgGmbFFazcWlRmf7N+IcnYjYP8jASlK4I8xD X-Google-Smtp-Source: AGHT+IHyIQQtZXpq1SpDCms0tMJEDCkUMuT4WHVgLAALpSPQIW+YceC+48iuYcrIQNO3pJ2hkD5whg== X-Received: by 2002:a05:6a00:8f0a:b0:736:a973:748 with SMTP id d2e1a72fcca58-74058b28595mr1986991b3a.22.1746155897257; Thu, 01 May 2025 20:18:17 -0700 (PDT) From: Nicholas Piggin To: Akihiko Odaki Cc: Nicholas Piggin , qemu-devel@nongnu.org, Dmitry Fleytman , Jason Wang , Sriram Yagnaraman , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v3 12/12] qtest/e1000e|igb: Test interrupt throttling in multiple_transfers test Date: Fri, 2 May 2025 13:17:04 +1000 Message-ID: <20250502031705.100768-13-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250502031705.100768-1-npiggin@gmail.com> References: <20250502031705.100768-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=npiggin@gmail.com; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1746155963202019100 Content-Type: text/plain; charset="utf-8" Enable interrupt throtling on one of the two queue interrupts used in the multiple_transfers test, to improve coverage. The number of interrupts for the e1000e test is reduced because it has a long minimum throttling delay so without reducing iterations throttling adds about 40s to the test runtime. Signed-off-by: Nicholas Piggin Reviewed-by: Fabiano Rosas --- tests/qtest/e1000e-test.c | 6 +++--- tests/qtest/igb-test.c | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/qtest/e1000e-test.c b/tests/qtest/e1000e-test.c index a538c72cc84..645b31127f0 100644 --- a/tests/qtest/e1000e-test.c +++ b/tests/qtest/e1000e-test.c @@ -181,7 +181,7 @@ static void test_e1000e_rx(void *obj, void *data, QGues= tAllocator * alloc) static void test_e1000e_multiple_transfers(void *obj, void *data, QGuestAllocator *alloc) { - static const long iterations =3D 4 * 1024; + static const long iterations =3D 1 * 1024; long i; =20 QE1000E_PCI *e1000e =3D obj; @@ -194,8 +194,8 @@ static void test_e1000e_multiple_transfers(void *obj, v= oid *data, return; } =20 - /* Clear EITR because buggy QEMU throttle timer causes superfluous irq= s */ - e1000e_macreg_write(d, E1000_EITR + E1000E_RX0_MSG_ID * 4, 0); + /* Use EITR for one irq and disable it for the other, for testing */ + e1000e_macreg_write(d, E1000_EITR + E1000E_RX0_MSG_ID * 4, 500); e1000e_macreg_write(d, E1000_EITR + E1000E_TX0_MSG_ID * 4, 0); =20 for (i =3D 0; i < iterations; i++) { diff --git a/tests/qtest/igb-test.c b/tests/qtest/igb-test.c index 12cdd8b498a..c1877a77be4 100644 --- a/tests/qtest/igb-test.c +++ b/tests/qtest/igb-test.c @@ -198,6 +198,10 @@ static void test_igb_multiple_transfers(void *obj, voi= d *data, return; } =20 + /* Use EITR for one irq and disable it for the other, for testing */ + e1000e_macreg_write(d, E1000_EITR(E1000E_RX0_MSG_ID), 0); + e1000e_macreg_write(d, E1000_EITR(E1000E_TX0_MSG_ID), 10 << 2); /* 10u= s */ + for (i =3D 0; i < iterations; i++) { igb_send_verify(d, data, alloc); igb_receive_verify(d, data, alloc); --=20 2.47.1