Skip to content
Permalink
Browse files

Merge remote-tracking branch 'stable/linux-4.14.y' into rpi-4.14.y

  • Loading branch information...
popcornmix committed May 5, 2018
2 parents 354898f + 7d6240f commit 865ddc1393f558198e7e7ce70928ff2e49c4f7f6
Showing with 2,793 additions and 737 deletions.
  1. +3 −0 Documentation/admin-guide/kernel-parameters.txt
  2. +8 −1 Documentation/virtual/kvm/api.txt
  3. +30 −0 Documentation/virtual/kvm/arm/psci.txt
  4. +1 −1 Makefile
  5. +1 −0 arch/arm/configs/socfpga_defconfig
  6. +3 −0 arch/arm/include/asm/kvm_host.h
  7. +6 −0 arch/arm/include/uapi/asm/kvm.h
  8. +13 −0 arch/arm/kvm/guest.c
  9. +0 −11 arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi
  10. +3 −0 arch/arm64/include/asm/kvm_host.h
  11. +6 −0 arch/arm64/include/uapi/asm/kvm.h
  12. +13 −1 arch/arm64/kvm/guest.c
  13. +1 −0 arch/microblaze/Kconfig.platform
  14. +0 −4 arch/microblaze/lib/fastcopy.S
  15. +38 −23 arch/powerpc/kernel/eeh_driver.c
  16. +2 −0 arch/powerpc/mm/mem.c
  17. +19 −4 arch/powerpc/platforms/powernv/npu-dma.c
  18. +5 −3 arch/powerpc/platforms/powernv/opal-rtc.c
  19. +47 −0 arch/s390/Kconfig
  20. +10 −0 arch/s390/Makefile
  21. +149 −0 arch/s390/include/asm/alternative.h
  22. +24 −0 arch/s390/include/asm/barrier.h
  23. +18 −0 arch/s390/include/asm/facility.h
  24. +2 −1 arch/s390/include/asm/kvm_host.h
  25. +5 −2 arch/s390/include/asm/lowcore.h
  26. +17 −0 arch/s390/include/asm/nospec-branch.h
  27. +4 −0 arch/s390/include/asm/processor.h
  28. +4 −0 arch/s390/include/asm/thread_info.h
  29. +4 −1 arch/s390/include/uapi/asm/kvm.h
  30. +5 −1 arch/s390/kernel/Makefile
  31. +112 −0 arch/s390/kernel/alternative.c
  32. +5 −0 arch/s390/kernel/early.c
  33. +225 −25 arch/s390/kernel/entry.S
  34. +1 −0 arch/s390/kernel/ipl.c
  35. +61 −4 arch/s390/kernel/module.c
  36. +169 −0 arch/s390/kernel/nospec-branch.c
  37. +18 −0 arch/s390/kernel/processor.c
  38. +13 −1 arch/s390/kernel/setup.c
  39. +6 −1 arch/s390/kernel/smp.c
  40. +9 −0 arch/s390/kernel/uprobes.c
  41. +37 −0 arch/s390/kernel/vmlinux.lds.S
  42. +12 −0 arch/s390/kvm/kvm-s390.c
  43. +30 −0 arch/s390/kvm/vsie.c
  44. +31 −0 arch/x86/include/uapi/asm/msgbuf.h
  45. +42 −0 arch/x86/include/uapi/asm/shmbuf.h
  46. +2 −4 arch/x86/kernel/cpu/microcode/core.c
  47. +0 −2 arch/x86/kernel/cpu/microcode/intel.c
  48. +2 −0 arch/x86/kernel/smpboot.c
  49. +9 −1 block/bfq-iosched.c
  50. +2 −0 crypto/drbg.c
  51. +25 −2 drivers/acpi/acpi_video.c
  52. +11 −6 drivers/amba/bus.c
  53. +8 −0 drivers/android/binder.c
  54. +22 −27 drivers/block/swim.c
  55. +3 −3 drivers/block/swim3.c
  56. +1 −1 drivers/cdrom/cdrom.c
  57. +67 −23 drivers/char/random.c
  58. +103 −28 drivers/char/tpm/tpm-interface.c
  59. +1 −0 drivers/char/tpm/tpm.h
  60. +75 −33 drivers/char/tpm/tpm_crb.c
  61. +3 −1 drivers/char/tpm/tpm_tis_core.c
  62. +71 −86 drivers/char/virtio_console.c
  63. +11 −3 drivers/cpufreq/powernv-cpufreq.c
  64. +1 −1 drivers/fpga/altera-ps-spi.c
  65. +5 −2 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
  66. +3 −0 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
  67. +5 −6 drivers/gpu/drm/i915/intel_runtime_pm.c
  68. +2 −2 drivers/gpu/drm/virtio/virtgpu_vq.c
  69. +1 −0 drivers/message/fusion/mptsas.c
  70. +28 −5 drivers/mtd/chips/cfi_cmdset_0001.c
  71. +6 −3 drivers/mtd/chips/cfi_cmdset_0002.c
  72. +1 −1 drivers/mtd/nand/tango_nand.c
  73. +17 −2 drivers/mtd/spi-nor/cadence-quadspi.c
  74. +1 −2 drivers/net/bonding/bond_main.c
  75. +8 −0 drivers/net/ethernet/amd/xgbe/xgbe-common.h
  76. +16 −0 drivers/net/ethernet/amd/xgbe/xgbe-debugfs.c
  77. +1 −0 drivers/net/ethernet/amd/xgbe/xgbe-main.c
  78. +19 −5 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
  79. +2 −0 drivers/net/ethernet/amd/xgbe/xgbe-pci.c
  80. +178 −18 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c
  81. +9 −0 drivers/net/ethernet/amd/xgbe/xgbe.h
  82. +11 −0 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
  83. +1 −1 drivers/net/ethernet/ti/cpsw.c
  84. +4 −0 drivers/net/ppp/pppoe.c
  85. +31 −7 drivers/net/team/team.c
  86. +39 −29 drivers/net/virtio_net.c
  87. +2 −3 drivers/net/wireless/ath/ath10k/mac.c
  88. +5 −2 drivers/of/fdt.c
  89. +30 −23 drivers/pci/host/pci-aardvark.c
  90. +8 −15 drivers/pinctrl/intel/pinctrl-intel.c
  91. +23 −14 drivers/rtc/rtc-opal.c
  92. +11 −2 drivers/s390/block/dasd_alias.c
  93. +2 −0 drivers/s390/char/Makefile
  94. +11 −3 drivers/s390/cio/chsc.c
  95. +12 −7 drivers/s390/cio/vfio_ccw_fsm.c
  96. +2 −0 drivers/scsi/sd.c
  97. +22 −1 drivers/tty/n_gsm.c
  98. +4 −2 drivers/tty/serial/earlycon.c
  99. +4 −1 drivers/tty/tty_io.c
  100. +13 −16 drivers/tty/tty_ldisc.c
  101. +1 −0 drivers/usb/core/hcd.c
  102. +9 −1 drivers/usb/core/hub.c
  103. +3 −0 drivers/usb/core/quirks.c
  104. +4 −1 drivers/usb/host/xhci-pci.c
  105. +0 −1 drivers/usb/host/xhci-plat.c
  106. +1 −0 drivers/usb/serial/Kconfig
  107. +1 −0 drivers/usb/serial/cp210x.c
  108. +2 −1 drivers/usb/serial/ftdi_sio.c
  109. +7 −0 drivers/usb/serial/usb-serial-simple.c
  110. +1 −1 drivers/usb/typec/ucsi/ucsi.c
  111. +5 −0 drivers/usb/usbip/stub_main.c
  112. +1 −1 drivers/usb/usbip/usbip_common.h
  113. +0 −4 drivers/usb/usbip/usbip_event.c
  114. +13 −0 drivers/usb/usbip/vhci_hcd.c
  115. +15 −2 fs/ext4/balloc.c
  116. +11 −5 fs/ext4/extents.c
  117. +7 −0 fs/ext4/ialloc.c
  118. +1 −0 fs/ext4/super.c
  119. +1 −0 fs/jbd2/transaction.c
  120. +1 −1 include/asm-generic/vmlinux.lds.h
  121. +14 −2 include/kvm/arm_psci.h
  122. +1 −3 include/linux/fsnotify_backend.h
  123. +8 −1 include/linux/hmm.h
  124. +5 −2 include/linux/if_vlan.h
  125. +1 −0 include/linux/mtd/flashchip.h
  126. +14 −7 include/linux/serial_core.h
  127. +1 −1 include/linux/tpm.h
  128. +1 −1 include/linux/tty.h
  129. +3 −0 include/linux/virtio.h
  130. +2 −1 include/net/ife.h
  131. +1 −0 include/net/llc_conn.h
  132. +1 −0 include/net/tcp.h
  133. +5 −2 include/sound/control.h
  134. +1 −0 include/uapi/linux/kvm.h
  135. +6 −5 kernel/time/tick-sched.c
  136. +1 −1 kernel/trace/trace_entries.h
  137. +5 −7 lib/kobject.c
  138. +7 −0 net/ceph/messenger.c
  139. +11 −3 net/ceph/mon_client.c
  140. +1 −1 net/core/dev.c
  141. +26 −14 net/core/neighbour.c
  142. +6 −7 net/dns_resolver/dns_key.c
  143. +36 −2 net/ife/ife.c
  144. +4 −3 net/ipv4/tcp.c
  145. +2 −5 net/ipv4/tcp_input.c
  146. +2 −0 net/ipv6/route.c
  147. +1 −1 net/ipv6/seg6_iptunnel.c
  148. +7 −0 net/l2tp/l2tp_ppp.c
  149. +12 −2 net/llc/af_llc.c
  150. +1 −8 net/llc/llc_c_ac.c
  151. +21 −1 net/llc/llc_conn.c
  152. +58 −25 net/packet/af_packet.c
  153. +5 −5 net/packet/internal.h
  154. +7 −2 net/sched/act_ife.c
  155. +30 −30 net/sctp/ipv6.c
  156. +4 −6 net/smc/af_smc.c
  157. +4 −5 net/strparser/strparser.c
  158. +2 −1 net/tipc/netlink.c
  159. +2 −0 security/commoncap.c
  160. +4 −3 sound/core/pcm_compat.c
  161. +12 −12 sound/core/pcm_native.c
  162. +9 −6 sound/core/seq/oss/seq_oss_event.c
  163. +2 −0 sound/core/seq/oss/seq_oss_midi.c
  164. +49 −36 sound/core/seq/oss/seq_oss_synth.c
  165. +2 −1 sound/core/seq/oss/seq_oss_synth.h
  166. +5 −2 sound/drivers/opl3/opl3_synth.c
  167. +1 −1 sound/firewire/dice/dice-stream.c
  168. +1 −1 sound/firewire/dice/dice.c
  169. +9 −4 sound/pci/asihpi/hpimsginit.c
  170. +3 −1 sound/pci/asihpi/hpioctl.c
  171. +11 −1 sound/pci/hda/hda_hwdep.c
  172. +8 −1 sound/pci/hda/patch_hdmi.c
  173. +5 −0 sound/pci/hda/patch_realtek.c
  174. +14 −10 sound/pci/rme9652/hdspm.c
  175. +4 −2 sound/pci/rme9652/rme9652.c
  176. +7 −0 sound/soc/fsl/fsl_esai.c
  177. +3 −0 sound/usb/mixer_maps.c
  178. +1 −1 tools/lib/str_error_r.c
  179. +4 −1 tools/lib/subcmd/pager.c
  180. +10 −5 virt/kvm/arm/arm.c
  181. +60 −0 virt/kvm/arm/psci.c
