Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp3890654pxy; Tue, 4 May 2021 12:14:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwc1xJ0nhVsc8QYB/JRICMSoRvVSvHaKQpdXN9Ahiig9R/Yl9aaLQ/y/5fSmHreS3tFli+y X-Received: by 2002:a17:90a:d78c:: with SMTP id z12mr6799005pju.106.1620155681657; Tue, 04 May 2021 12:14:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620155681; cv=none; d=google.com; s=arc-20160816; b=WtidaT7ARWcuigiateN+WZKZ3nmBOnHY8Nm8KaeBbqYChW8iNWo3cUAYKoJem2uBKA khokp5QQQrAcfwPHb8cpYTG2/IK+lhkW4EoJWlWit1Rc/aHR5JWgJ3KScajCTyBM1drm bub2tGjQOekszUHSUcL+fpE5iu24s0gLzQLtBvo5scC9Yj110VZGXveC2Q8eB+D+kIVn IN+AXkC74Z22Rs4dR2v8q5BtVpY731J/hg/t88J28QGP3CFnyStomY7799QwEFXtTzE9 q/TxcPNs53zUANiQK2nggF5n27UcOjGeAisCEbsjq9Fu5kIE6Palo+HoI7vrDbgRB9bd sozA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:ironport-sdr:ironport-sdr; bh=7G8TAdPMbuUgdlLxBCP7HNYYmGyF6s2Z4o8EY/Av2TM=; b=Wjy7dpKQ2oKkXTJJuiPeF15IQHKVX9XBRtwzP8bdfpAzJYBxZmPnOnZxNU+LXDCost J+1TWGLOxg8tTg9dfNpEvfreBMec65jQVZPyfxqO6wWi6NYKEaEJcjzvlZBQkD4LNnoj uluecCCyVf4vbedoIyMqfG6ZgIX/8KA04gd3BdekWuXutV4vjVeE30HQMeVV4/8gt5Vu /w9r4/Un4yEYI2sRCwJ/CcYeXBjDOzPOgPcTc4G1imI2qBqilgUHC8iVm2aZzmGaSMOa FFc9rVh8Cj/6WKKF5q0Dc5+0mYgj7ahXoAc17Ur51gbtLCg5CtHTyYTh49a4rnihMXJ4 GDYQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i198si4632551pgd.575.2021.05.04.12.14.27; Tue, 04 May 2021 12:14:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232426AbhEDTMs (ORCPT + 99 others); Tue, 4 May 2021 15:12:48 -0400 Received: from mga03.intel.com ([134.134.136.65]:9838 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232217AbhEDTMh (ORCPT ); Tue, 4 May 2021 15:12:37 -0400 IronPort-SDR: 6KPnCrwo8KfO/7LhEzSHuShKSdBlQeOTOf9Wl41Fa1kHZxjaWOwMHrGHBecoaSRJvL740/bk7X QLjbAj2mD8kw== X-IronPort-AV: E=McAfee;i="6200,9189,9974"; a="198115959" X-IronPort-AV: E=Sophos;i="5.82,272,1613462400"; d="scan'208";a="198115959" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 May 2021 12:11:41 -0700 IronPort-SDR: ON/7mKFclHv7AHjEufCeahAaGdMo1RgkaVFRXsmFLysjx6qxLHMKcPdSQPWJT7/7nN4caafIsw 3/HW+NzHYWKQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,272,1613462400"; d="scan'208";a="396245302" Received: from ranerica-svr.sc.intel.com ([172.25.110.23]) by fmsmga007.fm.intel.com with ESMTP; 04 May 2021 12:11:41 -0700 From: Ricardo Neri To: Joerg Roedel , Will Deacon Cc: woodhouse@vger.kernel.org, Jacob Pan , Lu Baolu , Stephane Eranian , Thomas Gleixner , Ingo Molnar , Borislav Petkov , iommu@lists.linux-foundation.org, x86@kernel.org, linux-kernel@vger.kernel.org, "Ravi V. Shankar" , Ricardo Neri , Ricardo Neri , Ashok Raj , Andi Kleen , David Woodhouse Subject: [RFC PATCH v5 6/7] iommu/amd: Fixup delivery mode of the HPET hardlockup interrupt Date: Tue, 4 May 2021 12:10:48 -0700 Message-Id: <20210504191049.22661-7-ricardo.neri-calderon@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210504191049.22661-1-ricardo.neri-calderon@linux.intel.com> References: <20210504191049.22661-1-ricardo.neri-calderon@linux.intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The HPET hardlockup detector requires that the HPET timer delivers the interrupt as NMI. When interrupt remapping is disabled, this can be done by programming the HPET MSI registers directly. With interrupt remapping, it is necessary to populate an entry in the interrupt remapping table. In x86 there is not an IRQF_NMI flag that can be used to indicate the delivery mode when requesting an interrupt (via request_irq()). Thus, there is no way for the interrupt remapping driver to know and set the delivery mode. Hence, when allocating an interrupt, check if such interrupt belongs to the HPET hardlockup detector and fixup the delivery mode accordingly. Cc: Ashok Raj Cc: Andi Kleen Cc: Borislav Petkov Cc: David Woodhouse (supporter:INTEL IOMMU (VT-d)) Cc: "Ravi V. Shankar" Cc: Ingo Molnar Cc: Jacob Pan Cc: Lu Baolu (supporter:INTEL IOMMU (VT-d)) Cc: Stephane Eranian Cc: Thomas Gleixner Cc: iommu@lists.linux-foundation.org (open list:INTEL IOMMU (VT-d)) Cc: x86@kernel.org Signed-off-by: Ricardo Neri --- Changes since v4: * Introduced this patch. Changes since v3: * N/A Changes since v2: * N/A Changes since v1: * N/A --- drivers/iommu/amd/iommu.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index e8d9fae0c766..758e08ba42e6 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -3254,6 +3255,14 @@ static int irq_remapping_alloc(struct irq_domain *domain, unsigned int virq, irq_data->hwirq = (devid << 16) + i; irq_data->chip_data = data; irq_data->chip = &amd_ir_chip; + + /* + * If we find the HPET hardlockup detector irq, fixup the + * delivery mode. + */ + if (is_hpet_irq_hardlockup_detector(info)) + cfg->delivery_mode = APIC_DELIVERY_MODE_NMI; + irq_remapping_prepare_irte(data, cfg, info, devid, index, i); irq_set_status_flags(virq + i, IRQ_MOVE_PCNTXT); } -- 2.17.1