Damien Zammit, le sam. 12 juil. 2025 12:34:44 +0000, a ecrit:
> This code may be needed in the future, so add it in now
> but keep it disabled.  The special EOI handling for
> interrupts may only need to be done for one kind of trigger mode.

Applied, thanks!

> ---
>  i386/i386at/ioapic.c | 19 ++++++++++++++++---
>  1 file changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/i386/i386at/ioapic.c b/i386/i386at/ioapic.c
> index d0724f76..85359664 100644
> --- a/i386/i386at/ioapic.c
> +++ b/i386/i386at/ioapic.c
> @@ -290,6 +290,17 @@ ioapic_toggle(int pin, int mask)
>      ioapic_toggle_entry(apic, pin, mask);
>  }
>  
> +#if 0
> +static int
> +lapic_tmr_bit(uint8_t vec)
> +{
> +    int i;
> +
> +    i = (vec & ~0x1f) >> 5;
> +    return lapic->tmr[i].r & (1 << (vec & 0x1f));
> +}
> +#endif
> +
>  void
>  ioapic_irq_eoi(int pin)
>  {
> @@ -301,11 +312,14 @@ ioapic_irq_eoi(int pin)
>  
>      spl_t s = simple_lock_irq(&ioapic_lock);
>  
> +    /* Read entry to find vector */
> +    ioapic_read_entry(apic, pin, &entry.both);
> +
>      if (!has_irq_specific_eoi) {
> +      // XXX Linux conditions on TMR bit: if 
> (!lapic_tmr_bit(entry.both.vector)) {
>          /* Workaround for old IOAPICs with no specific EOI */
>  
>          /* Mask the pin and change to edge triggered */
> -        ioapic_read_entry(apic, pin, &entry.both);
>          oldentry = entry;
>          entry.both.mask = IOAPIC_MASK_DISABLED;
>          entry.both.trigger = IOAPIC_EDGE_TRIGGERED;
> @@ -313,10 +327,9 @@ ioapic_irq_eoi(int pin)
>  
>          /* Restore level entry */
>          ioapic_write_entry(apic, pin, oldentry.both);
> +      //}
>      } else {
>          volatile ApicIoUnit *ioapic = apic_get_ioapic(apic)->ioapic;
> -
> -        ioapic_read_entry(apic, pin, &entry.both);
>          ioapic->eoi.r = entry.both.vector;
>      }
>  
> -- 
> 2.45.2
> 
> 
> 

-- 
Samuel
"...very few phenomena can pull someone out of Deep Hack Mode, with two
noted exceptions: being struck by lightning, or worse, your *computer*
being struck by lightning."
(By Matt Welsh)

Reply via email to