@@ -2541,6 +2541,9 @@

noalign [KNL,ARM]

noaltinstr [S390] Disables alternative instructions patching
(CPU alternatives feature).

noapic [SMP,APIC] Tells the kernel to not make use of any
IOAPICs that may be present in the system.

@@ -1940,6 +1940,9 @@ ARM 32-bit VFP control registers have the following id bit patterns:
ARM 64-bit FP registers have the following id bit patterns:
0x4030 0000 0012 0 <regno:12>

ARM firmware pseudo-registers have the following bit pattern:
0x4030 0000 0014 <regno:16>


arm64 registers are mapped using the lower 32 bits. The upper 16 of
that is the register group type, or coprocessor number:
@@ -1956,6 +1959,9 @@ arm64 CCSIDR registers are demultiplexed by CSSELR value:
arm64 system registers have the following id bit patterns:
0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3>

arm64 firmware pseudo-registers have the following bit pattern:
0x6030 0000 0014 <regno:16>


MIPS registers are mapped using the lower 32 bits. The upper 16 of that is
the register group type:
@@ -2490,7 +2496,8 @@ Possible features:
and execute guest code when KVM_RUN is called.
- KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
- KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 for the CPU.
- KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 (or a future revision
backward compatible with v0.2) for the CPU.
Depends on KVM_CAP_ARM_PSCI_0_2.
- KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU.
Depends on KVM_CAP_ARM_PMU_V3.
@@ -0,0 +1,30 @@
KVM implements the PSCI (Power State Coordination Interface)
specification in order to provide services such as CPU on/off, reset
and power-off to the guest.

