Skip to contentSkip to conversation

2.6.13-rt6, ktimer subsystem

PATCH In review Ingo Molnar 16 participants 46 messages Sep 13, 2005 – Oct 10, 2005

Subsystems (6)
lore
Share & tools
lore
#0 lore raw

i have released the 2.6.13-rt6 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

there are lots of small updates all across and there's a big feature as well in this release: a complete rework of the high-resolution timers framework, from Thomas Gleixner, called 'ktimers'.

under the ktimer framework the HR (and posix) timers live in a separate domain, have their own (per-CPU) rbtree to stay scalable and deterministic even with a high number of timers. Another positive effect of the introduction of separate ktimers is that kernel/timer.c is now using preemptible locks again, removing the cascade() worst-case latency. The cleanup factor is high as well: the ktimer framework slashes 1300+ lines off the HRT code. See kernel/ktimer.c for details.

the end-effect of ktimers is a much more deterministic HRT engine. The original merging of HR timers into the stock timer wheel was a Bad Idea (tm). We intend to push the ktimer subsystem upstream as well.

Changes since 2.6.13-rt1:

- new ktimer subsystem to cleanly implement High Resolution Timers (Thomas Gleixner)

- BKL fix for the new pi-lock code (Steven Rostedt)

- SMP fix for the new pi-lock code (Steven Rostedt)

- ALL_TASKS_PI updates (Daniel Walker, Steven Rostedt)

- trace-irqs fix (Daniel Walker)

- add raw_irqs_disabled() into the might_sleep() check (Daniel Walker)

- turned off ALL_TASKS_PI

- ide_lock updates

- ioapic build fix

- HRT build fixes

to build a 2.6.13-rt6 tree, the following patches should be applied:

http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.tar.bz2
http://redhat.com/~mingo/realtime-preempt/patch-2.6.13-rt6

Ingo

#1 lore raw
Quoted 4 lines · Ingo Molnar

i have released the 2.6.13-rt6 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

Ingo,

Is this supposed to work on amd64? Lots of people on linux-audio-user report that it just reboots immediately when booting the kernel. I have the .configs if you want them.

Lee

#2 lore raw
Quoted 4 lines · Lee Revell
Quoted 3 lines · Ingo Molnar

i have released the 2.6.13-rt6 tree, which can be downloaded from the usual place:

Quoted 8 lines
Quoted 1 line

http://redhat.com/~mingo/realtime-preempt/

Ingo,

Is this supposed to work on amd64? Lots of people on linux-audio-user report that it just reboots immediately when booting the kernel. I have the .configs if you want them.

Sorry the problem is specific to x86-64 not amd64.

Lee

#3 lore raw
In reply to Lee Revell
Quoted 4 lines · Lee Revell
Quoted 3 lines · Ingo Molnar

i have released the 2.6.13-rt6 tree, which can be downloaded from the usual place:

Quoted 8 lines
Quoted 1 line

http://redhat.com/~mingo/realtime-preempt/

Ingo,

Is this supposed to work on amd64? Lots of people on linux-audio-user report that it just reboots immediately when booting the kernel. I have the .configs if you want them.

it wont even build right now, due to the ktimer changes. I'll fix x64 up once things have settled down a bit. (but if someone does patches i'll sure apply them)

Ingo

#4 lore raw
Quoted 11 lines · Ingo Molnar
Quoted 9 lines · Lee Revell
Quoted 4 lines · Ingo Molnar

i have released the 2.6.13-rt6 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

Ingo,

Quoted 7 lines
Quoted 3 lines

Is this supposed to work on amd64? Lots of people on linux-audio-user report that it just reboots immediately when booting the kernel. I have the .configs if you want them.

it wont even build right now, due to the ktimer changes. I'll fix x64 up once things have settled down a bit. (but if someone does patches i'll sure apply them)

The problem apparently affected 2.6.13-rt4 too. The users reported that it built OK (as long as realtime preemption is enabled) but then reboots as soon as grub loads the kernel.

Can this be worked around by disabling CONFIG_HIGH_RES_TIMERS?

Lee

#5 lore raw
Quoted 9 lines · Lee Revell
Quoted 3 lines

it wont even build right now, due to the ktimer changes. I'll fix x64 up once things have settled down a bit. (but if someone does patches i'll sure apply them)

The problem apparently affected 2.6.13-rt4 too. The users reported that it built OK (as long as realtime preemption is enabled) but then reboots as soon as grub loads the kernel.

Can this be worked around by disabling CONFIG_HIGH_RES_TIMERS?

on x64 HIGH_RES_TIMERS is disabled by default (no lowlevel support code integrated yet). Where did the problems start, rt4? (i.e. rt3 works fine?)

Ingo

#6 lore raw
Quoted 11 lines · Ingo Molnar
Quoted 8 lines · Lee Revell
Quoted 3 lines

it wont even build right now, due to the ktimer changes. I'll fix x64 up once things have settled down a bit. (but if someone does patches i'll sure apply them)

The problem apparently affected 2.6.13-rt4 too. The users reported that it built OK (as long as realtime preemption is enabled) but then reboots as soon as grub loads the kernel.

Quoted 5 lines
Quoted 1 line

Can this be worked around by disabling CONFIG_HIGH_RES_TIMERS?

on x64 HIGH_RES_TIMERS is disabled by default (no lowlevel support code integrated yet). Where did the problems start, rt4? (i.e. rt3 works fine?)

ok, fixed a couple of bugs on x64, it boots on my box now. The main breakage was the elimination of the preemption-disabling soft irq flag in -53-05, that unearthed an irq-flags 32-bitness bug in the spinlock macros, which was there for ages. This resulted in the early reboot during bootup.

I've uploaded 2.6.13-rt12 with the fixes.

Ingo

#7 lore raw
In reply to Ingo Molnar
Quoted 4 lines · Ingo Molnar

i have released the 2.6.13-rt6 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

I haven't been able to get 2.6.13-rt6 to compile on a 16 way x440 (SUMMIT) with gcc-2.95. Is there a known minimum compiler version? The same config builds fine on a P3 8 way with gcc-3.3.5.

Make output:

CHK include/linux/version.h
SYMLINK include/asm -> include/asm-i386

  SPLIT   include/linux/autoconf.h -> include/config/*
  UPD     include/linux/version.h
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/conmakehash
  HOSTCC  scripts/testlpp

scripts/testlpp.c: In function `cleanup':
scripts/testlpp.c:90: warning: use of l' length character with f' type character scripts/testlpp.c:92: warning: use of l' length character with f' type character scripts/testlpp.c:94: warning: use of l' length character with f' type character scripts/testlpp.c: In function `main':
scripts/testlpp.c:142: warning: use of l' length character with f' type character
CC arch/i386/kernel/asm-offsets.s
In file included from include/linux/time.h:7,

                 from include/linux/timex.h:58,
                 from include/linux/sched.h:11,
                 from arch/i386/kernel/asm-offsets.c:7:

include/linux/seqlock.h: In function `__write_seqlock':
include/linux/seqlock.h:75: warning: implicit declaration of function __builtin_types_compatible_p' include/linux/seqlock.h:75: parse error before typeof'
include/linux/seqlock.h: In function `__write_sequnlock':
include/linux/seqlock.h:84: parse error before `typeof'
include/linux/seqlock.h: In function `__write_tryseqlock':
include/linux/seqlock.h:89: parse error before `typeof'
include/linux/seqlock.h: In function `__read_seqretry':
include/linux/seqlock.h:126: parse error before typeof' include/linux/seqlock.h:127: parse error before typeof'
include/linux/seqlock.h: In function `__write_seqlock_raw':
include/linux/seqlock.h:134: parse error before `typeof'
include/linux/seqlock.h: In function `__write_sequnlock_raw':
include/linux/seqlock.h:143: parse error before `typeof'
include/linux/seqlock.h: In function `__write_tryseqlock_raw':
include/linux/seqlock.h:148: parse error before `typeof'
In file included from include/asm/semaphore.h:40,

                 from include/linux/sched.h:20,
                 from arch/i386/kernel/asm-offsets.c:7:
include/linux/wait.h: In function `init_waitqueue_head':
include/linux/wait.h:84: parse error before `typeof'
In file included from include/linux/ktimer.h:207,
                 from include/linux/sched.h:254,
                 from arch/i386/kernel/asm-offsets.c:7:

Thanks,

Signature · 5 lines
Darren Hart
IBM Linux Technology Center
Linux Kernel Team
Phone: 503 578 3185
  T/L: 775 3185
#8 lore raw
Quoted 7 lines · Darren Hart
Quoted 4 lines · Ingo Molnar

i have released the 2.6.13-rt6 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

I haven't been able to get 2.6.13-rt6 to compile on a 16 way x440 (SUMMIT) with gcc-2.95. Is there a known minimum compiler version? The same config builds fine on a P3 8 way with gcc-3.3.5.

Update: I was able to build the same config on the SUMMIT box with gcc-3.3.5, so the compiler version does seem to be the issue.

Signature · 5 lines
Darren Hart
IBM Linux Technology Center
Linux Kernel Team
Phone: 503 578 3185
  T/L: 775 3185
#9 lore raw
In reply to Ingo Molnar
Quoted 9 lines · Ingo Molnar

i have released the 2.6.13-rt6 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

there are lots of small updates all across and there's a big feature as well in this release: a complete rework of the high-resolution timers framework, from Thomas Gleixner, called 'ktimers'.

under the ktimer framework the HR (and posix) timers live in a separate domain, have their own (per-CPU) rbtree to stay scalable and deterministic even with a high number of timers. Another positive effect of the introduction of separate ktimers is that kernel/timer.c is now using preemptible locks again, removing the cascade() worst-case latency. The cleanup factor is high as well: the ktimer framework slashes 1300+ lines off the HRT code. See kernel/ktimer.c for details.

the end-effect of ktimers is a much more deterministic HRT engine. The original merging of HR timers into the stock timer wheel was a Bad Idea (tm). We intend to push the ktimer subsystem upstream as well.

Well, having spent a bit of time looking at the code it appears that a lot of the ideas we looked at and discarded (see [email protected]) are in this. Shame it was all done with out reference or comment to that list, anyone on it or even the lkml.

I DO agree that it _looks_ nicer, cleaner and so on. But there are a lot of things we rejected in here and they really do need, at least, a hard look.

A few of the top issues:

time in nanoseconds 64-bits, requires a divide to do much of anything with it. Divides are slow and should be avoided if possible. This is especially true in the embedded market.

The rbtree is a high overhead tree. I suspect performance problems here. If it is the right answer here, then why not use it for normal timers? A list of timers is a rather unique thing and, I think, deserves a management structure that accounts for the fact that the elements in the tree are perishable.

It appears that the "monotonic_clock" is being used to drive ktimers. The "monotonic_clock" was NEVER meant to poke outside of the kernel. It is a raw kernel clock that is only required to be monotonic with nothing said about accuracy. It should NOT be confused with CLOCK_MONOTONIC which is directly tied to xtime and therefor is ntp corrected.

These are only the concerns I have from having a rather quick look at the code. I am sure that there are other issues...

Signature · 2 lines
George Anzinger   [email protected]
HRT (High-res-timers):  http://sourceforge.net/projects/high-res-timers/
#10 lore raw
Quoted 5 lines · George Anzinger

Well, having spent a bit of time looking at the code it appears that a lot of the ideas we looked at and discarded (see [email protected]) are in this. Shame it was all done with out reference or comment to that list, anyone on it or even the lkml.

Well, I'm considering to wear sackcloth and ashes. But this seems like the pot calling the kettle back as I don't remember a single relevant reference/comment from you on the UTIME/KURT mailing list after your UTIME->HRT fork.

Quoted 4 lines

A few of the top issues:

time in nanoseconds 64-bits, requires a divide to do much of anything with it. Divides are slow and should be avoided if possible.

The divides are rare and definitely not in the hot pathes. I'm sure that they can be replaced by some intellegent scaled math algorithm if it turns out to be necessary. The hot path instructions are simple add/sub/cmp which are less/equal expensive on a 32bit machine to an operation on struct timespec or an jiffies/arch_cycles pair. The non nsec based implementation gives a burden to 64bit machines and is provable wrong in the aspect of summing rounding errors of interval timers.

Quoted 1 line

This is especially true in the embedded market.

I'm well aware of the embedded market constraints.

Quoted 2 lines

The rbtree is a high overhead tree. I suspect performance problems here.

1. rbtree is available out of the box

2. rbtree is proven to be efficient - at least there are a couple of performance relevant users relying on it e.g. mm, ext3

3. I did insertion/removal tests with 10k entries (<2us on a 1GHz box in userspace). This is way below the experienced and reproducible trouble of recascading. The penalty is completely on the thread which owns the timer for non signal related functions. For signal related functions only the removal on expiry is a penalty for the complete system (in the softirq)

The cascading is a penalty for the complete system all the time.

Performance is a strawman argument here. You know very well that > 90% of the timers are inaccurate "timeout" timers related to I/O, networking, devices. Most of those never expire (the positive feedback removes the timer before expiry) and those timers have no constraint to be accurate, except for the fact that they have to detect an device/network problem at some time. In this case it is completely irrelevant whether the timeout occures n msecs earlier or later.

Quoted 4 lines

If it is the right answer here, then why not use it for normal timers? A list of timers is a rather unique thing and, I think, deserves a management structure that accounts for the fact that the elements in the tree are perishable.

The first goal was to seperate out the timers from the timeout API and I believe that this seperation is necessary.

The implementation of ktimers is not at all restricted to the timers we addressed for now, it can also be utilized for the timeout API without much effort.

The performance improvement is enourmous despite the alleged 64bit math overhead.

Testcase on a 600MHz CeleronM, 512MB RAM:

16 cyclic SCHED_FIFO tasks using clock_nanosleep(ABSTIME) base interval = 1000 us, offset per task = 50 us tracing each latency value to disk

16 cyclic SCHED_OTHER tasks using clock_nanosleep(ABSTIME) base interval = 1000 us, offset per task = 500 us tracing each latency value to disk

while true; do hackbench 50; done
cat /dev/hda | nc atlas 4711

This injects a (insane) load avg of >600 permantely

2.6.13-rt4 (cascade based implementation)
16 cyclic SCHED_FIFO tasks using clock_nanosleep(ABSTIME)

task loops min max average sigma prio

0	      999999	5	869	19	20	80
1	      999999	9	883	18	22	79
2	      999999	9	927	19	23	78
3	      999999	5	908	21	28	77
4	      999999	0	1056	22	33	76
5	      999999	0	973	23	33	75
6	      999999	0	926	23	33	74
7	      999999	1	893	24	33	73
8	      999999	2	942	23	34	72
9	      999999	1	868	24	34	71
10	      999999	0	912	23	34	70
11	      999999	0	911	28	46	69
12	      999999	0	912	28	46	68
13	      999999	9	967	28	46	67
14	      999999	9	954	28	46	66
15	      999999	9	946	28	46	65

2.6.13-rt11 (ktimers based implementation)
16 cyclic SCHED_FIFO tasks using clock_nanosleep(ABSTIME)

task loops min max average sigma prio

0	      999999	9	76	20	4	80
1	      999999	8	84	20	4	79
2	      999999	8	98	21	4	78
3	      999999	9	121	20	4	77
4	      999999	8	124	20	4	76
5	      999999	9	140	20	4	75
6	      999999	10	103	22	5	74
7	      999999	9	99	21	5	73
8	      999999	8	95	21	5	72
9	      999999	9	148	21	5	71
10	      999999	9	141	22	6	70
11	      999999	9	143	22	5	69
12	      999999	8	129	20	4	68
13	      999999	9	149	21	5	67
14	      999999	9	135	21	5	66
15	      999999	8	230	22	5	65
Quoted 5 lines

It appears that the "monotonic_clock" is being used to drive ktimers. The "monotonic_clock" was NEVER meant to poke outside of the kernel. It is a raw kernel clock that is only required to be monotonic with nothing said about accuracy. It should NOT be confused with CLOCK_MONOTONIC which is directly tied to xtime and therefor is ntp corrected.

I'm well aware of that and this is a completely different playground.

The ktimers implementation is _independent_ of the clock sources. The current clock source implementation may suck, but thats not a problem of ktimers at all. Its a problem of arch/XXX/timeYY and kernel/time.c. I did not spend too much time on that as John Stultz is working on the timesource and timeofday stuff and I really hope that this gets accepted.

The relation ship of clock sources and their accuracy is also a worthwhile field of discussion.

Quoted 2 lines

These are only the concerns I have from having a rather quick look at the code. I am sure that there are other issues...

It would be hubristic to deny that :)

OTH,

- The posix timer tests run all successful, except the broken 2timertest which fails on any other HRT kernel too and the sleep to long for real timers when the clock is set backwards, which is easily solvable (working on that).

- The performance improvements in combination with simpler code is an argument of itself

tglx

#11 lore raw
Quoted 10 lines · Thomas Gleixner
Quoted 1 line · George Anzinger

Well, having spent a bit of time looking at the code it appears that a lot of the ideas we looked at and discarded (see [email protected]) are in this. Shame it was all done with out reference or comment to that list, anyone on it or even the lkml.

Well, I'm considering to wear sackcloth and ashes. But this seems like the pot calling the kettle back as I don't remember a single relevant reference/comment from you on the UTIME/KURT mailing list after your UTIME->HRT fork.

Hm...All the work has been on HRT mailing list. In the early days the UTIME/KURT folks were on the list, still may be for all I know.

Still, as much as sackcloth and ashes might become you or me, I would rather try to learn how to be more open about what we are doing so that what results is the best possible for the linux community.

Quoted 7 lines
Quoted 5 lines

A few of the top issues:

time in nanoseconds 64-bits, requires a divide to do much of anything with it. Divides are slow and should be avoided if possible.

Quoted 8 lines

The divides are rare and definitely not in the hot paths. I'm sure that they can be replaced by some intelligent scaled math algorithm if it turns out to be necessary. The hot path instructions are simple add/sub/cmp which are less/equal expensive on a 32bit machine to an operation on struct timespec or an jiffies/arch_cycles pair. The non nsec based implementation gives a burden to 64bit machines and is provable wrong in the aspect of summing rounding errors of interval timers.

With out arguing with your "provable wrong", I will admit that the 64-bit LOOKS good and easy. At the same time I think we can abstract all the required actions on the "nstime" thing and set it up so we can use either a timespec or a s64 depending on the machine (or some such).
I have such a patch nearly ready...

Quoted 2 lines

~

Quoted 5 lines
Quoted 2 lines

The rbtree is a high overhead tree. I suspect performance problems here.

1. rbtree is available out of the box

True.

Quoted 10 lines

2. rbtree is proven to be efficient - at least there are a couple of performance relevant users relying on it e.g. mm, ext3

3. I did insertion/removal tests with 10k entries (<2us on a 1GHz box in user space). This is way below the experienced and reproducible trouble of recascading. The penalty is completely on the thread which owns the timer for non signal related functions. For signal related functions only the removal on expiry is a penalty for the complete system (in the softirq)

Well, I never was a cascade fan.

In the early HRT patches the whole timer list was replaced with a hashed list. It was O(N/M) on insertion where we could easily choose M (for a while it was even a config option). Removal was just an unlink, same as the cascade list.

To be clear on my take on this, as I understand it the rblist is something like O(N*somelog 2). What is left out here is the fixed overhead of F which is there even if N = 1. So we have something like (F+O(f(N)) for a list. For the most part we don't look at F, but as list complexity grows, it gets larger thus pushing out the cross over point to a higher "N" when comparing two lists. I considered the rbtree when doing the secondary list for HRT and concluded that "N" was small enough that a simple O(N/2) list would do just fine as it would only contain timers set to expire in the next jiffie.

I don't think an O(N/2) list is right for all timers (as in the ktimers), but I still wonder if there isn't something better than and rblist. Note, "wonder". I don't have such a list structure in hand.

Quoted 10 lines

The cascading is a penalty for the complete system all the time.

Performance is a straw man argument here. You know very well that > 90% of the timers are inaccurate "timeout" timers related to I/O, networking, devices. Most of those never expire (the positive feedback removes the timer before expiry) and those timers have no constraint to be accurate, except for the fact that they have to detect an device/network problem at some time. In this case it is completely irrelevant whether the timeout occurs n msecs earlier or later.

I agree, but it not accuracy that I am arguing, but cpu cycles. Those we use in the kernel are not available for the user.

Quoted 55 lines
Quoted 3 lines

If it is the right answer here, then why not use it for normal timers? A list of timers is a rather unique thing and, I think, deserves a management structure that accounts for the fact that the elements in the tree are perishable.

The first goal was to separate out the timers from the timeout API and I believe that this separation is necessary.

The implementation of ktimers is not at all restricted to the timers we addressed for now, it can also be utilized for the timeout API without much effort.

The performance improvement is enormous despite the alleged 64bit math overhead.

Testcase on a 600MHz CeleronM, 512MB RAM:

16 cyclic SCHED_FIFO tasks using clock_nanosleep(ABSTIME)
base interval = 1000 us, offset per task = 50 us tracing each latency value to disk

16 cyclic SCHED_OTHER tasks using clock_nanosleep(ABSTIME) base interval = 1000 us, offset per task = 500 us tracing each latency value to disk

while true; do hackbench 50; done
cat /dev/hda | nc atlas 4711

This injects a (insane) load avg of >600 permantely

2.6.13-rt4 (cascade based implementation)
16 cyclic SCHED_FIFO tasks using clock_nanosleep(ABSTIME)

task loops min max average sigma prio

0	      999999	5	869	19	20	80
1	      999999	9	883	18	22	79
2	      999999	9	927	19	23	78
3	      999999	5	908	21	28	77
4	      999999	0	1056	22	33	76
5	      999999	0	973	23	33	75
6	      999999	0	926	23	33	74
7	      999999	1	893	24	33	73
8	      999999	2	942	23	34	72
9	      999999	1	868	24	34	71
10	      999999	0	912	23	34	70
11	      999999	0	911	28	46	69
12	      999999	0	912	28	46	68
13	      999999	9	967	28	46	67
14	      999999	9	954	28	46	66
15	      999999	9	946	28	46	65

2.6.13-rt11 (ktimers based implementation)
16 cyclic SCHED_FIFO tasks using clock_nanosleep(ABSTIME)

task loops min max average sigma prio

Quoted 16 lines
0	      999999	9	76	20	4	80
1	      999999	8	84	20	4	79
2	      999999	8	98	21	4	78
3	      999999	9	121	20	4	77
4	      999999	8	124	20	4	76
5	      999999	9	140	20	4	75
6	      999999	10	103	22	5	74
7	      999999	9	99	21	5	73
8	      999999	8	95	21	5	72
9	      999999	9	148	21	5	71
10	      999999	9	141	22	6	70
11	      999999	9	143	22	5	69
12	      999999	8	129	20	4	68
13	      999999	9	149	21	5	67
14	      999999	9	135	21	5	66
15	      999999	8	230	22	5	65

I confess I don't understand the above numbers. What are min and max and in what units? Are you saying the large max numbers are caused by the cascade?

Quoted 22 lines
Quoted 4 lines

It appears that the "monotonic_clock" is being used to drive ktimers. The "monotonic_clock" was NEVER meant to poke outside of the kernel. It is a raw kernel clock that is only required to be monotonic with nothing said about accuracy. It should NOT be confused with CLOCK_MONOTONIC which is directly tied to xtime and therefor is ntp corrected.

I'm well aware of that and this is a completely different playground.

The ktimers implementation is _independent_ of the clock sources. The current clock source implementation may suck, but thats not a problem of ktimers at all. Its a problem of arch/XXX/timeYY and kernel/time.c. I did not spend too much time on that as John Stultz is working on the timesource and timeofday stuff and I really hope that this gets accepted.

The relation ship of clock sources and their accuracy is also a worthwhile field of discussion.

Quoted 1 line

These are only the concerns I have from having a rather quick look at the code. I am sure that there are other issues...

Quoted 8 lines

It would be hubristic to deny that :)

OTH,

- The posix timer tests run all successful, except the broken 2timertest which fails on any other HRT kernel too and the sleep to long for real timers when the clock is set backwards, which is easily solvable (working on that).

Your mileage seems to differ from mine. Here is what I get from ./do_test:
The following tests failed:
clock_nanosleeptest
abs_timer_test
4-1
clock_settimetest
clock_gettimetest2
2timer_test

Then, on the second run, it crashed in an attempt to get the monotonic clock (a divide error). System is a dual PIII, 800Mhz. This from the rt11 patch.

Quoted 3 lines

- The performance improvements in combination with simpler code is an argument of itself

Signature · 2 lines
George Anzinger   [email protected]
HRT (High-res-timers):  http://sourceforge.net/projects/high-res-timers/
#12 lore raw
Quoted 10 lines · George Anzinger
Quoted 7 lines

Performance is a straw man argument here. You know very well that > 90% of the timers are inaccurate "timeout" timers related to I/O, networking, devices. Most of those never expire (the positive feedback removes the timer before expiry) and those timers have no constraint to be accurate, except for the fact that they have to detect an device/network problem at some time. In this case it is completely irrelevant whether the timeout occurs n msecs earlier or later.

I agree, but it not accuracy that I am arguing, but cpu cycles. Those we use in the kernel are not available for the user.

The time used for recascding is neither available :). Seriously, I'm quite sure that the rbtree for the sorting of "timers" - not "timeouts"
- will not have any relevant performance impact. If there is a faster sorted tree around, I have no problem to use that.

Quoted 3 lines

I confess I don't understand the above numbers. What are min and max and in what units? Are you saying the large max numbers are caused by the cascade?

Sorry, all units usec.

Yes. The problem is the combined base lock, which holds off interrupts for quite a bunch of time. Daniel was experiencing this too.

Quoted 5 lines
Quoted 4 lines

- The posix timer tests run all successful, except the broken 2timertest which fails on any other HRT kernel too and the sleep to long for real timers when the clock is set backwards, which is easily solvable (working on that).

Quoted 8 lines

Your mileage seems to differ from mine. Here is what I get from ./do_test:
The following tests failed:
clock_nanosleeptest
abs_timer_test
4-1
clock_settimetest
clock_gettimetest2
2timer_test

Hmm. Except for the 2timer_test, where my source seems to be broken it works here.

Quoted 3 lines

Then, on the second run, it crashed in an attempt to get the monotonic clock (a divide error). System is a dual PIII, 800Mhz. This from the rt11 patch.

Hmm, divide error. I had one of those in the early phase due to some strange 64/32 truncation problem, which was caused by nested inline/macros. After unmingling the problem went away.

tglx

#13 lore raw

Thomas Gleixner wrote:
~

Quoted 15 lines
Quoted 5 lines
Quoted 4 lines

- The posix timer tests run all successful, except the broken 2timertest which fails on any other HRT kernel too and the sleep to long for real timers when the clock is set backwards, which is easily solvable (working on that).

Quoted 8 lines

Your mileage seems to differ from mine. Here is what I get from ./do_test:
The following tests failed:
clock_nanosleeptest
abs_timer_test
4-1
clock_settimetest
clock_gettimetest2
2timer_test

Quoted 2 lines

Hmm. Except for the 2timer_test, where my source seems to be broken it works here.

The latest support source is in the CVS tree on the HRT site. It is no longer a patch...

Quoted 8 lines
Quoted 3 lines

Then, on the second run, it crashed in an attempt to get the monotonic clock (a divide error). System is a dual PIII, 800Mhz. This from the rt11 patch.

Hmm, divide error. I had one of those in the early phase due to some strange 64/32 truncation problem, which was caused by nested inline/macros. After unmingling the problem went away.

I suspect that the 64/32 div resulted in a >32 bit result which is a fault. This was deep in monotonic_clock. I would rather change to clock_monotonic (i.e. xtime+offset+walltomonotonic) and work that code patch. monotonic_clock is just the wrong thing for this work.

Quoted 10 lines

tglx

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Signature · 2 lines
George Anzinger   [email protected]
HRT (High-res-timers):  http://sourceforge.net/projects/high-res-timers/
#14 lore raw
In reply to George Anzinger
Quoted 6 lines · George Anzinger

In the early HRT patches the whole timer list was replaced with a hashed list. It was O(N/M) on insertion where we could easily choose M (for a while it was even a config option). Removal was just an unlink, same as the cascade list.

Quoted 9 lines

To be clear on my take on this, as I understand it the rblist is something like O(N*somelog 2). What is left out here is the fixed overhead of F which is there even if N = 1. So we have something like (F+O(f(N)) for a list. For the most part we don't look at F, but as list complexity grows, it gets larger thus pushing out the cross over point to a higher "N" when comparing two lists. I considered the rbtree when doing the secondary list for HRT and concluded that "N" was small enough that a simple O(N/2) list would do just fine as it would only contain timers set to expire in the next jiffie.

The fact that we know in advance that a system is only going to a very small number of these timers should be noted. You could just use a regular list , and limit the total number of timers . I would hesitate to stick a big data structure in when your only dealing with one or two timers on average..

George, what's largest number of highres timers that someone might need/want?

Daniel

#15 lore raw
Quoted 7 lines · Daniel Walker
Quoted 3 lines · George Anzinger

In the early HRT patches the whole timer list was replaced with a hashed list. It was O(N/M) on insertion where we could easily choose M (for a while it was even a config option). Removal was just an unlink, same as the cascade list.

To be clear on my take on this, as I understand it the rblist is something like O(N*somelog 2). What is left out here is the fixed overhead of F which is there even if N = 1. So we have something like (F+O(f(N)) for a list. For the most part we don't look at F, but as list complexity grows, it gets larger thus pushing out the cross over point to a higher "N" when comparing two lists. I considered the rbtree when doing the secondary list for HRT and concluded that "N" was small enough that a simple O(N/2) list would do just fine as it would only contain timers set to expire in the next jiffie.

Quoted 9 lines

The fact that we know in advance that a system is only going to a very small number of these timers should be noted. You could just use a regular list , and limit the total number of timers . I would hesitate to stick a big data structure in when your only dealing with one or two timers on average..

George, what's largest number of highres timers that someone might need/want?

Well, the interesting thing is that, unless you change something, the system has a current limit of 1000 posix timers. This can be changed, but, I suspect it is not changed very often. And this handles all posix timers, low and high res. Sleep is another thing, with a max of one sleep timer per task. The ktimer list is also doing itimers, which are also limited to the number of tasks.

As for data structures, a hashed list requires a "list head" for each bucket while, I think the rblist only has one list head, but requires an additional list head (or is it two) in the entry data structure so this is a pay as you go list.

Signature · 2 lines
George Anzinger   [email protected]
HRT (High-res-timers):  http://sourceforge.net/projects/high-res-timers/
#16 lore raw
In reply to George Anzinger
Quoted 10 lines · George Anzinger
Quoted 4 lines

the end-effect of ktimers is a much more deterministic HRT engine. The original merging of HR timers into the stock timer wheel was a Bad Idea (tm). We intend to push the ktimer subsystem upstream as well.

Well, having spent a bit of time looking at the code it appears that a lot of the ideas we looked at and discarded (see [email protected]) are in this. Shame it was all done with out reference or comment to that list, anyone on it or even the lkml.

this was done in the timeframe of 2 days, and was posted ASAP - with you Cc:-ed for the specific purpose of getting feedback from you.

given the very good performance results of ktimers, and the simplification effect on the original HRT code:

   36 files changed, 2016 insertions(+), 3094 deletions(-)

it was a no-brainer to put it into the -rt tree.

Quoted 9 lines

I DO agree that it _looks_ nicer, cleaner and so on. But there are a lot of things we rejected in here and they really do need, at least, a hard look.

A few of the top issues:

time in nanoseconds 64-bits, requires a divide to do much of anything with it. Divides are slow and should be avoided if possible. This is especially true in the embedded market.

Wrong. Divides are slow _on the micro micro level_. They make zero, nil, nada difference in reality. The cleanliness difference between having a flat nanosec scale and having some artificial 2x 32-bit structure are significant.

_By far_ the biggest problem of the HRT code is cleanliness (or the lack of it), and the resulting maintainance overhead, and the resulting gut reaction from upstream: "oh, yuck, bleh!". [Similar problems are true for the timer code in general - by far the biggest issues are organization and cleanliness, not micro-issues.]

Micro-level optimizations like 64-bit vs. 32-bit variables is the very very last issue to consider - and this statement comes from me, an admitted performance extremist. If the HRT code ever wants to go upstream then it _must get much much cleaner_. Thomas has been doing great work in this area.

Quoted 2 lines

The rbtree is a high overhead tree. I suspect performance problems here. [...]

Wrong. rbtrees are used for some of the most performance-critical areas of the kernel: the VMA tree, the new ext3 reservations code [a performance feature], access keys.

Quoted 2 lines

[...] If it is the right answer here, then why not use it for normal timers? [...]

i'd like to remind you that the code is less than a week old.

But, i dont think we want to make the majority of normal timeouts tree-based. There are in essence two fundamental time related objects in the kernel: timeouts and timers. Timeouts never expire in 99% of the cases - so they must be optimized for the 'fast insert+remove' codepath. Timers on the other hand expire in 99% of the cases, so they must be optimized for the 'fast insert+expire' codepath.

Also, for timers, since they are often used by time-deterministic code, it does not hurt to have a fundamentally deterministic design. The current upstream timer(timeout) wheel is fundamentally non-deterministic with an increasing number of timers, due to the cascading design.

hence the separation of timers and timeouts. I think that this distinction might as well stay for the long run.

and we'be been through a number of design variants during the past couple of weeks in the -rt tree: we tried the original HRT patch, a combo method with partly split HR timers, and now a completely separated design. From what i've seen ktimers are the best solution so far.

Ingo

#17 lore raw
Quoted 9 lines · Ingo Molnar
Quoted 3 lines · George Anzinger
Quoted 1 line

the end-effect of ktimers is a much more deterministic HRT engine. The original merging of HR timers into the stock timer wheel was a Bad Idea (tm). We intend to push the ktimer subsystem upstream as well.

Well, having spent a bit of time looking at the code it appears that a lot of the ideas we looked at and discarded (see [email protected]) are in this. Shame it was all done with out reference or comment to that list, anyone on it or even the lkml.

this was done in the time frame of 2 days, and was posted ASAP - with you Cc:-ed for the specific purpose of getting feedback from you.

Possibly your involvement was that short. I rather doubt the code was written that quickly... I first found out about it on the 12th from the rt5 patch you posted about 2pm. Was there an earlier email?

Quoted 8 lines

given the very good performance results of ktimers, and the simplification effect on the original HRT code:

   36 files changed, 2016 insertions(+), 3094 deletions(-)

it was a no-brainer to put it into the -rt tree.

Quoted 8 lines
Quoted 5 lines

I DO agree that it _looks_ nicer, cleaner and so on. But there are a lot of things we rejected in here and they really do need, at least, a hard look.

A few of the top issues:

time in nanoseconds 64-bits, requires a divide to do much of anything with it. Divides are slow and should be avoided if possible. This is especially true in the embedded market.

Wrong. Divides are slow _on the micro micro level_. They make zero, nil, nada difference in reality. The cleanliness difference between having a flat nanosec scale and having some artificial 2x 32-bit structure are significant.

Cleanliness can easily be obtained with a CPP macro. I am not sure what the right answer is here. I have heard complaints on the 64-bit thing on lkml WRT the work John Stultz is doing. Also, it is real easy to abstract all the operations into CPP macros and choose 64 bit or timespec at compile time.

Quoted 2 lines

_By far_ the biggest problem of the HRT code is cleanliness (or the lack of it), and the resulting maintenance overhead, and the resulting gut reaction from upstream: "oh, yuck, bleh!". [Similar problems are true for the timer code in general - by far the biggest issues are organization and cleanliness, not micro-issues.]

I agree, the ktimers code looks clean. I am concerned that all the issues be addressed, but time will shake that out.

Quoted 2 lines

Micro-level optimizations like 64-bit vs. 32-bit variables is the very very last issue to consider - and this statement comes from me, an admitted performance extremist. If the HRT code ever wants to go upstream then it _must get much much cleaner_. Thomas has been doing great work in this area.

Agreed, I just wish we could see it a bit earlier...

Quoted 8 lines
Quoted 3 lines

The rbtree is a high overhead tree. I suspect performance problems here. [...]

Wrong. rbtrees are used for some of the most performance-critical areas of the kernel: the VMA tree, the new ext3 reservations code [a performance feature], access keys.

Quoted 6 lines
Quoted 1 line

[...] If it is the right answer here, then why not use it for normal timers? [...]

I'd like to remind you that the code is less than a week old.

But, i don't think we want to make the majority of normal timeouts tree-based. There are in essence two fundamental time related objects in the kernel: timeouts and timers. Timeouts never expire in 99% of the cases - so they must be optimized for the 'fast insert+remove' code path. Timers on the other hand expire in 99% of the cases, so they must be optimized for the 'fast insert+expire' code path.

Timers do, but I am not so sure of sleeps. Seems a lot of them are interrupted. Still, as I said in the note to Thomas, I don't have a real answer here. The hashed tree I used in HRT instead of the cascade, did eliminate the cascade. The hashed tree is faster for small N and, by changing the hash bucket size, we can easily make N<4k or so small. For larger N, the rbtree or some such seems right. As I said in the note to Thomas, I am NO fan of the cascade.

Quoted 2 lines

Also, for timers, since they are often used by time-deterministic code, it does not hurt to have a fundamentally deterministic design. The current upstream timer(timeout) wheel is fundamentally non-deterministic with an increasing number of timers, due to the cascading design.

Interested in a hashed list. It is rather easy to do and does NOT cascade. It is an O(N/M) list for inserts, same as what there now for deletes and nearly the same for the run timer code. It takes away all the cascade stuff so it will eliminate a all of that code. Oh, "M" is the number of buckets and can easily be configured at compile time.

Quoted 5 lines

hence the separation of timers and timeouts. I think that this distinction might as well stay for the long run.

and we'be been through a number of design variants during the past couple of weeks in the -rt tree: we tried the original HRT patch, a combo method with partly split HR timers, and now a completely separated design. From what I've seen ktimers are the best solution so far.

Signature · 2 lines
George Anzinger   [email protected]
HRT (High-res-timers):  http://sourceforge.net/projects/high-res-timers/
#18 lore raw
Quoted 3 lines · George Anzinger

Possibly your involvement was that short. I rather doubt the code was written that quickly... I first found out about it on the 12th from the rt5 patch you posted about 2pm. Was there an earlier email?

The first sketch of ktimers was written in less than a day. Some cleanups and the integration into -RT took not longer than 3-4 days.

tglx

#19 lore raw
In reply to Ingo Molnar

Hi,

Quoted 3 lines · Ingo Molnar

there are lots of small updates all across and there's a big feature as well in this release: a complete rework of the high-resolution timers framework, from Thomas Gleixner, called 'ktimers'.

Is that somewhere available as separate patch?

bye, Roman

#20 lore raw

2.6.14-rc2-rt2

In reply to Ingo Molnar

i have released the 2.6.14-rc2-rt2 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

the biggest change is the merge to the 2.6.14 tree, but there are also updates all across the board: lots of ktimer updates and fixes from Thomas Gleixner, an important PI fix from Steven Rostedt, and lots of other details.

Changes since 2.6.13-rt6:

- tons of ktimer updates: build fixes, SMP fixes and more (Thomas Gleixner)

- PI fix (Steven Rostedt)

- ntfs fix for bit-spin-locks (Eran Mann)

- updates/fixes in preparation of the ARM merge (Daniel Walker)

- latency histogram cleanups (Yi Yang)

- merge to 2.6.14-rc2

- sysfs/scsi interaction workaround to get aic7xxx to boot

to build a 2.6.14-rc2-rt2 tree, the following patches should be applied:

http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.tar.bz2
http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.14-rc2.bz2
http://redhat.com/~mingo/realtime-preempt/patch-2.6.14-rc2-rt2

Ingo

#21 lore raw

Re: 2.6.14-rc2-rt2

The attached 2 patches (against 2.6.14-rc2-rt3) seem to be required to compile dccp and nfnetlink (only compile-tested).

Quoted 4 lines · Ingo Molnar

i have released the 2.6.14-rc2-rt2 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

...

net/netfilter/nfnetlink_queue.c +1 -1
@@ -149,7 +149,7 @@
 	atomic_set(&inst->id_sequence, 0);
 	/* needs to be two, since we _put() after creation */
 	atomic_set(&inst->use, 2);
