linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Linus Walleij <linus.walleij@linaro.org>,
	Jonathan Cameron <jic23@kernel.org>,
	Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jason Cooper <jason@lakedaemon.net>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-iio@vger.kernel.org,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>
Subject: [PATCH v2 0/6] irq/irq_sim: try to improve the API
Date: Tue, 11 Feb 2020 14:12:34 +0100	[thread overview]
Message-ID: <20200211131240.15853-1-brgl@bgdev.pl> (raw)

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

This is my second take at improving the interrupt simulator interface.
I marked it as v2 but it actually takes a completely different approach.

The interrupt simulator API exposes a lot of custom data structures and
functions and doesn't reuse the interfaces already exposed by the irq
subsystem. This series tries to address it.

First, we make irq_domain_reset_irq_data() available to non-V2 domain API
users - that'll be used in the subsequent patch. Next we overhaul the
public interfaces - we hide all specific data structures and instead
rely on the irq_domain struct and virtual interrupt numberspace.

Next four patches simplify the interface even more, but since the change
may be a bit more controversial due to modification of the irq_domain
I decided to split them out of the second patch.

In patch 3/6 we're adding a new callback to irq_domain_ops that is called
right before all the other code in irq_domain_remove(). Next we use it to
remove the simulator-specific cleanup function from irq_sim.h - users now
can simply use the regular irq_domain_remove().

Last two patches show that the new callback isn't limited to the interrupt
simulator and can be used to shrink code in real driver too. We introduce
a new helper for a common use case of disposing of all mappings before
removing the irq_domain and use it in the keystone irqchip driver.

The end effect is that we limit the interrupt simulator API to two
functions (plus one device managed variant) and zero new structures.

v1: https://lkml.org/lkml/2019/8/12/558

v1 -> v2:
- instead of just making the new data structures opaque for users, remove
  them entirely in favor of irq_domain
- call irq_set_handler() & irq_domain_reset_irq_data() when unmapping
  the simulated interrupt
- fix a memory leak in error path
- make it possible to use irq_find_matching_fwnode() with the simulator
  domain
- correctly use irq_create_mapping() and irq_find_mapping(): only use the
  former at init-time and the latter at interrupt-time

Bartosz Golaszewski (6):
  irq: make irq_domain_reset_irq_data() available even for non-V2 users
  irq/irq_sim: simplify the API
  irq/domain: add a new callback to domain ops
  irq/irq_sim: remove irq_domain_remove_sim()
  irq/domain: provide irq_domain_dispose_mappings() helper
  irqchip: keystone: use irq_domain_dispose_mappings()

 drivers/gpio/gpio-mockup.c          |  47 ++++--
 drivers/iio/dummy/iio_dummy_evgen.c |  32 ++--
 drivers/irqchip/irq-keystone.c      |   5 +-
 include/linux/irq_sim.h             |  33 ++--
 include/linux/irqdomain.h           |   9 +-
 kernel/irq/Kconfig                  |   1 +
 kernel/irq/irq_sim.c                | 225 ++++++++++++++++------------
 kernel/irq/irqdomain.c              |  44 ++++--
 8 files changed, 238 insertions(+), 158 deletions(-)

-- 
2.25.0


             reply	other threads:[~2020-02-11 13:13 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-11 13:12 Bartosz Golaszewski [this message]
2020-02-11 13:12 ` [PATCH v2 1/6] irq: make irq_domain_reset_irq_data() available even for non-V2 users Bartosz Golaszewski
2020-02-14  9:02   ` Thomas Gleixner
2020-02-14  9:31     ` Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 2/6] irq/irq_sim: simplify the API Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 3/6] irq/domain: add a new callback to domain ops Bartosz Golaszewski
2020-03-08 13:51   ` Marc Zyngier
2020-03-08 17:59     ` Bartosz Golaszewski
2020-03-12  8:15       ` Bartosz Golaszewski
2020-03-20  9:38         ` Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 4/6] irq/irq_sim: remove irq_domain_remove_sim() Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 5/6] irq/domain: provide irq_domain_dispose_mappings() helper Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 6/6] irqchip: keystone: use irq_domain_dispose_mappings() Bartosz Golaszewski
2020-03-03  7:57 ` [PATCH v2 0/6] irq/irq_sim: try to improve the API Bartosz Golaszewski
2020-04-13 17:07   ` Jonathan Cameron
2020-04-14  8:37     ` Bartosz Golaszewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200211131240.15853-1-brgl@bgdev.pl \
    --to=brgl@bgdev.pl \
    --cc=bgolaszewski@baylibre.com \
    --cc=jason@lakedaemon.net \
    --cc=jic23@kernel.org \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=pmeerw@pmeerw.net \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).