From nobody Wed Apr 26 19:09:50 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Q67jB5fLtz478s6; Wed, 26 Apr 2023 19:09:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Q67jB4ylwz47QX; Wed, 26 Apr 2023 19:09:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1682536190; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W68ubPhq4TCDNVdyfyuJSDg6PtTR1hWOggscFkL3uj0=; b=STItygSF8kim5sEPUh7ujtGs0PIUIIJtC6zm9GoZnW6Xj+I9KK+IuVDuu0i28dBsMjmCCb O81Fon2+f43ZW513MauGx+qfbFMIlPUg/uzreQi0KjWhIwJNY0HNaSC9OK/wVRs5dpF0wx TsSHn+XEOgTVuY6c0MuGU4yWE7/b/yJn4gt+JVaCcuq/sxHif/PIpvNlwQsqClb+jXyKyk SQwOpeK0h8m5vdCWatxl58lt/DI9GSbgpr0M6lqH1HPMzkzo7tkfkPZYypWi3fVlqCYdNy O79AgeLGhRME3MjT6TQo4lIwbG3B8r9JbeelNN47kr4NmLE2wfec1/4bYZU+Dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1682536190; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W68ubPhq4TCDNVdyfyuJSDg6PtTR1hWOggscFkL3uj0=; b=qlaUYjyENtwG7lvlnCFIeNiuLNKWtKfMouSATlovF7TdPiMUFLydLIe3V3uyIk5uNXztdL vOmxBMvzfN4kIsoD6LKafFXlcw+vBiqgryvYp4pbqgfABC96Al54buELk9xbj+xpB7Bbcb G3WLCiVfaEpCrPut57Y0WKnnzmKXh8u7/QqK7DQCtJ4TAx9jf/ve8Q6F0k3DfNs564Vy2I AhLdJhCSxRqFB8bQvgkciOuqjZVEWOLg6q1VSBEkf5ZSAt5IEdTp1rgHYf2FxWET0htkfW Bq5nX0lnqUnOc3r2qYs4CtCxshvRUH9Aijr1hQ27lAoVJhJc5S91BrwLifBM5w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1682536190; a=rsa-sha256; cv=none; b=jpo4zjmlu93/xNPw2bn8MrrlLDFX9I4FqOcyxStH1W4Alb+hhR4mFSYNnNfa+UUCtELx2H tJXsUOU1pc4eG/a4x60i+bG907PFEOxggdMoH426+EkxAOdwIBiUhRH9DbBQ/rR8kJKcF3 tT0PWdLix2zZlHWY7lXjM+wtIvM/KwacfrvfChoNmwXoMn93Ugc6VcN0wUAZry1Xx2C3W+ YbPw3gqh2HF3NeKQCME7htJ9PBcyL1W6286Fe5dd9Cq/zOEBxs/rtL0DSj8V+mtmgtLdvv /LW5lJxIZtj8NkRv3YhEeRHD4zDFz0+Zwe1JwMEVfRy7/BxMgc3YQnlgMMQV/w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Q67jB3xstzmDq; Wed, 26 Apr 2023 19:09:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 33QJ9oDs066325; Wed, 26 Apr 2023 19:09:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33QJ9oTK066324; Wed, 26 Apr 2023 19:09:50 GMT (envelope-from git) Date: Wed, 26 Apr 2023 19:09:50 GMT Message-Id: <202304261909.33QJ9oTK066324@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: c7e5e9dc41ad - main - arm: remove interrupt nesting by ipi_preempt()/ipi_hardclock() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c7e5e9dc41ad619c14601fe01ec749e475415fe0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=c7e5e9dc41ad619c14601fe01ec749e475415fe0 commit c7e5e9dc41ad619c14601fe01ec749e475415fe0 Author: Elliott Mitchell AuthorDate: 2022-12-14 20:36:47 +0000 Commit: Andrew Turner CommitDate: 2023-04-26 19:08:30 +0000 arm: remove interrupt nesting by ipi_preempt()/ipi_hardclock() This was needed when intr_ipi_dispatch() was called by hardware-specific IPI interrupt routines which didn't save the trap frame. Now all ARM interrupts pass through INTRNG which will have already saved the trap frame and disabled preemption. Remove the conditional trapframe/argument passing to the handlers. Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D37938 --- sys/arm/arm/machdep_intr.c | 8 +------- sys/arm/arm/mp_machdep.c | 26 +------------------------- sys/arm64/arm64/mp_machdep.c | 8 +------- 3 files changed, 3 insertions(+), 39 deletions(-) diff --git a/sys/arm/arm/machdep_intr.c b/sys/arm/arm/machdep_intr.c index cc2e67a6211e..cd92dd5f79ad 100644 --- a/sys/arm/arm/machdep_intr.c +++ b/sys/arm/arm/machdep_intr.c @@ -143,7 +143,6 @@ intr_ipi_lookup(u_int ipi) void intr_ipi_dispatch(u_int ipi, struct trapframe *tf) { - void *arg; struct intr_ipi *ii; ii = intr_ipi_lookup(ipi); @@ -152,12 +151,7 @@ intr_ipi_dispatch(u_int ipi, struct trapframe *tf) intr_ipi_increment_count(ii->ii_count, PCPU_GET(cpuid)); - /* - * Supply ipi filter with trapframe argument - * if none is registered. - */ - arg = ii->ii_handler_arg != NULL ? ii->ii_handler_arg : tf; - ii->ii_handler(arg); + ii->ii_handler(ii->ii_handler_arg); } void diff --git a/sys/arm/arm/mp_machdep.c b/sys/arm/arm/mp_machdep.c index 4b70869db52d..fa401ff5c6aa 100644 --- a/sys/arm/arm/mp_machdep.c +++ b/sys/arm/arm/mp_machdep.c @@ -282,41 +282,17 @@ ipi_stop(void *dummy __unused) static void ipi_preempt(void *arg) { - struct trapframe *oldframe; - struct thread *td; - - critical_enter(); - td = curthread; - td->td_intr_nesting_level++; - oldframe = td->td_intr_frame; - td->td_intr_frame = (struct trapframe *)arg; CTR1(KTR_SMP, "%s: IPI_PREEMPT", __func__); - sched_preempt(td); - - td->td_intr_frame = oldframe; - td->td_intr_nesting_level--; - critical_exit(); + sched_preempt(curthread); } static void ipi_hardclock(void *arg) { - struct trapframe *oldframe; - struct thread *td; - - critical_enter(); - td = curthread; - td->td_intr_nesting_level++; - oldframe = td->td_intr_frame; - td->td_intr_frame = (struct trapframe *)arg; CTR1(KTR_SMP, "%s: IPI_HARDCLOCK", __func__); hardclockintr(); - - td->td_intr_frame = oldframe; - td->td_intr_nesting_level--; - critical_exit(); } static void diff --git a/sys/arm64/arm64/mp_machdep.c b/sys/arm64/arm64/mp_machdep.c index 24dca3b21d54..0e39b27557ea 100644 --- a/sys/arm64/arm64/mp_machdep.c +++ b/sys/arm64/arm64/mp_machdep.c @@ -917,7 +917,6 @@ intr_ipi_lookup(u_int ipi) void intr_ipi_dispatch(u_int ipi, struct trapframe *tf) { - void *arg; struct intr_ipi *ii; ii = intr_ipi_lookup(ipi); @@ -926,12 +925,7 @@ intr_ipi_dispatch(u_int ipi, struct trapframe *tf) intr_ipi_increment_count(ii->ii_count, PCPU_GET(cpuid)); - /* - * Supply ipi filter with trapframe argument - * if none is registered. - */ - arg = ii->ii_handler_arg != NULL ? ii->ii_handler_arg : tf; - ii->ii_handler(arg); + ii->ii_handler(ii->ii_handler_arg); } #ifdef notyet