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

Reply via email to