-	inst->lock = SPIN_LOCK_UNLOCKED;
+	inst->lock = SPIN_LOCK_UNLOCKED(inst->lock);
 	INIT_LIST_HEAD(&inst->queue_list);
 
 	if (!try_module_get(THIS_MODULE))
net/netfilter/nfnetlink_log.c +1 -1
@@ -152,7 +152,7 @@
 
 	memset(inst, 0, sizeof(*inst));
 	INIT_HLIST_NODE(&inst->hlist);
-	inst->lock = SPIN_LOCK_UNLOCKED;
+	inst->lock = SPIN_LOCK_UNLOCKED(inst->lock);
 	/* needs to be two, since we _put() after creation */
 	atomic_set(&inst->use, 2);
 
net/dccp/ipv4.c +2 -2
@@ -28,10 +28,10 @@
 #include "dccp.h"
 
 struct inet_hashinfo __cacheline_aligned dccp_hashinfo = {
-	.lhash_lock	= RW_LOCK_UNLOCKED,
+	.lhash_lock	= RW_LOCK_UNLOCKED(dccp_hashinfo.lhash_lock),
 	.lhash_users	= ATOMIC_INIT(0),
 	.lhash_wait = __WAIT_QUEUE_HEAD_INITIALIZER(dccp_hashinfo.lhash_wait),
-	.portalloc_lock	= SPIN_LOCK_UNLOCKED,
+	.portalloc_lock	= SPIN_LOCK_UNLOCKED(dccp_hashinfo.portalloc_lock),
 	.port_rover	= 1024 - 1,
 };
 
