1. 07 2月, 2018 1 次提交
  2. 23 12月, 2017 1 次提交
  3. 09 9月, 2016 1 次提交
    • S
      arm64: Introduce raw_{d,i}cache_line_size · 072f0a63
      Suzuki K Poulose 提交于
      On systems with mismatched i/d cache min line sizes, we need to use
      the smallest size possible across all CPUs. This will be done by fetching
      the system wide safe value from CPU feature infrastructure.
      However the some special users(e.g kexec, hibernate) would need the line
      size on the CPU (rather than the system wide), when either the system
      wide feature may not be accessible or it is guranteed that the caller
      executes with a gurantee of no migration.
      Provide another helper which will fetch cache line size on the current CPU.
      
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Acked-by: NJames Morse <james.morse@arm.com>
      Reviewed-by: NGeoff Levand <geoff@infradead.org>
      Signed-off-by: NSuzuki K Poulose <suzuki.poulose@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      072f0a63
  4. 22 8月, 2016 1 次提交
    • M
      arm64: hibernate: reduce TLB maintenance scope · 0a7d87a7
      Mark Rutland 提交于
      In break_before_make_ttbr_switch we perform broadcast TLB maintenance
      for the inner shareable domain, and use a DSB ISH to complete this.
      However, at the point we execute this, secondary CPUs are either
      physically offline, or executing code outside of the kernel. Upon
      entering the kernel, secondary CPUs will invalidate their TLBs before
      enabling their MMUs.
      
      Thus we do not need to invalidate TLBs of other CPUs, and as with
      idmap_cpu_replace_ttbr1 we can reduce the scope of maintenance to the
      TLBs of the local CPU. This keeps our TLB maintenance code consistent,
      and is a minor optimisation.
      
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: NJames Morse <james.morse@arm.com>
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      0a7d87a7
  5. 28 4月, 2016 1 次提交
    • J
      arm64: kernel: Add support for hibernate/suspend-to-disk · 82869ac5
      James Morse 提交于
      Add support for hibernate/suspend-to-disk.
      
      Suspend borrows code from cpu_suspend() to write cpu state onto the stack,
      before calling swsusp_save() to save the memory image.
      
      Restore creates a set of temporary page tables, covering only the
      linear map, copies the restore code to a 'safe' page, then uses the copy to
      restore the memory image. The copied code executes in the lower half of the
      address space, and once complete, restores the original kernel's page
      tables. It then calls into cpu_resume(), and follows the normal
      cpu_suspend() path back into the suspend code.
      
      To restore a kernel using KASLR, the address of the page tables, and
      cpu_resume() are stored in the hibernate arch-header and the el2
      vectors are pivotted via the 'safe' page in low memory.
      Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
      Tested-by: Kevin Hilman <khilman@baylibre.com> # Tested on Juno R2
      Signed-off-by: NJames Morse <james.morse@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      82869ac5