Package: linux-patch-xenomai
Version: 2.5.1-2
Severity: grave
Hello,
I have tried compiling Linux 2.6.32.7 with the patches provided by
the new version of the linux-patch-xenomai package. Unfortunately,
I noticed that running "make defconfig" or "make silentoldconfig"
print the following errors messages and make exits with an error:
=== 8< ===
*** Default configuration is based on 'i386_defconfig'
arch/x86/Kconfig:74: unexpected option "select"
arch/x86/Kconfig:75: unexpected option "select"
arch/x86/Kconfig:76: unexpected option "select"
arch/x86/Kconfig:77: unexpected option "select"
arch/x86/Kconfig:78: unexpected option "select"
arch/x86/Kconfig:79: unexpected option "select"
arch/x86/Kconfig:80: unexpected option "select"
arch/x86/Kconfig:81: unexpected option "select"
arch/x86/Kconfig:82: unexpected option "select"
arch/x86/Kconfig:83: unexpected option "select"
arch/x86/Kconfig:84: unexpected option "select"
arch/x86/Kconfig:85: unexpected option "select"
make[1]: *** [defconfig] Error 1
make: *** [defconfig] Error 2
=== >8 ===
Please note that no such errors occur with the vanilla Xenomai
2.5.1 source code.
As one can see from the errors, the source of this problem is the
arch/x86/Kconfig file. Here are the relevant lines:
=== 8< ===
### Arch settings
config X86
def_bool y
select HAVE_AOUT if X86_32
select HAVE_READQ
select HAVE_WRITEQ
select HAVE_UNSTABLE_SCHED_CLOCK
select HAVE_IDE
select HAVE_OPROFILE
select HAVE_PERF_EVENTS if (!M386 && !M486)
select HAVE_IOREMAP_PROT
select HAVE_KPROBES
select ARCH_WANT_OPTIONAL_GPIOLIB
select ARCH_WANT_FRAME_POINTERS
select HAVE_DMA_ATTRS
select HAVE_KRETPROBES
select HAVE_FTRACE_MCOUNT_RECORD
select HAVE_DYNAMIC_FTRACE
select HAVE_FUNCTION_TRACER
select HAVE_FUNCTION_GRAPH_TRACER
select HAVE_FUNCTION_GRAPH_FP_TEST
select HAVE_FUNCTION_TRACE_MCOUNT_TEST
select HAVE_FTRACE_NMI_ENTER if DYNAMIC_FTRACE
menu "Real-time sub-system"
comment "WARNING! You enabled APM, CPU Frequency scaling or ACPI 'processor'"
depends on APM || CPU_FREQ || ACPI_PROCESSOR
comment "option. These options are known to cause troubles with Xenomai."
depends on APM || CPU_FREQ || ACPI_PROCESSOR
comment "NOTE: Xenomai conflicts with PC speaker support."
depends on !X86_TSC && X86 && INPUT_PCSPKR
comment "(menu Device Drivers/Input device support/Miscellaneous devices)"
depends on !X86_TSC && X86 && INPUT_PCSPKR
comment "NOTE: Xenomai needs either X86_LOCAL_APIC enabled or HPET_TIMER
disabled."
depends on (!X86_LOCAL_APIC || !X86_TSC) && X86 && HPET_TIMER
comment "(menu Processor type and features)"
depends on (!X86_LOCAL_APIC || !X86_TSC) && X86 && HPET_TIMER
config XENOMAI
depends on ((X86_TSC || !X86 || !INPUT_PCSPKR) && (!HPET_TIMER || !X86
|| (X86_LOCAL_APIC && X86_TSC)))
bool "Xenomai"
default y
select IPIPE
help
Xenomai is a real-time extension to the Linux kernel. Note
that Xenomai relies on Adeos interrupt pipeline (CONFIG_IPIPE
option) to be enabled, so enabling this option selects the
CONFIG_IPIPE option.
source "arch/x86/xenomai/Kconfig"
endmenu
select HAVE_SYSCALL_TRACEPOINTS
select HAVE_KVM
select HAVE_ARCH_KGDB
select HAVE_ARCH_TRACEHOOK
select HAVE_GENERIC_DMA_COHERENT if X86_32
select HAVE_EFFICIENT_UNALIGNED_ACCESS
select USER_STACKTRACE_SUPPORT
select HAVE_DMA_API_DEBUG
select HAVE_KERNEL_GZIP
select HAVE_KERNEL_BZIP2
select HAVE_KERNEL_LZMA
select HAVE_ARCH_KMEMCHECK
=== >8 ===
As you can see, the options for "config X86" are cut off in the middle,
and then the menu for Xenomai related settings is inserted. Then, after
Xenomai settings menu, the options for X86 continue. This suggests a
problem with the generated Xenomai patch.
After having a look at the Debian package, I noticed that the problem
is caused by the following lines in "debian/prepare-patch.sh"
=== 8< ===
77 diff_addons() {
78 lines=`(echo ; echo ; cat $xenomai_root/scripts/Kconfig.frag) | wc -l`
79
80 echo "--- linux/arch/$linux_arch/Kconfig 1970-01-01
01:00:00.000000000 +0100" >> $patch_file
81 echo "+++ linux-patched/arch/$linux_arch/Kconfig 2007-03-06
17:55:58.000000000 +0000" >> $patch_file
82 echo "@@ -40,2 +40,$lines @@" >> $patch_file
83 echo " source \"init/Kconfig\"" >> $patch_file
84 sed -e "s,@LINUX_ARCH@,$linux_arch,g" $xenomai_root/scripts/Kconfig.frag
| sed 's/^/+/' >> $patch_file
85 echo " " >> $patch_file
86 }
=== >8 ===
As you can see, the line number 40 is hard-coded to the patch.
Unfortunately, this ends up putting the Xenomai related options
right in the middle of "config X86" options, which causes the
errors shown above.
Then I looked at how Xenomai (upstream) handles this issue. I saw
that it also uses hard-coded line numbers, however in this case
they use a very large number (1400) as the initial line number
so the new lines of the patch get inserted to the *end* of the
init/Kconfig file.
I have not come up with a solution to this problem, but I believe
the solution should involve hard-coding "safer" line numbers into
the patch, like upstream does.
I chose "grave" as the severity as I believe that this bug makes
the "linux-patch-xenomai" package unusuable for its main purpose.
Dear Roland Stigge,
I know the following request should be separate wishlist bug, but
can you please use a patch system like quilt or something similar
so it would be easy to see what changes you made to the original
Xenomai source code without having to dig through the diff.gz file?
Regards,
M. Vefa Bicakci
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]