On Fri, Nov 30, 2018 at 7:36 AM Christian König <ckoenig.leichtzumerken@xxxxxxxxx> wrote: > > Previously we only added the ring buffer memory, now add the handling as > well. > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 33 +++++++++++++++++++++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h | 4 ++- > 2 files changed, 36 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > index 127ed7de841d..64ec92bd74fb 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > @@ -176,6 +176,36 @@ irqreturn_t amdgpu_irq_handler(int irq, void *arg) > return ret; > } > > +/** > + * amdgpu_irq_handle_ih1 - kick of processing for IH1 > + * > + * @work: work structure in struct amdgpu_irq > + * > + * Kick of processing IH ring 1. > + */ > +static void amdgpu_irq_handle_ih1(struct work_struct *work) > +{ > + struct amdgpu_device *adev = container_of(work, struct amdgpu_device, > + irq.ih1_work); > + > + amdgpu_ih_process(adev, &adev->irq.ih1, amdgpu_irq_callback); > +} > + > +/** > + * amdgpu_irq_handle_ih2 - kick of processing for IH2 > + * > + * @work: work structure in struct amdgpu_irq > + * > + * Kick of processing IH ring 2. > + */ > +static void amdgpu_irq_handle_ih2(struct work_struct *work) > +{ > + struct amdgpu_device *adev = container_of(work, struct amdgpu_device, > + irq.ih2_work); > + > + amdgpu_ih_process(adev, &adev->irq.ih2, amdgpu_irq_callback); > +} > + > /** > * amdgpu_msi_ok - check whether MSI functionality is enabled > * > @@ -240,6 +270,9 @@ int amdgpu_irq_init(struct amdgpu_device *adev) > amdgpu_hotplug_work_func); > } > > + INIT_WORK(&adev->irq.ih1_work, amdgpu_irq_handle_ih1); > + INIT_WORK(&adev->irq.ih2_work, amdgpu_irq_handle_ih2); > + > adev->irq.installed = true; > r = drm_irq_install(adev->ddev, adev->ddev->pdev->irq); > if (r) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h > index 7e06fa64321a..c27decfda494 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h > @@ -89,7 +89,9 @@ struct amdgpu_irq { > > /* interrupt rings */ > struct amdgpu_ih_ring ih, ih1, ih2; > - const struct amdgpu_ih_funcs *ih_funcs; > + const struct amdgpu_ih_funcs *ih_funcs; > + struct work_struct ih1_work, ih2_work; > + struct amdgpu_irq_src self_irq; > > /* gen irq stuff */ > struct irq_domain *domain; /* GPU irq controller domain */ > -- > 2.17.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx