Received: by 2002:a05:7412:da14:b0:e2:908c:2ebd with SMTP id fe20csp1828032rdb; Mon, 9 Oct 2023 04:30:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF01OGB5XnC5yNzffHUJGWuPbBtz5hd6HiEARbSpdaiOskTTmcScTgdEbfhKW2axlaleC/U X-Received: by 2002:a17:90b:1a8c:b0:277:37fc:6e85 with SMTP id ng12-20020a17090b1a8c00b0027737fc6e85mr13455579pjb.0.1696851052570; Mon, 09 Oct 2023 04:30:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696851052; cv=none; d=google.com; s=arc-20160816; b=oRtDoPz0qonlUSSW4cmXdxXhyMxu7uu+DKUaibJYeyIFjAvK9qetfY5U8Hqx857pGo Sbnrw2DM47q+Uz/DMTaK+HzZ5BgibCeH2k2gLEG9kvzte1XkHcL/qhZAJmusgApwntcq HAz2egdnUVex7dk5wvvpPvC+9zNzMAOBNPqbaG5+i9WZEqQ7u72x4omoe3lIqKbTbEcM hVEHPbVazxBn2ehkqad5pXv2qqUeyKgzSROSteqUzX6nLXwM6m084QHY1ZJzxXd2uFWK zlqdfTM2tNB2tUNVPluepZCjtGEq8Al05hFdDmRBSgBf1nkYFiU2ZqGFpbLBmGBjKOGV uuFQ== 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=VA2GT8eqbiQpihVq6IatV7jxO70qnqwP/ImeaPQmFQY=; fh=PR8xKn4qyOQDBzHpB8BiMyRNRnjDt7VcMPTShpxRkbI=; b=dELdhuWxFLsW3LFD9zYsjoPS+iXYUQM8JhVD8qX2ZPEIJvVOK70OFv6SQsYCDFiYAY OobsjNiAehkDwTtdzY/pGnDH+fBoNQNf8y+sg3mcJWOaHjRspmoQ+RLDis8o1vuff6/q itaFU+D2akJjdA1eUuP6wJQwM07bIQK1ANhTFN94BlK0Mt6a2OHl162dSLzIjbGhIfIX /7dfRTllg3eZggKi483j8WLU6RFKiC/WWOWwHCOv5MKu/ecMac1L50vf/EmJs5g5wnYt SNqdyUi0fPPlEzsvqAYbuJsFx5B7O8jR0W5iEhgipe7CyHOpufU2f6yjZ/5Z/V4UpGzU u28Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NkFyvWa7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id m9-20020a17090a858900b0026b043c8bbesi9335860pjn.136.2023.10.09.04.30.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Oct 2023 04:30:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NkFyvWa7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id B597E808A8F7; Mon, 9 Oct 2023 04:30:23 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234522AbjJILaK (ORCPT + 99 others); Mon, 9 Oct 2023 07:30:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234530AbjJILaI (ORCPT ); Mon, 9 Oct 2023 07:30:08 -0400 Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E1BEEB4 for ; Mon, 9 Oct 2023 04:29:41 -0700 (PDT) Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-6934202b8bdso3606914b3a.1 for ; Mon, 09 Oct 2023 04:29:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1696850980; x=1697455780; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VA2GT8eqbiQpihVq6IatV7jxO70qnqwP/ImeaPQmFQY=; b=NkFyvWa7KgTZa/BEpeY42VOE6I8nTExNfU0a6kLUNHo63m1YsRGStUNwFtOmyDttbG OLQFPQlZAnjBv4mrps3iMFjTppd7VDVSPJSY6uLGmmkpgkd0dmsmD9UbKglXj2QpUCgU HyOdfcS8Z+pUFu62UsOAk+cIpE7zdkSUpwJy+AA/OfJZSQLpE0mQIedkXjN++iEV34nY o5xMxCBl05ls5DynBQXiSXK28ULjEthFBz4gSbhhxwXN2OpET0inMzFTsgTvZRqs29jM cSt+MVUmJSj7v5DtzUzYdATgxZ+Ctz92or106igs2z/OmO0iH9i9ZhqLhiGPqiTvb/nU geKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696850980; x=1697455780; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VA2GT8eqbiQpihVq6IatV7jxO70qnqwP/ImeaPQmFQY=; b=g10Xt5gbjxfE0atYL5xIq2tTSjSgeMV7bGiPM0bbWgXSsL5pwltLGhYiXmtu6D6mob nvynvg8JH7qkQSi4jwHVeF0OkCynxZnlXu7Dfhq17QOESzqS+QX9vY86UXYAdZHukqDe WZzZmomWL0mPjYU0NDwSRFY0N0M7wwe56LJHWc+30V9fkUER6Y1RzJI5lYFO231TIaQP Q7dFcsd8Xluzsnc+lee64PtA+VKrJHvYQ+Edn51vgL5Y0XTiPDB55QVyuuiPeKN9AZjc 8ZLez4gHg78lPFlmQ3iJK3SIydniDc4/nT7kPQ6oQ3wXq5psyXm9kF+OEZ+RrdyjN3RI O4fA== X-Gm-Message-State: AOJu0YzCBQiixdpunMZW1F0KE7PNXHvKsChfhGBWJBPv41YYE7tzR9zp UVT9O/P0jZT58rfTDs6CbK95KQ== X-Received: by 2002:a05:6a00:22c9:b0:690:2ecd:a593 with SMTP id f9-20020a056a0022c900b006902ecda593mr19268889pfj.26.1696850980690; Mon, 09 Oct 2023 04:29:40 -0700 (PDT) Received: from localhost ([122.172.81.92]) by smtp.gmail.com with ESMTPSA id a21-20020a62bd15000000b00693498a846esm6129376pff.80.2023.10.09.04.29.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Oct 2023 04:29:40 -0700 (PDT) From: Viresh Kumar To: Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko Cc: Viresh Kumar , Vincent Guittot , =?UTF-8?q?Alex=20Benn=C3=A9e?= , stratos-dev@op-lists.linaro.org, Erik Schilling , Manos Pitsidianakis , Mathieu Poirier , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org Subject: [PATCH V3 1/2] xen: evtchn: Allow shared registration of IRQ handers Date: Mon, 9 Oct 2023 16:59:24 +0530 Message-Id: <8380c7b1c8cd9edb2e45e9a204650b34df3458a7.1696850733.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 2.31.1.272.g89b43f80a514 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=2.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Mon, 09 Oct 2023 04:30:24 -0700 (PDT) X-Spam-Level: ** Currently the handling of events is supported either in the kernel or userspace, but not both. In order to support fast delivery of interrupts from the guest to the backend, we need to handle the Queue notify part of Virtio protocol in kernel and the rest in userspace. Update the interrupt handler registration flag to IRQF_SHARED for event channels, which would allow multiple entities to bind their interrupt handler for the same event channel port. Also increment the reference count of irq_info when multiple entities try to bind event channel to irqchip, so the unbinding happens only after all the users are gone. Signed-off-by: Viresh Kumar --- drivers/xen/events/events_base.c | 3 ++- drivers/xen/evtchn.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c index c7715f8bd452..d72fb26cc051 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c @@ -1238,7 +1238,8 @@ static int bind_evtchn_to_irq_chip(evtchn_port_t evtchn, struct irq_chip *chip, bind_evtchn_to_cpu(evtchn, 0, false); } else { struct irq_info *info = info_for_irq(irq); - WARN_ON(info == NULL || info->type != IRQT_EVTCHN); + if (!WARN_ON(!info || info->type != IRQT_EVTCHN)) + info->refcnt++; } out: diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c index c99415a70051..43f77915feb5 100644 --- a/drivers/xen/evtchn.c +++ b/drivers/xen/evtchn.c @@ -397,7 +397,7 @@ static int evtchn_bind_to_user(struct per_user_data *u, evtchn_port_t port) if (rc < 0) goto err; - rc = bind_evtchn_to_irqhandler_lateeoi(port, evtchn_interrupt, 0, + rc = bind_evtchn_to_irqhandler_lateeoi(port, evtchn_interrupt, IRQF_SHARED, u->name, evtchn); if (rc < 0) goto err; -- 2.31.1.272.g89b43f80a514