Without this patch, my server cannot start the DM. It is a Loongson
3C5000L server, with both a Loongson display controller and an ASPEED
graphics card.
$ lspci |grep VGA
0000:00:06.1 VGA Compatible Controller: Loongson Technology LLC DC
(Display Controller) (rev 01)
0000:03:00.0 VGA-compatible controller: ASPEED Technology, Inc.
ASPEED Graphics Family (revision 41)
When not working, there is the following information in dmesg:
loongson 0000:00:06.1: [drm] Private vram start: 0xe00472a6000, size:
0MiB
Loongson 0000:00:06.1: [drm] *Error* Request (0MiB) failed
Anyway, this patch works fine with my server now, thank you.
Tested-by: Xiaotian Wu <wuxiaotian@xxxxxxxxxxx>
在 2024/1/20 00:18, Sui JIngfeng 写道:
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.
[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.
[ 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'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@xxxxxxxxxxx>
---
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 *