25 Apr, 2014

1 commit


06 Feb, 2014

1 commit


10 Jan, 2014

1 commit

  • Add a VRAM carveout that is used for systems which do not have an IOMMU.

    The VRAM carveout uses CMA. The arch code must setup a CMA pool for the
    device (preferrably in highmem.. a 256m-512m VRAM pool in lowmem is not
    cool). The user can configure the VRAM pool size using msm.vram module
    param.

    Technically, the abstraction of IOMMU behind msm_mmu is not strictly
    needed, but it simplifies the GEM code a bit, and will be useful later
    when I add support for a2xx devices with GPUMMU, so I decided to keep
    this part.

    It appears to be possible to configure the GPU to restrict access to
    addresses within the VRAM pool, but this is not done yet. So for now
    the GPU will refuse to load if there is no sort of mmu. Once address
    based limits are supported and tested to confirm that we aren't giving
    the GPU access to arbitrary memory, this restriction can be lifted

    Signed-off-by: Rob Clark

    Rob Clark
     

02 Nov, 2013

3 commits

  • Subsequent threads returning EBUSY from vm_insert_pfn() was not
    handled correctly. As a result concurrent access from new threads
    to mmapped data caused SIGBUS.

    See e79e0fe3

    Signed-off-by: Rob Clark
    Acked-by: David Brown

    Rob Clark
     
  • Re-arrange things a bit so that we can get work requested after a bo
    fence passes, like pageflip, done before retiring bo's. Without any
    sort of bo cache in userspace, some games can trigger hundred's of
    transient bo's, which can cause retire to take a long time (5-10ms).
    Obviously we want a bo cache.. but this cleanup will make things a
    bit easier for atomic as well and makes things a bit cleaner.

    Signed-off-by: Rob Clark
    Acked-by: David Brown

    Rob Clark
     
  • Signed-off-by: Rob Clark
    Acked-by: David Brown

    Rob Clark
     

28 Sep, 2013

1 commit


16 Sep, 2013

1 commit


12 Sep, 2013

2 commits

  • When we CPU_PREP a bo with NOSYNC flag (for example, to implement
    PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE), an -EBUSY return indicates to
    userspace that the bo is still busy. Previously it was incorrectly
    returning 0 in this case.

    And while we're in there throw in an bit of extra sanity checking in
    case userspace tries to wait for a bogus fence.

    Signed-off-by: Rob Clark

    Rob Clark
     
  • In case of error, the function drm_prime_pages_to_sg() returns ERR_PTR()
    and never returns NULL. The NULL test in the return value check should
    be replaced with IS_ERR().

    Signed-off-by: Wei Yongjun

    Wei Yongjun
     

11 Sep, 2013

1 commit

  • The userspace API already had everything needed to handle read vs write
    synchronization. This patch actually bothers to hook it up properly, so
    that we don't need to (for example) stall on userspace read access to a
    buffer that gpu is also still reading.

    Signed-off-by: Rob Clark

    Rob Clark
     

25 Aug, 2013

2 commits

  • Add initial support for a3xx 3d core.

    So far, with hardware that I've seen to date, we can have:
    + zero, one, or two z180 2d cores
    + a3xx or a2xx 3d core, which share a common CP (the firmware
    for the CP seems to implement some different PM4 packet types
    but the basics of cmdstream submission are the same)

    Which means that the eventual complete "class" hierarchy, once
    support for all past and present hw is in place, becomes:
    + msm_gpu
    + adreno_gpu
    + a3xx_gpu
    + a2xx_gpu
    + z180_gpu

    This commit splits out the parts that will eventually be common
    between a2xx/a3xx into adreno_gpu, and the parts that are even
    common to z180 into msm_gpu.

    Note that there is no cmdstream validation required. All memory access
    from the GPU is via IOMMU/MMU. So as long as you don't map silly things
    to the GPU, there isn't much damage that the GPU can do.

    Signed-off-by: Rob Clark

    Rob Clark
     
  • The snapdragon chips have multiple different display controllers,
    depending on which chip variant/version. (As far as I can tell, current
    devices have either MDP3 or MDP4, and upcoming devices have MDSS.) And
    then external to the display controller are HDMI, DSI, etc. blocks which
    may be shared across devices which have different display controller
    blocks.

    To more easily add support for different display controller blocks, the
    display controller specific bits are split out into a "kms" module,
    which provides the kms plane/crtc/encoder objects.

    The external HDMI, DSI, etc. blocks are part encoder, and part connector
    currently. But I think I will pull in the drm_bridge patches from
    chromeos tree, and split them into a bridge+connector, with the
    registers that need to be set in modeset handled by the bridge. This
    would remove the 'msm_connector' base class. But some things need to be
    double checked to make sure I could get the correct ON/OFF sequencing..

    This patch adds support for mdp4 crtc (including hw cursor), dtv encoder
    (part of MDP4 block), and hdmi.

    Signed-off-by: Rob Clark

    Rob Clark