Port-amd64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: MSI/MSI-X implementation and interrupt handling on i386/amd64
On December 12, 2018 4:29:39 AM GMT+05:30, Joerg Sonnenberger <joerg%bec.de@localhost> wrote:
>On Tue, Dec 11, 2018 at 11:41:35PM +0100, Jaromír Doleček wrote:
>> Moving this to port-amd64 (bcced current-users@ for reference)
>>
>> Le mar. 11 déc. 2018 à 04:34, Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost> a
>écrit :
>> > I mention some old Athlon 64 series (before socket AM2) do not
>support
>> > cmpxchg16b instruction. That would affect rewriting spllower to
>support
>> > 64 bit interrupt bitmask.
>>
>> Indeed, need to do runtime check for cmpxchg16b support.
>>
>> I'm investigating an initial solution which will keep the
>> ipending+ilevel still as 64-bit quantity suitable for cmpxchg8b,
>using
>> 4 bits for the ilevel and remaining 60 for ipending.
>>
>> The 60/4 split with cmpxchg8b should work for i386 too. Besides
>> spl.S/vector.S, so far I only found one place using atomic write on
>> the ipending - clearing interrupt from ipending in intr disestablish.
>> This one can easily change to just block all interrupts during the
>> clearing, since this is not performance critical path.
>
>The alternative would be to not store a mask of sources, but the max
>IPL
>level.
>
>Joerg
The mask is stored to facilitate quick calculation of if a handler can run at a given IPL (calculated in intr.c) .
I haven't thought of the race issues if this is moved to something else.
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
Home |
Main Index |
Thread Index |
Old Index