Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp844623pxb; Thu, 15 Apr 2021 07:57:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz0fJO4EvQEsz24k1+Kmw6dDGfXtmxgkv+F8Nk7w5fJqkA0XTxT4IJBIHYRvXoy3LRtf95U X-Received: by 2002:a17:902:527:b029:ea:b5ef:689d with SMTP id 36-20020a1709020527b02900eab5ef689dmr4313938plf.19.1618498629148; Thu, 15 Apr 2021 07:57:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618498629; cv=none; d=google.com; s=arc-20160816; b=eEtUVuoHL+gj1E6j4LG7tmXQUKSyIxL+VwID7xcms2Aw13HWe0T7Slmhe6n8/owABh 2Ba+0GvBkiyxkVdh0pJ55ter1eFXMpO1WK0Rq+9UWRcoeexhs85AIvwILOyJWvDDVIsw 36qAkLZh/74XRkcbGMAsRsWH3CUuh0dEjbRXJ73+FSPjKkNka8/LydDJQY6PWByQJV8G eStknJOtsS/K7e42V4RyLJfFr9zOtk2ZQhiPx5r0FzmPC+vFGCOFwCU1nfdzjghMuST8 lMlcfgvhVIt5U67rSzNSTVSUM4kJslzA8+OxuMECWwYwnG0L67soo/2gJxow62iqZOqY eAng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=6PLP0FIv+ra3/oAvePsZFFDM6XIFluVaiD4JgyOO9GE=; b=byVZMk0jcQDpnjpsCmWAb4fK4A2VW6gRxHCxXP/dC9sVb21zqXGzSNqr9IuglYC60/ 2xjtUjNs5SDJywXs9JTELGeQ/QUTn9OvTkKgbWzC+eEgsEnrvxlbyEnGCWEiep19rIjn qF7QCb49RSks1Ud+Qa4MIgsukd86AyLSzfX+/Mw4tHzUNeJ02eag+022VHLr077qzaNK iyabCoxjwE5YSfH6GUs0jsI7Sate/LoKSksdKyWrnSNVjgjLlj6Vi0e+xa9/FO16aRrV VciJlXCTweNB+pZfVzpKRr56yQlXdFU/achsqaInzCGJVHV1MJFxjW8t6ROSl76avSjf qm8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=CtId4pME; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e20si3167144pgt.388.2021.04.15.07.56.55; Thu, 15 Apr 2021 07:57:09 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=CtId4pME; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233052AbhDOO4P (ORCPT + 99 others); Thu, 15 Apr 2021 10:56:15 -0400 Received: from mail.kernel.org ([198.145.29.99]:39830 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233924AbhDOOv6 (ORCPT ); Thu, 15 Apr 2021 10:51:58 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 0BA13613B0; Thu, 15 Apr 2021 14:51:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1618498295; bh=K1H/WDsuHcpkW1bvmk3llw5IfZ/OlVUWjq84KZVpwiQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CtId4pMEUUaxtJeRreKVtAQ7qFCfjmQq7ROjfcNgg7p7zkGCsnRYRyog5vyn1sQer PVNPT88UYYgYd6DeSpivoF+vn1rIdCdZ3/p/ONxYYCqXdr1D96eQfjTCXIzMwZRspA cCWPVkHYvBmLOkIbrRBqE7uVq4QIzbeR4MjO24ck= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Luca Fancellu , Julien Grall , Wei Liu , Boris Ostrovsky Subject: [PATCH 4.9 09/47] xen/evtchn: Change irq_info lock to raw_spinlock_t Date: Thu, 15 Apr 2021 16:47:01 +0200 Message-Id: <20210415144413.777394121@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210415144413.487943796@linuxfoundation.org> References: <20210415144413.487943796@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Luca Fancellu commit d120198bd5ff1d41808b6914e1eb89aff937415c upstream. Unmask operation must be called with interrupt disabled, on preempt_rt spin_lock_irqsave/spin_unlock_irqrestore don't disable/enable interrupts, so use raw_* implementation and change lock variable in struct irq_info from spinlock_t to raw_spinlock_t Cc: stable@vger.kernel.org Fixes: 25da4618af24 ("xen/events: don't unmask an event channel when an eoi is pending") Signed-off-by: Luca Fancellu Reviewed-by: Julien Grall Reviewed-by: Wei Liu Link: https://lore.kernel.org/r/20210406105105.10141-1-luca.fancellu@arm.com Signed-off-by: Boris Ostrovsky Signed-off-by: Greg Kroah-Hartman --- drivers/xen/events/events_base.c | 10 +++++----- drivers/xen/events/events_internal.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c @@ -222,7 +222,7 @@ static int xen_irq_info_common_setup(str info->evtchn = evtchn; info->cpu = cpu; info->mask_reason = EVT_MASK_REASON_EXPLICIT; - spin_lock_init(&info->lock); + raw_spin_lock_init(&info->lock); ret = set_evtchn_to_irq(evtchn, irq); if (ret < 0) @@ -374,28 +374,28 @@ static void do_mask(struct irq_info *inf { unsigned long flags; - spin_lock_irqsave(&info->lock, flags); + raw_spin_lock_irqsave(&info->lock, flags); if (!info->mask_reason) mask_evtchn(info->evtchn); info->mask_reason |= reason; - spin_unlock_irqrestore(&info->lock, flags); + raw_spin_unlock_irqrestore(&info->lock, flags); } static void do_unmask(struct irq_info *info, u8 reason) { unsigned long flags; - spin_lock_irqsave(&info->lock, flags); + raw_spin_lock_irqsave(&info->lock, flags); info->mask_reason &= ~reason; if (!info->mask_reason) unmask_evtchn(info->evtchn); - spin_unlock_irqrestore(&info->lock, flags); + raw_spin_unlock_irqrestore(&info->lock, flags); } #ifdef CONFIG_X86 --- a/drivers/xen/events/events_internal.h +++ b/drivers/xen/events/events_internal.h @@ -47,7 +47,7 @@ struct irq_info { unsigned short eoi_cpu; /* EOI must happen on this cpu */ unsigned int irq_epoch; /* If eoi_cpu valid: irq_epoch of event */ u64 eoi_time; /* Time in jiffies when to EOI. */ - spinlock_t lock; + raw_spinlock_t lock; union { unsigned short virq;