From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: [PATCH] lib/igt_aux: move audio RPM code to igt_setup_runtime_pm() Date: Tue, 21 Oct 2014 15:01:49 -0200 Message-ID: <1413910909-2080-1-git-send-email-przanoni@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-qa0-f51.google.com (mail-qa0-f51.google.com [209.85.216.51]) by gabe.freedesktop.org (Postfix) with ESMTP id D9A648981D for ; Tue, 21 Oct 2014 10:02:00 -0700 (PDT) Received: by mail-qa0-f51.google.com with SMTP id k15so1125513qaq.24 for ; Tue, 21 Oct 2014 10:02:00 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org From: Paulo Zanoni If we don't enable audio runtime PM, the audio driver won't release its reference, the refcount won't ever become zero, so we will never actually runtime suspend. So move this code from pm_rpm.c to igt_aux.c, so kms_flip - and any other IGT test case using RPM - can benefit from it. Previously, if you ran pm_rpm before running the other tests - or if you just didn't have snd_hda_intel loaded - you wouldn't notice this bug. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78893 Cc: Daniel Vetter Signed-off-by: Paulo Zanoni --- lib/igt_aux.c | 14 ++++++++++++++ tests/pm_rpm.c | 12 ------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/igt_aux.c b/lib/igt_aux.c index 01654f0..0e1eeea 100644 --- a/lib/igt_aux.c +++ b/lib/igt_aux.c @@ -431,6 +431,20 @@ bool igt_setup_runtime_pm(void) if (pm_status_fd >= 0) return true; + /* The Audio driver can get runtime PM references, so we need to make + * sure its runtime PM is enabled, so it can release the refs and + * actually enable us to runtime suspend. */ + fd = open("/sys/module/snd_hda_intel/parameters/power_save", O_WRONLY); + if (fd >= 0) { + igt_assert(write(fd, "1\n", 2) == 2); + close(fd); + } + fd = open("/sys/bus/pci/devices/0000:00:03.0/power/control", O_WRONLY); + if (fd >= 0) { + igt_assert(write(fd, "auto\n", 5) == 5); + close(fd); + } + /* Our implementation uses autosuspend. Try to set it to 0ms so the test * suite goes faster and we have a higher probability of triggering race * conditions. */ diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c index 4ee3ca7..25c9900 100644 --- a/tests/pm_rpm.c +++ b/tests/pm_rpm.c @@ -697,18 +697,6 @@ static void setup_non_graphics_runtime_pm(void) close(fd); } free(file_name); - - /* Audio runtime PM policies. */ - fd = open("/sys/module/snd_hda_intel/parameters/power_save", O_WRONLY); - if (fd >= 0) { - igt_assert(write(fd, "1\n", 2) == 2); - close(fd); - } - fd = open("/sys/bus/pci/devices/0000:00:03.0/power/control", O_WRONLY); - if (fd >= 0) { - igt_assert(write(fd, "auto\n", 5) == 5); - close(fd); - } } static void setup_environment(void) -- 1.9.1