net/dccp/minisocks.c +1 -1
@@ -26,7 +26,7 @@
 struct inet_timewait_death_row dccp_death_row = {
 	.sysctl_max_tw_buckets = NR_FILE * 2,
 	.period		= DCCP_TIMEWAIT_LEN / INET_TWDR_TWKILL_SLOTS,
-	.death_lock	= SPIN_LOCK_UNLOCKED,
+	.death_lock	= SPIN_LOCK_UNLOCKED(dccp_death_row.death_lock),
 	.hashinfo	= &dccp_hashinfo,
 	.tw_timer	= TIMER_INITIALIZER(inet_twdr_hangman, 0,
 					    (unsigned long)&dccp_death_row),
author Applied
#22 lore raw

Re: 2.6.14-rc2-rt2

Quoted 2 lines · Eran Mann

The attached 2 patches (against 2.6.14-rc2-rt3) seem to be required to compile dccp and nfnetlink (only compile-tested).

thanks, applied.

Ingo

#23 lore raw

Re: 2.6.14-rc2-rt2

In reply to Ingo Molnar
Quoted 9 lines · Ingo Molnar

i have released the 2.6.14-rc2-rt2 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

the biggest change is the merge to the 2.6.14 tree, but there are also updates all across the board: lots of ktimer updates and fixes from Thomas Gleixner, an important PI fix from Steven Rostedt, and lots of other details.

can't build 2.6.13-rc2-rt4 (also happened on rt1, I think):

CHK include/linux/version.h
SYMLINK include/asm -> include/asm-i386

  SPLIT   include/linux/autoconf.h -> include/config/*
  CHK     usr/initramfs_list
  UPD     usr/initramfs_list
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h

{standard input}: Assembler messages:
{standard input}:164: Error: can't resolve .sched.text' {.sched.text section} - .Ltext0' {.text section}
{standard input}:165: Error: can't resolve .sched.text' {.sched.text section} - .Ltext0' {.text section}
make[1]: *** [arch/i386/kernel/semaphore.o] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [arch/i386/kernel] Error 2
make: *** Waiting for unfinished jobs....

Failing .config attached.
-- Fernando

# i386
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.14-rc2-rt1
# Sun Sep 25 19:46:04 2005
#
CONFIG_X86=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_GENERICTOD=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32

#
# General setup
#
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
CONFIG_SYSCTL=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_HOTPLUG=y
CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_MODULE_SIG=y
# CONFIG_MODULE_SIG_FORCE is not set
CONFIG_KMOD=y

#
# Processor type and features
#
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
CONFIG_M686=y
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
# CONFIG_HIGH_RES_TIMERS is not set
# CONFIG_SMP is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT_DESKTOP=y
# CONFIG_PREEMPT_RT is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_SOFTIRQS=y
CONFIG_PREEMPT_HARDIRQS=y
# CONFIG_SPINLOCK_BKL is not set
CONFIG_PREEMPT_BKL=y
# CONFIG_PREEMPT_RCU is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_ASM_SEMAPHORES=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
# CONFIG_X86_IOAPIC_FAST is not set
CONFIG_X86_TSC=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
# CONFIG_X86_MCE_P4THERMAL is not set
CONFIG_TOSHIBA=m
CONFIG_I8K=m
CONFIG_X86_REBOOTFIXUPS=y
CONFIG_MICROCODE=m
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m

#
# Firmware Drivers
#
CONFIG_EDD=m
CONFIG_DELL_RBU=m
CONFIG_DCDBAS=m
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_HIGHPTE=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_REGPARM=y
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_PHYSICAL_START=0x100000
# CONFIG_KEXEC is not set

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
# CONFIG_SOFTWARE_SUSPEND is not set

#
# ACPI (Advanced Configuration and Power Interface) Support #
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y CONFIG_ACPI_SLEEP_PROC_SLEEP=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_HOTKEY=m
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_ASUS=m
CONFIG_ACPI_IBM=m
CONFIG_ACPI_TOSHIBA=m CONFIG_ACPI_BLACKLIST_YEAR=2001
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m

#
# APM (Advanced Power Management) BIOS Support
#
CONFIG_APM=y
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
# CONFIG_APM_DO_ENABLE is not set
CONFIG_APM_CPU_IDLE=y
# CONFIG_APM_DISPLAY_BLANK is not set
CONFIG_APM_RTC_IS_GMT=y
# CONFIG_APM_ALLOW_INTS is not set
# CONFIG_APM_REAL_MODE_POWER_OFF is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set CONFIG_CPU_FREQ_STAT=m CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=m CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=m CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m

#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=m
CONFIG_X86_POWERNOW_K6=m
CONFIG_X86_POWERNOW_K7=y
CONFIG_X86_POWERNOW_K7_ACPI=y
CONFIG_X86_POWERNOW_K8=m
CONFIG_X86_POWERNOW_K8_ACPI=y
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_CENTRINO=y
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
# CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE is not set
CONFIG_X86_SPEEDSTEP_ICH=y
CONFIG_X86_SPEEDSTEP_SMI=m
CONFIG_X86_P4_CLOCKMOD=m
CONFIG_X86_CPUFREQ_NFORCE2=m
CONFIG_X86_LONGRUN=y
CONFIG_X86_LONGHAUL=y

#

# shared options
#
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
CONFIG_X86_SPEEDSTEP_LIB=y
# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA) #
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m
# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set # CONFIG_PCI_MSI is not set CONFIG_PCI_LEGACY_PROC=y
# CONFIG_PCI_DEBUG is not set CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set

#
# PCCARD (PCMCIA/CardBus) support
#
CONFIG_PCCARD=m
# CONFIG_PCMCIA_DEBUG is not set
CONFIG_PCMCIA=m
CONFIG_PCMCIA_LOAD_CIS=y
CONFIG_PCMCIA_IOCTL=y
CONFIG_CARDBUS=y

#
# PC-card bridges
#
CONFIG_YENTA=m
CONFIG_PD6729=m
CONFIG_I82092=m
CONFIG_I82365=m
CONFIG_TCIC=m
CONFIG_PCMCIA_PROBE=y
CONFIG_PCCARD_NONSTATIC=m

#
# PCI Hotplug Support
#
CONFIG_HOTPLUG_PCI=y
# CONFIG_HOTPLUG_PCI_FAKE is not set
CONFIG_HOTPLUG_PCI_COMPAQ=m
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
# CONFIG_HOTPLUG_PCI_IBM is not set
# CONFIG_HOTPLUG_PCI_ACPI is not set
# CONFIG_HOTPLUG_PCI_CPCI is not set
CONFIG_HOTPLUG_PCI_SHPC=m
CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE=y

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_MISC=y

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=y
CONFIG_NET_KEY=m
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_MULTIPATH=y
# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
CONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_TUNNEL=m
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_ADVANCED=y

#
# TCP congestion control
#
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
CONFIG_TCP_CONG_SCALABLE=m

#
# IP: Virtual Server Configuration
#
CONFIG_IP_VS=m
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m

#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IPV6=m
CONFIG_IPV6_PRIVACY=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_INET6_TUNNEL=m
CONFIG_IPV6_TUNNEL=m
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_BRIDGE_NETFILTER=y
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m

#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_CT_ACCT=y
CONFIG_IP_NF_CONNTRACK_MARK=y
# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
CONFIG_IP_NF_CONNTRACK_NETLINK=m
CONFIG_IP_NF_CT_PROTO_SCTP=m
CONFIG_IP_NF_FTP=m
CONFIG_IP_NF_IRC=m
CONFIG_IP_NF_NETBIOS_NS=m
CONFIG_IP_NF_TFTP=m
CONFIG_IP_NF_AMANDA=m
CONFIG_IP_NF_PPTP=m
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_MAC=m
CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
CONFIG_IP_NF_MATCH_LENGTH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_HELPER=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_CONNTRACK=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_MATCH_PHYSDEV=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_MATCH_REALM=m
CONFIG_IP_NF_MATCH_SCTP=m
CONFIG_IP_NF_MATCH_DCCP=m
CONFIG_IP_NF_MATCH_COMMENT=m
CONFIG_IP_NF_MATCH_CONNMARK=m
CONFIG_IP_NF_MATCH_CONNBYTES=m
CONFIG_IP_NF_MATCH_HASHLIMIT=m
CONFIG_IP_NF_MATCH_STRING=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_SAME=m
CONFIG_IP_NF_NAT_SNMP_BASIC=m
CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
CONFIG_IP_NF_NAT_TFTP=m
CONFIG_IP_NF_NAT_AMANDA=m
CONFIG_IP_NF_NAT_PPTP=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_DSCP=m
CONFIG_IP_NF_TARGET_MARK=m
CONFIG_IP_NF_TARGET_CLASSIFY=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_TARGET_CONNMARK=m
# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_TARGET_NOTRACK=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m

#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_LIMIT=m
CONFIG_IP6_NF_MATCH_MAC=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_MULTIPORT=m
CONFIG_IP6_NF_MATCH_OWNER=m
CONFIG_IP6_NF_MATCH_MARK=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_AHESP=m
CONFIG_IP6_NF_MATCH_LENGTH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_PHYSDEV=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_TARGET_MARK=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_RAW=m

#
# Bridge: Netfilter Configuration
#
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=m
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_LIMIT=m
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_EBT_ARPREPLY=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
CONFIG_BRIDGE_EBT_ULOG=m

#
# DCCP Configuration (EXPERIMENTAL)
#
CONFIG_IP_DCCP=m
CONFIG_INET_DCCP_DIAG=m

#
# DCCP CCIDs Configuration (EXPERIMENTAL)
#
CONFIG_IP_DCCP_CCID3=m
CONFIG_IP_DCCP_TFRC_LIB=m

#
# DCCP Kernel Hacking
#
# CONFIG_IP_DCCP_DEBUG is not set
# CONFIG_IP_DCCP_UNLOAD_HACK is not set

#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DBG_MSG is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
CONFIG_ATM=m
CONFIG_ATM_CLIP=m
# CONFIG_ATM_CLIP_NO_ICMP is not set
CONFIG_ATM_LANE=m
# CONFIG_ATM_MPOA is not set
CONFIG_ATM_BR2684=m
# CONFIG_ATM_BR2684_IPFILTER is not set
CONFIG_BRIDGE=m
CONFIG_VLAN_8021Q=m
# CONFIG_DECNET is not set
CONFIG_LLC=y
# CONFIG_LLC2 is not set
CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=y
CONFIG_LTPC=m
CONFIG_COPS=m
CONFIG_COPS_DAYNA=y
CONFIG_COPS_TANGENT=y
CONFIG_IPDDP=m
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP_DECAP=y
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
CONFIG_NET_DIVERT=y
# CONFIG_ECONET is not set
CONFIG_WAN_ROUTER=m
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CLK_JIFFIES=y
# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
# CONFIG_NET_SCH_CLK_CPU is not set
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_ATM=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=m
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_NET_CLS_IND=y
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_EMATCH_NBYTE=m
CONFIG_NET_EMATCH_U32=m
CONFIG_NET_EMATCH_META=m
CONFIG_NET_EMATCH_TEXT=m
CONFIG_NET_CLS_ACT=y
# CONFIG_NET_ACT_POLICE is not set
CONFIG_NET_ACT_GACT=m
# CONFIG_GACT_PROB is not set
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_IPT=m
CONFIG_NET_ACT_PEDIT=m
CONFIG_NET_ACT_SIMP=m

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
CONFIG_IRDA=m

#
# IrDA protocols
#
CONFIG_IRLAN=m
CONFIG_IRNET=m
CONFIG_IRCOMM=m
# CONFIG_IRDA_ULTRA is not set

#
# IrDA options
#
CONFIG_IRDA_CACHE_LAST_LSAP=y
CONFIG_IRDA_FAST_RR=y
# CONFIG_IRDA_DEBUG is not set

#
# Infrared-port device drivers
#

#
# SIR device drivers
#
CONFIG_IRTTY_SIR=m

#
# Dongle support
#
CONFIG_DONGLE=y
CONFIG_ESI_DONGLE=m
CONFIG_ACTISYS_DONGLE=m
CONFIG_TEKRAM_DONGLE=m
CONFIG_LITELINK_DONGLE=m
CONFIG_MA600_DONGLE=m
CONFIG_GIRBIL_DONGLE=m
CONFIG_MCP2120_DONGLE=m
CONFIG_OLD_BELKIN_DONGLE=m
CONFIG_ACT200L_DONGLE=m

#
# Old SIR device drivers
#
CONFIG_IRPORT_SIR=m

#
# Old Serial dongle support
#
# CONFIG_DONGLE_OLD is not set

#
# FIR device drivers
#
CONFIG_USB_IRDA=m
CONFIG_SIGMATEL_FIR=m
CONFIG_NSC_FIR=m
# CONFIG_WINBOND_FIR is not set
# CONFIG_TOSHIBA_FIR is not set
# CONFIG_SMC_IRCC_FIR is not set
# CONFIG_ALI_FIR is not set
# CONFIG_VLSI_FIR is not set
# CONFIG_VIA_FIR is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_CMTP=m
CONFIG_BT_HIDP=m

#
# Bluetooth device drivers
#
CONFIG_BT_HCIUSB=m
CONFIG_BT_HCIUSB_SCO=y
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
CONFIG_BT_HCIUART_BCSP_TXCRC=y
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIDTL1=m
CONFIG_BT_HCIBT3C=m
CONFIG_BT_HCIBLUECARD=m
CONFIG_BT_HCIBTUART=m
CONFIG_BT_HCIVHCI=m
CONFIG_IEEE80211=m
# CONFIG_IEEE80211_DEBUG is not set
CONFIG_IEEE80211_CRYPT_WEP=m
CONFIG_IEEE80211_CRYPT_CCMP=m
CONFIG_IEEE80211_CRYPT_TKIP=m

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set

#
# Connector - unified userspace <-> kernelspace linker #
CONFIG_CONNECTOR=m

#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=m
# CONFIG_MTD_DEBUG is not set
CONFIG_MTD_CONCAT=m
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_REDBOOT_PARTS=m
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
CONFIG_MTD_CMDLINE_PARTS=y

#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
CONFIG_MTD_BLOCK=m
CONFIG_MTD_BLOCK_RO=m
CONFIG_FTL=m
CONFIG_NFTL=m
CONFIG_NFTL_RW=y
CONFIG_INFTL=m

#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=m
CONFIG_MTD_JEDECPROBE=m
CONFIG_MTD_GEN_PROBE=m
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
CONFIG_MTD_CFI_INTELEXT=m
CONFIG_MTD_CFI_AMDSTD=m
CONFIG_MTD_CFI_AMDSTD_RETRY=3
CONFIG_MTD_CFI_STAA=m
CONFIG_MTD_CFI_UTIL=m
CONFIG_MTD_RAM=m
CONFIG_MTD_ROM=m
CONFIG_MTD_ABSENT=m

#
# Mapping drivers for chip access
#
CONFIG_MTD_COMPLEX_MAPPINGS=y
# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_PNC2000 is not set
CONFIG_MTD_SC520CDP=m
CONFIG_MTD_NETSC520=m
CONFIG_MTD_TS5500=m
CONFIG_MTD_SBC_GXX=m
CONFIG_MTD_AMD76XROM=m
# CONFIG_MTD_ICHXROM is not set
CONFIG_MTD_SCB2_FLASH=m
# CONFIG_MTD_NETtel is not set
# CONFIG_MTD_DILNETPC is not set
CONFIG_MTD_L440GX=m
CONFIG_MTD_PCI=m
CONFIG_MTD_PLATRAM=m

#
# Self-contained MTD device drivers
#
CONFIG_MTD_PMC551=m
# CONFIG_MTD_PMC551_BUGFIX is not set
# CONFIG_MTD_PMC551_DEBUG is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
CONFIG_MTD_MTDRAM=m
CONFIG_MTDRAM_TOTAL_SIZE=4096
CONFIG_MTDRAM_ERASE_SIZE=128
# CONFIG_MTD_BLKMTD is not set
CONFIG_MTD_BLOCK2MTD=m

#
# Disk-On-Chip Device Drivers
#
CONFIG_MTD_DOC2000=m
# CONFIG_MTD_DOC2001 is not set
CONFIG_MTD_DOC2001PLUS=m
CONFIG_MTD_DOCPROBE=m
CONFIG_MTD_DOCECC=m
# CONFIG_MTD_DOCPROBE_ADVANCED is not set
CONFIG_MTD_DOCPROBE_ADDRESS=0

#
# NAND Flash Device Drivers
#
CONFIG_MTD_NAND=m
# CONFIG_MTD_NAND_VERIFY_WRITE is not set
CONFIG_MTD_NAND_IDS=m
# CONFIG_MTD_NAND_DISKONCHIP is not set
CONFIG_MTD_NAND_NANDSIM=y

#
# Parallel port support
#
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_SERIAL=m
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
CONFIG_PARPORT_PC_PCMCIA=m
CONFIG_PARPORT_NOT_PC=y
# CONFIG_PARPORT_GSC is not set
CONFIG_PARPORT_1284=y

#
# Plug and Play support
#
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set

#
# Protocols
#
CONFIG_ISAPNP=y
# CONFIG_PNPBIOS is not set
CONFIG_PNPACPI=y

#
# Block devices
#
CONFIG_BLK_DEV_FD=m
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
CONFIG_BLK_CPQ_DA=m
CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_CISS_SCSI_TAPE=y
CONFIG_BLK_DEV_DAC960=m
CONFIG_BLK_DEV_UMEM=m
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_SX8=m
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_INITRD=y
CONFIG_LBD=y
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_ATA_OVER_ETH=m

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives #
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECS=m
CONFIG_BLK_DEV_IDECD=y
CONFIG_BLK_DEV_IDETAPE=m
CONFIG_BLK_DEV_IDEFLOPPY=y
CONFIG_BLK_DEV_IDESCSI=m
# CONFIG_IDE_TASK_IOCTL is not set

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_CMD640 is not set
CONFIG_BLK_DEV_IDEPNP=y
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
CONFIG_BLK_DEV_RZ1000=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
CONFIG_BLK_DEV_AEC62XX=y
CONFIG_BLK_DEV_ALI15X3=y
# CONFIG_WDC_ALI15X3 is not set
CONFIG_BLK_DEV_AMD74XX=y
CONFIG_BLK_DEV_ATIIXP=y
CONFIG_BLK_DEV_CMD64X=y
CONFIG_BLK_DEV_TRIFLEX=y
CONFIG_BLK_DEV_CY82C693=y
CONFIG_BLK_DEV_CS5520=y
CONFIG_BLK_DEV_CS5530=y
CONFIG_BLK_DEV_HPT34X=y
# CONFIG_HPT34X_AUTODMA is not set
CONFIG_BLK_DEV_HPT366=y
# CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y
CONFIG_BLK_DEV_IT821X=m
# CONFIG_BLK_DEV_NS87415 is not set
CONFIG_BLK_DEV_PDC202XX_OLD=y
# CONFIG_PDC202XX_BURST is not set
CONFIG_BLK_DEV_PDC202XX_NEW=y
CONFIG_PDC202XX_FORCE=y
CONFIG_BLK_DEV_SVWKS=y
CONFIG_BLK_DEV_SIIMAGE=y
CONFIG_BLK_DEV_SIS5513=y
CONFIG_BLK_DEV_SLC90E66=y
# CONFIG_BLK_DEV_TRM290 is not set
CONFIG_BLK_DEV_VIA82CXXX=y
# CONFIG_IDE_ARM is not set
# CONFIG_IDE_CHIPSETS is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=m
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=m
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=m

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs #
# CONFIG_SCSI_MULTI_LUN is not set CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

#
# SCSI Transport Attributes
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
CONFIG_SCSI_ISCSI_ATTRS=m
CONFIG_SCSI_SAS_ATTRS=m

#
# SCSI low-level drivers
#
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_SCSI_3W_9XXX=m
# CONFIG_SCSI_7000FASST is not set
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AHA152X=m
CONFIG_SCSI_AHA1542=m
CONFIG_SCSI_AACRAID=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
CONFIG_AIC7XXX_RESET_DELAY_MS=15000
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_AIC7XXX_DEBUG_MASK=0
# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_AIC79XX=m
CONFIG_AIC79XX_CMDS_PER_DEVICE=4
CONFIG_AIC79XX_RESET_DELAY_MS=15000
# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
# CONFIG_AIC79XX_DEBUG_ENABLE is not set
CONFIG_AIC79XX_DEBUG_MASK=0
# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
# CONFIG_SCSI_DPT_I2O is not set
CONFIG_SCSI_IN2000=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
CONFIG_SCSI_SATA=m
CONFIG_SCSI_SATA_AHCI=m
CONFIG_SCSI_SATA_SVW=m
CONFIG_SCSI_ATA_PIIX=m
CONFIG_SCSI_SATA_MV=m
CONFIG_SCSI_SATA_NV=m
CONFIG_SCSI_SATA_PROMISE=m
CONFIG_SCSI_SATA_QSTOR=m
CONFIG_SCSI_SATA_SX4=m
CONFIG_SCSI_SATA_SIL=m
CONFIG_SCSI_SATA_SIS=m
CONFIG_SCSI_SATA_ULI=m
CONFIG_SCSI_SATA_VIA=m
CONFIG_SCSI_SATA_VITESSE=m
CONFIG_SCSI_BUSLOGIC=m
# CONFIG_SCSI_OMIT_FLASHPOINT is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
CONFIG_SCSI_FUTURE_DOMAIN=m
CONFIG_SCSI_GDTH=m
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INITIO=m
CONFIG_SCSI_INIA100=m
CONFIG_SCSI_PPA=m
CONFIG_SCSI_IMM=m
# CONFIG_SCSI_IZIP_EPP16 is not set
# CONFIG_SCSI_IZIP_SLOW_CTR is not set
# CONFIG_SCSI_NCR53C406A is not set
CONFIG_SCSI_SYM53C8XX_2=m
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PSI240I is not set
CONFIG_SCSI_QLOGIC_FAS=m
# CONFIG_SCSI_QLOGIC_FC is not set
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLOGIC_1280_1040=y
CONFIG_SCSI_QLA2XXX=m
CONFIG_SCSI_QLA21XX=m
CONFIG_SCSI_QLA22XX=m
CONFIG_SCSI_QLA2300=m
CONFIG_SCSI_QLA2322=m
CONFIG_SCSI_QLA6312=m
CONFIG_SCSI_QLA24XX=m
CONFIG_SCSI_LPFC=m
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_DC395x is not set
CONFIG_SCSI_DC390T=m
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set

#
# PCMCIA SCSI adapter support
#
CONFIG_PCMCIA_AHA152X=m
CONFIG_PCMCIA_FDOMAIN=m
CONFIG_PCMCIA_NINJA_SCSI=m
CONFIG_PCMCIA_QLOGIC=m
CONFIG_PCMCIA_SYM53C500=m

#
# Old CD-ROM drivers (not SCSI, not IDE)
#
# CONFIG_CD_NO_IDESCSI is not set

#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID5=m
CONFIG_MD_RAID6=m
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_BLK_DEV_DM=m
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_EMC=m

#
# Fusion MPT device support
#
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=m
CONFIG_FUSION_LAN=m

#
# IEEE 1394 (FireWire) support
#
CONFIG_IEEE1394=m

#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
CONFIG_IEEE1394_OUI_DB=y
# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
CONFIG_IEEE1394_EXPORT_FULL_API=y

#
# Device Drivers
#
# CONFIG_IEEE1394_PCILYNX is not set
CONFIG_IEEE1394_OHCI1394=m

#
# Protocol Drivers
#
CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_SBP2=m
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
# CONFIG_IEEE1394_ETH1394 is not set
CONFIG_IEEE1394_DV1394=m
CONFIG_IEEE1394_RAWIO=m
CONFIG_IEEE1394_CMP=m
CONFIG_IEEE1394_AMDTP=m

#
# I2O device support
#
CONFIG_I2O=m
CONFIG_I2O_EXT_ADAPTEC=y
CONFIG_I2O_CONFIG=m
CONFIG_I2O_CONFIG_OLD_IOCTL=y
CONFIG_I2O_BUS=m
CONFIG_I2O_BLOCK=m
CONFIG_I2O_SCSI=m
CONFIG_I2O_PROC=m

#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_DUMMY=m
CONFIG_BONDING=m
CONFIG_EQUALIZER=m
CONFIG_TUN=m
CONFIG_NET_SB1000=m

#
# ARCnet devices
#
# CONFIG_ARCNET is not set

#
# PHY device support
#
CONFIG_PHYLIB=m
CONFIG_PHYCONTROL=y

#
# MII PHY device drivers
#
CONFIG_MARVELL_PHY=m
CONFIG_DAVICOM_PHY=m
CONFIG_QSEMI_PHY=m
CONFIG_LXT_PHY=m
CONFIG_CICADA_PHY=m

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
CONFIG_HAPPYMEAL=m
CONFIG_SUNGEM=m
CONFIG_NET_VENDOR_3COM=y
CONFIG_EL1=m
CONFIG_EL2=m
CONFIG_ELPLUS=m
CONFIG_EL16=m
CONFIG_EL3=m
CONFIG_3C515=m
CONFIG_VORTEX=m
CONFIG_TYPHOON=m
CONFIG_LANCE=m
CONFIG_NET_VENDOR_SMC=y
CONFIG_WD80x3=m
CONFIG_ULTRA=m
CONFIG_SMC9194=m
CONFIG_NET_VENDOR_RACAL=y
# CONFIG_NI5010 is not set
CONFIG_NI52=m
CONFIG_NI65=m

#
# Tulip family network device support
#
CONFIG_NET_TULIP=y
CONFIG_DE2104X=m
CONFIG_TULIP=m
# CONFIG_TULIP_MWI is not set
CONFIG_TULIP_MMIO=y
# CONFIG_TULIP_NAPI is not set
CONFIG_DE4X5=m
CONFIG_WINBOND_840=m
CONFIG_DM9102=m
CONFIG_ULI526X=m
CONFIG_PCMCIA_XIRCOM=m
CONFIG_PCMCIA_XIRTULIP=m
# CONFIG_AT1700 is not set
CONFIG_DEPCA=m
CONFIG_HP100=m
CONFIG_NET_ISA=y
CONFIG_E2100=m
CONFIG_EWRK3=m
CONFIG_EEXPRESS=m
CONFIG_EEXPRESS_PRO=m
CONFIG_HPLAN_PLUS=m
CONFIG_HPLAN=m
CONFIG_LP486E=m
CONFIG_ETH16I=m
CONFIG_NE2000=m
CONFIG_ZNET=m
CONFIG_SEEQ8005=m
CONFIG_NET_PCI=y
CONFIG_PCNET32=m
CONFIG_AMD8111_ETH=m
CONFIG_AMD8111E_NAPI=y
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_ADAPTEC_STARFIRE_NAPI=y
CONFIG_AC3200=m
CONFIG_APRICOT=m
CONFIG_B44=m
CONFIG_FORCEDETH=m
CONFIG_CS89x0=m
CONFIG_DGRS=m
CONFIG_EEPRO100=m
CONFIG_E100=m
CONFIG_FEALNX=m
CONFIG_NATSEMI=m
CONFIG_NE2K_PCI=m
CONFIG_8139CP=m
CONFIG_8139TOO=m
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_SIS900=m
CONFIG_EPIC100=m
CONFIG_SUNDANCE=m
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_TLAN=m
CONFIG_VIA_RHINE=m
CONFIG_VIA_RHINE_MMIO=y
CONFIG_NET_POCKET=y
CONFIG_ATP=m
CONFIG_DE600=m
CONFIG_DE620=m

#
# Ethernet (1000 Mbit)
#
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
CONFIG_DL2K=m
CONFIG_E1000=m
CONFIG_E1000_NAPI=y
CONFIG_NS83820=m
CONFIG_HAMACHI=m
CONFIG_YELLOWFIN=m
CONFIG_R8169=m
CONFIG_R8169_NAPI=y
CONFIG_R8169_VLAN=y
CONFIG_SIS190=m
CONFIG_SKGE=m
CONFIG_SK98LIN=m
CONFIG_VIA_VELOCITY=m
CONFIG_TIGON3=m
CONFIG_BNX2=m

#
# Ethernet (10000 Mbit)
#
CONFIG_CHELSIO_T1=m
CONFIG_IXGB=m
CONFIG_IXGB_NAPI=y
CONFIG_S2IO=m
CONFIG_S2IO_NAPI=y
# CONFIG_2BUFF_MODE is not set

#
# Token Ring devices
#
CONFIG_TR=y
CONFIG_IBMTR=m
CONFIG_IBMOL=m
CONFIG_IBMLS=m
CONFIG_3C359=m
CONFIG_TMS380TR=m
CONFIG_TMSPCI=m
CONFIG_SKISA=m
CONFIG_PROTEON=m
CONFIG_ABYSS=m
CONFIG_SMCTR=m

#
# Wireless LAN (non-hamradio)
#
CONFIG_NET_RADIO=y

#
# Obsolete Wireless cards support (pre-802.11)
#
# CONFIG_STRIP is not set
# CONFIG_ARLAN is not set
CONFIG_WAVELAN=m
CONFIG_PCMCIA_WAVELAN=m
CONFIG_PCMCIA_NETWAVE=m

#
# Wireless 802.11 Frequency Hopping cards support
#
CONFIG_PCMCIA_RAYCS=m

#
# Wireless 802.11b ISA/PCI cards support
#
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y
# CONFIG_IPW_DEBUG is not set
CONFIG_IPW2200=m
CONFIG_AIRO=m
CONFIG_HERMES=m
CONFIG_PLX_HERMES=m
CONFIG_TMD_HERMES=m
CONFIG_NORTEL_HERMES=m
CONFIG_PCI_HERMES=m
CONFIG_ATMEL=m
CONFIG_PCI_ATMEL=m

#
# Wireless 802.11b Pcmcia/Cardbus cards support
#
CONFIG_PCMCIA_HERMES=m
CONFIG_PCMCIA_SPECTRUM=m
CONFIG_AIRO_CS=m
CONFIG_PCMCIA_ATMEL=m
CONFIG_PCMCIA_WL3501=m

#
# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support #
CONFIG_PRISM54=m
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_PLX=m
CONFIG_HOSTAP_PCI=m
CONFIG_HOSTAP_CS=m
CONFIG_NET_WIRELESS=y

#
# PCMCIA network device support
#
CONFIG_NET_PCMCIA=y
CONFIG_PCMCIA_3C589=m
CONFIG_PCMCIA_3C574=m
CONFIG_PCMCIA_FMVJ18X=m
CONFIG_PCMCIA_PCNET=m
CONFIG_PCMCIA_NMCLAN=m
CONFIG_PCMCIA_SMC91C92=m
CONFIG_PCMCIA_XIRC2PS=m
CONFIG_PCMCIA_AXNET=m
CONFIG_PCMCIA_IBMTR=m

#
# Wan interfaces
#
# CONFIG_WAN is not set

#
# ATM drivers
#
CONFIG_ATM_TCP=m
CONFIG_ATM_LANAI=m
CONFIG_ATM_ENI=m
# CONFIG_ATM_ENI_DEBUG is not set
# CONFIG_ATM_ENI_TUNE_BURST is not set
CONFIG_ATM_FIRESTREAM=m
# CONFIG_ATM_ZATM is not set
CONFIG_ATM_NICSTAR=m
# CONFIG_ATM_NICSTAR_USE_SUNI is not set
# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
CONFIG_ATM_IDT77252=m
# CONFIG_ATM_IDT77252_DEBUG is not set
# CONFIG_ATM_IDT77252_RCV_ALL is not set
CONFIG_ATM_IDT77252_USE_SUNI=y
CONFIG_ATM_AMBASSADOR=m
# CONFIG_ATM_AMBASSADOR_DEBUG is not set
CONFIG_ATM_HORIZON=m
# CONFIG_ATM_HORIZON_DEBUG is not set
# CONFIG_ATM_IA is not set
CONFIG_ATM_FORE200E_MAYBE=m
# CONFIG_ATM_FORE200E_PCA is not set
CONFIG_ATM_HE=m
# CONFIG_ATM_HE_USE_SUNI is not set
CONFIG_FDDI=y
# CONFIG_DEFXX is not set
CONFIG_SKFP=m
# CONFIG_HIPPI is not set
CONFIG_PLIP=m
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
# CONFIG_PPP_BSDCOMP is not set
CONFIG_PPPOE=m
CONFIG_PPPOATM=m
CONFIG_SLIP=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
# CONFIG_SLIP_MODE_SLIP6 is not set
CONFIG_NET_FC=y
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=m
CONFIG_NETPOLL=y
CONFIG_NETPOLL_RX=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y

#
# ISDN subsystem
#
CONFIG_ISDN=m

#
# Old ISDN4Linux
#
CONFIG_ISDN_I4L=m
CONFIG_ISDN_PPP=y
CONFIG_ISDN_PPP_VJ=y
CONFIG_ISDN_MPP=y
CONFIG_IPPP_FILTER=y
# CONFIG_ISDN_PPP_BSDCOMP is not set
CONFIG_ISDN_AUDIO=y
CONFIG_ISDN_TTY_FAX=y

#
# ISDN feature submodules
#
CONFIG_ISDN_DRV_LOOP=m
CONFIG_ISDN_DIVERSION=m

#
# ISDN4Linux hardware drivers
#

#
# Passive cards
#
CONFIG_ISDN_DRV_HISAX=m

#
# D-channel protocol features
#
CONFIG_HISAX_EURO=y
CONFIG_DE_AOC=y
CONFIG_HISAX_NO_SENDCOMPLETE=y
CONFIG_HISAX_NO_LLC=y
CONFIG_HISAX_NO_KEYPAD=y
CONFIG_HISAX_1TR6=y
CONFIG_HISAX_NI1=y
CONFIG_HISAX_MAX_CARDS=8

#
# HiSax supported cards
#
CONFIG_HISAX_16_0=y
CONFIG_HISAX_16_3=y
CONFIG_HISAX_TELESPCI=y
CONFIG_HISAX_S0BOX=y
CONFIG_HISAX_AVM_A1=y
CONFIG_HISAX_FRITZPCI=y
CONFIG_HISAX_AVM_A1_PCMCIA=y
CONFIG_HISAX_ELSA=y
CONFIG_HISAX_IX1MICROR2=y
CONFIG_HISAX_DIEHLDIVA=y
CONFIG_HISAX_ASUSCOM=y
CONFIG_HISAX_TELEINT=y
CONFIG_HISAX_HFCS=y
CONFIG_HISAX_SEDLBAUER=y
CONFIG_HISAX_SPORTSTER=y
CONFIG_HISAX_MIC=y
CONFIG_HISAX_NETJET=y
CONFIG_HISAX_NETJET_U=y
CONFIG_HISAX_NICCY=y
CONFIG_HISAX_ISURF=y
CONFIG_HISAX_HSTSAPHIR=y
CONFIG_HISAX_BKM_A4T=y
CONFIG_HISAX_SCT_QUADRO=y
CONFIG_HISAX_GAZEL=y
CONFIG_HISAX_HFC_PCI=y
CONFIG_HISAX_W6692=y
CONFIG_HISAX_HFC_SX=y
CONFIG_HISAX_ENTERNOW_PCI=y
# CONFIG_HISAX_DEBUG is not set

#
# HiSax PCMCIA card service modules
#
CONFIG_HISAX_SEDLBAUER_CS=m
CONFIG_HISAX_ELSA_CS=m
CONFIG_HISAX_AVM_A1_CS=m
CONFIG_HISAX_TELES_CS=m

#
# HiSax sub driver modules
#
CONFIG_HISAX_ST5481=m
CONFIG_HISAX_HFCUSB=m
CONFIG_HISAX_HFC4S8S=m
CONFIG_HISAX_FRITZ_PCIPNP=m
CONFIG_HISAX_HDLC=y

#
# Active cards
#
CONFIG_ISDN_DRV_ICN=m
CONFIG_ISDN_DRV_PCBIT=m
CONFIG_ISDN_DRV_SC=m
CONFIG_ISDN_DRV_ACT2000=m
CONFIG_HYSDN=m
CONFIG_HYSDN_CAPI=y

#
# CAPI subsystem
#
CONFIG_ISDN_CAPI=m
CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
CONFIG_ISDN_CAPI_MIDDLEWARE=y
CONFIG_ISDN_CAPI_CAPI20=m
CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
CONFIG_ISDN_CAPI_CAPIFS=m
CONFIG_ISDN_CAPI_CAPIDRV=m

#
# CAPI hardware drivers
#

#
# Active AVM cards
#
CONFIG_CAPI_AVM=y
CONFIG_ISDN_DRV_AVMB1_B1ISA=m
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
CONFIG_ISDN_DRV_AVMB1_T1ISA=m
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
CONFIG_ISDN_DRV_AVMB1_C4=m

#
# Active Eicon DIVA Server cards
#
CONFIG_CAPI_EICON=y
CONFIG_ISDN_DIVAS=m
CONFIG_ISDN_DIVAS_BRIPCI=y
CONFIG_ISDN_DIVAS_PRIPCI=y
CONFIG_ISDN_DIVAS_DIVACAPI=m
CONFIG_ISDN_DIVAS_USERIDI=m
CONFIG_ISDN_DIVAS_MAINT=m

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_JOYDEV=m
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_INPORT=m
CONFIG_MOUSE_ATIXL=y
CONFIG_MOUSE_LOGIBM=m
CONFIG_MOUSE_PC110PAD=m
CONFIG_MOUSE_VSXXXAA=m
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=m
CONFIG_JOYSTICK_A3D=m
CONFIG_JOYSTICK_ADI=m
CONFIG_JOYSTICK_COBRA=m
CONFIG_JOYSTICK_GF2K=m
CONFIG_JOYSTICK_GRIP=m
CONFIG_JOYSTICK_GRIP_MP=m
CONFIG_JOYSTICK_GUILLEMOT=m
CONFIG_JOYSTICK_INTERACT=m
CONFIG_JOYSTICK_SIDEWINDER=m
CONFIG_JOYSTICK_TMDC=m
CONFIG_JOYSTICK_IFORCE=m
CONFIG_JOYSTICK_IFORCE_USB=y
CONFIG_JOYSTICK_IFORCE_232=y
CONFIG_JOYSTICK_WARRIOR=m
CONFIG_JOYSTICK_MAGELLAN=m
CONFIG_JOYSTICK_SPACEORB=m
CONFIG_JOYSTICK_SPACEBALL=m
CONFIG_JOYSTICK_STINGER=m
CONFIG_JOYSTICK_TWIDJOY=m
CONFIG_JOYSTICK_DB9=m
CONFIG_JOYSTICK_GAMECON=m
CONFIG_JOYSTICK_TURBOGRAFX=m
CONFIG_JOYSTICK_JOYDUMP=m
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_GUNZE=m
CONFIG_TOUCHSCREEN_ELO=m
CONFIG_TOUCHSCREEN_MTOUCH=m
CONFIG_TOUCHSCREEN_MK712=m
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=m
CONFIG_INPUT_UINPUT=m

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=m
CONFIG_GAMEPORT=m
CONFIG_GAMEPORT_NS558=m
CONFIG_GAMEPORT_L4=m
CONFIG_GAMEPORT_EMU10K1=m
CONFIG_GAMEPORT_FM801=m

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_COMPUTONE is not set
CONFIG_ROCKETPORT=m
# CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_ESPSERIAL is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not set
CONFIG_SYNCLINK=m
CONFIG_SYNCLINKMP=m
CONFIG_N_HDLC=m
# CONFIG_RISCOM8 is not set
# CONFIG_SPECIALIX is not set
# CONFIG_SX is not set
# CONFIG_RIO is not set
CONFIG_STALDRV=y
# CONFIG_STALLION is not set
# CONFIG_ISTALLION is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_CS=m
# CONFIG_SERIAL_8250_ACPI is not set
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
# CONFIG_SERIAL_8250_MANY_PORTS is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_JSM=m
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_PRINTER=m
CONFIG_LP_CONSOLE=y
CONFIG_PPDEV=m
CONFIG_TIPAR=m

#
# IPMI
#
CONFIG_IPMI_HANDLER=m
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_POWEROFF=m

#
# Watchdog Cards
#
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set

#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
CONFIG_SC520_WDT=m
CONFIG_EUROTECH_WDT=m
CONFIG_IB700_WDT=m
CONFIG_IBMASR=m
CONFIG_WAFER_WDT=m
CONFIG_I6300ESB_WDT=m
CONFIG_I8XX_TCO=m
CONFIG_SC1200_WDT=m
# CONFIG_60XX_WDT is not set
CONFIG_SBC8360_WDT=m
CONFIG_CPU5_WDT=m
CONFIG_W83627HF_WDT=m
CONFIG_W83877F_WDT=m
CONFIG_W83977F_WDT=m
CONFIG_MACHZ_WDT=m

#
# ISA-based Watchdog Cards
#
CONFIG_PCWATCHDOG=m
# CONFIG_MIXCOMWD is not set
CONFIG_WDT=m
# CONFIG_WDT_501 is not set

#
# PCI-based Watchdog Cards
#
CONFIG_PCIPCWATCHDOG=m
CONFIG_WDTPCI=m
CONFIG_WDT_501_PCI=y

#
# USB-based Watchdog Cards
#
CONFIG_USBPCWATCHDOG=m
CONFIG_HW_RANDOM=m
CONFIG_NVRAM=m
CONFIG_RTC=y
CONFIG_RTC_HISTOGRAM=m
CONFIG_BLOCKER=m
# CONFIG_LPPTEST is not set
CONFIG_DTLK=m
CONFIG_R3964=m
# CONFIG_APPLICOM is not set
CONFIG_SONYPI=m

#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
CONFIG_AGP=y
CONFIG_AGP_ALI=y
CONFIG_AGP_ATI=y
CONFIG_AGP_AMD=y
CONFIG_AGP_AMD64=y
CONFIG_AGP_INTEL=y
CONFIG_AGP_NVIDIA=y
CONFIG_AGP_SIS=y
CONFIG_AGP_SWORKS=y
CONFIG_AGP_VIA=y
CONFIG_AGP_EFFICEON=y
CONFIG_DRM=y
CONFIG_DRM_TDFX=m
CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
CONFIG_DRM_I810=m
CONFIG_DRM_I830=m
CONFIG_DRM_I915=m
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m

#
# PCMCIA character devices
#
CONFIG_SYNCLINK_CS=m
CONFIG_MWAVE=m
# CONFIG_RAW_DRIVER is not set
# CONFIG_HPET is not set
CONFIG_HANGCHECK_TIMER=m

#
# TPM devices
#
CONFIG_TCG_TPM=m
CONFIG_TCG_NSC=m
CONFIG_TCG_ATMEL=m
CONFIG_TCG_INFINEON=m

#
# I2C support
#
CONFIG_I2C=m
CONFIG_I2C_CHARDEV=m

#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_ALGOPCA=m

#
# I2C Hardware Bus support
#
CONFIG_I2C_ALI1535=m
CONFIG_I2C_ALI1563=m
CONFIG_I2C_ALI15X3=m
CONFIG_I2C_AMD756=m
CONFIG_I2C_AMD756_S4882=m
CONFIG_I2C_AMD8111=m
# CONFIG_I2C_ELEKTOR is not set
CONFIG_I2C_I801=m
CONFIG_I2C_I810=m
CONFIG_I2C_PIIX4=m
CONFIG_I2C_ISA=m
CONFIG_I2C_NFORCE2=m
# CONFIG_I2C_PARPORT is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
CONFIG_I2C_PROSAVAGE=m
CONFIG_I2C_SAVAGE4=m
# CONFIG_SCx200_ACB is not set
CONFIG_I2C_SIS5595=m
CONFIG_I2C_SIS630=m
CONFIG_I2C_SIS96X=m
CONFIG_I2C_STUB=m
CONFIG_I2C_VIA=m
CONFIG_I2C_VIAPRO=m
CONFIG_I2C_VOODOO3=m
CONFIG_I2C_PCA_ISA=m

#
# Miscellaneous I2C Chip support
#
CONFIG_SENSORS_DS1337=m
CONFIG_SENSORS_DS1374=m
CONFIG_SENSORS_EEPROM=m
CONFIG_SENSORS_PCF8574=m
CONFIG_SENSORS_PCA9539=m
CONFIG_SENSORS_PCF8591=m
CONFIG_SENSORS_RTC8564=m
CONFIG_SENSORS_MAX6875=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set

#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set

#
# Hardware Monitoring support
#
CONFIG_HWMON=m
CONFIG_HWMON_VID=m
CONFIG_SENSORS_ADM1021=m
CONFIG_SENSORS_ADM1025=m
CONFIG_SENSORS_ADM1026=m
CONFIG_SENSORS_ADM1031=m
CONFIG_SENSORS_ADM9240=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_FSCHER=m
CONFIG_SENSORS_FSCPOS=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL520SM=m
CONFIG_SENSORS_IT87=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM77=m
CONFIG_SENSORS_LM78=m
CONFIG_SENSORS_LM80=m
CONFIG_SENSORS_LM83=m
CONFIG_SENSORS_LM85=m
CONFIG_SENSORS_LM87=m
CONFIG_SENSORS_LM90=m
CONFIG_SENSORS_LM92=m
CONFIG_SENSORS_MAX1619=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_VIA686A=m
CONFIG_SENSORS_W83781D=m
CONFIG_SENSORS_W83792D=m
CONFIG_SENSORS_W83L785TS=m
CONFIG_SENSORS_W83627HF=m
CONFIG_SENSORS_W83627EHF=m
CONFIG_SENSORS_HDAPS=m
# CONFIG_HWMON_DEBUG_CHIP is not set

#
# Misc devices
#
CONFIG_IBM_ASM=m

#
# Multimedia Capabilities Port drivers
#

#
# Multimedia devices
#
CONFIG_VIDEO_DEV=m

#
# Video For Linux
#

#
# Video Adapters
#
CONFIG_VIDEO_BT848=m
CONFIG_VIDEO_SAA6588=m
CONFIG_VIDEO_PMS=m
CONFIG_VIDEO_BWQCAM=m
CONFIG_VIDEO_CQCAM=m
CONFIG_VIDEO_W9966=m
CONFIG_VIDEO_CPIA=m
CONFIG_VIDEO_CPIA_PP=m
CONFIG_VIDEO_CPIA_USB=m
CONFIG_VIDEO_SAA5246A=m
CONFIG_VIDEO_SAA5249=m
CONFIG_TUNER_3036=m
CONFIG_VIDEO_STRADIS=m
CONFIG_VIDEO_ZORAN=m
CONFIG_VIDEO_ZORAN_BUZ=m
CONFIG_VIDEO_ZORAN_DC10=m
CONFIG_VIDEO_ZORAN_DC30=m
CONFIG_VIDEO_ZORAN_LML33=m
CONFIG_VIDEO_ZORAN_LML33R10=m
CONFIG_VIDEO_MEYE=m
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_DVB=m
CONFIG_VIDEO_MXB=m
CONFIG_VIDEO_DPC=m
CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_HEXIUM_GEMINI=m
CONFIG_VIDEO_CX88=m
CONFIG_VIDEO_CX88_DVB=m
CONFIG_VIDEO_OVCAMCHIP=m

#
# Radio Adapters
#
CONFIG_RADIO_CADET=m
CONFIG_RADIO_RTRACK=m
CONFIG_RADIO_RTRACK2=m
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_GEMTEK=m
CONFIG_RADIO_GEMTEK_PCI=m
CONFIG_RADIO_MAXIRADIO=m
CONFIG_RADIO_MAESTRO=m
CONFIG_RADIO_SF16FMI=m
CONFIG_RADIO_SF16FMR2=m
CONFIG_RADIO_TERRATEC=m
CONFIG_RADIO_TRUST=m
CONFIG_RADIO_TYPHOON=m
CONFIG_RADIO_TYPHOON_PROC_FS=y
CONFIG_RADIO_ZOLTRIX=m

#
# Digital Video Broadcasting Devices
#
CONFIG_DVB=y
CONFIG_DVB_CORE=m

#
# Supported SAA7146 based PCI Adapters
#
CONFIG_DVB_AV7110=m
CONFIG_DVB_AV7110_OSD=y
CONFIG_DVB_BUDGET=m
CONFIG_DVB_BUDGET_CI=m
CONFIG_DVB_BUDGET_AV=m
CONFIG_DVB_BUDGET_PATCH=m

#
# Supported USB Adapters
#
CONFIG_DVB_USB=m
# CONFIG_DVB_USB_DEBUG is not set CONFIG_DVB_USB_A800=m CONFIG_DVB_USB_DIBUSB_MB=m CONFIG_DVB_USB_DIBUSB_MC=m CONFIG_DVB_USB_UMT_010=m
CONFIG_DVB_USB_CXUSB=m
CONFIG_DVB_USB_DIGITV=m
CONFIG_DVB_USB_VP7045=m
CONFIG_DVB_USB_VP702X=m CONFIG_DVB_USB_NOVA_T_USB2=m CONFIG_DVB_USB_DTT200U=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m
CONFIG_DVB_CINERGYT2=m CONFIG_DVB_CINERGYT2_TUNING=y CONFIG_DVB_CINERGYT2_STREAM_URB_COUNT=32 CONFIG_DVB_CINERGYT2_STREAM_BUF_SIZE=512 CONFIG_DVB_CINERGYT2_QUERY_INTERVAL=250
# CONFIG_DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE is not set

#
# Supported FlexCopII (B2C2) Adapters
#
CONFIG_DVB_B2C2_FLEXCOP=m
CONFIG_DVB_B2C2_FLEXCOP_PCI=m
CONFIG_DVB_B2C2_FLEXCOP_USB=m
# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set

#
# Supported BT878 Adapters
#
CONFIG_DVB_BT8XX=m

#
# Supported Pluto2 Adapters
#
CONFIG_DVB_PLUTO2=m

#
# Supported DVB Frontends
#

#
# Customise DVB Frontends
#

#
# DVB-S (satellite) frontends
#
CONFIG_DVB_STV0299=m
CONFIG_DVB_CX24110=m
CONFIG_DVB_TDA8083=m
CONFIG_DVB_TDA80XX=m
CONFIG_DVB_MT312=m
CONFIG_DVB_VES1X93=m
CONFIG_DVB_S5H1420=m

#
# DVB-T (terrestrial) frontends
#
CONFIG_DVB_SP8870=m
CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_L64781=m
CONFIG_DVB_TDA1004X=m
CONFIG_DVB_NXT6000=m
CONFIG_DVB_MT352=m
CONFIG_DVB_DIB3000MB=m
CONFIG_DVB_DIB3000MC=m

#
# DVB-C (cable) frontends
#
CONFIG_DVB_ATMEL_AT76C651=m
CONFIG_DVB_VES1820=m
CONFIG_DVB_TDA10021=m
CONFIG_DVB_STV0297=m

#
# ATSC (North American/Korean Terresterial DTV) frontends #
CONFIG_DVB_NXT2002=m
CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
CONFIG_VIDEO_SAA7146=m
CONFIG_VIDEO_SAA7146_VV=m CONFIG_VIDEO_VIDEOBUF=m
CONFIG_VIDEO_TUNER=m
CONFIG_VIDEO_BUF=m
CONFIG_VIDEO_BUF_DVB=m
CONFIG_VIDEO_BTCX=m
CONFIG_VIDEO_IR=m
CONFIG_VIDEO_TVEEPROM=m

#
# Graphics support
#
CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_SOFT_CURSOR=y
# CONFIG_FB_MACMODES is not set
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
CONFIG_FB_CIRRUS=m
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_ARC=m
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
CONFIG_FB_VGA16=m
CONFIG_FB_VESA=y
CONFIG_VIDEO_SELECT=y
CONFIG_FB_HGA=m
CONFIG_FB_HGA_ACCEL=y
CONFIG_FB_NVIDIA=m
CONFIG_FB_NVIDIA_I2C=y
CONFIG_FB_RIVA=m
# CONFIG_FB_RIVA_I2C is not set
# CONFIG_FB_RIVA_DEBUG is not set
CONFIG_FB_I810=m
CONFIG_FB_I810_GTF=y
CONFIG_FB_I810_I2C=y
CONFIG_FB_INTEL=m
# CONFIG_FB_INTEL_DEBUG is not set
CONFIG_FB_MATROX=m
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=m
CONFIG_FB_MATROX_MAVEN=m
CONFIG_FB_MATROX_MULTIHEAD=y
# CONFIG_FB_RADEON_OLD is not set
CONFIG_FB_RADEON=m
CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_RADEON_DEBUG is not set
CONFIG_FB_ATY128=m
CONFIG_FB_ATY=m
CONFIG_FB_ATY_CT=y
CONFIG_FB_ATY_GENERIC_LCD=y
# CONFIG_FB_ATY_XL_INIT is not set
CONFIG_FB_ATY_GX=y
CONFIG_FB_SAVAGE=m
CONFIG_FB_SAVAGE_I2C=y
CONFIG_FB_SAVAGE_ACCEL=y
# CONFIG_FB_SIS is not set
CONFIG_FB_NEOMAGIC=m
CONFIG_FB_KYRO=m
CONFIG_FB_3DFX=m
CONFIG_FB_3DFX_ACCEL=y
CONFIG_FB_VOODOO1=m
CONFIG_FB_CYBLA=m
CONFIG_FB_TRIDENT=m
CONFIG_FB_TRIDENT_ACCEL=y
# CONFIG_FB_GEODE is not set
CONFIG_FB_S1D13XXX=m
# CONFIG_FB_VIRTUAL is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_MDA_CONSOLE=m
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y

#
# Logo configuration
#
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_DEVICE=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_DEVICE=y

#
# Sound
#
CONFIG_SOUND=m

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_RTCTIMER=m
CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
CONFIG_SND_GENERIC_DRIVER=y

#
# Generic devices
#
CONFIG_SND_MPU401_UART=m
CONFIG_SND_OPL3_LIB=m
CONFIG_SND_OPL4_LIB=m
CONFIG_SND_VX_LIB=m
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
# CONFIG_SND_SERIAL_U16550 is not set
CONFIG_SND_MPU401=m

#
# ISA devices
#
CONFIG_SND_AD1848_LIB=m
CONFIG_SND_CS4231_LIB=m
CONFIG_SND_AD1816A=m
CONFIG_SND_AD1848=m
CONFIG_SND_CS4231=m
CONFIG_SND_CS4232=m
CONFIG_SND_CS4236=m
CONFIG_SND_ES968=m
CONFIG_SND_ES1688=m
CONFIG_SND_ES18XX=m
CONFIG_SND_GUS_SYNTH=m
CONFIG_SND_GUSCLASSIC=m
CONFIG_SND_GUSEXTREME=m
CONFIG_SND_GUSMAX=m
CONFIG_SND_INTERWAVE=m
CONFIG_SND_INTERWAVE_STB=m
CONFIG_SND_OPTI92X_AD1848=m
CONFIG_SND_OPTI92X_CS4231=m
CONFIG_SND_OPTI93X=m
CONFIG_SND_SB8=m
CONFIG_SND_SB16=m
CONFIG_SND_SBAWE=m
CONFIG_SND_SB16_CSP=y
# CONFIG_SND_WAVEFRONT is not set
CONFIG_SND_ALS100=m
CONFIG_SND_AZT2320=m
CONFIG_SND_CMI8330=m
CONFIG_SND_DT019X=m
CONFIG_SND_OPL3SA2=m
CONFIG_SND_SGALAXY=m
CONFIG_SND_SSCAPE=m
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_AC97_BUS=m

#
# PCI devices
#
CONFIG_SND_ALI5451=m
CONFIG_SND_ATIIXP=m
CONFIG_SND_ATIIXP_MODEM=m
CONFIG_SND_AU8810=m
CONFIG_SND_AU8820=m
CONFIG_SND_AU8830=m
CONFIG_SND_AZT3328=m
CONFIG_SND_BT87X=m
CONFIG_SND_BT87X_OVERCLOCK=y
CONFIG_SND_CS46XX=m
CONFIG_SND_CS46XX_NEW_DSP=y
CONFIG_SND_CS4281=m
CONFIG_SND_EMU10K1=m
CONFIG_SND_EMU10K1X=m
CONFIG_SND_CA0106=m
CONFIG_SND_KORG1212=m
CONFIG_SND_MIXART=m
CONFIG_SND_NM256=m
CONFIG_SND_RME32=m
CONFIG_SND_RME96=m
CONFIG_SND_RME9652=m
CONFIG_SND_HDSP=m
CONFIG_SND_HDSPM=m
CONFIG_SND_TRIDENT=m
CONFIG_SND_YMFPCI=m
CONFIG_SND_AD1889=m
CONFIG_SND_ALS4000=m
CONFIG_SND_CMIPCI=m
CONFIG_SND_ENS1370=m
CONFIG_SND_ENS1371=m
CONFIG_SND_ES1938=m
CONFIG_SND_ES1968=m
CONFIG_SND_MAESTRO3=m
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X=m
CONFIG_SND_ICE1712=m
CONFIG_SND_ICE1724=m
CONFIG_SND_INTEL8X0=m
CONFIG_SND_INTEL8X0M=m
CONFIG_SND_SONICVIBES=m
CONFIG_SND_VIA82XX=m
CONFIG_SND_VIA82XX_MODEM=m
CONFIG_SND_VX222=m
CONFIG_SND_HDA_INTEL=m

#
# USB devices
#
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_USX2Y=m

#
# PCMCIA devices
#
CONFIG_SND_VXPOCKET=m
CONFIG_SND_PDAUDIOCF=m

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set

#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
CONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_ISP116X_HCD=m
CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=m
CONFIG_USB_SL811_HCD=m
CONFIG_USB_SL811_CS=m

#
# USB Device Class drivers
#
# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set

#
# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem #
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information #
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_DPCM=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ONETOUCH=y

#
# USB Input Devices
#
CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y
CONFIG_HID_FF=y
CONFIG_HID_PID=y
CONFIG_LOGITECH_FF=y
CONFIG_THRUSTMASTER_FF=y
CONFIG_USB_HIDDEV=y
CONFIG_USB_AIPTEK=m
CONFIG_USB_WACOM=m
CONFIG_USB_ACECAD=m
CONFIG_USB_KBTAB=m
CONFIG_USB_POWERMATE=m
CONFIG_USB_MTOUCH=m
CONFIG_USB_ITMTOUCH=m
CONFIG_USB_EGALAX=m
CONFIG_USB_YEALINK=m
CONFIG_USB_XPAD=m
CONFIG_USB_ATI_REMOTE=m
CONFIG_USB_KEYSPAN_REMOTE=m
CONFIG_USB_APPLETOUCH=m

#
# USB Imaging devices
#
CONFIG_USB_MDC800=m
CONFIG_USB_MICROTEK=m

#
# USB Multimedia devices
#
CONFIG_USB_DABUSB=m
CONFIG_USB_VICAM=m
CONFIG_USB_DSBR=m
CONFIG_USB_IBMCAM=m
CONFIG_USB_KONICAWC=m
CONFIG_USB_OV511=m
CONFIG_USB_SE401=m
CONFIG_USB_SN9C102=m
CONFIG_USB_STV680=m
CONFIG_USB_W9968CF=m
CONFIG_USB_PWC=m

#
# USB Network Adapters
#
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_CDCETHER=m
CONFIG_USB_NET_GL620A=m
CONFIG_USB_NET_NET1080=m
CONFIG_USB_NET_PLUSB=m
# CONFIG_USB_NET_RNDIS_HOST is not set
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
CONFIG_USB_EPSON2888=y
CONFIG_USB_NET_ZAURUS=m
CONFIG_USB_ZD1201=m
CONFIG_USB_MON=y

#
# USB port drivers
#
CONFIG_USB_USS720=m

#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_AIRPRIME=m
CONFIG_USB_SERIAL_BELKIN=m
CONFIG_USB_SERIAL_WHITEHEAT=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
CONFIG_USB_SERIAL_EDGEPORT=m
CONFIG_USB_SERIAL_EDGEPORT_TI=m
CONFIG_USB_SERIAL_GARMIN=m
CONFIG_USB_SERIAL_IPW=m
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
CONFIG_USB_SERIAL_KEYSPAN_USA28=y
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
CONFIG_USB_SERIAL_KEYSPAN_USA19=y
CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=m
CONFIG_USB_SERIAL_MCT_U232=m
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_HP4X=m
CONFIG_USB_SERIAL_SAFE=m
CONFIG_USB_SERIAL_SAFE_PADDED=y
CONFIG_USB_SERIAL_TI=m
CONFIG_USB_SERIAL_CYBERJACK=m
CONFIG_USB_SERIAL_XIRCOM=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_OMNINET=m
CONFIG_USB_EZUSB=y

#
# USB Miscellaneous drivers
#
CONFIG_USB_EMI62=m
CONFIG_USB_EMI26=m
CONFIG_USB_AUERSWALD=m
CONFIG_USB_RIO500=m
CONFIG_USB_LEGOTOWER=m
CONFIG_USB_LCD=m
CONFIG_USB_LED=m
# CONFIG_USB_CYTHERM is not set
CONFIG_USB_PHIDGETKIT=m
CONFIG_USB_PHIDGETSERVO=m
CONFIG_USB_IDMOUSE=m
CONFIG_USB_SISUSBVGA=m
CONFIG_USB_SISUSBVGA_CON=y
CONFIG_USB_LD=m
CONFIG_USB_TEST=m

#
# USB DSL modem support
#
CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
CONFIG_USB_CXACRU=m
CONFIG_USB_XUSBATM=m

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set

#
# MMC/SD Card support
#
CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=m
CONFIG_MMC_WBSD=m

#
# InfiniBand support
#
CONFIG_INFINIBAND=m
CONFIG_INFINIBAND_USER_MAD=m
CONFIG_INFINIBAND_USER_ACCESS=m
CONFIG_INFINIBAND_MTHCA=m
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
CONFIG_INFINIBAND_IPOIB=m
# CONFIG_INFINIBAND_IPOIB_DEBUG is not set

#
# SN Devices
#

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=m
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_JBD=m
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
CONFIG_REISERFS_PROC_INFO=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
# CONFIG_JFS_STATISTICS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
CONFIG_XFS_EXPORT=y
CONFIG_XFS_QUOTA=m
CONFIG_XFS_SECURITY=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_XFS_RT is not set
CONFIG_MINIX_FS=m
CONFIG_ROMFS_FS=m
CONFIG_INOTIFY=y
CONFIG_QUOTA=y
# CONFIG_QFMT_V1 is not set
CONFIG_QFMT_V2=y
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=m

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_ZISOFS_FS=y
CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y
CONFIG_RELAYFS_FS=m

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
CONFIG_AFFS_FS=m
CONFIG_HFS_FS=m
CONFIG_HFSPLUS_FS=m
CONFIG_BEFS_FS=m
# CONFIG_BEFS_DEBUG is not set
CONFIG_BFS_FS=m
CONFIG_EFS_FS=m
# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=m
CONFIG_VXFS_FS=m
# CONFIG_HPFS_FS is not set
CONFIG_QNX4FS_FS=m
CONFIG_SYSV_FS=m
CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set

#
# Network File Systems
#
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_RPCSEC_GSS_SPKM3=m
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_EXPERIMENTAL is not set
CONFIG_NCP_FS=m
CONFIG_NCPFS_PACKET_SIGNING=y
CONFIG_NCPFS_IOCTL_LOCKING=y
CONFIG_NCPFS_STRONG=y
CONFIG_NCPFS_NFS_NS=y
CONFIG_NCPFS_OS2_NS=y
CONFIG_NCPFS_SMALLDOS=y
CONFIG_NCPFS_NLS=y
CONFIG_NCPFS_EXTRAS=y
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
CONFIG_OSF_PARTITION=y
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
CONFIG_MINIX_SUBPARTITION=y
CONFIG_SOLARIS_X86_PARTITION=y
CONFIG_UNIXWARE_DISKLABEL=y
# CONFIG_LDM_PARTITION is not set
CONFIG_SGI_PARTITION=y
# CONFIG_ULTRIX_PARTITION is not set
CONFIG_SUN_PARTITION=y
CONFIG_EFI_PARTITION=y

#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_855=m
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=m
CONFIG_NLS_CODEPAGE_861=m
CONFIG_NLS_CODEPAGE_862=m
CONFIG_NLS_CODEPAGE_863=m
CONFIG_NLS_CODEPAGE_864=m
CONFIG_NLS_CODEPAGE_865=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_CODEPAGE_869=m
CONFIG_NLS_CODEPAGE_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
CONFIG_NLS_ISO8859_7=m
CONFIG_NLS_ISO8859_9=m
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=m

#
# Profiling support
#
# CONFIG_PROFILING is not set

#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
# CONFIG_PRINTK_IGNORE_LOGLEVEL is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_PREEMPT is not set
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_WAKEUP_TIMING=y
# CONFIG_WAKEUP_LATENCY_HIST is not set
# CONFIG_CRITICAL_PREEMPT_TIMING is not set
# CONFIG_CRITICAL_IRQSOFF_TIMING is not set
CONFIG_LATENCY_TIMING=y
# CONFIG_LATENCY_TRACE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set
# CONFIG_USE_FRAME_POINTER is not set
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
# CONFIG_KPROBES is not set
CONFIG_DEBUG_STACK_USAGE=y
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_4KSTACKS is not set
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y

#
# Security options
#
# CONFIG_KEYS is not set
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
# CONFIG_SECURITY_SECLVL is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1

#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_AES_586=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_TEST is not set
CONFIG_CRYPTO_SIGNATURE=y
CONFIG_CRYPTO_SIGNATURE_DSA=y
CONFIG_CRYPTO_MPILIB=y

#
# Hardware crypto devices
#
CONFIG_CRYPTO_DEV_PADLOCK=y
CONFIG_CRYPTO_DEV_PADLOCK_AES=y

#
# Library routines
#
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_PC=y

#24 lore raw

Re: 2.6.14-rc2-rt2

Quoted 6 lines · Fernando Lopez-Lezcano

{standard input}:165: Error: can't resolve .sched.text' {.sched.text section} - .Ltext0' {.text section}
make[1]: *** [arch/i386/kernel/semaphore.o] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [arch/i386/kernel] Error 2
make: *** Waiting for unfinished jobs....

Thats a gcc problem. Which gcc version are you using ?

tglx

#25 lore raw

Re: 2.6.14-rc2-rt2

Quoted 9 lines · Thomas Gleixner
Quoted 6 lines · Fernando Lopez-Lezcano

{standard input}:165: Error: can't resolve .sched.text' {.sched.text section} - .Ltext0' {.text section}
make[1]: *** [arch/i386/kernel/semaphore.o] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [arch/i386/kernel] Error 2
make: *** Waiting for unfinished jobs....

Thats a gcc problem. Which gcc version are you using ?

# gcc --version
gcc (GCC) 4.0.1 20050727 (Red Hat 4.0.1-5)
(on FC4)

-- Fernando

#26 lore raw

Re: 2.6.14-rc2-rt2

In reply to Fernando Lopez-Lezcano
Quoted 11 lines · Fernando Lopez-Lezcano

UPD include/linux/compile.h
{standard input}: Assembler messages:
{standard input}:164: Error: can't resolve .sched.text' {.sched.text section} - .Ltext0' {.text section}
{standard input}:165: Error: can't resolve .sched.text' {.sched.text section} - .Ltext0' {.text section}
make[1]: *** [arch/i386/kernel/semaphore.o] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [arch/i386/kernel] Error 2
make: *** Waiting for unfinished jobs....

Quoted 3 lines

Failing .config attached.
-- Fernando

Here's the fix.

lib/semaphore-sleepers.c +7 -0
Index: linux-2.6.13/lib/semaphore-sleepers.c
===================================================================
@@ -176,3 +176,10 @@ fastcall int __compat_down_trylock(struc
 	spin_unlock_irqrestore(&sem->wait.lock, flags);
 	return 1;
 }
+
+int fastcall compat_sem_is_locked(struct compat_semaphore *sem)
+{
+	return (int) atomic_read(&sem->count) < 0;
+}
+
+EXPORT_SYMBOL(compat_sem_is_locked);
arch/i386/kernel/semaphore.c +0 -7
Index: linux-2.6.13/arch/i386/kernel/semaphore.c
===================================================================
@@ -102,10 +102,3 @@ asm(
 	"ret"
 );
 
-int fastcall compat_sem_is_locked(struct compat_semaphore *sem)
-{
-	return (int) atomic_read(&sem->count) < 0;
-}
-
-EXPORT_SYMBOL(compat_sem_is_locked);
-
#27 lore raw

Re: 2.6.14-rc2-rt2

Quoted 12 lines · Daniel Walker
Quoted 11 lines · Fernando Lopez-Lezcano

UPD include/linux/compile.h
{standard input}: Assembler messages:
{standard input}:164: Error: can't resolve .sched.text' {.sched.text section} - .Ltext0' {.text section}
{standard input}:165: Error: can't resolve .sched.text' {.sched.text section} - .Ltext0' {.text section}
make[1]: *** [arch/i386/kernel/semaphore.o] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [arch/i386/kernel] Error 2
make: *** Waiting for unfinished jobs....

Quoted 3 lines
Quoted 1 line

Failing .config attached.

Here's the fix.

Hey thanks! That fixes that, but the compile fails further along:

CHK include/linux/compile.h
UPD include/linux/compile.h
arch/i386/kernel/built-in.o(.text+0xf086): In function `do_powersaver':
longhaul.c: undefined reference to safe_halt' arch/i386/kernel/built-in.o(.text+0xf271): In function longhaul_setstate':
longhaul.c: undefined reference to `safe_halt'
make: *** [.tmp_vmlinux1] Error 1

-- Fernando

#28 lore raw

Re: 2.6.14-rc2-rt2

Quoted 4 lines · Fernando Lopez-Lezcano
Quoted 1 line

Here's the fix.

Hey thanks! That fixes that, but the compile fails further along:

Quoted 8 lines

CHK include/linux/compile.h
UPD include/linux/compile.h
arch/i386/kernel/built-in.o(.text+0xf086): In function `do_powersaver':
longhaul.c: undefined reference to safe_halt' arch/i386/kernel/built-in.o(.text+0xf271): In function longhaul_setstate':
longhaul.c: undefined reference to `safe_halt'
make: *** [.tmp_vmlinux1] Error 1

could you try 2.6.14-rc2-rt6, does it build?

Ingo

#29 lore raw

Re: 2.6.14-rc2-rt2

Quoted 15 lines · Ingo Molnar
Quoted 4 lines · Fernando Lopez-Lezcano
Quoted 1 line

Here's the fix.

Hey thanks! That fixes that, but the compile fails further along:

Quoted 8 lines

CHK include/linux/compile.h
UPD include/linux/compile.h
arch/i386/kernel/built-in.o(.text+0xf086): In function `do_powersaver':
longhaul.c: undefined reference to safe_halt' arch/i386/kernel/built-in.o(.text+0xf271): In function longhaul_setstate':
longhaul.c: undefined reference to `safe_halt'
make: *** [.tmp_vmlinux1] Error 1

Quoted 1 line

could you try 2.6.14-rc2-rt6, does it build?

No, sorry...

fs/ntfs/aops.c: In function 'ntfs_end_buffer_async_read':
fs/ntfs/aops.c:108: error: 'BH_Uptodate_Lock' undeclared (first use in this function)
fs/ntfs/aops.c:108: error: (Each undeclared identifier is reported only once
fs/ntfs/aops.c:108: error: for each function it appears in.) make[2]: *** [fs/ntfs/aops.o] Error 1

and (probably unrelated to rt):

drivers/isdn/hisax/config.c: In function 'HiSax_readstatus':
drivers/isdn/hisax/config.c:636: warning: ignoring return value of 'copy_to_user', declared with attribute warn_unused_result drivers/isdn/hisax/config.c:647: warning: ignoring return value of 'copy_to_user', declared with attribute warn_unused_result drivers/isdn/hisax/callc.c: In function 'HiSax_writebuf_skb':
drivers/isdn/hisax/callc.c:1781: warning: large integer implicitly truncated to unsigned type
drivers/isdn/hisax/st5481_usb.c: In function 'st5481_in_mode':
drivers/isdn/hisax/st5481_usb.c:648: error: 'URB_ASYNC_UNLINK' undeclared (first use in this function) drivers/isdn/hisax/st5481_usb.c:648: error: (Each undeclared identifier is reported only once
drivers/isdn/hisax/st5481_usb.c:648: error: for each function it appears in.)
make[3]: *** [drivers/isdn/hisax/st5481_usb.o] Error 1

-- Fernando

#30 lore raw

Re: 2.6.14-rc2-rt2

Quoted 32 lines · Fernando Lopez-Lezcano
Quoted 1 line

could you try 2.6.14-rc2-rt6, does it build?

No, sorry...

fs/ntfs/aops.c: In function 'ntfs_end_buffer_async_read':
fs/ntfs/aops.c:108: error: 'BH_Uptodate_Lock' undeclared (first use in this function)
fs/ntfs/aops.c:108: error: (Each undeclared identifier is reported only once
fs/ntfs/aops.c:108: error: for each function it appears in.) make[2]: *** [fs/ntfs/aops.o] Error 1

and (probably unrelated to rt):

drivers/isdn/hisax/config.c: In function 'HiSax_readstatus':
drivers/isdn/hisax/config.c:636: warning: ignoring return value of 'copy_to_user', declared with attribute warn_unused_result drivers/isdn/hisax/config.c:647: warning: ignoring return value of 'copy_to_user', declared with attribute warn_unused_result drivers/isdn/hisax/callc.c: In function 'HiSax_writebuf_skb':
drivers/isdn/hisax/callc.c:1781: warning: large integer implicitly truncated to unsigned type
drivers/isdn/hisax/st5481_usb.c: In function 'st5481_in_mode':
drivers/isdn/hisax/st5481_usb.c:648: error: 'URB_ASYNC_UNLINK' undeclared (first use in this function) drivers/isdn/hisax/st5481_usb.c:648: error: (Each undeclared identifier is reported only once
drivers/isdn/hisax/st5481_usb.c:648: error: for each function it appears in.)
make[3]: *** [drivers/isdn/hisax/st5481_usb.o] Error 1

Quoted 3 lines

-- Fernando

Regarding NTFS - try with the attached patch. It seems to be still missing from 2.6.14-rc2-rt7.

ntfs/aops.c renamed from ntfs/aops.c.old +3 -6
@@ -104,8 +104,7 @@
 				"0x%llx.", (unsigned long long)bh->b_blocknr);
 	}
 	first = page_buffers(page);
-	local_irq_save(flags);
-	bit_spin_lock(BH_Uptodate_Lock, &first->b_state);
+	spin_lock_irqsave(&first->b_uptodate_lock, flags);
 	clear_buffer_async_read(bh);
 	unlock_buffer(bh);
 	tmp = bh;
@@ -120,8 +119,7 @@
 		}
 		tmp = tmp->b_this_page;
 	} while (tmp != bh);
-	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
-	local_irq_restore(flags);
+	spin_unlock_irqrestore(&first->b_uptodate_lock, flags);
 	/*
 	 * If none of the buffers had errors then we can set the page uptodate,
 	 * but we first have to perform the post read mst fixups, if the
@@ -154,8 +152,7 @@
 	unlock_page(page);
 	return;
 still_busy:
-	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
-	local_irq_restore(flags);
+	spin_unlock_irqrestore(&first->b_uptodate_lock, flags);
 	return;
 }
 
#32 lore raw

Re: 2.6.14-rc2-rt2

In reply to Ingo Molnar
Quoted 5 lines · Ingo Molnar

i have released the 2.6.14-rc2-rt2 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

Hi Ingo,

I noticed that you moved to "-rt7" already.
"-rt7" fails to compile with CONFIG_NUMA.

mm/slab.c:2404: error: conflicting types for kmem_cache_alloc_node' include/linux/slab.h:122: error: previous declaration of kmem_cache_alloc_node'

Here is the simple fix.

Thanks,
Badari

mm/slab.c +1 -1
@@ -2400,7 +2400,7 @@ out:
  * and can sleep. And it will allocate memory on the given node, which
  * can improve the performance for cpu bound structures.
  */
-void *kmem_cache_alloc_node(kmem_cache_t *cachep, int flags, int nodeid)
+void *kmem_cache_alloc_node(kmem_cache_t *cachep, unsigned int __nocast flags, int nodeid)
 {
 	int loop;
 	void *objp;
author Applied
#33 lore raw

Re: 2.6.14-rc2-rt2

Quoted 9 lines · Badari Pulavarty
Quoted 5 lines · Ingo Molnar

i have released the 2.6.14-rc2-rt2 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

Hi Ingo,

Quoted 8 lines

I noticed that you moved to "-rt7" already.
"-rt7" fails to compile with CONFIG_NUMA.

mm/slab.c:2404: error: conflicting types for kmem_cache_alloc_node' include/linux/slab.h:122: error: previous declaration of kmem_cache_alloc_node'

Here is the simple fix.

thanks, applied.

Ingo

#34 lore raw

2.6.14-rc3-rt1

In reply to Ingo Molnar

i have released the 2.6.14-rc3-rt1 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

the biggest change is the merge of the generic ARM-irq patches into the -rt tree, and a port of -rt to the ARM platform, by Thomas Gleixner and John Cooper. There are also lots of updates and cleanups in the ktimer code. Also, x64 should work again. Plus smaller changes all around.

Changes since 2.6.14-rc2-rt2:

- ARM-genirq code (Thomas Gleixner, me - testing by lots of people)

- latency tracing on ARM (John Cooper)

- port of -rt to ARM (Thomas Gleixner)

- lots of ktimer updates/cleanups (Thomas Gleixner)

- NTFS bit-spinlock fix (Eran Mann)

- gcc4 build fix (Daniel Walker)

- fix "No Forced Preemption (Server)" build problems (reported by Mark Knecht)

- convert epca_lock to the new syntax (Daniel Walker)

- typo fix in latency-hist prototype (Clark Williams)

- netlink build fix (Eran Mann)

- dccp build fix (Eran Mann)

- x64 build fixes

- fix audit.c compilation error

- merge to 2.6.14-rc3

- cpufreq build fix

- pcmcia build fix

- XFS build fix

to build a 2.6.14-rc3-rt1 tree, the following patches should be applied:

http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.tar.bz2
http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.14-rc3.bz2
http://redhat.com/~mingo/realtime-preempt/patch-2.6.14-rc3-rt1

Ingo

#35 lore raw

Re: 2.6.14-rc3-rt1

Thanks Ingo. 2.6.14-rc2-rt7 on AMD64 has been working well for me the last few days. (After finally getting it to build!) I expect that I'll build 2.6.14-rc3-rt1 today.

Cheers,
Mark

Quoted 56 lines · Ingo Molnar

i have released the 2.6.14-rc3-rt1 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

the biggest change is the merge of the generic ARM-irq patches into the -rt tree, and a port of -rt to the ARM platform, by Thomas Gleixner and John Cooper. There are also lots of updates and cleanups in the ktimer code. Also, x64 should work again. Plus smaller changes all around.

Changes since 2.6.14-rc2-rt2:

- ARM-genirq code (Thomas Gleixner, me - testing by lots of people)

- latency tracing on ARM (John Cooper)

- port of -rt to ARM (Thomas Gleixner)

- lots of ktimer updates/cleanups (Thomas Gleixner)

- NTFS bit-spinlock fix (Eran Mann)

- gcc4 build fix (Daniel Walker)

- fix "No Forced Preemption (Server)" build problems (reported by Mark Knecht)

- convert epca_lock to the new syntax (Daniel Walker)

- typo fix in latency-hist prototype (Clark Williams)

- netlink build fix (Eran Mann)

- dccp build fix (Eran Mann)

- x64 build fixes

- fix audit.c compilation error

- merge to 2.6.14-rc3

- cpufreq build fix

- pcmcia build fix

- XFS build fix

to build a 2.6.14-rc3-rt1 tree, the following patches should be applied:

http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.tar.bz2
http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.14-rc3.bz2
http://redhat.com/~mingo/realtime-preempt/patch-2.6.14-rc3-rt1

Ingo

#36 lore raw

Re: 2.6.14-rc3-rt1

2.6.14-rc3-rt1 up and running for me. No problems at all building it. I've got Jack running at <5mS and doing light streaming from 1394 drives. I'm using realtime-lsm.

The only problem I had over the last few days happened with 2.6.14-rc2-rt7. One time, when attempting to shutdown, the machine hung after the 'Unloading Alsa modules...[OK]' step.

I'm going to be doing some composition/recording in Ardour this week. I'll use one of these two RC kernels and see how it goes.

Cheers,
Mark

Quoted 65 lines · Mark Knecht

Thanks Ingo. 2.6.14-rc2-rt7 on AMD64 has been working well for me the last few days. (After finally getting it to build!) I expect that I'll build 2.6.14-rc3-rt1 today.

Cheers,
Mark

Quoted 56 lines · Ingo Molnar

i have released the 2.6.14-rc3-rt1 tree, which can be downloaded from the usual place:

http://redhat.com/~mingo/realtime-preempt/

the biggest change is the merge of the generic ARM-irq patches into the -rt tree, and a port of -rt to the ARM platform, by Thomas Gleixner and John Cooper. There are also lots of updates and cleanups in the ktimer code. Also, x64 should work again. Plus smaller changes all around.

Changes since 2.6.14-rc2-rt2:

- ARM-genirq code (Thomas Gleixner, me - testing by lots of people)

- latency tracing on ARM (John Cooper)

- port of -rt to ARM (Thomas Gleixner)

- lots of ktimer updates/cleanups (Thomas Gleixner)

- NTFS bit-spinlock fix (Eran Mann)

- gcc4 build fix (Daniel Walker)

- fix "No Forced Preemption (Server)" build problems (reported by Mark Knecht)

- convert epca_lock to the new syntax (Daniel Walker)

- typo fix in latency-hist prototype (Clark Williams)

- netlink build fix (Eran Mann)

- dccp build fix (Eran Mann)

- x64 build fixes

- fix audit.c compilation error

- merge to 2.6.14-rc3

- cpufreq build fix

- pcmcia build fix

- XFS build fix

to build a 2.6.14-rc3-rt1 tree, the following patches should be applied:

http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.tar.bz2
http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.14-rc3.bz2
http://redhat.com/~mingo/realtime-preempt/patch-2.6.14-rc3-rt1

Ingo

#37 lore raw

Re: 2.6.14-rc3-rt1

Quoted 4 lines · Mark Knecht

The only problem I had over the last few days happened with 2.6.14-rc2-rt7. One time, when attempting to shutdown, the machine hung after the 'Unloading Alsa modules...[OK]' step.

Acutally it may be the next step. Do you have pcmcia configured? I've been noticing that my system has been locking up on shutdown of the pcmcia.

Ingo, here's the patch. This should probably go upstream too since it can happen there too. The pccardd thread has a race in it that it can shutdown in the TASK_INTERRUPTIBLE state. Here's the fix.

-- Steve

PS. Thanks for the info on quilt ;-)

drivers/pcmcia/cs.c +3 -0
Index: linux-rt-quilt/drivers/pcmcia/cs.c
===================================================================
@@ -689,6 +689,9 @@
 		schedule();
 		try_to_freeze();
 	}
