Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp3890657pxy; Tue, 4 May 2021 12:14:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCSRexzpA0NdFQcA48TEGzhx3ob2MQAhmchQ+PVQzofgqV8h8Hcl2IW9SPQTjr5RDmxBet X-Received: by 2002:a62:2a14:0:b029:263:20c5:6d8c with SMTP id q20-20020a622a140000b029026320c56d8cmr25346106pfq.23.1620155682014; Tue, 04 May 2021 12:14:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620155682; cv=none; d=google.com; s=arc-20160816; b=pHqjANI8XOs+vGm4hV3WgdVqsIxvFB1ZyEz0TxAwT8eJlscNfJ2e5jUT5Kk5lL98U0 u8uE89DssJiH020a5ySTl9W7NjC38Toei9MhXUmwt2z6HKTO84/B+fVwqxX9DSybOD2G PF0UiyOQauuo9IXAtxQiHMlmroUJ7oQKqkMG4DGKrnFvxpdlEYFdO8aPZpnxeoQkclEo GUP5P/mMrs05B/eK5AZ5YCJaPanVzhCrMylxbaa85l2qpoANrfD5v/M2rqqC4Dc84A2I E6dTl0BPZyhl7yENCGCzixV2t3be3H5iO7VQEJB/YUEMysofGCTdQsz+yELBb+A1XNlX 3tEw== 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=NqAmkL7hQTOxrKDLN9Dugugp7Qu8fdKFNFBa9T4/6gQ=; b=Uq9FDhOvvyPgpm5py8F7awSOhaIgFVyZxHgbAt9KFmKXdf6Xi7tS72jaaYr+S67CAB 2ogeTmFxV730RRzS9wkiuTL6L0uV4FMLNQIr7OjUN4zHhoK9FJwBROldAJrhCCcpoB+H NqtUgzpUmt9VyWHOEROJRGrysNmw1sgzOfDENVntnr99nruffwEL//BgWMBAP9OMX63t ZdQ/LeUHU0p6vrboO4cyzX4YNKJ+s4uC3BCo9ddK1e6XcmlVOFuNHCpGuSnaib5BnCfU oSXfVCRj6XUFf//Bb/cggavjZfRSA8537OVTBzEDOtGLY9UmZI3aADg2hDGYtMYs7jWI BUGQ== 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 ne11si18435270pjb.133.2021.05.04.12.14.27; Tue, 04 May 2021 12:14:42 -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 S232443AbhEDTMq (ORCPT + 99 others); Tue, 4 May 2021 15:12:46 -0400 Received: from mga03.intel.com ([134.134.136.65]:9835 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232208AbhEDTMh (ORCPT ); Tue, 4 May 2021 15:12:37 -0400 IronPort-SDR: +cxvddP6+QdssEN3Aa3nrEiVng0iUMhdniolVo8rjOMYRMzFjo4NfysdChBp2onHNCr3AJxQNr eIgkKZDNwEzA== X-IronPort-AV: E=McAfee;i="6200,9189,9974"; a="198115957" X-IronPort-AV: E=Sophos;i="5.82,272,1613462400"; d="scan'208";a="198115957" 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: zQFJBhcgEZHf9/cLASl+w3pxDwLapeYUVWAYAzxAEdsolXppVm2zQle2n+OvvjriN/I1K1zzry WtNkOTjab2+A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,272,1613462400"; d="scan'208";a="396245297" 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 , Andi Kleen , David Woodhouse Subject: [RFC PATCH v5 5/7] iommu/vt-d: Fixup delivery mode of the HPET hardlockup interrupt Date: Tue, 4 May 2021 12:10:47 -0700 Message-Id: <20210504191049.22661-6-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: 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 Reviewed-by: Ashok Raj 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/intel/irq_remapping.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/iommu/intel/irq_remapping.c b/drivers/iommu/intel/irq_remapping.c index daa5df53db59..b07c68ecac01 100644 --- a/drivers/iommu/intel/irq_remapping.c +++ b/drivers/iommu/intel/irq_remapping.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -1376,6 +1377,14 @@ static int intel_irq_remapping_alloc(struct irq_domain *domain, irq_data->hwirq = (index << 16) + i; irq_data->chip_data = ird; irq_data->chip = &intel_ir_chip; + + /* + * If we find the HPET hardlockup detector irq, fixup the + * delivery mode. + */ + if (is_hpet_irq_hardlockup_detector(info)) + irq_cfg->delivery_mode = APIC_DELIVERY_MODE_NMI; + intel_irq_remapping_prepare_irte(ird, irq_cfg, info, index, i); irq_set_status_flags(virq + i, IRQ_MOVE_PCNTXT); } -- 2.17.1