tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: i386 vs radeondrmkms problem - isa attachments suck



On 28 February 2015 at 09:44, matthew green <mrg%eterna.com.au@localhost> wrote:
>
>
> hi folks.
>
> i've been trying to find a least-ugly solution to the radeondrmkms
> on i386 problem.  quick summary of what's wrong:
>
>         radeondrmkms doesn't complete attachments (and most
>         importantly create a wsdisplay) until mountroot completes.
>         this means it happens quite late in boot.  in i386 GENERIC,
>         vga@isa and pcdisplay@isa are still enabled and they will
>         attach to the legacy vga device, and present a wsdisplay0
>         to the system.  later, radeon0 attaches, and we get a
>         wsdisplay1 that has taken over the console output.
>
> this leaves us with a non-working console output, and the inability
> to run X11 even if accessed remotely.
>
> my first attempt (that is currently commited), made the radeondrmkms
> driver attempt to map the isa vga registers to reserve them from the
> vga@isa, and while that worked on my serial console machine, it does
> not work on a normal system due to x86 consinit() attaching the
> basic vga console driver (so we get early console output.)  in this
> case, it has already mapped these registers (ie, radeon is unable
> to map them) and the later real attachment knows not to attempt it
> again.  so that method doesn't work.
>
> we could have the vga driver detach itself at the right point, but
> that leaves the console detached for quite a while, during the time
> that drm is getting setup (ie, we'd miss several of its early
> messages.)  that seems less than desireable.
>
> it was suggested having a fake driver to attach instead of vga and
> thus avoiding the second phase of vga attachment, however this does
> not work due to the way isa indirect attachment works.  the first
> match routine that returns non-zero is attached, and the order of
> routines called seems to be something config(1) generates.  so having
> a radeon@isa that returns a history priority does nothing if the
> ordering is bad.  this means that the current expectation of eg,
> the vga@isa vs pcdisplay@isa drivers (where vga returns a higher
> match) is not used, it just happens that the cfdata[] array has the
> vga@isa entry before pcdisplay@isa.

Is the ignoring of attach priority a general characteristic of
indirect buses, and might it make sense for config to be able to
explicitly prioritise the order the cfdata[] entries? I know uebayasi@
has been rototilling config and wondered if he could be interested...
:)

> this is not a problem for the old drm code, as it does not create
> wsdisplay itself, but relies on the vga driver to do so.
>
> (see isa.c:isasearch() config_match*() call for where the first match
> to return non-zero is used.)
>
> any one have any other ideas?  at this point to make DRMKMS work for
> i386 on -7, i think we may have to createa a LEGACY kernel that has
> the vga|pcdisplay@isa drivers (and probably no drm at all?), and turn
> these devices off in GENERIC itself, but perhaps someone has a less
> ugly idea.


Home | Main Index | Thread Index | Old Index