[PATCH v2 6/7] drm/panfrost: Add support for GPU heap allocations
Robin Murphy
robin.murphy at arm.com
Thu Jul 25 13:08:48 UTC 2019
Hi Rob,
On 25/07/2019 02:10, Rob Herring wrote:
[...]
> @@ -328,6 +427,18 @@ static irqreturn_t panfrost_mmu_irq_handler(int irq, void *data)
> access_type = (fault_status >> 8) & 0x3;
> source_id = (fault_status >> 16);
>
> + /* Page fault only */
> + if ((status & mask) == BIT(i)) {
> + WARN_ON(exception_type < 0xC1 || exception_type > 0xC4);
> +
> + ret = panfrost_mmu_map_fault_addr(pfdev, i, addr);
> + if (!ret) {
> + mmu_write(pfdev, MMU_INT_CLEAR, BIT(i));
> + status &= ~mask;
> + continue;
> + }
> + }
> +
> /* terminal fault, print info about the fault */
> dev_err(pfdev->dev,
> "Unhandled Page fault in AS%d at VA 0x%016llX\n"
> @@ -368,8 +479,9 @@ int panfrost_mmu_init(struct panfrost_device *pfdev)
> if (irq <= 0)
> return -ENODEV;
>
> - err = devm_request_irq(pfdev->dev, irq, panfrost_mmu_irq_handler,
> - IRQF_SHARED, "mmu", pfdev);
> + err = devm_request_threaded_irq(pfdev->dev, irq, NULL,
> + panfrost_mmu_irq_handler,
> + IRQF_ONESHOT, "mmu", pfdev);
The change of flags here breaks platforms using a single shared
interrupt line.
Otherwise, though, I've hacked around that and taken the branch for a
spin with mesa/master (and using a 64K page kernel config for giggles)
and nothing seems amiss to the extent of my "glmark2 runs all the way
through" testing, but I guess there still need to be additional changes
on the userspace end to actually exercise these new flags.
Robin.
>
> if (err) {
> dev_err(pfdev->dev, "failed to request mmu irq");
> diff --git a/include/uapi/drm/panfrost_drm.h b/include/uapi/drm/panfrost_drm.h
> index 17fb5d200f7a..9150dd75aad8 100644
> --- a/include/uapi/drm/panfrost_drm.h
> +++ b/include/uapi/drm/panfrost_drm.h
> @@ -83,6 +83,7 @@ struct drm_panfrost_wait_bo {
> };
>
> #define PANFROST_BO_NOEXEC 1
> +#define PANFROST_BO_HEAP 2
>
> /**
> * struct drm_panfrost_create_bo - ioctl argument for creating Panfrost BOs.
> --
> 2.20.1
>
More information about the dri-devel
mailing list