+	/* make sure we are running before we exit */
+	set_current_state(TASK_RUNNING);
+
 	remove_wait_queue(&skt->thread_wait, &wait);
 
 	/* remove from the device core */
#38 lore raw

PATCH 1/1 pcmcia-shutdown-fix.patch

Quoted 3 lines · Steven Rostedt

Ingo, here's the patch. This should probably go upstream too since it can happen there too. The pccardd thread has a race in it that it can shutdown in the TASK_INTERRUPTIBLE state. Here's the fix.

ah, certainly makes sense. Dominik, does it look good to you too? Patch below is for upstream.

Ingo

----

The pccardd thread has a race in it that it can shutdown in the TASK_INTERRUPTIBLE state. Found on the -rt kernel.

From: Steven Rostedt <[email protected]>

--

 drivers/pcmcia/cs.c |    3 +++
 1 files changed, 3 insertions(+)
drivers/pcmcia/cs.c +3 -0
Index: linux/drivers/pcmcia/cs.c
===================================================================
@@ -689,6 +689,9 @@ static int pccardd(void *__skt)
 		schedule();
 		try_to_freeze();
 	}
+	/* make sure we are running before we exit */
+	set_current_state(TASK_RUNNING);
+
 	remove_wait_queue(&skt->thread_wait, &wait);
 
 	/* remove from the device core */