The PSCI specification is regularly updated to provide new features,
and KVM implements these updates if they make sense from a virtualization
point of view.

This means that a guest booted on two different versions of KVM can
observe two different "firmware" revisions. This could cause issues if
a given guest is tied to a particular PSCI revision (unlikely), or if
a migration causes a different PSCI version to be exposed out of the
blue to an unsuspecting guest.

In order to remedy this situation, KVM exposes a set of "firmware
pseudo-registers" that can be manipulated using the GET/SET_ONE_REG
interface. These registers can be saved/restored by userspace, and set
to a convenient value if required.

The following register is defined:

* KVM_REG_ARM_PSCI_VERSION:

- Only valid if the vcpu has the KVM_ARM_VCPU_PSCI_0_2 feature set
(and thus has already been initialized)
- Returns the current PSCI version on GET_ONE_REG (defaulting to the
highest PSCI version implemented by KVM and compatible with v0.2)
- Allows any PSCI version implemented by KVM and compatible with
v0.2 to be set with SET_ONE_REG
- Affects the whole VM (even if the register view is per-vcpu)
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 4
PATCHLEVEL = 14
SUBLEVEL = 37
SUBLEVEL = 39
EXTRAVERSION =
NAME = Petit Gorille

@@ -57,6 +57,7 @@ CONFIG_MTD_M25P80=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_DENALI_DT=y
CONFIG_MTD_SPI_NOR=y
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
CONFIG_SPI_CADENCE_QUADSPI=y
CONFIG_OF_OVERLAY=y
CONFIG_OF_CONFIGFS=y
@@ -75,6 +75,9 @@ struct kvm_arch {
/* Interrupt controller */
struct vgic_dist vgic;
int max_vcpus;

/* Mandated version of PSCI */
u32 psci_version;
};

