31 May, 2019

1 commit

  • Based on 3 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version this program is distributed in the
    hope that it will be useful but without any warranty without even
    the implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version [author] [kishon] [vijay] [abraham]
    [i] [kishon]@[ti] [com] this program is distributed in the hope that
    it will be useful but without any warranty without even the implied
    warranty of merchantability or fitness for a particular purpose see
    the gnu general public license for more details

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version [author] [graeme] [gregory]
    [gg]@[slimlogic] [co] [uk] [author] [kishon] [vijay] [abraham] [i]
    [kishon]@[ti] [com] [based] [on] [twl6030]_[usb] [c] [author] [hema]
    [hk] [hemahk]@[ti] [com] this program is distributed in the hope
    that it will be useful but without any warranty without even the
    implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 1105 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Richard Fontana
    Reviewed-by: Kate Stewart
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070033.202006027@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

25 Oct, 2017

3 commits

  • drm_mode_create_lease

    Creates a lease for a list of drm mode objects, returning an
    fd for the new drm_master and a 64-bit identifier for the lessee

    drm_mode_list_lesees

    List the identifiers of the lessees for a master file

    drm_mode_get_lease

    List the leased objects for a master file

    drm_mode_revoke_lease

    Erase the set of objects managed by a lease.

    This should suffice to at least create and query leases.

    Changes for v2 as suggested by Daniel Vetter :

    * query ioctls only query the master associated with
    the provided file.

    * 'mask_lease' value has been removed

    * change ioctl has been removed.

    Changes for v3 suggested in part by Dave Airlie

    * Add revoke ioctl.

    Changes for v4 suggested by Dave Airlie

    * Expand on the comment about the magic use of &drm_lease_idr_object
    * Pad lease ioctl structures to align on 64-bit boundaries

    Changes for v5 suggested by Dave Airlie

    * Check for non-negative object_id in create_lease to avoid debug
    output from the kernel.

    Changes for v6 provided by Dave Airlie

    * For non-universal planes add primary/cursor planes to lease

    If we aren't exposing universal planes to this userspace client,
    and it requests a lease on a crtc, we should implicitly export the
    primary and cursor planes for the crtc.

    If the lessee doesn't request universal planes, it will just see
    the crtc, but if it does request them it will then see the plane
    objects as well.

    This also moves the object look ups earlier as a side effect, so
    we'd exit the ioctl quicker for non-existant objects.

    * Restrict leases to crtc/connector/planes.

    This only allows leasing for objects we wish to allow.

    Changes for v7 provided by Dave Airlie

    * Check pad args are 0
    * Check create flags and object count are valid.
    * Check return from fd allocation
    * Refactor lease idr setup and add some simple validation
    * Use idr_mutex uniformly (Keith)

    Signed-off-by: Keith Packard
    Signed-off-by: Dave Airlie

    Keith Packard
     
  • Attempts to modify un-leased objects are rejected with an error.
    Information returned about unleased objects is modified to make them
    appear unusable and/or disconnected.

    Changes for v2 as suggested by Daniel Vetter :

    * With the change in the __drm_mode_object_find API to pass the
    file_priv along, we can now centralize most of the lease-based
    access checks in that function.

    * A few places skip that API and require in-line checks.

    Changes for v3 provided by Dave Airlie

    * remove support for leasing encoders.
    * add support for leasing planes.

    Changes for v4

    * Only call drm_lease_held if DRIVER_MODESET.

    Signed-off-by: Keith Packard
    Signed-off-by: Dave Airlie

    Keith Packard
     
  • This provides new data structures to hold "lease" information about
    drm mode setting objects, and provides for creating new drm_masters
    which have access to a subset of the available drm resources.

    An 'owner' is a drm_master which is not leasing the objects from
    another drm_master, and hence 'owns' them.

    A 'lessee' is a drm_master which is leasing objects from some other
    drm_master. Each lessee holds the set of objects which it is leasing
    from the lessor.

    A 'lessor' is a drm_master which is leasing objects to another
    drm_master. This is the same as the owner in the current code.

    The set of objects any drm_master 'controls' is limited to the set of
    objects it leases (for lessees) or all objects (for owners).

    Objects not controlled by a drm_master cannot be modified through the
    various state manipulating ioctls, and any state reported back to user
    space will be edited to make them appear idle and/or unusable. For
    instance, connectors always report 'disconnected', while encoders
    report no possible crtcs or clones.

    The full list of lessees leasing objects from an owner (either
    directly, or indirectly through another lessee), can be searched from
    an idr in the drm_master of the owner.

    Changes for v2 as suggested by Daniel Vetter :

    * Sub-leasing has been disabled.

    * BUG_ON for lock checking replaced with lockdep_assert_held

    * 'change' ioctl has been removed.

    * Leased objects can always be controlled by the lessor; the
    'mask_lease' flag has been removed

    * Checking for leased status has been simplified, replacing
    the drm_lease_check function with drm_lease_held.

    Changes in v3, some suggested by Dave Airlie

    * Add revocation. This allows leases to be effectively revoked by
    removing all of the objects they have access to. The lease itself
    hangs around as it's hanging off a file.

    * Free the leases IDR when the master is destroyed

    * _drm_lease_held should look at lessees, not lessor

    * Allow non-master files to check for lease status

    Changes in v4, suggested by Dave Airlie

    * Formatting and whitespace changes

    Changes in v5 (airlied)

    * check DRIVER_MODESET before lease destroy call
    * check DRIVER_MODESET for lease revoke (Chris)
    * Use idr_mutex uniformly for all lease elements of struct drm_master. (Keith)

    Signed-off-by: Keith Packard

    Keith Packard