Re: [PATCH][RFC] irq handling code consolidation (common part)

Andrey Panin (pazke@donpac.ru)
Fri, 27 Jun 2003 08:33:20 +0400


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-27285-1056688481-0001-2
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 177, 06 26, 2003 at 12:13:18PM +0100, Christoph Hellwig wrote:
> > +#ifndef HAVE_ARCH_IRQ_DESC
> > +
> > +/*
> > + * Controller mappings for all interrupt sources:
> > + */
> > +irq_desc_t irq_desc[NR_IRQS] __cacheline_aligned =3D {
> > + [0 ... NR_IRQS - 1] =3D {
> > + .handler =3D &no_irq_type,
> > + .lock =3D SPIN_LOCK_UNLOCKED,
> > + }
> > +};
> > +
> > +#endif
>=20
> What about getting rid of that ifdef and having irq_desc always
> in arch code? Seems a lot cleaner to me.

So it will be duplicated in allmost every architecture ?

> > +#if defined(CONFIG_SMP) && !defined(HAVE_ARCH_SYNCRONIZE_IRQ)
> > +
> > +inline void synchronize_irq(unsigned int irq)
> > +{
> > + irq_desc_t *desc =3D irq_desc(irq);
> > +
> > + /* is there anything to synchronize with? */
> > + if (!desc->action)
> > + return;
> > +
> > + while (desc->status & IRQ_INPROGRESS)
> > + cpu_relax();
> > +}
> > +
> > +#endif
>=20
> Hmm, what arch can't use the generic version and why? I really
> don't like the HAVE_ARCH_ macros if there's a way around it.

This function implemented differently in allmost every architecture.
I beleive that most of them can use generic version, but I'm still not sure.
v850 and mips define synchronize_irq() as barrier() for example.
=20
> > +#ifndef HAVE_ARCH_IRQ_PROC
> > +void register_irq_proc(unsigned int irq);
> > +#endif
>=20
> Again, what arch can't use the generic code?

IIRC v850 architecture doesn't need it at all.
=20
> > +#ifndef HAVE_ARCH_IRQ_PROBE
> > +
> > +/*
> > + * IRQ autodetection code..
> > + *
> > + * This depends on the fact that any interrupt that
> > + * comes in on to an unassigned handler will get stuck
> > + * with "IRQ_WAITING" cleared and the interrupt
> > + * disabled.
> > + */
>=20
> Which architecture uses it's own version here? Also we might
> move this to a separate file as it doesn't make a lot of sense
> without CONFIG_ISA

Some architectures provide empty stubs for these functions.
I'm not sure about CONFIG_ISA, IMHO any legacy device driver
can use irq autoprobing.

> Otherwise it looks fine (of course)! Let's hope we'll get some variant
> of it in before 2.6.

--=20
Andrey Panin | Linux and UNIX system administrator
pazke@donpac.ru | PGP key: wwwkeys.pgp.net

--=_courier-27285-1056688481-0001-2
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQE++8kQby9O0+A2ZecRAhjyAKC9x4plN7vuz5SkcrchutHt/HiIXQCgzN0L
FUdajYjllxsSNAh8c9/TLRc=
=56DJ
-----END PGP SIGNATURE-----

--=_courier-27285-1056688481-0001-2--