From nobody Sat Feb 7 09:35:03 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F3881E515; Mon, 29 Jul 2024 13:49:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722260993; cv=none; b=cgT/G3VlaqFN72I4bOHGPqCfK0Xan0KBZ8SEjly5FzwRu0YM0W2xacIn0rlioEnpUVBQLYCFRq79jjg8G0SwksqIXtrnOgnCRVzHIgHHHIGvOMhtTukaYJIoRcmh2Mao/8zJLx3XT8+ZOyRzpCUFugRstYnQhOPAaCS1BukBrF0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722260993; c=relaxed/simple; bh=InQUFpstovCC9+CozNMQpL1aofE4McWvzqEyAI9oFNM=; h=Date:From:To:Subject:Cc:In-Reply-To:References:MIME-Version: Message-ID:Content-Type; b=Uzk/gi3pNph7/AoHMJnzjN6LFVMC/ltH0d5PdkTlPDEccGaokWlLIxv8LoLqfd4CBUiRaSvAfbpgst/X757WWl/MqZPLS/lajvjc65uTH5ee2tyjg+TBPUfrvTQfL9pvB+96ZJ/FU92FY8Cp56OKi0WH+yCvUxeu73AJMmxQq3A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=jvYJH/v+; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=h6KcEOre; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="jvYJH/v+"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="h6KcEOre" Date: Mon, 29 Jul 2024 13:49:48 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1722260989; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YIB7jSreWeng1mkbqwds0aQJSGOn6JmUe1ENkpT7nRA=; b=jvYJH/v+dAdS6MMVNmU8SLJGqpYkFfC2UfZGrEi55e5/2upLp16AA5Sm0SAqC6oGZwl3ZH /vyMLEkEdzKeu7AwEz/qvGK56vUDdKn85AgsE6rypUj1CoI/iHOxbkyOOuvxO6XrVDrWCS vEz6EP4ezQ5kqdHM/uSBVAEVU7XUN1M6YVw42iRtSHiT9lctLtQVfKGF7K6MFK4dBfNCnL R7I5xbyrY20K6LzkGIAnmioah6mI1UlAnLYmLYwJQKP0/tLr8jDZ2z4sOdva/304RYZy4d OychblfsJ3mXmTT8/3ZpRYvhICU4lE0y7IVRPDaBM9wNCLmrU8T0FT4AJT8CpA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1722260989; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YIB7jSreWeng1mkbqwds0aQJSGOn6JmUe1ENkpT7nRA=; b=h6KcEOreUG073VtYPPlvLqabP4a5P26LyOkrOMrn1hrOiwJ+Q/1iryDUlysA1XYUFyKeSi vUJr7p2UKoCCkFAA== From: "tip-bot2 for Arseniy Krasnov" Sender: tip-bot2@linutronix.de Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: irq/urgent] irqchip/meson-gpio: Convert meson_gpio_irq_controller::lock to 'raw_spinlock_t' Cc: Arseniy Krasnov , Thomas Gleixner , stable@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, maz@kernel.org In-Reply-To: <20240729131850.3015508-1-avkrasnov@salutedevices.com> References: <20240729131850.3015508-1-avkrasnov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <172226098842.2215.14904545855987442510.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Precedence: bulk Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The following commit has been merged into the irq/urgent branch of tip: Commit-ID: f872d4af79fe8c71ae291ce8875b477e1669a6c7 Gitweb: https://git.kernel.org/tip/f872d4af79fe8c71ae291ce8875b477e1= 669a6c7 Author: Arseniy Krasnov AuthorDate: Mon, 29 Jul 2024 16:18:50 +03:00 Committer: Thomas Gleixner CommitterDate: Mon, 29 Jul 2024 15:43:50 +02:00 irqchip/meson-gpio: Convert meson_gpio_irq_controller::lock to 'raw_spinloc= k_t' This lock is acquired under irq_desc::lock with interrupts disabled. When PREEMPT_RT is enabled, 'spinlock_t' becomes preemptible, which results in invalid lock acquire context; [ BUG: Invalid wait context ] swapper/0/1 is trying to lock: ffff0000008fed30 (&ctl->lock){....}-{3:3}, at: meson_gpio_irq_update_bits0 other info that might help us debug this: context-{5:5} 3 locks held by swapper/0/1: #0: ffff0000003cd0f8 (&dev->mutex){....}-{4:4}, at: __driver_attach+0x90c #1: ffff000004714650 (&desc->request_mutex){+.+.}-{4:4}, at: __setup_irq0 #2: ffff0000047144c8 (&irq_desc_lock_class){-.-.}-{2:2}, at: __setup_irq0 stack backtrace: CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.9.9-sdkernel #1 Call trace: _raw_spin_lock_irqsave+0x60/0x88 meson_gpio_irq_update_bits+0x34/0x70 meson8_gpio_irq_set_type+0x78/0xc4 meson_gpio_irq_set_type+0x30/0x60 __irq_set_trigger+0x60/0x180 __setup_irq+0x30c/0x6e0 request_threaded_irq+0xec/0x1a4 Fixes: 215f4cc0fb20 ("irqchip/meson: Add support for gpio interrupt control= ler") Signed-off-by: Arseniy Krasnov Signed-off-by: Thomas Gleixner Cc: stable@vger.kernel.org Link: https://lore.kernel.org/all/20240729131850.3015508-1-avkrasnov@salute= devices.com --- drivers/irqchip/irq-meson-gpio.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/irqchip/irq-meson-gpio.c b/drivers/irqchip/irq-meson-g= pio.c index 27e30ce..cd789fa 100644 --- a/drivers/irqchip/irq-meson-gpio.c +++ b/drivers/irqchip/irq-meson-gpio.c @@ -178,7 +178,7 @@ struct meson_gpio_irq_controller { void __iomem *base; u32 channel_irqs[MAX_NUM_CHANNEL]; DECLARE_BITMAP(channel_map, MAX_NUM_CHANNEL); - spinlock_t lock; + raw_spinlock_t lock; }; =20 static void meson_gpio_irq_update_bits(struct meson_gpio_irq_controller *c= tl, @@ -187,14 +187,14 @@ static void meson_gpio_irq_update_bits(struct meson_g= pio_irq_controller *ctl, unsigned long flags; u32 tmp; =20 - spin_lock_irqsave(&ctl->lock, flags); + raw_spin_lock_irqsave(&ctl->lock, flags); =20 tmp =3D readl_relaxed(ctl->base + reg); tmp &=3D ~mask; tmp |=3D val; writel_relaxed(tmp, ctl->base + reg); =20 - spin_unlock_irqrestore(&ctl->lock, flags); + raw_spin_unlock_irqrestore(&ctl->lock, flags); } =20 static void meson_gpio_irq_init_dummy(struct meson_gpio_irq_controller *ct= l) @@ -244,12 +244,12 @@ meson_gpio_irq_request_channel(struct meson_gpio_irq_= controller *ctl, unsigned long flags; unsigned int idx; =20 - spin_lock_irqsave(&ctl->lock, flags); + raw_spin_lock_irqsave(&ctl->lock, flags); =20 /* Find a free channel */ idx =3D find_first_zero_bit(ctl->channel_map, ctl->params->nr_channels); if (idx >=3D ctl->params->nr_channels) { - spin_unlock_irqrestore(&ctl->lock, flags); + raw_spin_unlock_irqrestore(&ctl->lock, flags); pr_err("No channel available\n"); return -ENOSPC; } @@ -257,7 +257,7 @@ meson_gpio_irq_request_channel(struct meson_gpio_irq_co= ntroller *ctl, /* Mark the channel as used */ set_bit(idx, ctl->channel_map); =20 - spin_unlock_irqrestore(&ctl->lock, flags); + raw_spin_unlock_irqrestore(&ctl->lock, flags); =20 /* * Setup the mux of the channel to route the signal of the pad @@ -567,7 +567,7 @@ static int meson_gpio_irq_of_init(struct device_node *n= ode, struct device_node * if (!ctl) return -ENOMEM; =20 - spin_lock_init(&ctl->lock); + raw_spin_lock_init(&ctl->lock); =20 ctl->base =3D of_iomap(node, 0); if (!ctl->base) {