1. 11 Jun, 2008 2 commits
    • Alex Chiang's avatar
      [IA64] Update check_sal_cache_flush to use platform_send_ipi() · 3463a93d
      Alex Chiang authored
      check_sal_cache_flush is used to detect broken firmware that drops
      pending interrupts.
      
      The old implementation schedules a timer interrupt for itself in
      the future by getting the current value of the Interval Timer
      Counter + 1000 cycles, waits for the interrupt to be pended, calls
      SAL_CACHE_FLUSH, and finally checks to see if the interrupt is
      still pending.
      
      This implementation can cause problems for virtual machine code if
      the process of scheduling the timer interrupt takes more than 1000
      cycles; the virtual machine can end up sleeping for several hundred
      years while waiting for the ITC to wrap around.
      
      The fix is to use platform_send_ipi. The processor will still send
      an interrupt to itself, using the IA64_IPI_DM_INT delivery mode,
      which causes the IPI to look like an external interrupt. The rest
      of the SAL_CACHE_FLUSH + checking to see if the interrupt is still
      pending remains unchanged.
      
      This fix has been boot tested successfully on:
      
      	- intel tiger2
      	- hp rx6600
      	- hp rx5670
      
      The rx5670 has known buggy firmware, where SAL_CACHE_FLUSH drops
      pending interrupts. A boot test on this machine showed this message
      on the console:
      
      SAL: SAL_CACHE_FLUSH drops interrupts; PAL_CACHE_FLUSH will be used instead
      
      Which proves that the self-inflicted IPI approach is viable. And
      as expected, the other tested platforms correctly did not display
      the warning.
      Signed-off-by: default avatarAlex Chiang <achiang@hp.com>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      3463a93d
    • stephane eranian's avatar
      [IA64] perfmon: fix async exit bug · 83014699
      stephane eranian authored
      Move the cleanup of the async queue to the close callback from the flush
      callback. This avoids losing asynchronous overflow notifications when
      the file descriptor is shared by multiple processes and one terminates.
      Signed-off-by: default avatarStephane Eranian <eranian@gmail.com>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      83014699
  2. 10 Jun, 2008 27 commits
  3. 09 Jun, 2008 11 commits