Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Oct 2006 20:42:26 +0530
From:      "Girish Motwani" <girish.motwani@gmail.com>
To:        freebsd-smp@freebsd.org
Subject:   Interrupt Handling with Multiple CPUs
Message-ID:  <2779e6080610030812t7aed1eedua3e89d81baedafa5@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,
       I was looking through the FreeBSD 6.1 release code and had the
following questions related to interrupt handling:

1. How are the interrupts distributed to multiple CPUs in an SMP system ? On
i386, from the code it appears that that IRQs are tied to CPUs using a round
robin mechanism whereby a particular interrupt (for eg UART) would always be
serviced on a particular CPU. Is the same model followed on other
architectures ?

2. Is there support for directing the interrupt to any CPU based on the
current load on each CPU ? or round robin the interrupts across CPUs ?
    If yes, then what happens in the following scenario:
    A interrupt arrives and the handler needs to sleep since it needs a
sleep mutex which is owned by some other thread. So it uses the ithread for
that interrupt source to provide the context for sleeping. At this time,
another interrupt of the same type arrives.

Thanks in advance,
girish



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2779e6080610030812t7aed1eedua3e89d81baedafa5>