Patchwork qemu: add recommend of kernel-modules for all qemu machines

login
register
mail settings
Submitter Ross Burton
Date Sept. 4, 2013, 4:22 p.m.
Message ID <1378311722-17752-1-git-send-email-ross.burton@intel.com>
Download mbox | patch
Permalink /patch/57363/
State New
Headers show

Comments

Ross Burton - Sept. 4, 2013, 4:22 p.m.
Only qemumips was recommending kernel-modules which meant that the other qemu
machines were missing some kernel modules, for example binfmt-misc.

Move the recommends to qemu.inc so that all qemu machines pull in the kernel
modules that have been built.

[ YOCTO #4863 ]

Signed-off-by: Ross Burton <ross.burton@intel.com>
---
 meta/conf/machine/include/qemu.inc |    2 ++
 meta/conf/machine/qemumips.conf    |    2 --
 meta/conf/machine/qemumips64.conf  |    2 --
 3 files changed, 2 insertions(+), 4 deletions(-)
Richard Purdie - Sept. 4, 2013, 10:01 p.m.
On Wed, 2013-09-04 at 17:22 +0100, Ross Burton wrote:
> Only qemumips was recommending kernel-modules which meant that the other qemu
> machines were missing some kernel modules, for example binfmt-misc.
> 
> Move the recommends to qemu.inc so that all qemu machines pull in the kernel
> modules that have been built.
> 
> [ YOCTO #4863 ]
> 
> Signed-off-by: Ross Burton <ross.burton@intel.com>
> ---
>  meta/conf/machine/include/qemu.inc |    2 ++
>  meta/conf/machine/qemumips.conf    |    2 --
>  meta/conf/machine/qemumips64.conf  |    2 --
>  3 files changed, 2 insertions(+), 4 deletions(-)

How many modules are built for the qemu machines? Are they all useful?
I'm just trying to get a feel for how much we're adding here and whether
this is the right thing to be doing...

Cheers,

Richard



> 
> diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
> index 545f8d1..7baf13e 100644
> --- a/meta/conf/machine/include/qemu.inc
> +++ b/meta/conf/machine/include/qemu.inc
> @@ -27,3 +27,5 @@ EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
>  
>  # Provide the nfs server kernel module for all qemu images
>  KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
> +
> +MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
> diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
> index ce1c419..89721a6 100644
> --- a/meta/conf/machine/qemumips.conf
> +++ b/meta/conf/machine/qemumips.conf
> @@ -9,5 +9,3 @@ KERNEL_IMAGETYPE = "vmlinux"
>  KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
>  
>  SERIAL_CONSOLE = "115200 ttyS0"
> -
> -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
> diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
> index b2c7998..7ba98cb 100644
> --- a/meta/conf/machine/qemumips64.conf
> +++ b/meta/conf/machine/qemumips64.conf
> @@ -9,5 +9,3 @@ KERNEL_IMAGETYPE = "vmlinux"
>  KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
>  
>  SERIAL_CONSOLE = "115200 ttyS0"
> -
> -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
Bruce Ashfield - Sept. 5, 2013, 12:51 a.m.
On Wed, Sep 4, 2013 at 6:01 PM, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
> On Wed, 2013-09-04 at 17:22 +0100, Ross Burton wrote:
>> Only qemumips was recommending kernel-modules which meant that the other qemu
>> machines were missing some kernel modules, for example binfmt-misc.
>>
>> Move the recommends to qemu.inc so that all qemu machines pull in the kernel
>> modules that have been built.
>>
>> [ YOCTO #4863 ]
>>
>> Signed-off-by: Ross Burton <ross.burton@intel.com>
>> ---
>>  meta/conf/machine/include/qemu.inc |    2 ++
>>  meta/conf/machine/qemumips.conf    |    2 --
>>  meta/conf/machine/qemumips64.conf  |    2 --
>>  3 files changed, 2 insertions(+), 4 deletions(-)
>
> How many modules are built for the qemu machines? Are they all useful?
> I'm just trying to get a feel for how much we're adding here and whether
> this is the right thing to be doing...

We can control the configs as tightly as we want, so if we are building too much
for this, I'm happy to trim things down.

Cheers,

Bruce

>
> Cheers,
>
> Richard
>
>
>
>>
>> diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
>> index 545f8d1..7baf13e 100644
>> --- a/meta/conf/machine/include/qemu.inc
>> +++ b/meta/conf/machine/include/qemu.inc
>> @@ -27,3 +27,5 @@ EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
>>
>>  # Provide the nfs server kernel module for all qemu images
>>  KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
>> +
>> +MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
>> diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
>> index ce1c419..89721a6 100644
>> --- a/meta/conf/machine/qemumips.conf
>> +++ b/meta/conf/machine/qemumips.conf
>> @@ -9,5 +9,3 @@ KERNEL_IMAGETYPE = "vmlinux"
>>  KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
>>
>>  SERIAL_CONSOLE = "115200 ttyS0"
>> -
>> -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
>> diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
>> index b2c7998..7ba98cb 100644
>> --- a/meta/conf/machine/qemumips64.conf
>> +++ b/meta/conf/machine/qemumips64.conf
>> @@ -9,5 +9,3 @@ KERNEL_IMAGETYPE = "vmlinux"
>>  KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
>>
>>  SERIAL_CONSOLE = "115200 ttyS0"
>> -
>> -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Martin Jansa - Sept. 5, 2013, 7:11 a.m.
On Wed, Sep 04, 2013 at 08:51:25PM -0400, Bruce Ashfield wrote:
> On Wed, Sep 4, 2013 at 6:01 PM, Richard Purdie
> <richard.purdie@linuxfoundation.org> wrote:
> > On Wed, 2013-09-04 at 17:22 +0100, Ross Burton wrote:
> >> Only qemumips was recommending kernel-modules which meant that the other qemu
> >> machines were missing some kernel modules, for example binfmt-misc.
> >>
> >> Move the recommends to qemu.inc so that all qemu machines pull in the kernel
> >> modules that have been built.
> >>
> >> [ YOCTO #4863 ]
> >>
> >> Signed-off-by: Ross Burton <ross.burton@intel.com>
> >> ---
> >>  meta/conf/machine/include/qemu.inc |    2 ++
> >>  meta/conf/machine/qemumips.conf    |    2 --
> >>  meta/conf/machine/qemumips64.conf  |    2 --
> >>  3 files changed, 2 insertions(+), 4 deletions(-)
> >
> > How many modules are built for the qemu machines? Are they all useful?
> > I'm just trying to get a feel for how much we're adding here and whether
> > this is the right thing to be doing...
> 
> We can control the configs as tightly as we want, so if we are building too much
> for this, I'm happy to trim things down.

I don't think this is right way to do it.

It's good to have as many optional modules available in feed (so to
enable many modules in configs - you never know what obscure device
someone will try to test with qemu and one more module and package in
feed has smaller overhead then need to change configs) and install
only important modules by default in every image.

> 
> Cheers,
> 
> Bruce
> 
> >
> > Cheers,
> >
> > Richard
> >
> >
> >
> >>
> >> diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
> >> index 545f8d1..7baf13e 100644
> >> --- a/meta/conf/machine/include/qemu.inc
> >> +++ b/meta/conf/machine/include/qemu.inc
> >> @@ -27,3 +27,5 @@ EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
> >>
> >>  # Provide the nfs server kernel module for all qemu images
> >>  KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
> >> +
> >> +MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
> >> diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
> >> index ce1c419..89721a6 100644
> >> --- a/meta/conf/machine/qemumips.conf
> >> +++ b/meta/conf/machine/qemumips.conf
> >> @@ -9,5 +9,3 @@ KERNEL_IMAGETYPE = "vmlinux"
> >>  KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
> >>
> >>  SERIAL_CONSOLE = "115200 ttyS0"
> >> -
> >> -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
> >> diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
> >> index b2c7998..7ba98cb 100644
> >> --- a/meta/conf/machine/qemumips64.conf
> >> +++ b/meta/conf/machine/qemumips64.conf
> >> @@ -9,5 +9,3 @@ KERNEL_IMAGETYPE = "vmlinux"
> >>  KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
> >>
> >>  SERIAL_CONSOLE = "115200 ttyS0"
> >> -
> >> -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
> >
> >
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
> 
> 
> 
> -- 
> "Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end"
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Ross Burton - Sept. 5, 2013, 10:20 a.m.
On 5 September 2013 08:11, Martin Jansa <martin.jansa@gmail.com> wrote:
> I don't think this is right way to do it.
>
> It's good to have as many optional modules available in feed (so to
> enable many modules in configs - you never know what obscure device
> someone will try to test with qemu and one more module and package in
> feed has smaller overhead then need to change configs) and install
> only important modules by default in every image.

But isn't the range of devices supported on a particular qemu machine
incredibly limited?

I've also decided that maybe systemd isn't being quite as clever as it
should and maybe fixing it there is the real fix.

Ross
Ross Burton - Sept. 5, 2013, 10:45 a.m.
On 5 September 2013 11:20, Burton, Ross <ross.burton@intel.com> wrote:
> I've also decided that maybe systemd isn't being quite as clever as it
> should and maybe fixing it there is the real fix.

s/systemd/Linux/.

The bug is that doing a "df" on a qemu systemd image results in it
attempting to automount /proc/sys/fs/binfmt_misc.  The automount unit
has ConditionPathExists=/proc/sys/fs/binfmt_misc/ to stop it
attempting to automount when binfmt is disabled but hooray Linux if
binfmt_misc is a module that directory exists even when the module
isn't actually loaded, giving a no such device error when accessed.
The intention here I believe is so that an access to that directory
can invoke an automounter (systemd, in this case) which can then load
the modules and mount the virtual filesystem.

There appear to be two options.

1) The QA scripts ignore any binfmt_misc unit mounts failing
2) systemd RRECOMMENDS kernel-module-binfmt-misc