#define KVM_NR_MEM_OBJS 40
@@ -180,6 +180,12 @@ struct kvm_arch_memory_slot {
#define KVM_REG_ARM_VFP_FPINST 0x1009
#define KVM_REG_ARM_VFP_FPINST2 0x100A

/* KVM-as-firmware specific pseudo-registers */
#define KVM_REG_ARM_FW (0x0014 << KVM_REG_ARM_COPROC_SHIFT)
#define KVM_REG_ARM_FW_REG(r) (KVM_REG_ARM | KVM_REG_SIZE_U64 | \
KVM_REG_ARM_FW | ((r) & 0xffff))
#define KVM_REG_ARM_PSCI_VERSION KVM_REG_ARM_FW_REG(0)

/* Device Control API: ARM VGIC */
#define KVM_DEV_ARM_VGIC_GRP_ADDR 0
#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
@@ -22,6 +22,7 @@
#include <linux/module.h>
#include <linux/vmalloc.h>
#include <linux/fs.h>
#include <kvm/arm_psci.h>
#include <asm/cputype.h>
#include <linux/uaccess.h>
#include <asm/kvm.h>
@@ -176,6 +177,7 @@ static unsigned long num_core_regs(void)
unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu)
{
return num_core_regs() + kvm_arm_num_coproc_regs(vcpu)
+ kvm_arm_get_fw_num_regs(vcpu)
+ NUM_TIMER_REGS;
}

@@ -196,6 +198,11 @@ int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
uindices++;
}

