qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 280c1e: audio/hda: create millisecond timers


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 280c1e: audio/hda: create millisecond timers that handle I...
Date: Mon, 25 Jun 2018 08:12:48 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 280c1e1cdb24d80ecdfcdfc679ccc5e8ed7af45d
      
https://github.com/qemu/qemu/commit/280c1e1cdb24d80ecdfcdfc679ccc5e8ed7af45d
  Author: Gerd Hoffmann <address@hidden>
  Date:   2018-06-25 (Mon, 25 Jun 2018)

  Changed paths:
    M hw/audio/hda-codec.c
    M hw/audio/intel-hda.c

  Log Message:
  -----------
  audio/hda: create millisecond timers that handle IO

Currently, the HDA device tries to sync itself with the QEMU audio
backend by waiting for the guest driver to handle buffer completion
interrupts. This causes the backend to often read too much data from the
device, as well as running out of data whenever the guest takes too long
to handle the interrupt.

According to the HDA specification, the guest is also not required to
use interrupts, but can also sync itself by polling the LPIB registers.

This patch will introduce high frequency (1000Hz) timers that interface
with the device and allow for much smoother emulation of the LPIB
registers. Since the timing is now provided by these timers, the need
to wait for buffer completion interrupts also ceases.

Signed-off-by: Martin Schrodt <address@hidden>
Signed-off-by: Gerd Hoffmann <address@hidden>
Message-id: address@hidden
Message-id: address@hidden

[ kraxel: keep old code for compatibility with older qemu versions,
    add property to switch code paths at runtime ]
[ kraxel: new code is disabled by default, use-timer=on enables it ]

Signed-off-by: Gerd Hoffmann <address@hidden>


  Commit: 0a373bb310c1533e24aa5e3edbf206507fb342ea
      
https://github.com/qemu/qemu/commit/0a373bb310c1533e24aa5e3edbf206507fb342ea
  Author: Gerd Hoffmann <address@hidden>
  Date:   2018-06-25 (Mon, 25 Jun 2018)

  Changed paths:
    M hw/audio/hda-codec.c
    M hw/audio/trace-events

  Log Message:
  -----------
  audio/hda: turn some dprintfs into trace points

Signed-off-by: Gerd Hoffmann <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Message-id: address@hidden


  Commit: 8ced0669237b2bbedac3e4ce6fcf7aaaafaae663
      
https://github.com/qemu/qemu/commit/8ced0669237b2bbedac3e4ce6fcf7aaaafaae663
  Author: Gerd Hoffmann <address@hidden>
  Date:   2018-06-25 (Mon, 25 Jun 2018)

  Changed paths:
    M hw/audio/hda-codec.c
    M hw/audio/trace-events

  Log Message:
  -----------
  audio/hda: tweak timer adjust logic

We have some jitter in the audio timer call frequency and buffer sizes.
So it is rather pointless trying to be very exact, effect is a constant
up+down adjustment.  So adjust only in case we are off too much.

Signed-off-by: Gerd Hoffmann <address@hidden>
Message-id: address@hidden


  Commit: 4501ee16c76e89e0a2b2beb95f3b93f965997391
      
https://github.com/qemu/qemu/commit/4501ee16c76e89e0a2b2beb95f3b93f965997391
  Author: Gerd Hoffmann <address@hidden>
  Date:   2018-06-25 (Mon, 25 Jun 2018)

  Changed paths:
    M hw/audio/hda-codec.c
    M hw/audio/trace-events

  Log Message:
  -----------
  audio/hda: detect output buffer overruns

If some event caused some larger playback hickup the fine-grained timer
adjust isn't able to recover.  Use a buffer overruns as indicator for
that.  Reset timer adjust logic in case we detected one.

Signed-off-by: Gerd Hoffmann <address@hidden>
Message-id: address@hidden


  Commit: bc753dc09ff33d99bc9004d7286c50de1d5bece6
      
https://github.com/qemu/qemu/commit/bc753dc09ff33d99bc9004d7286c50de1d5bece6
  Author: Gerd Hoffmann <address@hidden>
  Date:   2018-06-25 (Mon, 25 Jun 2018)

  Changed paths:
    M hw/audio/hda-codec.c
    M include/hw/compat.h

  Log Message:
  -----------
  audio/hda: enable new timer code by default.

Also add a compat property to disable it for old machine types,
needed for live migration compatibility.

Signed-off-by: Gerd Hoffmann <address@hidden>
Message-id: address@hidden


  Commit: 441b345313f1355fb2464f3b37a07a1ded85b61a
      
https://github.com/qemu/qemu/commit/441b345313f1355fb2464f3b37a07a1ded85b61a
  Author: Nia Alarie <address@hidden>
  Date:   2018-06-25 (Mon, 25 Jun 2018)

  Changed paths:
    M audio/audio.c

  Log Message:
  -----------
  audio: Convert use of atoi to qemu_strtoi

If qemu_strtoi indicates an error, return the default value.

Signed-off-by: Nia Alarie <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Gerd Hoffmann <address@hidden>


  Commit: 35e238c9330669882487f9929e0aa97900431853
      
https://github.com/qemu/qemu/commit/35e238c9330669882487f9929e0aa97900431853
  Author: Peter Maydell <address@hidden>
  Date:   2018-06-25 (Mon, 25 Jun 2018)

  Changed paths:
    M audio/audio.c
    M hw/audio/hda-codec.c
    M hw/audio/intel-hda.c
    M hw/audio/trace-events
    M include/hw/compat.h

  Log Message:
  -----------
  Merge remote-tracking branch 
'remotes/kraxel/tags/audio-20180625-pull-request' into staging

audio: new timer code for hda codec, fix audio_get_conf_int

# gpg: Signature made Mon 25 Jun 2018 14:12:41 BST
# gpg:                using RSA key 4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <address@hidden>"
# gpg:                 aka "Gerd Hoffmann <address@hidden>"
# gpg:                 aka "Gerd Hoffmann (private) <address@hidden>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/audio-20180625-pull-request:
  audio: Convert use of atoi to qemu_strtoi
  audio/hda: enable new timer code by default.
  audio/hda: detect output buffer overruns
  audio/hda: tweak timer adjust logic
  audio/hda: turn some dprintfs into trace points
  audio/hda: create millisecond timers that handle IO

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/518d23a976b7...35e238c93306
      **NOTE:** This service been marked for deprecation: 
https://developer.github.com/changes/2018-04-25-github-services-deprecation/

      Functionality will be removed from GitHub.com on January 31st, 2019.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]