home *** CD-ROM | disk | FTP | other *** search
- ddl@das.harvard.edu (Dan Lanciani) writes:
- > Do you have a little demo program I can rty on machines?
-
- Unfortunately, no I don't. Producing the bug took a lot of effort
- including 1 machine (a router) with two interfaces and two other
- machines pinging each other through the first. To generate enough
- traffic, the first machine had a packet exploder which generated 50
- packets for every one going through it.
-
- I certainly believe that it should be possible to write a much simpler
- program to generate the bug, but I definitely don't have time to try
- it... I guess what I would do is write a program that would:
-
- 1. Initialize a "reentered" variable to zero.
- 2. Cause some device to generate an interrupt.
- 3. Have the interrupt handler check the "reentered" variable. If it
- is equal to zero, continue to 4. Else, goto 8.
- 4. Reset the interrupt at the device.
- 5. Cause the device to generate another interrupt. 4 and 5 must be
- done in this order to get the interrupt controller's edge
- trigger latch to be set.
- 6. Reenable processor interrupts. Do NOT reenabled interrupt
- controller interrupts. I.e. do NOT send an EOI.
- 7. Wait in a infinite loop. Higher priority (i.e. timer) interrupts
- should be able to occur but interrupts from this device should not.
- 8. Print "bad interrupt controller". If you got here then a timer
- interrupt fired and managed to reenable your device interrupts
- by doing a Non Specific EOI to a broken interrupt controller.
-
- Drew
-
-
-
-