2011-02-24 16:31:53

by Chuck Ebbert

[permalink] [raw]
Subject: Can't build in the virtio console driver on x86_64 when the other virtio drivers are modular

The virtio configuration options are inconsistent. According to this,
every options that needs virtio will select it:

# Virtio always gets selected by whoever wants it.
config VIRTIO
tristate

Note that it's not user-selectable, so any config file that tries to
set it will be ignored when kconfig loads those options. And yet we
have a whole set of options that depend on VIRTIO, like VIRTIO_CONSOLE
for example. This makes it impossible to have VIRTIO_PCI modular and
VIRTIO_CONSOLE built-in on x86_64, because:

1. VIRTIO_PCI selects VIRTIO and sets it to M
2. VIRTIO_CONSOLE gets forced to M because one of its dependencies is M

So either VIRTIO (and VIRTIO_RING) need to be user-selectable, or all
of the options that depend on VIRTIO need to be changed to select it
instead.

(For even more fun, LGUEST_GUEST on i386 forces VIRTIO, VIRTIO_RING and
VIRTIO_CONSOLE all to Y.)


2011-02-25 06:08:22

by Amit Shah

[permalink] [raw]
Subject: Re: Can't build in the virtio console driver on x86_64 when the other virtio drivers are modular

On (Thu) 24 Feb 2011 [11:28:19], Chuck Ebbert wrote:
> The virtio configuration options are inconsistent. According to this,
> every options that needs virtio will select it:
>
> # Virtio always gets selected by whoever wants it.
> config VIRTIO
> tristate
>
> Note that it's not user-selectable, so any config file that tries to
> set it will be ignored when kconfig loads those options. And yet we
> have a whole set of options that depend on VIRTIO, like VIRTIO_CONSOLE
> for example. This makes it impossible to have VIRTIO_PCI modular and
> VIRTIO_CONSOLE built-in on x86_64, because:

Any reason to have VIRTIO_PCI modular instead of built in (on x86-64,
virtio-console won't work without virtio-pci anyway)?

Amit

2011-02-25 17:17:13

by Chuck Ebbert

[permalink] [raw]
Subject: Re: Can't build in the virtio console driver on x86_64 when the other virtio drivers are modular

On Fri, 25 Feb 2011 11:38:15 +0530
Amit Shah <[email protected]> wrote:

> On (Thu) 24 Feb 2011 [11:28:19], Chuck Ebbert wrote:
> > The virtio configuration options are inconsistent. According to this,
> > every options that needs virtio will select it:
> >
> > # Virtio always gets selected by whoever wants it.
> > config VIRTIO
> > tristate
> >
> > Note that it's not user-selectable, so any config file that tries to
> > set it will be ignored when kconfig loads those options. And yet we
> > have a whole set of options that depend on VIRTIO, like VIRTIO_CONSOLE
> > for example. This makes it impossible to have VIRTIO_PCI modular and
> > VIRTIO_CONSOLE built-in on x86_64, because:
>
> Any reason to have VIRTIO_PCI modular instead of built in (on x86-64,
> virtio-console won't work without virtio-pci anyway)?
>

None that I know of offhand, other than not building in things unless
absolutely necessary. There's no dependency of any kind there, so it's
even possible to build a kernel with VIRTIO_CONSOLE enabled and
VIRTIO_PCI completely disabled.

2011-02-28 05:05:03

by Amit Shah

[permalink] [raw]
Subject: Re: Can't build in the virtio console driver on x86_64 when the other virtio drivers are modular

On (Fri) 25 Feb 2011 [12:13:20], Chuck Ebbert wrote:
> On Fri, 25 Feb 2011 11:38:15 +0530
> Amit Shah <[email protected]> wrote:
>
> > On (Thu) 24 Feb 2011 [11:28:19], Chuck Ebbert wrote:
> > > The virtio configuration options are inconsistent. According to this,
> > > every options that needs virtio will select it:
> > >
> > > # Virtio always gets selected by whoever wants it.
> > > config VIRTIO
> > > tristate
> > >
> > > Note that it's not user-selectable, so any config file that tries to
> > > set it will be ignored when kconfig loads those options. And yet we
> > > have a whole set of options that depend on VIRTIO, like VIRTIO_CONSOLE
> > > for example. This makes it impossible to have VIRTIO_PCI modular and
> > > VIRTIO_CONSOLE built-in on x86_64, because:
> >
> > Any reason to have VIRTIO_PCI modular instead of built in (on x86-64,
> > virtio-console won't work without virtio-pci anyway)?
> >
>
> None that I know of offhand, other than not building in things unless
> absolutely necessary. There's no dependency of any kind there, so it's
> even possible to build a kernel with VIRTIO_CONSOLE enabled and
> VIRTIO_PCI completely disabled.

Yes, that's that way because not all architectures need virtio-pci to
have virtio-console functional (eg. s390, which doesn't have a PCI
bus).

So if you're only interested in the x86-64 arch, you could compile in
virtio-pci and virtio-console and this should happily work.

Amit