[Nouveau] [PATCH] drm/nouveau/bios: use size provided by _ROM method

Lekensteyn lekensteyn at gmail.com
Sun Oct 21 05:53:03 PDT 2012


On Sunday 21 October 2012 14:20:05 Marcin Slusarz wrote:
> BTW, _ROM method from https://lkml.org/lkml/2012/10/21/11 multiplies length
> by 8, so maybe we can read 32kB in one batch?
> 
> Marcin

That holds for that specific model, but it is not standard (in ACPI). Ben 
Skeggs has a laptop (Lenovo?) W530 that allows you to read the whole VBIOS in 
one call (that means chunk size > 4KiB), but there is another machine where 
this does not work (https://bugs.freedesktop.org/show_bug.cgi?id=55948). That 
machine allows you to read lengths of 4 KiB only (the buffer size is hard-coded 
to 4096, the upper bound of the returned size).

I'd say, stick to 4 KiB for the first read, then try to read the remaining 
VBIOS in one shot and finally fallback to reading in chunks of min(4096, bios-
>size - i). That should give a count of least 512 bytes. On my machine the 
length is 0x7d which translates to exactly 64 KB (not KiB).

After your patch in https://lkml.org/lkml/2012/10/20/150, "drm/nouveau/bios: 
attempt to fetch entire acpi rom image in one shot" could be improved to only 
read the unknown VBIOS:
 /* disobey the acpi spec - much faster on at least w530 ... */
- ret = nouveau_acpi_get_bios_chunk(bios->data, 0, bios->size);
+ ret = nouveau_acpi_get_bios_chunk(bios->data, 4096, bios->size - 4096);

Peter


More information about the Nouveau mailing list