Hello Oleg, On Mon, 11 Jul 2005, Oleg Nesterov wrote:
> Zwane Mwaikambo wrote: > > > > --- linux-2.6.13-rc1-mm1/arch/i386/kernel/entry.S 3 Jul 2005 13:20:43 > > -0000 1.1.1.1 > > +++ linux-2.6.13-rc1-mm1/arch/i386/kernel/entry.S 10 Jul 2005 22:33:37 > > -0000 > > - > > +/* Build the IRQ entry stubs */ > > vector=0 > > -ENTRY(irq_entries_start) > > + .align IRQ_STUB_SIZE,0x90 > > +ENTRY(interrupt) > > .rept NR_IRQS > > ALIGN > > -1: pushl $vector-256 > > + pushl $vector > > jmp common_interrupt > > > > [...snip...] > > > > --- linux-2.6.13-rc1-mm1/arch/i386/kernel/irq.c 3 Jul 2005 13:20:43 > > -0000 1.1.1.1 > > +++ linux-2.6.13-rc1-mm1/arch/i386/kernel/irq.c 4 Jul 2005 21:39:56 > > -0000 > > @@ -53,8 +53,7 @@ static union irq_ctx *softirq_ctx[NR_CPU > > */ > > fastcall unsigned int do_IRQ(struct pt_regs *regs) > > { > > - /* high bits used in ret_from_ code */ > > - int irq = regs->orig_eax & 0xff; > > + int irq = regs->orig_eax; > > Could you explain this change? I think it breaks do_signal/handle_signal, > they check orig_eax >= 0 to handle -ERESTARTSYS: > > /* Are we from a system call? */ > if (regs->orig_eax >= 0) { > /* If so, check system call restarting.. */ > switch (regs->eax) { > case -ERESTART_RESTARTBLOCK: > case -ERESTARTNOHAND: The change is so that we can send IRQs higher than 256 to do_IRQ. That looks like it tries to check if we came in via system_call since we'd save the system call number as orig_eax. Now that i think about it, doesn't that path always get taken when we interrupt userspace and have pending signals on return from interrupt? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/