Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp5857750yba; Thu, 11 Apr 2019 07:13:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqxJIa6eLiCvuhOUnCHpKF4KowX6PPTS6GgGeLXG1/OU2BT5V44OmKTcbl9DXz2MSe9eWqVF X-Received: by 2002:a65:6289:: with SMTP id f9mr47772274pgv.380.1554992031582; Thu, 11 Apr 2019 07:13:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554992031; cv=none; d=google.com; s=arc-20160816; b=bdMHtuHP/1jZ8gCIPqnVgUj/fP/Lw1FoDq3qR3JeGGehKiUI3XHrLidDtVb/5UN9mS 9a/wnLI5UQFQjWRtcFwzkinZcWWjpy46vs1XCFFSMzyJwaZXkZM0oT9VQ+ba4FxEA2eb tBWzmam+6mpEoSD6E+UE5QtzL7bDWSnXWfVNfuyfCcIeYHe8aYyvCGGh/15HFIL4nrSi WZ6iKzNEIgeKH6LFZF5fCocL3/WwPfX1IjLsAGzvYEULP3UrKFjsVP+jpQBWc0YoDIdM 26rsCbx2KiTARTjcFh52r87GdUSDtdxNEsrqH80x9Wr3YppPKhzdOltalNc1ju3lbbFb ZaDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=0lVE+atCe3jZJWK1tCBnKztf7W/4BgZrz8BZKPJFj1Y=; b=ImsDkkhHlDaYQwp0g6/IBIlfuRb5UMjahAjGmzS/NBz3wRbRgRtV5puU3Yt4s5dDKt zH8ENZTxklMATwkHlOVclITSpgkNOmMs0giijmLW8j0joO5hF3/c4MtHk3QeTR+zNXnA +iSPEYY6tLI6G01TONhdIy0omyRCZJ/aw5eguu+V6JPcENdJgRvvvLHBFJggej6pwm/1 WtCF1hE7FDwxPF24T+XoivSsunAn9TpkFzaI61taDB7cIMr9+TgqGDVlhE5buvw99QU1 UZyoYlPco3TDVggR65Z86UKGc9aOHrtDWHw6uHbCZVWupY6NwrDUzz05vcXw+u5UJYa3 1+5A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n16si35071565pgb.274.2019.04.11.07.13.35; Thu, 11 Apr 2019 07:13:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726691AbfDKOMY (ORCPT + 99 others); Thu, 11 Apr 2019 10:12:24 -0400 Received: from foss.arm.com ([217.140.101.70]:43860 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726073AbfDKOMW (ORCPT ); Thu, 11 Apr 2019 10:12:22 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 762D880D; Thu, 11 Apr 2019 07:12:22 -0700 (PDT) Received: from [10.1.196.69] (e112269-lin.cambridge.arm.com [10.1.196.69]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 843A13F68F; Thu, 11 Apr 2019 07:12:20 -0700 (PDT) Subject: Re: [PATCH v3 3/3] drm/panfrost: Add initial panfrost driver To: Rob Herring , dri-devel@lists.freedesktop.org Cc: Tomeu Vizoso , Neil Armstrong , Maxime Ripard , linux-kernel@vger.kernel.org, David Airlie , "Marty E . Plummer" , Sean Paul , Alyssa Rosenzweig References: <20190409205427.6943-1-robh@kernel.org> <20190409205427.6943-4-robh@kernel.org> From: Steven Price Message-ID: <91804969-e3cc-9d39-3ca7-0b59bafd442b@arm.com> Date: Thu, 11 Apr 2019 15:12:18 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190409205427.6943-4-robh@kernel.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > Cc: Maxime Ripard > Cc: Sean Paul > Cc: David Airlie > Cc: Daniel Vetter > Cc: Lyude Paul > Reviewed-by: Alyssa Rosenzweig > Reviewed-by: Eric Anholt > Signed-off-by: Marty E. Plummer > Signed-off-by: Tomeu Vizoso > Signed-off-by: Neil Armstrong > Signed-off-by: Rob Herring > --- This looks like it has addressed my comments, so: Reviewed-by: Steven Price 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