Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 12 Jan 2016 21:22:12 +0000 (13:22 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 12 Jan 2016 21:22:12 +0000 (13:22 -0800)
Pull KVM updates from Paolo Bonzini:
 "PPC changes will come next week.

   - s390: Support for runtime instrumentation within guests, support of
     248 VCPUs.

   - ARM: rewrite of the arm64 world switch in C, support for 16-bit VM
     identifiers.  Performance counter virtualization missed the boat.

   - x86: Support for more Hyper-V features (synthetic interrupt
     controller), MMU cleanups"

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (115 commits)
  kvm: x86: Fix vmwrite to SECONDARY_VM_EXEC_CONTROL
  kvm/x86: Hyper-V SynIC timers tracepoints
  kvm/x86: Hyper-V SynIC tracepoints
  kvm/x86: Update SynIC timers on guest entry only
  kvm/x86: Skip SynIC vector check for QEMU side
  kvm/x86: Hyper-V fix SynIC timer disabling condition
  kvm/x86: Reorg stimer_expiration() to better control timer restart
  kvm/x86: Hyper-V unify stimer_start() and stimer_restart()
  kvm/x86: Drop stimer_stop() function
  kvm/x86: Hyper-V timers fix incorrect logical operation
  KVM: move architecture-dependent requests to arch/
  KVM: renumber vcpu->request bits
  KVM: document which architecture uses each request bit
  KVM: Remove unused KVM_REQ_KICK to save a bit in vcpu->requests
  kvm: x86: Check kvm_write_guest return value in kvm_write_wall_clock
  KVM: s390: implement the RI support of guest
  kvm/s390: drop unpaired smp_mb
  kvm: x86: fix comment about {mmu,nested_mmu}.gva_to_gpa
  KVM: x86: MMU: Use clear_page() instead of init_shadow_page_table()
  arm/arm64: KVM: Detect vGIC presence at runtime
  ...

1  2 
MAINTAINERS
arch/arm64/kernel/asm-offsets.c
arch/powerpc/kvm/book3s_hv.c
arch/x86/kvm/svm.c
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c
virt/kvm/arm/vgic.c

diff --combined MAINTAINERS
@@@ -206,7 -206,7 +206,7 @@@ F: include/trace/events/9p.
  A8293 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -395,7 -395,7 +395,7 @@@ M: Sakari Ailus <sakari.ailus@iki.fi
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/adp1653.c
 -F:    include/media/adp1653.h
 +F:    include/media/i2c/adp1653.h
  
  ADP5520 BACKLIGHT DRIVER WITH IO EXPANDER (ADP5520/ADP5501)
  M:    Michael Hennerich <michael.hennerich@analog.com>
@@@ -466,7 -466,7 +466,7 @@@ F: sound/oss/aedsp16.
  AF9013 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -476,7 -476,7 +476,7 @@@ F: drivers/media/dvb-frontends/af9013
  AF9033 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -522,7 -522,7 +522,7 @@@ AIMSLAB FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-aimslab*
  
@@@ -536,7 -536,7 +536,7 @@@ F: include/linux/*aio*.
  AIRSPY MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -614,9 -614,9 +614,9 @@@ F: drivers/crypto/ccp
  F:    include/linux/ccp.h
  
  AMD FAM15H PROCESSOR POWER MONITORING DRIVER
 -M:    Andreas Herrmann <herrmann.der.user@googlemail.com>
 +M:    Huang Rui <ray.huang@amd.com>
  L:    lm-sensors@lm-sensors.org
 -S:    Maintained
 +S:    Supported
  F:    Documentation/hwmon/fam15h_power
  F:    drivers/hwmon/fam15h_power.c
  
@@@ -1773,7 -1773,7 +1773,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/as3645a.c
 -F:    include/media/as3645a.h
 +F:    include/media/i2c/as3645a.h
  
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
@@@ -1896,6 -1896,7 +1896,6 @@@ ATMEL AT91 / AT32 MCI DRIVE
  M:    Ludovic Desroches <ludovic.desroches@atmel.com>
  S:    Maintained
  F:    drivers/mmc/host/atmel-mci.c
 -F:    drivers/mmc/host/atmel-mci-regs.h
  
  ATMEL AT91 / AT32 SERIAL DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
@@@ -2063,7 -2064,7 +2063,7 @@@ F:      net/ax25
  AZ6007 DVB DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/az6007.c
@@@ -2072,7 -2073,7 +2072,7 @@@ AZTECH FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-aztech*
  
@@@ -2125,7 -2126,7 +2125,7 @@@ BDISP ST MEDIA DRIVE
  M:    Fabien Dessenne <fabien.dessenne@st.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Supported
  F:    drivers/media/platform/sti/bdisp
  
@@@ -2518,7 -2519,7 +2518,7 @@@ F:      fs/btrfs
  BTTV VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/bttv/
@@@ -2557,7 -2558,7 +2557,7 @@@ CADET FM/AM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-cadet*
  
@@@ -2850,7 -2851,7 +2850,7 @@@ COBALT MEDIA DRIVE
  M:    Hans Verkuil <hans.verkuil@cisco.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Supported
  F:    drivers/media/pci/cobalt/
  
@@@ -3095,15 -3096,6 +3095,15 @@@ S:    Maintaine
  F:    crypto/ansi_cprng.c
  F:    crypto/rng.c
  
 +CS3308 MEDIA DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/i2c/cs3308.c
 +F:    drivers/media/i2c/cs3308.h
 +
  CS5535 Audio ALSA driver
  M:    Jaya Kumar <jayakumar.alsa@gmail.com>
  S:    Maintained
@@@ -3119,7 -3111,7 +3119,7 @@@ M:      Andy Walls <awalls@md.metrocast.net
  L:    ivtv-devel@ivtvdriver.org (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  W:    http://www.ivtvdriver.org/index.php/Cx18
  S:    Maintained
  F:    Documentation/video4linux/cx18.txt
@@@ -3130,7 -3122,7 +3130,7 @@@ CX2341X MPEG ENCODER HELPER MODUL
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/common/cx2341x*
  F:    include/media/cx2341x*
@@@ -3139,7 -3131,7 +3139,7 @@@ CX24120 MEDIA DRIVE
  M:    Jemma Denson <jdenson@gmail.com>
  M:    Patrick Boettcher <patrick.boettcher@posteo.de>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/cx24120*
  CX88 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/cx88/
@@@ -3156,7 -3148,7 +3156,7 @@@ F:      drivers/media/pci/cx88
  CXD2820R MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3262,7 -3254,7 +3262,7 @@@ F:      drivers/net/wan/pc300
  CYPRESS_FIRMWARE MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3769,14 -3761,14 +3769,14 @@@ DT3155 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/pci/dt3155/
  
  DVB_USB_AF9015 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3786,7 -3778,7 +3786,7 @@@ F:      drivers/media/usb/dvb-usb-v2/af9015
  DVB_USB_AF9035 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3796,7 -3788,7 +3796,7 @@@ F:      drivers/media/usb/dvb-usb-v2/af9035
  DVB_USB_ANYSEE MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3806,7 -3798,7 +3806,7 @@@ F:      drivers/media/usb/dvb-usb-v2/anysee
  DVB_USB_AU6610 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3816,7 -3808,7 +3816,7 @@@ F:      drivers/media/usb/dvb-usb-v2/au6610
  DVB_USB_CE6230 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3826,7 -3818,7 +3826,7 @@@ F:      drivers/media/usb/dvb-usb-v2/ce6230
  DVB_USB_CXUSB MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/media_tree.git
@@@ -3836,7 -3828,7 +3836,7 @@@ F:      drivers/media/usb/dvb-usb/cxusb
  DVB_USB_EC168 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3846,7 -3838,7 +3846,7 @@@ F:      drivers/media/usb/dvb-usb-v2/ec168
  DVB_USB_GL861 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
@@@ -3855,7 -3847,7 +3855,7 @@@ F:      drivers/media/usb/dvb-usb-v2/gl861
  DVB_USB_MXL111SF MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/mxl111sf.git
@@@ -3865,7 -3857,7 +3865,7 @@@ F:      drivers/media/usb/dvb-usb-v2/mxl111s
  DVB_USB_RTL28XXU MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3875,7 -3867,7 +3875,7 @@@ F:      drivers/media/usb/dvb-usb-v2/rtl28xx
  DVB_USB_V2 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3905,7 -3897,7 +3905,7 @@@ F:      Documentation/devicetree/bindings/in
  E4000 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3921,7 -3913,7 +3921,7 @@@ F:      drivers/scsi/eata.
  EC100 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3942,8 -3934,9 +3942,8 @@@ M:      Doug Thompson <dougthompson@xmission
  M:    Borislav Petkov <bp@alien8.de>
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
 -T:    git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git#for-next
 -T:    git://git.kernel.org/pub/linux/kernel/git/mchehab/linux-edac.git#linux_next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
  S:    Supported
  F:    Documentation/edac.txt
  F:    drivers/edac/
@@@ -3953,6 -3946,7 +3953,6 @@@ EDAC-AMD6
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Borislav Petkov <bp@alien8.de>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/amd64_edac*
  
@@@ -3960,6 -3954,7 +3960,6 @@@ EDAC-CALXED
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/highbank*
  
@@@ -3968,6 -3963,7 +3968,6 @@@ M:      Ralf Baechle <ralf@linux-mips.org
  M:    David Daney <david.daney@cavium.com>
  L:    linux-edac@vger.kernel.org
  L:    linux-mips@linux-mips.org
 -W:    bluesmoke.sourceforge.net
  S:    Supported
  F:    drivers/edac/octeon_edac*
  
@@@ -3975,54 -3971,63 +3975,54 @@@ EDAC-E752
  M:    Mark Gross <mark.gross@intel.com>
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/e752x_edac.c
  
  EDAC-E7XXX
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/e7xxx_edac.c
  
  EDAC-GHES
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/ghes_edac.c
  
  EDAC-I82443BXGX
  M:    Tim Small <tim@buttersideup.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i82443bxgx_edac.c
  
  EDAC-I3000
  M:    Jason Uhlenkott <juhlenko@akamai.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i3000_edac.c
  
  EDAC-I5000
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5000_edac.c
  
  EDAC-I5400
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
  EDAC-I7300
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7300_edac.c
  
  EDAC-I7CORE
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7core_edac.c
  
@@@ -4030,36 -4035,42 +4030,36 @@@ EDAC-I82975
  M:    Ranganathan Desikan <ravi@jetztechnologies.com>
  M:    "Arvind R." <arvino55@gmail.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i82975x_edac.c
  
  EDAC-IE31200
  M:    Jason Baron <jbaron@akamai.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/ie31200_edac.c
  
  EDAC-MPC85XX
  M:    Johannes Thumshirn <morbidrsa@gmail.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/mpc85xx_edac.[ch]
  
  EDAC-PASEMI
  M:    Egor Martovetsky <egor@pasemi.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/pasemi_edac.c
  
  EDAC-R82600
  M:    Tim Small <tim@buttersideup.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/r82600_edac.c
  
  EDAC-SBRIDGE
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/sb_edac.c
  
@@@ -4126,7 -4137,7 +4126,7 @@@ F:      drivers/net/ethernet/ibm/ehea
  EM28XX VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/usb/em28xx/
@@@ -4266,7 -4277,7 +4266,7 @@@ F:      drivers/media/tuners/fc0011.
  FC2580 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -4589,7 -4600,7 +4589,7 @@@ M:      Heungjun Kim <riverful.kim@samsung.c
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/m5mols/
 -F:    include/media/m5mols.h
 +F:    include/media/i2c/m5mols.h
  
  FUJITSU TABLET EXTRAS
  M:    Robert Gerlach <khnz@gmx.de>
@@@ -4635,7 -4646,7 +4635,7 @@@ GEMTEK FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-gemtek*
  
@@@ -4843,7 -4854,7 +4843,7 @@@ HDPVR USB VIDEO ENCODER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/usb/hdpvr/
  
@@@ -4862,7 -4873,7 +4862,7 @@@ F:      drivers/tty/hvc
  HACKRF MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -4905,7 -4916,7 +4905,7 @@@ F:      sound/parisc/harmony.
  HD29L2 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -5567,7 -5578,7 +5567,7 @@@ R:      Jesse Brandeburg <jesse.brandeburg@i
  R:    Shannon Nelson <shannon.nelson@intel.com>
  R:    Carolyn Wyborny <carolyn.wyborny@intel.com>
  R:    Don Skidmore <donald.c.skidmore@intel.com>
 -R:    Matthew Vick <matthew.vick@intel.com>
 +R:    Bruce Allan <bruce.w.allan@intel.com>
  R:    John Ronciak <john.ronciak@intel.com>
  R:    Mitch Williams <mitch.a.williams@intel.com>
  L:    intel-wired-lan@lists.osuosl.org
@@@ -5611,7 -5622,9 +5611,7 @@@ F:      Documentation/trace/intel_th.tx
  F:    drivers/hwtracing/intel_th/
  
  INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
 -M:    Richard L Maliszewski <richard.l.maliszewski@intel.com>
 -M:    Gang Wei <gang.wei@intel.com>
 -M:    Shane Wang <shane.wang@intel.com>
 +M:    Ning Sun <ning.sun@intel.com>
  L:    tboot-devel@lists.sourceforge.net
  W:    http://tboot.sourceforge.net
  T:    hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot
@@@ -5809,7 -5822,7 +5809,7 @@@ ISA RADIO MODUL
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-isa*
  
@@@ -5879,7 -5892,7 +5879,7 @@@ F:      drivers/hwmon/it87.
  IT913X MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -5900,7 -5913,7 +5900,7 @@@ F:      include/uapi/linux/ivtv
  IX2505V MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/ix2505v*
@@@ -5989,7 -6002,7 +5989,7 @@@ KEENE FM RADIO TRANSMITTER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-keene*
  
@@@ -6089,6 -6102,7 +6089,7 @@@ M:      Marc Zyngier <marc.zyngier@arm.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    kvmarm@lists.cs.columbia.edu
  W:    http://systems.cs.columbia.edu/projects/kvm-arm
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git
  S:    Supported
  F:    arch/arm/include/uapi/asm/kvm*
  F:    arch/arm/include/asm/kvm*
@@@ -6241,7 -6255,7 +6242,7 @@@ F:      drivers/usb/misc/legousbtower.
  LG2160 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -6251,7 -6265,7 +6252,7 @@@ F:      drivers/media/dvb-frontends/lg2160.
  LGDT3305 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -6508,7 -6522,7 +6509,7 @@@ F:      drivers/hwmon/lm95234.
  LME2510 MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/lmedm04*
@@@ -6614,7 -6628,7 +6615,7 @@@ F:      arch/m68k/hp300
  M88DS3103 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -6624,7 -6638,7 +6625,7 @@@ F:      drivers/media/dvb-frontends/m88ds310
  M88RS2000 MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/m88rs2000*
@@@ -6803,7 -6817,7 +6804,7 @@@ MAXIRADIO FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-maxiradio*
  
@@@ -6825,7 -6839,7 +6826,7 @@@ F:      drivers/media/platform/vsp1
  MEDIA DRIVERS FOR ASCOT2E
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6834,7 -6848,7 +6835,7 @@@ F:      drivers/media/dvb-frontends/ascot2e
  MEDIA DRIVERS FOR CXD2841ER
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6843,7 -6857,7 +6844,7 @@@ F:      drivers/media/dvb-frontends/cxd2841e
  MEDIA DRIVERS FOR HORUS3A
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6852,7 -6866,7 +6853,7 @@@ F:      drivers/media/dvb-frontends/horus3a
  MEDIA DRIVERS FOR LNBH25
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6861,7 -6875,7 +6862,7 @@@ F:      drivers/media/dvb-frontends/lnbh25
  MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6871,7 -6885,7 +6872,7 @@@ MEDIA INPUT INFRASTRUCTURE (V4L/DVB
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  P:    LinuxTV.org Project
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  Q:    http://patchwork.kernel.org/project/linux-media/list/
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
@@@ -6880,7 -6894,6 +6881,7 @@@ F:      Documentation/video4linux
  F:    Documentation/DocBook/media/
  F:    drivers/media/
  F:    drivers/staging/media/
 +F:    include/linux/platform_data/media/
  F:    include/media/
  F:    include/uapi/linux/dvb/
  F:    include/uapi/linux/videodev2.h
@@@ -7032,7 -7045,7 +7033,7 @@@ MIROSOUND PCM20 FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/radio-miropcm20*
  
@@@ -7068,7 -7081,7 +7069,7 @@@ F:      drivers/iio/temperature/mlx90614.
  MN88472 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7079,7 -7092,7 +7080,7 @@@ F:      drivers/media/dvb-frontends/mn88472.
  MN88473 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7134,7 -7147,7 +7135,7 @@@ F:      drivers/platform/x86/msi-wmi.
  MSI001 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7144,7 -7157,7 +7145,7 @@@ F:      drivers/media/tuners/msi001
  MSI2500 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7163,7 -7176,7 +7164,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9m032.c
 -F:    include/media/mt9m032.h
 +F:    include/media/i2c/mt9m032.h
  
  MT9P031 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7171,7 -7184,7 +7172,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9p031.c
 -F:    include/media/mt9p031.h
 +F:    include/media/i2c/mt9p031.h
  
  MT9T001 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7179,7 -7192,7 +7180,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9t001.c
 -F:    include/media/mt9t001.h
 +F:    include/media/i2c/mt9t001.h
  
  MT9V032 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7188,7 -7201,7 +7189,7 @@@ T:      git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/i2c/mt9v032.txt
  F:    drivers/media/i2c/mt9v032.c
 -F:    include/media/mt9v032.h
 +F:    include/media/i2c/mt9v032.h
  
  MULTIFUNCTION DEVICES (MFD)
  M:    Lee Jones <lee.jones@linaro.org>
@@@ -7232,7 -7245,7 +7233,7 @@@ F:      drivers/usb/musb
  MXL5007T MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -8357,7 -8370,6 +8358,7 @@@ F:      drivers/pinctrl/intel
  
  PIN CONTROLLER - RENESAS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +M:    Geert Uytterhoeven <geert+renesas@glider.be>
  L:    linux-sh@vger.kernel.org
  S:    Maintained
  F:    drivers/pinctrl/sh-pfc/
@@@ -8369,14 -8381,6 +8370,14 @@@ L:    linux-samsung-soc@vger.kernel.org (m
  S:    Maintained
  F:    drivers/pinctrl/samsung/
  
 +PIN CONTROLLER - SINGLE
 +M:    Tony Lindgren <tony@atomide.com>
 +M:    Haojian Zhuang <haojian.zhuang@linaro.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    linux-omap@vger.kernel.org
 +S:    Maintained
 +F:    drivers/pinctrl/pinctrl-single.c
 +
  PIN CONTROLLER - ST SPEAR
  M:    Viresh Kumar <vireshk@kernel.org>
  L:    spear-devel@list.st.com
@@@ -8628,7 -8632,6 +8629,7 @@@ S:      Maintaine
  F:    arch/arm/mach-pxa/
  F:    drivers/dma/pxa*
  F:    drivers/pcmcia/pxa2xx*
 +F:    drivers/pinctrl/pxa/
  F:    drivers/spi/spi-pxa2xx*
  F:    drivers/usb/gadget/udc/pxa2*
  F:    include/sound/pxa2xx-lib.h
@@@ -8735,7 -8738,7 +8736,7 @@@ F:      include/uapi/linux/qnxtypes.
  QT1010 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -8944,13 -8947,6 +8945,13 @@@ F:    drivers/rpmsg
  F:    Documentation/rpmsg.txt
  F:    include/linux/rpmsg.h
  
 +RENESAS ETHERNET DRIVERS
 +R:    Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
 +L:    netdev@vger.kernel.org
 +L:    linux-sh@vger.kernel.org
 +F:    drivers/net/ethernet/renesas/
 +F:    include/linux/sh_eth.h
 +
  RESET CONTROLLER FRAMEWORK
  M:    Philipp Zabel <p.zabel@pengutronix.de>
  S:    Maintained
@@@ -9028,7 -9024,7 +9029,7 @@@ F:      net/rose
  RTL2830 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9038,7 -9034,7 +9039,7 @@@ F:      drivers/media/dvb-frontends/rtl2830
  RTL2832 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9048,7 -9044,7 +9049,7 @@@ F:      drivers/media/dvb-frontends/rtl2832
  RTL2832_SDR MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9179,14 -9175,14 +9180,14 @@@ SAA6588 RDS RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/i2c/saa6588*
  
  SAA7134 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/*.saa7134
@@@ -9248,7 -9244,7 +9249,7 @@@ L:      linux-media@vger.kernel.or
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/media/platform/s3c-camif/
 -F:    include/media/s3c_camif.h
 +F:    include/media/drv-intf/s3c_camif.h
  
  SAMSUNG S5C73M3 CAMERA DRIVER
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -9356,7 -9352,7 +9357,7 @@@ M:      Andreas Noever <andreas.noever@gmail
  S:    Maintained
  F:    drivers/thunderbolt/
  
 -TIMEKEEPING, CLOCKSOURCE CORE, NTP
 +TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
  L:    linux-kernel@vger.kernel.org
@@@ -9369,7 -9365,6 +9370,7 @@@ F:      include/uapi/linux/time.
  F:    include/uapi/linux/timex.h
  F:    kernel/time/clocksource.c
  F:    kernel/time/time*.c
 +F:    kernel/time/alarmtimer.c
  F:    kernel/time/ntp.c
  F:    tools/testing/selftests/timers/
  
@@@ -9624,7 -9619,7 +9625,7 @@@ F:      drivers/misc/sgi-xp
  SI2157 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9634,7 -9629,7 +9635,7 @@@ F:      drivers/media/tuners/si2157
  SI2168 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9645,7 -9640,7 +9646,7 @@@ SI470X FM RADIO RECEIVER I2C DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si470x/radio-si470x-i2c.c
  
@@@ -9653,7 -9648,7 +9654,7 @@@ SI470X FM RADIO RECEIVER USB DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/si470x/radio-si470x-common.c
  F:    drivers/media/radio/si470x/radio-si470x.h
@@@ -9663,7 -9658,7 +9664,7 @@@ SI4713 FM RADIO TRANSMITTER I2C DRIVE
  M:    Eduardo Valentin <edubezval@gmail.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si4713/si4713.?
  
@@@ -9671,7 -9666,7 +9672,7 @@@ SI4713 FM RADIO TRANSMITTER PLATFORM DR
  M:    Eduardo Valentin <edubezval@gmail.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si4713/radio-platform-si4713.c
  
@@@ -9679,14 -9674,14 +9680,14 @@@ SI4713 FM RADIO TRANSMITTER USB DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/si4713/radio-usb-si4713.c
  
  SIANO DVB DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/common/siano/
@@@ -9711,7 -9706,7 +9712,7 @@@ SH_VOU V4L2 OUTPUT DRIVE
  L:    linux-media@vger.kernel.org
  S:    Orphan
  F:    drivers/media/platform/sh_vou.c
 -F:    include/media/sh_vou.h
 +F:    include/media/drv-intf/sh_vou.h
  
  SIMPLE FIRMWARE INTERFACE (SFI)
  M:    Len Brown <lenb@kernel.org>
@@@ -9752,7 -9747,7 +9753,7 @@@ F:      drivers/i2c/busses/i2c-davinci.
  TI DAVINCI SERIES MEDIA DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
@@@ -9762,7 -9757,7 +9763,7 @@@ F:      include/media/davinci
  TI AM437X VPFE DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
@@@ -9771,12 -9766,12 +9772,12 @@@ F:   drivers/media/platform/am437x
  OV2659 OMNIVISION SENSOR DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
  F:    drivers/media/i2c/ov2659.c
 -F:    include/media/ov2659.h
 +F:    include/media/i2c/ov2659.h
  
  SILICON MOTION SM712 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
@@@ -9865,7 -9860,7 +9866,7 @@@ M:      Sakari Ailus <sakari.ailus@iki.fi
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/smiapp/
 -F:    include/media/smiapp.h
 +F:    include/media/i2c/smiapp.h
  F:    drivers/media/i2c/smiapp-pll.c
  F:    drivers/media/i2c/smiapp-pll.h
  F:    include/uapi/linux/smiapp.h
@@@ -10029,7 -10024,7 +10030,7 @@@ F:   sound/soc/soc-generic-dmaengine-pcm.
  SP2 MEDIA DRIVER
  M:    Olli Salonen <olli.salonen@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/sp2*
@@@ -10391,7 -10386,7 +10392,7 @@@ F:   net/ipv4/tcp_lp.
  TDA10071 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10401,7 -10396,7 +10402,7 @@@ F:   drivers/media/dvb-frontends/tda10071
  TDA18212 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10411,7 -10406,7 +10412,7 @@@ F:   drivers/media/tuners/tda18212
  TDA18218 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10421,7 -10416,7 +10422,7 @@@ F:   drivers/media/tuners/tda18218
  TDA18271 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10431,7 -10426,7 +10432,7 @@@ F:   drivers/media/tuners/tda18271
  TDA827x MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10441,7 -10436,7 +10442,7 @@@ F:   drivers/media/tuners/tda8290.
  TDA8290 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10452,14 -10447,14 +10453,14 @@@ TDA9840 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tda9840*
  
  TEA5761 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/tuners/tea5761.*
  TEA5767 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/tuners/tea5767.*
@@@ -10476,7 -10471,7 +10477,7 @@@ TEA6415C MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tea6415c*
  
@@@ -10484,7 -10479,7 +10485,7 @@@ TEA6420 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tea6420*
  
@@@ -10582,7 -10577,7 +10583,7 @@@ THANKO'S RAREMONO AM/FM/SW RADIO RECEIV
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-raremono.c
  
@@@ -10806,7 -10801,7 +10807,7 @@@ M:   Mats Randgaard <matrandg@cisco.com
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/tc358743*
 -F:    include/media/tc358743.h
 +F:    include/media/i2c/tc358743.h
  
  TMIO MMC DRIVER
  M:    Ian Molton <ian@mnementh.co.uk>
@@@ -10834,7 -10829,7 +10835,7 @@@ F:   mm/shmem.
  TM6000 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/usb/tm6000/
@@@ -10843,7 -10838,7 +10844,7 @@@ TW68 VIDEO4LINUX DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/pci/tw68/
  
@@@ -10904,7 -10899,7 +10905,7 @@@ F:   include/uapi/linux/tty.
  TUA9001 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -11251,7 -11246,7 +11252,7 @@@ USB VISION DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/usb/usbvision/
  
@@@ -11465,7 -11460,7 +11466,7 @@@ VIVID VIRTUAL VIDEO DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/platform/vivid/*
  
@@@ -11754,7 -11749,7 +11755,7 @@@ F:   arch/x86/entry/vdso
  XC2028/3028 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/tuners/tuner-xc2028.*
@@@ -11923,7 -11918,7 +11924,7 @@@ ZR36067 VIDEO FOR LINUX DRIVE
  L:    mjpeg-users@lists.sourceforge.net
  L:    linux-media@vger.kernel.org
  W:    http://mjpeg.sourceforge.net/driver-zoran/
 -T:    hg http://linuxtv.org/hg/v4l-dvb
 +T:    hg https://linuxtv.org/hg/v4l-dvb
  S:    Odd Fixes
  F:    drivers/media/pci/zoran/
  
@@@ -28,7 -28,6 +28,7 @@@
  #include <asm/suspend.h>
  #include <asm/vdso_datapage.h>
  #include <linux/kbuild.h>
 +#include <linux/arm-smccc.h>
  
  int main(void)
  {
    DEFINE(CPU_GP_REGS,         offsetof(struct kvm_cpu_context, gp_regs));
    DEFINE(CPU_USER_PT_REGS,    offsetof(struct kvm_regs, regs));
    DEFINE(CPU_FP_REGS,         offsetof(struct kvm_regs, fp_regs));
-   DEFINE(CPU_SP_EL1,          offsetof(struct kvm_regs, sp_el1));
-   DEFINE(CPU_ELR_EL1,         offsetof(struct kvm_regs, elr_el1));
-   DEFINE(CPU_SPSR,            offsetof(struct kvm_regs, spsr));
-   DEFINE(CPU_SYSREGS,         offsetof(struct kvm_cpu_context, sys_regs));
+   DEFINE(VCPU_FPEXC32_EL2,    offsetof(struct kvm_vcpu, arch.ctxt.sys_regs[FPEXC32_EL2]));
    DEFINE(VCPU_ESR_EL2,                offsetof(struct kvm_vcpu, arch.fault.esr_el2));
    DEFINE(VCPU_FAR_EL2,                offsetof(struct kvm_vcpu, arch.fault.far_el2));
    DEFINE(VCPU_HPFAR_EL2,      offsetof(struct kvm_vcpu, arch.fault.hpfar_el2));
-   DEFINE(VCPU_DEBUG_FLAGS,    offsetof(struct kvm_vcpu, arch.debug_flags));
-   DEFINE(VCPU_DEBUG_PTR,      offsetof(struct kvm_vcpu, arch.debug_ptr));
-   DEFINE(DEBUG_BCR,           offsetof(struct kvm_guest_debug_arch, dbg_bcr));
-   DEFINE(DEBUG_BVR,           offsetof(struct kvm_guest_debug_arch, dbg_bvr));
-   DEFINE(DEBUG_WCR,           offsetof(struct kvm_guest_debug_arch, dbg_wcr));
-   DEFINE(DEBUG_WVR,           offsetof(struct kvm_guest_debug_arch, dbg_wvr));
-   DEFINE(VCPU_HCR_EL2,                offsetof(struct kvm_vcpu, arch.hcr_el2));
-   DEFINE(VCPU_MDCR_EL2,       offsetof(struct kvm_vcpu, arch.mdcr_el2));
-   DEFINE(VCPU_IRQ_LINES,      offsetof(struct kvm_vcpu, arch.irq_lines));
    DEFINE(VCPU_HOST_CONTEXT,   offsetof(struct kvm_vcpu, arch.host_cpu_context));
-   DEFINE(VCPU_HOST_DEBUG_STATE, offsetof(struct kvm_vcpu, arch.host_debug_state));
-   DEFINE(VCPU_TIMER_CNTV_CTL, offsetof(struct kvm_vcpu, arch.timer_cpu.cntv_ctl));
-   DEFINE(VCPU_TIMER_CNTV_CVAL,        offsetof(struct kvm_vcpu, arch.timer_cpu.cntv_cval));
-   DEFINE(KVM_TIMER_CNTVOFF,   offsetof(struct kvm, arch.timer.cntvoff));
-   DEFINE(KVM_TIMER_ENABLED,   offsetof(struct kvm, arch.timer.enabled));
-   DEFINE(VCPU_KVM,            offsetof(struct kvm_vcpu, kvm));
-   DEFINE(VCPU_VGIC_CPU,               offsetof(struct kvm_vcpu, arch.vgic_cpu));
-   DEFINE(VGIC_V2_CPU_HCR,     offsetof(struct vgic_cpu, vgic_v2.vgic_hcr));
-   DEFINE(VGIC_V2_CPU_VMCR,    offsetof(struct vgic_cpu, vgic_v2.vgic_vmcr));
-   DEFINE(VGIC_V2_CPU_MISR,    offsetof(struct vgic_cpu, vgic_v2.vgic_misr));
-   DEFINE(VGIC_V2_CPU_EISR,    offsetof(struct vgic_cpu, vgic_v2.vgic_eisr));
-   DEFINE(VGIC_V2_CPU_ELRSR,   offsetof(struct vgic_cpu, vgic_v2.vgic_elrsr));
-   DEFINE(VGIC_V2_CPU_APR,     offsetof(struct vgic_cpu, vgic_v2.vgic_apr));
-   DEFINE(VGIC_V2_CPU_LR,      offsetof(struct vgic_cpu, vgic_v2.vgic_lr));
-   DEFINE(VGIC_V3_CPU_SRE,     offsetof(struct vgic_cpu, vgic_v3.vgic_sre));
-   DEFINE(VGIC_V3_CPU_HCR,     offsetof(struct vgic_cpu, vgic_v3.vgic_hcr));
-   DEFINE(VGIC_V3_CPU_VMCR,    offsetof(struct vgic_cpu, vgic_v3.vgic_vmcr));
-   DEFINE(VGIC_V3_CPU_MISR,    offsetof(struct vgic_cpu, vgic_v3.vgic_misr));
-   DEFINE(VGIC_V3_CPU_EISR,    offsetof(struct vgic_cpu, vgic_v3.vgic_eisr));
-   DEFINE(VGIC_V3_CPU_ELRSR,   offsetof(struct vgic_cpu, vgic_v3.vgic_elrsr));
-   DEFINE(VGIC_V3_CPU_AP0R,    offsetof(struct vgic_cpu, vgic_v3.vgic_ap0r));
-   DEFINE(VGIC_V3_CPU_AP1R,    offsetof(struct vgic_cpu, vgic_v3.vgic_ap1r));
-   DEFINE(VGIC_V3_CPU_LR,      offsetof(struct vgic_cpu, vgic_v3.vgic_lr));
-   DEFINE(VGIC_CPU_NR_LR,      offsetof(struct vgic_cpu, nr_lr));
-   DEFINE(KVM_VTTBR,           offsetof(struct kvm, arch.vttbr));
-   DEFINE(KVM_VGIC_VCTRL,      offsetof(struct kvm, arch.vgic.vctrl_base));
  #endif
  #ifdef CONFIG_CPU_PM
    DEFINE(CPU_SUSPEND_SZ,      sizeof(struct cpu_suspend_ctx));
    DEFINE(SLEEP_SAVE_SP_PHYS,  offsetof(struct sleep_save_sp, save_ptr_stash_phys));
    DEFINE(SLEEP_SAVE_SP_VIRT,  offsetof(struct sleep_save_sp, save_ptr_stash));
  #endif
 +  DEFINE(ARM_SMCCC_RES_X0_OFFS,       offsetof(struct arm_smccc_res, a0));
 +  DEFINE(ARM_SMCCC_RES_X2_OFFS,       offsetof(struct arm_smccc_res, a2));
    return 0;
  }
@@@ -224,12 -224,6 +224,12 @@@ static void kvmppc_core_vcpu_put_hv(str
  
  static void kvmppc_set_msr_hv(struct kvm_vcpu *vcpu, u64 msr)
  {
 +      /*
 +       * Check for illegal transactional state bit combination
 +       * and if we find it, force the TS field to a safe state.
 +       */
 +      if ((msr & MSR_TS_MASK) == MSR_TS_MASK)
 +              msr &= ~MSR_TS_MASK;
        vcpu->arch.shregs.msr = msr;
        kvmppc_end_cede(vcpu);
  }
