On Thu, Aug 08, 2019 at 06:57:57AM +0200, Sebastien Marie wrote: > On Wed, Aug 07, 2019 at 11:12:57PM +0200, Mark Kettenis wrote: > > > > Can you try to figure out where exactly reading the BIOS from the card > > > > goes wrong? > > > > > > radeon_read_bios (called by r600_read_disabled_bios) returns something > > > good enough to pass some tests (bios signature check) and finally > > > returns true. the fail is later (in r600_init function, where it checks > > > for ATOM bios. it isn't so its abort init). > > > > > > so I tried something stupid: commenting the call to > > > radeon_read_disabled_bios, in order to force radeon_get_bios to try > > > another way to get bios. > > > > > > it called radeon_read_platform_bios() (the next method) and succeed. it > > > returned an ATOM bios (so r600_init is happy), radeondrm(4) finished its > > > initialization, and xenodm started correctly. > > > > > > [...] > > > > > > I still dunno if: > > > > > > - radeon_read_disabled_bios() should return false (because it > > > isn't the right way for this specific card), and so the use of > > > radeon_read_platform_bios() is the right thing to do. > > > > > > - radeon_read_disabled_bios() should return true and an ATOM bios, > > > and calling radeon_read_platform_bios() is a workaround. > > > > Could you try booting an i386 kernel. I think you can just boot the > > kernel without reinstalling. Obviously you'll crash as soon as it > > tries to run init(8) but at that point the bios reading should already > > have failed. > > Booting an i386 kernel to gain information wasn't as easy I expected: > amd64 bootloader doesn't boot i386 kernel (I don't recall if it is new > or not), and once I booted i386, debug-printf in init are on "old" > console, so once radeon succeed its initialisation I don't see them > anymore (and I have no keyboard in ddb). > > With stock kernel, booting i386 kernel result on successfully > init radeondrm. The method used for finding the bios is > radeon_read_platform_bios().
While searching where radeon_read_disabled_bios would fail on i386, I found I missinterpreted my debug message. i386 is able to read valid bios with radeon_read_disabled_bios(), and radeondrm is successfully initialized. my bad. I will try to compare i386 and amd64 in r600_read_disabled_bios(). -- Sebastien Marie