(the third option of teaching systemd how to recognise this situation
and refuse to start the unit appears impossible)

(CCing Stefan for his input)

To be honest I'm leaning towards (1) right now as binfmt_misc is only
required in specific situations.

Ross
Bruce Ashfield - Sept. 5, 2013, 12:21 p.m.
On Thu, Sep 5, 2013 at 3:11 AM, Martin Jansa <martin.jansa@gmail.com> wrote:
> On Wed, Sep 04, 2013 at 08:51:25PM -0400, Bruce Ashfield wrote:
>> On Wed, Sep 4, 2013 at 6:01 PM, Richard Purdie
>> <richard.purdie@linuxfoundation.org> wrote:
>> > On Wed, 2013-09-04 at 17:22 +0100, Ross Burton wrote:
>> >> Only qemumips was recommending kernel-modules which meant that the other qemu
>> >> machines were missing some kernel modules, for example binfmt-misc.
>> >>
>> >> Move the recommends to qemu.inc so that all qemu machines pull in the kernel
>> >> modules that have been built.
>> >>
>> >> [ YOCTO #4863 ]
>> >>
>> >> Signed-off-by: Ross Burton <ross.burton@intel.com>
>> >> ---
>> >>  meta/conf/machine/include/qemu.inc |    2 ++
>> >>  meta/conf/machine/qemumips.conf    |    2 --
>> >>  meta/conf/machine/qemumips64.conf  |    2 --
>> >>  3 files changed, 2 insertions(+), 4 deletions(-)
>> >
>> > How many modules are built for the qemu machines? Are they all useful?
>> > I'm just trying to get a feel for how much we're adding here and whether
>> > this is the right thing to be doing...
>>
>> We can control the configs as tightly as we want, so if we are building too much
>> for this, I'm happy to trim things down.
>
> I don't think this is right way to do it.
>
> It's good to have as many optional modules available in feed (so to
> enable many modules in configs - you never know what obscure device
> someone will try to test with qemu and one more module and package in
> feed has smaller overhead then need to change configs) and install
> only important modules by default in every image.

