* [PATCH 1/5] irqchip: Constify "struct irq_chip *" parameter in chained_irq_xxx() functions
2024-11-17 9:49 [PATCH 0/5] Initial steps to constify irq_chip Christophe JAILLET
@ 2024-11-17 9:49 ` Christophe JAILLET
2024-11-17 9:49 ` [PATCH 2/5] irqchip: Constify "struct irq_chip *" parameter in cond_unmask_eoi_irq() Christophe JAILLET
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Christophe JAILLET @ 2024-11-17 9:49 UTC (permalink / raw)
To: tglx; +Cc: linux-kernel, kernel-janitors, Christophe JAILLET
chained_irq_enter() and chained_irq_exit() don't modify their 'chip'
parameter.
So change the prototype of these functions to accept const struct irq_chip
pointer.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only
---
include/linux/irqchip/chained_irq.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/irqchip/chained_irq.h b/include/linux/irqchip/chained_irq.h
index dd8b3c476666..f248d63acfca 100644
--- a/include/linux/irqchip/chained_irq.h
+++ b/include/linux/irqchip/chained_irq.h
@@ -13,7 +13,7 @@
* Entry/exit functions for chained handlers where the primary IRQ chip
* may implement either fasteoi or level-trigger flow control.
*/
-static inline void chained_irq_enter(struct irq_chip *chip,
+static inline void chained_irq_enter(const struct irq_chip *chip,
struct irq_desc *desc)
{
/* FastEOI controllers require no action on entry. */
@@ -29,7 +29,7 @@ static inline void chained_irq_enter(struct irq_chip *chip,
}
}
-static inline void chained_irq_exit(struct irq_chip *chip,
+static inline void chained_irq_exit(const struct irq_chip *chip,
struct irq_desc *desc)
{
if (chip->irq_eoi)
--
2.47.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 2/5] irqchip: Constify "struct irq_chip *" parameter in cond_unmask_eoi_irq()
2024-11-17 9:49 [PATCH 0/5] Initial steps to constify irq_chip Christophe JAILLET
2024-11-17 9:49 ` [PATCH 1/5] irqchip: Constify "struct irq_chip *" parameter in chained_irq_xxx() functions Christophe JAILLET
@ 2024-11-17 9:49 ` Christophe JAILLET
2024-11-17 9:49 ` [PATCH 3/5] irqchip: Constify some direct access to irq_data->chip Christophe JAILLET
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Christophe JAILLET @ 2024-11-17 9:49 UTC (permalink / raw)
To: tglx; +Cc: linux-kernel, kernel-janitors, Christophe JAILLET
cond_unmask_eoi_irq() doesn't modify its 'chip' parameter.
So change the prototype of this function to accept const struct irq_chip
pointer.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only
---
kernel/irq/chip.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 271e9139de77..502133dc3b9c 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -654,7 +654,8 @@ void handle_level_irq(struct irq_desc *desc)
}
EXPORT_SYMBOL_GPL(handle_level_irq);
-static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip)
+static void cond_unmask_eoi_irq(struct irq_desc *desc,
+ const struct irq_chip *chip)
{
if (!(desc->istate & IRQS_ONESHOT)) {
chip->irq_eoi(&desc->irq_data);
--
2.47.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 3/5] irqchip: Constify some direct access to irq_data->chip
2024-11-17 9:49 [PATCH 0/5] Initial steps to constify irq_chip Christophe JAILLET
2024-11-17 9:49 ` [PATCH 1/5] irqchip: Constify "struct irq_chip *" parameter in chained_irq_xxx() functions Christophe JAILLET
2024-11-17 9:49 ` [PATCH 2/5] irqchip: Constify "struct irq_chip *" parameter in cond_unmask_eoi_irq() Christophe JAILLET
@ 2024-11-17 9:49 ` Christophe JAILLET
2024-11-17 9:49 ` [PATCH 4/5] irqchip: Constify some irq_desc_get_chip() usage Christophe JAILLET
2024-11-17 9:49 ` [PATCH 5/5] irqchip: Constify some irq_data_get_irq_chip() usage Christophe JAILLET
4 siblings, 0 replies; 7+ messages in thread
From: Christophe JAILLET @ 2024-11-17 9:49 UTC (permalink / raw)
To: tglx; +Cc: linux-kernel, kernel-janitors, Christophe JAILLET
When the 'chip' member of struct irq_data will be turned into a const
struct irq_chip, the const qualifier will be needed for local variables
that keep a reference to this field.
So start to add some of these const qualifiers.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only
---
kernel/irq/chip.c | 8 ++++----
kernel/irq/debugfs.c | 2 +-
kernel/irq/manage.c | 10 +++++-----
kernel/irq/migration.c | 2 +-
4 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 502133dc3b9c..eca39c4dd094 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -442,7 +442,7 @@ void unmask_irq(struct irq_desc *desc)
void unmask_threaded_irq(struct irq_desc *desc)
{
- struct irq_chip *chip = desc->irq_data.chip;
+ const struct irq_chip *chip = desc->irq_data.chip;
if (chip->flags & IRQCHIP_EOI_THREADED)
chip->irq_eoi(&desc->irq_data);
@@ -687,7 +687,7 @@ static void cond_unmask_eoi_irq(struct irq_desc *desc,
*/
void handle_fasteoi_irq(struct irq_desc *desc)
{
- struct irq_chip *chip = desc->irq_data.chip;
+ const struct irq_chip *chip = desc->irq_data.chip;
raw_spin_lock(&desc->lock);
@@ -1212,7 +1212,7 @@ void irq_cpu_offline(void)
*/
void handle_fasteoi_ack_irq(struct irq_desc *desc)
{
- struct irq_chip *chip = desc->irq_data.chip;
+ const struct irq_chip *chip = desc->irq_data.chip;
raw_spin_lock(&desc->lock);
@@ -1263,7 +1263,7 @@ EXPORT_SYMBOL_GPL(handle_fasteoi_ack_irq);
*/
void handle_fasteoi_mask_irq(struct irq_desc *desc)
{
- struct irq_chip *chip = desc->irq_data.chip;
+ const struct irq_chip *chip = desc->irq_data.chip;
raw_spin_lock(&desc->lock);
mask_ack_irq(desc);
diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c
index c6ffb97966be..c9c1c28be1a9 100644
--- a/kernel/irq/debugfs.c
+++ b/kernel/irq/debugfs.c
@@ -58,7 +58,7 @@ static const struct irq_bit_descr irqchip_flags[] = {
static void
irq_debug_show_chip(struct seq_file *m, struct irq_data *data, int ind)
{
- struct irq_chip *chip = data->chip;
+ const struct irq_chip *chip = data->chip;
if (!chip) {
seq_printf(m, "chip: None\n");
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index f0803d6bd296..e7f548bc976b 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -958,7 +958,7 @@ int can_request_irq(unsigned int irq, unsigned long irqflags)
int __irq_set_trigger(struct irq_desc *desc, unsigned long flags)
{
- struct irq_chip *chip = desc->irq_data.chip;
+ const struct irq_chip *chip = desc->irq_data.chip;
int ret, unmask = 0;
if (!chip || !chip->irq_set_type) {
@@ -1407,7 +1407,7 @@ static int irq_setup_forced_threading(struct irqaction *new)
static int irq_request_resources(struct irq_desc *desc)
{
struct irq_data *d = &desc->irq_data;
- struct irq_chip *c = d->chip;
+ const struct irq_chip *c = d->chip;
return c->irq_request_resources ? c->irq_request_resources(d) : 0;
}
@@ -1415,7 +1415,7 @@ static int irq_request_resources(struct irq_desc *desc)
static void irq_release_resources(struct irq_desc *desc)
{
struct irq_data *d = &desc->irq_data;
- struct irq_chip *c = d->chip;
+ const struct irq_chip *c = d->chip;
if (c->irq_release_resources)
c->irq_release_resources(d);
@@ -1440,7 +1440,7 @@ static bool irq_supports_nmi(struct irq_desc *desc)
static int irq_nmi_setup(struct irq_desc *desc)
{
struct irq_data *d = irq_desc_get_irq_data(desc);
- struct irq_chip *c = d->chip;
+ const struct irq_chip *c = d->chip;
return c->irq_nmi_setup ? c->irq_nmi_setup(d) : -EINVAL;
}
@@ -1448,7 +1448,7 @@ static int irq_nmi_setup(struct irq_desc *desc)
static void irq_nmi_teardown(struct irq_desc *desc)
{
struct irq_data *d = irq_desc_get_irq_data(desc);
- struct irq_chip *c = d->chip;
+ const struct irq_chip *c = d->chip;
if (c->irq_nmi_teardown)
c->irq_nmi_teardown(d);
diff --git a/kernel/irq/migration.c b/kernel/irq/migration.c
index eb150afd671f..fff2d9cd0239 100644
--- a/kernel/irq/migration.c
+++ b/kernel/irq/migration.c
@@ -39,7 +39,7 @@ void irq_move_masked_irq(struct irq_data *idata)
{
struct irq_desc *desc = irq_data_to_desc(idata);
struct irq_data *data = &desc->irq_data;
- struct irq_chip *chip = data->chip;
+ const struct irq_chip *chip = data->chip;
if (likely(!irqd_is_setaffinity_pending(data)))
return;
--
2.47.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 4/5] irqchip: Constify some irq_desc_get_chip() usage
2024-11-17 9:49 [PATCH 0/5] Initial steps to constify irq_chip Christophe JAILLET
` (2 preceding siblings ...)
2024-11-17 9:49 ` [PATCH 3/5] irqchip: Constify some direct access to irq_data->chip Christophe JAILLET
@ 2024-11-17 9:49 ` Christophe JAILLET
2024-12-03 11:32 ` Thomas Gleixner
2024-11-17 9:49 ` [PATCH 5/5] irqchip: Constify some irq_data_get_irq_chip() usage Christophe JAILLET
4 siblings, 1 reply; 7+ messages in thread
From: Christophe JAILLET @ 2024-11-17 9:49 UTC (permalink / raw)
To: tglx; +Cc: linux-kernel, kernel-janitors, Christophe JAILLET
When irq_desc_get_chip() will return a const struct irq_chip, the const
qualifier will be needed for local variables that store the return value of
this function.
So start to add some of these const qualifiers.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only
---
kernel/irq/chip.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index eca39c4dd094..d3acccf7e2e2 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -751,7 +751,7 @@ EXPORT_SYMBOL_GPL(handle_fasteoi_irq);
*/
void handle_fasteoi_nmi(struct irq_desc *desc)
{
- struct irq_chip *chip = irq_desc_get_chip(desc);
+ const struct irq_chip *chip = irq_desc_get_chip(desc);
struct irqaction *action = desc->action;
unsigned int irq = irq_desc_get_irq(desc);
irqreturn_t res;
@@ -849,7 +849,7 @@ EXPORT_SYMBOL(handle_edge_irq);
*/
void handle_edge_eoi_irq(struct irq_desc *desc)
{
- struct irq_chip *chip = irq_desc_get_chip(desc);
+ const struct irq_chip *chip = irq_desc_get_chip(desc);
raw_spin_lock(&desc->lock);
@@ -894,7 +894,7 @@ void handle_edge_eoi_irq(struct irq_desc *desc)
*/
void handle_percpu_irq(struct irq_desc *desc)
{
- struct irq_chip *chip = irq_desc_get_chip(desc);
+ const struct irq_chip *chip = irq_desc_get_chip(desc);
/*
* PER CPU interrupts are not serialized. Do not touch
@@ -924,7 +924,7 @@ void handle_percpu_irq(struct irq_desc *desc)
*/
void handle_percpu_devid_irq(struct irq_desc *desc)
{
- struct irq_chip *chip = irq_desc_get_chip(desc);
+ const struct irq_chip *chip = irq_desc_get_chip(desc);
struct irqaction *action = desc->action;
unsigned int irq = irq_desc_get_irq(desc);
irqreturn_t res;
@@ -967,7 +967,7 @@ void handle_percpu_devid_irq(struct irq_desc *desc)
*/
void handle_percpu_devid_fasteoi_nmi(struct irq_desc *desc)
{
- struct irq_chip *chip = irq_desc_get_chip(desc);
+ const struct irq_chip *chip = irq_desc_get_chip(desc);
struct irqaction *action = desc->action;
unsigned int irq = irq_desc_get_irq(desc);
irqreturn_t res;
--
2.47.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH 4/5] irqchip: Constify some irq_desc_get_chip() usage
2024-11-17 9:49 ` [PATCH 4/5] irqchip: Constify some irq_desc_get_chip() usage Christophe JAILLET
@ 2024-12-03 11:32 ` Thomas Gleixner
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Gleixner @ 2024-12-03 11:32 UTC (permalink / raw)
To: Christophe JAILLET; +Cc: linux-kernel, kernel-janitors, Christophe JAILLET
On Sun, Nov 17 2024 at 10:49, Christophe JAILLET wrote:
> When irq_desc_get_chip() will return a const struct irq_chip, the const
> qualifier will be needed for local variables that store the return value of
> this function.
>
> So start to add some of these const qualifiers.
Can you please create a coccinelle script which does a tree wide
conversion of all irq_desc_get_chip() and irq_data_get_irq_chip()
instances?
That script can be run at the end of the next merge window once instead
of having to chase 240+ places with individual patches.
Thanks,
tglx
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 5/5] irqchip: Constify some irq_data_get_irq_chip() usage
2024-11-17 9:49 [PATCH 0/5] Initial steps to constify irq_chip Christophe JAILLET
` (3 preceding siblings ...)
2024-11-17 9:49 ` [PATCH 4/5] irqchip: Constify some irq_desc_get_chip() usage Christophe JAILLET
@ 2024-11-17 9:49 ` Christophe JAILLET
4 siblings, 0 replies; 7+ messages in thread
From: Christophe JAILLET @ 2024-11-17 9:49 UTC (permalink / raw)
To: tglx; +Cc: linux-kernel, kernel-janitors, Christophe JAILLET
When irq_data_get_irq_chip() will return a const struct irq_chip, the const
qualifier will be needed for local variables that store the return value of
this function.
So start to add some of these const qualifiers.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only
---
kernel/irq/chip.c | 4 ++--
kernel/irq/cpuhotplug.c | 2 +-
kernel/irq/manage.c | 12 ++++++------
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index d3acccf7e2e2..2d540884ca05 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -1145,7 +1145,7 @@ EXPORT_SYMBOL_GPL(irq_modify_status);
void irq_cpu_online(void)
{
struct irq_desc *desc;
- struct irq_chip *chip;
+ const struct irq_chip *chip;
unsigned long flags;
unsigned int irq;
@@ -1175,7 +1175,7 @@ void irq_cpu_online(void)
void irq_cpu_offline(void)
{
struct irq_desc *desc;
- struct irq_chip *chip;
+ const struct irq_chip *chip;
unsigned long flags;
unsigned int irq;
diff --git a/kernel/irq/cpuhotplug.c b/kernel/irq/cpuhotplug.c
index 15a7654eff68..dbfa7d63438f 100644
--- a/kernel/irq/cpuhotplug.c
+++ b/kernel/irq/cpuhotplug.c
@@ -53,7 +53,7 @@ static inline bool irq_needs_fixup(struct irq_data *d)
static bool migrate_one_irq(struct irq_desc *desc)
{
struct irq_data *d = irq_desc_get_irq_data(desc);
- struct irq_chip *chip = irq_data_get_irq_chip(d);
+ const struct irq_chip *chip = irq_data_get_irq_chip(d);
bool maskchip = !irq_can_move_pcntxt(d) && !irqd_irq_masked(d);
const struct cpumask *affinity;
bool brokeaff = false;
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index e7f548bc976b..dfe184218cc2 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -207,7 +207,7 @@ void irq_set_thread_affinity(struct irq_desc *desc)
static void irq_validate_effective_affinity(struct irq_data *data)
{
const struct cpumask *m = irq_data_get_effective_affinity_mask(data);
- struct irq_chip *chip = irq_data_get_irq_chip(data);
+ const struct irq_chip *chip = irq_data_get_irq_chip(data);
if (!cpumask_empty(m))
return;
@@ -225,7 +225,7 @@ int irq_do_set_affinity(struct irq_data *data, const struct cpumask *mask,
{
struct cpumask *tmp_mask = this_cpu_ptr(&__tmp_mask);
struct irq_desc *desc = irq_data_to_desc(data);
- struct irq_chip *chip = irq_data_get_irq_chip(data);
+ const struct irq_chip *chip = irq_data_get_irq_chip(data);
const struct cpumask *prog_mask;
int ret;
@@ -353,7 +353,7 @@ static bool irq_set_affinity_deactivated(struct irq_data *data,
int irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask,
bool force)
{
- struct irq_chip *chip = irq_data_get_irq_chip(data);
+ const struct irq_chip *chip = irq_data_get_irq_chip(data);
struct irq_desc *desc = irq_data_to_desc(data);
int ret = 0;
@@ -658,7 +658,7 @@ int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info)
unsigned long flags;
struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);
struct irq_data *data;
- struct irq_chip *chip;
+ const struct irq_chip *chip;
int ret = -ENOSYS;
if (!desc)
@@ -2799,7 +2799,7 @@ void teardown_percpu_nmi(unsigned int irq)
int __irq_get_irqchip_state(struct irq_data *data, enum irqchip_irq_state which,
bool *state)
{
- struct irq_chip *chip;
+ const struct irq_chip *chip;
int err = -EINVAL;
do {
@@ -2871,7 +2871,7 @@ int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which,
{
struct irq_desc *desc;
struct irq_data *data;
- struct irq_chip *chip;
+ const struct irq_chip *chip;
unsigned long flags;
int err = -EINVAL;
--
2.47.0
^ permalink raw reply related [flat|nested] 7+ messages in thread