* [PATCH 1/4] um: Implement um_free_irq()
@ 2012-04-17 20:37 Richard Weinberger
2012-04-17 20:37 ` [PATCH 2/4] um: Remove usage of irq_chip->release() Richard Weinberger
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Richard Weinberger @ 2012-04-17 20:37 UTC (permalink / raw)
To: user-mode-linux-devel; +Cc: linux-kernel, tglx, Richard Weinberger
Instead of using chip->release() we can achieve the same
using a simple wrapper for free_irq().
We have already um_request_irq(), so um_free_irq() is the perfect
counterpart.
Signed-off-by: Richard Weinberger <richard@nod.at>
---
arch/um/drivers/chan_kern.c | 9 +++++----
arch/um/drivers/line.c | 2 +-
arch/um/drivers/net_kern.c | 4 ++--
arch/um/drivers/port_kern.c | 2 +-
arch/um/drivers/xterm_kern.c | 2 +-
arch/um/include/shared/irq_kern.h | 2 +-
arch/um/kernel/irq.c | 7 +++++++
7 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/arch/um/drivers/chan_kern.c b/arch/um/drivers/chan_kern.c
index ca4c7eb..45e248c 100644
--- a/arch/um/drivers/chan_kern.c
+++ b/arch/um/drivers/chan_kern.c
@@ -8,6 +8,7 @@
#include <linux/tty_flip.h>
#include "chan.h"
#include "os.h"
+#include "irq_kern.h"
#ifdef CONFIG_NOCONFIG_CHAN
static void *not_configged_init(char *str, int device,
@@ -213,9 +214,9 @@ void free_irqs(void)
chan = list_entry(ele, struct chan, free_list);
if (chan->input && chan->enabled)
- free_irq(chan->line->driver->read_irq, chan);
+ um_free_irq(chan->line->driver->read_irq, chan);
if (chan->output && chan->enabled)
- free_irq(chan->line->driver->write_irq, chan);
+ um_free_irq(chan->line->driver->write_irq, chan);
chan->enabled = 0;
}
}
@@ -234,9 +235,9 @@ static void close_one_chan(struct chan *chan, int delay_free_irq)
}
else {
if (chan->input && chan->enabled)
- free_irq(chan->line->driver->read_irq, chan);
+ um_free_irq(chan->line->driver->read_irq, chan);
if (chan->output && chan->enabled)
- free_irq(chan->line->driver->write_irq, chan);
+ um_free_irq(chan->line->driver->write_irq, chan);
chan->enabled = 0;
}
if (chan->ops->close != NULL)
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 4ab0d9c..acfd0e0 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -699,7 +699,7 @@ struct winch {
static void __free_winch(struct work_struct *work)
{
struct winch *winch = container_of(work, struct winch, work);
- free_irq(WINCH_IRQ, winch);
+ um_free_irq(WINCH_IRQ, winch);
if (winch->pid != -1)
os_kill_process(winch->pid, 1);
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index 95f4416..0d60c56 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -195,7 +195,7 @@ static int uml_net_close(struct net_device *dev)
netif_stop_queue(dev);
- free_irq(dev->irq, dev);
+ um_free_irq(dev->irq, dev);
if (lp->close != NULL)
(*lp->close)(lp->fd, &lp->user);
lp->fd = -1;
@@ -835,7 +835,7 @@ static void close_devices(void)
spin_lock(&opened_lock);
list_for_each(ele, &opened) {
lp = list_entry(ele, struct uml_net_private, list);
- free_irq(lp->dev->irq, lp->dev);
+ um_free_irq(lp->dev->irq, lp->dev);
if ((lp->close != NULL) && (lp->fd >= 0))
(*lp->close)(lp->fd, &lp->user);
if (lp->remove != NULL)
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c
index e31680e..11866ff 100644
--- a/arch/um/drivers/port_kern.c
+++ b/arch/um/drivers/port_kern.c
@@ -254,7 +254,7 @@ int port_wait(void *data)
* connection. Then we loop here throwing out failed
* connections until a good one is found.
*/
- free_irq(TELNETD_IRQ, conn);
+ um_free_irq(TELNETD_IRQ, conn);
if (conn->fd >= 0)
break;
diff --git a/arch/um/drivers/xterm_kern.c b/arch/um/drivers/xterm_kern.c
index 8bd130f..b68bbe2 100644
--- a/arch/um/drivers/xterm_kern.c
+++ b/arch/um/drivers/xterm_kern.c
@@ -65,7 +65,7 @@ int xterm_fd(int socket, int *pid_out)
* isn't set) this will hang... */
wait_for_completion(&data->ready);
- free_irq(XTERM_IRQ, data);
+ um_free_irq(XTERM_IRQ, data);
ret = data->new_fd;
*pid_out = data->pid;
diff --git a/arch/um/include/shared/irq_kern.h b/arch/um/include/shared/irq_kern.h
index b05d22f..7a5bfa6 100644
--- a/arch/um/include/shared/irq_kern.h
+++ b/arch/um/include/shared/irq_kern.h
@@ -13,6 +13,6 @@ extern int um_request_irq(unsigned int irq, int fd, int type,
irq_handler_t handler,
unsigned long irqflags, const char * devname,
void *dev_id);
-
+void um_free_irq(unsigned int irq, void *dev);
#endif
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index 71b8c94..47a09ee 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -297,6 +297,13 @@ unsigned int do_IRQ(int irq, struct uml_pt_regs *regs)
return 1;
}
+void um_free_irq(unsigned int irq, void *dev)
+{
+ free_irq_by_irq_and_dev(irq, dev);
+ free_irq(irq, dev);
+}
+EXPORT_SYMBOL(um_free_irq);
+
int um_request_irq(unsigned int irq, int fd, int type,
irq_handler_t handler,
unsigned long irqflags, const char * devname,
--
1.7.7.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/4] um: Remove usage of irq_chip->release()
2012-04-17 20:37 [PATCH 1/4] um: Implement um_free_irq() Richard Weinberger
@ 2012-04-17 20:37 ` Richard Weinberger
2012-04-17 20:37 ` [PATCH 3/4] um: Remove CONFIG_IRQ_RELEASE_METHOD Richard Weinberger
2012-04-17 20:37 ` [PATCH 4/4] irq: Remove irq_chip->release() Richard Weinberger
2 siblings, 0 replies; 7+ messages in thread
From: Richard Weinberger @ 2012-04-17 20:37 UTC (permalink / raw)
To: user-mode-linux-devel; +Cc: linux-kernel, tglx, Richard Weinberger
UML does no longer need irq_chip->release().
Signed-off-by: Richard Weinberger <richard@nod.at>
---
arch/um/kernel/irq.c | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index 47a09ee..00506c3 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -334,7 +334,6 @@ static void dummy(struct irq_data *d)
/* This is used for everything else than the timer. */
static struct irq_chip normal_irq_type = {
.name = "SIGIO",
- .release = free_irq_by_irq_and_dev,
.irq_disable = dummy,
.irq_enable = dummy,
.irq_ack = dummy,
@@ -342,7 +341,6 @@ static struct irq_chip normal_irq_type = {
static struct irq_chip SIGVTALRM_irq_type = {
.name = "SIGVTALRM",
- .release = free_irq_by_irq_and_dev,
.irq_disable = dummy,
.irq_enable = dummy,
.irq_ack = dummy,
--
1.7.7.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/4] um: Remove CONFIG_IRQ_RELEASE_METHOD
2012-04-17 20:37 [PATCH 1/4] um: Implement um_free_irq() Richard Weinberger
2012-04-17 20:37 ` [PATCH 2/4] um: Remove usage of irq_chip->release() Richard Weinberger
@ 2012-04-17 20:37 ` Richard Weinberger
2012-04-17 20:37 ` [PATCH 4/4] irq: Remove irq_chip->release() Richard Weinberger
2 siblings, 0 replies; 7+ messages in thread
From: Richard Weinberger @ 2012-04-17 20:37 UTC (permalink / raw)
To: user-mode-linux-devel; +Cc: linux-kernel, tglx, Richard Weinberger
UML does no longer need CONFIG_IRQ_RELEASE_METHOD.
Signed-off-by: Richard Weinberger <richard@nod.at>
---
arch/um/Kconfig.common | 5 -----
arch/um/defconfig | 1 -
2 files changed, 0 insertions(+), 6 deletions(-)
diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common
index 20a49ba..43ef890 100644
--- a/arch/um/Kconfig.common
+++ b/arch/um/Kconfig.common
@@ -56,11 +56,6 @@ config GENERIC_CLOCKEVENTS
bool
default y
-# Used in kernel/irq/manage.c and include/linux/irq.h
-config IRQ_RELEASE_METHOD
- bool
- default y
-
config HZ
int
default 100
diff --git a/arch/um/defconfig b/arch/um/defconfig
index fdc97e2..7823ab1 100644
--- a/arch/um/defconfig
+++ b/arch/um/defconfig
@@ -12,7 +12,6 @@ CONFIG_LOCKDEP_SUPPORT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_IRQ_RELEASE_METHOD=y
CONFIG_HZ=100
#
--
1.7.7.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/4] irq: Remove irq_chip->release()
2012-04-17 20:37 [PATCH 1/4] um: Implement um_free_irq() Richard Weinberger
2012-04-17 20:37 ` [PATCH 2/4] um: Remove usage of irq_chip->release() Richard Weinberger
2012-04-17 20:37 ` [PATCH 3/4] um: Remove CONFIG_IRQ_RELEASE_METHOD Richard Weinberger
@ 2012-04-17 20:37 ` Richard Weinberger
2012-04-17 20:43 ` Thomas Gleixner
2012-04-18 7:46 ` [uml-devel] " Geert Uytterhoeven
2 siblings, 2 replies; 7+ messages in thread
From: Richard Weinberger @ 2012-04-17 20:37 UTC (permalink / raw)
To: user-mode-linux-devel; +Cc: linux-kernel, tglx, Richard Weinberger
As it's only user (UML) does no longer need it we can get
rid of it.
Signed-off-by: Richard Weinberger <richard@nod.at>
---
include/linux/irq.h | 5 -----
kernel/irq/manage.c | 6 ------
2 files changed, 0 insertions(+), 11 deletions(-)
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 7810406..76c5eb4 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -328,11 +328,6 @@ struct irq_chip {
void (*irq_print_chip)(struct irq_data *data, struct seq_file *p);
unsigned long flags;
-
- /* Currently used only by UML, might disappear one day.*/
-#ifdef CONFIG_IRQ_RELEASE_METHOD
- void (*release)(unsigned int irq, void *dev_id);
-#endif
};
/*
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 89a3ea8..9b7f68a 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -1204,12 +1204,6 @@ static struct irqaction *__free_irq(unsigned int irq, void *dev_id)
/* Found it - now remove it from the list of entries: */
*action_ptr = action->next;
- /* Currently used only by UML, might disappear one day: */
-#ifdef CONFIG_IRQ_RELEASE_METHOD
- if (desc->irq_data.chip->release)
- desc->irq_data.chip->release(irq, dev_id);
-#endif
-
/* If this was the last handler, shut down the IRQ line: */
if (!desc->action)
irq_shutdown(desc);
--
1.7.7.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 4/4] irq: Remove irq_chip->release()
2012-04-17 20:37 ` [PATCH 4/4] irq: Remove irq_chip->release() Richard Weinberger
@ 2012-04-17 20:43 ` Thomas Gleixner
2012-04-18 7:46 ` [uml-devel] " Geert Uytterhoeven
1 sibling, 0 replies; 7+ messages in thread
From: Thomas Gleixner @ 2012-04-17 20:43 UTC (permalink / raw)
To: Richard Weinberger; +Cc: user-mode-linux-devel, linux-kernel
On Tue, 17 Apr 2012, Richard Weinberger wrote:
> As it's only user (UML) does no longer need it we can get
> rid of it.
>
> Signed-off-by: Richard Weinberger <richard@nod.at>
Nice work!
Please add my Reviewed-by to the series.
Thanks,
tglx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [uml-devel] [PATCH 4/4] irq: Remove irq_chip->release()
2012-04-17 20:37 ` [PATCH 4/4] irq: Remove irq_chip->release() Richard Weinberger
2012-04-17 20:43 ` Thomas Gleixner
@ 2012-04-18 7:46 ` Geert Uytterhoeven
2012-04-18 8:22 ` Richard Weinberger
1 sibling, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2012-04-18 7:46 UTC (permalink / raw)
To: Richard Weinberger; +Cc: user-mode-linux-devel, tglx, linux-kernel
On Tue, Apr 17, 2012 at 22:37, Richard Weinberger <richard@nod.at> wrote:
> As it's only user (UML) does no longer need it we can get
> rid of it.
But now all drivers have to call um_free_irq() instead of free_irq()?
Are there any generic drivers not specific to UML we do want to use on UML?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [uml-devel] [PATCH 4/4] irq: Remove irq_chip->release()
2012-04-18 7:46 ` [uml-devel] " Geert Uytterhoeven
@ 2012-04-18 8:22 ` Richard Weinberger
0 siblings, 0 replies; 7+ messages in thread
From: Richard Weinberger @ 2012-04-18 8:22 UTC (permalink / raw)
To: Geert Uytterhoeven; +Cc: user-mode-linux-devel, tglx, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 580 bytes --]
Am 18.04.2012 09:46, schrieb Geert Uytterhoeven:
> On Tue, Apr 17, 2012 at 22:37, Richard Weinberger <richard@nod.at> wrote:
>> As it's only user (UML) does no longer need it we can get
>> rid of it.
>
> But now all drivers have to call um_free_irq() instead of free_irq()?
No. They can still use free_irq().
Only drivers on top of SIGIO and SIGVTALRAM irq chips have to use um_free_irq().
But ATAIK all drivers on UML use SIGIO, SIGVTALRAM.
> Are there any generic drivers not specific to UML we do want to use on UML?
I don't think so.
Thanks,
//richard
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-04-18 8:22 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-17 20:37 [PATCH 1/4] um: Implement um_free_irq() Richard Weinberger
2012-04-17 20:37 ` [PATCH 2/4] um: Remove usage of irq_chip->release() Richard Weinberger
2012-04-17 20:37 ` [PATCH 3/4] um: Remove CONFIG_IRQ_RELEASE_METHOD Richard Weinberger
2012-04-17 20:37 ` [PATCH 4/4] irq: Remove irq_chip->release() Richard Weinberger
2012-04-17 20:43 ` Thomas Gleixner
2012-04-18 7:46 ` [uml-devel] " Geert Uytterhoeven
2012-04-18 8:22 ` Richard Weinberger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox