* [PATCH v2 0/4] genirq/irq_sim: misc updates
@ 2023-09-20 7:54 Bartosz Golaszewski
2023-09-20 7:54 ` [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps Bartosz Golaszewski
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Bartosz Golaszewski @ 2023-09-20 7:54 UTC (permalink / raw)
To: Yury Norov, Andy Shevchenko, Rasmus Villemoes, Thomas Gleixner,
Marc Zyngier, Peter Zijlstra
Cc: linux-kernel, Bartosz Golaszewski
Here are a couple of updates to the interrupt simulator. Two are minor:
remove an unused field and reorder includes for readability. The third
one simplifies the error paths by using new cleanup macros. To that end
we also add a cleanup definition for dynamic bitmaps.
v1 -> v2:
- add a NULL-pointer check to the bitmap cleanup macro as advised by
Peter Zijlstra
- initialize managed pointers when declaring them to create a clear pairing
between the type and the cleanup action
Bartosz Golaszewski (4):
bitmap: define a cleanup function for bitmaps
genirq/irq_sim: remove unused field from struct irq_sim_irq_ctx
genirq/irq_sim: order headers alphabetically
genirq/irq_sim: shrink code by using cleanup helpers
include/linux/bitmap.h | 3 +++
kernel/irq/irq_sim.c | 30 ++++++++++++------------------
2 files changed, 15 insertions(+), 18 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps
2023-09-20 7:54 [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
@ 2023-09-20 7:54 ` Bartosz Golaszewski
2023-09-20 13:50 ` Andy Shevchenko
2023-09-20 17:14 ` Yury Norov
2023-09-20 7:54 ` [PATCH v2 2/4] genirq/irq_sim: remove unused field from struct irq_sim_irq_ctx Bartosz Golaszewski
` (3 subsequent siblings)
4 siblings, 2 replies; 9+ messages in thread
From: Bartosz Golaszewski @ 2023-09-20 7:54 UTC (permalink / raw)
To: Yury Norov, Andy Shevchenko, Rasmus Villemoes, Thomas Gleixner,
Marc Zyngier, Peter Zijlstra
Cc: linux-kernel, Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Add support for autopointers for bitmaps allocated with bitmap_alloc()
et al.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
include/linux/bitmap.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h
index 03644237e1ef..6709807ebb59 100644
--- a/include/linux/bitmap.h
+++ b/include/linux/bitmap.h
@@ -6,6 +6,7 @@
#include <linux/align.h>
#include <linux/bitops.h>
+#include <linux/cleanup.h>
#include <linux/find.h>
#include <linux/limits.h>
#include <linux/string.h>
@@ -125,6 +126,8 @@ unsigned long *bitmap_alloc_node(unsigned int nbits, gfp_t flags, int node);
unsigned long *bitmap_zalloc_node(unsigned int nbits, gfp_t flags, int node);
void bitmap_free(const unsigned long *bitmap);
+DEFINE_FREE(bitmap, unsigned long *, if (_T) bitmap_free(_T))
+
/* Managed variants of the above. */
unsigned long *devm_bitmap_alloc(struct device *dev,
unsigned int nbits, gfp_t flags);
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/4] genirq/irq_sim: remove unused field from struct irq_sim_irq_ctx
2023-09-20 7:54 [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
2023-09-20 7:54 ` [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps Bartosz Golaszewski
@ 2023-09-20 7:54 ` Bartosz Golaszewski
2023-09-20 7:54 ` [PATCH v2 3/4] genirq/irq_sim: order headers alphabetically Bartosz Golaszewski
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Bartosz Golaszewski @ 2023-09-20 7:54 UTC (permalink / raw)
To: Yury Norov, Andy Shevchenko, Rasmus Villemoes, Thomas Gleixner,
Marc Zyngier, Peter Zijlstra
Cc: linux-kernel, Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
The irqnum field is unused. Remove it.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
kernel/irq/irq_sim.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/kernel/irq/irq_sim.c b/kernel/irq/irq_sim.c
index dd76323ea3fd..f5ebb3ba6f9a 100644
--- a/kernel/irq/irq_sim.c
+++ b/kernel/irq/irq_sim.c
@@ -19,7 +19,6 @@ struct irq_sim_work_ctx {
};
struct irq_sim_irq_ctx {
- int irqnum;
bool enabled;
struct irq_sim_work_ctx *work_ctx;
};
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/4] genirq/irq_sim: order headers alphabetically
2023-09-20 7:54 [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
2023-09-20 7:54 ` [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps Bartosz Golaszewski
2023-09-20 7:54 ` [PATCH v2 2/4] genirq/irq_sim: remove unused field from struct irq_sim_irq_ctx Bartosz Golaszewski
@ 2023-09-20 7:54 ` Bartosz Golaszewski
2023-09-20 7:55 ` [PATCH v2 4/4] genirq/irq_sim: shrink code by using cleanup helpers Bartosz Golaszewski
2023-10-09 12:51 ` [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
4 siblings, 0 replies; 9+ messages in thread
From: Bartosz Golaszewski @ 2023-09-20 7:54 UTC (permalink / raw)
To: Yury Norov, Andy Shevchenko, Rasmus Villemoes, Thomas Gleixner,
Marc Zyngier, Peter Zijlstra
Cc: linux-kernel, Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
For better readability and maintenance keep headers in alphabetical
order.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
kernel/irq/irq_sim.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/irq/irq_sim.c b/kernel/irq/irq_sim.c
index f5ebb3ba6f9a..b0d50b48dbd1 100644
--- a/kernel/irq/irq_sim.c
+++ b/kernel/irq/irq_sim.c
@@ -4,10 +4,10 @@
* Copyright (C) 2020 Bartosz Golaszewski <bgolaszewski@baylibre.com>
*/
+#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irq_sim.h>
#include <linux/irq_work.h>
-#include <linux/interrupt.h>
#include <linux/slab.h>
struct irq_sim_work_ctx {
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 4/4] genirq/irq_sim: shrink code by using cleanup helpers
2023-09-20 7:54 [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
` (2 preceding siblings ...)
2023-09-20 7:54 ` [PATCH v2 3/4] genirq/irq_sim: order headers alphabetically Bartosz Golaszewski
@ 2023-09-20 7:55 ` Bartosz Golaszewski
2023-10-09 12:51 ` [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
4 siblings, 0 replies; 9+ messages in thread
From: Bartosz Golaszewski @ 2023-09-20 7:55 UTC (permalink / raw)
To: Yury Norov, Andy Shevchenko, Rasmus Villemoes, Thomas Gleixner,
Marc Zyngier, Peter Zijlstra
Cc: linux-kernel, Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Use the new __free helper from linux/cleanup.h to remove all gotos and
simplify the error paths.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
kernel/irq/irq_sim.c | 27 +++++++++++----------------
1 file changed, 11 insertions(+), 16 deletions(-)
diff --git a/kernel/irq/irq_sim.c b/kernel/irq/irq_sim.c
index b0d50b48dbd1..82b7b5051249 100644
--- a/kernel/irq/irq_sim.c
+++ b/kernel/irq/irq_sim.c
@@ -4,6 +4,7 @@
* Copyright (C) 2020 Bartosz Golaszewski <bgolaszewski@baylibre.com>
*/
+#include <linux/cleanup.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irq_sim.h>
@@ -163,33 +164,27 @@ static const struct irq_domain_ops irq_sim_domain_ops = {
struct irq_domain *irq_domain_create_sim(struct fwnode_handle *fwnode,
unsigned int num_irqs)
{
- struct irq_sim_work_ctx *work_ctx;
-
- work_ctx = kmalloc(sizeof(*work_ctx), GFP_KERNEL);
+ struct irq_sim_work_ctx *work_ctx __free(kfree) =
+ kmalloc(sizeof(*work_ctx), GFP_KERNEL);
if (!work_ctx)
- goto err_out;
+ return ERR_PTR(-ENOMEM);
- work_ctx->pending = bitmap_zalloc(num_irqs, GFP_KERNEL);
- if (!work_ctx->pending)
- goto err_free_work_ctx;
+ unsigned long *pending __free(bitmap) = bitmap_zalloc(num_irqs,
+ GFP_KERNEL);
+ if (!pending)
+ return ERR_PTR(-ENOMEM);
work_ctx->domain = irq_domain_create_linear(fwnode, num_irqs,
&irq_sim_domain_ops,
work_ctx);
if (!work_ctx->domain)
- goto err_free_bitmap;
+ return ERR_PTR(-ENOMEM);
work_ctx->irq_count = num_irqs;
work_ctx->work = IRQ_WORK_INIT_HARD(irq_sim_handle_irq);
+ work_ctx->pending = no_free_ptr(pending);
- return work_ctx->domain;
-
-err_free_bitmap:
- bitmap_free(work_ctx->pending);
-err_free_work_ctx:
- kfree(work_ctx);
-err_out:
- return ERR_PTR(-ENOMEM);
+ return no_free_ptr(work_ctx)->domain;
}
EXPORT_SYMBOL_GPL(irq_domain_create_sim);
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps
2023-09-20 7:54 ` [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps Bartosz Golaszewski
@ 2023-09-20 13:50 ` Andy Shevchenko
2023-09-22 8:55 ` Bartosz Golaszewski
2023-09-20 17:14 ` Yury Norov
1 sibling, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2023-09-20 13:50 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Yury Norov, Rasmus Villemoes, Thomas Gleixner, Marc Zyngier,
Peter Zijlstra, linux-kernel, Bartosz Golaszewski
On Wed, Sep 20, 2023 at 09:54:57AM +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> Add support for autopointers for bitmaps allocated with bitmap_alloc()
> et al.
Haven't I given a tag? (Probably this is significant change...) Whatever,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps
2023-09-20 7:54 ` [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps Bartosz Golaszewski
2023-09-20 13:50 ` Andy Shevchenko
@ 2023-09-20 17:14 ` Yury Norov
1 sibling, 0 replies; 9+ messages in thread
From: Yury Norov @ 2023-09-20 17:14 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Andy Shevchenko, Rasmus Villemoes, Thomas Gleixner, Marc Zyngier,
Peter Zijlstra, linux-kernel, Bartosz Golaszewski
On Wed, Sep 20, 2023 at 09:54:57AM +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> Add support for autopointers for bitmaps allocated with bitmap_alloc()
> et al.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
> include/linux/bitmap.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h
> index 03644237e1ef..6709807ebb59 100644
> --- a/include/linux/bitmap.h
> +++ b/include/linux/bitmap.h
> @@ -6,6 +6,7 @@
>
> #include <linux/align.h>
> #include <linux/bitops.h>
> +#include <linux/cleanup.h>
> #include <linux/find.h>
> #include <linux/limits.h>
> #include <linux/string.h>
> @@ -125,6 +126,8 @@ unsigned long *bitmap_alloc_node(unsigned int nbits, gfp_t flags, int node);
> unsigned long *bitmap_zalloc_node(unsigned int nbits, gfp_t flags, int node);
> void bitmap_free(const unsigned long *bitmap);
>
> +DEFINE_FREE(bitmap, unsigned long *, if (_T) bitmap_free(_T))
> +
> /* Managed variants of the above. */
> unsigned long *devm_bitmap_alloc(struct device *dev,
> unsigned int nbits, gfp_t flags);
Acked-by: Yury Norov <yury.norov@gmail.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps
2023-09-20 13:50 ` Andy Shevchenko
@ 2023-09-22 8:55 ` Bartosz Golaszewski
0 siblings, 0 replies; 9+ messages in thread
From: Bartosz Golaszewski @ 2023-09-22 8:55 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Yury Norov, Rasmus Villemoes, Thomas Gleixner, Marc Zyngier,
Peter Zijlstra, linux-kernel, Bartosz Golaszewski
On Wed, Sep 20, 2023 at 3:50 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> On Wed, Sep 20, 2023 at 09:54:57AM +0200, Bartosz Golaszewski wrote:
> > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> >
> > Add support for autopointers for bitmaps allocated with bitmap_alloc()
> > et al.
>
> Haven't I given a tag? (Probably this is significant change...) Whatever,
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>
> --
> With Best Regards,
> Andy Shevchenko
>
>
Yeah, I dropped it due to the NULL-pointer check change.
Bart
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/4] genirq/irq_sim: misc updates
2023-09-20 7:54 [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
` (3 preceding siblings ...)
2023-09-20 7:55 ` [PATCH v2 4/4] genirq/irq_sim: shrink code by using cleanup helpers Bartosz Golaszewski
@ 2023-10-09 12:51 ` Bartosz Golaszewski
4 siblings, 0 replies; 9+ messages in thread
From: Bartosz Golaszewski @ 2023-10-09 12:51 UTC (permalink / raw)
To: Yury Norov, Andy Shevchenko, Rasmus Villemoes, Thomas Gleixner,
Marc Zyngier, Peter Zijlstra
Cc: linux-kernel
On Wed, Sep 20, 2023 at 9:55 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> Here are a couple of updates to the interrupt simulator. Two are minor:
> remove an unused field and reorder includes for readability. The third
> one simplifies the error paths by using new cleanup macros. To that end
> we also add a cleanup definition for dynamic bitmaps.
>
> v1 -> v2:
> - add a NULL-pointer check to the bitmap cleanup macro as advised by
> Peter Zijlstra
> - initialize managed pointers when declaring them to create a clear pairing
> between the type and the cleanup action
>
> Bartosz Golaszewski (4):
> bitmap: define a cleanup function for bitmaps
> genirq/irq_sim: remove unused field from struct irq_sim_irq_ctx
> genirq/irq_sim: order headers alphabetically
> genirq/irq_sim: shrink code by using cleanup helpers
>
> include/linux/bitmap.h | 3 +++
> kernel/irq/irq_sim.c | 30 ++++++++++++------------------
> 2 files changed, 15 insertions(+), 18 deletions(-)
>
> --
> 2.39.2
>
Hi!
Gentle ping for any comments on this series.
Bart
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-10-09 12:51 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-20 7:54 [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
2023-09-20 7:54 ` [PATCH v2 1/4] bitmap: define a cleanup function for bitmaps Bartosz Golaszewski
2023-09-20 13:50 ` Andy Shevchenko
2023-09-22 8:55 ` Bartosz Golaszewski
2023-09-20 17:14 ` Yury Norov
2023-09-20 7:54 ` [PATCH v2 2/4] genirq/irq_sim: remove unused field from struct irq_sim_irq_ctx Bartosz Golaszewski
2023-09-20 7:54 ` [PATCH v2 3/4] genirq/irq_sim: order headers alphabetically Bartosz Golaszewski
2023-09-20 7:55 ` [PATCH v2 4/4] genirq/irq_sim: shrink code by using cleanup helpers Bartosz Golaszewski
2023-10-09 12:51 ` [PATCH v2 0/4] genirq/irq_sim: misc updates Bartosz Golaszewski
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.