#39 lore raw

Re: [patch] pcmcia-shutdown-fix.patch

Quoted 9 lines · Ingo Molnar
Quoted 3 lines · Steven Rostedt

Ingo, here's the patch. This should probably go upstream too since it can happen there too. The pccardd thread has a race in it that it can shutdown in the TASK_INTERRUPTIBLE state. Here's the fix.

ah, certainly makes sense. Dominik, does it look good to you too? Patch below is for upstream.

Looks correct to me (I'm the author of this code.) Since it's a bug fix, please send it upstream ASAP.

Signature · 3 lines
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 Serial core
#40 lore raw

Re: [patch] pcmcia-shutdown-fix.patch

Quoted 8 lines · Russell King
Quoted 7 lines · Ingo Molnar
Quoted 3 lines · Steven Rostedt

Ingo, here's the patch. This should probably go upstream too since it can happen there too. The pccardd thread has a race in it that it can shutdown in the TASK_INTERRUPTIBLE state. Here's the fix.

Quoted 6 lines
Quoted 2 lines

ah, certainly makes sense. Dominik, does it look good to you too? Patch below is for upstream.

Looks correct to me (I'm the author of this code.) Since it's a bug fix, please send it upstream ASAP.

Russell,

I believe that the email that Ingo was sending was an upstream patch. You cut out the patch part in this reply. I'm sure if you just Ack that patch and CC it to the powers that be, it will go in.

-- Steve

#41 lore raw

Re: [patch] pcmcia-shutdown-fix.patch

In reply to Russell King
Quoted 8 lines · Russell King
Quoted 7 lines · Ingo Molnar
Quoted 3 lines · Steven Rostedt

Ingo, here's the patch. This should probably go upstream too since it can happen there too. The pccardd thread has a race in it that it can shutdown in the TASK_INTERRUPTIBLE state. Here's the fix.

Quoted 6 lines
Quoted 2 lines

ah, certainly makes sense. Dominik, does it look good to you too? Patch below is for upstream.

Looks correct to me (I'm the author of this code.) Since it's a bug fix, please send it upstream ASAP.

Just in case this was missed and hasn't been incorporated. Here's the patch once again:

-- Steve

drivers/pcmcia/cs.c renamed from drivers/pcmcia/cs.c.orig +3 -0
Index: linux-2.6.14-rc3/drivers/pcmcia/cs.c
===================================================================
@@ -689,6 +689,9 @@
 		schedule();
 		try_to_freeze();
 	}
+	/* make sure we are running before we exit */
+	set_current_state(TASK_RUNNING);
+
 	remove_wait_queue(&skt->thread_wait, &wait);
 
 	/* remove from the device core */
#42 lore raw

Re: [patch] pcmcia-shutdown-fix.patch

Quoted 14 lines · Steven Rostedt
Quoted 11 lines · Russell King
Quoted 9 lines · Ingo Molnar
Quoted 3 lines · Steven Rostedt

Ingo, here's the patch. This should probably go upstream too since it can happen there too. The pccardd thread has a race in it that it can shutdown in the TASK_INTERRUPTIBLE state. Here's the fix.

ah, certainly makes sense. Dominik, does it look good to you too? Patch below is for upstream.

Quoted 7 lines
Quoted 3 lines

Looks correct to me (I'm the author of this code.) Since it's a bug fix, please send it upstream ASAP.

Just in case this was missed and hasn't been incorporated. Here's the patch once again:

Oh, and I forgot to add the write-up that Ingo did to explain the patch.

----

The pccardd thread has a race in it that it can shutdown in the TASK_INTERRUPTIBLE state. Found on the -rt kernel.

Quoted 24 lines

-- Steve

Index: linux-2.6.14-rc3/drivers/pcmcia/cs.c
===================================================================

drivers/pcmcia/cs.c renamed from drivers/pcmcia/cs.c.orig +3 -1
@@ -689,6 +689,9 @@
 		schedule();
 		try_to_freeze();
 	}
+	/* make sure we are running before we exit */
+	set_current_state(TASK_RUNNING);
+
 	remove_wait_queue(&skt->thread_wait, &wait);
 
 	/* remove from the device core */
-

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

#43 lore raw

Re: 2.6.14-rc3-rt1

In reply to Ingo Molnar

I have a compile error in drivers/net/hamradio/mkiss.c

CC [M] drivers/net/hamradio/mkiss.o drivers/net/hamradio/mkiss.c:625: error:
RW_LOCK_UNLOCKED’ undeclared here (not in a function)

Due to the fact that

RW_LOCK_UNLOCKED

has not been converted to the form

RW_LOCK_UNLOCKED(name.lock)

by the RT patch.

But I don't actually need this module anyway. :-)
regards,
Felix

#44 lore raw

Re: 2.6.14-rc3-rt1

Quoted 1 line · Felix Oxley

I have a compile error in drivers/net/hamradio/mkiss.c

I should have said - I have added Ralf Baechle to this post as I think he is the maintainer for this module.

Ralf, I hope that is OK? :-)

regards,
Felix

#45 lore raw

Re: 2.6.14-rc3-rt1

In reply to Felix Oxley
Quoted 8 lines · Felix Oxley

I have a compile error in drivers/net/hamradio/mkiss.c

CC [M] drivers/net/hamradio/mkiss.o drivers/net/hamradio/mkiss.c:625: error:
RW_LOCK_UNLOCKED’ undeclared here (not in a function)

Due to the fact that

Quoted 7 lines

RW_LOCK_UNLOCKED

has not been converted to the form

RW_LOCK_UNLOCKED(name.lock)

by the RT patch.

i've applied the cleanup below to my tree - it might as well go upstream too, it's slightly more compact than the explicit initializer.

Ingo

drivers/net/hamradio/mkiss.c +1 -1
Index: linux/drivers/net/hamradio/mkiss.c
===================================================================
@@ -622,7 +622,7 @@ static void ax_setup(struct net_device *
  * best way to fix this is to use a rwlock in the tty struct, but for now we
  * use a single global rwlock for all ttys in ppp line discipline.
  */
-static rwlock_t disc_data_lock = RW_LOCK_UNLOCKED;
+static DEFINE_RWLOCK(disc_data_lock);
 
 static struct mkiss *mkiss_get(struct tty_struct *tty)
 {