Re: [2.4.17/18pre] VM and swap - it's really unusable

Russell King
2002-01-13T19:07:07Z

On Sun, Jan 13, 2002 at 01:24:20PM -0500, Robert Love wrote:
> On Sun, 2002-01-13 at 06:39, Russell King wrote:
> > On Sat, Jan 12, 2002 at 10:10:55PM -0500, Robert Love wrote:
> > > It can if we increment the preempt_count in disable_irq_nosync and
> > > decrement it on enable_irq.
> >
> > Who says you're going to be enabling IRQs any time soon? AFAIK, there is
> > nothing that requires enable_irq to be called after disable_irq_nosync.
> >
> > In fact, you could well have the following in a driver:
> >
> > /* initial shutdown of device */
> >
> > disable_irq_nosync(i); /* or disable_irq(i); */
> >
> > /* other shutdown stuff */
> >
> > free_irq(i, private);
> >
> > and you would have to audit all drivers to find out if they did this -
> > this would seriously damage your preempt_count.
>
> I wasn't thinking. Anytime we are in an interrupt handler, preemption
> is disabled. Regardless of how (or even if) interrupts are disabled.
> We bump preempt_count on the entry path. So, no problem.

Err. This isn't *inside* an interrupt handler. This could well be in
the driver shutdown code (eg, when fops->release is called).

--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux