• Will Deacon's avatar
    Revert "arm64: alternative: Allow immediate branch as alternative instruction" · b9a95e85
    Will Deacon authored
    This reverts most of commit fef7f2b2.
    
    It turns out that there are a couple of problems with the way we're
    fixing up branch instructions used as part of alternative instruction
    sequences:
    
      (1) If the branch target is also in the alternative sequence, we'll
          generate a branch into the .altinstructions section which actually
          gets freed.
    
      (2) The calls to aarch64_insn_{read,write} bring an awful lot more
          code into the patching path (e.g. taking locks, poking the fixmap,
          invalidating the TLB) which isn't actually needed for the early
          patching run under stop_machine, but makes the use of alternative
          sequences extremely fragile (as we can't patch code that could be
          used by the patching code).
    
    Given that no code actually requires alternative patching of immediate
    branches, let's remove this support for now and revisit it when we've
    got a user. We leave the updated size check, since we really do require
    the sequences to be the same length.
    Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    b9a95e85
alternative.c 2.13 KB