14 Jul, 2011

3 commits


13 Jul, 2011

2 commits


12 Jul, 2011

2 commits

  • This reverts commit a51f7a66fb5e4af5ec4286baef940d06594b59d2.

    We still have a few Ironlake and Sandybridge machines which fail when
    RC6 is enabled. Better luck next release?

    Signed-off-by: Keith Packard

    Keith Packard
     
  • i915_driver_load adds a write-combining MTRR region for the GTT
    aperture to improve memory speeds through the aperture. If
    i915_driver_load fails after this, it would not have cleaned up the
    MTRR. This shouldn't cause any problems, except for consuming an MTRR
    register. Still, it's best to clean up completely in the failure path,
    which is easily done by calling mtrr_del if the mtrr was successfully
    allocated.

    i915_driver_load calls i915_gem_load which register
    i915_gem_inactive_shrink. If i915_driver_load fails after calling
    i915_gem_load, the shrinker will be left registered. When called, it
    will access freed memory and crash. The fix is to unregister the shrinker in the
    failure path using code duplicated from i915_driver_unload.

    i915_driver_load also has some incorrect gotos in the error cleanup
    paths:

    * After failing to initialize the GTT (which cannot happen, btw,
    intel_gtt_get returns a fixed (non-NULL) value), it tries to
    free the uninitialized WC IO mapping. Fixed this by changing the
    target from out_iomapfree to out_rmmap

    Signed-off-by: Keith Packard
    Tested-by: Lin Ming

    Keith Packard
     

09 Jul, 2011

9 commits

  • We'll try again with the new fixes. Prepare to see this reverted when
    we get regression reports...

    Signed-off-by: Keith Packard

    Keith Packard
     
  • Upon review, all path share the same dependencies for updating the
    registers and so we can benefit from sharing the code and checking
    early.

    This removes the unsightly intel_wait_for_vblank() from the lowlevel
    functions and upon further analysis the only path that will require a
    wait is if we are performing an instantaneous transition between two
    valid FBC configurations. The page-flip path itself will have disabled
    FBC registers and will have waited for at least one vblank before
    finishing the flip and attempting to re-enable FBC. This wait can be
    accomplished simply by delaying the enable until after we are sure that
    a vblank will have passed, which we are already doing to make sure that
    the display is settled before enabling FBC.

    Signed-off-by: Chris Wilson
    Reviewed-by: Keith Packard
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • In order to accommodate the requirements of re-enabling FBC after
    page-flipping, but to avoid doing so and incurring the cost of a wait
    for vblank in the middle of a page-flip sequence, we defer the actual
    enablement by 50ms. If any request to disable FBC arrive within that
    interval, the enablement is cancelled and we are saved from blocking on
    the wait.

    Signed-off-by: Chris Wilson
    Reviewed-by: Jesse Barnes
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • Page-flipping updates the scanout address, nukes the FBC compressed
    image and so forces an FBC update so that the displayed image remains
    consistent. However, page-flipping does not update the FBC registers
    themselves, which remain pointing to both the old address and the old
    CPU fence. Future updates to the new front-buffer (scanout) are then
    undetected!

    This first approach to demonstrate the issue and highlight the fix,
    simply disables FBC upon page-flip (a recompression will be forced on
    every flip so FBC becomes immaterial) and then re-enables FBC in the
    page-flip finish work function, so that the FBC registers are now
    pointing to the new framebuffer and front-buffer rendering works once
    more.

    Ideally, we want to only re-enable FBC after page-flipping is complete,
    as otherwise we are just wasting cycles and power (with needless
    recompression) whilst the page-flipping application is still running.

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=33487
    Signed-off-by: Chris Wilson
    Reviewed-by: Jesse Barnes
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • Persistent mode is intended for use with front-buffer rendering, such as
    X, where it is necessary to detect writes to the scanout either by the
    GPU or through the CPU's fence, and recompress the dirty regions on the
    fly. (By comparison to the back-buffer rendering, the scanout is always
    recompressed after a page-flip.)

    References: https://bugs.freedesktop.org/show_bug.cgi?id=33487
    References: https://bugs.freedesktop.org/show_bug.cgi?id=31742
    Signed-off-by: Ben Widawsky
    Signed-off-by: Chris Wilson
    Reviewed-by: Jesse Barnes
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • ...and this requirement is enforced by intel_update_fbc() so we can
    remove the later check from g4x_enable_fbc() and ironlake_enable_fbc().

    Signed-off-by: Chris Wilson
    Reviewed-by: Jesse Barnes
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • The cfb_pitch was only used for 8xx_enable_fbc(), every later routine
    was just overwriting the value with itself thanks to a copy'n'paste
    error.

    Signed-off-by: Chris Wilson
    Reviewed-by: Jesse Barnes
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • ...to ensure that any pending FBC enable tasklet is cancelled.

    Signed-off-by: Chris Wilson
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • As the enable/disable routines will be gain additional complexity in
    future patches, it is necessary that all callers do not bypass the
    generic interface by calling into the chipset routines directly. to do
    this we make the chipset routines static, so there is no choice.

    Signed-off-by: Chris Wilson
    Reviewed-by: Jesse Barnes
    Signed-off-by: Keith Packard

    Chris Wilson
     

08 Jul, 2011

20 commits


05 Jul, 2011

4 commits

  • Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6: (277 commits)
    [SCSI] isci: fix checkpatch errors
    isci: Device reset should request sas_phy_reset(phy, true)
    isci: pare back error messsages
    isci: cleanup silicon revision detection
    isci: merge scu_unsolicited_frame.h into unsolicited_frame_control.h
    isci: merge sata.[ch] into request.c
    isci: kill 'get/set' macros
    isci: retire scic_sds_ and scic_ prefixes
    isci: unify isci_host and scic_sds_controller
    isci: unify isci_remote_device and scic_sds_remote_device
    isci: unify isci_port and scic_sds_port
    isci: fix scic_sds_remote_device_terminate_requests
    isci: unify isci_phy and scic_sds_phy
    isci: unify isci_request and scic_sds_request
    isci: rename / clean up scic_sds_stp_request
    isci: preallocate requests
    isci: combine request flags
    isci: unify can_queue tracking on the tci_pool, uplevel tag assignment
    isci: Terminate dev requests on FIS err bit rx in NCQ
    isci: fix frame received locking
    ...

    Linus Torvalds
     
  • * 'at91/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-2.6-arm-soc:
    AT91: Change nand buswidth logic to match hardware default configuration
    at91: Use "pclk" as con_id on at91cap9 and at91rm9200
    at91: fix udc, ehci and mmc clock device name for cap9/9g45/9rl
    atmel_serial: fix internal port num
    at91: fix at91_set_serial_console: use platform device id

    Linus Torvalds
     
  • …l/git/lethal/fbdev-3.x

    * 'fbdev-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-3.x:
    vesafb: fix memory leak
    fbdev: amba: Link fb device to its parent
    fsl-diu-fb: remove check for pixel clock ranges
    udlfb: Correct sub-optimal resolution selection.
    hecubafb: add module_put on error path in hecubafb_probe()
    sm501fb: fix section mismatch warning
    gx1fb: Fix section mismatch warnings
    fbdev: sh_mobile_meram: Correct pointer check for YCbCr chroma plane

    Linus Torvalds