drm/loongson: Error out if no VRAM detected

Huacai Chen chenhuacai at kernel.org
Wed Jan 24 10:06:38 UTC 2024


Hi, Jingfeng,

On Sat, Jan 20, 2024 at 12:19 AM Sui JIngfeng <sui.jingfeng at linux.dev> wrote:
>
> Hi,
>
> Thanks a lot for contribution.
>
> On 2024/1/19 18:40, Huacai Chen wrote:
> > If there is no VRAM (it is true if there is a discreted card),
>
>
> Why the dedicated VRAM is gone whenthere is a discrete card?
>
> As far as I know, this is only possible on Loongson 3C5000 + aspeed BMC
> server hardware platform where the dedicated VRAM chip of Loongson
> Graphics is NOT soldered on the motherboard. Probably for cost reason,
> but then, the platform BIOS(either UEFI or PMON) should turn off the
> Loongson integrated graphics.
>
> Because without dedicated VRAM, this driver can not work correctly. Or carve out
> part of system RAM as VRAM, and write the base address and size to the BAR 2 of
> the GPU PCI device.
> This is NOT true  for Loongson 3A5000/3A6000  desktop hardware, because I have do
> a lot test on various platform[1] before this driver was merged. It never happens
> on a sane hardware configuration. Please update the commit message and limit the
> scope.
I will update in V2.

>
> [1] https://github.com/loongson-gfx/loongson_boards
>
> > we get
> > such an error and Xorg fails to start:
>
>
> Yeah, If there is no dedicated VRAM, the driver can't allocate memory for framebuffer.
> But this is probably more about the hardware configuration issue, not a driver issue.
I agree, but it seems we need a workaround in the driver because there
are already many machines with ill firmware.

>
>
> > [  136.401131] loongson 0000:00:06.1: [drm] *ERROR* Requesting(0MiB) failed
> > [  137.444342] loongson 0000:00:06.1: [drm] *ERROR* Requesting(0MiB) failed
> > [  138.871166] loongson 0000:00:06.1: [drm] *ERROR* Requesting(0MiB) failed
> > [  140.444078] loongson 0000:00:06.1: [drm] *ERROR* Requesting(0MiB) failed
> > [  142.403993] loongson 0000:00:06.1: [drm] *ERROR* Requesting(0MiB) failed
> > [  143.970625] loongson 0000:00:06.1: [drm] *ERROR* Requesting(0MiB) failed
> > [  145.862013] loongson 0000:00:06.1: [drm] *ERROR* Requesting(0MiB) failed
> >
> > So in lsdc_get_dedicated_vram() we error out if no VRAM (or VRAM is less
> > than 1MB which is also an unusable case) detected.
>
>
> This is not expected, if you want this driver be there and run normally.
> You should guarantee that there have at least 64MiB dedicated VRAM.
I think this depends on the resolution, I choose 1MB here only because
the driver's debug info prints 0MB if VRAM is less than 1MB.

Huacai

>
> I'm OK if this patch is strongly requested, but this is a kind of error handling.
> Please give more details about the hardware in using and explain why there is no
> dedicated VRAM available for your hardware.
>
>
> > Signed-off-by: Huacai Chen <chenhuacai at loongson.cn>
> > ---
> >   drivers/gpu/drm/loongson/lsdc_drv.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/loongson/lsdc_drv.c b/drivers/gpu/drm/loongson/lsdc_drv.c
> > index 89ccc0c43169..d8ff60b46abe 100644
> > --- a/drivers/gpu/drm/loongson/lsdc_drv.c
> > +++ b/drivers/gpu/drm/loongson/lsdc_drv.c
> > @@ -184,7 +184,7 @@ static int lsdc_get_dedicated_vram(struct lsdc_device *ldev,
> >       drm_info(ddev, "Dedicated vram start: 0x%llx, size: %uMiB\n",
> >                (u64)base, (u32)(size >> 20));
> >
> > -     return 0;
> > +     return (size > SZ_1M) ? 0 : -ENODEV;
> >   }
> >
> >   static struct lsdc_device *


More information about the dri-devel mailing list