@@@ -314,16 -308,10 +314,10 @@@ static void kvmppc_dump_regs(struct kvm
  
  static struct kvm_vcpu *kvmppc_find_vcpu(struct kvm *kvm, int id)
  {
-       int r;
-       struct kvm_vcpu *v, *ret = NULL;
+       struct kvm_vcpu *ret;
  
        mutex_lock(&kvm->lock);
-       kvm_for_each_vcpu(r, v, kvm) {
-               if (v->vcpu_id == id) {
-                       ret = v;
-                       break;
-               }
-       }
+       ret = kvm_get_vcpu_by_id(kvm, id);
        mutex_unlock(&kvm->lock);
        return ret;
  }
diff --combined arch/x86/kvm/svm.c
@@@ -86,6 -86,7 +86,7 @@@ static const u32 host_save_user_msrs[] 
        MSR_FS_BASE,
  #endif
        MSR_IA32_SYSENTER_CS, MSR_IA32_SYSENTER_ESP, MSR_IA32_SYSENTER_EIP,
+       MSR_TSC_AUX,
  };
  
  #define NR_HOST_SAVE_USER_MSRS ARRAY_SIZE(host_save_user_msrs)
@@@ -135,6 -136,7 +136,7 @@@ struct vcpu_svm 
        uint64_t asid_generation;
        uint64_t sysenter_esp;
        uint64_t sysenter_eip;
