[Bug 34618] Slow text scrolling on tty after suspend-cycle

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

 



https://bugs.freedesktop.org/show_bug.cgi?id=34618

peterle@xxxxxxxxxxxxxxxxx changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED

--- Comment #29 from peterle@xxxxxxxxxxxxxxxxx 2011-04-11 00:17:02 PDT ---
commit 84ac7cdbdd0f04df6b96153f7a79127fd6e45467
Author: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>
Date:   Tue Mar 29 15:38:12 2011 -0700

    x86, mtrr, pat: Fix one cpu getting out of sync during resume

    On laptops with core i5/i7, there were reports that after resume
    graphics workloads were performing poorly on a specific AP, while
    the other cpu's were ok. This was observed on a 32bit kernel
    specifically.

    Debug showed that the PAT init was not happening on that AP
    during resume and hence it contributing to the poor workload
    performance on that cpu.

    On this system, resume flow looked like this:

    1. BP starts the resume sequence and we reinit BP's MTRR's/PAT
       early on using mtrr_bp_restore()

    2. Resume sequence brings all AP's online

    3. Resume sequence now kicks off the MTRR reinit on all the AP's.

    4. For some reason, between point 2 and 3, we moved from BP
       to one of the AP's. My guess is that printk() during resume
       sequence is contributing to this. We don't see similar
       behavior with the 64bit kernel but there is no guarantee that
       at this point the remaining resume sequence (after AP's bringup)
       has to happen on BP.

    5. set_mtrr() was assuming that we are still on BP and skipped the
       MTRR/PAT init on that cpu (because of 1 above)

    6. But we were on an AP and this led to not reprogramming PAT
       on this cpu leading to bad performance.

    Fix this by doing unconditional mtrr_if->set_all() in set_mtrr()
    during MTRR/PAT init. This might be unnecessary if we are still
    running on BP. But it is of no harm and will guarantee that after
    resume, all the cpu's will be in sync with respect to the
    MTRR/PAT registers.

    Signed-off-by: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>
    LKML-Reference: <1301438292-28370-1-git-send-email-eric@xxxxxxxxxx>
    Signed-off-by: Eric Anholt <eric@xxxxxxxxxx>
    Tested-by: Keith Packard <keithp@xxxxxxxxxx>
    Cc: stable@xxxxxxxxxx    [v2.6.32+]
    Signed-off-by: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx>


-------------------------------------------------------------------------------
I will write an email to everyone, that this bug occurs also on Corei5/7 in
64bit Long-Mode.

Thanks for your help.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux