1. 01 Mar, 2011 5 commits
    • Chris Metcalf's avatar
      arch/tile: warn and retry if an IPI is not accepted by the target cpu · bbeee4b2
      Chris Metcalf authored
      Previously we assumed this was impossible, but in fact it can happen.
      Handle it gracefully by retrying after issuing a warning.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      bbeee4b2
    • Chris Metcalf's avatar
      arch/tile: stop disabling INTCTRL_1 interrupts during hypervisor downcalls · b2ce2bda
      Chris Metcalf authored
      The problem was that this could lead to IPIs being disabled during
      the softirq processing after a hypervisor downcall (e.g. for I/O),
      since both IPI and device interrupts use the INCTRL_1 downcall mechanism.
      When this happened at the wrong time, it could lead to deadlock.
      
      Luckily, we were already maintaining the per-interrupt state we need,
      and using it in the proper way in the hypervisor, so all we had to do
      was to change Linux to stop blocking downcall interrupts for the entire
      length of the downcall.  (Now they're blocked while we're executing the
      downcall routine itself, but not while we're executing any subsequent
      softirq routines.)  The hypervisor is doing a very small amount of
      work it no longer needs to do (masking INTCTRL_1 on entry to the client
      interrupt routine), but doing so means that older versions of Tile Linux
      will continue to work with a current hypervisor, so that seems reasonable.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      b2ce2bda
    • Chris Metcalf's avatar
      arch/tile: fix __ndelay etc to work better · 13371731
      Chris Metcalf authored
      The current implementations of __ndelay and __udelay call a hypervisor
      service to delay, but the hypervisor service isn't actually implemented
      very well, and the consensus is that Linux should handle figuring this
      out natively and not use a hypervisor service.
      
      By converting nanoseconds to cycles, and then spinning until the
      cycle counter reaches the desired cycle, we get several benefits:
      first, we are sensitive to the actual clock speed; second, we use
      less power by issuing a slow SPR read once every six cycles while
      we delay; and third, we properly handle the case of an interrupt by
      exiting at the target time rather than after some number of cycles.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      13371731
    • Chris Metcalf's avatar
      arch/tile: bug fix: exec'ed task thought it was still single-stepping · 04f7a3f1
      Chris Metcalf authored
      To handle single-step, tile mmap's a page of memory in the process
      space for each thread and uses it to construct a version of the
      instruction that we want to single step.  If the process exec's,
      though, we lose that mapping, and the kernel needs to be aware that
      it will need to recreate it if the exec'ed process than tries to
      single-step as well.
      
      Also correct some int32_t to s32 for better kernel style.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      04f7a3f1
    • Chris Metcalf's avatar
      arch/tile: catch up with section naming convention in 2.6.35 · 2cb82400
      Chris Metcalf authored
      The convention changed to, e.g., ".data..page_aligned".  This commit
      fixes the places in the tile architecture that were still using the
      old convention.  One tile-specific section (.init.page) was dropped
      in favor of just using an "aligned" attribute.
      
      Sam Ravnborg <sam@ravnborg.org> pointed out __PAGE_ALIGNED_BSS, etc.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      2cb82400
  2. 25 Feb, 2011 1 commit
  3. 23 Feb, 2011 5 commits
  4. 22 Feb, 2011 2 commits
  5. 21 Feb, 2011 27 commits