Skip to content
Snippets Groups Projects
  1. Jun 29, 2021
  2. Jun 25, 2021
  3. Jun 24, 2021
  4. Jun 21, 2021
  5. Jun 18, 2021
  6. Jun 17, 2021
    • Chenyi Qiang's avatar
      i386: Add ratelimit for bus locks acquired in guest · 035d1ef2
      Chenyi Qiang authored
      A bus lock is acquired through either split locked access to writeback
      (WB) memory or any locked access to non-WB memory. It is typically >1000
      cycles slower than an atomic operation within a cache and can also
      disrupts performance on other cores.
      
      Virtual Machines can exploit bus locks to degrade the performance of
      system. To address this kind of performance DOS attack coming from the
      VMs, bus lock VM exit is introduced in KVM and it can report the bus
      locks detected in guest. If enabled in KVM, it would exit to the
      userspace to let the user enforce throttling policies once bus locks
      acquired in VMs.
      
      The availability of bus lock VM exit can be detected through the
      KVM_CAP_X86_BUS_LOCK_EXIT. The returned bitmap contains the potential
      policies supported by KVM. The field KVM_BUS_LOCK_DETECTION_EXIT in
      bitmap is the only supported strategy at present. It indicates that KVM
      will exit to userspace to handle the bus locks.
      
      This patch adds a ratelimit on the bus locks acquired in guest as a
      mitigation policy.
      
      Introduce a new field "bus_lock_ratelimit" to record the limited speed
      of bus locks in the target VM. The user can specify it through the
      "bus-lock-ratelimit" as a machine property. In current implementation,
      the default value of the speed is 0 per second, which means no
      restrictions on the bus locks.
      
      As for ratelimit on detected bus locks, simply set the ratelimit
      interval to 1s and restrict the quota of bus lock occurence to the value
      of "bus_lock_ratelimit". A potential alternative is to introduce the
      time slice as a property which can help the user achieve more precise
      control.
      
      The detail of bus lock VM exit can be found in spec:
      https://software.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html
      
      
      
      Signed-off-by: default avatarChenyi Qiang <chenyi.qiang@intel.com>
      Message-Id: <20210521043820.29678-1-chenyi.qiang@intel.com>
      Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
      035d1ef2
    • Philippe Mathieu-Daudé's avatar
      hw/audio/sb16: Avoid assertion by restricting I/O sampling rate range · a2cd86a9
      Philippe Mathieu-Daudé authored
      While the SB16 seems to work up to 48000 Hz, the "Sound Blaster Series
      Hardware Programming Guide" limit the sampling range from 4000 Hz to
      44100 Hz (Section 3-9, 3-10: Digitized Sound I/O Programming, tables
      3-2 and 3-3).
      
      Later, section 6-15 (DSP Commands) is more specific regarding the 41h /
      42h registers (Set digitized sound output sampling rate):
      
        Valid sampling rates range from 5000 to 45000 Hz inclusive.
      
      There is no comment regarding error handling if the register is filled
      with an out-of-range value.  (See also section 3-28 "8-bit or 16-bit
      Auto-initialize Transfer"). Assume limits are enforced in hardware.
      
      This fixes triggering an assertion in audio_calloc():
      
        #1 abort
        #2 audio_bug audio/audio.c:119:9
        #3 audio_calloc audio/audio.c:154:9
        #4 audio_pcm_sw_alloc_resources_out audio/audio_template.h:116:15
        #5 audio_pcm_sw_init_out audio/audio_template.h:175:11
        #6 audio_pcm_create_voice_pair_out audio/audio_template.h:410:9
        #7 AUD_open_out audio/audio_template.h:503:14
        #8 continue_dma8 hw/audio/sb16.c:216:20
        #9 dma_cmd8 hw/audio/sb16.c:276:5
        #10 command hw/audio/sb16.c:0
        #11 dsp_write hw/audio/sb16.c:949:13
        #12 portio_write softmmu/ioport.c:205:13
        #13 memory_region_write_accessor softmmu/memory.c:491:5
        #14 access_with_adjusted_size softmmu/memory.c:552:18
        #15 memory_region_dispatch_write softmmu/memory.c:0:13
        #16 flatview_write_continue softmmu/physmem.c:2759:23
        #17 flatview_write softmmu/physmem.c:2799:14
        #18 address_space_write softmmu/physmem.c:2891:18
        #19 cpu_outw softmmu/ioport.c:70:5
      
      [*] http://www.baudline.com/solutions/full_duplex/sb16_pci/index.html
      
      OSS-Fuzz Report: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=29174
      
      Fixes: 85571bc7 ("audio merge (malc)")
      Buglink: https://bugs.launchpad.net/bugs/1910603
      
      
      Tested-by: default avatarQiang Liu <cyruscyliu@gmail.com>
      Reviewed-by: default avatarQiang Liu <cyruscyliu@gmail.com>
      Signed-off-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Message-Id: <20210616104349.2398060-1-f4bug@amsat.org>
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      a2cd86a9
  7. Jun 16, 2021
  8. Jun 15, 2021
Loading