Messages in this thread | | | From | Andy Shevchenko <> | Date | Mon, 6 Mar 2017 14:06:45 +0200 | Subject | Re: [PATCH 5/5] drm/amdgpu: resize VRAM BAR for CPU access |
| |
On Mon, Mar 6, 2017 at 1:40 PM, Christian König <deathsimple@vodafone.de> wrote: > From: Christian König <christian.koenig@amd.com> > > Try to resize BAR0 to let CPU access all of VRAM.
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -616,6 +616,35 @@ void amdgpu_gtt_location(struct amdgpu_device *adev, struct amdgpu_mc *mc)
> +void amdgpu_resize_bar0(struct amdgpu_device *adev) > +{ > + u32 size = max(ilog2(adev->mc.real_vram_size - 1) + 1, 20) - 20;
Too complicated.
unsigned long = fls_long(real_vram_size | BIT(20));
And the result is not a size, right? It's a logarithm from size.
> + int r; > + > + r = pci_resize_resource(adev->pdev, 0, size);
> +
Redundant line.
> + if (r == -ENOTSUPP) { > + /* The hardware don't support the extension. */ > + return; > + > + } else if (r == -ENOSPC) { > + DRM_INFO("Not enoigh PCI address space for a large BAR."); > + } else if (r) { > + DRM_ERROR("Problem resizing BAR0 (%d).", r); > + } > + > + /* Reinit the doorbell mapping, it is most likely moved as well */ > + amdgpu_doorbell_fini(adev);
> + BUG_ON(amdgpu_doorbell_init(adev));
No way to recover?!
> +} > +
-- With Best Regards, Andy Shevchenko
| |