All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hollis Blanchard <hollis@penguinppc.org>
To: Robert Millan <rmh@aybabtu.com>, Stefan Reinauer <stepan@coresystems.de>
Cc: The development of GRUB 2 <grub-devel@gnu.org>
Subject: Re: PowerMac hack breaks Efika
Date: Wed, 04 Jul 2007 11:10:15 -0500	[thread overview]
Message-ID: <1183565415.7721.31.camel@diesel> (raw)
In-Reply-To: <20070702124849.GA15786@coresystems.de>

On Mon, 2007-07-02 at 14:48 +0200, Stefan Reinauer wrote:
> * Robert Millan <rmh@aybabtu.com> [070702 10:17]:
> > The following lines in grub_ofconsole_init():
> > 
> >   /* The latest PowerMacs don't actually initialize the screen for us, so we
> >    * use this trick to re-open the output device.  */
> >   grub_ieee1275_interpret ("output-device output", 0);
> > 
> > break Efika (SmartFirmware) and possibly other implementations.  After this
> > command is run, all console output is supressed.
>  
> > I'm not sure why (found that via regression test), but on Efika the
> > output-device is screen (/pci@80000000/display@10).
>  
> Can you examine the output property of the /chosen node and see what its
> original vallue is?
> 
> > I suppose the right fix would be to check for PowerMacs before running this,
> > but I'm not sure how.  Any ideas?
>  
> There's some property in the / or /cpu or /openprom noe that can be
> used. Don't have a ppc machine from Apple here right now.
> 
> Why does Apple Powerbook need this? What's their default output device?

(Note: this is about PowerMacs too, not just PowerBooks.)

The default output device is a graphics card. However, console output
doesn't actually display to the default output device (presumably to
preserve Apple's logo splash screen). Yes, this violates section 7.4.5
of IEEE1275.

To get console output, we need to open the output device. However, we
can't hardcode a particular device (e.g. the "screen" device alias),
since that could break users with serial console.

'output-device' returns a string specifying the default output device.
'output' changes console output to the specified device. In other words,
this command opens the output device that should already be open.

I believe I tested this code on briQ, which shares a code lineage with
Efika, but Efika certainly could have broken something.

It's entirely possible that a particular firmware does not correctly
implement these commands. We already have a framework for such cases,
and we already work around SmartFirmware bugs with it.
     1. define a GRUB_IEEE1275_FLAG_BROKEN_OUTPUT flag in
        include/grub/ieee1275/ieee1275.h
     2. call grub_ieee1275_set_flag() in grub_ieee1275_find_options()
     3. use grub_ieee1275_test_flag() in grub_ofconsole_init()

-Hollis




  parent reply	other threads:[~2007-07-04 16:10 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-02  8:17 PowerMac hack breaks Efika Robert Millan
2007-07-02 12:48 ` Stefan Reinauer
2007-07-02 17:22   ` Robert Millan
2007-07-04 16:10   ` Hollis Blanchard [this message]
2007-07-09 14:50     ` Robert Millan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1183565415.7721.31.camel@diesel \
    --to=hollis@penguinppc.org \
    --cc=grub-devel@gnu.org \
    --cc=rmh@aybabtu.com \
    --cc=stepan@coresystems.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.