commit-hurd
[Top][All Lists]
Advanced

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

[SCM] GNU Mach branch, master, updated. v1.8-783-g60c53f56


From: Samuel Thibault
Subject: [SCM] GNU Mach branch, master, updated. v1.8-783-g60c53f56
Date: Tue, 3 Oct 2023 14:24:22 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Mach".

The branch, master has been updated
       via  60c53f565454a6afd8f0b80d36d791d50653751d (commit)
      from  34623c520c66df73663a6e02a05551e7330b9e5e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 60c53f565454a6afd8f0b80d36d791d50653751d
Author: Damien Zammit <damien@zamaudio.com>
Date:   Mon Oct 2 03:39:13 2023 +0000

    Fix interrupt handling
    
    Logic for interrupts:
    
    - interrupt.S raises spl (thus IF cleared)
    - interrupt.S EOI
    - interrupt.S calls the handler
       - for pure in-kernel handlers, they do whatever they want with IF
         cleared.
       - when a userland handler is registers, queue_intr masks the irq.
    - interrupt.S lowers spl with splx_cli, thus IF still cleared
    - iret, that sets IF
    
    - later on, userland acks the IRQ, that unmasks the irq
    
    The key to this change is that all interrupts, including IPIs, are
    treated the same way. Eg. the spl level is now raised before an IPI and
    restored after. Also, EOI is not needed inside irq_acknowledge.
    
    With this change and the experimental change not to dispatch threads
    direct to idle processors in the scheduler, I no longer observe kernel
    faults, but an occasional hang does occur.
    
    Message-Id: <20231002033906.124427-1-damien@zamaudio.com>

-----------------------------------------------------------------------

Summary of changes:
 device/intr.c           | 16 ++++++++++++++--
 i386/i386at/interrupt.S | 28 +++++++++++++---------------
 x86_64/interrupt.S      | 28 +++++++++++++---------------
 3 files changed, 40 insertions(+), 32 deletions(-)


hooks/post-receive
-- 
GNU Mach



reply via email to

[Prev in Thread] Current Thread [Next in Thread]