There's definite advantages to both, and I'm aware of preferences for and
against, so there's a place for either model.

I'm targeting specific machines, with known good configurations and feature
mixes. So getting the config right, and trusting that configuration is the
route that I take, and then just install everything that is built. Rather than
having the granularity and the need to depend on individual modules, which
ends up tying all my layers, to a specific set of kernel options .. which that
base BSP likes to be at liberty to change.

Having the options in the feed is nice, so somewhere in the middle would be
my ideal :)

Cheers,

Bruce

>
>>
>> Cheers,
>>
>> Bruce
>>
>> >
>> > Cheers,
>> >
>> > Richard
>> >
>> >
>> >
>> >>
>> >> diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
>> >> index 545f8d1..7baf13e 100644
>> >> --- a/meta/conf/machine/include/qemu.inc
>> >> +++ b/meta/conf/machine/include/qemu.inc
>> >> @@ -27,3 +27,5 @@ EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
>> >>
>> >>  # Provide the nfs server kernel module for all qemu images
>> >>  KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
>> >> +
>> >> +MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
>> >> diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
>> >> index ce1c419..89721a6 100644
>> >> --- a/meta/conf/machine/qemumips.conf
>> >> +++ b/meta/conf/machine/qemumips.conf
>> >> @@ -9,5 +9,3 @@ KERNEL_IMAGETYPE = "vmlinux"
>> >>  KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
>> >>
>> >>  SERIAL_CONSOLE = "115200 ttyS0"
>> >> -
>> >> -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
>> >> diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
>> >> index b2c7998..7ba98cb 100644
>> >> --- a/meta/conf/machine/qemumips64.conf
>> >> +++ b/meta/conf/machine/qemumips64.conf
>> >> @@ -9,5 +9,3 @@ KERNEL_IMAGETYPE = "vmlinux"
>> >>  KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
>> >>
>> >>  SERIAL_CONSOLE = "115200 ttyS0"
>> >> -
>> >> -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
>> >
>> >
>> > _______________________________________________
>> > Openembedded-core mailing list
>> > Openembedded-core@lists.openembedded.org
>> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>>
>>
>>
>> --
>> "Thou shalt not follow the NULL pointer, for chaos and madness await
>> thee at its end"
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
> --
> Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com
Stanacar, StefanX - Sept. 5, 2013, 1:09 p.m.
On Thu, 2013-09-05 at 11:45 +0100, Burton, Ross wrote:
> On 5 September 2013 11:20, Burton, Ross <ross.burton@intel.com> wrote:
> > I've also decided that maybe systemd isn't being quite as clever as it
> > should and maybe fixing it there is the real fix.
> 
> s/systemd/Linux/.
> 
> The bug is that doing a "df" on a qemu systemd image results in it
> attempting to automount /proc/sys/fs/binfmt_misc.  The automount unit
> has ConditionPathExists=/proc/sys/fs/binfmt_misc/ to stop it
> attempting to automount when binfmt is disabled but hooray Linux if
> binfmt_misc is a module that directory exists even when the module
> isn't actually loaded, giving a no such device error when accessed.
> The intention here I believe is so that an access to that directory
> can invoke an automounter (systemd, in this case) which can then load
> the modules and mount the virtual filesystem.
> 
> There appear to be two options.
> 
> 1) The QA scripts ignore any binfmt_misc unit mounts failing
> 2) systemd RRECOMMENDS kernel-module-binfmt-misc
> 
> (the third option of teaching systemd how to recognise this situation
> and refuse to start the unit appears impossible)
> 

