1. 16 6月, 2014 40 次提交
    • A
      spapr_iommu: Replace @instance_id with LIOBN for migration · 00d4f525
      Alexey Kardashevskiy 提交于
      SPAPR IOMMU is a bus-less device and therefore its only ID in
      migration stream is an instance id which is not reliable ID
      as it depends on the command line parameters order. Since
      libvirt may change the order, we need something better than that.
      
      This removes VMSD descriptor from the class definitiion and
      registers it with @liobn as an intance ID to let the destination
      side find the right device to receive migration data.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      00d4f525
    • A
      KVM: PPC: Enable compatibility mode · 6db5bb0f
      Alexey Kardashevskiy 提交于
      The host kernel implements a KVM_REG_PPC_ARCH_COMPAT register which
      this uses to enable a compatibility mode if any chosen.
      
      This sets the KVM_REG_PPC_ARCH_COMPAT register in KVM. ppc_set_compat()
      signals the caller if the mode cannot be enabled by the host kernel.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      [agraf: fix TCG compat setting]
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      6db5bb0f
    • A
      spapr: Implement processor compatibility in ibm, client-architecture-support · 3794d548
      Alexey Kardashevskiy 提交于
      Modern Linux kernels support last POWERPC CPUs so when a kernel boots,
      in most cases it can find a matching cpu_spec in the kernel's cpu_specs
      list. However if the kernel is quite old, it may be missing a definition
      of the actual CPU. To provide an ability for old kernels to work on modern
      hardware, a Processor Compatibility Mode has been introduced
      by the PowerISA specification.
      
      >From the hardware prospective, it is supported by the Processor
      Compatibility Register (PCR) which is defined in PowerISA. The register
      enables one of the compatibility modes (2.05/2.06/2.07).
      Since PCR is a hypervisor privileged register and cannot be
      directly accessed from the guest, the mode selection is done via
      ibm,client-architecture-support (CAS) RTAS call using which the guest
      specifies what "raw" and "architected" CPU versions it supports.
      QEMU works out the best match, changes a "cpu-version" property of
      every CPU and notifies the guest about the change by setting these
      properties in the buffer passed as a response on a custom H_CAS hypercall.
      
      This implements ibm,client-architecture-support parameters parsing
      (now only for PVRs) and cooks the device tree diff with new values for
      "cpu-version", "ibm,ppc-interrupt-server#s" and
      "ibm,ppc-interrupt-server#s" properties.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      3794d548
    • A
      spapr: Limit threads per core according to current compatibility mode · 2a48d993
      Alexey Kardashevskiy 提交于
      This puts a limit to the number of threads per core based on the current
      compatibility mode. Although PowerISA specs do not specify the maximum
      threads per core number, the linux guest still expects that
      PowerISA2.05-compatible CPU supports only 2 threads per core as this
      is what POWER6 (2.05 compliant CPU) implements, the same is for
      POWER7 (2.06, 4 threads) and POWER8 (2.07, 8 threads).
      
      This calls spapr_fixup_cpu_smt_dt() with the maximum allowed number of
      threads which affects ibm,ppc-interrupt-server#s and
      ibm,ppc-interrupt-gserver#s properties.
      
      The number of CPU nodesremains unchanged.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      2a48d993
    • A
      spapr: Rework spapr_fixup_cpu_dt() · 82677ed2
      Alexey Kardashevskiy 提交于
      In PPC code we usually use the "cs" name for a CPUState* variables
      and "cpu" for PowerPCCPU. So let's change spapr_fixup_cpu_dt() to
      use same rules as spapr_create_fdt_skel() does.
      
      This adds missing nodes creation if they do not already exist in
      the current device tree, this is going to be used from
      the client-architecture-support handler.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      82677ed2
    • A
      spapr: Add ibm, client-architecture-support call · 2a6593cb
      Alexey Kardashevskiy 提交于
      The PAPR+ specification defines a ibm,client-architecture-support (CAS)
      RTAS call which purpose is to provide a negotiation mechanism for
      the guest and the hypervisor to work out the best compatibility parameters.
      During the negotiation process, the guest provides an array of various
      options and capabilities which it supports, the hypervisor adjusts
      the device tree and (optionally) reboots the guest.
      
      At the moment the Linux guest calls CAS method at early boot so SLOF
      gets called. SLOF allocates a memory buffer for the device tree changes
      and calls a custom KVMPPC_H_CAS hypercall. QEMU parses the options,
      composes a diff for the device tree, copies it to the buffer provided
      by SLOF and returns to SLOF. SLOF updates the device tree and returns
      control to the guest kernel. Only then the Linux guest parses the device
      tree so it is possible to avoid unnecessary reboot in most cases.
      
      The device tree diff is a header with an update format version
      (defined as 1 in this patch) followed by a device tree with the properties
      which require update.
      
      If QEMU detects that it has to reboot the guest, it silently does so
      as the guest expects reboot to happen because this is usual pHyp firmware
      behavior.
      
      This defines custom KVMPPC_H_CAS hypercall. The current SLOF already
      has support for it.
      
      This implements stub which returns very basic tree (root node,
      no properties) to the guest.
      
      As the return buffer does not contain any change, no change in behavior is
      expected.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      2a6593cb
    • A
      target-ppc: Define Processor Compatibility Masks · 1a68b714
      Alexey Kardashevskiy 提交于
      This introduces PCR mask for supported compatibility modes.
      This will be used later by the ibm,client-architecture-support call.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      1a68b714
    • A
      target-ppc: Implement "compat" CPU option · 6d9412ea
      Alexey Kardashevskiy 提交于
      This adds basic support for the "compat" CPU option. By specifying
      the compat property, the user can manually switch guest CPU mode from
      "raw" to "architected".
      
      This defines feature disable bits which are not used yet as, for example,
      PowerISA 2.07 says if 2.06 mode is selected, the TM bit does not matter -
      transactional memory (TM) will be disabled because 2.06 does not define
      it at all. The same is true for VSX and 2.05 mode. So just setting a mode
      must be ok.
      
      This does not change the existing behavior as the actual compatibility
      mode support is coming in next patches.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      [agraf: fix compilation on 32bit hosts]
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      6d9412ea
    • A
      spapr: Move SMT-related properties out of skeleton fdt · 833d4668
      Alexey Kardashevskiy 提交于
      The upcoming support of the "ibm,client-architecture-support"
      reconfiguration call will be able to change dynamically the number
      of threads per core (SMT mode). From the device tree prospective
      this does not change the number of CPU nodes (as it is one node per
      a CPU core) but affects content and size of the ibm,ppc-interrupt-server#s
      and ibm,ppc-interrupt-gserver#s properties.
      
      This moves ibm,ppc-interrupt-server#s and ibm,ppc-interrupt-gserver#s
      out of the device tree skeleton.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      833d4668
    • A
      target-ppc: Add "compat" CPU option · 8dfa3a5e
      Alexey Kardashevskiy 提交于
      PowerISA defines a compatibility mode for server POWERPC CPUs which
      is supported by the PCR special register which is hypervisor privileged.
      To support this mode for guests, SPAPR defines a set of virtual PVRs,
      one per PowerISA spec version. When a hypervisor needs a guest to work in
      a compatibility mode, it puts a virtual PVR value into @cpu-version
      property of a CPU node.
      
      This introduces a "compat" CPU option which defines maximal compatibility
      mode enabled. The supported modes are power6/power7/power8.
      
      This does not change the existing behaviour, new property will be used
      by next patches.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      8dfa3a5e
    • A
      PPC: openpic_kvm: Implement reset · af354f19
      Alexander Graf 提交于
      When we trigger a system reset, the in-kernel openpic controller should also
      get reset. This happens through a write to the GCR.RESET register which is
      the same mechanism a guest would use to manually reset the device.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      af354f19
    • P
      openpic: Reset IRQ source private members · ffd5e9fe
      Paul Janzen 提交于
      The openpic emulation code maintains an allowable-CPU's bitmap
      ("destmask") for each IRQ source which is calculated from the IDR
      register value whenever the guest OS writes to it.  However, if the
      guest OS relies on the system to set the IDR register to a default
      value at reset, and does not write IDR, then destmask does not get
      updated, and interrupts do not get propagated to the guest.
      Additionally, if an IRQ source is marked as critical, the source's
      internal "output" and "nomask" fields are not correctly reset when the
      PIC is reset.
      
      Fix both these issues by calling write_IRQreg_idr from within
      openpic_reset, instead of simply setting the IDR register to the
      specified idr_reset value.
      Signed-off-by: NPaul Janzen <pcj@pauljanzen.org>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      ffd5e9fe
    • P
      openpic: Move definition of openpic_reset · 8ebe65f3
      Paul Janzen 提交于
      This patch moves the definition of openpic_reset after the various
      register read/write functions. No functional change.  It is in
      preparation for using the register read/write functions in
      openpic_reset.
      Signed-off-by: NPaul Janzen <pcj@pauljanzen.org>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      8ebe65f3
    • B
    • G
      target-ppc: Introduce callback for interrupt endianness · 382d2db6
      Greg Kurz 提交于
      POWER7, POWER7+ and POWER8 families use the ILE bit of the LPCR
      special purpose register to decide the endianness to use when
      entering interrupt handlers. When running a Linux guest, this
      provides a hint on the endianness used by the kernel. And when
      it comes to dumping a guest, the information is needed to write
      ELF headers using the kernel endianness.
      Suggested-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Reviewed-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NGreg Kurz <gkurz@linux.vnet.ibm.com>
      [agraf: change subject line]
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      382d2db6
    • B
      target-ppc: Support dump for little endian ppc64 · 0c967de9
      Bharata B Rao 提交于
      Fix ppc64 arch specific dump code to support all combinations of little/big
      endian hosts/guests. FWIW the current code is broken for altivec registers
      when guest and host have a different endianness: these 128-bit registers
      are written to guest memory as a two 64-bit entities and we should also swap
      them.
      
      Unit testing was done with the following program provided by Tom Musta:
      
      #include <stdio.h>
      #include <stdint.h>
      #include <stdlib.h>
      
      int main(int argc, char** argv)
      {
      
      __uint128_t v = ((__uint128_t)0x0001020304050607ull << 64) |
      0x08090a0b0c0d0e0full;
      
      register void * vptr asm ("r11");
      vptr = &v;
      
      for(;;)
      asm volatile ("lvx 30,0,11" );
      }
      
      When sending SIGABRT to this program and examining the core file, we get:
      
      - ppc64  : 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
      - ppc64le: 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
      
      We expect to find the very same layout in the QEMU dump since they are
      real core files. This is what we get:
      
      - ppc64 host, ppc64 guest   : 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
      - ppc64 host, ppc64le guest : 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
      - x86_64 host, ppc64 guest  : 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
      - x86_64 host, ppc64le guest: 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00
      
      We introduce a NoteFuncArg type to avoid adding extra arguments to all note
      functions.
      Signed-off-by: NBharata B Rao <bharata@linux.vnet.ibm.com>
      [ rebased on top of current master branch,
        introduced NoteFuncArg,
        use new cpu_to_dump{16,32,64} endian helpers,
        fix altivec support,
        Greg Kurz <gkurz@linux.vnet.ibm.com> ]
      Reviewed-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NGreg Kurz <gkurz@linux.vnet.ibm.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      0c967de9
    • B
      dump: Make DumpState and endian conversion routines available for arch-specific dump code · acb0ef58
      Bharata B Rao 提交于
      Make DumpState and endian conversion routines available for arch-specific dump
      code by moving into dump.h. DumpState will be needed by arch-specific dump
      code to access target endian information from DumpState->ArchDumpInfo. Also
      break the dependency of dump.h from stubs/dump.c by creating a separate
      dump-arch.h.
      
      This patch doesn't change any functionality.
      Signed-off-by: NBharata B Rao <bharata@linux.ibm.com>
      [ rebased on top of current master branch,
        renamed endian helpers to cpu_to_dump{16,32,64},
        pass a DumpState * argument to endian helpers,
        Greg Kurz <gkurz@linux.vnet.ibm.com> ]
      Signed-off-by: NGreg Kurz <gkurz@linux.vnet.ibm.com>
      [agraf: fix to apply]
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      acb0ef58
    • M
      macio: handle non-block ATAPI DMA transfers · 85720d36
      Mark Cave-Ayland 提交于
      Currently the macio DMA routines assume that all DMA requests are for read/write
      block transfers. This is not always the case for ATAPI, for example when
      requesting a TOC where the response is generated directly in the IDE buffer.
      
      Detect these non-block ATAPI DMA transfers (where no lba is specified in the
      command) and copy the results directly into RAM as indicated by the DBDMA
      descriptor. This fixes CDROM access under MorphOS.
      Signed-off-by: NMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      85720d36
    • A
      spapr: Add ibm, chip-id property in device tree · 10582ff8
      Alexey Kardashevskiy 提交于
      This adds a "ibm,chip-id" property for CPU nodes which should be the same
      for all cores in the same CPU socket. The recent guest kernels use this
      information to associate threads with sockets.
      
      Refer to the kernel commit 256f2d4b463d3030ebc8d2b54f427543814a2bdc
      for more details.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      10582ff8
    • A
      spapr: Add support for time base offset migration · 98a8b524
      Alexey Kardashevskiy 提交于
      This allows guests to have a different timebase origin from the host.
      
      This is needed for migration, where a guest can migrate from one host
      to another and the two hosts might have a different timebase origin.
      However, the timebase seen by the guest must not go backwards, and
      should go forwards only by a small amount corresponding to the time
      taken for the migration.
      
      This is only supported for recent POWER hardware which has the TBU40
      (timebase upper 40 bits) register. That includes POWER6, 7, 8 but not
      970.
      
      This adds kvm_access_one_reg() to access a special register which is not
      in env->spr. This requires kvm_set_one_reg/kvm_get_one_reg patch.
      
      The feature must be present in the host kernel.
      
      This bumps vmstate_spapr::version_id and enables new vmstate_ppc_timebase
      only for it. Since the vmstate_spapr::minimum_version_id remains
      unchanged, migration from older QEMU is supported but without
      vmstate_ppc_timebase.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      98a8b524
    • A
      PPC: e500: Move to u-boot as firmware · 3812c71f
      Alexander Graf 提交于
      Almost all platforms QEMU emulates have some sort of firmware they can load
      to expose a guest environment that closely resembles the way it would look
      like on real hardware.
      
      This patch introduces such a firmware on our e500 platforms. U-boot is the
      default firmware for most of these systems and as such our preferred choice.
      
      For backwards compatibility reasons (and speed and simplicity) we skip u-boot
      when you use -kernel and don't pass in -bios. For all other combinations like
      -kernel and -bios or no -kernel you get u-boot as firmware.
      
      This allows you to modify the boot environment, execute a networked boot through
      the e1000 emulation and execute u-boot payloads.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      3812c71f
    • A
      PPC: Add u-boot firmware for e500 · 4e73c781
      Alexander Graf 提交于
      This adds a special build of u-boot tailored for the e500 platforms we
      emulate. It is based on the current version of upstream u-boot which
      contains all the code necessary to drive our QEMU provided machines.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      4e73c781
    • A
      PPC: e500: Expose kernel load address in dt · 903585de
      Alexander Graf 提交于
      We want to move to a model where firmware loads our kernel. To achieve
      this we need to be able to tell firmware where the kernel lies.
      
      Let's copy the mechanism we already use for -M pseries and expose the
      kernel load address and size through the device tree.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      903585de
    • A
      PPC: Add dcbtls emulation · 4d09d529
      Alexander Graf 提交于
      The dcbtls instruction is able to lock data inside the L1 cache.
      
      Unfortunately we don't emulate any caches, so we have to tell the guest
      that its locking attempt failed.
      
      However, by implementing the instruction we at least don't give the
      guest a program exception which it definitely does not expect.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      4d09d529
    • A
      PPC: Properly emulate L1CSR0 and L1CSR1 · ea71258d
      Alexander Graf 提交于
      There are 2 L1 cache control registers - one for data (L1CSR0) and
      one for instructions (L1CSR1).
      
      Emulate both of them well enough to give the guest the illusion that
      it could actually do anything about its caches.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      ea71258d
    • A
      PPC: Add L1CFG1 SPR emulation · d2ea2bf7
      Alexander Graf 提交于
      In addition to the L1 data cache configuration register L1CFG0 there is
      also another one for the L1 instruction cache called L1CFG1.
      
      Emulate that one with the same values as the data one.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      d2ea2bf7
    • A
      PPC: Fix SPR access control of L1CFG0 · deb05c4c
      Alexander Graf 提交于
      The L1CFG0 register on e200 and e500 is "User RO" according to the
      specifications. So let's make it user readable and world unwritable.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      deb05c4c
    • A
      PPC: Add definitions for GIVORs · 45eb5611
      Alexander Graf 提交于
      We're missing SPR definitions for GIVORs. Add them to the list of SPRs.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      45eb5611
    • A
      PPC: Make all e500 CPUs SVR aware · f1d9ec8b
      Alexander Graf 提交于
      Our pre-e500mc e500 CPU types didn't get instanciated with SVR information,
      even though those systems do support the SVR register.
      
      Spawn them with the SVR tag so that they don't get confused when someone tries
      to read SPR_SVR.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      f1d9ec8b
    • A
      PPC: Fail on leaking temporaries · 3de31797
      Alexander Graf 提交于
      When QEMU gets compiled with --enable-debug-tcg we can check for temporary
      leakage. Implement the necessary target code for this and fail emulation
      when we hit a leakage.
      
      This hopefully ensures that we don't get new leaks.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      3de31797
    • A
      PPC: Fix TCG chunks that don't free their temps · c80d1df5
      Alexander Graf 提交于
      We want to make sure that every instruction cleans up after itself and
      clears every temporary it allocated.
      
      While checking whether this is already the case, I came across a few
      cases where it isn't. This patch fixes every translation I found that
      doesn't free their allocated temporaries.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      c80d1df5
    • B
      PPC: e500: implement PCI INTx routing · 3016dca0
      Bharat Bhushan 提交于
      This patch adds pci pin to irq_num routing callback.
      This callback is called from pci_device_route_intx_to_irq to
      find which pci device maps to which irq.
      This fix is required for pci-device passthrough using vfio.
      
      Also without this patch we gets below prints
      
      "
        PCI: Bug - unimplemented PCI INTx routing (e500-pcihost)
        qemu-system-ppc64: PCI: Bug - unimplemented PCI INTx routing (e500-pcihost) "
      
      and Legacy interrupt does not work with pci device passthrough.
      Signed-off-by: NBharat Bhushan <Bharat.Bhushan@freescale.com>
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      [agraf: remove double semicolon]
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      3016dca0
    • B
      PPC: e500: some pci related cleanup · d575a6ce
      Bharat Bhushan 提交于
      - Use PCI_NUM_PINS rather than hardcoding
       - use "pin" wherever possible
      Signed-off-by: NBharat Bhushan <Bharat.Bhushan@freescale.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      d575a6ce
    • A
      KVM: PPC: Don't secretly add 1T segment feature to CPU · 08215d8f
      Alexander Graf 提交于
      When we select a CPU type that does not support 1TB segments, we should
      not expose 1TB just because KVM supports 1TB segments. User configuration
      always wins over feature availability.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      08215d8f
    • T
      target-ppc: Refactor AES Instructions · c1542453
      Tom Musta 提交于
      This patch refactors the PowerPC Advanced Encryption Standard (AES) instructions
      to use the common AES tables (include/qemu/aes.h).
      
      Specifically:
          - vsbox is recoded to use the AES_sbox table.
          - vcipher, vcipherlast and vncipherlast are all recoded to use the optimized
            AES_t[ed][0-4] tables.
          - vncipher is recoded to use a combination of InvS-Box, InvShiftRows and
            InvMixColumns tables.  It was not possible to use AES_Td[0-4] due to a
            slight difference in how PowerPC implements vncipher.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      c1542453
    • T
      target-arm: Use Common Tables in AES Instructions · 59dcd29a
      Tom Musta 提交于
      This patch refactors the ARM cryptographic instructions to use the
      (newly) added common tables from include/qemu/aes.h.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      59dcd29a
    • T
      target-i386: Use Common ShiftRows and InvShiftRows Tables · 04af534d
      Tom Musta 提交于
      This patch eliminates the (now) redundant copy of the Advanced Encryption Standard (AES)
      ShiftRows and InvShiftRows tables; the code is updated to use the common tables declared in
      include/qemu/aes.h.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      04af534d
    • T
      util: Add InvMixColumns · bfd8f5b7
      Tom Musta 提交于
      This patch adds the table implementation of the Advanced Encryption Standard (AES)
      InvMixColumns transformation.
      
      The patch is intentionally asymmetrical -- the MixColumns table is not added because
      there is no known use for it at this time.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      bfd8f5b7
    • T
      util: Add AES ShiftRows and InvShiftRows Tables · 1c1a6d20
      Tom Musta 提交于
      This patch adds tables that implement the Advanced Encryption Standard (AES) ShiftRows
      and InvShiftRows transformations.  These are commonly used in instruction models.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      1c1a6d20
    • T
      util: Add S-Box and InvS-Box Arrays to Common AES Utils · 40c84b54
      Tom Musta 提交于
      This patch adds tables for the S-Box and InvS-Box transformations commonly used by various
      Advanced Encription Standard (AES) instruction models.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      40c84b54