lkml.org 
[lkml]   [2014]   [Oct]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v4 03/23] drm/radeon: Report doorbell configuration to amdkfd
    From
    On Wed, Sep 24, 2014 at 4:45 PM, Oded Gabbay <oded.gabbay@amd.com> wrote:
    > radeon and amdkfd share the doorbell aperture.
    > radeon sets it up, takes the doorbells required for its own rings
    > and reports the setup to amdkfd.
    > radeon reserved doorbells are at the start of the doorbell aperture.
    >
    > Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>

    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

    > ---
    > drivers/gpu/drm/radeon/radeon.h | 4 ++++
    > drivers/gpu/drm/radeon/radeon_device.c | 31 +++++++++++++++++++++++++++++++
    > 2 files changed, 35 insertions(+)
    >
    > diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
    > index bb75e57..67d249a 100644
    > --- a/drivers/gpu/drm/radeon/radeon.h
    > +++ b/drivers/gpu/drm/radeon/radeon.h
    > @@ -697,6 +697,10 @@ struct radeon_doorbell {
    >
    > int radeon_doorbell_get(struct radeon_device *rdev, u32 *page);
    > void radeon_doorbell_free(struct radeon_device *rdev, u32 doorbell);
    > +void radeon_doorbell_get_kfd_info(struct radeon_device *rdev,
    > + phys_addr_t *aperture_base,
    > + size_t *aperture_size,
    > + size_t *start_offset);
    >
    > /*
    > * IRQS.
    > diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
    > index e84a76e..da3035f 100644
    > --- a/drivers/gpu/drm/radeon/radeon_device.c
    > +++ b/drivers/gpu/drm/radeon/radeon_device.c
    > @@ -373,6 +373,37 @@ void radeon_doorbell_free(struct radeon_device *rdev, u32 doorbell)
    > __clear_bit(doorbell, rdev->doorbell.used);
    > }
    >
    > +/**
    > + * radeon_doorbell_get_kfd_info - Report doorbell configuration required to
    > + * setup KFD
    > + *
    > + * @rdev: radeon_device pointer
    > + * @aperture_base: output returning doorbell aperture base physical address
    > + * @aperture_size: output returning doorbell aperture size in bytes
    > + * @start_offset: output returning # of doorbell bytes reserved for radeon.
    > + *
    > + * Radeon and the KFD share the doorbell aperture. Radeon sets it up,
    > + * takes doorbells required for its own rings and reports the setup to KFD.
    > + * Radeon reserved doorbells are at the start of the doorbell aperture.
    > + */
    > +void radeon_doorbell_get_kfd_info(struct radeon_device *rdev,
    > + phys_addr_t *aperture_base,
    > + size_t *aperture_size,
    > + size_t *start_offset)
    > +{
    > + /* The first num_doorbells are used by radeon.
    > + * KFD takes whatever's left in the aperture. */
    > + if (rdev->doorbell.size > rdev->doorbell.num_doorbells * sizeof(u32)) {
    > + *aperture_base = rdev->doorbell.base;
    > + *aperture_size = rdev->doorbell.size;
    > + *start_offset = rdev->doorbell.num_doorbells * sizeof(u32);
    > + } else {
    > + *aperture_base = 0;
    > + *aperture_size = 0;
    > + *start_offset = 0;
    > + }
    > +}
    > +
    > /*
    > * radeon_wb_*()
    > * Writeback is the the method by which the the GPU updates special pages
    > --
    > 1.9.1
    >
    > _______________________________________________
    > dri-devel mailing list
    > dri-devel@lists.freedesktop.org
    > http://lists.freedesktop.org/mailman/listinfo/dri-devel


    \
     
     \ /
      Last update: 2014-10-14 19:21    [W:2.345 / U:0.596 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site