1. 23 10月, 2015 20 次提交
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · d0ddf980
      Linus Torvalds 提交于
      Pull ARM SoC fixes from Arnd Bergmann:
       "Most of the changes this time are for incorrect device nodes in
        various ways, on on imx, berlin, exynos, ux500, uniphier, omap and
        meson.
      
        Chen-Yu Tsai now co-maintains mach-sunxi (Allwinner).
      
        Other bug fixes include
         - a partial revert of a broken tegra gpio patch
         - irq affinity for arm ccn
         - suspend on one Armada 385 machine
         - enable ZONE_DMA to avoid an OMAP crash for over 2GB RAM
         - turning on a regulator on beagleboard-x15 for HDMI
         - making the omap gpmc debug code visible
         - setup of orion network switch
         - a rare build regression for pxa"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (22 commits)
        ARM: OMAP2+: Fix imprecise external abort caused by bogus SRAM init
        thermal: exynos: Fix register read in TMU
        ARM: OMAP2+: Fix oops with LPAE and more than 2GB of memory
        ARM: tegra: Comment out gpio-ranges properties
        ARM: dts: uniphier: fix IRQ number for devices on PH1-LD6b ref board
        drivers/perf: arm_pmu: avoid CPU device_node reference leak
        bus: arm-ccn: Fix irq affinity setting on CPU migration
        bus: arm-ccn: Handle correctly no-more-cpus case
        ARM: mvebu: correct a385-db-ap compatible string
        ARM: meson6: DTS: Fix wrong reg mapping and IRQ numbers
        MAINTAINERS: Update Allwinner entry and add new maintainer
        ARM: ux500: modify initial levelshifter status
        ARM: pxa: fix pxa3xx DFI lockup hack
        Documentation: ARM: List new omap MMC requirements
        memory: omap-gpmc: dump "before" state before first modification
        memory: omap-gpmc: Fix unselectable debug option for GPMC
        ARM: dts: am57xx-beagle-x15: set VDD_SD to always-on
        ARM: dts: Fix audio card detection on Peach boards
        ARM: EXYNOS: Fix double of_node_put() when parsing child power domains
        ARM: orion: Fix DSA platform device after mvmdio conversion
        ...
      d0ddf980
    • L
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 2c44f4f0
      Linus Torvalds 提交于
      Pull KVM bugfixes from Paolo Bonzini:
       "Bug fixes for ARM, mostly 4.3 regressions related to virtual interrupt
        controller changes"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        arm/arm64: KVM: Fix disabled distributor operation
        arm/arm64: KVM: Clear map->active on pend/active clear
        arm/arm64: KVM: Fix arch timer behavior for disabled interrupts
        KVM: arm: use GIC support unconditionally
        KVM: arm/arm64: Fix memory leak if timer initialization fails
        KVM: arm/arm64: Do not inject spurious interrupts
      2c44f4f0
    • L
      Merge tag 'trace-fixes-v4.3-rc6' of... · 8a990fb4
      Linus Torvalds 提交于
      Merge tag 'trace-fixes-v4.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
      
      Pull tracing fixes from Steven Rostedt:
       "Running tests on other changes, the system locked up due to lots of
        warnings.  It was caused by the stack tracer triggering a warning
        about using rcu_dereference() when RCU was not watching.  This can
        happen due to the fact that the stack tracer uses the function tracer
        to check each function, and there are functions that may be called and
        traced when RCU stopped watching.  Namely when a function is called
        just before going idle or to userspace and after RCU stopped watching
        that current CPU.
      
        The first patch makes sure that RCU is watching when the stack tracer
        uses RCU.  The second patch is to make sure that the stack tracer does
        not get called by functions in NMI, as it's not NMI safe"
      
      * tag 'trace-fixes-v4.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Do not allow stack_tracer to record stack in NMI
        tracing: Have stack tracer force RCU to be watching
      8a990fb4
    • L
      Merge tag 'sound-4.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 0122835a
      Linus Torvalds 提交于
      Pull sound fixes from Takashi Iwai:
       "There is nothing to worry you much, only a few small & stable patches
        are found for usual stuff, HD-audio (a Lenovo laptop quirk, a fix for
        minor error handling) and ASoC (trivial fixes for RT298 and WM
        codecs).
      
        The only remaining major change is the fix for ASoC SX_TLV control
        that was overseen during refactoring, but the fix itself is trivial
        and safe"
      
      * tag 'sound-4.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ASoC: wm8962: mark cache_dirty flag after software reset in pm_resume
        ASoC: rt298: fix wrong setting of gpio2_en
        ASoC: wm8904: Correct number of EQ registers
        ALSA: hda - Fix deadlock at error in building PCM
        ASoC: Add info callback for SX_TLV controls
        ASoC: rt298: correct index default value
        ALSA: hda - Fix inverted internal mic on Lenovo G50-80
        ALSA: hdac: Explicitly add io.h
      0122835a
    • L
      Merge tag 'media/v4.3-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 45d80f16
      Linus Torvalds 提交于
      Pull media fixes from Mauro Carvalho Chehab:
       "Some regression fixes and potential security issues:
      
         - netup_unidvb: fix potential crash when spi is NULL
         - rtl28xxu: fix control message flaws
         - m88ds3103: fix a regression on Kernel 4.2
         - c8sectpfe: fix some issues on this new driver
         - v4l2-flash-led-class: fix a Kbuild dependency
         - si2157 and si2158: check for array boundary when uploading firmware
           files
         - horus3a and lnbh25: fix some building troubles when some options
           aren't selected
         - ir-hix5hd2: drop the use of IRQF_NO_SUSPEND"
      
      * tag 'media/v4.3-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        [media] m88ds3103: use own reg update_bits() implementation
        [media] rtl28xxu: fix control message flaws
        [media] v4l2-flash-led-class: Add missing VIDEO_V4L2 Kconfig dependency
        [media] netup_unidvb: fix potential crash when spi is NULL
        [media] si2168: Bounds check firmware
        [media] si2157: Bounds check firmware
        [media] ir-hix5hd2: drop the use of IRQF_NO_SUSPEND
        [media] c8sectpfe: fix return of garbage
        [media] c8sectpfe: fix ininitialized error return on firmware load failure
        [media] lnbh25: Fix lnbh25_attach() function return type
        [media] horus3a: Fix horus3a_attach() function parameters
      45d80f16
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · a67b20d2
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "I've been a bit slow gathering these:
      
         - drm/mst: one mutex leak in a fail path
      
         - radeon: two oops fixes, one dpm fix
      
         - i915: one messy set of fixes, where we revert the original fix, and
                 pull back the proper set of fixes from -next on top.
      
         - nouveau: one fix for an illegal buffer placement.
      
        Doesn't look too bad, hopefully shouldn't be too much more"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/nouveau/gem: return only valid domain when there's only one
        drm: fix mutex leak in drm_dp_get_mst_branch_device
        drm/amdgpu: add missing dpm check for KV dpm late init
        drm/amdgpu/dpm: don't add pwm attributes if DPM is disabled
        drm/radeon/dpm: don't add pwm attributes if DPM is disabled
        drm/i915: Add primary plane to mask if it's visible
        drm/i915: Move sprite/cursor plane disable to intel_sanitize_crtc()
        drm/i915: Assign hwmode after encoder state readout
        Revert "drm/i915: Add primary plane to mask if it's visible"
        drm/i915: Deny wrapping an userptr into a framebuffer
        drm/i915: Enable DPLL VGA mode before P1/P2 divider write
        drm/i915: Restore lost DPLL register write on gen2-4
        drm/i915: Flush pipecontrol post-sync writes
        drm/i915: Fix kerneldoc for i915_gem_shrink_all
      a67b20d2
    • T
      Merge tag 'asoc-fix-v4.3-rc6' of... · b9b6e4ac
      Takashi Iwai 提交于
      Merge tag 'asoc-fix-v4.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
      
      ASoC: Fixes for v4.3
      
      A bunch of driver fixes plus one core fix which fixes problems with
      misreporting values from _SX controls following a recent refactoring.
      This had gone unnoticed as such controls are quite rare.
      b9b6e4ac
    • M
      Merge remote-tracking branches 'asoc/fix/rt298', 'asoc/fix/sx',... · f69eccc4
      Mark Brown 提交于
      Merge remote-tracking branches 'asoc/fix/rt298', 'asoc/fix/sx', 'asoc/fix/wm8904' and 'asoc/fix/wm8962' into asoc-linus
      f69eccc4
    • M
      ab5cf7df
    • A
      [media] m88ds3103: use own reg update_bits() implementation · 56ea37da
      Antti Palosaari 提交于
      Device stopped to tuning some channels after regmap conversion.
      Reason is that regmap_update_bits() works a bit differently for
      partially volatile registers than old homemade routine. Return
      back to old routine in order to fix issue.
      
      Fixes: 478932b1
      
      Cc: <stable@kernel.org> # 4.2+
      Reported-by: NMark Clarkstone <hello@markclarkstone.co.uk>
      Tested-by: NMark Clarkstone <hello@markclarkstone.co.uk>
      Signed-off-by: NAntti Palosaari <crope@iki.fi>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      56ea37da
    • A
      [media] rtl28xxu: fix control message flaws · d18ca5b7
      Antti Palosaari 提交于
      Add lock to prevent concurrent access for control message as control
      message function uses shared buffer. Without the lock there may be
      remote control polling which messes the buffer causing IO errors.
      Increase buffer size and add check for maximum supported message
      length.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=103391
      Fixes: c56222a6 ("[media] rtl28xxu: move usb buffers to state")
      
      Cc: <stable@vger.kernel.org> # 4.0+
      Signed-off-by: NAntti Palosaari <crope@iki.fi>
      d18ca5b7
    • J
      [media] v4l2-flash-led-class: Add missing VIDEO_V4L2 Kconfig dependency · 17f38822
      Jacek Anaszewski 提交于
      Fixes the following randconfig problem:
      
      drivers/built-in.o: In function `v4l2_flash_release':
      (.text+0x12204f): undefined reference to `v4l2_async_unregister_subdev'
      drivers/built-in.o: In function `v4l2_flash_release':
      (.text+0x122057): undefined reference to `v4l2_ctrl_handler_free'
      drivers/built-in.o: In function `v4l2_flash_close':
      v4l2-flash-led-class.c:(.text+0x12208f): undefined reference to `v4l2_fh_is_singular'
      v4l2-flash-led-class.c:(.text+0x1220c8): undefined reference to `__v4l2_ctrl_s_ctrl'
      drivers/built-in.o: In function `v4l2_flash_open':
      v4l2-flash-led-class.c:(.text+0x12227f): undefined reference to `v4l2_fh_is_singular'
      drivers/built-in.o: In function `v4l2_flash_init_controls':
      v4l2-flash-led-class.c:(.text+0x12274e): undefined reference to `v4l2_ctrl_handler_init_class'
      v4l2-flash-led-class.c:(.text+0x122797): undefined reference to `v4l2_ctrl_new_std_menu'
      v4l2-flash-led-class.c:(.text+0x1227e0): undefined reference to `v4l2_ctrl_new_std'
      v4l2-flash-led-class.c:(.text+0x122826): undefined reference to `v4l2_ctrl_handler_setup'
      v4l2-flash-led-class.c:(.text+0x122839): undefined reference to `v4l2_ctrl_handler_free'
      drivers/built-in.o: In function `v4l2_flash_init':
      (.text+0x1228e2): undefined reference to `v4l2_subdev_init'
      drivers/built-in.o: In function `v4l2_flash_init':
      (.text+0x12293b): undefined reference to `v4l2_async_register_subdev'
      drivers/built-in.o: In function `v4l2_flash_init':
      (.text+0x122949): undefined reference to `v4l2_ctrl_handler_free'
      drivers/built-in.o:(.rodata+0x20ef8): undefined reference to `v4l2_subdev_queryctrl'
      drivers/built-in.o:(.rodata+0x20f10): undefined reference to `v4l2_subdev_querymenu'
      Signed-off-by: NJacek Anaszewski <j.anaszewski@samsung.com>
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Cc: Sakari Ailus <sakari.ailus@iki.fi>
      Cc: Hans Verkuil <hans.verkuil@cisco.com>
      17f38822
    • A
    • L
      [media] si2168: Bounds check firmware · 47810b43
      Laura Abbott 提交于
      When reading the firmware and sending commands, the length must
      be bounds checked to avoid overrunning the size of the command
      buffer and smashing the stack if the firmware is not in the expected
      format:
      
      si2168 11-0064: found a 'Silicon Labs Si2168-B40'
      si2168 11-0064: downloading firmware from file 'dvb-demod-si2168-b40-01.fw'
      si2168 11-0064: firmware download failed -95
      Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: ffffffffa085708f
      
      Add the proper check.
      
      Cc: stable@kernel.org
      Reported-by: NStuart Auchterlonie <sauchter@redhat.com>
      Reviewed-by: NAntti Palosaari <crope@iki.fi>
      Signed-off-by: NLaura Abbott <labbott@fedoraproject.org>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      47810b43
    • L
      [media] si2157: Bounds check firmware · a828d72d
      Laura Abbott 提交于
      When reading the firmware and sending commands, the length
      must be bounds checked to avoid overrunning the size of the command
      buffer and smashing the stack if the firmware is not in the
      expected format. Add the proper check.
      
      Cc: stable@kernel.org
      Signed-off-by: NLaura Abbott <labbott@fedoraproject.org>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      a828d72d
    • S
      [media] ir-hix5hd2: drop the use of IRQF_NO_SUSPEND · 54bec397
      Sudeep Holla 提交于
      This driver doesn't claim the IR transmitter to be wakeup source. It
      even disables the clock and the IR during suspend-resume cycle.
      
      This patch removes yet another misuse of IRQF_NO_SUSPEND.
      
      Cc: Patrice Chotard <patrice.chotard@st.com>
      Cc: Fabio Estevam <fabio.estevam@freescale.com>
      Cc: Guoxiong Yan <yanguoxiong@huawei.com>
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Acked-by: NZhangfei Gao <zhangfei.gao@linaro.org>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      54bec397
    • S
      [media] c8sectpfe: fix return of garbage · 51a3ac5f
      Sudip Mukherjee 提交于
      The variable err was never initialized, that means we had been checking
      a garbage value in the for loop. Moreover if the segment is not outside
      the firmware file then also we have been returning the garbage.
      Initialize it to 0 so that on success we return the value and no need to
      check in the for loop also as it is initially 0 and whenever that value
      changes we have done a break from the loop.
      Signed-off-by: NSudip Mukherjee <sudip@vectorindia.org>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      51a3ac5f
    • C
      [media] c8sectpfe: fix ininitialized error return on firmware load failure · bf447221
      Colin Ian King 提交于
      static analysis with cppcheck detected the following error:
      
      [drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c:1210]:
        (error) Uninitialized variable: ret
      
      ret is never initialised, so garbage is being returned. Instead
      return the error return from the call of request_firmware_nowait
      Signed-off-by: NColin Ian King <colin.king@canonical.com>
      bf447221
    • J
      [media] lnbh25: Fix lnbh25_attach() function return type · a9c4e5cf
      Javier Martinez Canillas 提交于
      If CONFIG_DVB_LNBH25 is disabled, a stub static inline function is
      defined that just prints a warning about the driver being disabled
      but the function return type was wrong which caused a build error.
      
      Fixes: e025273b ("[media] lnbh25: LNBH25 SEC controller driver")
      Reported-by: NFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: NJavier Martinez Canillas <javier@osg.samsung.com>
      a9c4e5cf
    • J
      [media] horus3a: Fix horus3a_attach() function parameters · ebdd4b7e
      Javier Martinez Canillas 提交于
      If CONFIG_DVB_HORUS3A is disabled a stub static inline function is
      defined that just prints a warning about the driver being disabled
      but the function parameters were wrong which caused a build error.
      
      Fixes: a5d32b35 ("[media] horus3a: Sony Horus3A DVB-S/S2 tuner driver")
      Reported-by: NFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: NJavier Martinez Canillas <javier@osg.samsung.com>
      ebdd4b7e
  2. 22 10月, 2015 8 次提交
  3. 21 10月, 2015 12 次提交
    • P
      Merge tag 'kvm-arm-for-v4.3-rc7' of... · ad355e38
      Paolo Bonzini 提交于
      Merge tag 'kvm-arm-for-v4.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-master
      
      A late round of KVM/ARM fixes for v4.3-rc7, fixing:
       - A bug where level-triggered interrupts lowered from userspace
         are still routed to the guest
       - A memory leak an a failed initialization path
       - A build error under certain configurations
       - Several timer bugs introduced with moving the timer to the active
         state handling instead of the masking trick.
      ad355e38
    • A
      Merge tag 'mvebu-fixes-4.3-2' of git://git.infradead.org/linux-mvebu into fixes · 55f41297
      Arnd Bergmann 提交于
      Merge "mvebu fixes for 4.3 (part 2)" from Gregory CLEMENT:
      
      Fix wrong compatible for A385 DB AP preventing using suspend
      
      * tag 'mvebu-fixes-4.3-2' of git://git.infradead.org/linux-mvebu:
        ARM: mvebu: correct a385-db-ap compatible string
      55f41297
    • A
      Merge tag 'samsung-fixes-2' of... · 0690f4f2
      Arnd Bergmann 提交于
      Merge tag 'samsung-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into fixes
      
      Merge "Samsung 2nd fixes for v4.3" from Kukjin Kim:
      
      - fix SOC detection of exynos thermal on exynos5260
      - fix audio card detection on Peach boards
      - fix double of_node_put() when parsing child power domains
      
      * tag 'samsung-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
        thermal: exynos: Fix register read in TMU
        ARM: dts: Fix audio card detection on Peach boards
        ARM: EXYNOS: Fix double of_node_put() when parsing child power domains
      0690f4f2
    • A
      Merge tag 'omap-for-v4.3/fixes-rc6' of... · 6701ef03
      Arnd Bergmann 提交于
      Merge tag 'omap-for-v4.3/fixes-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes
      
      Merge "Fixes for omaps for v4.3-rc cycle" from Tony Lindgren:
      
      - Fix oops with LPAE and moew than 2GB of memory by enabling
        ZONE_DMA for LPAE. Probably no need for stable on this one as we
        only recently ran into this with the mainline kernel
      
      - Fix imprecise external abort caused by bogus SRAM init. This affects
        dm814x recently merged, so no need for stable on this one AFAIK
      
      * tag 'omap-for-v4.3/fixes-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
        ARM: OMAP2+: Fix imprecise external abort caused by bogus SRAM init
        ARM: OMAP2+: Fix oops with LPAE and more than 2GB of memory
      6701ef03
    • B
      ASoC: rt298: fix wrong setting of gpio2_en · f8f2dc4a
      Bard Liao 提交于
      The register value to enable gpio2 was incorrect. So fix it.
      Signed-off-by: NBard Liao <bardliao@realtek.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      f8f2dc4a
    • C
      mmc: core: Fix init_card in 52Mhz · 08b137d9
      Chaotian Jing 提交于
      Suppose that we got a data crc error, and it triggers the mmc_reset.
      mmc_reset will call mmc_send_status to see if HW reset was supported.
      before issue CMD13, it will do retune, and if EMMC was in HS400 mode,
      it will reduce frequency to 52Mhz firstly, then results in card init
      was doing at 52Mhz.
      The mmc_send_status was originally only done for mmc_test, should drop
      it. And, rename the "eMMC hardware reset" to "Reset test", as we would
      also be able to use the test for SD-cards.
      Signed-off-by: NChaotian Jing <chaotian.jing@mediatek.com>
      Suggested-by: NAdrian Hunter <adrian.hunter@intel.com>
      Fixes: bd11e8bd ("mmc: core: Flag re-tuning is needed on CRC errors")
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      08b137d9
    • S
      tracing: Do not allow stack_tracer to record stack in NMI · 1904be1b
      Steven Rostedt (Red Hat) 提交于
      The code in stack tracer should not be executed within an NMI as it grabs
      spinlocks and stack tracing an NMI gives the possibility of causing a
      deadlock. Although this is safe on x86_64, because it does not perform stack
      traces when the task struct stack is not in use (interrupts and NMIs), it
      may be an issue for NMIs on i386 and other archs that use the same stack as
      the NMI.
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      1904be1b
    • C
      arm/arm64: KVM: Fix disabled distributor operation · 0d997491
      Christoffer Dall 提交于
      We currently do a single update of the vgic state when the distributor
      enable/disable control register is accessed and then bypass updating the
      state for as long as the distributor remains disabled.
      
      This is incorrect, because updating the state does not consider the
      distributor enable bit, and this you can end up in a situation where an
      interrupt is marked as pending on the CPU interface, but not pending on
      the distributor, which is an impossible state to be in, and triggers a
      warning.  Consider for example the following sequence of events:
      
      1. An interrupt is marked as pending on the distributor
         - the interrupt is also forwarded to the CPU interface
      2. The guest turns off the distributor (it's about to do a reboot)
         - we stop updating the CPU interface state from now on
      3. The guest disables the pending interrupt
         - we remove the pending state from the distributor, but don't touch
           the CPU interface, see point 2.
      
      Since the distributor disable bit really means that no interrupts should
      be forwarded to the CPU interface, we modify the code to keep updating
      the internal VGIC state, but always set the CPU interface pending bits
      to zero when the distributor is disabled.
      Signed-off-by: NChristoffer Dall <christoffer.dall@linaro.org>
      0d997491
    • C
      arm/arm64: KVM: Clear map->active on pend/active clear · 544c572e
      Christoffer Dall 提交于
      When a guest reboots or offlines/onlines CPUs, it is not uncommon for it
      to clear the pending and active states of an interrupt through the
      emulated VGIC distributor.  However, since the architected timers are
      defined by the architecture to be level triggered and the guest
      rightfully expects them to be that, but we emulate them as
      edge-triggered, we have to mimic level-triggered behavior for an
      edge-triggered virtual implementation.
      
      We currently do not signal the VGIC when the map->active field is true,
      because it indicates that the guest has already been signalled of the
      interrupt as required.  Normally this field is set to false when the
      guest deactivates the virtual interrupt through the sync path.
      
      We also need to catch the case where the guest deactivates the interrupt
      through the emulated distributor, again allowing guests to boot even if
      the original virtual timer signal hit before the guest's GIC
      initialization sequence is run.
      Reviewed-by: NEric Auger <eric.auger@linaro.org>
      Signed-off-by: NChristoffer Dall <christoffer.dall@linaro.org>
      544c572e
    • C
      arm/arm64: KVM: Fix arch timer behavior for disabled interrupts · cff9211e
      Christoffer Dall 提交于
      We have an interesting issue when the guest disables the timer interrupt
      on the VGIC, which happens when turning VCPUs off using PSCI, for
      example.
      
      The problem is that because the guest disables the virtual interrupt at
      the VGIC level, we never inject interrupts to the guest and therefore
      never mark the interrupt as active on the physical distributor.  The
      host also never takes the timer interrupt (we only use the timer device
      to trigger a guest exit and everything else is done in software), so the
      interrupt does not become active through normal means.
      
      The result is that we keep entering the guest with a programmed timer
      that will always fire as soon as we context switch the hardware timer
      state and run the guest, preventing forward progress for the VCPU.
      
      Since the active state on the physical distributor is really part of the
      timer logic, it is the job of our virtual arch timer driver to manage
      this state.
      
      The timer->map->active boolean field indicates whether we have signalled
      this interrupt to the vgic and if that interrupt is still pending or
      active.  As long as that is the case, the hardware doesn't have to
      generate physical interrupts and therefore we mark the interrupt as
      active on the physical distributor.
      
      We also have to restore the pending state of an interrupt that was
      queued to an LR but was retired from the LR for some reason, while
      remaining pending in the LR.
      
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Reported-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: NChristoffer Dall <christoffer.dall@linaro.org>
      cff9211e
    • A
      KVM: arm: use GIC support unconditionally · 4a5d69b7
      Arnd Bergmann 提交于
      The vgic code on ARM is built for all configurations that enable KVM,
      but the parent_data field that it references is only present when
      CONFIG_IRQ_DOMAIN_HIERARCHY is set:
      
      virt/kvm/arm/vgic.c: In function 'kvm_vgic_map_phys_irq':
      virt/kvm/arm/vgic.c:1781:13: error: 'struct irq_data' has no member named 'parent_data'
      
      This flag is implied by the GIC driver, and indeed the VGIC code only
      makes sense if a GIC is present. This changes the CONFIG_KVM symbol
      to always select GIC, which avoids the issue.
      
      Fixes: 662d9715 ("arm/arm64: KVM: Kill CONFIG_KVM_ARM_{VGIC,TIMER}")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NChristoffer Dall <christoffer.dall@linaro.org>
      4a5d69b7
    • P
      KVM: arm/arm64: Fix memory leak if timer initialization fails · 399ea0f6
      Pavel Fedin 提交于
      Jump to correct label and free kvm_host_cpu_state
      Reviewed-by: NWei Huang <wei@redhat.com>
      Signed-off-by: NPavel Fedin <p.fedin@samsung.com>
      Signed-off-by: NChristoffer Dall <christoffer.dall@linaro.org>
      399ea0f6