+       uint64_t tsc_aux;
  
        u64 next_rip;
  
@@@ -1238,6 -1240,9 +1240,9 @@@ static void svm_vcpu_load(struct kvm_vc
                        wrmsrl(MSR_AMD64_TSC_RATIO, tsc_ratio);
                }
        }
+       /* This assumes that the kernel never uses MSR_TSC_AUX */
+       if (static_cpu_has(X86_FEATURE_RDTSCP))
+               wrmsrl(MSR_TSC_AUX, svm->tsc_aux);
  }
  
  static void svm_vcpu_put(struct kvm_vcpu *vcpu)
@@@ -3024,6 -3029,11 +3029,11 @@@ static int svm_get_msr(struct kvm_vcpu 
        case MSR_IA32_SYSENTER_ESP:
                msr_info->data = svm->sysenter_esp;
                break;
+       case MSR_TSC_AUX:
+               if (!boot_cpu_has(X86_FEATURE_RDTSCP))
+                       return 1;
+               msr_info->data = svm->tsc_aux;
+               break;
        /*
         * Nobody will change the following 5 values in the VMCB so we can
         * safely return them on rdmsr. They will always be 0 until LBRV is
        case MSR_IA32_UCODE_REV:
                msr_info->data = 0x01000065;
                break;
 +      case MSR_F15H_IC_CFG: {
 +
 +              int family, model;
 +
 +              family = guest_cpuid_family(vcpu);
 +              model  = guest_cpuid_model(vcpu);
 +
 +              if (family < 0 || model < 0)
 +                      return kvm_get_msr_common(vcpu, msr_info);
 +
 +              msr_info->data = 0;
 +
 +              if (family == 0x15 &&
 +                  (model >= 0x2 && model < 0x20))
 +                      msr_info->data = 0x1E;
 +              }
 +              break;
        default:
                return kvm_get_msr_common(vcpu, msr_info);
        }
@@@ -3162,6 -3155,18 +3172,18 @@@ static int svm_set_msr(struct kvm_vcpu 
                svm->sysenter_esp = data;
                svm->vmcb->save.sysenter_esp = data;
                break;
+       case MSR_TSC_AUX:
+               if (!boot_cpu_has(X86_FEATURE_RDTSCP))
+                       return 1;
+               /*
+                * This is rare, so we update the MSR here instead of using
+                * direct_access_msrs.  Doing that would require a rdmsr in
+                * svm_vcpu_put.
+                */
+               svm->tsc_aux = data;
+               wrmsrl(MSR_TSC_AUX, svm->tsc_aux);
+               break;
        case MSR_IA32_DEBUGCTLMSR:
                if (!boot_cpu_has(X86_FEATURE_LBRV)) {
                        vcpu_unimpl(vcpu, "%s: MSR_IA32_DEBUGCTL 0x%llx, nop\n",
@@@ -3439,8 -3444,6 +3461,8 @@@ static int handle_exit(struct kvm_vcpu 
        struct kvm_run *kvm_run = vcpu->run;
        u32 exit_code = svm->vmcb->control.exit_code;
  
 +      trace_kvm_exit(exit_code, vcpu, KVM_ISA_SVM);
 +
        if (!is_cr_intercept(svm, INTERCEPT_CR0_WRITE))
                vcpu->arch.cr0 = svm->vmcb->save.cr0;
        if (npt_enabled)
@@@ -3578,12 -3581,16 +3600,16 @@@ static void svm_set_virtual_x2apic_mode
        return;
  }
  
- static int svm_cpu_uses_apicv(struct kvm_vcpu *vcpu)
+ static bool svm_get_enable_apicv(void)
+ {
+       return false;
+ }
+ static void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu)
  {
-       return 0;
  }
  
- static void svm_load_eoi_exitmap(struct kvm_vcpu *vcpu)
+ static void svm_load_eoi_exitmap(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap)
  {
        return;
  }
@@@ -3911,6 -3918,8 +3937,6 @@@ static void svm_vcpu_run(struct kvm_vcp
        vcpu->arch.regs[VCPU_REGS_RSP] = svm->vmcb->save.rsp;
        vcpu->arch.regs[VCPU_REGS_RIP] = svm->vmcb->save.rip;
  
 -      trace_kvm_exit(svm->vmcb->control.exit_code, vcpu, KVM_ISA_SVM);
 -
        if (unlikely(svm->vmcb->control.exit_code == SVM_EXIT_NMI))
                kvm_before_handle_nmi(&svm->vcpu);
  
@@@ -4054,7 -4063,7 +4080,7 @@@ static int svm_get_lpage_level(void
  
  static bool svm_rdtscp_supported(void)
  {
-       return false;
+       return boot_cpu_has(X86_FEATURE_RDTSCP);
  }
  
  static bool svm_invpcid_supported(void)
@@@ -4345,7 -4354,8 +4371,8 @@@ static struct kvm_x86_ops svm_x86_ops 
        .enable_irq_window = enable_irq_window,
        .update_cr8_intercept = update_cr8_intercept,
        .set_virtual_x2apic_mode = svm_set_virtual_x2apic_mode,
-       .cpu_uses_apicv = svm_cpu_uses_apicv,
+       .get_enable_apicv = svm_get_enable_apicv,
+       .refresh_apicv_exec_ctrl = svm_refresh_apicv_exec_ctrl,
        .load_eoi_exitmap = svm_load_eoi_exitmap,
        .sync_pir_to_irr = svm_sync_pir_to_irr,
  
diff --combined arch/x86/kvm/vmx.c
@@@ -19,6 -19,7 +19,7 @@@
  #include "irq.h"
  #include "mmu.h"
  #include "cpuid.h"
+ #include "lapic.h"
  
  #include <linux/kvm_host.h>
  #include <linux/module.h>
@@@ -862,7 -863,6 +863,6 @@@ static void kvm_cpu_vmxon(u64 addr)
  static void kvm_cpu_vmxoff(void);
  static bool vmx_mpx_supported(void);
  static bool vmx_xsaves_supported(void);
- static int vmx_cpu_uses_apicv(struct kvm_vcpu *vcpu);
  static int vmx_set_tss_addr(struct kvm *kvm, unsigned int addr);
  static void vmx_set_segment(struct kvm_vcpu *vcpu,
                            struct kvm_segment *var, int seg);
@@@ -870,7 -870,6 +870,6 @@@ static void vmx_get_segment(struct kvm_
                            struct kvm_segment *var, int seg);
  static bool guest_state_valid(struct kvm_vcpu *vcpu);
  static u32 vmx_segment_access_rights(struct kvm_segment *var);
- static void vmx_sync_pir_to_irr_dummy(struct kvm_vcpu *vcpu);
  static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx);
  static void copy_shadow_to_vmcs12(struct vcpu_vmx *vmx);
  static int alloc_identity_pagetable(struct kvm *kvm);
@@@ -1448,7 -1447,51 +1447,51 @@@ static inline void ept_sync_context(u6
        }
  }
  
- static __always_inline unsigned long vmcs_readl(unsigned long field)
+ static __always_inline void vmcs_check16(unsigned long field)
+ {
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2000,
+                        "16-bit accessor invalid for 64-bit field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2001,
+                        "16-bit accessor invalid for 64-bit high field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x4000,
+                        "16-bit accessor invalid for 32-bit high field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x6000,
+                        "16-bit accessor invalid for natural width field");
+ }
+ static __always_inline void vmcs_check32(unsigned long field)
+ {
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0,
+                        "32-bit accessor invalid for 16-bit field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x6000,
+                        "32-bit accessor invalid for natural width field");
+ }
+ static __always_inline void vmcs_check64(unsigned long field)
+ {
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0,
+                        "64-bit accessor invalid for 16-bit field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2001,
+                        "64-bit accessor invalid for 64-bit high field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x4000,
+                        "64-bit accessor invalid for 32-bit field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x6000,
+                        "64-bit accessor invalid for natural width field");
+ }
+ static __always_inline void vmcs_checkl(unsigned long field)
+ {
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0,
+                        "Natural width accessor invalid for 16-bit field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2000,
+                        "Natural width accessor invalid for 64-bit field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2001,
+                        "Natural width accessor invalid for 64-bit high field");
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x4000,
+                        "Natural width accessor invalid for 32-bit field");
+ }
+ static __always_inline unsigned long __vmcs_readl(unsigned long field)
  {
        unsigned long value;
  
  
  static __always_inline u16 vmcs_read16(unsigned long field)
  {
-       return vmcs_readl(field);
+       vmcs_check16(field);
+       return __vmcs_readl(field);
  }
  
  static __always_inline u32 vmcs_read32(unsigned long field)
  {
-       return vmcs_readl(field);
+       vmcs_check32(field);
+       return __vmcs_readl(field);
  }
  
  static __always_inline u64 vmcs_read64(unsigned long field)
  {
+       vmcs_check64(field);
  #ifdef CONFIG_X86_64
-       return vmcs_readl(field);
+       return __vmcs_readl(field);
  #else
-       return vmcs_readl(field) | ((u64)vmcs_readl(field+1) << 32);
+       return __vmcs_readl(field) | ((u64)__vmcs_readl(field+1) << 32);
  #endif
  }
  
+ static __always_inline unsigned long vmcs_readl(unsigned long field)
+ {
+       vmcs_checkl(field);
+       return __vmcs_readl(field);
+ }
  static noinline void vmwrite_error(unsigned long field, unsigned long value)
  {
        printk(KERN_ERR "vmwrite error: reg %lx value %lx (err %d)\n",
        dump_stack();
  }
  
- static void vmcs_writel(unsigned long field, unsigned long value)
+ static __always_inline void __vmcs_writel(unsigned long field, unsigned long value)
  {
        u8 error;
  
                vmwrite_error(field, value);
  }
  
- static void vmcs_write16(unsigned long field, u16 value)
+ static __always_inline void vmcs_write16(unsigned long field, u16 value)
  {
-       vmcs_writel(field, value);
+       vmcs_check16(field);
+       __vmcs_writel(field, value);
  }
  
- static void vmcs_write32(unsigned long field, u32 value)
+ static __always_inline void vmcs_write32(unsigned long field, u32 value)
  {
-       vmcs_writel(field, value);
+       vmcs_check32(field);
+       __vmcs_writel(field, value);
  }
  
- static void vmcs_write64(unsigned long field, u64 value)
+ static __always_inline void vmcs_write64(unsigned long field, u64 value)
  {
-       vmcs_writel(field, value);
+       vmcs_check64(field);
+       __vmcs_writel(field, value);
  #ifndef CONFIG_X86_64
        asm volatile ("");
-       vmcs_writel(field+1, value >> 32);
+       __vmcs_writel(field+1, value >> 32);
  #endif
  }
  
- static void vmcs_clear_bits(unsigned long field, u32 mask)
+ static __always_inline void vmcs_writel(unsigned long field, unsigned long value)
  {
-       vmcs_writel(field, vmcs_readl(field) & ~mask);
+       vmcs_checkl(field);
+       __vmcs_writel(field, value);
  }
  
- static void vmcs_set_bits(unsigned long field, u32 mask)
+ static __always_inline void vmcs_clear_bits(unsigned long field, u32 mask)
  {
-       vmcs_writel(field, vmcs_readl(field) | mask);
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x2000,
+                        "vmcs_clear_bits does not support 64-bit fields");
+       __vmcs_writel(field, __vmcs_readl(field) & ~mask);
+ }
+ static __always_inline void vmcs_set_bits(unsigned long field, u32 mask)
+ {
+         BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x2000,
+                        "vmcs_set_bits does not support 64-bit fields");
+       __vmcs_writel(field, __vmcs_readl(field) | mask);
  }
  
  static inline void vm_entry_controls_init(struct vcpu_vmx *vmx, u32 val)
