1. 03 Sep, 2013 17 commits
  2. 30 Aug, 2013 15 commits
  3. 13 Aug, 2013 8 commits
    • Chris Metcalf's avatar
      tile: provide traceability for hypervisor calls · 9ae09838
      Chris Metcalf authored
      This change adds infrastructure (CONFIG_TILE_HVGLUE_TRACE) that
      provides C code wrappers for the calls the kernel makes to the Tilera
      hypervisor.  This allows standard kernel infrastructure like FTRACE to
      be able to instrument hypervisor calls.
      
      To allow direct calls to the true API, we export their names with a
      leading underscore as well.  This is important for the few contexts
      where we need to make hypervisor calls without touching the stack.
      
      As part of this change, we also switch from creating the symbols
      with linker magic to creating them with assembler magic.  This lets
      us provide a symbol type and generally make them appear more as symbols
      and less as just random values in the Elf namespace.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      9ae09838
    • Chris Metcalf's avatar
      tile: avoid struct vm_struct leak · fad052dc
      Chris Metcalf authored
      If ioreamp_prot() fails in ioremap_page_range() due to kernel memory
      exhaustion, we previously would leak a struct vm_struct.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      fad052dc
    • Chris Metcalf's avatar
      tile: implement gettimeofday() via vDSO · 4a556f4f
      Chris Metcalf authored
      This change creates the framework for vDSO calls, makes the existing
      rt_sigreturn() mechanism use it, and adds a fast gettimeofday().
      Now that we need to expose the vDSO address to userspace, we add
      AT_SYSINFO_EHDR to the set of aux entries provided to userspace.
      (You can disable any extra vDSO support by booting with vdso=0,
      but the rt_sigreturn vDSO page will still be provided.)
      
      Note that glibc has supported the tile vDSO since release 2.17.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      4a556f4f
    • Chris Metcalf's avatar
      tile: support simulator notification for ET_DYN objects · 0c1d1917
      Chris Metcalf authored
      The tile code notifies the simulator of new ET_EXEC objects starting
      to execute so that tracing code can properly annotate the objects.
      However, we didn't support ET_DYN executables like ld.so, so we
      didn't properly load symbols, etc.  This change enables that support;
      we use a variant of the SIM_CONTROL_DLOPEN simulator notification
      that newer simulators will recognize and use to set the base address
      for the next SIM_CONTROL_OS_EXEC notification.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      0c1d1917
    • Chris Metcalf's avatar
      tile: improve illegal translation interrupt handling · 70d2b595
      Chris Metcalf authored
      First, don't re-enable interrupts blindly in the Linux trap handler.
      We already handle page faults this way; synchronous interrupts like
      ILL_TRANS will fire even when interrupts are disabled, and we don't
      want to re-enable interrupts in that case.
      
      For ILL_TRANS, we now pass the ILL_VA_PC reason into the trap handler
      so we can report it properly; this is the address that caused the
      illegal translation trap.  We print the address as part of the
      pr_alert() message now if it's coming from the kernel.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      70d2b595
    • Chris Metcalf's avatar
      tile: make register dumps more readable · dadf78bf
      Chris Metcalf authored
      It's much easier to read register dumps if you read vertically
      rather than horizontally, since the register numbers line up
      and lead the eye down more than to the right.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      dadf78bf
    • Chris Metcalf's avatar
      tile: improve big-endian support · ba02f0eb
      Chris Metcalf authored
      First, fix a bug in asm/unaligned.h; we need to just use the asm-generic
      unaligned.h so we properly choose endian-correct flavors.
      
      Second, keep the hv/hypervisor.h ABI fully "native" in the sense that
      we don't have __BIG_ENDIAN__ ifdefs there.  Instead, we use macros in
      the head_NN.S assembly code to properly extract two 32-bit structure
      members from a 64-bit register holding the structure.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      ba02f0eb
    • Chris Metcalf's avatar
      tile: support CONFIG_PREEMPT · bc1a298f
      Chris Metcalf authored
      This change adds support for CONFIG_PREEMPT (full kernel preemption).
      In addition to the core support, this change includes a number
      of places where we fix up uses of smp_processor_id() and per-cpu
      variables.  I also eliminate the PAGE_HOME_HERE and PAGE_HOME_UNKNOWN
      values for page homing, as it turns out they weren't being used.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      bc1a298f