Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2457666pxb; Tue, 23 Feb 2021 07:32:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJzX+yRfGdxmHa4ifs0ag1vALONz50cXbAVEsH+Gj2ERH2y3adDjrml7aD5Uwd2NHUOTfaEO X-Received: by 2002:a17:906:3acc:: with SMTP id z12mr27669354ejd.494.1614094327870; Tue, 23 Feb 2021 07:32:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614094327; cv=none; d=google.com; s=arc-20160816; b=lC/R2EjJkJ5lRb5GhX0CuYZdvX5zDu/tiVgFKJCXnkpjvhn/NgKjGvsWnTZA72iQTL cItXnefHqLgA9/jJuLHFFPI9EVs2X18DpQfeE5YZCEmTavGk493/XVIFHcEzMAunNQSf YE/k13h3aXat3/DGy72TpkZpTnUTE0A3qmEdJv4M62+ldt36kUzvL2hCWIvf9gLZJzML a0/LUYFcVWn4mUVm72BZ5fUxQe9uMtxFFTGgbqCDC23FqmRFa13ZFvkJXR5y5GhQbp51 LFkzxOgUXQnHfcu3JezftjLET1vUBgQUBX2B8bq+z8WsCfOnYt/Ej7n2Sp1xcdEWuAbb exEg== 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; bh=/YG3wui/BK3yT4BsmTtZEY2FrTui3BdCE8c/pRLdRR0=; b=GUq1x8dbEJsQSyAVl3z9a8H4CZhmhQcn5gHjkp+E4/Nvby21DxUYecwPXx8Gvl+/jl nx2d9S3HPk9mnoNfFN0+bSJC/ZlU0QxwmVX44QmbSHwO+GCVbHtjWsrPbWUpUvO/lThQ 2kYkp5pOmmIaC/a4T9AxbNfmd2vmnOVOixD7+6kBMwME5yB8jzsUJaCV55C2Ssp4GFiB xO/0xUV3w2iUjJ/wC2Z2bRO3DRESxJW24P6RTS+f16yoXBsZSAw7+GR3TYVpUEr4UHqA Cyq+wavA86ZkYb4+uC11vu3/ki1TDKyQe7p61kTjw4t4PTtfT5c6GNLXFanrjQ8TlZim KnNQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s9si14054881edu.474.2021.02.23.07.31.41; Tue, 23 Feb 2021 07:32:07 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233254AbhBWP2G (ORCPT + 99 others); Tue, 23 Feb 2021 10:28:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233239AbhBWP16 (ORCPT ); Tue, 23 Feb 2021 10:27:58 -0500 Received: from sipsolutions.net (s3.sipsolutions.net [IPv6:2a01:4f8:191:4433::2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9C31C06178A for ; Tue, 23 Feb 2021 07:27:14 -0800 (PST) Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.94) (envelope-from ) id 1lEZai-007R3T-Uo; Tue, 23 Feb 2021 16:27:13 +0100 From: Johannes Berg To: linux-um@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Arnd Bergmann , Johannes Berg Subject: [PATCH 5/7] um: irqs: allow invoking time-travel handler multiple times Date: Tue, 23 Feb 2021 16:27:05 +0100 Message-Id: <20210223161449.b769860c16f6.I0344b4c8a7e79d8ac1645acad97371f202837777@changeid> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210223152707.408995-1-johannes@sipsolutions.net> References: <20210223152707.408995-1-johannes@sipsolutions.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Johannes Berg If we happen to get multiple messages while IRQS are already suspended, we still need to handle them, since otherwise the simulation blocks. Remove the "prevent nesting" part, time_travel_add_irq_event() will deal with being called multiple times just fine. Signed-off-by: Johannes Berg --- arch/um/kernel/irq.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c index 76448b85292f..3718a5cdbc85 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c @@ -101,10 +101,12 @@ static bool irq_do_timetravel_handler(struct irq_entry *entry, if (!reg->timetravel_handler) return false; - /* prevent nesting - we'll get it again later when we SIGIO ourselves */ - if (reg->pending_on_resume) - return true; - + /* + * Handle all messages - we might get multiple even while + * interrupts are already suspended, due to suspend order + * etc. Note that time_travel_add_irq_event() will not add + * an event twice, if it's pending already "first wins". + */ reg->timetravel_handler(reg->irq, entry->fd, reg->id, ®->event); if (!reg->event.pending) -- 2.26.2