Re: unconsistency of state of irq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> IRQ_DISABLED   is used by internal code to indicate the status information.

Is there a situation in which PIC or APIC is not masked while the
IRQ_DISABLED is set?

2010/8/16 Pei Lin <telent997@xxxxxxxxx>:
> 2010/8/15 Parmenides <mobile.parmenides@xxxxxxxxx>:
>> Hi,
>>
>>   For each irq descriptor, there is a state bit IRQ_DISABLED
>> indicating whether corresponding IRQ is masked. But, when checking the
>> source code, I find that the function mask_and_ack_8259A(), which is
>> responsible for acknowledge the PIC and mask corresponding bit in it,
>> doesn't affect  IRQ_DISABLED bit at all. Its code is as follows:
>>
>> handle_real_irq:
>>        if (irq & 8) {
>>                inb(PIC_SLAVE_IMR);     /* DUMMY - (do we need this?) */
>>                outb(cached_slave_mask, PIC_SLAVE_IMR);
>>                outb(0x60+(irq&7),PIC_SLAVE_CMD);/* 'Specific EOI' to slave */
>>                outb(0x60+PIC_CASCADE_IR,PIC_MASTER_CMD); /* 'Specific
>> EOI' to master-IRQ2 */
>>        } else {
>>                inb(PIC_MASTER_IMR);    /* DUMMY - (do we need this?) */
>>                outb(cached_master_mask, PIC_MASTER_IMR);
>>                outb(0x60+irq,PIC_MASTER_CMD);  /* 'Specific EOI to master */
>>        }
>>
>> While for IO APIC, there is no change of IRQ_DISABLED bit yet.
>>
>>        move_irq(irq);
>>        if ((irq_desc[irq].status & (IRQ_PENDING | IRQ_DISABLED))
>>                                        == (IRQ_PENDING | IRQ_DISABLED))
>>                mask_IO_APIC_irq(irq);
>>        ack_APIC_irq();
>>
>> So, is there unconsistency between kernel data and the state of PIC?
>>
> /* Internal flags */
>  53#define IRQ_INPROGRESS          0x00000100      /* IRQ handler
> active - do not enter! */
>  54#define IRQ_DISABLED            0x00000200      /* IRQ disabled -
> do not enter! */
> IRQ_DISABLED   is used by internal code to indicate the status information.
> The logic code is described in
> http://lxr.linux.no/linux+v2.6.35/kernel/irq/handle.c.
> The code you displayed is for programming the PIC 8259A. pls.
> reference the datasheet provided by intel.
>
>> --
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>
>
>
> --
> Best Regards
> Lin
>

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux