Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3705325pxv; Mon, 28 Jun 2021 10:44:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzD3ZteNJgTwEPo1CrJ0z7Kr6Iva/aOSFUbJ6xJBCQUkIx/73yZWa1epo5jyQXCG6ED/4ph X-Received: by 2002:a92:2a05:: with SMTP id r5mr17968726ile.69.1624902249597; Mon, 28 Jun 2021 10:44:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624902249; cv=none; d=google.com; s=arc-20160816; b=bCOgJeXrgKEvqclYEa0v9Zsb7tyimd3vyNHi9V21p7ONmOGzs+APb32jsvKqNyyrpa zaZD/eyByb4k/UVmTwcwCvop+3cWH+phnAzA1gmATuZMRWdI4Sx0wRnUafDcRwlCZtk4 tm8rqwAfXICXW5rEK5p6PQvPDVfpEaegF1wSyOQeEreDJ/fIGCHQkTTdrWJWWKddo1JG YcrXpJGpuNMxOkpByJxTVoMjgHH7AUaVJabFSX+MCrcQ1E0s2V6m2LfDx90Cvh2p6Z8C xKgSET7UaxMnNkyVNyqKTMQTdEoo2MV45qOSalmIJw6NdDyBcmkAweUKlp6lLMF5ixOy 8edg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=yU+IwsS0nyBnte96EUGLNRl18uXsLzvmU3vpTQqIECQ=; b=Qj+lnSK7FzUDGh/aywNJDhTeyRg1NbVeOvrW/3viKcXPEDh/OpRBBMpNUg7Wnle+VK yOX2bDAF2sL5v/UtofeZoOb1ULqohJUSl3Wh48uiiNTSy5Z1ADTHVlwk4Ij3c3tA7F2o Q0eQ47JivXAyjbBdJbRwj0Xu2MY5tvuORLV8MC/F+WzSmgcOYhatiq5FGtLrvyTnq8EN eX/P1tWcoqBIxEAaSF6QRNwOrOqhG8bK9i//Gwuzcs2x/PNQ3+Qs6+ciPcCYzZ4Y5yDi qTaLJJClt4gJNwX/aP3IvxxoFXRO4It3/ACWjf35WAcT1uH6xcMaTjQVCsHNlCcxmTl9 C8aQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=QBJ602QB; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u15si233106ill.15.2021.06.28.10.43.56; Mon, 28 Jun 2021 10:44: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=@kernel.org header.s=k20201202 header.b=QBJ602QB; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234004AbhF1O1P (ORCPT + 99 others); Mon, 28 Jun 2021 10:27:15 -0400 Received: from mail.kernel.org ([198.145.29.99]:55458 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233385AbhF1OWP (ORCPT ); Mon, 28 Jun 2021 10:22:15 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BE05361C7E; Mon, 28 Jun 2021 14:19:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1624889974; bh=CSKpV0oXRx2md4FrADuQt7C5u018lk9k7KOhngBuVMw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QBJ602QBcBzdVC8gMtQ8sXyjasjmZqHeerczGfWx1dVTBKNGTekTC0WYoL2BeDVNR xKDh1lvY/SUsv+Litnm51nHvUZwaB/yaYrsRKBXTEl4JyDd0wm0x4Q6jE9TEcSZy0G t/SIasf6lb4ohsDvu9PJOTRpjE46DSxx3oft1sKmgnZv2nQfjL8pnfH80LvUvN+stL TqrLuuJdTMxf5orOOERjN7BwIW7EqwjrEoxK+pUUDkHHakZVr1IrWya6AYST9kUuqF 8VH0rT5Jvg+qCCipegneK7i17cpuA+/zSzwcJJychT9V5IwVrW610qf+bRCSsm9tbY foqFJvqZQbWGA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Juergen Gross , Julien Grall , Boris Ostrovsky , Greg Kroah-Hartman Subject: [PATCH 5.12 076/110] xen/events: reset active flag for lateeoi events later Date: Mon, 28 Jun 2021 10:17:54 -0400 Message-Id: <20210628141828.31757-77-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210628141828.31757-1-sashal@kernel.org> References: <20210628141828.31757-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.12.14-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-5.12.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 5.12.14-rc1 X-KernelTest-Deadline: 2021-06-30T14:18+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Juergen Gross commit 3de218ff39b9e3f0d453fe3154f12a174de44b25 upstream. In order to avoid a race condition for user events when changing cpu affinity reset the active flag only when EOI-ing the event. This is working fine as all user events are lateeoi events. Note that lateeoi_ack_mask_dynirq() is not modified as there is no explicit call to xen_irq_lateeoi() expected later. Cc: stable@vger.kernel.org Reported-by: Julien Grall Fixes: b6622798bc50b62 ("xen/events: avoid handling the same event on two cpus at the same time") Tested-by: Julien Grall Signed-off-by: Juergen Gross Reviewed-by: Boris Ostrovsky Link: https://lore.kernel.org/r/20210623130913.9405-1-jgross@suse.com Signed-off-by: Juergen Gross Signed-off-by: Greg Kroah-Hartman --- drivers/xen/events/events_base.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c index 7bbfd58958bc..d7e361fb0548 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c @@ -642,6 +642,9 @@ static void xen_irq_lateeoi_locked(struct irq_info *info, bool spurious) } info->eoi_time = 0; + + /* is_active hasn't been reset yet, do it now. */ + smp_store_release(&info->is_active, 0); do_unmask(info, EVT_MASK_REASON_EOI_PENDING); } @@ -811,6 +814,7 @@ static void xen_evtchn_close(evtchn_port_t port) BUG(); } +/* Not called for lateeoi events. */ static void event_handler_exit(struct irq_info *info) { smp_store_release(&info->is_active, 0); @@ -1883,7 +1887,12 @@ static void lateeoi_ack_dynirq(struct irq_data *data) if (VALID_EVTCHN(evtchn)) { do_mask(info, EVT_MASK_REASON_EOI_PENDING); - event_handler_exit(info); + /* + * Don't call event_handler_exit(). + * Need to keep is_active non-zero in order to ignore re-raised + * events after cpu affinity changes while a lateeoi is pending. + */ + clear_evtchn(evtchn); } } -- 2.30.2