Kernel ABI breakage
Tim Gardner
tim.gardner at canonical.com
Mon Mar 3 21:24:07 UTC 2008
Fabio M. Di Nitto wrote:
> On Wed, 20 Feb 2008, Tim Gardner wrote:
>
>> Fabio M. Di Nitto wrote:
>>> Hi guys,
>>>
>>> I spoke to Tim on IRC a few days back about problems introduced by some
>>> recent updates in LUM and he suggested to take it to a wider audiance.
>>>
>>> I filed a bug to keep track of the issue: #192559
>>>
>>> but is the general approach of upgrading entire subsystems in LUM (or
>>> any
>>> other package for the matter) that needs to be reviewed.
>>>
>>> So far i don't recall this problem happening before, but now it's clear
>>> out of a default install.
>>>
>>> Fabio
>>>
>>> PS CC me on reply. I am not subbed to this mailing list.
>>>
>>> --
>>> I'm going to make him an offer he can't refuse.
>>>
>>
>> After some experimentation I think can propose at least one short term
>> solution.
>>
>> 1) Disable CONFIG_SOUND in the kernel.
>>
>> 2) Commit duplicated (and modified) headers from LUM ALSA into the
>> kernel tree. Remove LUM versions of the duplicate headers to enforce
>> correct compilation.
>>
>> 3) Port CONFIG_SND/CONFIG_ALSA dependent drivers from the kernel to LUM
>> (cx88 and saa7134).
>
> there are more drivers..
>
>>
>> Assuming the LUM ALSA header modifications do not cause compilation
>> errors, this will at least allow external subsystems to compile against
>> the kernel and generate the correct ABI.
>>
>> While this solution works for ALSA, its not particularly elegant. If we
>> take on more duplicate subsystems like this in LUM, then we'll have to
>> design something better.
>
> No i think we need to find the right solution immediatly.
>
> The problems here are:
>
> - linux-kernel-headers generated by the kernel contains old headers and a
> Modules.versions that does not reflect what is loaded at runtime.
> - lum: introduces a kernel ABI breakage
> - lbm: could do the same as lum at some point in time.
>
> The only way we have to detect that there is an ABI change is by
> comparing the different Modules.versions and the real one is not
> available anywhere due to the build-dep chain.
>
> The only really clean solution i can think of is to step back from this
> approach of splitting stuff into 3 different sources and collapse them
> again.
>
> The only reason i can recall of why they were splitted was to avoid to
> rebuild the world for an ubuntu module update and not to contaminate the
> kernel tree with tons of extra patches.
>
> Here we are at the point were we basically need to jump back a few years
> when we had debian/patches to apply every single change to the source tree.
>
> Unless we can find a very elegant and working solution immediatly, this
> is virtually the only approach that works. A kernel that breaks in time
> with updates is not a viable solution for hardy.
>
> Fabio
>
> --
> I'm going to make him an offer he can't refuse.
>
I've developed the basic infrastructure in kernel/lum/lbm to mitigate
ABI issues according to the Sprint notes we developed in
https://wiki.ubuntu.com/KernelTeam/Sprints/Feb2008/HeadersABI.
I've tested it to the extent that I'm reasonably sure I have not busted
the core builds. However, I've not tested any third party external builds.
Also, I have not implemented BuildConflicts in lum because I'm not
convinced that its the right thing to do.
The remaining work to be done is
1) disable CONFIG_SND in the kernel
2) port CONFIG_ALSA and CONFIG_SND dependent kernel modules into lum.
3) Generate meta packages for linux-headers-{lum,lbm}.
rtg
--
Tim Gardner tim.gardner at ubuntu.com
More information about the kernel-team
mailing list