public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Amit Shah <amit@kernel.org>
To: "Uwe Kleine-König" <u.kleine-koenig@baylibre.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	virtualization@lists.linux.dev,  linux-kernel@vger.kernel.org
Subject: Re: [PATCH] virtio: console: Prepare for making REMOTEPROC modular
Date: Mon, 17 Feb 2025 11:53:01 +0100	[thread overview]
Message-ID: <2c676a9910c2d5b1332bb9baa999cdd16763a730.camel@kernel.org> (raw)
In-Reply-To: <535ivi67jdmcuhns5q4r36fjpqde3clnqq7hr26gmg33jwoxyb@ahvuhhaewh3u>

On Fri, 2025-02-14 at 18:47 +0100, Uwe Kleine-König wrote:
> On Fri, Feb 14, 2025 at 05:55:41PM +0100, Amit Shah wrote:
> > On Fri, 2025-02-14 at 17:52 +0100, Uwe Kleine-König wrote:
> > > Hello Amit,
> > > 
> > > On Fri, Feb 14, 2025 at 05:37:52PM +0100, Amit Shah wrote:
> > > > I'm thinking of the two combinations of interest: REMOTEPROC=m,
> > > > VIRTIO_CONSOLE can be y or m.  Say virtcons_probe() happens
> > > > when
> > > > the
> > > > remoteproc module isn't yet loaded.  Even after later loading
> > > > remoteproc, virtio console won't do anything interesting with
> > > > remoteproc.
> > > 
> > > Where does the interesting thing happen if remoteproc is already
> > > loaded
> > > at that time? I'm not seeing anything interesting in that case
> > > either
> > > ...
> > 
> > The code I pointed to,
> > 
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/virtio_console.c#n1993
> > 
> > either enables remoteproc if the module is present; or it enables
> > multiport, but not both at the same time.  If remoteproc isn't
> > present
> > when this probe routine is executed, multiport might get enabled. 
> > And
> > then there's no chance for remoteproc to get enabled.
> 
> The only case where there is a difference between IS_REACHABLE and
> IS_ENABLED is:
> 
> 	CONFIG_REMOTEPROC=m
> 	CONFIG_VIRTIO_CONSOLE=y

Well, also if CONFIG_VIRTIO_CONSOLE=m; and virtio_console.ko is loaded
before remoteproc.ko.

> Iff in this case you never want to test for MULTIPORT (even though
> the
> remoteproc module might never get loaded), then my patch is wrong.
> 
> When creating the patch I thought there is a hard dependency on
> remoteproc (like calling a function that is provided by
> CONFIG_REMOTEPROC). I don't understand how the remoteproc stuff
> interacts with the virtio_console driver, is this something in
> userspace
> which then would also autoload the remoteproc module?

What's happening is that multiport and remoteproc are mutually
exclusive in the virtio_console code.

And, I'm also not sure of how remoteproc loads and configures itself. 
Does loading remoteproc cause a load of virtio_console?  How?

So - based on our discussions, I think your assumptions are:

1. remoteproc will load virtio_console when remoteproc is required
2. virtio_console will never be loaded by itself
3. General virtio_console functionality (including tty and multiport)
is never used when remoteproc is used

I think at least 3 needs more thought/justification why it's a valid
assumption.  Documenting it in the commit msg is fine.

At least assumptions 1 and 2 will cause remoteproc to not function
correctly with virtio_console, despite both of them being loaded
(because they can be loaded in the unexpected order -- virtio_console
before remoteproc).  Do you want to adjust the code so that remoteproc
queries for already-existing virtio_console.ko, triggers the code that
would otherwise be not triggered in virtcons_probe(), and makes
remoteproc functional in that case?

		Amit

  reply	other threads:[~2025-02-17 10:53 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-13 11:55 [PATCH] virtio: console: Prepare for making REMOTEPROC modular Uwe Kleine-König
2025-02-14 10:58 ` Amit Shah
2025-02-14 11:14   ` Uwe Kleine-König
2025-02-14 13:32     ` Amit Shah
2025-02-14 16:13       ` Uwe Kleine-König
2025-02-14 16:37         ` Amit Shah
2025-02-14 16:52           ` Uwe Kleine-König
2025-02-14 16:55             ` Amit Shah
2025-02-14 17:47               ` Uwe Kleine-König
2025-02-17 10:53                 ` Amit Shah [this message]
2025-02-17 10:59                   ` Amit Shah
2025-02-18  9:49                     ` Amit Shah
2025-02-17 16:06                   ` Uwe Kleine-König

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=2c676a9910c2d5b1332bb9baa999cdd16763a730.camel@kernel.org \
    --to=amit@kernel.org \
    --cc=arnd@arndb.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=u.kleine-koenig@baylibre.com \
    --cc=virtualization@lists.linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox