16 May, 2018

1 commit

  • commit ece1397cbc89c51914fae1aec729539cfd8bd62b upstream.

    Some variants of the Arm Cortex-55 cores (r0p0, r0p1, r1p0) suffer
    from an erratum 1024718, which causes incorrect updates when DBM/AP
    bits in a page table entry is modified without a break-before-make
    sequence. The work around is to skip enabling the hardware DBM feature
    on the affected cores. The hardware Access Flag management features
    is not affected. There are some other cores suffering from this
    errata, which could be added to the midr_list to trigger the work
    around.

    Cc: Catalin Marinas
    Cc: ckadabi@codeaurora.org
    Reviewed-by: Dave Martin
    Signed-off-by: Suzuki K Poulose
    Signed-off-by: Will Deacon
    Signed-off-by: Greg Kroah-Hartman

    Suzuki K Poulose
     

17 Feb, 2018

2 commits

  • Commit bb48711800e6 upstream.

    The Kryo CPUs are also affected by the Falkor 1003 errata, so
    we need to do the same workaround on Kryo CPUs. The MIDR is
    slightly more complicated here, where the PART number is not
    always the same when looking at all the bits from 15 to 4. Drop
    the lower 8 bits and just look at the top 4 to see if it's '2'
    and then consider those as Kryo CPUs. This covers all the
    combinations without having to list them all out.

    Fixes: 38fd94b0275c ("arm64: Work around Falkor erratum 1003")
    Acked-by: Will Deacon
    Signed-off-by: Stephen Boyd
    Signed-off-by: Catalin Marinas
    Signed-off-by: Will Deacon
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Greg Kroah-Hartman

    Stephen Boyd
     
  • commit 932b50c7c1c65e6f23002e075b97ee083c4a9e71 upstream.

    The ARM architecture defines the memory locations that are permitted
    to be accessed as the result of a speculative instruction fetch from
    an exception level for which all stages of translation are disabled.
    Specifically, the core is permitted to speculatively fetch from the
    4KB region containing the current program counter 4K and next 4K.

    When translation is changed from enabled to disabled for the running
    exception level (SCTLR_ELn[M] changed from a value of 1 to 0), the
    Falkor core may errantly speculatively access memory locations outside
    of the 4KB region permitted by the architecture. The errant memory
    access may lead to one of the following unexpected behaviors.

    1) A System Error Interrupt (SEI) being raised by the Falkor core due
    to the errant memory access attempting to access a region of memory
    that is protected by a slave-side memory protection unit.
    2) Unpredictable device behavior due to a speculative read from device
    memory. This behavior may only occur if the instruction cache is
    disabled prior to or coincident with translation being changed from
    enabled to disabled.

    The conditions leading to this erratum will not occur when either of the
    following occur:
    1) A higher exception level disables translation of a lower exception level
    (e.g. EL2 changing SCTLR_EL1[M] from a value of 1 to 0).
    2) An exception level disabling its stage-1 translation if its stage-2
    translation is enabled (e.g. EL1 changing SCTLR_EL1[M] from a value of 1
    to 0 when HCR_EL2[VM] has a value of 1).

    To avoid the errant behavior, software must execute an ISB immediately
    prior to executing the MSR that will change SCTLR_ELn[M] from 1 to 0.

    Signed-off-by: Shanker Donthineni
    Signed-off-by: Will Deacon
    Cc: Timur Tabi
    Signed-off-by: Greg Kroah-Hartman

    Shanker Donthineni
     

09 Aug, 2017

1 commit

  • The ARMv8.2-DCPoP feature introduces persistent memory support to the
    architecture, by defining a point of persistence in the memory
    hierarchy, and a corresponding cache maintenance operation, DC CVAP.
    Expose the support via HWCAP and MRS emulation.

    Reviewed-by: Will Deacon
    Signed-off-by: Robin Murphy
    Signed-off-by: Catalin Marinas

    Robin Murphy
     

13 Jul, 2017

1 commit

  • Pull IOMMU updates from Joerg Roedel:
    "This update comes with:

    - Support for lockless operation in the ARM io-pgtable code.

    This is an important step to solve the scalability problems in the
    common dma-iommu code for ARM

    - Some Errata workarounds for ARM SMMU implemenations

    - Rewrite of the deferred IO/TLB flush code in the AMD IOMMU driver.

    The code suffered from very high flush rates, with the new
    implementation the flush rate is down to ~1% of what it was before

    - Support for amd_iommu=off when booting with kexec.

    The problem here was that the IOMMU driver bailed out early without
    disabling the iommu hardware, if it was enabled in the old kernel

    - The Rockchip IOMMU driver is now available on ARM64

    - Align the return value of the iommu_ops->device_group call-backs to
    not miss error values

    - Preempt-disable optimizations in the Intel VT-d and common IOVA
    code to help Linux-RT

    - Various other small cleanups and fixes"

    * tag 'iommu-updates-v4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (60 commits)
    iommu/vt-d: Constify intel_dma_ops
    iommu: Warn once when device_group callback returns NULL
    iommu/omap: Return ERR_PTR in device_group call-back
    iommu: Return ERR_PTR() values from device_group call-backs
    iommu/s390: Use iommu_group_get_for_dev() in s390_iommu_add_device()
    iommu/vt-d: Don't disable preemption while accessing deferred_flush()
    iommu/iova: Don't disable preempt around this_cpu_ptr()
    iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #126
    iommu/arm-smmu-v3: Enable ACPI based HiSilicon CMD_PREFETCH quirk(erratum 161010701)
    iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74
    ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model
    iommu/arm-smmu-v3, acpi: Add temporary Cavium SMMU-V3 IORT model number definitions
    iommu/io-pgtable-arm: Use dma_wmb() instead of wmb() when publishing table
    iommu/io-pgtable: depend on !GENERIC_ATOMIC64 when using COMPILE_TEST with LPAE
    iommu/arm-smmu-v3: Remove io-pgtable spinlock
    iommu/arm-smmu: Remove io-pgtable spinlock
    iommu/io-pgtable-arm-v7s: Support lockless operation
    iommu/io-pgtable-arm: Support lockless operation
    iommu/io-pgtable: Introduce explicit coherency
    iommu/io-pgtable-arm-v7s: Refactor split_blk_unmap
    ...

    Linus Torvalds
     

24 Jun, 2017

3 commits

  • Cavium ThunderX2 SMMU doesn't support MSI and also doesn't have unique irq
    lines for gerror, eventq and cmdq-sync.

    New named irq "combined" is set as a errata workaround, which allows to
    share the irq line by register single irq handler for all the interrupts.

    Acked-by: Lorenzo Pieralisi
    Signed-off-by: Geetha sowjanya
    [will: reworked irq equality checking and added SPI check]
    Signed-off-by: Will Deacon

    Geetha Sowjanya
     
  • HiSilicon SMMUv3 on Hip06/Hip07 platforms doesn't support CMD_PREFETCH
    command. The dt based support for this quirk is already present in the
    driver(hisilicon,broken-prefetch-cmd). This adds ACPI support for the
    quirk using the IORT smmu model number.

    Signed-off-by: shameer
    Signed-off-by: hanjun
    [will: rewrote patch]
    Signed-off-by: Will Deacon

    shameer
     
  • Cavium ThunderX2 SMMU implementation doesn't support page 1 register space
    and PAGE0_REGS_ONLY option is enabled as an errata workaround.
    This option when turned on, replaces all page 1 offsets used for
    EVTQ_PROD/CONS, PRIQ_PROD/CONS register access with page 0 offsets.

    SMMU resource size checks are now based on SMMU option PAGE0_REGS_ONLY,
    since resource size can be either 64k/128k.
    For this, arm_smmu_device_dt_probe/acpi_probe has been moved before
    platform_get_resource call, so that SMMU options are set beforehand.

    Signed-off-by: Linu Cherian
    Signed-off-by: Geetha Sowjanya
    Signed-off-by: Will Deacon

    Linu Cherian
     

15 Jun, 2017

1 commit

  • Some Cavium Thunder CPUs suffer a problem where a KVM guest may
    inadvertently cause the host kernel to quit receiving interrupts.

    Use the Group-0/1 trapping in order to deal with it.

    [maz]: Adapted patch to the Group-0/1 trapping, reworked commit log

    Tested-by: Alexander Graf
    Acked-by: Catalin Marinas
    Reviewed-by: Eric Auger
    Signed-off-by: David Daney
    Signed-off-by: Marc Zyngier
    Signed-off-by: Christoffer Dall

    David Daney
     

10 May, 2017

1 commit

  • Some kernel features don't currently work if a task puts a non-zero
    address tag in its stack pointer, frame pointer, or frame record entries
    (FP, LR).

    For example, with a tagged stack pointer, the kernel can't deliver
    signals to the process, and the task is killed instead. As another
    example, with a tagged frame pointer or frame records, perf fails to
    generate call graphs or resolve symbols.

    For now, just document these limitations, instead of finding and fixing
    everything that doesn't work, as it's not known if anyone needs to use
    tags in these places anyway.

    In addition, as requested by Dave Martin, generalize the limitations
    into a general kernel address tag policy, and refactor
    tagged-pointers.txt to include it.

    Fixes: d50240a5f6ce ("arm64: mm: permit use of tagged pointers at EL0")
    Cc: # 3.12.x-
    Reviewed-by: Dave Martin
    Acked-by: Will Deacon
    Signed-off-by: Kristina Martsenko
    Signed-off-by: Catalin Marinas

    Kristina Martsenko
     

08 Apr, 2017

1 commit

  • …l/git/maz/arm-platforms into for-next/core

    Pre-requisites for the arch timer errata workarounds:

    - Allow checking of a CPU-local erratum
    - Add CNTVCT_EL0 trap handler
    - Define Cortex-A73 MIDR
    - Allow an erratum to be match for all revisions of a core
    - Add capability to advertise Cortex-A73 erratum 858921

    * tag 'arch-timer-errata-prereq' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms:
    arm64: cpu_errata: Add capability to advertise Cortex-A73 erratum 858921
    arm64: cpu_errata: Allow an erratum to be match for all revisions of a core
    arm64: Define Cortex-A73 MIDR
    arm64: Add CNTVCT_EL0 trap handler
    arm64: Allow checking of a CPU-local erratum

    Catalin Marinas
     

07 Apr, 2017

1 commit


21 Mar, 2017

3 commits


07 Mar, 2017

1 commit

  • On Qualcomm Datacenter Technologies QDF2400 SoCs, the ITS hardware
    implementation uses 16Bytes for Interrupt Translation Entry (ITE),
    but reports an incorrect value of 8Bytes in GITS_TYPER.ITTE_size.

    It might cause kernel memory corruption depending on the number
    of MSI(x) that are configured and the amount of memory that has
    been allocated for ITEs in its_create_device().

    This patch fixes the potential memory corruption by setting the
    correct ITE size to 16Bytes.

    Cc: stable@vger.kernel.org
    Signed-off-by: Shanker Donthineni
    Signed-off-by: Marc Zyngier

    Shanker Donthineni
     

10 Feb, 2017

2 commits

  • The Qualcomm Datacenter Technologies Falkor v1 CPU may allocate TLB entries
    using an incorrect ASID when TTBRx_EL1 is being updated. When the erratum
    is triggered, page table entries using the new translation table base
    address (BADDR) will be allocated into the TLB using the old ASID. All
    circumstances leading to the incorrect ASID being cached in the TLB arise
    when software writes TTBRx_EL1[ASID] and TTBRx_EL1[BADDR], a memory
    operation is in the process of performing a translation using the specific
    TTBRx_EL1 being written, and the memory operation uses a translation table
    descriptor designated as non-global. EL2 and EL3 code changing the EL1&0
    ASID is not subject to this erratum because hardware is prohibited from
    performing translations from an out-of-context translation regime.

    Consider the following pseudo code.

    write new BADDR and ASID values to TTBRx_EL1

    Replacing the above sequence with the one below will ensure that no TLB
    entries with an incorrect ASID are used by software.

    write reserved value to TTBRx_EL1[ASID]
    ISB
    write new value to TTBRx_EL1[BADDR]
    ISB
    write new value to TTBRx_EL1[ASID]
    ISB

    When the above sequence is used, page table entries using the new BADDR
    value may still be incorrectly allocated into the TLB using the reserved
    ASID. Yet this will not reduce functionality, since TLB entries incorrectly
    tagged with the reserved ASID will never be hit by a later instruction.

    Based on work by Shanker Donthineni

    Reviewed-by: Catalin Marinas
    Signed-off-by: Christopher Covington
    Signed-off-by: Will Deacon

    Christopher Covington
     
  • Now that we have a workaround for Hisilicon erratum 161010101, notes
    this in the arm64 silicon-errata document.

    The new config option is too long to fit in the existing kconfig column,
    so this is widened to accomodate it. At the same time, an existing
    whitespace error is corrected, and the existing pattern of a line space
    between vendors is enforced for recent additions.

    Signed-off-by: Ding Tianhong
    [Mark: split patch, reword commit message, rework table]
    Signed-off-by: Mark Rutland
    Cc: Catalin Marinas
    Cc: Will Deacon
    Signed-off-by: Will Deacon

    Ding Tianhong
     