I honestly like second option more. And the third even better :) (sure
changing the test to ignore binfmt_misc unit from systemctl --failed
output can be easily done, but seems like just hiding the fail to me).

I just tested that the third option can be done (for this case at least)
by changing ConditionPathExists=/proc/sys/fs/binfmt_misc/ to
ConditionDirectoryNotEmpty=/proc/sys/fs/binfmt_misc/ for
proc-sys-fs-binfmt_misc.automount unit file and 
"df" doesn't complain as it doesn't attempt to automount anymore. On a
system which does have that module loaded there are two files there so
that's why the condition works.

Cheers,
Stefan


> (CCing Stefan for his input)
> 
> To be honest I'm leaning towards (1) right now as binfmt_misc is only
> required in specific situations.
> 
> Ross
Ross Burton - Sept. 5, 2013, 2:19 p.m.
On 5 September 2013 14:09, Stanacar, StefanX <stefanx.stanacar@intel.com> wrote:
> I just tested that the third option can be done (for this case at least)
> by changing ConditionPathExists=/proc/sys/fs/binfmt_misc/ to
> ConditionDirectoryNotEmpty=/proc/sys/fs/binfmt_misc/ for
> proc-sys-fs-binfmt_misc.automount unit file and
> "df" doesn't complain as it doesn't attempt to automount anymore. On a
> system which does have that module loaded there are two files there so
> that's why the condition works.

Confirmed, patch incoming.

Ross
Ross Burton - Sept. 5, 2013, 2:39 p.m.
On 5 September 2013 15:19, Burton, Ross <ross.burton@intel.com> wrote:
> On 5 September 2013 14:09, Stanacar, StefanX <stefanx.stanacar@intel.com> wrote:
>> I just tested that the third option can be done (for this case at least)
>> by changing ConditionPathExists=/proc/sys/fs/binfmt_misc/ to
>> ConditionDirectoryNotEmpty=/proc/sys/fs/binfmt_misc/ for
>> proc-sys-fs-binfmt_misc.automount unit file and
>> "df" doesn't complain as it doesn't attempt to automount anymore. On a
>> system which does have that module loaded there are two files there so
>> that's why the condition works.
>
> Confirmed, patch incoming.

I take it back, this is wrong.  When the module is available on disk
but not yet loaded the binfmt_misc directory is empty, so this change
means it shouldn't be automounting.  It is, which is... interesting.

Ross

Patch

diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
index 545f8d1..7baf13e 100644
--- a/meta/conf/machine/include/qemu.inc
+++ b/meta/conf/machine/include/qemu.inc
@@ -27,3 +27,5 @@  EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
 
 # Provide the nfs server kernel module for all qemu images
 KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
+
+MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
index ce1c419..89721a6 100644
--- a/meta/conf/machine/qemumips.conf
+++ b/meta/conf/machine/qemumips.conf
@@ -9,5 +9,3 @@  KERNEL_IMAGETYPE = "vmlinux"
 KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
 
 SERIAL_CONSOLE = "115200 ttyS0"
-
-MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
index b2c7998..7ba98cb 100644
--- a/meta/conf/machine/qemumips64.conf
+++ b/meta/conf/machine/qemumips64.conf
@@ -9,5 +9,3 @@  KERNEL_IMAGETYPE = "vmlinux"
 KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
 
 SERIAL_CONSOLE = "115200 ttyS0"
-
-MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"