LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Jon Masters <jcm@redhat.com>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: inverse mapping from a struct console to device
Date: Mon, 26 Jan 2015 14:40:58 -0500	[thread overview]
Message-ID: <54C6984A.20501@redhat.com> (raw)

Hi Folks,

TLDR: I need a back reference from a console struct to its device. I
can't see an easy way to do this right now without adding one?

I've a quick question. I have prototype code that parses an ACPI table
known as the SPCR (Serial Port Console Redirection - exists on both x86
and ARM systems). It finds the correct serial device (but it's not a
Linux specific DT-style solution so there's no "console=" parameter
embedded in it or something) to use for the preferred console (I have
effectively the device object connected with the acpi_handle of the
underlying serial device, which I map on by walking the ACPI namespace
down from the root until I find the _ADR of the specified SPCR address).

One of the problems that I have is that I want to make the decision
about whether a console should be automatically configured once we get
to register_console, because that's where the existing logic is, and
it's one path I can be sure everyone is going to call (serial drivers
have a number of different APIs that they use during registration).

Once I'm in register_console, I have only the console struct to play
with. I can get from that to the tty_driver (by walking the tty driver
list and finding the back reference), but that still doesn't give me
what I want. I can add a reference to the underlying device in one of
these structs, but I would like to have additional opinions before I go
and make something hackish folks will balk at later. So, am I missing
something obvious? I hope I am because this seems slightly weird.

Jon.

P.S. I would love it if I could (for debug purposes only) just walk down
from the root of the kernel device hierarchy until I found a device that
had a resource matching the one I am looking for (you can do exactly
this in the ACPI namespace using exported methods), but the only code
that can do that today is unexported core core used during shutdown to
shutdown all devices recursively. Just a sidenote.

             reply	other threads:[~2015-01-26 19:41 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-26 19:40 Jon Masters [this message]
2015-01-26 20:20 ` Greg KH
2015-01-27  3:16   ` Jon Masters
2015-01-26 20:50 ` Mark Rutland
2015-01-27  3:06   ` Jon Masters
2015-01-27 10:14     ` Mark Rutland
2015-01-27 11:54       ` Jon Masters
2015-01-27 12:30         ` Mark Rutland
2015-01-27 20:42           ` Jon Masters
2015-01-28 22:48             ` Peter Hurley

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=54C6984A.20501@redhat.com \
    --to=jcm@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --subject='Re: inverse mapping from a struct console to device' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).