From patchwork Tue Jan 26 13:45:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 12046641 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B424C433DB for ; Tue, 26 Jan 2021 13:46:25 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2F6BC2255F for ; Tue, 26 Jan 2021 13:46:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2F6BC2255F Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.75053.135038 (Exim 4.92) (envelope-from ) id 1l4Ofg-0002Un-QL; Tue, 26 Jan 2021 13:46:16 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 75053.135038; Tue, 26 Jan 2021 13:46:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1l4Ofg-0002Uf-MP; Tue, 26 Jan 2021 13:46:16 +0000 Received: by outflank-mailman (input) for mailman id 75053; Tue, 26 Jan 2021 13:46:16 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1l4Off-0002U9-WB for xen-devel@lists.xenproject.org; Tue, 26 Jan 2021 13:46:16 +0000 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 3728ddff-a5b7-48ac-b4cc-c9cd671554d5; Tue, 26 Jan 2021 13:46:14 +0000 (UTC) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 3728ddff-a5b7-48ac-b4cc-c9cd671554d5 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1611668774; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=DWdcVR3IEqSnim3KsQpgClr5n6aBknLfX/6inMwx9SE=; b=VAPQ99xR5OdB1g9s5AA2R78kCoUVYkBiFysMpbCtKcE6mLqBGMRKM8YX 7QWUOrOocbxNvykxBmpWa/1ItJmxEW2V1Lxi70d4pmIM+D3rVbv0ZbwqF 9132bEiCUa22X/cpSXGyydO2kbwVSOfajzWKoLuxMsG3E92njaugEJ9/R s=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 1I1o0MRHHmIo27T7CpFCM+kxvb78QkbOvVEv0KemKdjD9Wn7Gb1CIegeGvVNoHiyx62POk+w31 FvZP/TDjU57yAT26Ub6bYm17yadl8z4oS7sVYCAZAZA+gS/0PGaWzkj0Cl3s/d7km6KMiW/kf8 Sm9DikMw6oiWy1Mhn8uIhdbkJT7+xZVwFII+1SPJVUx1T06VL4SHuG2Qq0nR628fWWqPlYgYsu XvHErenOspk0fyYJ8hWqfyvYJCziX8NyPuDC8KjVw7qFmxeVlaF2uPhNUNQSyX9S9zFgZWOTnU uYI= X-SBRS: 5.2 X-MesageID: 36241608 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.79,375,1602561600"; d="scan'208";a="36241608" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Alt0/j4ju1hiCWivRDHqubxRIHiItxRG4vPt1wwwflZ5oOse6UnaosA3YGQfRvJaEOvi+3NmUMfjrA/uxvYzLTZl19TAreEqbeQ6RCrWgxd1VNBoJQWwWjDr/cVYldRi6JivmaPnI6HiyS9bsqCJq/5cOX5z7zm0xMP5ZR3ZcDVfQgnI2jA+qQ53r102qtf+9QK8h3gGngzdpYrbXWkzwEBHuVrt9V2tqZDAfovvDT1Eh0PwPTYI5uGtnW/gb6lUl2xW5SUTS5xhtAZnhMm85om9DrhSwsvYinsbIVOmc0PZbjCrwvRLL3Vk9j1V0Q3eEsQXPsq3mBiM4VNvnWREMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6Nf2vo0SRD3R2LaShoNNJNHs097bPQ8mcbsO7gxjiRM=; b=UALr/fRrhEec5S8nu7t08noFFXKDh7LN20g1hhlT7eXbhW0Fo7hg2gO4hFJd6hTNZRmYKvNOZbcMbYt/5nyJ+FwrSoJ5fF9L6SfhCPX/s4y4VQYRr9N8sTMHwvu/+2N4Nr3YMVHm1boDEGwd+ecsajgNkP+UP8V+jInvs4H5E45prVMOdM1WVs9spbYiDslceKUsAYnXh2+IK9aaqGpxgWJaX+/ZTgfI/yOtO/oOiLr08eeCB9KIC7bRQClNMnwT0czAouSRHjQUmUDw7n3BfiMMlhJBCM6gnYeY5ryRSIo3AuL0OQu5gv3njCpSuWpvQPYfunXHINCStSdl48TzEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6Nf2vo0SRD3R2LaShoNNJNHs097bPQ8mcbsO7gxjiRM=; b=uTEgOrJ1j/SKIhjkpFpdH806fwAUaxgyfB9vYBj//TlTqYF+Ys/ZYnGgowHswnVoXr0BPtKQgGTVgTvJJNmcv+dQoAA26mdORTfTNpZO5dK3SRlGfvlJ9b00mld9bMaOFbQywJoNAOij0wHARjFhNCJ7jFgIXOFCU4mdhPUHDtE= From: Roger Pau Monne To: CC: Roger Pau Monne , Jan Beulich , Andrew Cooper , Wei Liu Subject: [PATCH v3 2/6] x86/vioapic: issue EOI to dpci when switching pin to edge trigger mode Date: Tue, 26 Jan 2021 14:45:17 +0100 Message-ID: <20210126134521.25784-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210126134521.25784-1-roger.pau@citrix.com> References: <20210126134521.25784-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0030.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500::18) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2cd27306-c1dd-46b9-910e-08d8c200be46 X-MS-TrafficTypeDiagnostic: DM5PR03MB3209: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GfT3nLDghJ6O7C0AWUcZQECsPXTlSzSty0N1t1/NgYKFi0A0m6nRETK5XSANepLAu1xiTJDHlOqqxv65JSDmbagKUCz71jy7Bq8j0hUK3qc7ZtZCmZ5gIEysgEUyS7EyJ4tLS/gDSXa+9qthUkJYr9Xa8vtbVQtOAzbgO9dtdyYxnJOBPnXHvxfnSL9o91n4iHrMwjhjzHDuHpIKBn/TRWJ6OzanIqpmE6GgNpD9m7pupI/PssguVrPW3jrDFqu+gYdJotvd/JfiflVdGNIoQMaynKyiqKhq8R6lfTSJ8ESA/VJlIhb/UGyDlE0Ec2lFOTtWZ7vChp+Ufjx0VFRyfSwG0QMdWW7shkgd5h/RPWhqL1IWbloxe2CD1EIb5FM9N/h/5eZ0latiwpVUhss23esuSv0fUX60eM0zggSvTKquN9K80/wXtop5r1t2TENQvMMYNFjgKP9fGiyTPIjKWZFQ81LpHza5CLVuw9bu9Enl+OvDaKTHKsOrjpBYcuR9euNyMngrxwGQ7wTFPWOEvQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(346002)(39860400002)(396003)(136003)(376002)(6916009)(66946007)(8936002)(956004)(86362001)(36756003)(478600001)(2616005)(8676002)(83380400001)(4326008)(6486002)(186003)(6496006)(54906003)(16526019)(2906002)(1076003)(5660300002)(66476007)(316002)(26005)(66556008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?N6Ny8tKI0fFSAL3/Q9021kjDp1WYOv?= =?utf-8?q?KEukdKUYnEFxalN2mUIY1PwhsnlK+k6FggTF1NX3euE3BXtR49L+syIlj2uW3b0hH?= =?utf-8?q?k3aBKmR0mLNcEK5X/CCAzjhZGtjaLoCJKbFJf1k6P9ImYfDInLf6/b/JATZ4qPq78?= =?utf-8?q?hMvxXO2+JQ2KCTtp2ZTVEaz8dhuq2YiF/iRAsXM0FDrmC1UnM4Hxr+NtVsGog1iBe?= =?utf-8?q?VkOvZutK2uvieoQRuYuQ7Z+4FKB4/HbpJq7Z6S1B07daOjIxVYhIp01vLWdLK0Xpd?= =?utf-8?q?2T+YgrRnkoncBQ1IwMCol4kW3Xfs25Te4lR+tl8i50dCdLgCybaLda5Latb+MoD05?= =?utf-8?q?7gKPJCiiCl4cLfZmzfgRcxTUwy0LqvwLWq56bmIq1X2CJmOvYzCQrPn4lYQpMKOrl?= =?utf-8?q?7Gy2ZfjYIBLmFkFVMp6RpNt+iWX2VZ7liYV1gqLWxT9gQFZDMpavC8fK+NKVqYLhn?= =?utf-8?q?0QdYe30dGBGYUJ6XWlZo29f+GSz5oyCCI9K8teyd4yeRgnj7TZGYTGU6rpqMUVtQE?= =?utf-8?q?JveQ9usRNy1qvn1ta6x3D6TLJSbSQcc8fM22teDAQzvVbqnBH1x2OZO4A6AfY6zgt?= =?utf-8?q?CrpcE6SGu/Z5KqHdaMTvYbnd0DxVdozMGqPrFhZIdYX25ZIJKQxwwHCwzlCCWZNHG?= =?utf-8?q?E8gkzAV88K/3HBuQ4Bat7b9TtxDfZDW058x/o/+R8gb9o42T3msLgMkXkcrSqrXfv?= =?utf-8?q?5P+Os6Mi0vPDSIVIkXl9szTFVjzwv7j33VRxDp+sqnRkwapP7ZLeOhQMcY3Yx1ViM?= =?utf-8?q?A08hQY25gX/OIrLnme+V1M+CvJuSRscf1RxmEmw1FPokIWGDMaMZQGe9KQHVtmSTw?= =?utf-8?q?cGPNE7OJu8GNMy+8HfTIOM7Nwp94YbG2NWrjIKAXWdd959z8Fy8zZZIykRXX29wl0?= =?utf-8?q?dAkHOnQfhttzdUk3B1PTUoP5p4BbIkuo91K+jUqe+FNcnhz5MHSR9fwplPWq++wJp?= =?utf-8?q?EWobmPbAPCtUyfe6GyZuvO7VNCrQeSjo6aZNETMGawxfiz8jgul0Div45vmLn3Rb5?= =?utf-8?q?SCCAIj8pf6yzSIRsrRhCicfHFoRQpj/dAT6X4icQ=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 2cd27306-c1dd-46b9-910e-08d8c200be46 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2021 13:46:12.3418 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WgYe4HVf0M0EbsIy56IVdhzvUWgZBkz6dg+ylGMDr4iMontBmLQCiMnQRvl0Cow1NIlxbRJ5QIde8w3YUXHroA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB3209 X-OriginatorOrg: citrix.com When an IO-APIC pin is switched from level to edge trigger mode the IRR bit is cleared, so it can be used as a way to EOI an interrupt at the IO-APIC level. Such EOI however does not get forwarded to the dpci code like it's done for the local APIC initiated EOI. This change adds the code in order to notify dpci of such EOI, so that dpci and the interrupt controller are in sync. Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich --- Changes since v2: - Fix comment message missing 'edge'. - Add asserts that previous triggering mode was level and it's not a top word write. --- xen/arch/x86/hvm/vioapic.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index e3ee747b7d..87370dd417 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -219,6 +219,7 @@ static void vioapic_write_redirent( struct domain *d = vioapic_domain(vioapic); struct hvm_irq *hvm_irq = hvm_domain_irq(d); union vioapic_redir_entry *pent, ent; + bool prev_level; int unmasked = 0; unsigned int gsi; @@ -234,6 +235,7 @@ static void vioapic_write_redirent( pent = &vioapic->redirtbl[idx]; ent = *pent; + prev_level = ent.fields.trig_mode == VIOAPIC_LEVEL_TRIG; if ( top_word ) { @@ -270,6 +272,21 @@ static void vioapic_write_redirent( spin_unlock(&d->arch.hvm.irq_lock); + if ( ent.fields.trig_mode == VIOAPIC_EDGE_TRIG && + ent.fields.remote_irr && is_iommu_enabled(d) ) + { + /* + * Since IRR has been cleared and further interrupts can be + * injected also attempt to deassert any virtual line of passed + * through devices using this pin. Switching a pin from level to + * edge trigger mode can be used as a way to EOI an interrupt at + * the IO-APIC level. + */ + ASSERT(prev_level); + ASSERT(!top_word); + hvm_dpci_eoi(d, gsi); + } + if ( is_hardware_domain(d) && unmasked ) { /*