• David S. Miller's avatar
    atyfb: Fix bootup hangs on sparc64. · 09798eb9
    David S. Miller authored
    After commit 25edd694 ("sparc64: Get
    rid of indirect p1275 PROM call buffer.")  we can't pass virtual
    addresses >4GB to PROM calls.
    
    Largely this is never necessary in drivers because we have a copy of
    the entire PROM device tree in the kernel and a set of of_*()
    interfaces to access it.
    
    Unfortunately there were some lingering prom calls in the atyfb
    driver, in particular prom_finddevice() was being called with an
    on-stack address which could be anywhere.
    
    This code is actually probing for information we already have, the
    PROM choosen console output device is stored in of_console_device so
    all of this nasty code consolidates into a one-line comparison.
    
    Next we have some prom_getintdefault() calls which are trivially
    transformed into the equivalent of_getintprop_default().
    
    Special thanks to Fabio, who figured out exactly where the bootup
    was hanging.  That made this bug trivial to fix.
    Reported-by: default avatarFabio M. Di NItto <fabbione@fabbione.net>
    Reported-by: default avatarSam Ravnborg <sam@ravnborg.org>
    Reported-by: default avatarFrans van Berckel <fberckel@xs4all.nl>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarFabio M. Di NItto <fabbione@fabbione.net>
    09798eb9
atyfb_base.c 109 KB