01 Feb, 2017

1 commit

  • During a TLB invalidate sequence targeting the inner shareable domain,
    Falkor may prematurely complete the DSB before all loads and stores using
    the old translation are observed. Instruction fetches are not subject to
    the conditions of this erratum. If the original code sequence includes
    multiple TLB invalidate instructions followed by a single DSB, onle one of
    the TLB instructions needs to be repeated to work around this erratum.
    While the erratum only applies to cases in which the TLBI specifies the
    inner-shareable domain (*IS form of TLBI) and the DSB is ISH form or
    stronger (OSH, SYS), this changes applies the workaround overabundantly--
    to local TLBI, DSB NSH sequences as well--for simplicity.

    Based on work by Shanker Donthineni

    Signed-off-by: Christopher Covington
    Acked-by: Mark Rutland
    Signed-off-by: Will Deacon

    Christopher Covington
     

12 Jan, 2017

1 commit


03 Oct, 2016

1 commit

  • Pull arm64 updates from Will Deacon:
    "It's a bit all over the place this time with no "killer feature" to
    speak of. Support for mismatched cache line sizes should help people
    seeing whacky JIT failures on some SoCs, and the big.LITTLE perf
    updates have been a long time coming, but a lot of the changes here
    are cleanups.

    We stray outside arch/arm64 in a few areas: the arch/arm/ arch_timer
    workaround is acked by Russell, the DT/OF bits are acked by Rob, the
    arch_timer clocksource changes acked by Marc, CPU hotplug by tglx and
    jump_label by Peter (all CC'd).

    Summary:

    - Support for execute-only page permissions
    - Support for hibernate and DEBUG_PAGEALLOC
    - Support for heterogeneous systems with mismatches cache line sizes
    - Errata workarounds (A53 843419 update and QorIQ A-008585 timer bug)
    - arm64 PMU perf updates, including cpumasks for heterogeneous systems
    - Set UTS_MACHINE for building rpm packages
    - Yet another head.S tidy-up
    - Some cleanups and refactoring, particularly in the NUMA code
    - Lots of random, non-critical fixes across the board"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (100 commits)
    arm64: tlbflush.h: add __tlbi() macro
    arm64: Kconfig: remove SMP dependence for NUMA
    arm64: Kconfig: select OF/ACPI_NUMA under NUMA config
    arm64: fix dump_backtrace/unwind_frame with NULL tsk
    arm/arm64: arch_timer: Use archdata to indicate vdso suitability
    arm64: arch_timer: Work around QorIQ Erratum A-008585
    arm64: arch_timer: Add device tree binding for A-008585 erratum
    arm64: Correctly bounds check virt_addr_valid
    arm64: migrate exception table users off module.h and onto extable.h
    arm64: pmu: Hoist pmu platform device name
    arm64: pmu: Probe default hw/cache counters
    arm64: pmu: add fallback probe table
    MAINTAINERS: Update ARM PMU PROFILING AND DEBUGGING entry
    arm64: Improve kprobes test for atomic sequence
    arm64/kvm: use alternative auto-nop
    arm64: use alternative auto-nop
    arm64: alternative: add auto-nop infrastructure
    arm64: lse: convert lse alternatives NOP padding to use __nops
    arm64: barriers: introduce nops and __nops macros for NOP sequences
    arm64: sysreg: replace open-coded mrs_s/msr_s with {read,write}_sysreg_s
    ...

    Linus Torvalds
     

24 Sep, 2016

1 commit

  • Erratum A-008585 says that the ARM generic timer counter "has the
    potential to contain an erroneous value for a small number of core
    clock cycles every time the timer value changes". Accesses to TVAL
    (both read and write) are also affected due to the implicit counter
    read. Accesses to CVAL are not affected.

    The workaround is to reread TVAL and count registers until successive
    reads return the same value. Writes to TVAL are replaced with an
    equivalent write to CVAL.

    The workaround is to reread TVAL and count registers until successive reads
    return the same value, and when writing TVAL to retry until counter
    reads before and after the write return the same value.

    The workaround is enabled if the fsl,erratum-a008585 property is found in
    the timer node in the device tree. This can be overridden with the
    clocksource.arm_arch_timer.fsl-a008585 boot parameter, which allows KVM
    users to enable the workaround until a mechanism is implemented to
    automatically communicate this information.

    This erratum can be found on LS1043A and LS2080A.

    Acked-by: Marc Zyngier
    Signed-off-by: Scott Wood
    [will: renamed read macro to reflect that it's not usually unstable]
    Signed-off-by: Will Deacon

    Scott Wood
     

17 Aug, 2016

1 commit


21 Jun, 2016

1 commit

  • The ACPI 6.1 specification was recently released at the end of January
    2016, but the arm64 kernel documentation for the use of ACPI was written
    for the 5.1 version of the spec. There were significant additions to the
    spec that had not yet been mentioned -- for example, the 6.0 mechanisms
    added to make it easier to define processors and low power idle states,
    as well as the 6.1 addition allowing regular interrupts (not just from
    GPIO) be used to signal ACPI general purpose events.

    This patch reflects going back through and examining the specs in detail
    and updating content appropriately. Whilst there, a few odds and ends of
    typos were caught as well. This brings the documentation up to date with
    ACPI 6.1 for arm64.

    Signed-off-by: Al Stone
    Acked-by: Lorenzo Pieralisi
    Reviewed-by: Hanjun Guo
    Reviewed-by: Roy Franz
    Signed-off-by: Catalin Marinas

    Al Stone
     

03 Jun, 2016

1 commit


20 May, 2016

1 commit

  • Pull IOMMU updates from Joerg Roedel:
    "The updates include:

    - rate limiting for the VT-d fault handler

    - remove statistics code from the AMD IOMMU driver. It is unused and
    should be replaced by something more generic if needed

    - per-domain pagesize-bitmaps in IOMMU core code to support systems
    with different types of IOMMUs

    - support for ACPI devices in the AMD IOMMU driver

    - 4GB mode support for Mediatek IOMMU driver

    - ARM-SMMU updates from Will Deacon:
    - support for 64k pages with SMMUv1 implementations (e.g MMU-401)
    - remove open-coded 64-bit MMIO accessors
    - initial support for 16-bit VMIDs, as supported by some ThunderX
    SMMU implementations
    - a couple of errata workarounds for silicon in the field

    - various fixes here and there"

    * tag 'iommu-updates-v4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (44 commits)
    iommu/arm-smmu: Use per-domain page sizes.
    iommu/amd: Remove statistics code
    iommu/dma: Finish optimising higher-order allocations
    iommu: Allow selecting page sizes per domain
    iommu: of: enforce const-ness of struct iommu_ops
    iommu: remove unused priv field from struct iommu_ops
    iommu/dma: Implement scatterlist segment merging
    iommu/arm-smmu: Clear cache lock bit of ACR
    iommu/arm-smmu: Support SMMUv1 64KB supplement
    iommu/arm-smmu: Decouple context format from kernel config
    iommu/arm-smmu: Tidy up 64-bit/atomic I/O accesses
    io-64-nonatomic: Add relaxed accessor variants
    iommu/arm-smmu: Work around MMU-500 prefetch errata
    iommu/arm-smmu: Convert ThunderX workaround to new method
    iommu/arm-smmu: Differentiate specific implementations
    iommu/arm-smmu: Workaround for ThunderX erratum #27704
    iommu/arm-smmu: Add support for 16 bit VMID
    iommu/amd: Move get_device_id() and friends to beginning of file
    iommu/amd: Don't use IS_ERR_VALUE to check integer values
    iommu/amd: Signedness bug in acpihid_device_group()
    ...

    Linus Torvalds
     

04 May, 2016

2 commits

  • MMU-500 erratum #841119 is tickled by a particular set of circumstances
    interacting with the next-page prefetcher. Since said prefetcher is
    quite dumb and actually detrimental to performance in some cases (by
    causing unwanted TLB evictions for non-sequential access patterns), we
    lose very little by turning it off, and what we gain is a guarantee that
    the erratum is never hit.

    As a bonus, the same workaround will also prevent erratum #826419 once
    v7 short descriptor support is implemented.

    CC: Catalin Marinas
    CC: Will Deacon
    Signed-off-by: Robin Murphy
    Signed-off-by: Will Deacon

    Robin Murphy
     
  • Due to erratum #27704, the CN88xx SMMUv2 implementation supports only
    shared ASID and VMID numberspaces.

    This patch ensures that ASID and VMIDs are unique across all SMMU
    instances on affected Cavium systems.

    Signed-off-by: Tirumalesh Chalamarla
    Signed-off-by: Akula Geethasowjanya
    [will: commit message, comments and formatting]
    Signed-off-by: Will Deacon

    Tirumalesh Chalamarla
     

14 Apr, 2016

1 commit

  • Instead of going out of our way to relocate the initrd if it turns out
    to occupy memory that is not covered by the linear mapping, just add the
    initrd to the linear mapping. This puts the burden on the bootloader to
    pass initrd= and mem= options that are mutually consistent.

    Note that, since the placement of the linear region in the PA space is
    also dependent on the placement of the kernel Image, which may reside
    anywhere in memory, we may still end up with a situation where the initrd
    and the kernel Image are simply too far apart to be covered by the linear
    region.

    Since we now leave it up to the bootloader to pass the initrd in memory
    that is guaranteed to be accessible by the kernel, add a mention of this to
    the arm64 boot protocol specification as well.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Will Deacon

    Ard Biesheuvel
     

26 Feb, 2016

1 commit

  • On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI
    instructions may cause the icache to become corrupted if it contains
    data for a non-current ASID.

    This patch implements the workaround (which invalidates the local
    icache when switching the mm) by using code patching.

    Signed-off-by: Andrew Pinski
    Signed-off-by: David Daney
    Reviewed-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Andrew Pinski
     

19 Feb, 2016

1 commit

  • This relaxes the kernel Image placement requirements, so that it
    may be placed at any 2 MB aligned offset in physical memory.

    This is accomplished by ignoring PHYS_OFFSET when installing
    memblocks, and accounting for the apparent virtual offset of
    the kernel Image. As a result, virtual address references
    below PAGE_OFFSET are correctly mapped onto physical references
    into the kernel Image regardless of where it sits in memory.

    Special care needs to be taken for dealing with memory limits passed
    via mem=, since the generic implementation clips memory top down, which
    may clip the kernel image itself if it is loaded high up in memory. To
    deal with this case, we simply add back the memory covering the kernel
    image, which may result in more memory to be retained than was passed
    as a mem= parameter.

    Since mem= should not be considered a production feature, a panic notifier
    handler is installed that dumps the memory limit at panic time if one was
    set.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Catalin Marinas

    Ard Biesheuvel
     

12 Dec, 2015

1 commit


05 Nov, 2015

1 commit

  • Pull arm64 updates from Catalin Marinas:

    - "genirq: Introduce generic irq migration for cpu hotunplugged" patch
    merged from tip/irq/for-arm to allow the arm64-specific part to be
    upstreamed via the arm64 tree

    - CPU feature detection reworked to cope with heterogeneous systems
    where CPUs may not have exactly the same features. The features
    reported by the kernel via internal data structures or ELF_HWCAP are
    delayed until all the CPUs are up (and before user space starts)

    - Support for 16KB pages, with the additional bonus of a 36-bit VA
    space, though the latter only depending on EXPERT

    - Implement native {relaxed, acquire, release} atomics for arm64

    - New ASID allocation algorithm which avoids IPI on roll-over, together
    with TLB invalidation optimisations (using local vs global where
    feasible)

    - KASan support for arm64

    - EFI_STUB clean-up and isolation for the kernel proper (required by
    KASan)

    - copy_{to,from,in}_user optimisations (sharing the memcpy template)

    - perf: moving arm64 to the arm32/64 shared PMU framework

    - L1_CACHE_BYTES increased to 128 to accommodate Cavium hardware

    - Support for the contiguous PTE hint on kernel mapping (16 consecutive
    entries may be able to use a single TLB entry)

    - Generic CONFIG_HZ now used on arm64

    - defconfig updates

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (91 commits)
    arm64/efi: fix libstub build under CONFIG_MODVERSIONS
    ARM64: Enable multi-core scheduler support by default
    arm64/efi: move arm64 specific stub C code to libstub
    arm64: page-align sections for DEBUG_RODATA
    arm64: Fix build with CONFIG_ZONE_DMA=n
    arm64: Fix compat register mappings
    arm64: Increase the max granular size
    arm64: remove bogus TASK_SIZE_64 check
    arm64: make Timer Interrupt Frequency selectable
    arm64/mm: use PAGE_ALIGNED instead of IS_ALIGNED
    arm64: cachetype: fix definitions of ICACHEF_* flags
    arm64: cpufeature: declare enable_cpu_capabilities as static
    genirq: Make the cpuhotplug migration code less noisy
    arm64: Constify hwcap name string arrays
    arm64/kvm: Make use of the system wide safe values
    arm64/debug: Make use of the system wide safe value
    arm64: Move FP/ASIMD hwcap handling to common code
    arm64/HWCAP: Use system wide safe values
    arm64/capabilities: Make use of system wide safe value
    arm64: Delay cpu feature capability checks
    ...

    Linus Torvalds
     

20 Oct, 2015

1 commit

  • This patch adds the page size to the arm64 kernel image header
    so that one can infer the PAGESIZE used by the kernel. This will
    be helpful to diagnose failures to boot the kernel with page size
    not supported by the CPU.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Suzuki K. Poulose
    Acked-by: Catalin Marinas
    Reviewed-by: Christoffer Dall
    Acked-by: Mark Rutland
    Signed-off-by: Catalin Marinas

    Ard Biesheuvel
     

10 Oct, 2015

1 commit


30 Jul, 2015

1 commit


02 Jun, 2015

1 commit

  • Currently, the FDT blob needs to be in the same 512 MB region as
    the kernel, so that it can be mapped into the kernel virtual memory
    space very early on using a minimal set of statically allocated
    translation tables.

    Now that we have early fixmap support, we can relax this restriction,
    by moving the permanent FDT mapping to the fixmap region instead.
    This way, the FDT blob may be anywhere in memory.

    This also moves the vetting of the FDT to mmu.c, since the early
    init code in head.S does not handle mapping of the FDT anymore.
    At the same time, fix up some comments in head.S that have gone stale.

    Reviewed-by: Mark Rutland
    Tested-by: Mark Rutland
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Catalin Marinas

    Ard Biesheuvel
     

26 Mar, 2015

2 commits

  • One more documentation file are also being added:

    A section by section review of the ACPI spec (acpi_object_usage.txt)
    to note recommendations and prohibitions on the use of the numerous
    ACPI tables and objects. This sets out the current expectations of
    the firmware by Linux very explicitly (or as explicitly as I can, for
    now).

    CC: Suravee Suthikulpanit
    CC: Yi Li
    CC: Mark Langsdorf
    CC: Ashwin Chaugule
    Acked-by: Robert Richter
    Signed-off-by: Al Stone
    Signed-off-by: Hanjun Guo
    Signed-off-by: Will Deacon

    Al Stone
     
  • Add documentation for the guidelines of how to use ACPI
    on ARM64.

    Reviewed-by: Suravee Suthikulpanit
    Reviewed-by: Yi Li
    Reviewed-by: Mark Langsdorf
    Reviewed-by: Ashwin Chaugule
    Acked-by: Robert Richter
    Signed-off-by: Graeme Gregory
    Signed-off-by: Al Stone
    Signed-off-by: Hanjun Guo
    Signed-off-by: Will Deacon

    Graeme Gregory
     

24 Jan, 2015

1 commit

  • Emulate deprecated 'setend' instruction for AArch32 bit tasks.

    setend [le/be] - Sets the endianness of EL0

    On systems with CPUs which support mixed endian at EL0, the hardware
    support for the instruction can be enabled by setting the SCTLR_EL1.SED
    bit. Like the other emulated instructions it is controlled by an entry in
    /proc/sys/abi/. For more information see :
    Documentation/arm64/legacy_instructions.txt

    The instruction is emulated by setting/clearing the SPSR_EL1.E bit, which
    will be reflected in the PSTATE.E in AArch32 context.

    This patch also restores the native endianness for the execution of signal
    handlers, since the process could have changed the endianness.

    Note: All CPUs on the system must have mixed endian support at EL0. Once the
    handler is registered, hotplugging a CPU which doesn't support mixed endian,
    could lead to unexpected results/behavior in applications.

    Signed-off-by: Suzuki K. Poulose
    Cc: Will Deacon
    Cc: Punit Agrawal
    Signed-off-by: Catalin Marinas

    Suzuki K. Poulose