@@@ -2498,7 -2563,7 +2563,7 @@@ static void nested_vmx_setup_ctls_msrs(
        vmx->nested.nested_vmx_pinbased_ctls_high |=
                PIN_BASED_ALWAYSON_WITHOUT_TRUE_MSR |
                PIN_BASED_VMX_PREEMPTION_TIMER;
-       if (vmx_cpu_uses_apicv(&vmx->vcpu))
+       if (kvm_vcpu_apicv_active(&vmx->vcpu))
                vmx->nested.nested_vmx_pinbased_ctls_high |=
                        PIN_BASED_POSTED_INTR;
  
@@@ -2803,7 -2868,7 +2868,7 @@@ static int vmx_get_msr(struct kvm_vcpu 
                msr_info->data = vcpu->arch.ia32_xss;
                break;
        case MSR_TSC_AUX:
 -              if (!guest_cpuid_has_rdtscp(vcpu))
 +              if (!guest_cpuid_has_rdtscp(vcpu) && !msr_info->host_initiated)
                        return 1;
                /* Otherwise falls through */
        default:
@@@ -2909,7 -2974,7 +2974,7 @@@ static int vmx_set_msr(struct kvm_vcpu 
                        clear_atomic_switch_msr(vmx, MSR_IA32_XSS);
                break;
        case MSR_TSC_AUX:
 -              if (!guest_cpuid_has_rdtscp(vcpu))
 +              if (!guest_cpuid_has_rdtscp(vcpu) && !msr_info->host_initiated)
                        return 1;
                /* Check reserved bit, higher 32 bits should be zero */
                if ((data >> 32) != 0)
@@@ -4462,9 -4527,9 +4527,9 @@@ static void vmx_disable_intercept_msr_w
                        msr, MSR_TYPE_W);
  }
  
- static int vmx_cpu_uses_apicv(struct kvm_vcpu *vcpu)
+ static bool vmx_get_enable_apicv(void)
  {
-       return enable_apicv && lapic_in_kernel(vcpu);
+       return enable_apicv;
  }
  
  static int vmx_complete_nested_posted_interrupt(struct kvm_vcpu *vcpu)
@@@ -4586,11 -4651,6 +4651,6 @@@ static void vmx_sync_pir_to_irr(struct 
        kvm_apic_update_irr(vcpu, vmx->pi_desc.pir);
  }
  
- static void vmx_sync_pir_to_irr_dummy(struct kvm_vcpu *vcpu)
- {
-       return;
- }
  /*
   * Set up the vmcs's constant host-state fields, i.e., host-state fields that
   * will not change in the lifetime of the guest.
@@@ -4660,11 -4720,18 +4720,18 @@@ static u32 vmx_pin_based_exec_ctrl(stru
  {
        u32 pin_based_exec_ctrl = vmcs_config.pin_based_exec_ctrl;
  
-       if (!vmx_cpu_uses_apicv(&vmx->vcpu))
+       if (!kvm_vcpu_apicv_active(&vmx->vcpu))
                pin_based_exec_ctrl &= ~PIN_BASED_POSTED_INTR;
        return pin_based_exec_ctrl;
  }
  
+ static void vmx_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu)
+ {
+       struct vcpu_vmx *vmx = to_vmx(vcpu);
+       vmcs_write32(PIN_BASED_VM_EXEC_CONTROL, vmx_pin_based_exec_ctrl(vmx));
+ }
  static u32 vmx_exec_control(struct vcpu_vmx *vmx)
  {
        u32 exec_control = vmcs_config.cpu_based_exec_ctrl;
@@@ -4703,7 -4770,7 +4770,7 @@@ static u32 vmx_secondary_exec_control(s
                exec_control &= ~SECONDARY_EXEC_UNRESTRICTED_GUEST;
        if (!ple_gap)
                exec_control &= ~SECONDARY_EXEC_PAUSE_LOOP_EXITING;
-       if (!vmx_cpu_uses_apicv(&vmx->vcpu))
+       if (!kvm_vcpu_apicv_active(&vmx->vcpu))
                exec_control &= ~(SECONDARY_EXEC_APIC_REGISTER_VIRT |
                                  SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY);
        exec_control &= ~SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE;
@@@ -4767,7 -4834,7 +4834,7 @@@ static int vmx_vcpu_setup(struct vcpu_v
                vmcs_write32(SECONDARY_VM_EXEC_CONTROL,
                                vmx_secondary_exec_control(vmx));
  
-       if (vmx_cpu_uses_apicv(&vmx->vcpu)) {
+       if (kvm_vcpu_apicv_active(&vmx->vcpu)) {
                vmcs_write64(EOI_EXIT_BITMAP0, 0);
                vmcs_write64(EOI_EXIT_BITMAP1, 0);
                vmcs_write64(EOI_EXIT_BITMAP2, 0);
  
                vmcs_write16(GUEST_INTR_STATUS, 0);
  
-               vmcs_write64(POSTED_INTR_NV, POSTED_INTR_VECTOR);
+               vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);
                vmcs_write64(POSTED_INTR_DESC_ADDR, __pa((&vmx->pi_desc)));
        }
  
@@@ -4867,7 -4934,7 +4934,7 @@@ static void vmx_vcpu_reset(struct kvm_v
  
        seg_setup(VCPU_SREG_CS);
        vmcs_write16(GUEST_CS_SELECTOR, 0xf000);
-       vmcs_write32(GUEST_CS_BASE, 0xffff0000);
+       vmcs_writel(GUEST_CS_BASE, 0xffff0000ul);
  
        seg_setup(VCPU_SREG_DS);
        seg_setup(VCPU_SREG_ES);
  
        vmcs_write32(GUEST_ACTIVITY_STATE, GUEST_ACTIVITY_ACTIVE);
        vmcs_write32(GUEST_INTERRUPTIBILITY_INFO, 0);
-       vmcs_write32(GUEST_PENDING_DBG_EXCEPTIONS, 0);
+       vmcs_writel(GUEST_PENDING_DBG_EXCEPTIONS, 0);
  
        setup_msrs(vmx);
  
  
        kvm_make_request(KVM_REQ_APIC_PAGE_RELOAD, vcpu);
  
-       if (vmx_cpu_uses_apicv(vcpu))
+       if (kvm_vcpu_apicv_active(vcpu))
                memset(&vmx->pi_desc, 0, sizeof(struct pi_desc));
  
        if (vmx->vpid != 0)
@@@ -6203,15 -6270,6 +6270,6 @@@ static __init int hardware_setup(void
                kvm_tsc_scaling_ratio_frac_bits = 48;
        }
  
-       if (enable_apicv)
-               kvm_x86_ops->update_cr8_intercept = NULL;
-       else {
-               kvm_x86_ops->hwapic_irr_update = NULL;
-               kvm_x86_ops->hwapic_isr_update = NULL;
-               kvm_x86_ops->deliver_posted_interrupt = NULL;
-               kvm_x86_ops->sync_pir_to_irr = vmx_sync_pir_to_irr_dummy;
-       }
        vmx_disable_intercept_for_msr(MSR_FS_BASE, false);
        vmx_disable_intercept_for_msr(MSR_GS_BASE, false);
        vmx_disable_intercept_for_msr(MSR_KERNEL_GS_BASE, true);
@@@ -7901,7 -7959,7 +7959,7 @@@ static void dump_vmcs(void
        u32 pin_based_exec_ctrl = vmcs_read32(PIN_BASED_VM_EXEC_CONTROL);
        u32 secondary_exec_control = 0;
        unsigned long cr4 = vmcs_readl(GUEST_CR4);
-       u64 efer = vmcs_readl(GUEST_IA32_EFER);
+       u64 efer = vmcs_read64(GUEST_IA32_EFER);
        int i, n;
  
        if (cpu_has_secondary_exec_ctrls())
        if ((secondary_exec_control & SECONDARY_EXEC_ENABLE_EPT) &&
            (cr4 & X86_CR4_PAE) && !(efer & EFER_LMA))
        {
-               pr_err("PDPTR0 = 0x%016lx  PDPTR1 = 0x%016lx\n",
-                      vmcs_readl(GUEST_PDPTR0), vmcs_readl(GUEST_PDPTR1));
-               pr_err("PDPTR2 = 0x%016lx  PDPTR3 = 0x%016lx\n",
-                      vmcs_readl(GUEST_PDPTR2), vmcs_readl(GUEST_PDPTR3));
+               pr_err("PDPTR0 = 0x%016llx  PDPTR1 = 0x%016llx\n",
+                      vmcs_read64(GUEST_PDPTR0), vmcs_read64(GUEST_PDPTR1));
+               pr_err("PDPTR2 = 0x%016llx  PDPTR3 = 0x%016llx\n",
+                      vmcs_read64(GUEST_PDPTR2), vmcs_read64(GUEST_PDPTR3));
        }
        pr_err("RSP = 0x%016lx  RIP = 0x%016lx\n",
               vmcs_readl(GUEST_RSP), vmcs_readl(GUEST_RIP));
        vmx_dump_sel("TR:  ", GUEST_TR_SELECTOR);
        if ((vmexit_ctl & (VM_EXIT_SAVE_IA32_PAT | VM_EXIT_SAVE_IA32_EFER)) ||
            (vmentry_ctl & (VM_ENTRY_LOAD_IA32_PAT | VM_ENTRY_LOAD_IA32_EFER)))
-               pr_err("EFER =     0x%016llx  PAT = 0x%016lx\n",
-                      efer, vmcs_readl(GUEST_IA32_PAT));
-       pr_err("DebugCtl = 0x%016lx  DebugExceptions = 0x%016lx\n",
-              vmcs_readl(GUEST_IA32_DEBUGCTL),
+               pr_err("EFER =     0x%016llx  PAT = 0x%016llx\n",
+                      efer, vmcs_read64(GUEST_IA32_PAT));
+       pr_err("DebugCtl = 0x%016llx  DebugExceptions = 0x%016lx\n",
+              vmcs_read64(GUEST_IA32_DEBUGCTL),
               vmcs_readl(GUEST_PENDING_DBG_EXCEPTIONS));
        if (vmentry_ctl & VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL)
-               pr_err("PerfGlobCtl = 0x%016lx\n",
-                      vmcs_readl(GUEST_IA32_PERF_GLOBAL_CTRL));
+               pr_err("PerfGlobCtl = 0x%016llx\n",
+                      vmcs_read64(GUEST_IA32_PERF_GLOBAL_CTRL));
        if (vmentry_ctl & VM_ENTRY_LOAD_BNDCFGS)
-               pr_err("BndCfgS = 0x%016lx\n", vmcs_readl(GUEST_BNDCFGS));
+               pr_err("BndCfgS = 0x%016llx\n", vmcs_read64(GUEST_BNDCFGS));
        pr_err("Interruptibility = %08x  ActivityState = %08x\n",
               vmcs_read32(GUEST_INTERRUPTIBILITY_INFO),
               vmcs_read32(GUEST_ACTIVITY_STATE));
               vmcs_read32(HOST_IA32_SYSENTER_CS),
               vmcs_readl(HOST_IA32_SYSENTER_EIP));
        if (vmexit_ctl & (VM_EXIT_LOAD_IA32_PAT | VM_EXIT_LOAD_IA32_EFER))
-               pr_err("EFER = 0x%016lx  PAT = 0x%016lx\n",
-                      vmcs_readl(HOST_IA32_EFER), vmcs_readl(HOST_IA32_PAT));
+               pr_err("EFER = 0x%016llx  PAT = 0x%016llx\n",
+                      vmcs_read64(HOST_IA32_EFER),
+                      vmcs_read64(HOST_IA32_PAT));
        if (vmexit_ctl & VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL)
-               pr_err("PerfGlobCtl = 0x%016lx\n",
-                      vmcs_readl(HOST_IA32_PERF_GLOBAL_CTRL));
+               pr_err("PerfGlobCtl = 0x%016llx\n",
+                      vmcs_read64(HOST_IA32_PERF_GLOBAL_CTRL));
  
        pr_err("*** Control State ***\n");
        pr_err("PinBased=%08x CPUBased=%08x SecondaryExec=%08x\n",
        pr_err("IDTVectoring: info=%08x errcode=%08x\n",
               vmcs_read32(IDT_VECTORING_INFO_FIELD),
               vmcs_read32(IDT_VECTORING_ERROR_CODE));
-       pr_err("TSC Offset = 0x%016lx\n", vmcs_readl(TSC_OFFSET));
+       pr_err("TSC Offset = 0x%016llx\n", vmcs_read64(TSC_OFFSET));
        if (secondary_exec_control & SECONDARY_EXEC_TSC_SCALING)
-               pr_err("TSC Multiplier = 0x%016lx\n",
-                      vmcs_readl(TSC_MULTIPLIER));
+               pr_err("TSC Multiplier = 0x%016llx\n",
+                      vmcs_read64(TSC_MULTIPLIER));
        if (cpu_based_exec_ctrl & CPU_BASED_TPR_SHADOW)
                pr_err("TPR Threshold = 0x%02x\n", vmcs_read32(TPR_THRESHOLD));
        if (pin_based_exec_ctrl & PIN_BASED_POSTED_INTR)
                pr_err("PostedIntrVec = 0x%02x\n", vmcs_read16(POSTED_INTR_NV));
        if ((secondary_exec_control & SECONDARY_EXEC_ENABLE_EPT))
-               pr_err("EPT pointer = 0x%016lx\n", vmcs_readl(EPT_POINTER));
+               pr_err("EPT pointer = 0x%016llx\n", vmcs_read64(EPT_POINTER));
        n = vmcs_read32(CR3_TARGET_COUNT);
        for (i = 0; i + 1 < n; i += 4)
                pr_err("CR3 target%u=%016lx target%u=%016lx\n",
@@@ -8042,8 -8101,6 +8101,8 @@@ static int vmx_handle_exit(struct kvm_v
        u32 exit_reason = vmx->exit_reason;
        u32 vectoring_info = vmx->idt_vectoring_info;
  
 +      trace_kvm_exit(exit_reason, vcpu, KVM_ISA_VMX);
 +
        /*
         * Flush logged GPAs PML buffer, this will make dirty_bitmap more
         * updated. Another good is, in kvm_vm_ioctl_get_dirty_log, before
@@@ -8154,7 -8211,7 +8213,7 @@@ static void vmx_set_virtual_x2apic_mode
         * apicv
         */
        if (!cpu_has_vmx_virtualize_x2apic_mode() ||
-                               !vmx_cpu_uses_apicv(vcpu))
+                               !kvm_vcpu_apicv_active(vcpu))
                return;
  
        if (!cpu_need_tpr_shadow(vcpu))