ret = kvm_arm_copy_fw_reg_indices(vcpu, uindices);
if (ret)
return ret;
uindices += kvm_arm_get_fw_num_regs(vcpu);

ret = copy_timer_indices(vcpu, uindices);
if (ret)
return ret;
@@ -214,6 +221,9 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
return get_core_reg(vcpu, reg);

if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_FW)
return kvm_arm_get_fw_reg(vcpu, reg);

if (is_timer_reg(reg->id))
return get_timer_reg(vcpu, reg);

@@ -230,6 +240,9 @@ int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
return set_core_reg(vcpu, reg);

if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_FW)
return kvm_arm_set_fw_reg(vcpu, reg);

if (is_timer_reg(reg->id))
return set_timer_reg(vcpu, reg);

@@ -155,17 +155,6 @@
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
};

vdd_log: vdd-log {
compatible = "pwm-regulator";
pwms = <&pwm2 0 25000 0>;
regulator-name = "vdd_log";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <1400000>;
regulator-always-on;
regulator-boot-on;
status = "okay";
};
};

&cpu_b0 {
@@ -71,6 +71,9 @@ struct kvm_arch {

/* Interrupt controller */
struct vgic_dist vgic;

/* Mandated version of PSCI */
u32 psci_version;
};

#define KVM_NR_MEM_OBJS 40
@@ -200,6 +200,12 @@ struct kvm_arch_memory_slot {
#define KVM_REG_ARM_TIMER_CNT ARM64_SYS_REG(3, 3, 14, 3, 2)
#define KVM_REG_ARM_TIMER_CVAL ARM64_SYS_REG(3, 3, 14, 0, 2)

/* KVM-as-firmware specific pseudo-registers */
#define KVM_REG_ARM_FW (0x0014 << KVM_REG_ARM_COPROC_SHIFT)
#define KVM_REG_ARM_FW_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | \
KVM_REG_ARM_FW | ((r) & 0xffff))
#define KVM_REG_ARM_PSCI_VERSION KVM_REG_ARM_FW_REG(0)

/* Device Control API: ARM VGIC */
#define KVM_DEV_ARM_VGIC_GRP_ADDR 0
#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
@@ -25,6 +25,7 @@
#include <linux/module.h>
#include <linux/vmalloc.h>
#include <linux/fs.h>
#include <kvm/arm_psci.h>
#include <asm/cputype.h>
#include <linux/uaccess.h>
#include <asm/kvm.h>
@@ -205,7 +206,7 @@ static int get_timer_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu)
{
return num_core_regs() + kvm_arm_num_sys_reg_descs(vcpu)
+ NUM_TIMER_REGS;
+ kvm_arm_get_fw_num_regs(vcpu) + NUM_TIMER_REGS;
}

/**
@@ -225,6 +226,11 @@ int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
uindices++;
}

ret = kvm_arm_copy_fw_reg_indices(vcpu, uindices);
if (ret)
return ret;
uindices += kvm_arm_get_fw_num_regs(vcpu);

ret = copy_timer_indices(vcpu, uindices);
if (ret)
return ret;
@@ -243,6 +249,9 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
return get_core_reg(vcpu, reg);

if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_FW)
return kvm_arm_get_fw_reg(vcpu, reg);

if (is_timer_reg(reg->id))
return get_timer_reg(vcpu, reg);

@@ -259,6 +268,9 @@ int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
return set_core_reg(vcpu, reg);

if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_FW)
return kvm_arm_set_fw_reg(vcpu, reg);

if (is_timer_reg(reg->id))
return set_timer_reg(vcpu, reg);

@@ -20,6 +20,7 @@ config OPT_LIB_FUNCTION
config OPT_LIB_ASM
bool "Optimalized lib function ASM"
depends on OPT_LIB_FUNCTION && (XILINX_MICROBLAZE0_USE_BARREL = 1)
depends on CPU_BIG_ENDIAN
default n
help
Allows turn on optimalized library function (memcpy and memmove).
@@ -29,10 +29,6 @@
* between mem locations with size of xfer spec'd in bytes
*/

#ifdef __MICROBLAZEEL__
#error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
#endif

#include <linux/linkage.h>
.text
.globl memcpy

0 comments on commit 865ddc1

Please sign in to comment.
You can’t perform that action at this time.