RE: Two questions about iosapic code

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

 



>From: Kenji Kaneshige [mailto:kaneshige.kenji@xxxxxxxxxxxxxx]
>Sent: 2006年4月14日 12:38
>Hi Kevin,
>
>> If two RTEs are from two different IOSAPIC, above code is
>> meaningful to send two EOI to both IOSAPIC. However if two
>> RTEs are in same IOSAPIC, then EOI are sent to same IOSAPIC
>> twice. Will the 2nd EOI trigger duplicated notifications to CPU if
>> some device has assertion on that irq line once after 1st EOI?
>>
>
>I think it will, though I guess the 1st notification and 2nd
>notification might be handled as one interrupt, if 2nd notification
>was sent before reading IVR for 1st notification. On the other hand,
>2nd interrupt would be handled like spurious interrupt, when 1st one
>and 2nd one were handled separately. Anyway, 2nd EOI looks needless
>and I think it should be fixed.

Ah yes, normally it's harmless since CR.EOI is written after sending
IOSAPIC.EOI which ensures two consequent notifications as one 
pending to processor.

>
>
>> - iosapic_reassign_vector:
>> 	It's only called by iosapic_register_platform_intr for PMI by
>> far.
>> When designated vector is already occupied, the rte list of that
>> vector will be copied to a new vector. However there's no updates
>> to physical RTEs within IOSAPIC to reflect this change.
>
>IIRC, vectors for PMI are 0 to 15 and any other external interrupts
>don't use those vectors. So this code path is executed only if
>multiple PMIs use the same vector number. Vector numbers for PMIs
>are assigned by firmware, so OS cannot re-assign other vector. I
>guess this is why there's no updates to physical RTES. But, I don't
>know why we need iosapic_reassing_vector()...

OK, I see. The name here is a bit misleading... :-)

Thanks a lot,
Kevin
-
: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Sparc Linux]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux x86_64]     [Linux for Ham Radio]

  Powered by Linux