On 09/04/2019 21:54, Rob Herring wrote: > This adds the initial driver for panfrost which supports Arm Mali > Midgard and Bifrost family of GPUs. Currently, only the T860 and > T760 Midgard GPUs have been tested. > > v2: > - Add GPU reset on job hangs (Tomeu) > - Add RuntimePM and devfreq support (Tomeu) > - Fix T760 support (Tomeu) > - Add a TODO file (Rob, Tomeu) > - Support multiple in fences (Tomeu) > - Drop support for shared fences (Tomeu) > - Fill in MMU de-init (Rob) > - Move register definitions back to single header (Rob) > - Clean-up hardcoded job submit todos (Rob) > - Implement feature setup based on features/issues (Rob) > - Add remaining Midgard DT compatible strings (Rob) > > v3: > - Add support for reset lines (Neil) > - Add a MAINTAINERS entry (Rob) > - Call dma_set_mask_and_coherent (Rob) > - Do MMU invalidate on map and unmap. Restructure to do a single > operation per map/unmap call. (Rob) > - Add a missing explicit padding to struct drm_panfrost_create_bo (Rob) > - Fix 0-day error: "panfrost_devfreq.c:151:9-16: ERROR: PTR_ERR applied after > initialization to constant on line 150" > - Drop HW_FEATURE_AARCH64_MMU conditional (Rob) > - s/DRM_PANFROST_PARAM_GPU_ID/DRM_PANFROST_PARAM_GPU_PROD_ID/ (Rob) > - Check drm_gem_shmem_prime_import_sg_table() error code (Rob) > - Re-order power on sequence (Rob) > - Move panfrost_acquire_object_fences() before scheduling job (Rob) > - Add NULL checks on array pointers in job clean-up (Rob) > - Rework devfreq (Tomeu) > - Fix devfreq init with no regulator (Rob) > - Various WS and comments clean-up (Rob) > > Cc: Maarten Lankhorst <maarten.lankho...@linux.intel.com> > Cc: Maxime Ripard <maxime.rip...@bootlin.com> > Cc: Sean Paul <s...@poorly.run> > Cc: David Airlie <airl...@linux.ie> > Cc: Daniel Vetter <dan...@ffwll.ch> > Cc: Lyude Paul <ly...@redhat.com> > Reviewed-by: Alyssa Rosenzweig <aly...@rosenzweig.io> > Reviewed-by: Eric Anholt <e...@anholt.net> > Signed-off-by: Marty E. Plummer <hanet...@startmail.com> > Signed-off-by: Tomeu Vizoso <tomeu.viz...@collabora.com> > Signed-off-by: Neil Armstrong <narmstr...@baylibre.com> > Signed-off-by: Rob Herring <r...@kernel.org> > ---
This looks like it has addressed my comments, so: Reviewed-by: Steven Price <steven.pr...@arm.com> There's a couple of nits below if you do respin, but these shouldn't block merging the driver. [...] > +static int panfrost_ioctl_submit(struct drm_device *dev, void *data, > + struct drm_file *file) > +{ > + struct panfrost_device *pfdev = dev->dev_private; > + struct drm_panfrost_submit *args = data; > + struct drm_syncobj *sync_out; > + struct panfrost_job *job; > + int ret = 0; > + > + job = kcalloc(1, sizeof(*job), GFP_KERNEL); Why not simply kzalloc()? I think you're going to want a new ioctl if/when adding support for multiple job submissions in one ioctl. [...] > +static int panfrost_probe(struct platform_device *pdev) > +{ > + struct panfrost_device *pfdev; > + struct drm_device *ddev; > + int err; > + > + pfdev = devm_kzalloc(&pdev->dev, sizeof(*pfdev), GFP_KERNEL); > + if (!pfdev) > + return -ENOMEM; > + > + pfdev->pdev = pdev; > + pfdev->dev = &pdev->dev; > + > + platform_set_drvdata(pdev, pfdev); > + dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(40)); The hardware reports the correct mask, from kbase: > err = dma_set_mask(kbdev->dev, > DMA_BIT_MASK(kbdev->gpu_props.mmu.pa_bits)); > if (err) > goto dma_set_mask_failed; > > err = dma_set_coherent_mask(kbdev->dev, > DMA_BIT_MASK(kbdev->gpu_props.mmu.pa_bits)); > if (err) > goto dma_set_mask_failed; Although I'm not sure if it has ever varied. Thanks, Steve _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel