On Wed, Oct 14, 2015 at 11:20 AM, Laurent Vivier laurent@vivier.eu wrote:
Le 14/10/2015 16:52, Ilia Mirkin a écrit :
On Wed, Oct 14, 2015 at 10:20 AM, Olaf Hering olaf@aepfle.de wrote:
On Sun, Oct 11, Laurent Vivier wrote:
On PowerMac G5 (and I think on all OpenFirmware platforms), nvbios_pcirTp() returns NULL. But in fact the OpenFirmware has given us the size we can store in image->size.
CC: imirkin@alum.mit.edu Signed-off-by: Laurent Vivier laurent@vivier.eu
Tested-by: Olaf Hering olaf@aepfle.de
Broken since a while already... https://lists.ozlabs.org/pipermail/linuxppc-dev/2015-March/126737.html
FTR, looks like my version is upstream now: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2...
I agree that my of_size thing was a bit of a hack, if you want to redo it by removing of_size/of_read from shadowof.c and copying it in at init time (also a hack, IMHO), I certainly wouldn't object. As before, it's Ben's call though.
It's nice to have a fix upstream.
I'll send a patch to remove the of_size.
Rereading your patch and mine, I think we don't need no_pcir, we can do instead:
if (!nvbios_rd16(bios, base + 0x18)) { /* no PCIr */ image.base = 0; image.type = 0; image.size = bios->size; image.last = 1; } else { if (!shadow_fetch(bios, mthd, offset + 0x1000)) {
... What is you opinion ?
What if we hit on a real VBIOS without a PCIR? Like, say, some NV4, or who-knows-what. Seems less safe. My way is very explicit and allows OF some leeway that "regular" methods don't get.
-ilia