Skip to content
  • Ben Skeggs's avatar
    drm/nouveau/core: pull in most of the new core infrastructure · 9274f4a9
    Ben Skeggs authored
    
    
    This commit provides most of the infrastructure to support a major overhaul
    of Nouveau's internals coming in the following commits.  This work aims to
    take all the things we've learned over the last several years, and turn that
    into a cleaner architecture that's more maintainable going forward.
    
    RAMHT and MM bits of the new core have been left out for the moment, and
    will be pulled in as I go through the process of porting the code to
    become either subdev or engine modules.
    
    There are several main goals I wanted to achieve through this work:
    
    -- Reduce complexity
    
    The goal here was to make each component of the driver as independent as
    possible, which will ease maintainability and readability, and provide a
    good base for resetting locked up GPU units in the future.
    
    -- Better tracking of GPU units that are required at any given time
    
    This is for future PM work, we'll be able to tell exactly what parts of the
    GPU we need powered at any given point (etc).
    
    -- Expose all available NVIDIA GPUs to the client
    
    In order to support things such as multi-GPU channels, we want to be able
    to expose all the NVIDIA GPUs to the client over a single file descriptor
    so it can send a single push buffer to multiple GPUs.
    
    -- Untangle the core hardware support code from the DRM implementation
    
    This happened initially as an unexpected side-effect of developing the
    initial core infrastructure in userspace, but it turned into a goal of
    the whole project.  Initial benefits will be the availablility of a
    number of userspace tools and tests using the same code as the driver
    itself, but will also be important as I look into some virtualisation
    ideas.
    
    v2: Ben Skeggs <bskeggs@redhat.com>
    - fix duplicate assignments noticed by clang
    - implement some forgotten yelling in error path
    - ensure 64-bit engine mask is used everywhere
    
    v3: Marcin Slusarz <marcin.slusarz@gmail.com>
    - sparse fixes
    - inline nv_printk into nv_assert to prevent recursive inlining issues
    
    v4: Ben Skeggs <bskeggs@redhat.com>
    - fixed minor memory leak on gpuobj destruction
    
    Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
    9274f4a9