1. 10 7月, 2014 4 次提交
  2. 09 7月, 2014 2 次提交
  3. 04 7月, 2014 1 次提交
  4. 18 6月, 2014 4 次提交
  5. 31 5月, 2014 1 次提交
    • L
      arm64: kernel: initialize broadcast hrtimer based clock event device · 9358d755
      Lorenzo Pieralisi 提交于
      On platforms implementing CPU power management, the CPUidle subsystem
      can allow CPUs to enter idle states where local timers logic is lost on power
      down. To keep the software timers functional the kernel relies on an
      always-on broadcast timer to be present in the platform to relay the
      interrupt signalling the timer expiries.
      
      For platforms implementing CPU core gating that do not implement an always-on
      HW timer or implement it in a broken way, this patch adds code to initialize
      the kernel hrtimer based clock event device upon boot (which can be chosen as
      tick broadcast device by the kernel).
      It relies on a dynamically chosen CPU to be always powered-up. This CPU then
      relays the timer interrupt to CPUs in deep-idle states through its HW local
      timer device.
      
      Having a CPU always-on has implications on power management platform
      capabilities and makes CPUidle suboptimal, since at least a CPU is kept
      always in a shallow idle state by the kernel to relay timer interrupts,
      but at least leaves the kernel with a functional system with some working
      power management capabilities.
      
      The hrtimer based clock event device is unconditionally registered, but
      has the lowest possible rating such that any broadcast-capable HW clock
      event device present will be chosen in preference as the tick broadcast
      device.
      Reviewed-by: NPreeti U Murthy <preeti@linux.vnet.ibm.com>
      Acked-by: NWill Deacon <will.deacon@arm.com>
      Acked-by: NMark Rutland <mark.rutland@arm.com>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      9358d755
  6. 29 5月, 2014 5 次提交
  7. 23 5月, 2014 5 次提交
  8. 17 5月, 2014 5 次提交
  9. 15 5月, 2014 2 次提交
  10. 12 5月, 2014 5 次提交
    • A
      arm64: is_compat_task is defined both in asm/compat.h and linux/compat.h · fd92d4a5
      AKASHI Takahiro 提交于
      Some kernel files may include both linux/compat.h and asm/compat.h directly
      or indirectly. Since both header files contain is_compat_task() under
      !CONFIG_COMPAT, compiling them with !CONFIG_COMPAT will eventually fail.
      Such files include kernel/auditsc.c, kernel/seccomp.c and init/do_mountfs.c
      (do_mountfs.c may read asm/compat.h via asm/ftrace.h once ftrace is
      implemented).
      
      So this patch proactively
      1) removes is_compat_task() under !CONFIG_COMPAT from asm/compat.h
      2) replaces asm/compat.h to linux/compat.h in kernel/*.c,
         but asm/compat.h is still necessary in ptrace.c and process.c because
         they use is_compat_thread().
      Acked-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NAKASHI Takahiro <takahiro.akashi@linaro.org>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      fd92d4a5
    • A
      arm64: split syscall_trace() into separate functions for enter/exit · 3157858f
      AKASHI Takahiro 提交于
      As done in arm, this change makes it easy to confirm we invoke syscall
      related hooks, including syscall tracepoint, audit and seccomp which would
      be implemented later, in correct order. That is, undoing operations in the
      opposite order on exit that they were done on entry.
      Acked-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NAKASHI Takahiro <takahiro.akashi@linaro.org>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      3157858f
    • A
      arm64: make a single hook to syscall_trace() for all syscall features · 449f81a4
      AKASHI Takahiro 提交于
      Currently syscall_trace() is called only for ptrace.
      With additional TIF_xx flags defined, it is now called in all the cases
      of audit, ftrace and seccomp in addition to ptrace.
      Acked-by: NRichard Guy Briggs <rgb@redhat.com>
      Acked-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NAKASHI Takahiro <takahiro.akashi@linaro.org>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      449f81a4
    • W
      arm64: debug: avoid accessing mdscr_el1 on fault paths where possible · 2a283070
      Will Deacon 提交于
      Since mdscr_el1 is part of the debug register group, it is highly likely
      to be trapped by a hypervisor to prevent virtual machines from debugging
      (buggering?) each other. Unfortunately, this absolutely destroys our
      performance, since we access the register on many of our low-level
      fault handling paths to keep track of the various debug state machines.
      
      This patch removes our dependency on mdscr_el1 in the case that debugging
      is not being used. More specifically we:
      
        - Use TIF_SINGLESTEP to indicate that a task is stepping at EL0 and
          avoid disabling step in the MDSCR when we don't need to.
          MDSCR_EL1.SS handling is moved to kernel_entry, when trapping from
          userspace.
      
        - Ensure debug exceptions are re-enabled on *all* exception entry
          paths, even the debug exception handling path (where we re-enable
          exceptions after invoking the handler). Since we can now rely on
          MDSCR_EL1.SS being cleared by the entry code, exception handlers can
          usually enable debug immediately before enabling interrupts.
      
        - Remove all debug exception unmasking from ret_to_user and
          el1_preempt, since we will never get here with debug exceptions
          masked.
      
      This results in a slight change to kernel debug behaviour, where we now
      step into interrupt handlers and data aborts from EL1 when debugging the
      kernel, which is actually a useful thing to do. A side-effect of this is
      that it *does* potentially prevent stepping off {break,watch}points when
      there is a high-frequency interrupt source (e.g. a timer), so a debugger
      would need to use either breakpoints or manually disable interrupts to
      get around this issue.
      
      With this patch applied, guest performance is restored under KVM when
      debug register accesses are trapped (and we get a measurable performance
      increase on the host on Cortex-A57 too).
      
      Cc: Ian Campbell <ian.campbell@citrix.com>
      Tested-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      2a283070
    • S
      arm64: use cpu_online_mask when using forced irq_set_affinity · 601c9421
      Sudeep Holla 提交于
      Commit 01f8fa4f("genirq: Allow forcing cpu affinity of interrupts")
      enabled the forced irq_set_affinity which previously refused to route an
      interrupt to an offline cpu.
      
      Commit ffde1de6("irqchip: Gic: Support forced affinity setting")
      implements this force logic and disables the cpu online check for GIC
      interrupt controller.
      
      When __cpu_disable calls migrate_irqs, it disables the current cpu in
      cpu_online_mask and uses forced irq_set_affinity to migrate the IRQs
      away from the cpu but passes affinity mask with the cpu being offlined
      also included in it.
      
      When calling irq_set_affinity with force == true in a cpu hotplug path,
      the caller must ensure that the cpu being offlined is not present in the
      affinity mask or it may be selected as the target CPU, leading to the
      interrupt not being migrated.
      
      This patch uses cpu_online_mask when using forced irq_set_affinity so
      that the IRQs are properly migrated away.
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Acked-by: NMark Rutland <mark.rutland@arm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      601c9421
  11. 10 5月, 2014 2 次提交
  12. 09 5月, 2014 4 次提交