@@@ -8259,10 -8316,9 +8318,9 @@@ static void vmx_hwapic_irr_update(struc
        }
  }
  
- static void vmx_load_eoi_exitmap(struct kvm_vcpu *vcpu)
+ static void vmx_load_eoi_exitmap(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap)
  {
-       u64 *eoi_exit_bitmap = vcpu->arch.eoi_exit_bitmap;
-       if (!vmx_cpu_uses_apicv(vcpu))
+       if (!kvm_vcpu_apicv_active(vcpu))
                return;
  
        vmcs_write64(EOI_EXIT_BITMAP0, eoi_exit_bitmap[0]);
@@@ -8670,6 -8726,7 +8728,6 @@@ static void __noclone vmx_vcpu_run(stru
        vmx->loaded_vmcs->launched = 1;
  
        vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
 -      trace_kvm_exit(vmx->exit_reason, vcpu, KVM_ISA_VMX);
  
        /*
         * the KVM_REQ_EVENT optimization bit is only on for one entry, and if
@@@ -8932,7 -8989,8 +8990,8 @@@ static void vmx_cpuid_update(struct kvm
                        best->ebx &= ~bit(X86_FEATURE_INVPCID);
        }
  
-       vmcs_set_secondary_exec_control(secondary_exec_ctl);
+       if (cpu_has_secondary_exec_ctrls())
+               vmcs_set_secondary_exec_control(secondary_exec_ctl);
  
        if (static_cpu_has(X86_FEATURE_PCOMMIT) && nested) {
                if (guest_cpuid_has_pcommit(vcpu))
@@@ -9508,7 -9566,7 +9567,7 @@@ static void prepare_vmcs02(struct kvm_v
                 */
                vmx->nested.posted_intr_nv = vmcs12->posted_intr_nv;
                vmx->nested.pi_pending = false;
-               vmcs_write64(POSTED_INTR_NV, POSTED_INTR_VECTOR);
+               vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);
                vmcs_write64(POSTED_INTR_DESC_ADDR,
                        page_to_phys(vmx->nested.pi_desc_page) +
                        (unsigned long)(vmcs12->posted_intr_desc_addr &
@@@ -10169,7 -10227,7 +10228,7 @@@ static void prepare_vmcs12(struct kvm_v
         * Additionally, restore L2's PDPTR to vmcs12.
         */
        if (enable_ept) {
-               vmcs12->guest_cr3 = vmcs_read64(GUEST_CR3);
+               vmcs12->guest_cr3 = vmcs_readl(GUEST_CR3);
                vmcs12->guest_pdptr0 = vmcs_read64(GUEST_PDPTR0);
                vmcs12->guest_pdptr1 = vmcs_read64(GUEST_PDPTR1);
                vmcs12->guest_pdptr2 = vmcs_read64(GUEST_PDPTR2);
@@@ -10805,7 -10863,8 +10864,8 @@@ static struct kvm_x86_ops vmx_x86_ops 
        .update_cr8_intercept = update_cr8_intercept,
        .set_virtual_x2apic_mode = vmx_set_virtual_x2apic_mode,
        .set_apic_access_page_addr = vmx_set_apic_access_page_addr,
-       .cpu_uses_apicv = vmx_cpu_uses_apicv,
+       .get_enable_apicv = vmx_get_enable_apicv,
+       .refresh_apicv_exec_ctrl = vmx_refresh_apicv_exec_ctrl,
        .load_eoi_exitmap = vmx_load_eoi_exitmap,
        .hwapic_irr_update = vmx_hwapic_irr_update,
        .hwapic_isr_update = vmx_hwapic_isr_update,
diff --combined arch/x86/kvm/x86.c
@@@ -951,7 -951,7 +951,7 @@@ static u32 msrs_to_save[] = 
        MSR_CSTAR, MSR_KERNEL_GS_BASE, MSR_SYSCALL_MASK, MSR_LSTAR,
  #endif
        MSR_IA32_TSC, MSR_IA32_CR_PAT, MSR_VM_HSAVE_PA,
-       MSR_IA32_FEATURE_CONTROL, MSR_IA32_BNDCFGS
+       MSR_IA32_FEATURE_CONTROL, MSR_IA32_BNDCFGS, MSR_TSC_AUX,
  };
  
  static unsigned num_msrs_to_save;
@@@ -966,6 -966,8 +966,8 @@@ static u32 emulated_msrs[] = 
        HV_X64_MSR_RESET,
        HV_X64_MSR_VP_INDEX,
        HV_X64_MSR_VP_RUNTIME,
+       HV_X64_MSR_SCONTROL,
+       HV_X64_MSR_STIMER0_CONFIG,
        HV_X64_MSR_APIC_ASSIST_PAGE, MSR_KVM_ASYNC_PF_EN, MSR_KVM_STEAL_TIME,
        MSR_KVM_PV_EOI_EN,
  
@@@ -1167,7 -1169,8 +1169,8 @@@ static void kvm_write_wall_clock(struc
  
        ++version;
  
-       kvm_write_guest(kvm, wall_clock, &version, sizeof(version));
+       if (kvm_write_guest(kvm, wall_clock, &version, sizeof(version)))
+               return;
  
        /*
         * The guest calculates current wall clock time by adding
@@@ -1683,6 -1686,11 +1686,11 @@@ static void pvclock_update_vm_gtod_copy
  #endif
  }
  
+ void kvm_make_mclock_inprogress_request(struct kvm *kvm)
+ {
+       kvm_make_all_cpus_request(kvm, KVM_REQ_MCLOCK_INPROGRESS);
+ }
  static void kvm_gen_update_masterclock(struct kvm *kvm)
  {
  #ifdef CONFIG_X86_64
@@@ -2198,6 -2206,7 +2206,7 @@@ int kvm_set_msr_common(struct kvm_vcpu 
        case HV_X64_MSR_GUEST_OS_ID ... HV_X64_MSR_SINT15:
        case HV_X64_MSR_CRASH_P0 ... HV_X64_MSR_CRASH_P4:
        case HV_X64_MSR_CRASH_CTL:
+       case HV_X64_MSR_STIMER0_CONFIG ... HV_X64_MSR_STIMER3_COUNT:
                return kvm_hv_set_msr_common(vcpu, msr, data,
                                             msr_info->host_initiated);
        case MSR_IA32_BBL_CR_CTL3:
@@@ -2402,6 -2411,7 +2411,7 @@@ int kvm_get_msr_common(struct kvm_vcpu 
        case HV_X64_MSR_GUEST_OS_ID ... HV_X64_MSR_SINT15:
        case HV_X64_MSR_CRASH_P0 ... HV_X64_MSR_CRASH_P4:
        case HV_X64_MSR_CRASH_CTL:
+       case HV_X64_MSR_STIMER0_CONFIG ... HV_X64_MSR_STIMER3_COUNT:
                return kvm_hv_get_msr_common(vcpu,
                                             msr_info->index, &msr_info->data);
                break;
@@@ -2541,6 -2551,7 +2551,7 @@@ int kvm_vm_ioctl_check_extension(struc
        case KVM_CAP_HYPERV:
        case KVM_CAP_HYPERV_VAPIC:
        case KVM_CAP_HYPERV_SPIN:
+       case KVM_CAP_HYPERV_SYNIC:
        case KVM_CAP_PCI_SEGMENT:
        case KVM_CAP_DEBUGREGS:
        case KVM_CAP_X86_ROBUST_SINGLESTEP:
@@@ -2693,6 -2704,11 +2704,11 @@@ static bool need_emulate_wbinvd(struct 
        return kvm_arch_has_noncoherent_dma(vcpu->kvm);
  }
  
+ static inline void kvm_migrate_timers(struct kvm_vcpu *vcpu)
+ {
+       set_bit(KVM_REQ_MIGRATE_TIMER, &vcpu->requests);
+ }
  void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
  {
        /* Address WBINVD may be executed by guest */
@@@ -2748,7 -2764,9 +2764,9 @@@ void kvm_arch_vcpu_put(struct kvm_vcpu 
  static int kvm_vcpu_ioctl_get_lapic(struct kvm_vcpu *vcpu,
                                    struct kvm_lapic_state *s)
  {
-       kvm_x86_ops->sync_pir_to_irr(vcpu);
+       if (vcpu->arch.apicv_active)
+               kvm_x86_ops->sync_pir_to_irr(vcpu);
        memcpy(s->regs, vcpu->arch.apic->regs, sizeof *s);
  
        return 0;
@@@ -3191,6 -3209,20 +3209,20 @@@ static int kvm_set_guest_paused(struct 
        return 0;
  }
  
+ static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu,
+                                    struct kvm_enable_cap *cap)
+ {
+       if (cap->flags)
+               return -EINVAL;
+       switch (cap->cap) {
+       case KVM_CAP_HYPERV_SYNIC:
+               return kvm_hv_activate_synic(vcpu);
+       default:
+               return -EINVAL;
+       }
+ }
  long kvm_arch_vcpu_ioctl(struct file *filp,
                         unsigned int ioctl, unsigned long arg)
  {
                r = kvm_set_guest_paused(vcpu);
                goto out;
        }
+       case KVM_ENABLE_CAP: {
+               struct kvm_enable_cap cap;
+               r = -EFAULT;
+               if (copy_from_user(&cap, argp, sizeof(cap)))
+                       goto out;
+               r = kvm_vcpu_ioctl_enable_cap(vcpu, &cap);
+               break;
+       }
        default:
                r = -EINVAL;
        }
@@@ -3572,11 -3613,9 +3613,11 @@@ static int kvm_vm_ioctl_get_pit(struct 
  
  static int kvm_vm_ioctl_set_pit(struct kvm *kvm, struct kvm_pit_state *ps)
  {
 +      int i;
        mutex_lock(&kvm->arch.vpit->pit_state.lock);
        memcpy(&kvm->arch.vpit->pit_state, ps, sizeof(struct kvm_pit_state));
 -      kvm_pit_load_count(kvm, 0, ps->channels[0].count, 0);
 +      for (i = 0; i < 3; i++)
 +              kvm_pit_load_count(kvm, i, ps->channels[i].count, 0);
        mutex_unlock(&kvm->arch.vpit->pit_state.lock);
        return 0;
  }
@@@ -3595,7 -3634,6 +3636,7 @@@ static int kvm_vm_ioctl_get_pit2(struc
  static int kvm_vm_ioctl_set_pit2(struct kvm *kvm, struct kvm_pit_state2 *ps)
  {
        int start = 0;
 +      int i;
        u32 prev_legacy, cur_legacy;
        mutex_lock(&kvm->arch.vpit->pit_state.lock);
        prev_legacy = kvm->arch.vpit->pit_state.flags & KVM_PIT_FLAGS_HPET_LEGACY;
        memcpy(&kvm->arch.vpit->pit_state.channels, &ps->channels,
               sizeof(kvm->arch.vpit->pit_state.channels));
        kvm->arch.vpit->pit_state.flags = ps->flags;
 -      kvm_pit_load_count(kvm, 0, kvm->arch.vpit->pit_state.channels[0].count, start);
 +      for (i = 0; i < 3; i++)
 +              kvm_pit_load_count(kvm, i, kvm->arch.vpit->pit_state.channels[i].count,
 +                                 start && i == 0);
        mutex_unlock(&kvm->arch.vpit->pit_state.lock);
        return 0;
  }
@@@ -4006,16 -4042,17 +4047,17 @@@ static void kvm_init_msr_list(void
  
                /*
                 * Even MSRs that are valid in the host may not be exposed
-                * to the guests in some cases.  We could work around this
-                * in VMX with the generic MSR save/load machinery, but it
-                * is not really worthwhile since it will really only
-                * happen with nested virtualization.
+                * to the guests in some cases.
                 */
                switch (msrs_to_save[i]) {
                case MSR_IA32_BNDCFGS:
                        if (!kvm_x86_ops->mpx_supported())
                                continue;
                        break;
+               case MSR_TSC_AUX:
+                       if (!kvm_x86_ops->rdtscp_supported())
+                               continue;
+                       break;
                default:
                        break;
                }
@@@ -5872,6 -5909,12 +5914,12 @@@ static void kvm_pv_kick_cpu_op(struct k
        kvm_irq_delivery_to_apic(kvm, NULL, &lapic_irq, NULL);
  }
  
+ void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu)
+ {
+       vcpu->arch.apicv_active = false;
+       kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu);
+ }
  int kvm_emulate_hypercall(struct kvm_vcpu *vcpu)
  {
        unsigned long nr, a0, a1, a2, a3, ret;
@@@ -5965,6 -6008,9 +6013,9 @@@ static void update_cr8_intercept(struc
        if (!vcpu->arch.apic)
                return;
  
+       if (vcpu->arch.apicv_active)
+               return;
        if (!vcpu->arch.apic->vapic_addr)
                max_irr = kvm_lapic_find_highest_irr(vcpu);
        else
@@@ -6301,20 -6347,30 +6352,30 @@@ static void process_smi(struct kvm_vcp
        kvm_mmu_reset_context(vcpu);
  }
  
+ void kvm_make_scan_ioapic_request(struct kvm *kvm)
+ {
+       kvm_make_all_cpus_request(kvm, KVM_REQ_SCAN_IOAPIC);
+ }
  static void vcpu_scan_ioapic(struct kvm_vcpu *vcpu)
  {
+       u64 eoi_exit_bitmap[4];
        if (!kvm_apic_hw_enabled(vcpu->arch.apic))
                return;
  
-       memset(vcpu->arch.eoi_exit_bitmap, 0, 256 / 8);
+       bitmap_zero(vcpu->arch.ioapic_handled_vectors, 256);
  
        if (irqchip_split(vcpu->kvm))
-               kvm_scan_ioapic_routes(vcpu, vcpu->arch.eoi_exit_bitmap);
+               kvm_scan_ioapic_routes(vcpu, vcpu->arch.ioapic_handled_vectors);
        else {
-               kvm_x86_ops->sync_pir_to_irr(vcpu);
-               kvm_ioapic_scan_entry(vcpu, vcpu->arch.eoi_exit_bitmap);
+               if (vcpu->arch.apicv_active)
+                       kvm_x86_ops->sync_pir_to_irr(vcpu);
+               kvm_ioapic_scan_entry(vcpu, vcpu->arch.ioapic_handled_vectors);
        }
-       kvm_x86_ops->load_eoi_exitmap(vcpu);
+       bitmap_or((ulong *)eoi_exit_bitmap, vcpu->arch.ioapic_handled_vectors,
+                 vcpu_to_synic(vcpu)->vec_bitmap, 256);
+       kvm_x86_ops->load_eoi_exitmap(vcpu, eoi_exit_bitmap);
  }
  
  static void kvm_vcpu_flush_tlb(struct kvm_vcpu *vcpu)
@@@ -6422,7 -6478,7 +6483,7 @@@ static int vcpu_enter_guest(struct kvm_
                if (kvm_check_request(KVM_REQ_IOAPIC_EOI_EXIT, vcpu)) {
                        BUG_ON(vcpu->arch.pending_ioapic_eoi > 255);
                        if (test_bit(vcpu->arch.pending_ioapic_eoi,
-                                    (void *) vcpu->arch.eoi_exit_bitmap)) {
+                                    vcpu->arch.ioapic_handled_vectors)) {
                                vcpu->run->exit_reason = KVM_EXIT_IOAPIC_EOI;
                                vcpu->run->eoi.vector =
                                                vcpu->arch.pending_ioapic_eoi;
                        r = 0;
                        goto out;
                }
+               if (kvm_check_request(KVM_REQ_HV_EXIT, vcpu)) {
+                       vcpu->run->exit_reason = KVM_EXIT_HYPERV;
+                       vcpu->run->hyperv = vcpu->arch.hyperv.exit;
+                       r = 0;
+                       goto out;
+               }
+               /*
+                * KVM_REQ_HV_STIMER has to be processed after
+                * KVM_REQ_CLOCK_UPDATE, because Hyper-V SynIC timers
+                * depend on the guest clock being up-to-date
+                */
+               if (kvm_check_request(KVM_REQ_HV_STIMER, vcpu))
+                       kvm_hv_process_stimers(vcpu);
        }
  
        /*
                 * Update architecture specific hints for APIC
                 * virtual interrupt delivery.
                 */
-               if (kvm_x86_ops->hwapic_irr_update)
+               if (vcpu->arch.apicv_active)
                        kvm_x86_ops->hwapic_irr_update(vcpu,
                                kvm_lapic_find_highest_irr(vcpu));
        }
        if (req_immediate_exit)
                smp_send_reschedule(vcpu->cpu);
  
 +      trace_kvm_entry(vcpu->vcpu_id);
 +      wait_lapic_expire(vcpu);
        __kvm_guest_enter();
  
        if (unlikely(vcpu->arch.switch_db_regs)) {
                vcpu->arch.switch_db_regs &= ~KVM_DEBUGREG_RELOAD;
        }
  
 -      trace_kvm_entry(vcpu->vcpu_id);
 -      wait_lapic_expire(vcpu);
        kvm_x86_ops->run(vcpu);
  
        /*
@@@ -7528,6 -7598,7 +7603,7 @@@ int kvm_arch_vcpu_init(struct kvm_vcpu 
        BUG_ON(vcpu->kvm == NULL);
        kvm = vcpu->kvm;
  
+       vcpu->arch.apicv_active = kvm_x86_ops->get_enable_apicv();
        vcpu->arch.pv.pv_unhalted = false;
        vcpu->arch.emulate_ctxt.ops = &emulate_ops;
        if (!irqchip_in_kernel(kvm) || kvm_vcpu_is_reset_bsp(vcpu))
  
        vcpu->arch.pending_external_vector = -1;
  
+       kvm_hv_vcpu_init(vcpu);
        return 0;
  
  fail_free_mce_banks:
@@@ -7603,6 -7676,7 +7681,7 @@@ void kvm_arch_vcpu_uninit(struct kvm_vc
  {
        int idx;
  
+       kvm_hv_vcpu_uninit(vcpu);
        kvm_pmu_destroy(vcpu);
        kfree(vcpu->arch.mce_banks);
        kvm_free_lapic(vcpu);
@@@ -7997,6 -8071,9 +8076,9 @@@ static inline bool kvm_vcpu_has_events(
            kvm_cpu_has_interrupt(vcpu))
                return true;
  
+       if (kvm_hv_has_stimer_pending(vcpu))
+               return true;
        return false;
  }
  
diff --combined virt/kvm/arm/vgic.c
@@@ -878,7 -878,7 +878,7 @@@ static int vgic_handle_mmio_write(struc
                                       true);
  }
  
- struct kvm_io_device_ops vgic_io_ops = {
+ static struct kvm_io_device_ops vgic_io_ops = {
        .read   = vgic_handle_mmio_read,
        .write  = vgic_handle_mmio_write,
  };
@@@ -1114,7 -1114,7 +1114,7 @@@ bool kvm_vgic_map_is_active(struct kvm_
                        return true;
        }
  
 -      return dist_active_irq(vcpu);
 +      return vgic_irq_is_active(vcpu, map->virt_irq);
  }
  
  /*