atyfb: Fix bootup hangs on sparc64.
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: NFabio M. Di NItto <fabbione@fabbione.net> Reported-by: NSam Ravnborg <sam@ravnborg.org> Reported-by: NFrans van Berckel <fberckel@xs4all.nl> Signed-off-by: NDavid S. Miller <davem@davemloft.net> Signed-off-by: NFabio M. Di NItto <fabbione@fabbione.net>
Showing
想要评论请 注册 或 登录