x86: Reduce memory usage for large count NR_CPUs fixup
Subsystems (4)
cover x86: Reduce memory usage for large count NR_CPUs fixup
Fixup change NR_CPUS patchset by rebasing on 2.6.24-rc8-mm1 from 2.6.24-rc6-mm1) and adding changes suggested by reviews.
Additionally, some new config options have been added to enable large SMP configurations.
Based on 2.6.24-rc8-mm1
---
Signature · 5 lines
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH 1/5 x86: Change size of node ids from u8 to u16 fixup
Change the size of node ids for X86_64 from 8 bits to 16 bits to accomodate more than 256 nodes.
Introduce a "numanode_t" type for x86-generic usage.
---
Fixup:
Size of memnode.embedded_map needs to be changed to accomodate 16-bit node ids as suggested by Eric.
V2->V3:
- changed memnode.embedded_map from [64-16] to [64-8] (and size comment to 128 bytes)
V1->V2:
- changed pxm_to_node_map to u16
- changed memnode map entries to u16
--- arch/x86/mm/numa_64.c | 2 +- drivers/acpi/numa.c | 2 +- include/asm-x86/mmzone_64.h | 6 +++--- include/linux/numa.h | 6 ++++++ 4 files changed, 11 insertions(+), 5 deletions(-)
arch/x86/mm/numa_64.c +1 -1
@@ -88,7 +88,7 @@ static int __init allocate_cachealigned_unsigned long pad, pad_addr; memnodemap = memnode.embedded_map; -if (memnodemapsize <=48 ) +if (memnodemapsize <=ARRAY_SIZE (memnode.embedded_map))return 0 ; pad =L1_CACHE_BYTES -1 ;
drivers/acpi/numa.c +1 -1
@@ -38,7 +38,7 @@ ACPI_MODULE_NAME("numa");static nodemask_t nodes_found_map =NODE_MASK_NONE ;/* maps to convert between proximity domain and logical node ID */ -static int pxm_to_node_map[MAX_PXM_DOMAINS ] +static numanode_t pxm_to_node_map[MAX_PXM_DOMAINS ] = { [0 ...MAX_PXM_DOMAINS -1 ] =NID_INVAL };static int node_to_pxm_map[MAX_NUMNODES ] = { [0 ...MAX_NUMNODES -1 ] =PXM_INVAL };
include/asm-x86/mmzone_64.h +3 -3
@@ -15,9 +15,9 @@struct memnode {int shift;unsigned int mapsize; -u8 *map; -u8 embedded_map[64 -16 ]; -}____cacheline_aligned ;/* total size = 64 bytes */ +u16 *map; +u16 embedded_map[64 -8 ]; +}____cacheline_aligned ;/* total size = 128 bytes */ extern struct memnode memnode;#define memnode_shift memnode.shift#define memnodemap memnode.map
include/linux/numa.h +6 -0
@@ -10,4 +10,10 @@#define MAX_NUMNODES (1 << NODES_SHIFT) +#if MAX_NUMNODES >256 +typedef u16 numanode_t ; +#else +typedef u8 numanode_t ; +#endif +#endif /* _LINUX_NUMA_H */
Signature · 5 lines
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
include/linux/numa.h line 18
Quoted 12 lines · On Jan 18 2008 10:30, [email protected] wrote:
include/linux/numa.h +6
-0@@ -10,4 +10,10 @@#define MAX_NUMNODES (1 << NODES_SHIFT) +#if MAX_NUMNODES >256 +typedef u16 numanode_t ; +#else +typedef u8 numanode_t ; +#endif +
Do we really need numanode_t in userspace? I'd rather not, especially when its type is dependent on MAX_NUMNODES. Wrap with #ifdef __KERNEL__.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
Quoted 7 lines · Jan Engelhardt
Quoted 6 lines · On Jan 18 2008 10:30, [email protected] wrote:
include/linux/numa.h +0
-0@@ -10,4 +10,10 @@#define MAX_NUMNODES (1 << NODES_SHIFT)
Quoted 9 lines
include/linux/numa.h line 18
Quoted 6 lines
include/linux/numa.h +6
-0+#if MAX_NUMNODES >256 +typedef u16 numanode_t ; +#else +typedef u8 numanode_t ; +#endif +Do we really need
numanode_tin userspace? I'd rather not, especially when its type is dependent onMAX_NUMNODES. Wrap with #ifdef__KERNEL__.
Will do, thanks.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
In reply to [email protected]Quoted 42 lines · On Jan 18, 2008 10:30 AM, <[email protected]> wrote:
Change the size of node ids for
X86_64from 8 bits to 16 bits to accomodate more than 256 nodes.Introduce a "
numanode_t" type for x86-generic usage.Cc Eric Dumazet <[email protected]>Signed-off-by Mike Travis <[email protected]>Reviewed-by Christoph Lameter <[email protected]>---
Fixup:Size of memnode.embedded_map needs to be changed to accomodate 16-bit node ids as suggested by Eric.
V2->V3:
- changed memnode.embedded_map from [64-16] to [64-8] (and size comment to 128 bytes)
V1->V2:
- changedpxm_to_node_mapto u16
- changed memnode map entries to u16--- arch/x86/mm/numa_64.c | 2 +- drivers/acpi/numa.c | 2 +- include/asm-x86/mmzone_64.h | 6 +++--- include/linux/numa.h | 6 ++++++ 4 files changed, 11 insertions(+), 5 deletions(-)arch/x86/mm/numa_64.c +1
-1@@ -88,7 +88,7 @@ static int __init allocate_cachealigned_unsigned long pad, pad_addr; memnodemap = memnode.embedded_map; -if (memnodemapsize <=48 ) +if (memnodemapsize <=ARRAY_SIZE (memnode.embedded_map))return 0 ; pad =L1_CACHE_BYTES -1 ;
drivers/acpi/numa.c ACPI_MODULE_NAME("numa"); · line 44
Quoted 8 lines
drivers/acpi/numa.c +1
-1@@ -38,7 +38,7 @@ ACPI_MODULE_NAME("numa");static nodemask_t nodes_found_map =NODE_MASK_NONE ;/* maps to convert between proximity domain and logical node ID */ -static int pxm_to_node_map[MAX_PXM_DOMAINS ] +static numanode_t pxm_to_node_map[MAX_PXM_DOMAINS ] = { [0 ...MAX_PXM_DOMAINS -1 ] =NID_INVAL };static int node_to_pxm_map[MAX_NUMNODES ] = { [0 ...MAX_NUMNODES -1 ] =PXM_INVAL };
...>
drivers/acpi/numa.c
Quoted 9 lines
#define
MAX_NUMNODES(1 <<NODES_SHIFT)drivers/acpi/numa.c +6
-0+#if MAX_NUMNODES >256 +typedef u16 numanode_t ; +#else +typedef u8 numanode_t ; +#endif +#endif /* _LINUX_NUMA_H */
that is wrong, you can not change pxm_to_node_map from int to u8 or u16.
int acpi_map_pxm_to_node(int pxm)
{
int node = pxm_to_node_map[pxm];
if (node < 0){
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES)
return NID_INVAL;
node = first_unset_node(nodes_found_map);
__acpi_map_pxm_to_node(pxm, node);
node_set(node, nodes_found_map);
}
return node;
}node will will be always 255 or 65535
please keep that to int.
I got
SART: PXM 0 -> APIC 0 -> Node 255
SART: PXM 0 -> APIC 1 -> Node 255
SART: PXM 1 -> APIC 2 -> Node 255
SART: PXM 1 -> APIC 3 -> Node 255
YH
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
Quoted 10 lines · Yinghai Lu
include/linux/numa.h line 19
Quoted 7 lines
include/linux/numa.h +6
-0+#if MAX_NUMNODES >256 +typedef u16 numanode_t ; +#else +typedef u8 numanode_t ; +#endif +#endif /* _LINUX_NUMA_H */ that is wrong, you can not change
pxm_to_node_mapfrom int to u8 or u16.
Yeah, NID_INVAL is negative so no unsigned type will work here, unfortunately. And that reduces the intended savings of your change since the smaller type can only be used with a smaller CONFIG_NODES_SHIFT.
Quoted 15 lines
int
acpi_map_pxm_to_node(int pxm){ int node = pxm_to_node_map[pxm]; if (node < 0){ if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); } return node; }
Quoted 2 lines
node will will be always 255 or 65535
Right.
Quoted 8 lines
please keep that to int.
I got
SART: PXM 0 -> APIC 0 -> Node 255
SART: PXM 0 -> APIC 1 -> Node 255
SART: PXM 1 -> APIC 2 -> Node 255
SART: PXM 1 -> APIC 3 -> Node 255
I assume this is a typo and those proximity mappings are actually from the SRAT.
David
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
Quoted 46 lines · David Rientjes
Quoted 10 lines · Yinghai Lu
include/linux/numa.h line 19
Quoted 7 lines
include/linux/numa.h +6
-0+#if MAX_NUMNODES >256 +typedef u16 numanode_t ; +#else +typedef u8 numanode_t ; +#endif +#endif /* _LINUX_NUMA_H */ that is wrong, you can not change
pxm_to_node_mapfrom int to u8 or u16.Yeah,
NID_INVALis negative so no unsigned type will work here, unfortunately. And that reduces the intended savings of your change since the smaller type can only be used with a smallerCONFIG_NODES_SHIFT.Quoted 15 lines
int
acpi_map_pxm_to_node(int pxm){ int node = pxm_to_node_map[pxm]; if (node < 0){ if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); } return node; }Quoted 2 lines
node will will be always 255 or 65535
Right.
Quoted 8 lines
please keep that to int.
I got
SART: PXM 0 -> APIC 0 -> Node 255
SART: PXM 0 -> APIC 1 -> Node 255
SART: PXM 1 -> APIC 2 -> Node 255
SART: PXM 1 -> APIC 3 -> Node 255
Quoted 2 lines
I assume this is a typo and those proximity mappings are actually from the SRAT.
SRAT for processor only have
PXM and APIC id. setup_node(pxm) will get node id for pxm, start from 0...
Quoted 7 lines
Quoted 7 lines
if (node < 0){ if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }
YH
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
Quoted 7 lines · Yinghai Lu
Quoted 7 lines
Quoted 6 lines
I got
SART: PXM 0 -> APIC 0 -> Node 255
SART: PXM 0 -> APIC 1 -> Node 255
SART: PXM 1 -> APIC 2 -> Node 255
SART: PXM 1 -> APIC 3 -> Node 255
Quoted 6 lines
Quoted 2 lines
I assume this is a typo and those proximity mappings are actually from the SRAT.
SRAT for processor only have
PXM and APIC id.setup_node(pxm)will get node id for pxm, start from 0...
I was referring to "SART" in your log.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
Quoted 9 lines · David Rientjes
Quoted 7 lines · Yinghai Lu
Quoted 7 lines
Quoted 6 lines
I got
SART: PXM 0 -> APIC 0 -> Node 255
SART: PXM 0 -> APIC 1 -> Node 255
SART: PXM 1 -> APIC 2 -> Node 255
SART: PXM 1 -> APIC 3 -> Node 255
Quoted 8 lines
Quoted 6 lines
Quoted 2 lines
I assume this is a typo and those proximity mappings are actually from the SRAT.
SRAT for processor only have
PXM and APIC id.setup_node(pxm)will get node id for pxm, start from 0...I was referring to "SART" in your log.
i should copy it instead of type it...
YH
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
In reply to David RientjesQuoted 11 lines · David Rientjes
Quoted 9 lines · Yinghai Lu
include/linux/numa.h line 19
Quoted 7 lines
include/linux/numa.h +6
-0+#if MAX_NUMNODES >256 +typedef u16 numanode_t ; +#else +typedef u8 numanode_t ; +#endif +#endif /* _LINUX_NUMA_H */ that is wrong, you can not change
pxm_to_node_mapfrom int to u8 or u16.
Thanks for finding this!
Quoted 5 lines
Yeah,
NID_INVALis negative so no unsigned type will work here, unfortunately. And that reduces the intended savings of your change since the smaller type can only be used with a smallerCONFIG_NODES_SHIFT.
Excuse my ignorance but why wouldn't this work:
static numanode_t pxm_to_node_map[MAX_PXM_DOMAINS]
= { [0 ... MAX_PXM_DOMAINS - 1] = NUMA_NO_NODE };...
Quoted 5 lines
Quoted 2 lines
int
acpi_map_pxm_to_node(int pxm)
{int node = pxm_to_node_map[pxm]; if (node < 0)
numanode_t node = pxm_to_node_map[pxm];
if (node != NUMA_NO_NODE) {Quoted 6 lines
Quoted 6 lines
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }
or change:
#define NID_INVAL (-1)
to
#define NID_INVAL ((numanode_t)(-1))
...
if (node != NID_INVAL) {Quoted 6 lines
Quoted 6 lines
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }
Though why there two "node invalid" values I'm not sure... ?
Quoted 3 lines
Quoted 3 lines
return node; }
And btw, shouldn't the pxm value be sized to numanode_t size as well? Will it ever be larger than the largest node id?
Thanks,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
Quoted 9 lines · Mike Travis
Quoted 4 lines
Yeah,
NID_INVALis negative so no unsigned type will work here, unfortunately. And that reduces the intended savings of your change since the smaller type can only be used with a smallerCONFIG_NODES_SHIFT.Excuse my ignorance but why wouldn't this work:
static
numanode_tpxm_to_node_map[MAX_PXM_DOMAINS]= { [0 ... MAX_PXM_DOMAINS - 1] = NUMA_NO_NODE };
Quoted 9 lines
...
Quoted 5 lines
Quoted 2 lines
int
acpi_map_pxm_to_node(int pxm)
{int node = pxm_to_node_map[pxm]; if (node < 0)numanode_t node = pxm_to_node_map[pxm];
Because NUMA_NO_NODE is 0xff on x86. That's a valid node id for configurations with CONFIG_NODES_SHIFT equal to or greater than 8.
Quoted 1 line
if (node != NUMA_NO_NODE) {Wrong, this should be
node == NUMA_NO_NODE
Quoted 7 lines
Quoted 6 lines
Quoted 6 lines
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }
The net result of this is that if a proximity domain is looked up through acpi_map_pxm_to_node() and already has a mapping to node 255 (legal with CONFIG_NODES_SHIFT == 8), this function will return NID_INVAL since the weight of nodes_found_map is equal to MAX_NUMNODES.
You simply can't use valid node id's to signify invalid or unused node ids.
Quoted 6 lines
or change:
#define NID_INVAL (-1) to #define NID_INVAL ((numanode_t)(-1)) ... if (node != NID_INVAL) {
You mean
node == NID_INVAL
Quoted 7 lines
Quoted 6 lines
Quoted 6 lines
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }
That's the equivalent of your NUMA_NO_NODE code above. The fact remains that (numanode_t)-1 is still a valid node id for MAX_NUMNODES >= 256.
So, as I said in my initial reply, the only way to get the savings you're looking for is to use u8 for CONFIG_NODES_SHIFT <= 7 and then convert all NID_INVAL users to use NUMA_NO_NODE.
Additionally, Linux has always discouraged typedefs when they do not define an architecture-specific size. The savings from your patch for CONFIG_NODES_SHIFT == 7 would be 256 bytes for this mapping.
It's simply not worth it.
Quoted 3 lines
And btw, shouldn't the pxm value be sized to
numanode_tsize as well? Will it ever be larger than the largest node id?
Section 6.2.9 of ACPI 2.0 states that PXM's return an integer, so that would be non-conforming to the standard.
Additionally, PXM's are not nodes, so casting them to anything called numanode_t shows the semantic flaw in your patch.
David
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
Quoted 13 lines · David Rientjes
Quoted 11 lines · Mike Travis
Quoted 4 lines
Yeah,
NID_INVALis negative so no unsigned type will work here, unfortunately. And that reduces the intended savings of your change since the smaller type can only be used with a smallerCONFIG_NODES_SHIFT.Excuse my ignorance but why wouldn't this work:
static
numanode_tpxm_to_node_map[MAX_PXM_DOMAINS]= { [0 ... MAX_PXM_DOMAINS - 1] = NUMA_NO_NODE };...
Quoted 2 lines
Quoted 2 lines
int
acpi_map_pxm_to_node(int pxm)
{
Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
int node = pxm_to_node_map[pxm]; if (node < 0)numanode_t node = pxm_to_node_map[pxm];Because
NUMA_NO_NODEis0xffon x86. That's a valid node id for configurations withCONFIG_NODES_SHIFTequal to or greater than 8.
Perhaps numanode_t should be set to u16 if MAX_NUMNODES > 255 to allow for an invalid value of 255?
#if MAX_NUMNODES > 255
typedef u16 numanode_t;
#else
typedef u8 numanode_t;
#endif
Quoted 6 lines
Quoted 2 lines
if (node != NUMA_NO_NODE) {Wrong, this should be
node == NUMA_NO_NODE
Oops, yes you're right.
Quoted 34 lines
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }The net result of this is that if a proximity domain is looked up through
acpi_map_pxm_to_node()and already has a mapping to node 255 (legal withCONFIG_NODES_SHIFT== 8), this function will returnNID_INVALsince the weight ofnodes_found_mapis equal toMAX_NUMNODES.You simply can't use valid node id's to signify invalid or unused node ids.
Quoted 6 lines
or change:
#define NID_INVAL (-1) to #define NID_INVAL ((numanode_t)(-1)) ... if (node != NID_INVAL) {You mean
node == NID_INVALQuoted 6 lines
Quoted 6 lines
Quoted 6 lines
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }
Quoted 6 lines
That's the equivalent of your
NUMA_NO_NODEcode above. The fact remains that (numanode_t)-1 is still a valid node id forMAX_NUMNODES>= 256.So, as I said in my initial reply, the only way to get the savings you're looking for is to use u8 for
CONFIG_NODES_SHIFT<= 7 and then convert allNID_INVALusers to useNUMA_NO_NODE.
Yes, I agree. I'll do the changes you're suggesting.
Quoted 5 lines
Additionally, Linux has always discouraged typedefs when they do not define an architecture-specific size. The savings from your patch for
CONFIG_NODES_SHIFT== 7 would be 256 bytes for this mapping.It's simply not worth it.
So are you saying that I should just use u16 for all node ids whether CONFIG_NODES_SHIFT > 7 or not? Othersise, I would think that defining a typedef is a fairly clean solution.
A quick grep shows that there are 35 arrays defined by MAX_NUMNODES in x86_64, 38 in X86_32 (not verified.) So it's not exactly a trivial amount of memory.
Quoted 10 lines
Quoted 4 lines
And btw, shouldn't the pxm value be sized to
numanode_tsize as well? Will it ever be larger than the largest node id?Section 6.2.9 of ACPI 2.0 states that PXM's return an integer, so that would be non-conforming to the standard.
Additionally, PXM's are not nodes, so casting them to anything called
numanode_tshows the semantic flaw in your patch.
Thanks for the info. I wasn't sure exactly what the PXM value represents.
Quoted 2 lines
David
Thanks again,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
Quoted 91 lines · Mike Travis
Quoted 13 lines · David Rientjes
Quoted 11 lines · Mike Travis
Quoted 4 lines
Yeah,
NID_INVALis negative so no unsigned type will work here, unfortunately. And that reduces the intended savings of your change since the smaller type can only be used with a smallerCONFIG_NODES_SHIFT.Excuse my ignorance but why wouldn't this work:
static
numanode_tpxm_to_node_map[MAX_PXM_DOMAINS]= { [0 ... MAX_PXM_DOMAINS - 1] = NUMA_NO_NODE };...
Quoted 2 lines
Quoted 2 lines
int
acpi_map_pxm_to_node(int pxm)
{Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
int node = pxm_to_node_map[pxm]; if (node < 0)numanode_t node = pxm_to_node_map[pxm];Because
NUMA_NO_NODEis0xffon x86. That's a valid node id for configurations withCONFIG_NODES_SHIFTequal to or greater than 8.Perhaps
numanode_tshould be set to u16 ifMAX_NUMNODES> 255 to allow for an invalid value of 255?#if
MAX_NUMNODES> 255
typedef u16numanode_t;
#else
typedef u8numanode_t;
#endifQuoted 6 lines
Quoted 2 lines
if (node != NUMA_NO_NODE) {Wrong, this should be
node == NUMA_NO_NODEOops, yes you're right.
Quoted 34 lines
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }The net result of this is that if a proximity domain is looked up through
acpi_map_pxm_to_node()and already has a mapping to node 255 (legal withCONFIG_NODES_SHIFT== 8), this function will returnNID_INVALsince the weight ofnodes_found_mapis equal toMAX_NUMNODES.You simply can't use valid node id's to signify invalid or unused node ids.
Quoted 6 lines
or change:
#define NID_INVAL (-1) to #define NID_INVAL ((numanode_t)(-1)) ... if (node != NID_INVAL) {You mean
node == NID_INVALQuoted 6 lines
Quoted 6 lines
Quoted 6 lines
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES) return NID_INVAL; node = first_unset_node(nodes_found_map); __acpi_map_pxm_to_node(pxm, node); node_set(node, nodes_found_map); }Quoted 6 lines
That's the equivalent of your
NUMA_NO_NODEcode above. The fact remains that (numanode_t)-1 is still a valid node id forMAX_NUMNODES>= 256.So, as I said in my initial reply, the only way to get the savings you're looking for is to use u8 for
CONFIG_NODES_SHIFT<= 7 and then convert allNID_INVALusers to useNUMA_NO_NODE.Yes, I agree. I'll do the changes you're suggesting.
Quoted 5 lines
Additionally, Linux has always discouraged typedefs when they do not define an architecture-specific size. The savings from your patch for
CONFIG_NODES_SHIFT== 7 would be 256 bytes for this mapping.It's simply not worth it.
Quoted 7 lines
So are you saying that I should just use u16 for all node ids whether
CONFIG_NODES_SHIFT> 7 or not? Othersise, I would think that defining a typedef is a fairly clean solution.A quick grep shows that there are 35 arrays defined by
MAX_NUMNODESinx86_64, 38 inX86_32(not verified.) So it's not exactly a trivial amount of memory.
just use int for node id, and -1 will be NON_VALID... or s16?
YH
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 1/5] x86: Change size of node ids from u8 to u16 fixup
In reply to Mike TravisQuoted 10 lines · Mike Travis
Quoted 10 lines
Quoted 10 lines
Excuse my ignorance but why wouldn't this work:
static
numanode_tpxm_to_node_map[MAX_PXM_DOMAINS]= { [0 ... MAX_PXM_DOMAINS - 1] = NUMA_NO_NODE };...
Quoted 5 lines
Quoted 2 lines
int
acpi_map_pxm_to_node(int pxm)
{int node = pxm_to_node_map[pxm]; if (node < 0)
Quoted 9 lines
Quoted 5 lines
Quoted 2 lines
numanode_t node = pxm_to_node_map[pxm];Because
NUMA_NO_NODEis0xffon x86. That's a valid node id for configurations withCONFIG_NODES_SHIFTequal to or greater than 8.Perhaps
numanode_tshould be set to u16 ifMAX_NUMNODES> 255 to allow for an invalid value of 255?
Throughout the NUMA code you need a way to distinguish between an invalid mapping and an actual node id. NID_INVAL is used to say there are no additional node ids available for this system, the pxm-to-node mapping doesn't yet exist, etc.
You can't get away with using a magic positive integer with those semantics because CONFIG_NODES_SHIFT determines MAX_NUMNODES. All nodemasks will have that many bits in their struct. So 255 will always be a valid node id for shifts of 8 or larger. It isn't feasible to say for these types of systems (or ia64 where the default shift is 10) that 255 is some magic node id that means its invalid.
NID_INVAL is the only way to signify an invalid node id and that has always been done with -1. So objects that store node ids that have the possibility of being invalid must be signed. The only time you can use unsigned objects are when you are guaranteed to have valid node ids.
Quoted 10 lines
Quoted 5 lines
Additionally, Linux has always discouraged typedefs when they do not define an architecture-specific size. The savings from your patch for
CONFIG_NODES_SHIFT== 7 would be 256 bytes for this mapping.It's simply not worth it.
So are you saying that I should just use u16 for all node ids whether
CONFIG_NODES_SHIFT> 7 or not? Othersise, I would think that defining a typedef is a fairly clean solution.
You're assuming that CONFIG_NODES_SHIFT will never been larger than that and you still wouldn't be able to use your new numanode_t for anything that could return NID_INVAL.
Quoted 4 lines
A quick grep shows that there are 35 arrays defined by
MAX_NUMNODESinx86_64, 38 inX86_32(not verified.) So it's not exactly a trivial amount of memory.
You're spinning the argument. Most of those arrays are not simply returning node ids; most are returning structs or are arrays of unsigned long type that return addresses. Those are unaffected by your change. Others are initdata and is freed after boot anyway.
The handful of arrays thoughout the source that return node ids and are not initdata would only save MAX_NUMNODES number of bytes with your change for 8-bytes instead of 16-bytes. You're right, you might save a KB of memory with the change. It's not worth it, especially since they need to be signed anyway.
David
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH 2/5 x86: Change NR_CPUS arrays in numa_64 fixup
In reply to [email protected]Change the following static arrays sized by NR_CPUS to per_cpu data variables:
char cpu_to_node_map[NR_CPUS];
---
fixup:
- Split cpu_to_node function into "early" and "late" versions so that x86_cpu_to_node_map_early_ptr is not EXPORT'ed and the cpu_to_node inline function is more streamlined.
- This also involves setting up the percpu maps as early as possible.
- Fix X86_32 NUMA build errors that previous version of this patch caused.
V2->V3:
- add early_cpu_to_node function to keep cpu_to_node efficient
- move and rename smp_set_apicids() to setup_percpu_maps()
- call setup_percpu_maps() as early as possible
V1->V2:
- Removed extraneous casts
- Fix !NUMA builds with '#ifdef CONFIG_NUMA"
--- arch/x86/kernel/setup64.c | 41 +++++++++++++++++++++++++++++++++++++++-- arch/x86/kernel/smpboot_32.c | 2 +- arch/x86/kernel/smpboot_64.c | 34 ---------------------------------- arch/x86/mm/numa_64.c | 2 -- arch/x86/mm/srat_64.c | 5 +++-- include/asm-x86/topology.h | 23 +++++++++++++++++++++++ 6 files changed, 66 insertions(+), 41 deletions(-)
arch/x86/kernel/setup64.c +39 -2
@@ -84,6 +84,40 @@ static int __init nonx32_setup(char *str__setup ("noexec32=" , nonx32_setup);/* +* Copy data used in early init routines from the initial arrays to the +* per cpu data areas. These arrays then become expendable and the *_ptrs +* are zeroed indicating that the static arrays are gone. +*/ +void __init setup_percpu_maps (void ) +{ +int cpu; + +for_each_possible_cpu (cpu) { +#ifdef CONFIG_SMP +if (per_cpu_offset (cpu)) { +#endif +per_cpu (x86_cpu_to_apicid, cpu) = + x86_cpu_to_apicid_init[cpu]; +#ifdef CONFIG_NUMA +per_cpu (x86_cpu_to_node_map, cpu) = + x86_cpu_to_node_map_init[cpu]; +#endif +#ifdef CONFIG_SMP + } +else +printk (KERN_NOTICE "per_cpu_offset zero for cpu %d\n" , + cpu); +#endif + } + +/* indicate the early static arrays are gone */ + x86_cpu_to_apicid_early_ptr =NULL ; +#ifdef CONFIG_NUMA + x86_cpu_to_node_map_early_ptr =NULL ; +#endif +} + +/* * Great future plan: * Declare PDA itself and support (irqstack,tss,pgd) as per cpu data. * Always point %gs to its beginning
@@ -104,18 +138,21 @@ void __init setup_per_cpu_areas(void) for_each_cpu_mask (i, cpu_possible_map) {char *ptr; -if (!NODE_DATA (cpu_to_node (i))) { +if (!NODE_DATA (early_cpu_to_node (i))) {printk ("cpu with no node %d, num_online_nodes %d\n" , i,num_online_nodes ()); ptr =alloc_bootmem_pages (size); }else { - ptr =alloc_bootmem_pages_node (NODE_DATA (cpu_to_node (i)), size); + ptr =alloc_bootmem_pages_node (NODE_DATA (early_cpu_to_node (i)), size); }if (!ptr)panic ("Cannot allocate cpu data for CPU %d\n" , i);cpu_pda (i)->data_offset = ptr - __per_cpu_start;memcpy (ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start); } + +/* setup percpu data maps early */ +setup_percpu_maps (); }void pda_init (int cpu)
arch/x86/kernel/smpboot_32.c +1 -1
@@ -463,7 +463,7 @@ cpumask_t node_to_cpumask_map[MAX_NUMNOD { [0 ... MAX_NUMNODES-1] = CPU_MASK_NONE };EXPORT_SYMBOL (node_to_cpumask_map);/* which node each logical CPU is on */ -int cpu_to_node_map[NR_CPUS ]__read_mostly = { [0 ...NR_CPUS -1 ] =0 }; +u8 cpu_to_node_map[NR_CPUS ]__read_mostly = { [0 ...NR_CPUS -1 ] =0 };EXPORT_SYMBOL (cpu_to_node_map);/* set up a mapping between cpu and node. */
arch/x86/kernel/smpboot_64.c +0 -34
@@ -851,39 +851,6 @@ static int __init smp_sanity_check(unsigreturn 0 ; } -/* -* Copy data used in early init routines from the initial arrays to the -* per cpu data areas. These arrays then become expendable and the -* *_ptrs are zeroed indicating that the static arrays are gone. -*/ -void __init smp_set_apicids (void ) -{ -int cpu; - -for_each_possible_cpu (cpu) { -if (per_cpu_offset (cpu)) { -per_cpu (x86_cpu_to_apicid, cpu) = - x86_cpu_to_apicid_init[cpu]; -#ifdef CONFIG_NUMA -per_cpu (x86_cpu_to_node_map, cpu) = - x86_cpu_to_node_map_init[cpu]; -#endif -per_cpu (x86_bios_cpu_apicid, cpu) = - x86_bios_cpu_apicid_init[cpu]; - } -else -printk (KERN_NOTICE "per_cpu_offset zero for cpu %d\n" , - cpu); - } - -/* indicate the early static arrays are gone */ - x86_cpu_to_apicid_early_ptr =NULL ; -#ifdef CONFIG_NUMA - x86_cpu_to_node_map_early_ptr =NULL ; -#endif - x86_bios_cpu_apicid_early_ptr =NULL ; -} -static void __init smp_cpu_index_default (void ) {int i;
@@ -906,7 +873,6 @@ void __init smp_prepare_cpus(unsigned insmp_cpu_index_default (); current_cpu_data = boot_cpu_data;current_thread_info ()->cpu =0 ;/* needed? */ -smp_set_apicids ();set_cpu_sibling_map (0 );if (smp_sanity_check (max_cpus) <0 ) {
arch/x86/mm/numa_64.c +0 -2
@@ -35,8 +35,6 @@ u16 x86_cpu_to_node_map_init[NR_CPUS] = [0 ... NR_CPUS-1] = NUMA_NO_NODE };void *x86_cpu_to_node_map_early_ptr; -EXPORT_SYMBOL (x86_cpu_to_node_map_init); -EXPORT_SYMBOL (x86_cpu_to_node_map_early_ptr);DEFINE_PER_CPU (u16, x86_cpu_to_node_map) =NUMA_NO_NODE ;EXPORT_PER_CPU_SYMBOL (x86_cpu_to_node_map);
arch/x86/mm/srat_64.c +3 -2
@@ -382,9 +382,10 @@ int __init acpi_scan_nodes(unsigned longsetup_node_bootmem (i, nodes[i].start, nodes[i].end);for (i =0 ; i <NR_CPUS ; i++) { -if (cpu_to_node (i) ==NUMA_NO_NODE ) +int node =cpu_to_node (i); +if (node ==NUMA_NO_NODE )continue ; -if (!node_isset (cpu_to_node (i), node_possible_map)) +if (!node_isset (node, node_possible_map))numa_set_node (i,NUMA_NO_NODE ); }numa_init_array ();
include/asm-x86/topology.h +23 -0
@@ -30,16 +30,30 @@#include <asm/mpspec.h> /* Mappings between logical cpu number and node number */ +#ifdef CONFIG_X86_32 +extern u8 cpu_to_node_map[]; + +#else DECLARE_PER_CPU (u16, x86_cpu_to_node_map);extern u16 x86_cpu_to_node_map_init[];extern void *x86_cpu_to_node_map_early_ptr; +#endif +extern cpumask_t node_to_cpumask_map[];#define NUMA_NO_NODE ((u16)(~0))/* Returns the number of the node containing CPU 'cpu' */ +#ifdef CONFIG_X86_32 +#define early_cpu_to_node (cpu) cpu_to_node(cpu)static inline int cpu_to_node (int cpu) { +return cpu_to_node_map[cpu]; +} + +#else /* CONFIG_X86_64 */ +static inline int early_cpu_to_node (int cpu) +{u16 *cpu_to_node_map = x86_cpu_to_node_map_early_ptr;if (cpu_to_node_map)
@@ -50,6 +64,15 @@ static inline int cpu_to_node(int cpu) return NUMA_NO_NODE; } +static inline int cpu_to_node (int cpu) +{ +if (per_cpu_offset (cpu)) +return per_cpu (x86_cpu_to_node_map, cpu); +else +return NUMA_NO_NODE ; +} +#endif /* CONFIG_X86_64 */ +/* * Returns the number of the node containing Node 'node'. This * architecture is flat, so it is a pretty simple function!
Signature · 5 lines
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH 3/5 x86: Change bios_cpu_apicid to percpu data variable fixup
In reply to [email protected]Change static bios_cpu_apicid array to a per_cpu data variable. This includes using a static array used during initialization similar to the way x86_cpu_to_apicid[] is handled.
There is one early use of bios_cpu_apicid in apic_is_clustered_box(). The other reference in cpu_present_to_apicid() is called after smp_set_apicids() has setup the percpu version of bios_cpu_apicid.
---V1->V2:
- Removed extraneous casts
- Add slight optimization to apic_is_clustered_box() [don't reference x86_bios_cpu_apicid_early_ptr each pass.]
--- arch/x86/kernel/apic_64.c | 6 +++--- arch/x86/kernel/setup64.c | 3 +++ arch/x86/kernel/setup_64.c | 1 + 3 files changed, 7 insertions(+), 3 deletions(-)
arch/x86/kernel/apic_64.c +3 -3
@@ -1191,9 +1191,9 @@ __cpuinit int apic_is_clustered_box(void/* Problem: Partially populated chassis may not have CPUs in some of * the APIC clusters they have been allocated. Only present CPUs have -* x86_bios_cpu_apicid entries, thus causing zeroes in the bitmap. Since -* clusters are allocated sequentially, count zeros only if they are -* bounded by ones. +* x86_bios_cpu_apicid entries, thus causing zeroes in the bitmap. +* Since clusters are allocated sequentially, count zeros only if +* they are bounded by ones. */ clusters =0 ; zeros =0 ;
arch/x86/kernel/setup64.c +3 -0
@@ -98,6 +98,8 @@ void __init setup_percpu_maps(void)#endif per_cpu (x86_cpu_to_apicid, cpu) = x86_cpu_to_apicid_init[cpu]; +per_cpu (x86_bios_cpu_apicid, cpu) = + x86_bios_cpu_apicid_init[cpu];#ifdef CONFIG_NUMA per_cpu (x86_cpu_to_node_map, cpu) = x86_cpu_to_node_map_init[cpu];
@@ -112,6 +114,7 @@ void __init setup_percpu_maps(void)/* indicate the early static arrays are gone */ x86_cpu_to_apicid_early_ptr =NULL ; + x86_bios_cpu_apicid_early_ptr =NULL ;#ifdef CONFIG_NUMA x86_cpu_to_node_map_early_ptr =NULL ;#endif
arch/x86/kernel/setup_64.c +1 -0
@@ -390,6 +390,7 @@ void __init setup_arch(char **cmdline_p)#ifdef CONFIG_SMP /* setup to use the early static init tables during kernel startup */ x86_cpu_to_apicid_early_ptr = (void *)&x86_cpu_to_apicid_init; + x86_bios_cpu_apicid_early_ptr = (void *)&x86_bios_cpu_apicid_init;#ifdef CONFIG_NUMA x86_cpu_to_node_map_early_ptr = (void *)&x86_cpu_to_node_map_init;#endif
Signature · 5 lines
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH 4/5 x86: Add config variables for SMP_MAX
In reply to [email protected]Adds and increases some config variables to accomodate larger SMP configurations:
NR_CPUS: max limit now 4096
NODES_SHIFT: max limit now 9
THREAD_ORDER: max limit now 3
X86_SMP_MAX: say Y to enable possible cpus == NR_CPUS
--- arch/x86/Kconfig | 17 ++++++++++++++--- arch/x86/Kconfig.debug | 9 +++++++++ arch/x86/kernel/smpboot_64.c | 4 ++++ include/asm-x86/page_64.h | 4 ++++ 4 files changed, 31 insertions(+), 3 deletions(-)
arch/x86/Kconfig +14 -3
@@ -487,19 +487,29 @@ config ARCH_SUPPORTS_KVM config NR_CPUS - int "Maximum number of CPUs (2-255)" - range 2 255 + int "Maximum number of CPUs (2-4096)" + range 2 4096 depends on SMP + default "1024" if X86_SMP_MAX default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000 default "8" help This allows you to specify the maximum number of CPUs which this - kernel will support. The maximum supported value is 255 and the + kernel will support. The maximum supported value is 4096 and the minimum value which makes sense is 2. This is purely to save memory - each supported CPU adds approximately eight kilobytes to the kernel image. +config THREAD_ORDER + int "Kernel stack size (in page order)" + range 1 3 + depends on X86_64_SMP + default "3" if X86_SMP_MAX + default "1" + help + Increases kernel stack size. + config SCHED_SMT bool "SMT (Hyperthreading) scheduler support" depends on (X86_64 && SMP) || (X86_32 && X86_HT)
@@ -882,6 +892,7 @@ config NUMA_EMU config NODES_SHIFT int + default "9" if X86_SMP_MAX default "6" if X86_64 default "4" if X86_NUMAQ default "3"
arch/x86/Kconfig.debug +9 -0
@@ -73,6 +73,15 @@ config X86_FIND_SMP_CONFIG depends on X86_LOCAL_APIC || X86_VOYAGER depends on X86_32 +config X86_SMP_MAX + bool "Enable Maximum SMP configuration" + def_bool n + depends on X86_64_SMP + help + Say Y here to enable a "large" SMP configuration for testing + purposes. It does this by increasing the number of possible + cpus to the NR_CPUS count. + config X86_MPPARSE def_bool y depends on (X86_32 && (X86_LOCAL_APIC && !X86_VISWS)) || X86_64
arch/x86/kernel/smpboot_64.c +4 -0
@@ -784,6 +784,10 @@ __init void prefill_possible_map(void) possible = num_processors + additional_cpus;if (possible >NR_CPUS ) possible =NR_CPUS ; +#ifdef CONFIG_SMP_MAX +if (possible <NR_CPUS ) + possible =NR_CPUS ; +#endif printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n", possible,
include/asm-x86/page_64.h +4 -0
@@ -3,7 +3,11 @@#define PAGETABLE_LEVELS 4 +#ifdef CONFIG_THREAD_ORDER +#define THREAD_ORDER CONFIG_THREAD_ORDER +#else #define THREAD_ORDER 1 +#endif #define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER)#define CURRENT_MASK (~(THREAD_SIZE-1))
Signature · 5 lines
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Hi Mike,
arch/x86/Kconfig config ARCH_SUPPORTS_KVM · line 512
Quoted 9 lines · On Friday 18 January 2008, [email protected] wrote:
arch/x86/Kconfig +9
-0+config THREAD_ORDER + int "Kernel stack size (in page order)" + range 1 3 + depends on X86_64_SMP + default "3" if X86_SMP_MAX + default "1" + help + Increases kernel stack size. +
Could you please elaborate, why this is needed and put more info about this requirement into this patch description?
People worked hard to push data allocation from stack to heap to make THREAD_ORDER of 0 and 1 possible. So why increase it again and why does this help scalability?
Many thanks and Best Regards
Ingo Oeser, puzzled a bit :-)
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Quoted 6 lines · Ingo Oeser
Hi Mike,
arch/x86/Kconfig config ARCH_SUPPORTS_KVM · line 506
Quoted 3 lines · On Friday 18 January 2008, [email protected] wrote:
arch/x86/Kconfig +3
-0+config THREAD_ORDER + int "Kernel stack size (in page order)" + range 1 3
THREAD_ORDER can also be used to consolidate the stack size with the choices available for i386. In that cases the choices are 0 and 1.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
In reply to Ingo OeserQuoted 16 lines · Ingo Oeser
Hi Mike,
arch/x86/Kconfig config ARCH_SUPPORTS_KVM · line 512
Quoted 9 lines · On Friday 18 January 2008, [email protected] wrote:
arch/x86/Kconfig +9
-0+config THREAD_ORDER + int "Kernel stack size (in page order)" + range 1 3 + depends on X86_64_SMP + default "3" if X86_SMP_MAX + default "1" + help + Increases kernel stack size. +Could you please elaborate, why this is needed and put more info about this requirement into this patch description?
Quoted 7 lines
People worked hard to push data allocation from stack to heap to make
THREAD_ORDERof 0 and 1 possible. So why increase it again and why does this help scalability?Many thanks and Best Regards
Ingo Oeser, puzzled a bit :-)
The primary problem arises because of cpumask_t local variables. Until I can deal with these, increasing NR_CPUS to a really large value increases stack size dramatically.
Here are the top stack consumers with NR_CPUS = 4k.
16392 isolated_cpu_setup
10328 build_sched_domains
8248 numa_initmem_init
4664 cpu_attach_domain
4104 show_shared_cpu_map
3656 centrino_target
3608 powernowk8_cpu_init
3192 sched_domain_node_span
3144 acpi_cpufreq_target
2584 __svc_create_thread
2568 cpu_idle_wait
2136 netxen_nic_flash_print
2104 powernowk8_target
2088 _cpu_down
2072 cache_add_dev
2056 get_cur_freq
0 acpi_processor_ffh_cstate_probe
2056 microcode_write
0 acpi_processor_get_throttling
2048 check_supported_cpuAnd I've yet to figure out how to accumulate stack sizes using call threads.
Thanks,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
First I think you have to get rid of the THREAD_ORDER stuff -- your goal of the whole patchkit after all is to allow distributions to support NR_CPUS==4096 in the standard kernels and I doubt any distribution will over chose a THREAD_ORDER > 1 in their standard kernels because it would be too unreliable on smaller systems.
Quoted 5 lines
Here are the top stack consumers with
NR_CPUS= 4k.16392 isolated_cpu_setup 10328 build_sched_domains 8248 numa_initmem_init
These should run single threaded early at boot so you can probably just make the cpumask_t variables static __initdata
Quoted 2 lines
4664 cpu_attach_domain
4104 show_shared_cpu_mapThese above are the real pigs. Fortunately they are all clearly slowpath (except perhaps show_shared_cpu_map) so just using heap allocations or when needed bootmem for them should be fine.
Quoted 3 lines
3656 centrino_target
3608 powernowk8_cpu_init
3192 sched_domain_node_spanx86-64 always has 8k stacks and separate interrupt stack. As long as the calls are not in some stack intensive layered context (like block IO processing path etc.) <3k shouldn't be too big an issue.
BTW there is a trick to get more stack space on x86-64 temporarily:
run it in a softirq. They got 16k stacks by default. Just leave enough left over for the hard irqs that might happen if you don't have interrupts disabled.
Quoted 13 lines
3144 acpi_cpufreq_target
2584 __svc_create_thread
2568 cpu_idle_wait
2136 netxen_nic_flash_print
2104 powernowk8_target
2088 _cpu_down
2072 cache_add_dev
2056 get_cur_freq
0 acpi_processor_ffh_cstate_probe
2056 microcode_write
0 acpi_processor_get_throttling
2048 check_supported_cpuQuoted 2 lines
And I've yet to figure out how to accumulate stack sizes using call threads.
One way if you don't care about indirect/asm calls is to use cflow and do some post processing that adds up the data from checkstack.pl
The other way is to use mcount, but only for situations you can reproduce of course. I did have a 2.4 mcount based stack instrumentation patch some time ago that I could probably dig out if it was useful.
-Andi
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Quoted 52 lines · Andi Kleen
First I think you have to get rid of the
THREAD_ORDERstuff -- your goal of the whole patchkit after all is to allow distributions to support NR_CPUS==4096 in the standard kernels and I doubt any distribution will over chose aTHREAD_ORDER> 1 in their standard kernels because it would be too unreliable on smaller systems.Quoted 5 lines
Here are the top stack consumers with
NR_CPUS= 4k.16392 isolated_cpu_setup 10328 build_sched_domains 8248 numa_initmem_initThese should run single threaded early at boot so you can probably just make the
cpumask_tvariables static__initdataQuoted 2 lines
4664 cpu_attach_domain 4104 show_shared_cpu_mapThese above are the real pigs. Fortunately they are all clearly slowpath (except perhaps
show_shared_cpu_map) so just using heap allocations or when needed bootmem for them should be fine.Quoted 3 lines
3656 centrino_target 3608 powernowk8_cpu_init 3192 sched_domain_node_spanx86-64 always has 8k stacks and separate interrupt stack. As long as the calls are not in some stack intensive layered context (like block IO processing path etc.) <3k shouldn't be too big an issue.
BTW there is a trick to get more stack space on x86-64 temporarily:
run it in a softirq. They got 16k stacks by default. Just leave enough left over for the hard irqs that might happen if you don't have interrupts disabled.Quoted 13 lines
3144 acpi_cpufreq_target 2584 __svc_create_thread 2568 cpu_idle_wait 2136 netxen_nic_flash_print 2104 powernowk8_target 2088 _cpu_down 2072 cache_add_dev 2056 get_cur_freq 0 acpi_processor_ffh_cstate_probe 2056 microcode_write 0 acpi_processor_get_throttling 2048 check_supported_cpuQuoted 2 lines
And I've yet to figure out how to accumulate stack sizes using call threads.
Quoted 8 lines
One way if you don't care about indirect/asm calls is to use cflow and do some post processing that adds up the data from checkstack.pl
The other way is to use mcount, but only for situations you can reproduce of course. I did have a 2.4 mcount based stack instrumentation patch some time ago that I could probably dig out if it was useful.
-Andi
Thanks for the great feedback Andi. Since cpumask changes are the next item on my list after NR_CPUS (and friends) are dealt with, perhaps I could move the THREAD_ORDER stuff to the "Kernel Hacking" area for the interim?
And yes, I'm interested in any tools to help accumulate information.
Btw, there are 116 functions now that have >= 1k stack size.
Cheers,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX II
In reply to Andi KleenQuoted 8 lines
Quoted 5 lines
Here are the top stack consumers with
NR_CPUS= 4k.16392 isolated_cpu_setup 10328 build_sched_domains 8248 numa_initmem_initThese should run single threaded early at boot so you can probably just make the
cpumask_tvariables static__initdata
To correct myself: this is not true for build_sched_domains() which can be triggered from sysfs.
-Andi
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
In reply to Mike TravisQuoted 17 lines · Mike Travis
Quoted 17 lines
arch/x86/Kconfig config ARCH_SUPPORTS_KVM · line 512
Quoted 9 lines
arch/x86/Kconfig +9
-0+config THREAD_ORDER + int "Kernel stack size (in page order)" + range 1 3 + depends on X86_64_SMP + default "3" if X86_SMP_MAX + default "1" + help + Increases kernel stack size. +Could you please elaborate, why this is needed and put more info about this requirement into this patch description?
People worked hard to push data allocation from stack to heap to make
THREAD_ORDERof 0 and 1 possible. So why increase it again and why does this help scalability?
Quoted 8 lines
Quoted 3 lines
Many thanks and Best Regards
Ingo Oeser, puzzled a bit :-)
The primary problem arises because of
cpumask_tlocal variables. Until I can deal with these, increasingNR_CPUSto a really large value increases stack size dramatically.
those should be fixed:
Quoted 14 lines
Here are the top stack consumers with
NR_CPUS= 4k.16392 isolated_cpu_setup 10328 build_sched_domains 8248 numa_initmem_init 4664 cpu_attach_domain 4104 show_shared_cpu_map 3656 centrino_target 3608 powernowk8_cpu_init 3192 sched_domain_node_span 3144 acpi_cpufreq_target 2584 __svc_create_thread 2568 cpu_idle_wait 2136 netxen_nic_flash_print
Quoted 8 lines
2104 powernowk8_target
2088 _cpu_down
2072 cache_add_dev
2056 get_cur_freq
0 acpi_processor_ffh_cstate_probe
2056 microcode_write
0 acpi_processor_get_throttling
2048 check_supported_cpu(and most of that is performance-uncritical.)
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Quoted 51 lines · Ingo Molnar
Quoted 16 lines · Mike Travis
Quoted 16 lines
arch/x86/Kconfig config ARCH_SUPPORTS_KVM · line 512
Quoted 9 lines
arch/x86/Kconfig +9
-0+config THREAD_ORDER + int "Kernel stack size (in page order)" + range 1 3 + depends on X86_64_SMP + default "3" if X86_SMP_MAX + default "1" + help + Increases kernel stack size. +Could you please elaborate, why this is needed and put more info about this requirement into this patch description?
People worked hard to push data allocation from stack to heap to make
THREAD_ORDERof 0 and 1 possible. So why increase it again and why does this help scalability?Quoted 7 lines
Quoted 3 lines
Many thanks and Best Regards
Ingo Oeser, puzzled a bit :-)
The primary problem arises because of
cpumask_tlocal variables. Until I can deal with these, increasingNR_CPUSto a really large value increases stack size dramatically.those should be fixed:
Quoted 14 lines
Here are the top stack consumers with
NR_CPUS= 4k.16392 isolated_cpu_setup 10328 build_sched_domains 8248 numa_initmem_init 4664 cpu_attach_domain 4104 show_shared_cpu_map 3656 centrino_target 3608 powernowk8_cpu_init 3192 sched_domain_node_span 3144 acpi_cpufreq_target 2584 __svc_create_thread 2568 cpu_idle_wait 2136 netxen_nic_flash_printQuoted 8 lines
2104 powernowk8_target 2088 _cpu_down 2072 cache_add_dev 2056 get_cur_freq 0 acpi_processor_ffh_cstate_probe 2056 microcode_write 0 acpi_processor_get_throttling 2048 check_supported_cpu
Quoted 3 lines
(and most of that is performance-uncritical.)
Ingo
How big is the stack during early startup?
Thanks,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Quoted 1 line
How big is the stack during early startup?
THREAD_ORDER (runs on init_stack's stack)
early init stack could be increased in theory with some effort, but since that is all single threaded anyways just a few strategic static __initdata's should be simple enough.
-Andi
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
In reply to Mike TravisQuoted 8 lines · Mike
The primary problem arises because of
cpumask_tlocal variables. Until I can deal with these, increasingNR_CPUSto a really large value increases stack size dramatically.Here are the top stack consumers with
NR_CPUS= 4k.16392 isolated_cpu_setup 10328 build_sched_domains
The problem in kernel/sched.c:isolated_cpu_setup() is an array of NR_CPUS integers:
static int __init isolated_cpu_setup(char *str)
{
int ints[NR_CPUS], i;
str = get_options(str, ARRAY_SIZE(ints), ints);Since isolated_cpu_setup() is an __init routine, perhaps we could make that ints[] array static __initdata?
The build_sched_domains() may require more thought and code rework. See also the lkml discussion of my patches that reworked the cpuset code implementing 'sched_load_balance' calling into build_sched_domains () via kernel/sched.c:partition_sched_domains(). This is not performance critical code, fortunately.
Signature · 9 lines
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <[email protected]> 1.940.382.4214
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Quoted 11 lines
The problem in kernel/sched.c:isolated_cpu_setup() is an array of
NR_CPUSintegers:static int __init isolated_cpu_setup(char *str) { int ints[NR_CPUS], i; str = get_options(str, ARRAY_SIZE(ints), ints);Since
isolated_cpu_setup()is an__initroutine, perhaps we could make that ints[] array static__initdata?
That or use alloc_bootmem / free_bootmem
-Andi
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
In reply to [email protected]arch/x86/Kconfig config ARCH_SUPPORTS_KVM · line 511
Quoted 8 lines · * [email protected] <[email protected]> wrote:
arch/x86/Kconfig +8
-0+config THREAD_ORDER + int "Kernel stack size (in page order)" + range 1 3 + depends on X86_64_SMP + default "3" if X86_SMP_MAX + default "1" + help + Increases kernel stack size.
nack on kernel stack bloat. We worked hard to get the kernel stack footprint down to 4K on x86. (and it is 4K on most distros, despite there still being a legacy 8K stack size) No way are we going to throw away all that now ...
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
In reply to [email protected]Quoted 9 lines · * [email protected] <[email protected]> wrote:
Adds and increases some config variables to accomodate larger SMP configurations:
NR_CPUS: max limit now 4096
NODES_SHIFT: max limit now 9
THREAD_ORDER: max limit now 3
X86_SMP_MAX: say Y to enable possible cpus ==NR_CPUSSigned-off-by Mike Travis <[email protected]>
i've bisected a boot failure down to this patch (sans the THREAD_ORDER bits): it causes an instant reboot of the 64-bit kernel upon bootup. Failing config attached.
Ingo
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.24-rc8
# Sat Jan 19 15:47:36 2008
#CONFIG_64BIT=y
# CONFIG_X86_32 is not setCONFIG_X86_64=yCONFIG_X86=y
# CONFIG_GENERIC_LOCKBREAK is not set CONFIG_GENERIC_TIME=yCONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_SEMAPHORE_SLEEPERS=yCONFIG_MMU=yCONFIG_ZONE_DMA=y
# CONFIG_QUICKLIST is not set CONFIG_GENERIC_ISA_DMA=yCONFIG_GENERIC_IOMAP=yCONFIG_GENERIC_BUG=y
# CONFIG_GENERIC_GPIO is not set CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=yCONFIG_DMI=yCONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_ARCH_SETS_UP_PER_CPU_AREA=y CONFIG_ARCH_SUPPORTS_OPROFILE=y CONFIG_ZONE_DMA32=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_AUDIT_ARCH=yCONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=yCONFIG_X86_SMP=yCONFIG_X86_64_SMP=yCONFIG_X86_HT=yCONFIG_X86_TRAMPOLINE=y
# CONFIG_KTIME_SCALAR is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# General setup
#CONFIG_EXPERIMENTAL=yCONFIG_LOCK_KERNEL=yCONFIG_INIT_ENV_ARG_LIMIT=32CONFIG_LOCALVERSION=""CONFIG_LOCALVERSION_AUTO=yCONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=yCONFIG_POSIX_MQUEUE=yCONFIG_BSD_PROCESS_ACCT=yCONFIG_BSD_PROCESS_ACCT_V3=yCONFIG_TASKSTATS=yCONFIG_TASK_DELAY_ACCT=yCONFIG_TASK_XACCT=yCONFIG_TASK_IO_ACCOUNTING=yCONFIG_USER_NS=yCONFIG_PID_NS=yCONFIG_AUDIT=yCONFIG_AUDITSYSCALL=yCONFIG_AUDIT_TREE=yCONFIG_IKCONFIG=yCONFIG_IKCONFIG_PROC=yCONFIG_LOG_BUF_SHIFT=20CONFIG_CGROUPS=yCONFIG_CGROUP_DEBUG=yCONFIG_CGROUP_NS=yCONFIG_CPUSETS=yCONFIG_FAIR_GROUP_SCHED=yCONFIG_FAIR_USER_SCHED=y
# CONFIG_FAIR_CGROUP_SCHED is not setCONFIG_CGROUP_CPUACCT=yCONFIG_SYSFS_DEPRECATED=yCONFIG_PROC_PID_CPUSET=yCONFIG_RELAY=yCONFIG_BLK_DEV_INITRD=yCONFIG_INITRAMFS_SOURCE=""CONFIG_CC_OPTIMIZE_FOR_SIZE=yCONFIG_SYSCTL=yCONFIG_EMBEDDED=yCONFIG_UID16=yCONFIG_SYSCTL_SYSCALL=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=yCONFIG_KALLSYMS_EXTRA_PASS=yCONFIG_HOTPLUG=yCONFIG_PRINTK=yCONFIG_BUG=yCONFIG_ELF_CORE=yCONFIG_BASE_FULL=yCONFIG_FUTEX=yCONFIG_ANON_INODES=yCONFIG_EPOLL=yCONFIG_SIGNALFD=yCONFIG_EVENTFD=yCONFIG_SHMEM=yCONFIG_VM_EVENT_COUNTERS=yCONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not setCONFIG_SLUB=y
# CONFIG_SLOB is not setCONFIG_SLABINFO=yCONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not setCONFIG_BASE_SMALL=0CONFIG_MODULES=yCONFIG_MODULE_UNLOAD=yCONFIG_MODULE_FORCE_UNLOAD=yCONFIG_MODVERSIONS=yCONFIG_MODULE_SRCVERSION_ALL=yCONFIG_KMOD=yCONFIG_STOP_MACHINE=yCONFIG_BLOCK=yCONFIG_BLK_DEV_IO_TRACE=yCONFIG_BLK_DEV_BSG=yCONFIG_BLOCK_COMPAT=y
#
# IO Schedulers
#CONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_AS=yCONFIG_IOSCHED_DEADLINE=yCONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not setCONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not setCONFIG_DEFAULT_IOSCHED="cfq"CONFIG_PREEMPT_NOTIFIERS=y
#
# Processor type and features
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=yCONFIG_GENERIC_CLOCKEVENTS_BUILD=yCONFIG_SMP=yCONFIG_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_X86_RDC321X is not set
# CONFIG_X86_VSMP 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 is not set
# 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_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not setCONFIG_GENERIC_CPU=yCONFIG_X86_L1_CACHE_BYTES=128CONFIG_X86_INTERNODE_CACHE_BYTES=128CONFIG_X86_CMPXCHG=yCONFIG_X86_L1_CACHE_SHIFT=7CONFIG_X86_GOOD_APIC=yCONFIG_X86_TSC=yCONFIG_X86_MINIMUM_CPU_FAMILY=64CONFIG_X86_DEBUGCTLMSR=yCONFIG_HPET_TIMER=yCONFIG_HPET_EMULATE_RTC=yCONFIG_GART_IOMMU=yCONFIG_CALGARY_IOMMU=yCONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=yCONFIG_SWIOTLB=yCONFIG_NR_CPUS=8CONFIG_SCHED_SMT=yCONFIG_SCHED_MC=yCONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not setCONFIG_PREEMPT_BKL=yCONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=yCONFIG_X86_MCE=yCONFIG_X86_MCE_INTEL=yCONFIG_X86_MCE_AMD=yCONFIG_MICROCODE=yCONFIG_MICROCODE_OLD_INTERFACE=yCONFIG_X86_MSR=yCONFIG_X86_CPUID=yCONFIG_NUMA=yCONFIG_K8_NUMA=yCONFIG_X86_64_ACPI_NUMA=yCONFIG_NUMA_EMU=yCONFIG_NODES_SHIFT=9CONFIG_ARCH_SPARSEMEM_DEFAULT=yCONFIG_ARCH_SPARSEMEM_ENABLE=yCONFIG_ARCH_SELECT_MEMORY_MODEL=yCONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not setCONFIG_SPARSEMEM_MANUAL=yCONFIG_SPARSEMEM=yCONFIG_NEED_MULTIPLE_NODES=yCONFIG_HAVE_MEMORY_PRESENT=y
# CONFIG_SPARSEMEM_STATIC is not setCONFIG_SPARSEMEM_EXTREME=yCONFIG_SPARSEMEM_VMEMMAP_ENABLE=yCONFIG_SPARSEMEM_VMEMMAP=y
#
# Memory hotplug is currently incompatible with Software Suspend #CONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_MIGRATION=yCONFIG_RESOURCES_64BIT=yCONFIG_ZONE_DMA_FLAG=1CONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_X86_PAT=yCONFIG_EFI=yCONFIG_SECCOMP=yCONFIG_CC_STACKPROTECTOR=y CONFIG_CC_STACKPROTECTOR_ALL=y
# CONFIG_HZ_100 is not setCONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not setCONFIG_HZ=250CONFIG_KEXEC=yCONFIG_CRASH_DUMP=yCONFIG_PHYSICAL_START=0x200000CONFIG_RELOCATABLE=yCONFIG_PHYSICAL_ALIGN=0x200000CONFIG_HOTPLUG_CPU=yCONFIG_COMPAT_VDSO=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
#
# Power management options
#CONFIG_ARCH_HIBERNATION_HEADER=yCONFIG_PM=yCONFIG_PM_LEGACY=yCONFIG_PM_DEBUG=yCONFIG_PM_VERBOSE=yCONFIG_PM_TRACE=yCONFIG_PM_SLEEP_SMP=yCONFIG_PM_SLEEP=yCONFIG_SUSPEND_SMP_POSSIBLE=yCONFIG_SUSPEND=yCONFIG_HIBERNATION_SMP_POSSIBLE=yCONFIG_HIBERNATION=yCONFIG_PM_STD_PARTITION=""CONFIG_ACPI=yCONFIG_ACPI_SLEEP=yCONFIG_ACPI_PROCFS=yCONFIG_ACPI_PROCFS_POWER=yCONFIG_ACPI_SYSFS_POWER=yCONFIG_ACPI_PROC_EVENT=yCONFIG_ACPI_AC=yCONFIG_ACPI_BATTERY=yCONFIG_ACPI_BUTTON=yCONFIG_ACPI_VIDEO=yCONFIG_ACPI_FAN=yCONFIG_ACPI_DOCK=yCONFIG_ACPI_BAY=yCONFIG_ACPI_PROCESSOR=yCONFIG_ACPI_HOTPLUG_CPU=yCONFIG_ACPI_THERMAL=yCONFIG_ACPI_NUMA=yCONFIG_ACPI_ASUS=yCONFIG_ACPI_TOSHIBA=yCONFIG_ACPI_BLACKLIST_YEAR=0CONFIG_ACPI_DEBUG=yCONFIG_ACPI_DEBUG_FUNC_TRACE=yCONFIG_ACPI_EC=yCONFIG_ACPI_POWER=yCONFIG_ACPI_SYSTEM=yCONFIG_X86_PM_TIMER=yCONFIG_ACPI_CONTAINER=yCONFIG_ACPI_SBS=y
#
# CPU Frequency scaling
#CONFIG_CPU_FREQ=yCONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_DEBUG=y CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# CPUFreq processor drivers
#CONFIG_X86_ACPI_CPUFREQ=yCONFIG_X86_POWERNOW_K8=yCONFIG_X86_POWERNOW_K8_ACPI=yCONFIG_X86_SPEEDSTEP_CENTRINO=yCONFIG_X86_P4_CLOCKMOD=y
#
# shared options # CONFIG_X86_ACPI_CPUFREQ_PROC_INTF=y CONFIG_X86_SPEEDSTEP_LIB=y CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y
#
# Bus options (PCI etc.)
#CONFIG_PCI=yCONFIG_PCI_DIRECT=yCONFIG_PCI_MMCONFIG=yCONFIG_PCI_DOMAINS=yCONFIG_DMAR=yCONFIG_DMAR_GFX_WA=yCONFIG_DMAR_FLOPPY_WA=yCONFIG_PCIEPORTBUS=yCONFIG_HOTPLUG_PCI_PCIE=yCONFIG_PCIEAER=yCONFIG_ARCH_SUPPORTS_MSI=yCONFIG_PCI_MSI=yCONFIG_PCI_LEGACY=yCONFIG_PCI_DEBUG=yCONFIG_HT_IRQ=yCONFIG_ISA_DMA_API=yCONFIG_K8_NB=yCONFIG_PCCARD=yCONFIG_PCMCIA_DEBUG=yCONFIG_PCMCIA=yCONFIG_PCMCIA_LOAD_CIS=yCONFIG_PCMCIA_IOCTL=yCONFIG_CARDBUS=y
#
# PC-card bridges
#CONFIG_YENTA=yCONFIG_YENTA_O2=yCONFIG_YENTA_RICOH=yCONFIG_YENTA_TI=yCONFIG_YENTA_ENE_TUNE=yCONFIG_YENTA_TOSHIBA=yCONFIG_PD6729=yCONFIG_I82092=yCONFIG_PCCARD_NONSTATIC=yCONFIG_HOTPLUG_PCI=yCONFIG_HOTPLUG_PCI_FAKE=yCONFIG_HOTPLUG_PCI_ACPI=yCONFIG_HOTPLUG_PCI_ACPI_IBM=yCONFIG_HOTPLUG_PCI_CPCI=yCONFIG_HOTPLUG_PCI_CPCI_ZT5550=yCONFIG_HOTPLUG_PCI_CPCI_GENERIC=yCONFIG_HOTPLUG_PCI_SHPC=y
#
# Executable file formats / Emulations
#CONFIG_BINFMT_ELF=yCONFIG_COMPAT_BINFMT_ELF=yCONFIG_BINFMT_MISC=yCONFIG_IA32_EMULATION=yCONFIG_IA32_AOUT=yCONFIG_COMPAT=yCONFIG_COMPAT_FOR_U64_ALIGNMENT=yCONFIG_SYSVIPC_COMPAT=y
#
# Networking
#CONFIG_NET=y
#
# Networking options
#CONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_UNIX=yCONFIG_XFRM=yCONFIG_XFRM_USER=yCONFIG_XFRM_SUB_POLICY=yCONFIG_XFRM_MIGRATE=yCONFIG_NET_KEY=yCONFIG_NET_KEY_MIGRATE=yCONFIG_INET=yCONFIG_IP_MULTICAST=yCONFIG_IP_ADVANCED_ROUTER=yCONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not setCONFIG_IP_FIB_HASH=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_ROUTE_MULTIPATH=yCONFIG_IP_ROUTE_VERBOSE=yCONFIG_IP_PNP=yCONFIG_IP_PNP_DHCP=yCONFIG_IP_PNP_BOOTP=yCONFIG_IP_PNP_RARP=yCONFIG_NET_IPIP=yCONFIG_NET_IPGRE=yCONFIG_NET_IPGRE_BROADCAST=yCONFIG_IP_MROUTE=yCONFIG_IP_PIMSM_V1=yCONFIG_IP_PIMSM_V2=yCONFIG_ARPD=yCONFIG_SYN_COOKIES=yCONFIG_INET_AH=yCONFIG_INET_ESP=yCONFIG_INET_IPCOMP=yCONFIG_INET_XFRM_TUNNEL=yCONFIG_INET_TUNNEL=yCONFIG_INET_XFRM_MODE_TRANSPORT=yCONFIG_INET_XFRM_MODE_TUNNEL=yCONFIG_INET_XFRM_MODE_BEET=yCONFIG_INET_LRO=yCONFIG_INET_DIAG=yCONFIG_INET_TCP_DIAG=yCONFIG_TCP_CONG_ADVANCED=yCONFIG_TCP_CONG_BIC=yCONFIG_TCP_CONG_CUBIC=yCONFIG_TCP_CONG_WESTWOOD=yCONFIG_TCP_CONG_HTCP=yCONFIG_TCP_CONG_HSTCP=yCONFIG_TCP_CONG_HYBLA=yCONFIG_TCP_CONG_VEGAS=yCONFIG_TCP_CONG_SCALABLE=yCONFIG_TCP_CONG_LP=yCONFIG_TCP_CONG_VENO=yCONFIG_TCP_CONG_YEAH=yCONFIG_TCP_CONG_ILLINOIS=y
# CONFIG_DEFAULT_BIC is not setCONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not setCONFIG_DEFAULT_TCP_CONG="cubic"CONFIG_TCP_MD5SIG=yCONFIG_IP_VS=yCONFIG_IP_VS_DEBUG=yCONFIG_IP_VS_TAB_BITS=12
#
# IPVS transport protocol load balancing support
#CONFIG_IP_VS_PROTO_TCP=yCONFIG_IP_VS_PROTO_UDP=yCONFIG_IP_VS_PROTO_ESP=yCONFIG_IP_VS_PROTO_AH=y
#
# IPVS scheduler
#CONFIG_IP_VS_RR=yCONFIG_IP_VS_WRR=yCONFIG_IP_VS_LC=yCONFIG_IP_VS_WLC=yCONFIG_IP_VS_LBLC=yCONFIG_IP_VS_LBLCR=yCONFIG_IP_VS_DH=yCONFIG_IP_VS_SH=yCONFIG_IP_VS_SED=yCONFIG_IP_VS_NQ=y
#
# IPVS application helper
#CONFIG_IP_VS_FTP=yCONFIG_IPV6=yCONFIG_IPV6_PRIVACY=yCONFIG_IPV6_ROUTER_PREF=yCONFIG_IPV6_ROUTE_INFO=yCONFIG_IPV6_OPTIMISTIC_DAD=yCONFIG_INET6_AH=yCONFIG_INET6_ESP=yCONFIG_INET6_IPCOMP=yCONFIG_IPV6_MIP6=yCONFIG_INET6_XFRM_TUNNEL=yCONFIG_INET6_TUNNEL=yCONFIG_INET6_XFRM_MODE_TRANSPORT=yCONFIG_INET6_XFRM_MODE_TUNNEL=yCONFIG_INET6_XFRM_MODE_BEET=yCONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=yCONFIG_IPV6_SIT=yCONFIG_IPV6_TUNNEL=yCONFIG_IPV6_MULTIPLE_TABLES=yCONFIG_IPV6_SUBTREES=yCONFIG_NETLABEL=yCONFIG_NETWORK_SECMARK=yCONFIG_NETFILTER=yCONFIG_NETFILTER_DEBUG=yCONFIG_BRIDGE_NETFILTER=y
#
# Core Netfilter Configuration
#CONFIG_NETFILTER_NETLINK=yCONFIG_NETFILTER_NETLINK_QUEUE=yCONFIG_NETFILTER_NETLINK_LOG=yCONFIG_NF_CONNTRACK_ENABLED=yCONFIG_NF_CONNTRACK=yCONFIG_NF_CT_ACCT=yCONFIG_NF_CONNTRACK_MARK=yCONFIG_NF_CONNTRACK_SECMARK=yCONFIG_NF_CONNTRACK_EVENTS=yCONFIG_NF_CT_PROTO_GRE=yCONFIG_NF_CT_PROTO_SCTP=yCONFIG_NF_CT_PROTO_UDPLITE=yCONFIG_NF_CONNTRACK_AMANDA=yCONFIG_NF_CONNTRACK_FTP=yCONFIG_NF_CONNTRACK_H323=yCONFIG_NF_CONNTRACK_IRC=yCONFIG_NF_CONNTRACK_NETBIOS_NS=yCONFIG_NF_CONNTRACK_PPTP=yCONFIG_NF_CONNTRACK_SANE=yCONFIG_NF_CONNTRACK_SIP=yCONFIG_NF_CONNTRACK_TFTP=yCONFIG_NF_CT_NETLINK=yCONFIG_NETFILTER_XTABLES=yCONFIG_NETFILTER_XT_TARGET_CLASSIFY=yCONFIG_NETFILTER_XT_TARGET_CONNMARK=yCONFIG_NETFILTER_XT_TARGET_DSCP=yCONFIG_NETFILTER_XT_TARGET_MARK=yCONFIG_NETFILTER_XT_TARGET_NFQUEUE=yCONFIG_NETFILTER_XT_TARGET_NFLOG=yCONFIG_NETFILTER_XT_TARGET_NOTRACK=yCONFIG_NETFILTER_XT_TARGET_TRACE=yCONFIG_NETFILTER_XT_TARGET_SECMARK=yCONFIG_NETFILTER_XT_TARGET_CONNSECMARK=yCONFIG_NETFILTER_XT_TARGET_TCPMSS=yCONFIG_NETFILTER_XT_MATCH_COMMENT=yCONFIG_NETFILTER_XT_MATCH_CONNBYTES=yCONFIG_NETFILTER_XT_MATCH_CONNLIMIT=yCONFIG_NETFILTER_XT_MATCH_CONNMARK=yCONFIG_NETFILTER_XT_MATCH_CONNTRACK=yCONFIG_NETFILTER_XT_MATCH_DCCP=yCONFIG_NETFILTER_XT_MATCH_DSCP=yCONFIG_NETFILTER_XT_MATCH_ESP=yCONFIG_NETFILTER_XT_MATCH_HELPER=yCONFIG_NETFILTER_XT_MATCH_LENGTH=yCONFIG_NETFILTER_XT_MATCH_LIMIT=yCONFIG_NETFILTER_XT_MATCH_MAC=yCONFIG_NETFILTER_XT_MATCH_MARK=yCONFIG_NETFILTER_XT_MATCH_POLICY=yCONFIG_NETFILTER_XT_MATCH_MULTIPORT=yCONFIG_NETFILTER_XT_MATCH_PHYSDEV=yCONFIG_NETFILTER_XT_MATCH_PKTTYPE=yCONFIG_NETFILTER_XT_MATCH_QUOTA=yCONFIG_NETFILTER_XT_MATCH_REALM=yCONFIG_NETFILTER_XT_MATCH_SCTP=yCONFIG_NETFILTER_XT_MATCH_STATE=yCONFIG_NETFILTER_XT_MATCH_STATISTIC=yCONFIG_NETFILTER_XT_MATCH_STRING=yCONFIG_NETFILTER_XT_MATCH_TCPMSS=yCONFIG_NETFILTER_XT_MATCH_TIME=yCONFIG_NETFILTER_XT_MATCH_U32=yCONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
#
# IP: Netfilter Configuration
#CONFIG_NF_CONNTRACK_IPV4=yCONFIG_NF_CONNTRACK_PROC_COMPAT=yCONFIG_IP_NF_QUEUE=yCONFIG_IP_NF_IPTABLES=yCONFIG_IP_NF_MATCH_IPRANGE=yCONFIG_IP_NF_MATCH_TOS=yCONFIG_IP_NF_MATCH_RECENT=yCONFIG_IP_NF_MATCH_ECN=yCONFIG_IP_NF_MATCH_AH=yCONFIG_IP_NF_MATCH_TTL=yCONFIG_IP_NF_MATCH_OWNER=yCONFIG_IP_NF_MATCH_ADDRTYPE=yCONFIG_IP_NF_FILTER=yCONFIG_IP_NF_TARGET_REJECT=yCONFIG_IP_NF_TARGET_LOG=yCONFIG_IP_NF_TARGET_ULOG=yCONFIG_NF_NAT=yCONFIG_NF_NAT_NEEDED=yCONFIG_IP_NF_TARGET_MASQUERADE=yCONFIG_IP_NF_TARGET_REDIRECT=yCONFIG_IP_NF_TARGET_NETMAP=yCONFIG_IP_NF_TARGET_SAME=yCONFIG_NF_NAT_SNMP_BASIC=yCONFIG_NF_NAT_PROTO_GRE=yCONFIG_NF_NAT_FTP=yCONFIG_NF_NAT_IRC=yCONFIG_NF_NAT_TFTP=yCONFIG_NF_NAT_AMANDA=yCONFIG_NF_NAT_PPTP=yCONFIG_NF_NAT_H323=yCONFIG_NF_NAT_SIP=yCONFIG_IP_NF_MANGLE=yCONFIG_IP_NF_TARGET_TOS=yCONFIG_IP_NF_TARGET_ECN=yCONFIG_IP_NF_TARGET_TTL=yCONFIG_IP_NF_TARGET_CLUSTERIP=yCONFIG_IP_NF_RAW=yCONFIG_IP_NF_ARPTABLES=yCONFIG_IP_NF_ARPFILTER=yCONFIG_IP_NF_ARP_MANGLE=y
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#CONFIG_NF_CONNTRACK_IPV6=yCONFIG_IP6_NF_QUEUE=yCONFIG_IP6_NF_IPTABLES=yCONFIG_IP6_NF_MATCH_RT=yCONFIG_IP6_NF_MATCH_OPTS=yCONFIG_IP6_NF_MATCH_FRAG=yCONFIG_IP6_NF_MATCH_HL=yCONFIG_IP6_NF_MATCH_OWNER=yCONFIG_IP6_NF_MATCH_IPV6HEADER=yCONFIG_IP6_NF_MATCH_AH=yCONFIG_IP6_NF_MATCH_MH=yCONFIG_IP6_NF_MATCH_EUI64=yCONFIG_IP6_NF_FILTER=yCONFIG_IP6_NF_TARGET_LOG=yCONFIG_IP6_NF_TARGET_REJECT=yCONFIG_IP6_NF_MANGLE=yCONFIG_IP6_NF_TARGET_HL=yCONFIG_IP6_NF_RAW=y
#
# DECnet: Netfilter Configuration
#CONFIG_DECNET_NF_GRABULATOR=y
#
# Bridge: Netfilter Configuration
#CONFIG_BRIDGE_NF_EBTABLES=yCONFIG_BRIDGE_EBT_BROUTE=yCONFIG_BRIDGE_EBT_T_FILTER=yCONFIG_BRIDGE_EBT_T_NAT=yCONFIG_BRIDGE_EBT_802_3=yCONFIG_BRIDGE_EBT_AMONG=yCONFIG_BRIDGE_EBT_ARP=yCONFIG_BRIDGE_EBT_IP=yCONFIG_BRIDGE_EBT_LIMIT=yCONFIG_BRIDGE_EBT_MARK=yCONFIG_BRIDGE_EBT_PKTTYPE=yCONFIG_BRIDGE_EBT_STP=yCONFIG_BRIDGE_EBT_VLAN=yCONFIG_BRIDGE_EBT_ARPREPLY=yCONFIG_BRIDGE_EBT_DNAT=yCONFIG_BRIDGE_EBT_MARK_T=yCONFIG_BRIDGE_EBT_REDIRECT=yCONFIG_BRIDGE_EBT_SNAT=yCONFIG_BRIDGE_EBT_LOG=yCONFIG_BRIDGE_EBT_ULOG=yCONFIG_IP_DCCP=yCONFIG_INET_DCCP_DIAG=yCONFIG_IP_DCCP_ACKVEC=y
#
# DCCP CCIDs Configuration (EXPERIMENTAL)
#CONFIG_IP_DCCP_CCID2=yCONFIG_IP_DCCP_CCID2_DEBUG=yCONFIG_IP_DCCP_CCID3=yCONFIG_IP_DCCP_TFRC_LIB=yCONFIG_IP_DCCP_CCID3_DEBUG=yCONFIG_IP_DCCP_CCID3_RTO=100
#
# DCCP Kernel Hacking
#CONFIG_IP_DCCP_DEBUG=yCONFIG_NET_DCCPPROBE=yCONFIG_IP_SCTP=yCONFIG_SCTP_DBG_MSG=yCONFIG_SCTP_DBG_OBJCNT=y
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not setCONFIG_SCTP_HMAC_MD5=yCONFIG_TIPC=yCONFIG_TIPC_ADVANCED=yCONFIG_TIPC_ZONES=3CONFIG_TIPC_CLUSTERS=1CONFIG_TIPC_NODES=255CONFIG_TIPC_SLAVE_NODES=0CONFIG_TIPC_PORTS=8191CONFIG_TIPC_LOG=0CONFIG_TIPC_DEBUG=yCONFIG_ATM=yCONFIG_ATM_CLIP=yCONFIG_ATM_CLIP_NO_ICMP=yCONFIG_ATM_LANE=yCONFIG_ATM_MPOA=yCONFIG_ATM_BR2684=yCONFIG_ATM_BR2684_IPFILTER=yCONFIG_BRIDGE=yCONFIG_VLAN_8021Q=yCONFIG_DECNET=yCONFIG_DECNET_ROUTER=yCONFIG_LLC=yCONFIG_LLC2=yCONFIG_IPX=yCONFIG_IPX_INTERN=yCONFIG_ATALK=yCONFIG_DEV_APPLETALK=yCONFIG_IPDDP=yCONFIG_IPDDP_ENCAP=yCONFIG_IPDDP_DECAP=yCONFIG_X25=yCONFIG_LAPB=yCONFIG_ECONET=yCONFIG_ECONET_AUNUDP=yCONFIG_ECONET_NATIVE=yCONFIG_WAN_ROUTER=yCONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#CONFIG_NET_SCH_CBQ=yCONFIG_NET_SCH_HTB=yCONFIG_NET_SCH_HFSC=yCONFIG_NET_SCH_ATM=yCONFIG_NET_SCH_PRIO=yCONFIG_NET_SCH_RR=yCONFIG_NET_SCH_RED=yCONFIG_NET_SCH_SFQ=yCONFIG_NET_SCH_TEQL=yCONFIG_NET_SCH_TBF=yCONFIG_NET_SCH_GRED=yCONFIG_NET_SCH_DSMARK=yCONFIG_NET_SCH_NETEM=yCONFIG_NET_SCH_INGRESS=y
#
# Classification
#CONFIG_NET_CLS=yCONFIG_NET_CLS_BASIC=yCONFIG_NET_CLS_TCINDEX=yCONFIG_NET_CLS_ROUTE4=yCONFIG_NET_CLS_ROUTE=yCONFIG_NET_CLS_FW=yCONFIG_NET_CLS_U32=yCONFIG_CLS_U32_PERF=yCONFIG_CLS_U32_MARK=yCONFIG_NET_CLS_RSVP=yCONFIG_NET_CLS_RSVP6=yCONFIG_NET_EMATCH=yCONFIG_NET_EMATCH_STACK=32CONFIG_NET_EMATCH_CMP=yCONFIG_NET_EMATCH_NBYTE=yCONFIG_NET_EMATCH_U32=yCONFIG_NET_EMATCH_META=yCONFIG_NET_EMATCH_TEXT=yCONFIG_NET_CLS_ACT=yCONFIG_NET_ACT_POLICE=yCONFIG_NET_ACT_GACT=yCONFIG_GACT_PROB=yCONFIG_NET_ACT_MIRRED=yCONFIG_NET_ACT_IPT=yCONFIG_NET_ACT_NAT=yCONFIG_NET_ACT_PEDIT=yCONFIG_NET_ACT_SIMP=yCONFIG_NET_CLS_POLICE=yCONFIG_NET_CLS_IND=yCONFIG_NET_SCH_FIFO=y
#
# Network testing
#CONFIG_NET_PKTGEN=yCONFIG_NET_TCPPROBE=yCONFIG_HAMRADIO=y
#
# Packet Radio protocols
#CONFIG_AX25=yCONFIG_AX25_DAMA_SLAVE=yCONFIG_NETROM=yCONFIG_ROSE=y
#
# AX.25 network device drivers
#CONFIG_MKISS=yCONFIG_6PACK=yCONFIG_BPQETHER=yCONFIG_BAYCOM_SER_FDX=yCONFIG_BAYCOM_SER_HDX=yCONFIG_BAYCOM_PAR=yCONFIG_YAM=yCONFIG_IRDA=y
#
# IrDA protocols
#CONFIG_IRLAN=yCONFIG_IRNET=yCONFIG_IRCOMM=yCONFIG_IRDA_ULTRA=y
#
# IrDA options
#CONFIG_IRDA_CACHE_LAST_LSAP=yCONFIG_IRDA_FAST_RR=yCONFIG_IRDA_DEBUG=y
#
# Infrared-port device drivers
#
#
# SIR device drivers
#CONFIG_IRTTY_SIR=y
#
# Dongle support
#CONFIG_DONGLE=yCONFIG_ESI_DONGLE=yCONFIG_ACTISYS_DONGLE=yCONFIG_TEKRAM_DONGLE=yCONFIG_TOIM3232_DONGLE=yCONFIG_LITELINK_DONGLE=yCONFIG_MA600_DONGLE=yCONFIG_GIRBIL_DONGLE=yCONFIG_MCP2120_DONGLE=yCONFIG_OLD_BELKIN_DONGLE=yCONFIG_ACT200L_DONGLE=yCONFIG_KINGSUN_DONGLE=yCONFIG_KSDAZZLE_DONGLE=yCONFIG_KS959_DONGLE=y
#
# Old SIR device drivers
#
#
# Old Serial dongle support
#
#
# FIR device drivers
#CONFIG_USB_IRDA=yCONFIG_SIGMATEL_FIR=yCONFIG_NSC_FIR=yCONFIG_WINBOND_FIR=yCONFIG_SMC_IRCC_FIR=yCONFIG_ALI_FIR=yCONFIG_VLSI_FIR=yCONFIG_VIA_FIR=yCONFIG_MCS_FIR=yCONFIG_BT=yCONFIG_BT_L2CAP=yCONFIG_BT_SCO=yCONFIG_BT_RFCOMM=yCONFIG_BT_RFCOMM_TTY=yCONFIG_BT_BNEP=yCONFIG_BT_BNEP_MC_FILTER=yCONFIG_BT_BNEP_PROTO_FILTER=yCONFIG_BT_CMTP=yCONFIG_BT_HIDP=y
#
# Bluetooth device drivers
#CONFIG_BT_HCIUSB=yCONFIG_BT_HCIUSB_SCO=yCONFIG_BT_HCIBTSDIO=yCONFIG_BT_HCIUART=yCONFIG_BT_HCIUART_H4=yCONFIG_BT_HCIUART_BCSP=yCONFIG_BT_HCIUART_LL=yCONFIG_BT_HCIBCM203X=yCONFIG_BT_HCIBPA10X=yCONFIG_BT_HCIBFUSB=yCONFIG_BT_HCIDTL1=yCONFIG_BT_HCIBT3C=yCONFIG_BT_HCIBLUECARD=yCONFIG_BT_HCIBTUART=yCONFIG_BT_HCIVHCI=yCONFIG_AF_RXRPC=yCONFIG_AF_RXRPC_DEBUG=yCONFIG_RXKAD=yCONFIG_FIB_RULES=y
#
# Wireless
#CONFIG_CFG80211=yCONFIG_NL80211=yCONFIG_WIRELESS_EXT=yCONFIG_MAC80211=yCONFIG_MAC80211_RCSIMPLE=yCONFIG_MAC80211_LEDS=yCONFIG_MAC80211_DEBUGFS=yCONFIG_MAC80211_DEBUG=yCONFIG_MAC80211_VERBOSE_DEBUG=yCONFIG_MAC80211_LOWTX_FRAME_DUMP=yCONFIG_TKIP_DEBUG=yCONFIG_MAC80211_DEBUG_COUNTERS=yCONFIG_MAC80211_IBSS_DEBUG=yCONFIG_MAC80211_VERBOSE_PS_DEBUG=yCONFIG_IEEE80211=yCONFIG_IEEE80211_DEBUG=yCONFIG_IEEE80211_CRYPT_WEP=yCONFIG_IEEE80211_CRYPT_CCMP=yCONFIG_IEEE80211_CRYPT_TKIP=yCONFIG_IEEE80211_SOFTMAC=yCONFIG_IEEE80211_SOFTMAC_DEBUG=yCONFIG_RFKILL=yCONFIG_RFKILL_INPUT=yCONFIG_RFKILL_LEDS=yCONFIG_NET_9P=yCONFIG_NET_9P_FD=yCONFIG_NET_9P_DEBUG=y
#
# Device Drivers
#
#
# Generic Driver Options
#CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"CONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=yCONFIG_FW_LOADER=yCONFIG_DEBUG_DRIVER=yCONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not setCONFIG_CONNECTOR=yCONFIG_PROC_EVENTS=y
# CONFIG_MTD is not setCONFIG_PARPORT=yCONFIG_PARPORT_PC=yCONFIG_PARPORT_SERIAL=yCONFIG_PARPORT_PC_FIFO=yCONFIG_PARPORT_PC_SUPERIO=yCONFIG_PARPORT_PC_PCMCIA=y
# CONFIG_PARPORT_GSC is not setCONFIG_PARPORT_AX88796=yCONFIG_PARPORT_1284=yCONFIG_PARPORT_NOT_PC=yCONFIG_PNP=yCONFIG_PNP_DEBUG=y
#
# Protocols
#CONFIG_PNPACPI=yCONFIG_BLK_DEV=yCONFIG_BLK_DEV_FD=y
# CONFIG_PARIDE is not setCONFIG_BLK_CPQ_DA=yCONFIG_BLK_CPQ_CISS_DA=yCONFIG_CISS_SCSI_TAPE=yCONFIG_BLK_DEV_DAC960=yCONFIG_BLK_DEV_UMEM=y
# CONFIG_BLK_DEV_COW_COMMON is not setCONFIG_BLK_DEV_LOOP=yCONFIG_BLK_DEV_CRYPTOLOOP=yCONFIG_BLK_DEV_NBD=yCONFIG_BLK_DEV_SX8=yCONFIG_BLK_DEV_UB=yCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_COUNT=16CONFIG_BLK_DEV_RAM_SIZE=4096CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024CONFIG_CDROM_PKTCDVD=yCONFIG_CDROM_PKTCDVD_BUFFERS=8CONFIG_CDROM_PKTCDVD_WCACHE=yCONFIG_ATA_OVER_ETH=yCONFIG_MISC_DEVICES=yCONFIG_IBM_ASM=yCONFIG_PHANTOM=yCONFIG_EEPROM_93CX6=yCONFIG_SGI_IOC4=yCONFIG_TIFM_CORE=yCONFIG_TIFM_7XX1=yCONFIG_FUJITSU_LAPTOP=yCONFIG_MSI_LAPTOP=yCONFIG_SONY_LAPTOP=yCONFIG_SONYPI_COMPAT=yCONFIG_THINKPAD_ACPI=yCONFIG_THINKPAD_ACPI_DEBUG=yCONFIG_THINKPAD_ACPI_BAY=y
# CONFIG_IDE is not set
#
# SCSI device support
#CONFIG_RAID_ATTRS=yCONFIG_SCSI=yCONFIG_SCSI_DMA=yCONFIG_SCSI_TGT=yCONFIG_SCSI_NETLINK=yCONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=yCONFIG_CHR_DEV_ST=yCONFIG_CHR_DEV_OSST=yCONFIG_BLK_DEV_SR=yCONFIG_BLK_DEV_SR_VENDOR=yCONFIG_CHR_DEV_SG=yCONFIG_CHR_DEV_SCH=y
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs #CONFIG_SCSI_MULTI_LUN=yCONFIG_SCSI_CONSTANTS=yCONFIG_SCSI_LOGGING=yCONFIG_SCSI_SCAN_ASYNC=yCONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=yCONFIG_SCSI_FC_ATTRS=yCONFIG_SCSI_FC_TGT_ATTRS=yCONFIG_SCSI_ISCSI_ATTRS=yCONFIG_SCSI_SAS_ATTRS=yCONFIG_SCSI_SAS_LIBSAS=yCONFIG_SCSI_SAS_ATA=yCONFIG_SCSI_SAS_LIBSAS_DEBUG=yCONFIG_SCSI_SRP_ATTRS=yCONFIG_SCSI_SRP_TGT_ATTRS=yCONFIG_SCSI_LOWLEVEL=yCONFIG_ISCSI_TCP=yCONFIG_BLK_DEV_3W_XXXX_RAID=yCONFIG_SCSI_3W_9XXX=yCONFIG_SCSI_ACARD=yCONFIG_SCSI_AACRAID=yCONFIG_SCSI_AIC7XXX=yCONFIG_AIC7XXX_CMDS_PER_DEVICE=32CONFIG_AIC7XXX_RESET_DELAY_MS=5000CONFIG_AIC7XXX_DEBUG_ENABLE=yCONFIG_AIC7XXX_DEBUG_MASK=0CONFIG_AIC7XXX_REG_PRETTY_PRINT=yCONFIG_SCSI_AIC7XXX_OLD=yCONFIG_SCSI_AIC79XX=yCONFIG_AIC79XX_CMDS_PER_DEVICE=32CONFIG_AIC79XX_RESET_DELAY_MS=5000CONFIG_AIC79XX_DEBUG_ENABLE=yCONFIG_AIC79XX_DEBUG_MASK=0CONFIG_AIC79XX_REG_PRETTY_PRINT=yCONFIG_SCSI_AIC94XX=yCONFIG_AIC94XX_DEBUG=yCONFIG_SCSI_ADVANSYS=yCONFIG_SCSI_ARCMSR=yCONFIG_SCSI_ARCMSR_AER=yCONFIG_MEGARAID_NEWGEN=yCONFIG_MEGARAID_MM=yCONFIG_MEGARAID_MAILBOX=yCONFIG_MEGARAID_LEGACY=yCONFIG_MEGARAID_SAS=yCONFIG_SCSI_HPTIOP=yCONFIG_SCSI_BUSLOGIC=yCONFIG_SCSI_OMIT_FLASHPOINT=yCONFIG_SCSI_DMX3191D=yCONFIG_SCSI_EATA=yCONFIG_SCSI_EATA_TAGGED_QUEUE=yCONFIG_SCSI_EATA_LINKED_COMMANDS=yCONFIG_SCSI_EATA_MAX_TAGS=16CONFIG_SCSI_FUTURE_DOMAIN=yCONFIG_SCSI_GDTH=yCONFIG_SCSI_IPS=yCONFIG_SCSI_INITIO=yCONFIG_SCSI_INIA100=yCONFIG_SCSI_PPA=yCONFIG_SCSI_IMM=yCONFIG_SCSI_IZIP_EPP16=yCONFIG_SCSI_IZIP_SLOW_CTR=yCONFIG_SCSI_STEX=yCONFIG_SCSI_SYM53C8XX_2=yCONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64CONFIG_SCSI_SYM53C8XX_MMIO=yCONFIG_SCSI_IPR=yCONFIG_SCSI_IPR_TRACE=yCONFIG_SCSI_IPR_DUMP=yCONFIG_SCSI_QLOGIC_1280=yCONFIG_SCSI_QLA_FC=yCONFIG_SCSI_QLA_ISCSI=yCONFIG_SCSI_LPFC=y
CONFIG_SCSI_DC395x=yCONFIG_SCSI_DC390T=y
# CONFIG_SCSI_DEBUG is not setCONFIG_SCSI_SRP=yCONFIG_SCSI_LOWLEVEL_PCMCIA=yCONFIG_PCMCIA_FDOMAIN=yCONFIG_PCMCIA_QLOGIC=yCONFIG_PCMCIA_SYM53C500=yCONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not setCONFIG_ATA_ACPI=yCONFIG_SATA_AHCI=yCONFIG_SATA_SVW=yCONFIG_ATA_PIIX=yCONFIG_SATA_MV=yCONFIG_SATA_NV=yCONFIG_PDC_ADMA=yCONFIG_SATA_QSTOR=yCONFIG_SATA_PROMISE=yCONFIG_SATA_SX4=yCONFIG_SATA_SIL=yCONFIG_SATA_SIL24=yCONFIG_SATA_SIS=yCONFIG_SATA_ULI=yCONFIG_SATA_VIA=yCONFIG_SATA_VITESSE=yCONFIG_SATA_INIC162X=yCONFIG_PATA_ACPI=yCONFIG_PATA_ALI=yCONFIG_PATA_AMD=yCONFIG_PATA_ARTOP=yCONFIG_PATA_ATIIXP=yCONFIG_PATA_CMD640_PCI=yCONFIG_PATA_CMD64X=yCONFIG_PATA_CS5520=yCONFIG_PATA_CS5530=yCONFIG_PATA_CYPRESS=yCONFIG_PATA_EFAR=yCONFIG_ATA_GENERIC=yCONFIG_PATA_HPT366=yCONFIG_PATA_HPT37X=yCONFIG_PATA_HPT3X2N=yCONFIG_PATA_HPT3X3=yCONFIG_PATA_HPT3X3_DMA=yCONFIG_PATA_IT821X=yCONFIG_PATA_IT8213=yCONFIG_PATA_JMICRON=yCONFIG_PATA_TRIFLEX=yCONFIG_PATA_MARVELL=yCONFIG_PATA_MPIIX=yCONFIG_PATA_OLDPIIX=yCONFIG_PATA_NETCELL=yCONFIG_PATA_NS87410=yCONFIG_PATA_NS87415=yCONFIG_PATA_OPTI=yCONFIG_PATA_OPTIDMA=yCONFIG_PATA_PCMCIA=yCONFIG_PATA_PDC_OLD=yCONFIG_PATA_RADISYS=yCONFIG_PATA_RZ1000=yCONFIG_PATA_SC1200=yCONFIG_PATA_SERVERWORKS=yCONFIG_PATA_PDC2027X=yCONFIG_PATA_SIL680=yCONFIG_PATA_SIS=yCONFIG_PATA_VIA=yCONFIG_PATA_WINBOND=yCONFIG_PATA_PLATFORM=yCONFIG_MD=yCONFIG_BLK_DEV_MD=yCONFIG_MD_LINEAR=yCONFIG_MD_RAID0=yCONFIG_MD_RAID1=yCONFIG_MD_RAID10=yCONFIG_MD_RAID456=yCONFIG_MD_RAID5_RESHAPE=yCONFIG_MD_MULTIPATH=yCONFIG_MD_FAULTY=yCONFIG_BLK_DEV_DM=yCONFIG_DM_DEBUG=yCONFIG_DM_CRYPT=yCONFIG_DM_SNAPSHOT=yCONFIG_DM_MIRROR=yCONFIG_DM_ZERO=yCONFIG_DM_MULTIPATH=yCONFIG_DM_MULTIPATH_EMC=yCONFIG_DM_MULTIPATH_RDAC=yCONFIG_DM_MULTIPATH_HP=yCONFIG_DM_DELAY=yCONFIG_DM_UEVENT=yCONFIG_FUSION=yCONFIG_FUSION_SPI=yCONFIG_FUSION_FC=yCONFIG_FUSION_SAS=yCONFIG_FUSION_MAX_SGE=128CONFIG_FUSION_CTL=yCONFIG_FUSION_LAN=yCONFIG_FUSION_LOGGING=y
#
# IEEE 1394 (FireWire) support
#CONFIG_FIREWIRE=yCONFIG_FIREWIRE_OHCI=yCONFIG_FIREWIRE_SBP2=yCONFIG_IEEE1394=y
#
# Subsystem Options
#CONFIG_IEEE1394_VERBOSEDEBUG=y
#
# Controllers
#CONFIG_IEEE1394_PCILYNX=yCONFIG_IEEE1394_OHCI1394=y
#
# Protocols
#CONFIG_IEEE1394_VIDEO1394=yCONFIG_IEEE1394_SBP2=yCONFIG_IEEE1394_SBP2_PHYS_DMA=yCONFIG_IEEE1394_ETH1394_ROM_ENTRY=yCONFIG_IEEE1394_ETH1394=yCONFIG_IEEE1394_DV1394=yCONFIG_IEEE1394_RAWIO=yCONFIG_I2O=yCONFIG_I2O_LCT_NOTIFY_ON_CHANGES=yCONFIG_I2O_EXT_ADAPTEC=yCONFIG_I2O_EXT_ADAPTEC_DMA64=yCONFIG_I2O_CONFIG=yCONFIG_I2O_CONFIG_OLD_IOCTL=yCONFIG_I2O_BUS=yCONFIG_I2O_BLOCK=yCONFIG_I2O_SCSI=yCONFIG_I2O_PROC=yCONFIG_MACINTOSH_DRIVERS=yCONFIG_MAC_EMUMOUSEBTN=yCONFIG_NETDEVICES=yCONFIG_NETDEVICES_MULTIQUEUE=yCONFIG_IFB=yCONFIG_DUMMY=yCONFIG_BONDING=yCONFIG_MACVLAN=yCONFIG_EQUALIZER=yCONFIG_TUN=yCONFIG_VETH=yCONFIG_NET_SB1000=yCONFIG_ARCNET=yCONFIG_ARCNET_1201=yCONFIG_ARCNET_1051=yCONFIG_ARCNET_RAW=yCONFIG_ARCNET_CAP=y
CONFIG_ARCNET_COM90xx=y
CONFIG_ARCNET_COM90xxIO=yCONFIG_ARCNET_RIM_I=yCONFIG_ARCNET_COM20020=yCONFIG_ARCNET_COM20020_PCI=yCONFIG_PHYLIB=y
#
# MII PHY device drivers
#CONFIG_MARVELL_PHY=yCONFIG_DAVICOM_PHY=yCONFIG_QSEMI_PHY=yCONFIG_LXT_PHY=yCONFIG_CICADA_PHY=yCONFIG_VITESSE_PHY=yCONFIG_SMSC_PHY=yCONFIG_BROADCOM_PHY=yCONFIG_ICPLUS_PHY=yCONFIG_FIXED_PHY=yCONFIG_FIXED_MII_10_FDX=yCONFIG_FIXED_MII_100_FDX=yCONFIG_FIXED_MII_1000_FDX=yCONFIG_FIXED_MII_AMNT=1CONFIG_MDIO_BITBANG=yCONFIG_NET_ETHERNET=yCONFIG_MII=yCONFIG_HAPPYMEAL=yCONFIG_SUNGEM=yCONFIG_CASSINI=yCONFIG_NET_VENDOR_3COM=yCONFIG_VORTEX=yCONFIG_TYPHOON=yCONFIG_NET_TULIP=yCONFIG_DE2104X=yCONFIG_TULIP=yCONFIG_TULIP_MWI=yCONFIG_TULIP_MMIO=yCONFIG_TULIP_NAPI=yCONFIG_TULIP_NAPI_HW_MITIGATION=yCONFIG_DE4X5=yCONFIG_WINBOND_840=yCONFIG_DM9102=yCONFIG_ULI526X=yCONFIG_PCMCIA_XIRCOM=yCONFIG_HP100=y
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not setCONFIG_NET_PCI=yCONFIG_PCNET32=yCONFIG_PCNET32_NAPI=yCONFIG_AMD8111_ETH=yCONFIG_AMD8111E_NAPI=yCONFIG_ADAPTEC_STARFIRE=yCONFIG_ADAPTEC_STARFIRE_NAPI=yCONFIG_B44=yCONFIG_B44_PCI_AUTOSELECT=yCONFIG_B44_PCICORE_AUTOSELECT=yCONFIG_B44_PCI=yCONFIG_FORCEDETH=yCONFIG_FORCEDETH_NAPI=yCONFIG_EEPRO100=yCONFIG_E100=yCONFIG_FEALNX=yCONFIG_NATSEMI=yCONFIG_NE2K_PCI=yCONFIG_8139CP=yCONFIG_8139TOO=yCONFIG_8139TOO_PIO=yCONFIG_8139TOO_TUNE_TWISTER=yCONFIG_8139TOO_8129=yCONFIG_8139_OLD_RX_RESET=yCONFIG_SIS900=yCONFIG_EPIC100=yCONFIG_SUNDANCE=yCONFIG_SUNDANCE_MMIO=yCONFIG_VIA_RHINE=yCONFIG_VIA_RHINE_MMIO=yCONFIG_VIA_RHINE_NAPI=yCONFIG_SC92031=yCONFIG_NET_POCKET=yCONFIG_ATP=yCONFIG_DE600=yCONFIG_DE620=yCONFIG_NETDEV_1000=yCONFIG_ACENIC=yCONFIG_ACENIC_OMIT_TIGON_I=yCONFIG_DL2K=yCONFIG_E1000=yCONFIG_E1000_NAPI=yCONFIG_E1000_DISABLE_PACKET_SPLIT=yCONFIG_E1000E=yCONFIG_IP1000=yCONFIG_NS83820=yCONFIG_HAMACHI=yCONFIG_YELLOWFIN=yCONFIG_R8169=yCONFIG_R8169_NAPI=yCONFIG_R8169_VLAN=yCONFIG_SIS190=yCONFIG_SKGE=yCONFIG_SKGE_DEBUG=yCONFIG_SKY2=yCONFIG_SKY2_DEBUG=yCONFIG_SK98LIN=yCONFIG_VIA_VELOCITY=yCONFIG_TIGON3=yCONFIG_BNX2=yCONFIG_QLA3XXX=yCONFIG_ATL1=yCONFIG_NETDEV_10000=yCONFIG_CHELSIO_T1=yCONFIG_CHELSIO_T1_1G=yCONFIG_CHELSIO_T1_NAPI=yCONFIG_CHELSIO_T3=yCONFIG_IXGBE=yCONFIG_IXGB=yCONFIG_IXGB_NAPI=yCONFIG_S2IO=yCONFIG_S2IO_NAPI=yCONFIG_MYRI10GE=yCONFIG_NETXEN_NIC=yCONFIG_NIU=yCONFIG_MLX4_CORE=yCONFIG_MLX4_DEBUG=yCONFIG_TEHUTI=yCONFIG_TR=yCONFIG_IBMOL=yCONFIG_3C359=yCONFIG_TMS380TR=yCONFIG_TMSPCI=yCONFIG_ABYSS=y
#
# Wireless LAN
#CONFIG_WLAN_PRE80211=yCONFIG_STRIP=yCONFIG_PCMCIA_WAVELAN=yCONFIG_PCMCIA_NETWAVE=yCONFIG_WLAN_80211=yCONFIG_PCMCIA_RAYCS=yCONFIG_IPW2100=yCONFIG_IPW2100_MONITOR=yCONFIG_IPW2100_DEBUG=yCONFIG_IPW2200=yCONFIG_IPW2200_MONITOR=yCONFIG_IPW2200_RADIOTAP=yCONFIG_IPW2200_PROMISCUOUS=yCONFIG_IPW2200_QOS=yCONFIG_IPW2200_DEBUG=yCONFIG_LIBERTAS=yCONFIG_LIBERTAS_USB=yCONFIG_LIBERTAS_CS=yCONFIG_LIBERTAS_SDIO=yCONFIG_LIBERTAS_DEBUG=yCONFIG_AIRO=yCONFIG_HERMES=yCONFIG_PLX_HERMES=yCONFIG_TMD_HERMES=yCONFIG_NORTEL_HERMES=yCONFIG_PCI_HERMES=yCONFIG_PCMCIA_HERMES=yCONFIG_PCMCIA_SPECTRUM=yCONFIG_ATMEL=yCONFIG_PCI_ATMEL=yCONFIG_PCMCIA_ATMEL=yCONFIG_AIRO_CS=yCONFIG_PCMCIA_WL3501=yCONFIG_PRISM54=yCONFIG_USB_ZD1201=yCONFIG_RTL8187=yCONFIG_ADM8211=yCONFIG_P54_COMMON=yCONFIG_P54_USB=yCONFIG_P54_PCI=yCONFIG_IWLWIFI=yCONFIG_IWLWIFI_DEBUG=yCONFIG_IWLWIFI_SENSITIVITY=yCONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=yCONFIG_IWLWIFI_QOS=yCONFIG_IWL4965=mCONFIG_IWL3945=mCONFIG_HOSTAP=yCONFIG_HOSTAP_FIRMWARE=yCONFIG_HOSTAP_FIRMWARE_NVRAM=yCONFIG_HOSTAP_PLX=yCONFIG_HOSTAP_PCI=yCONFIG_HOSTAP_CS=yCONFIG_BCM43XX=yCONFIG_BCM43XX_DEBUG=yCONFIG_BCM43XX_DMA=yCONFIG_BCM43XX_PIO=yCONFIG_BCM43XX_DMA_AND_PIO_MODE=y
# CONFIG_BCM43XX_DMA_MODE is not set
# CONFIG_BCM43XX_PIO_MODE is not setCONFIG_B43=yCONFIG_B43_PCI_AUTOSELECT=yCONFIG_B43_PCICORE_AUTOSELECT=yCONFIG_B43_PCMCIA=yCONFIG_B43_LEDS=yCONFIG_B43_RFKILL=yCONFIG_B43_DEBUG=yCONFIG_B43_DMA=yCONFIG_B43_PIO=yCONFIG_B43_DMA_AND_PIO_MODE=y
# CONFIG_B43_DMA_MODE is not set
# CONFIG_B43_PIO_MODE is not setCONFIG_B43LEGACY=yCONFIG_B43LEGACY_PCI_AUTOSELECT=yCONFIG_B43LEGACY_PCICORE_AUTOSELECT=yCONFIG_B43LEGACY_DEBUG=yCONFIG_B43LEGACY_DMA=yCONFIG_B43LEGACY_PIO=yCONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
# CONFIG_B43LEGACY_DMA_MODE is not set
# CONFIG_B43LEGACY_PIO_MODE is not setCONFIG_ZD1211RW=yCONFIG_ZD1211RW_DEBUG=yCONFIG_RT2X00=yCONFIG_RT2X00_LIB=yCONFIG_RT2X00_LIB_PCI=yCONFIG_RT2X00_LIB_USB=yCONFIG_RT2X00_LIB_FIRMWARE=yCONFIG_RT2X00_LIB_RFKILL=yCONFIG_RT2400PCI=yCONFIG_RT2400PCI_RFKILL=yCONFIG_RT2500PCI=yCONFIG_RT2500PCI_RFKILL=yCONFIG_RT61PCI=yCONFIG_RT61PCI_RFKILL=yCONFIG_RT2500USB=yCONFIG_RT73USB=yCONFIG_RT2X00_LIB_DEBUGFS=yCONFIG_RT2X00_DEBUG=y
#
# USB Network Adapters
#CONFIG_USB_CATC=yCONFIG_USB_KAWETH=yCONFIG_USB_PEGASUS=yCONFIG_USB_RTL8150=yCONFIG_USB_USBNET=yCONFIG_USB_NET_AX8817X=yCONFIG_USB_NET_CDCETHER=yCONFIG_USB_NET_DM9601=yCONFIG_USB_NET_GL620A=yCONFIG_USB_NET_NET1080=yCONFIG_USB_NET_PLUSB=yCONFIG_USB_NET_MCS7830=yCONFIG_USB_NET_RNDIS_HOST=yCONFIG_USB_NET_CDC_SUBSET=yCONFIG_USB_ALI_M5632=yCONFIG_USB_AN2720=yCONFIG_USB_BELKIN=yCONFIG_USB_ARMLINUX=yCONFIG_USB_EPSON2888=yCONFIG_USB_KC2190=yCONFIG_USB_NET_ZAURUS=yCONFIG_NET_PCMCIA=yCONFIG_PCMCIA_3C589=yCONFIG_PCMCIA_3C574=yCONFIG_PCMCIA_FMVJ18X=yCONFIG_PCMCIA_PCNET=yCONFIG_PCMCIA_NMCLAN=yCONFIG_PCMCIA_SMC91C92=yCONFIG_PCMCIA_XIRC2PS=yCONFIG_PCMCIA_AXNET=yCONFIG_ARCNET_COM20020_CS=yCONFIG_WAN=yCONFIG_LANMEDIA=yCONFIG_HDLC=yCONFIG_HDLC_RAW=yCONFIG_HDLC_RAW_ETH=yCONFIG_HDLC_CISCO=yCONFIG_HDLC_FR=yCONFIG_HDLC_PPP=yCONFIG_HDLC_X25=yCONFIG_PCI200SYN=yCONFIG_WANXL=yCONFIG_PC300=yCONFIG_PC300_MLPPP=yCONFIG_PC300TOO=yCONFIG_FARSYNC=yCONFIG_DSCC4=mCONFIG_DSCC4_PCISYNC=yCONFIG_DSCC4_PCI_RST=yCONFIG_DLCI=yCONFIG_DLCI_MAX=8CONFIG_WAN_ROUTER_DRIVERS=yCONFIG_CYCLADES_SYNC=yCONFIG_CYCLOMX_X25=yCONFIG_LAPBETHER=yCONFIG_X25_ASY=yCONFIG_SBNI=yCONFIG_SBNI_MULTILINE=yCONFIG_ATM_DRIVERS=yCONFIG_ATM_DUMMY=yCONFIG_ATM_TCP=yCONFIG_ATM_LANAI=yCONFIG_ATM_ENI=yCONFIG_ATM_ENI_DEBUG=yCONFIG_ATM_ENI_TUNE_BURST=yCONFIG_ATM_ENI_BURST_TX_16W=yCONFIG_ATM_ENI_BURST_TX_8W=yCONFIG_ATM_ENI_BURST_TX_4W=yCONFIG_ATM_ENI_BURST_TX_2W=yCONFIG_ATM_ENI_BURST_RX_16W=yCONFIG_ATM_ENI_BURST_RX_8W=yCONFIG_ATM_ENI_BURST_RX_4W=yCONFIG_ATM_ENI_BURST_RX_2W=yCONFIG_ATM_FIRESTREAM=yCONFIG_ATM_ZATM=yCONFIG_ATM_ZATM_DEBUG=yCONFIG_ATM_IDT77252=yCONFIG_ATM_IDT77252_DEBUG=yCONFIG_ATM_IDT77252_RCV_ALL=yCONFIG_ATM_IDT77252_USE_SUNI=yCONFIG_ATM_AMBASSADOR=yCONFIG_ATM_AMBASSADOR_DEBUG=yCONFIG_ATM_HORIZON=yCONFIG_ATM_HORIZON_DEBUG=yCONFIG_ATM_FORE200E_MAYBE=yCONFIG_ATM_FORE200E_PCA=yCONFIG_ATM_FORE200E_PCA_DEFAULT_FW=yCONFIG_ATM_FORE200E_USE_TASKLET=yCONFIG_ATM_FORE200E_TX_RETRY=16CONFIG_ATM_FORE200E_DEBUG=0CONFIG_ATM_FORE200E=yCONFIG_ATM_HE=yCONFIG_ATM_HE_USE_SUNI=yCONFIG_FDDI=yCONFIG_DEFXX=yCONFIG_DEFXX_MMIO=yCONFIG_SKFP=yCONFIG_HIPPI=yCONFIG_ROADRUNNER=yCONFIG_ROADRUNNER_LARGE_RINGS=yCONFIG_PLIP=yCONFIG_PPP=yCONFIG_PPP_MULTILINK=yCONFIG_PPP_FILTER=yCONFIG_PPP_ASYNC=yCONFIG_PPP_SYNC_TTY=yCONFIG_PPP_DEFLATE=yCONFIG_PPP_BSDCOMP=yCONFIG_PPP_MPPE=yCONFIG_PPPOE=yCONFIG_PPPOATM=yCONFIG_PPPOL2TP=yCONFIG_SLIP=yCONFIG_SLIP_COMPRESSED=yCONFIG_SLHC=yCONFIG_SLIP_SMART=yCONFIG_SLIP_MODE_SLIP6=yCONFIG_NET_FC=yCONFIG_SHAPER=yCONFIG_NETCONSOLE=yCONFIG_NETCONSOLE_DYNAMIC=yCONFIG_NETPOLL=yCONFIG_NETPOLL_TRAP=yCONFIG_NET_POLL_CONTROLLER=yCONFIG_ISDN=yCONFIG_ISDN_I4L=yCONFIG_ISDN_PPP=yCONFIG_ISDN_PPP_VJ=yCONFIG_ISDN_MPP=yCONFIG_IPPP_FILTER=yCONFIG_ISDN_PPP_BSDCOMP=yCONFIG_ISDN_AUDIO=yCONFIG_ISDN_TTY_FAX=yCONFIG_ISDN_X25=y
#
# ISDN feature submodules
#CONFIG_ISDN_DIVERSION=y
#
# ISDN4Linux hardware drivers
#
#
# Passive cards
#CONFIG_ISDN_DRV_HISAX=y
#
# D-channel protocol features
#CONFIG_HISAX_EURO=yCONFIG_DE_AOC=yCONFIG_HISAX_NO_SENDCOMPLETE=yCONFIG_HISAX_NO_LLC=yCONFIG_HISAX_NO_KEYPAD=yCONFIG_HISAX_1TR6=yCONFIG_HISAX_NI1=yCONFIG_HISAX_MAX_CARDS=8
#
# HiSax supported cards
#CONFIG_HISAX_16_3=yCONFIG_HISAX_TELESPCI=yCONFIG_HISAX_S0BOX=yCONFIG_HISAX_FRITZPCI=yCONFIG_HISAX_AVM_A1_PCMCIA=yCONFIG_HISAX_ELSA=yCONFIG_HISAX_DIEHLDIVA=yCONFIG_HISAX_SEDLBAUER=yCONFIG_HISAX_NETJET=yCONFIG_HISAX_NETJET_U=yCONFIG_HISAX_NICCY=yCONFIG_HISAX_BKM_A4T=yCONFIG_HISAX_SCT_QUADRO=yCONFIG_HISAX_GAZEL=yCONFIG_HISAX_HFC_PCI=yCONFIG_HISAX_W6692=yCONFIG_HISAX_HFC_SX=yCONFIG_HISAX_ENTERNOW_PCI=yCONFIG_HISAX_DEBUG=y
#
# HiSax PCMCIA card service modules
#CONFIG_HISAX_SEDLBAUER_CS=yCONFIG_HISAX_ELSA_CS=yCONFIG_HISAX_AVM_A1_CS=yCONFIG_HISAX_TELES_CS=y
#
# HiSax sub driver modules
#CONFIG_HISAX_ST5481=yCONFIG_HISAX_HFCUSB=yCONFIG_HISAX_HFC4S8S=yCONFIG_HISAX_FRITZ_PCIPNP=yCONFIG_HISAX_HDLC=y
#
# Active cards
#CONFIG_ISDN_DRV_GIGASET=yCONFIG_GIGASET_BASE=yCONFIG_GIGASET_M105=yCONFIG_GIGASET_M101=yCONFIG_GIGASET_DEBUG=yCONFIG_GIGASET_UNDOCREQ=yCONFIG_ISDN_CAPI=yCONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=yCONFIG_CAPI_TRACE=yCONFIG_ISDN_CAPI_MIDDLEWARE=yCONFIG_ISDN_CAPI_CAPI20=yCONFIG_ISDN_CAPI_CAPIFS_BOOL=yCONFIG_ISDN_CAPI_CAPIFS=yCONFIG_ISDN_CAPI_CAPIDRV=y
#
# CAPI hardware drivers
#CONFIG_CAPI_AVM=yCONFIG_ISDN_DRV_AVMB1_B1PCI=yCONFIG_ISDN_DRV_AVMB1_B1PCIV4=yCONFIG_ISDN_DRV_AVMB1_B1PCMCIA=yCONFIG_ISDN_DRV_AVMB1_AVM_CS=yCONFIG_ISDN_DRV_AVMB1_T1PCI=yCONFIG_ISDN_DRV_AVMB1_C4=yCONFIG_CAPI_EICON=yCONFIG_ISDN_DIVAS=yCONFIG_ISDN_DIVAS_BRIPCI=yCONFIG_ISDN_DIVAS_PRIPCI=yCONFIG_ISDN_DIVAS_DIVACAPI=yCONFIG_ISDN_DIVAS_USERIDI=yCONFIG_ISDN_DIVAS_MAINT=mCONFIG_PHONE=yCONFIG_PHONE_IXJ=yCONFIG_PHONE_IXJ_PCMCIA=y
#
# Input device support
#CONFIG_INPUT=yCONFIG_INPUT_FF_MEMLESS=yCONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=yCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768CONFIG_INPUT_JOYDEV=yCONFIG_INPUT_EVDEV=yCONFIG_INPUT_EVBUG=y
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_KEYBOARD_SUNKBD=yCONFIG_KEYBOARD_LKKBD=yCONFIG_KEYBOARD_XTKBD=yCONFIG_KEYBOARD_NEWTON=yCONFIG_KEYBOARD_STOWAWAY=yCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=yCONFIG_MOUSE_PS2_ALPS=yCONFIG_MOUSE_PS2_LOGIPS2PP=yCONFIG_MOUSE_PS2_SYNAPTICS=yCONFIG_MOUSE_PS2_LIFEBOOK=yCONFIG_MOUSE_PS2_TRACKPOINT=yCONFIG_MOUSE_PS2_TOUCHKIT=yCONFIG_MOUSE_SERIAL=yCONFIG_MOUSE_APPLETOUCH=yCONFIG_MOUSE_VSXXXAA=yCONFIG_INPUT_JOYSTICK=yCONFIG_JOYSTICK_ANALOG=yCONFIG_JOYSTICK_A3D=yCONFIG_JOYSTICK_ADI=yCONFIG_JOYSTICK_COBRA=yCONFIG_JOYSTICK_GF2K=yCONFIG_JOYSTICK_GRIP=yCONFIG_JOYSTICK_GRIP_MP=yCONFIG_JOYSTICK_GUILLEMOT=yCONFIG_JOYSTICK_INTERACT=yCONFIG_JOYSTICK_SIDEWINDER=yCONFIG_JOYSTICK_TMDC=yCONFIG_JOYSTICK_IFORCE=yCONFIG_JOYSTICK_IFORCE_USB=yCONFIG_JOYSTICK_IFORCE_232=yCONFIG_JOYSTICK_WARRIOR=yCONFIG_JOYSTICK_MAGELLAN=yCONFIG_JOYSTICK_SPACEORB=yCONFIG_JOYSTICK_SPACEBALL=yCONFIG_JOYSTICK_STINGER=yCONFIG_JOYSTICK_TWIDJOY=yCONFIG_JOYSTICK_DB9=yCONFIG_JOYSTICK_GAMECON=yCONFIG_JOYSTICK_TURBOGRAFX=yCONFIG_JOYSTICK_JOYDUMP=yCONFIG_JOYSTICK_XPAD=yCONFIG_JOYSTICK_XPAD_FF=yCONFIG_JOYSTICK_XPAD_LEDS=yCONFIG_INPUT_TABLET=yCONFIG_TABLET_USB_ACECAD=yCONFIG_TABLET_USB_AIPTEK=yCONFIG_TABLET_USB_GTCO=yCONFIG_TABLET_USB_KBTAB=yCONFIG_TABLET_USB_WACOM=yCONFIG_INPUT_TOUCHSCREEN=yCONFIG_TOUCHSCREEN_ADS7846=yCONFIG_TOUCHSCREEN_FUJITSU=yCONFIG_TOUCHSCREEN_GUNZE=yCONFIG_TOUCHSCREEN_ELO=yCONFIG_TOUCHSCREEN_MTOUCH=yCONFIG_TOUCHSCREEN_MK712=yCONFIG_TOUCHSCREEN_PENMOUNT=yCONFIG_TOUCHSCREEN_TOUCHRIGHT=yCONFIG_TOUCHSCREEN_TOUCHWIN=yCONFIG_TOUCHSCREEN_UCB1400=yCONFIG_TOUCHSCREEN_USB_COMPOSITE=yCONFIG_TOUCHSCREEN_USB_EGALAX=yCONFIG_TOUCHSCREEN_USB_PANJIT=yCONFIG_TOUCHSCREEN_USB_3M=yCONFIG_TOUCHSCREEN_USB_ITM=yCONFIG_TOUCHSCREEN_USB_ETURBO=yCONFIG_TOUCHSCREEN_USB_GUNZE=yCONFIG_TOUCHSCREEN_USB_DMC_TSC10=yCONFIG_TOUCHSCREEN_USB_IRTOUCH=yCONFIG_TOUCHSCREEN_USB_IDEALTEK=yCONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=yCONFIG_TOUCHSCREEN_USB_GOTOP=yCONFIG_INPUT_MISC=yCONFIG_INPUT_PCSPKR=yCONFIG_INPUT_ATLAS_BTNS=yCONFIG_INPUT_ATI_REMOTE=yCONFIG_INPUT_ATI_REMOTE2=yCONFIG_INPUT_KEYSPAN_REMOTE=yCONFIG_INPUT_POWERMATE=yCONFIG_INPUT_YEALINK=yCONFIG_INPUT_UINPUT=y
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_SERIO_I8042=yCONFIG_SERIO_SERPORT=yCONFIG_SERIO_CT82C710=yCONFIG_SERIO_PARKBD=yCONFIG_SERIO_PCIPS2=yCONFIG_SERIO_LIBPS2=yCONFIG_SERIO_RAW=yCONFIG_GAMEPORT=yCONFIG_GAMEPORT_NS558=yCONFIG_GAMEPORT_L4=yCONFIG_GAMEPORT_EMU10K1=yCONFIG_GAMEPORT_FM801=y
#
# Character devices
#CONFIG_VT=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_VT_HW_CONSOLE_BINDING=yCONFIG_SERIAL_NONSTANDARD=yCONFIG_COMPUTONE=yCONFIG_ROCKETPORT=yCONFIG_CYCLADES=yCONFIG_CYZ_INTR=yCONFIG_DIGIEPCA=yCONFIG_MOXA_INTELLIO=yCONFIG_MOXA_SMARTIO=yCONFIG_MOXA_SMARTIO_NEW=yCONFIG_ISI=yCONFIG_SYNCLINK=yCONFIG_SYNCLINKMP=yCONFIG_SYNCLINK_GT=yCONFIG_N_HDLC=yCONFIG_SPECIALIX=yCONFIG_SPECIALIX_RTSCTS=yCONFIG_SX=yCONFIG_RIO=yCONFIG_RIO_OLDPCI=yCONFIG_STALDRV=y
#
# Serial drivers
#CONFIG_SERIAL_8250=yCONFIG_SERIAL_8250_CONSOLE=yCONFIG_FIX_EARLYCON_MEM=yCONFIG_SERIAL_8250_PCI=yCONFIG_SERIAL_8250_PNP=yCONFIG_SERIAL_8250_CS=yCONFIG_SERIAL_8250_NR_UARTS=4CONFIG_SERIAL_8250_RUNTIME_UARTS=4CONFIG_SERIAL_8250_EXTENDED=yCONFIG_SERIAL_8250_MANY_PORTS=yCONFIG_SERIAL_8250_SHARE_IRQ=yCONFIG_SERIAL_8250_DETECT_IRQ=yCONFIG_SERIAL_8250_RSA=y
#
# Non-8250 serial port support
#CONFIG_SERIAL_CORE=yCONFIG_SERIAL_CORE_CONSOLE=yCONFIG_SERIAL_JSM=yCONFIG_UNIX98_PTYS=yCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256CONFIG_PRINTER=yCONFIG_LP_CONSOLE=yCONFIG_PPDEV=yCONFIG_IPMI_HANDLER=yCONFIG_IPMI_PANIC_EVENT=yCONFIG_IPMI_PANIC_STRING=yCONFIG_IPMI_DEVICE_INTERFACE=yCONFIG_IPMI_SI=yCONFIG_IPMI_WATCHDOG=yCONFIG_IPMI_POWEROFF=yCONFIG_HW_RANDOM=yCONFIG_HW_RANDOM_INTEL=yCONFIG_HW_RANDOM_AMD=yCONFIG_NVRAM=yCONFIG_RTC=yCONFIG_R3964=yCONFIG_APPLICOM=y
#
# PCMCIA character devices
#CONFIG_SYNCLINK_CS=yCONFIG_CARDMAN_4000=yCONFIG_CARDMAN_4040=yCONFIG_MWAVE=y
CONFIG_PC8736x_GPIO=yCONFIG_NSC_GPIO=yCONFIG_RAW_DRIVER=yCONFIG_MAX_RAW_DEVS=256CONFIG_HPET=y
# CONFIG_HPET_RTC_IRQ is not setCONFIG_HPET_MMAP=yCONFIG_HANGCHECK_TIMER=yCONFIG_TCG_TPM=yCONFIG_TCG_TIS=yCONFIG_TCG_NSC=yCONFIG_TCG_ATMEL=yCONFIG_TCG_INFINEON=yCONFIG_TELCLOCK=yCONFIG_DEVPORT=yCONFIG_I2C=yCONFIG_I2C_BOARDINFO=yCONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
#CONFIG_I2C_ALGOBIT=yCONFIG_I2C_ALGOPCF=yCONFIG_I2C_ALGOPCA=y
#
# I2C Hardware Bus support
#CONFIG_I2C_ALI1535=yCONFIG_I2C_ALI1563=yCONFIG_I2C_ALI15X3=yCONFIG_I2C_AMD756=yCONFIG_I2C_AMD756_S4882=yCONFIG_I2C_AMD8111=yCONFIG_I2C_I801=yCONFIG_I2C_I810=yCONFIG_I2C_PIIX4=yCONFIG_I2C_NFORCE2=yCONFIG_I2C_OCORES=yCONFIG_I2C_PARPORT=yCONFIG_I2C_PARPORT_LIGHT=yCONFIG_I2C_PROSAVAGE=yCONFIG_I2C_SAVAGE4=yCONFIG_I2C_SIMTEC=yCONFIG_I2C_SIS5595=yCONFIG_I2C_SIS630=yCONFIG_I2C_SIS96X=yCONFIG_I2C_TAOS_EVM=yCONFIG_I2C_STUB=mCONFIG_I2C_TINY_USB=yCONFIG_I2C_VIA=yCONFIG_I2C_VIAPRO=yCONFIG_I2C_VOODOO3=y
#
# Miscellaneous I2C Chip support
#CONFIG_SENSORS_DS1337=yCONFIG_SENSORS_DS1374=yCONFIG_DS1682=yCONFIG_SENSORS_EEPROM=yCONFIG_SENSORS_PCF8574=yCONFIG_SENSORS_PCA9539=yCONFIG_SENSORS_PCF8591=yCONFIG_SENSORS_MAX6875=yCONFIG_SENSORS_TSL2550=yCONFIG_I2C_DEBUG_CORE=yCONFIG_I2C_DEBUG_ALGO=yCONFIG_I2C_DEBUG_BUS=yCONFIG_I2C_DEBUG_CHIP=y
#
# SPI support
#CONFIG_SPI=yCONFIG_SPI_DEBUG=yCONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#CONFIG_SPI_BITBANG=yCONFIG_SPI_BUTTERFLY=yCONFIG_SPI_LM70_LLP=y
#
# SPI Protocol Masters
#CONFIG_SPI_AT25=yCONFIG_SPI_SPIDEV=yCONFIG_SPI_TLE62X0=yCONFIG_W1=yCONFIG_W1_CON=y
#
# 1-wire Bus Masters
#CONFIG_W1_MASTER_MATROX=yCONFIG_W1_MASTER_DS2490=yCONFIG_W1_MASTER_DS2482=y
#
# 1-wire Slaves
#CONFIG_W1_SLAVE_THERM=yCONFIG_W1_SLAVE_SMEM=yCONFIG_W1_SLAVE_DS2433=yCONFIG_W1_SLAVE_DS2433_CRC=yCONFIG_W1_SLAVE_DS2760=yCONFIG_POWER_SUPPLY=yCONFIG_POWER_SUPPLY_DEBUG=yCONFIG_PDA_POWER=yCONFIG_BATTERY_DS2760=yCONFIG_HWMON=yCONFIG_HWMON_VID=yCONFIG_SENSORS_ABITUGURU=yCONFIG_SENSORS_ABITUGURU3=yCONFIG_SENSORS_AD7418=yCONFIG_SENSORS_ADM1021=yCONFIG_SENSORS_ADM1025=yCONFIG_SENSORS_ADM1026=yCONFIG_SENSORS_ADM1029=yCONFIG_SENSORS_ADM1031=yCONFIG_SENSORS_ADM9240=yCONFIG_SENSORS_ADT7470=yCONFIG_SENSORS_K8TEMP=yCONFIG_SENSORS_ASB100=yCONFIG_SENSORS_ATXP1=yCONFIG_SENSORS_DS1621=yCONFIG_SENSORS_I5K_AMB=yCONFIG_SENSORS_F71805F=yCONFIG_SENSORS_F71882FG=yCONFIG_SENSORS_F75375S=yCONFIG_SENSORS_FSCHER=yCONFIG_SENSORS_FSCPOS=yCONFIG_SENSORS_FSCHMD=yCONFIG_SENSORS_GL518SM=yCONFIG_SENSORS_GL520SM=yCONFIG_SENSORS_CORETEMP=yCONFIG_SENSORS_IBMPEX=yCONFIG_SENSORS_IT87=yCONFIG_SENSORS_LM63=yCONFIG_SENSORS_LM70=yCONFIG_SENSORS_LM75=yCONFIG_SENSORS_LM77=yCONFIG_SENSORS_LM78=yCONFIG_SENSORS_LM80=yCONFIG_SENSORS_LM83=yCONFIG_SENSORS_LM85=yCONFIG_SENSORS_LM87=yCONFIG_SENSORS_LM90=yCONFIG_SENSORS_LM92=yCONFIG_SENSORS_LM93=yCONFIG_SENSORS_MAX1619=yCONFIG_SENSORS_MAX6650=yCONFIG_SENSORS_PC87360=yCONFIG_SENSORS_PC87427=yCONFIG_SENSORS_SIS5595=yCONFIG_SENSORS_DME1737=yCONFIG_SENSORS_SMSC47M1=yCONFIG_SENSORS_SMSC47M192=yCONFIG_SENSORS_SMSC47B397=yCONFIG_SENSORS_THMC50=yCONFIG_SENSORS_VIA686A=yCONFIG_SENSORS_VT1211=yCONFIG_SENSORS_VT8231=yCONFIG_SENSORS_W83781D=yCONFIG_SENSORS_W83791D=yCONFIG_SENSORS_W83792D=yCONFIG_SENSORS_W83793=yCONFIG_SENSORS_W83L785TS=yCONFIG_SENSORS_W83627HF=yCONFIG_SENSORS_W83627EHF=yCONFIG_SENSORS_HDAPS=yCONFIG_SENSORS_APPLESMC=yCONFIG_HWMON_DEBUG_CHIP=yCONFIG_WATCHDOG=yCONFIG_WATCHDOG_NOWAYOUT=y
#
# Watchdog Device Drivers
#CONFIG_SOFT_WATCHDOG=yCONFIG_ACQUIRE_WDT=yCONFIG_ADVANTECH_WDT=yCONFIG_ALIM1535_WDT=yCONFIG_ALIM7101_WDT=yCONFIG_SC520_WDT=y
# CONFIG_EUROTECH_WDT is not setCONFIG_IB700_WDT=yCONFIG_IBMASR=yCONFIG_WAFER_WDT=yCONFIG_I6300ESB_WDT=yCONFIG_ITCO_WDT=yCONFIG_ITCO_VENDOR_SUPPORT=yCONFIG_IT8712F_WDT=yCONFIG_SC1200_WDT=yCONFIG_PC87413_WDT=yCONFIG_60XX_WDT=yCONFIG_SBC8360_WDT=yCONFIG_CPU5_WDT=yCONFIG_SMSC37B787_WDT=yCONFIG_W83627HF_WDT=yCONFIG_W83697HF_WDT=yCONFIG_W83877F_WDT=yCONFIG_W83977F_WDT=yCONFIG_MACHZ_WDT=yCONFIG_SBC_EPX_C3_WATCHDOG=y
#
# PCI-based Watchdog Cards
#CONFIG_PCIPCWATCHDOG=yCONFIG_WDTPCI=yCONFIG_WDT_501_PCI=y
#
# USB-based Watchdog Cards
#CONFIG_USBPCWATCHDOG=y
#
# Sonics Silicon Backplane
#CONFIG_SSB_POSSIBLE=yCONFIG_SSB=yCONFIG_SSB_PCIHOST_POSSIBLE=yCONFIG_SSB_PCIHOST=yCONFIG_SSB_PCMCIAHOST_POSSIBLE=yCONFIG_SSB_PCMCIAHOST=yCONFIG_SSB_SILENT=yCONFIG_SSB_DRIVER_PCICORE_POSSIBLE=yCONFIG_SSB_DRIVER_PCICORE=y
#
# Multifunction device drivers
#CONFIG_MFD_SM501=y
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not setCONFIG_DVB_CORE=yCONFIG_DVB_CORE_ATTACH=yCONFIG_DVB_CAPTURE_DRIVERS=y
#
# Supported SAA7146 based PCI Adapters
#
#
# Supported USB Adapters
#CONFIG_DVB_USB=yCONFIG_DVB_USB_DEBUG=yCONFIG_DVB_USB_A800=yCONFIG_DVB_USB_DIBUSB_MB=yCONFIG_DVB_USB_DIBUSB_MB_FAULTY=yCONFIG_DVB_USB_DIBUSB_MC=yCONFIG_DVB_USB_DIB0700=yCONFIG_DVB_USB_UMT_010=yCONFIG_DVB_USB_CXUSB=yCONFIG_DVB_USB_M920X=yCONFIG_DVB_USB_GL861=yCONFIG_DVB_USB_AU6610=yCONFIG_DVB_USB_DIGITV=yCONFIG_DVB_USB_VP7045=yCONFIG_DVB_USB_VP702X=yCONFIG_DVB_USB_GP8PSK=yCONFIG_DVB_USB_NOVA_T_USB2=yCONFIG_DVB_USB_TTUSB2=yCONFIG_DVB_USB_DTT200U=yCONFIG_DVB_USB_OPERA1=yCONFIG_DVB_USB_AF9005=yCONFIG_DVB_USB_AF9005_REMOTE=yCONFIG_DVB_TTUSB_BUDGET=yCONFIG_DVB_TTUSB_DEC=yCONFIG_DVB_CINERGYT2=yCONFIG_DVB_CINERGYT2_TUNING=yCONFIG_DVB_CINERGYT2_STREAM_URB_COUNT=32CONFIG_DVB_CINERGYT2_STREAM_BUF_SIZE=512CONFIG_DVB_CINERGYT2_QUERY_INTERVAL=250CONFIG_DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE=yCONFIG_DVB_CINERGYT2_RC_QUERY_INTERVAL=50
#
# Supported FlexCopII (B2C2) Adapters
#CONFIG_DVB_B2C2_FLEXCOP=yCONFIG_DVB_B2C2_FLEXCOP_PCI=yCONFIG_DVB_B2C2_FLEXCOP_USB=yCONFIG_DVB_B2C2_FLEXCOP_DEBUG=y
#
# Supported BT878 Adapters
#
#
# Supported Pluto2 Adapters
#CONFIG_DVB_PLUTO2=y
#
# Supported DVB Frontends
#
#
# Customise DVB Frontends
#CONFIG_DVB_FE_CUSTOMISE=y
#
# DVB-S (satellite) frontends
#CONFIG_DVB_STV0299=yCONFIG_DVB_CX24110=yCONFIG_DVB_CX24123=yCONFIG_DVB_TDA8083=yCONFIG_DVB_MT312=yCONFIG_DVB_VES1X93=yCONFIG_DVB_S5H1420=yCONFIG_DVB_TDA10086=y
#
# DVB-T (terrestrial) frontends
#CONFIG_DVB_SP8870=yCONFIG_DVB_SP887X=yCONFIG_DVB_CX22700=yCONFIG_DVB_CX22702=yCONFIG_DVB_L64781=yCONFIG_DVB_TDA1004X=yCONFIG_DVB_NXT6000=yCONFIG_DVB_MT352=yCONFIG_DVB_ZL10353=yCONFIG_DVB_DIB3000MB=yCONFIG_DVB_DIB3000MC=yCONFIG_DVB_DIB7000M=yCONFIG_DVB_DIB7000P=y
#
# DVB-C (cable) frontends
#CONFIG_DVB_VES1820=yCONFIG_DVB_TDA10021=yCONFIG_DVB_TDA10023=yCONFIG_DVB_STV0297=y
#
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends #CONFIG_DVB_NXT200X=yCONFIG_DVB_OR51211=yCONFIG_DVB_OR51132=yCONFIG_DVB_BCM3510=yCONFIG_DVB_LGDT330X=yCONFIG_DVB_S5H1409=y
#
# Tuners/PLL support
#CONFIG_DVB_PLL=yCONFIG_DVB_TDA826X=yCONFIG_DVB_TDA827X=yCONFIG_DVB_TUNER_QT1010=yCONFIG_DVB_TUNER_MT2060=yCONFIG_DVB_TUNER_MT2266=yCONFIG_DVB_TUNER_MT2131=yCONFIG_DVB_TUNER_DIB0070=y
#
# Miscellaneous devices
#CONFIG_DVB_LNBP21=yCONFIG_DVB_ISL6421=yCONFIG_DVB_TUA6100=yCONFIG_DAB=yCONFIG_USB_DABUSB=y
#
# Graphics support
#CONFIG_AGP=yCONFIG_AGP_AMD64=yCONFIG_AGP_INTEL=yCONFIG_AGP_SIS=yCONFIG_AGP_VIA=yCONFIG_DRM=yCONFIG_DRM_TDFX=yCONFIG_DRM_R128=yCONFIG_DRM_RADEON=yCONFIG_DRM_I810=yCONFIG_DRM_I830=y
# CONFIG_DRM_I915 is not setCONFIG_DRM_MGA=yCONFIG_DRM_SIS=yCONFIG_DRM_VIA=yCONFIG_DRM_SAVAGE=yCONFIG_VGASTATE=yCONFIG_VIDEO_OUTPUT_CONTROL=yCONFIG_FB=yCONFIG_FIRMWARE_EDID=yCONFIG_FB_DDC=yCONFIG_FB_CFB_FILLRECT=yCONFIG_FB_CFB_COPYAREA=yCONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not setCONFIG_FB_SYS_FILLRECT=yCONFIG_FB_SYS_COPYAREA=yCONFIG_FB_SYS_IMAGEBLIT=yCONFIG_FB_SYS_FOPS=yCONFIG_FB_DEFERRED_IO=yCONFIG_FB_SVGALIB=y
# CONFIG_FB_MACMODES is not setCONFIG_FB_BACKLIGHT=yCONFIG_FB_MODE_HELPERS=yCONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not setCONFIG_FB_PM2=yCONFIG_FB_PM2_FIFO_DISCONNECT=yCONFIG_FB_CYBER2000=yCONFIG_FB_ARC=y
# CONFIG_FB_ASILIANT is not setCONFIG_FB_IMSTT=y
# CONFIG_FB_VGA16 is not setCONFIG_FB_UVESA=y
# CONFIG_FB_VESA is not setCONFIG_FB_EFI=yCONFIG_FB_IMAC=yCONFIG_FB_HECUBA=yCONFIG_FB_HGA=yCONFIG_FB_HGA_ACCEL=yCONFIG_FB_S1D13XXX=yCONFIG_FB_NVIDIA=yCONFIG_FB_NVIDIA_I2C=yCONFIG_FB_NVIDIA_DEBUG=yCONFIG_FB_NVIDIA_BACKLIGHT=yCONFIG_FB_RIVA=yCONFIG_FB_RIVA_I2C=yCONFIG_FB_RIVA_DEBUG=yCONFIG_FB_RIVA_BACKLIGHT=yCONFIG_FB_LE80578=yCONFIG_FB_CARILLO_RANCH=yCONFIG_FB_INTEL=yCONFIG_FB_INTEL_DEBUG=yCONFIG_FB_INTEL_I2C=yCONFIG_FB_MATROX=yCONFIG_FB_MATROX_MILLENIUM=yCONFIG_FB_MATROX_MYSTIQUE=yCONFIG_FB_MATROX_G=yCONFIG_FB_MATROX_I2C=yCONFIG_FB_MATROX_MAVEN=yCONFIG_FB_MATROX_MULTIHEAD=y
# CONFIG_FB_RADEON is not setCONFIG_FB_ATY128=yCONFIG_FB_ATY128_BACKLIGHT=yCONFIG_FB_ATY=yCONFIG_FB_ATY_CT=yCONFIG_FB_ATY_GENERIC_LCD=yCONFIG_FB_ATY_GX=yCONFIG_FB_ATY_BACKLIGHT=yCONFIG_FB_S3=yCONFIG_FB_SAVAGE=yCONFIG_FB_SAVAGE_I2C=yCONFIG_FB_SAVAGE_ACCEL=yCONFIG_FB_SIS=yCONFIG_FB_SIS_300=yCONFIG_FB_SIS_315=yCONFIG_FB_NEOMAGIC=yCONFIG_FB_KYRO=yCONFIG_FB_3DFX=yCONFIG_FB_3DFX_ACCEL=yCONFIG_FB_VOODOO1=yCONFIG_FB_VT8623=yCONFIG_FB_TRIDENT=yCONFIG_FB_TRIDENT_ACCEL=yCONFIG_FB_ARK=yCONFIG_FB_PM3=yCONFIG_FB_GEODE=yCONFIG_FB_GEODE_LX=yCONFIG_FB_GEODE_GX=yCONFIG_FB_GEODE_GX_SET_FBSIZE=yCONFIG_FB_GEODE_GX_FBSIZE=0x1600000CONFIG_FB_GEODE_GX1=yCONFIG_FB_SM501=y
# CONFIG_FB_VIRTUAL is not setCONFIG_BACKLIGHT_LCD_SUPPORT=yCONFIG_LCD_CLASS_DEVICE=yCONFIG_LCD_LTV350QV=yCONFIG_BACKLIGHT_CLASS_DEVICE=yCONFIG_BACKLIGHT_CORGI=yCONFIG_BACKLIGHT_PROGEAR=yCONFIG_BACKLIGHT_CARILLO_RANCH=y
#
# Display device support
#CONFIG_DISPLAY_SUPPORT=y
#
# Display hardware drivers
#
#
# Console display driver support
#CONFIG_VGA_CONSOLE=yCONFIG_VGACON_SOFT_SCROLLBACK=yCONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64CONFIG_VIDEO_SELECT=yCONFIG_DUMMY_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE is not set
CONFIG_FONT_8x16=yCONFIG_LOGO=yCONFIG_LOGO_LINUX_MONO=yCONFIG_LOGO_LINUX_VGA16=yCONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#CONFIG_SND=yCONFIG_SND_TIMER=yCONFIG_SND_PCM=yCONFIG_SND_HWDEP=yCONFIG_SND_RAWMIDI=yCONFIG_SND_SEQUENCER=yCONFIG_SND_SEQ_DUMMY=yCONFIG_SND_OSSEMUL=yCONFIG_SND_MIXER_OSS=yCONFIG_SND_PCM_OSS=yCONFIG_SND_PCM_OSS_PLUGINS=yCONFIG_SND_SEQUENCER_OSS=yCONFIG_SND_RTCTIMER=yCONFIG_SND_SEQ_RTCTIMER_DEFAULT=yCONFIG_SND_DYNAMIC_MINORS=yCONFIG_SND_SUPPORT_OLD_API=yCONFIG_SND_VERBOSE_PROCFS=yCONFIG_SND_VERBOSE_PRINTK=yCONFIG_SND_DEBUG=yCONFIG_SND_DEBUG_DETECT=yCONFIG_SND_PCM_XRUN_DEBUG=y
#
# Generic devices
#CONFIG_SND_MPU401_UART=yCONFIG_SND_OPL3_LIB=yCONFIG_SND_VX_LIB=yCONFIG_SND_AC97_CODEC=yCONFIG_SND_DUMMY=yCONFIG_SND_VIRMIDI=y
# CONFIG_SND_MTPAV is not setCONFIG_SND_MTS64=yCONFIG_SND_SERIAL_U16550=yCONFIG_SND_MPU401=yCONFIG_SND_PORTMAN2X4=yCONFIG_SND_SB_COMMON=yCONFIG_SND_SB16_DSP=y
#
# PCI devices
#CONFIG_SND_AD1889=yCONFIG_SND_ALS300=yCONFIG_SND_ALS4000=yCONFIG_SND_ALI5451=yCONFIG_SND_ATIIXP=yCONFIG_SND_ATIIXP_MODEM=yCONFIG_SND_AU8810=yCONFIG_SND_AU8820=yCONFIG_SND_AU8830=yCONFIG_SND_AZT3328=yCONFIG_SND_BT87X=yCONFIG_SND_BT87X_OVERCLOCK=yCONFIG_SND_CA0106=yCONFIG_SND_CMIPCI=yCONFIG_SND_CS4281=yCONFIG_SND_CS46XX=yCONFIG_SND_CS46XX_NEW_DSP=yCONFIG_SND_CS5530=yCONFIG_SND_DARLA20=yCONFIG_SND_GINA20=yCONFIG_SND_LAYLA20=yCONFIG_SND_DARLA24=yCONFIG_SND_GINA24=yCONFIG_SND_LAYLA24=yCONFIG_SND_MONA=yCONFIG_SND_MIA=yCONFIG_SND_ECHO3G=yCONFIG_SND_INDIGO=yCONFIG_SND_INDIGOIO=yCONFIG_SND_INDIGODJ=yCONFIG_SND_EMU10K1=yCONFIG_SND_EMU10K1X=yCONFIG_SND_ENS1370=yCONFIG_SND_ENS1371=yCONFIG_SND_ES1938=yCONFIG_SND_ES1968=yCONFIG_SND_FM801=y
# CONFIG_SND_FM801_TEA575X_BOOL is not setCONFIG_SND_HDA_INTEL=yCONFIG_SND_HDA_HWDEP=yCONFIG_SND_HDA_CODEC_REALTEK=yCONFIG_SND_HDA_CODEC_ANALOG=yCONFIG_SND_HDA_CODEC_SIGMATEL=yCONFIG_SND_HDA_CODEC_VIA=yCONFIG_SND_HDA_CODEC_ATIHDMI=yCONFIG_SND_HDA_CODEC_CONEXANT=yCONFIG_SND_HDA_CODEC_CMEDIA=yCONFIG_SND_HDA_CODEC_SI3054=yCONFIG_SND_HDA_GENERIC=yCONFIG_SND_HDA_POWER_SAVE=yCONFIG_SND_HDA_POWER_SAVE_DEFAULT=0CONFIG_SND_HDSP=yCONFIG_SND_HDSPM=yCONFIG_SND_ICE1712=yCONFIG_SND_ICE1724=yCONFIG_SND_INTEL8X0=yCONFIG_SND_INTEL8X0M=yCONFIG_SND_KORG1212=yCONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=yCONFIG_SND_MAESTRO3=yCONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=yCONFIG_SND_MIXART=yCONFIG_SND_NM256=yCONFIG_SND_PCXHR=yCONFIG_SND_RIPTIDE=yCONFIG_SND_RME32=yCONFIG_SND_RME96=yCONFIG_SND_RME9652=yCONFIG_SND_SONICVIBES=yCONFIG_SND_TRIDENT=yCONFIG_SND_VIA82XX=yCONFIG_SND_VIA82XX_MODEM=yCONFIG_SND_VX222=yCONFIG_SND_YMFPCI=yCONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=yCONFIG_SND_AC97_POWER_SAVE=yCONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
#
# SPI devices
#
#
# USB devices
#CONFIG_SND_USB_AUDIO=yCONFIG_SND_USB_USX2Y=yCONFIG_SND_USB_CAIAQ=yCONFIG_SND_USB_CAIAQ_INPUT=y
#
# PCMCIA devices
#CONFIG_SND_VXPOCKET=yCONFIG_SND_PDAUDIOCF=y
#
# System on Chip audio support
#CONFIG_SND_SOC=y
#
# SoC Audio support for SuperH
#
#
# Open Sound System
#CONFIG_SOUND_PRIME=yCONFIG_SOUND_TRIDENT=y CONFIG_SOUND_MSNDCLAS=m CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin" CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin" CONFIG_SOUND_MSNDPIN=m CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin" CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin" # CONFIG_SOUND_OSS is not set CONFIG_AC97_BUS=yCONFIG_HID_SUPPORT=yCONFIG_HID=yCONFIG_HID_DEBUG=yCONFIG_HIDRAW=y
#
# USB Input Devices
#CONFIG_USB_HID=yCONFIG_USB_HIDINPUT_POWERBOOK=yCONFIG_HID_FF=yCONFIG_HID_PID=yCONFIG_LOGITECH_FF=yCONFIG_PANTHERLORD_FF=yCONFIG_THRUSTMASTER_FF=yCONFIG_ZEROPLUS_FF=yCONFIG_USB_HIDDEV=yCONFIG_USB_SUPPORT=yCONFIG_USB_ARCH_HAS_HCD=yCONFIG_USB_ARCH_HAS_OHCI=yCONFIG_USB_ARCH_HAS_EHCI=yCONFIG_USB=yCONFIG_USB_DEBUG=y
#
# Miscellaneous USB options
#CONFIG_USB_DEVICEFS=yCONFIG_USB_DEVICE_CLASS=yCONFIG_USB_DYNAMIC_MINORS=yCONFIG_USB_SUSPEND=yCONFIG_USB_PERSIST=y
# CONFIG_USB_OTG is not set
#
# USB Host Controller Drivers
#CONFIG_USB_EHCI_HCD=yCONFIG_USB_EHCI_SPLIT_ISO=yCONFIG_USB_EHCI_ROOT_HUB_TT=yCONFIG_USB_EHCI_TT_NEWSCHED=yCONFIG_USB_ISP116X_HCD=yCONFIG_USB_OHCI_HCD=yCONFIG_USB_OHCI_HCD_SSB=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not setCONFIG_USB_OHCI_LITTLE_ENDIAN=yCONFIG_USB_UHCI_HCD=yCONFIG_USB_U132_HCD=yCONFIG_USB_SL811_HCD=yCONFIG_USB_SL811_CS=yCONFIG_USB_R8A66597_HCD=y
#
# USB Device Class drivers
#CONFIG_USB_ACM=yCONFIG_USB_PRINTER=y
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' #
#
# may also be needed; see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE_DEBUG=y 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_ALAUDA=y CONFIG_USB_STORAGE_KARMA=y CONFIG_USB_LIBUSUAL=y
#
# USB Imaging devices
#CONFIG_USB_MDC800=yCONFIG_USB_MICROTEK=yCONFIG_USB_MON=y
#
# USB port drivers
#CONFIG_USB_USS720=y
#
# USB Serial Converter support
#CONFIG_USB_SERIAL=yCONFIG_USB_SERIAL_CONSOLE=yCONFIG_USB_SERIAL_GENERIC=yCONFIG_USB_SERIAL_AIRCABLE=yCONFIG_USB_SERIAL_AIRPRIME=yCONFIG_USB_SERIAL_ARK3116=yCONFIG_USB_SERIAL_BELKIN=yCONFIG_USB_SERIAL_CH341=yCONFIG_USB_SERIAL_WHITEHEAT=yCONFIG_USB_SERIAL_DIGI_ACCELEPORT=yCONFIG_USB_SERIAL_CP2101=yCONFIG_USB_SERIAL_CYPRESS_M8=yCONFIG_USB_SERIAL_EMPEG=yCONFIG_USB_SERIAL_FTDI_SIO=yCONFIG_USB_SERIAL_FUNSOFT=yCONFIG_USB_SERIAL_VISOR=yCONFIG_USB_SERIAL_IPAQ=yCONFIG_USB_SERIAL_IR=yCONFIG_USB_SERIAL_EDGEPORT=yCONFIG_USB_SERIAL_EDGEPORT_TI=yCONFIG_USB_SERIAL_GARMIN=yCONFIG_USB_SERIAL_IPW=yCONFIG_USB_SERIAL_KEYSPAN_PDA=yCONFIG_USB_SERIAL_KEYSPAN=yCONFIG_USB_SERIAL_KEYSPAN_MPR=yCONFIG_USB_SERIAL_KEYSPAN_USA28=yCONFIG_USB_SERIAL_KEYSPAN_USA28X=yCONFIG_USB_SERIAL_KEYSPAN_USA28XA=yCONFIG_USB_SERIAL_KEYSPAN_USA28XB=yCONFIG_USB_SERIAL_KEYSPAN_USA19=yCONFIG_USB_SERIAL_KEYSPAN_USA18X=yCONFIG_USB_SERIAL_KEYSPAN_USA19W=yCONFIG_USB_SERIAL_KEYSPAN_USA19QW=yCONFIG_USB_SERIAL_KEYSPAN_USA19QI=yCONFIG_USB_SERIAL_KEYSPAN_USA49W=yCONFIG_USB_SERIAL_KEYSPAN_USA49WLC=yCONFIG_USB_SERIAL_KLSI=yCONFIG_USB_SERIAL_KOBIL_SCT=yCONFIG_USB_SERIAL_MCT_U232=yCONFIG_USB_SERIAL_MOS7720=yCONFIG_USB_SERIAL_MOS7840=yCONFIG_USB_SERIAL_NAVMAN=yCONFIG_USB_SERIAL_PL2303=yCONFIG_USB_SERIAL_OTI6858=yCONFIG_USB_SERIAL_HP4X=yCONFIG_USB_SERIAL_SAFE=yCONFIG_USB_SERIAL_SAFE_PADDED=yCONFIG_USB_SERIAL_SIERRAWIRELESS=yCONFIG_USB_SERIAL_TI=yCONFIG_USB_SERIAL_CYBERJACK=yCONFIG_USB_SERIAL_XIRCOM=yCONFIG_USB_SERIAL_OPTION=yCONFIG_USB_SERIAL_OMNINET=yCONFIG_USB_SERIAL_DEBUG=yCONFIG_USB_EZUSB=y
#
# USB Miscellaneous drivers
#CONFIG_USB_EMI62=yCONFIG_USB_EMI26=yCONFIG_USB_ADUTUX=yCONFIG_USB_AUERSWALD=yCONFIG_USB_RIO500=yCONFIG_USB_LEGOTOWER=yCONFIG_USB_LCD=yCONFIG_USB_BERRY_CHARGE=yCONFIG_USB_LED=yCONFIG_USB_CYPRESS_CY7C63=yCONFIG_USB_CYTHERM=yCONFIG_USB_PHIDGET=yCONFIG_USB_PHIDGETKIT=yCONFIG_USB_PHIDGETMOTORCONTROL=yCONFIG_USB_PHIDGETSERVO=yCONFIG_USB_IDMOUSE=yCONFIG_USB_FTDI_ELAN=yCONFIG_USB_APPLEDISPLAY=yCONFIG_USB_SISUSBVGA=yCONFIG_USB_SISUSBVGA_CON=yCONFIG_USB_LD=yCONFIG_USB_TRANCEVIBRATOR=yCONFIG_USB_IOWARRIOR=yCONFIG_USB_TEST=y
#
# USB DSL modem support
#CONFIG_USB_ATM=yCONFIG_USB_SPEEDTOUCH=yCONFIG_USB_CXACRU=yCONFIG_USB_UEAGLEATM=yCONFIG_USB_XUSBATM=y
#
# USB Gadget Support
#CONFIG_USB_GADGET=yCONFIG_USB_GADGET_DEBUG=yCONFIG_USB_GADGET_DEBUG_FILES=yCONFIG_USB_GADGET_DEBUG_FS=yCONFIG_USB_GADGET_SELECTED=yCONFIG_USB_GADGET_AMD5536UDC=yCONFIG_USB_AMD5536UDC=y
# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
# CONFIG_USB_GADGET_M66592 is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not setCONFIG_USB_GADGET_DUALSPEED=y
# CONFIG_USB_ZERO is not setCONFIG_USB_ETH=yCONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not setCONFIG_MMC=yCONFIG_MMC_DEBUG=yCONFIG_MMC_UNSAFE_RESUME=y
#
# MMC/SD Card Drivers
#CONFIG_MMC_BLOCK=yCONFIG_MMC_BLOCK_BOUNCE=yCONFIG_SDIO_UART=y
#
# MMC/SD Host Controller Drivers
#CONFIG_MMC_SDHCI=yCONFIG_MMC_RICOH_MMC=yCONFIG_MMC_WBSD=yCONFIG_MMC_TIFM_SD=yCONFIG_MMC_SPI=yCONFIG_NEW_LEDS=yCONFIG_LEDS_CLASS=y
#
# LED drivers
#
#
# LED Triggers
#CONFIG_LEDS_TRIGGERS=yCONFIG_LEDS_TRIGGER_TIMER=yCONFIG_LEDS_TRIGGER_HEARTBEAT=yCONFIG_INFINIBAND=yCONFIG_INFINIBAND_USER_MAD=yCONFIG_INFINIBAND_USER_ACCESS=yCONFIG_INFINIBAND_USER_MEM=yCONFIG_INFINIBAND_ADDR_TRANS=yCONFIG_INFINIBAND_MTHCA=yCONFIG_INFINIBAND_MTHCA_DEBUG=yCONFIG_INFINIBAND_IPATH=yCONFIG_INFINIBAND_AMSO1100=yCONFIG_INFINIBAND_AMSO1100_DEBUG=yCONFIG_INFINIBAND_CXGB3=yCONFIG_INFINIBAND_CXGB3_DEBUG=yCONFIG_MLX4_INFINIBAND=yCONFIG_INFINIBAND_IPOIB=yCONFIG_INFINIBAND_IPOIB_CM=yCONFIG_INFINIBAND_IPOIB_DEBUG=yCONFIG_INFINIBAND_IPOIB_DEBUG_DATA=yCONFIG_INFINIBAND_SRP=yCONFIG_INFINIBAND_ISER=yCONFIG_EDAC=y
#
# Reporting subsystems
#CONFIG_EDAC_DEBUG=yCONFIG_EDAC_MM_EDAC=yCONFIG_EDAC_E752X=yCONFIG_EDAC_I82975X=yCONFIG_EDAC_I5000=yCONFIG_RTC_LIB=yCONFIG_RTC_CLASS=yCONFIG_RTC_HCTOSYS=yCONFIG_RTC_HCTOSYS_DEVICE="rtc0"CONFIG_RTC_DEBUG=y
#
# RTC interfaces
#CONFIG_RTC_INTF_SYSFS=yCONFIG_RTC_INTF_PROC=yCONFIG_RTC_INTF_DEV=yCONFIG_RTC_INTF_DEV_UIE_EMUL=yCONFIG_RTC_DRV_TEST=y
#
# I2C RTC drivers
#CONFIG_RTC_DRV_DS1307=yCONFIG_RTC_DRV_DS1374=yCONFIG_RTC_DRV_DS1672=yCONFIG_RTC_DRV_MAX6900=yCONFIG_RTC_DRV_RS5C372=yCONFIG_RTC_DRV_ISL1208=yCONFIG_RTC_DRV_X1205=yCONFIG_RTC_DRV_PCF8563=yCONFIG_RTC_DRV_PCF8583=yCONFIG_RTC_DRV_M41T80=yCONFIG_RTC_DRV_M41T80_WDT=y
#
# SPI RTC drivers
#CONFIG_RTC_DRV_RS5C348=yCONFIG_RTC_DRV_MAX6902=y
#
# Platform RTC drivers
#CONFIG_RTC_DRV_CMOS=yCONFIG_RTC_DRV_DS1553=yCONFIG_RTC_DRV_STK17TA8=yCONFIG_RTC_DRV_DS1742=yCONFIG_RTC_DRV_M48T86=yCONFIG_RTC_DRV_M48T59=yCONFIG_RTC_DRV_V3020=y
#
# on-CPU RTC drivers
#CONFIG_DMADEVICES=y
#
# DMA Devices
#CONFIG_INTEL_IOATDMA=yCONFIG_DMA_ENGINE=y
#
# DMA Clients
#CONFIG_NET_DMA=yCONFIG_DCA=yCONFIG_AUXDISPLAY=yCONFIG_KS0108=yCONFIG_KS0108_PORT=0x378CONFIG_KS0108_DELAY=2CONFIG_CFAG12864B=yCONFIG_CFAG12864B_RATE=20CONFIG_VIRTUALIZATION=yCONFIG_KVM=yCONFIG_KVM_INTEL=yCONFIG_KVM_AMD=y
#
# Userspace I/O
#CONFIG_UIO=yCONFIG_UIO_CIF=y
#
# Firmware Drivers
#CONFIG_EDD=yCONFIG_EFI_VARS=yCONFIG_DELL_RBU=yCONFIG_DCDBAS=yCONFIG_DMIID=y
#
# File systems
#CONFIG_EXT2_FS=yCONFIG_EXT2_FS_XATTR=yCONFIG_EXT2_FS_POSIX_ACL=yCONFIG_EXT2_FS_SECURITY=yCONFIG_EXT2_FS_XIP=yCONFIG_FS_XIP=yCONFIG_EXT3_FS=yCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_EXT3_FS_SECURITY=yCONFIG_EXT4DEV_FS=yCONFIG_EXT4DEV_FS_XATTR=yCONFIG_EXT4DEV_FS_POSIX_ACL=yCONFIG_EXT4DEV_FS_SECURITY=yCONFIG_JBD=yCONFIG_JBD_DEBUG=yCONFIG_JBD2=yCONFIG_JBD2_DEBUG=yCONFIG_FS_MBCACHE=yCONFIG_REISERFS_FS=yCONFIG_REISERFS_CHECK=yCONFIG_REISERFS_PROC_INFO=yCONFIG_REISERFS_FS_XATTR=yCONFIG_REISERFS_FS_POSIX_ACL=yCONFIG_REISERFS_FS_SECURITY=yCONFIG_JFS_FS=yCONFIG_JFS_POSIX_ACL=yCONFIG_JFS_SECURITY=yCONFIG_JFS_DEBUG=yCONFIG_JFS_STATISTICS=yCONFIG_FS_POSIX_ACL=yCONFIG_XFS_FS=yCONFIG_XFS_QUOTA=yCONFIG_XFS_SECURITY=yCONFIG_XFS_POSIX_ACL=yCONFIG_XFS_RT=yCONFIG_GFS2_FS=yCONFIG_GFS2_FS_LOCKING_NOLOCK=yCONFIG_GFS2_FS_LOCKING_DLM=yCONFIG_OCFS2_FS=yCONFIG_OCFS2_DEBUG_MASKLOG=yCONFIG_OCFS2_DEBUG_FS=yCONFIG_MINIX_FS=yCONFIG_ROMFS_FS=yCONFIG_INOTIFY=yCONFIG_INOTIFY_USER=yCONFIG_QUOTA=yCONFIG_QUOTA_NETLINK_INTERFACE=yCONFIG_PRINT_QUOTA_WARNING=yCONFIG_QFMT_V1=yCONFIG_QFMT_V2=yCONFIG_QUOTACTL=yCONFIG_DNOTIFY=yCONFIG_AUTOFS_FS=yCONFIG_AUTOFS4_FS=yCONFIG_FUSE_FS=yCONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
#CONFIG_ISO9660_FS=yCONFIG_JOLIET=yCONFIG_ZISOFS=yCONFIG_UDF_FS=yCONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
#CONFIG_FAT_FS=yCONFIG_MSDOS_FS=yCONFIG_VFAT_FS=yCONFIG_FAT_DEFAULT_CODEPAGE=437CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"CONFIG_NTFS_FS=yCONFIG_NTFS_DEBUG=yCONFIG_NTFS_RW=y
#
# Pseudo filesystems
#CONFIG_PROC_FS=yCONFIG_PROC_KCORE=yCONFIG_PROC_VMCORE=yCONFIG_PROC_SYSCTL=yCONFIG_SYSFS=yCONFIG_TMPFS=yCONFIG_TMPFS_POSIX_ACL=yCONFIG_HUGETLBFS=yCONFIG_HUGETLB_PAGE=yCONFIG_CONFIGFS_FS=y
#
# Miscellaneous filesystems
#CONFIG_ADFS_FS=yCONFIG_ADFS_FS_RW=yCONFIG_AFFS_FS=yCONFIG_ECRYPT_FS=yCONFIG_HFS_FS=yCONFIG_HFSPLUS_FS=yCONFIG_BEFS_FS=yCONFIG_BEFS_DEBUG=yCONFIG_BFS_FS=yCONFIG_EFS_FS=yCONFIG_CRAMFS=yCONFIG_VXFS_FS=yCONFIG_HPFS_FS=yCONFIG_QNX4FS_FS=yCONFIG_SYSV_FS=yCONFIG_UFS_FS=yCONFIG_UFS_FS_WRITE=yCONFIG_UFS_DEBUG=yCONFIG_NETWORK_FILESYSTEMS=yCONFIG_NFS_FS=yCONFIG_NFS_V3=yCONFIG_NFS_V3_ACL=yCONFIG_NFS_V4=yCONFIG_NFS_DIRECTIO=yCONFIG_NFSD=yCONFIG_NFSD_V2_ACL=yCONFIG_NFSD_V3=yCONFIG_NFSD_V3_ACL=yCONFIG_NFSD_V4=yCONFIG_NFSD_TCP=y
# CONFIG_ROOT_NFS is not setCONFIG_LOCKD=yCONFIG_LOCKD_V4=yCONFIG_EXPORTFS=yCONFIG_NFS_ACL_SUPPORT=yCONFIG_NFS_COMMON=yCONFIG_SUNRPC=yCONFIG_SUNRPC_GSS=yCONFIG_SUNRPC_XPRT_RDMA=yCONFIG_SUNRPC_BIND34=yCONFIG_RPCSEC_GSS_KRB5=yCONFIG_RPCSEC_GSS_SPKM3=yCONFIG_SMB_FS=yCONFIG_SMB_NLS_DEFAULT=yCONFIG_SMB_NLS_REMOTE="cp437"CONFIG_CIFS=yCONFIG_CIFS_STATS=yCONFIG_CIFS_STATS2=yCONFIG_CIFS_WEAK_PW_HASH=yCONFIG_CIFS_XATTR=yCONFIG_CIFS_POSIX=yCONFIG_CIFS_DEBUG2=yCONFIG_CIFS_EXPERIMENTAL=yCONFIG_CIFS_UPCALL=yCONFIG_NCP_FS=yCONFIG_NCPFS_PACKET_SIGNING=yCONFIG_NCPFS_IOCTL_LOCKING=yCONFIG_NCPFS_STRONG=yCONFIG_NCPFS_NFS_NS=yCONFIG_NCPFS_OS2_NS=yCONFIG_NCPFS_SMALLDOS=yCONFIG_NCPFS_NLS=yCONFIG_NCPFS_EXTRAS=yCONFIG_CODA_FS=yCONFIG_CODA_FS_OLD_API=yCONFIG_AFS_FS=yCONFIG_AFS_DEBUG=yCONFIG_9P_FS=y
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=yCONFIG_ACORN_PARTITION=yCONFIG_ACORN_PARTITION_CUMANA=yCONFIG_ACORN_PARTITION_EESOX=yCONFIG_ACORN_PARTITION_ICS=yCONFIG_ACORN_PARTITION_ADFS=yCONFIG_ACORN_PARTITION_POWERTEC=yCONFIG_ACORN_PARTITION_RISCIX=yCONFIG_OSF_PARTITION=yCONFIG_AMIGA_PARTITION=yCONFIG_ATARI_PARTITION=yCONFIG_MAC_PARTITION=yCONFIG_MSDOS_PARTITION=yCONFIG_BSD_DISKLABEL=yCONFIG_MINIX_SUBPARTITION=yCONFIG_SOLARIS_X86_PARTITION=yCONFIG_UNIXWARE_DISKLABEL=yCONFIG_LDM_PARTITION=yCONFIG_LDM_DEBUG=yCONFIG_SGI_PARTITION=yCONFIG_ULTRIX_PARTITION=yCONFIG_SUN_PARTITION=yCONFIG_KARMA_PARTITION=yCONFIG_EFI_PARTITION=yCONFIG_SYSV68_PARTITION=yCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=yCONFIG_NLS_CODEPAGE_737=yCONFIG_NLS_CODEPAGE_775=yCONFIG_NLS_CODEPAGE_850=yCONFIG_NLS_CODEPAGE_852=yCONFIG_NLS_CODEPAGE_855=yCONFIG_NLS_CODEPAGE_857=yCONFIG_NLS_CODEPAGE_860=yCONFIG_NLS_CODEPAGE_861=yCONFIG_NLS_CODEPAGE_862=yCONFIG_NLS_CODEPAGE_863=yCONFIG_NLS_CODEPAGE_864=yCONFIG_NLS_CODEPAGE_865=yCONFIG_NLS_CODEPAGE_866=yCONFIG_NLS_CODEPAGE_869=yCONFIG_NLS_CODEPAGE_936=yCONFIG_NLS_CODEPAGE_950=yCONFIG_NLS_CODEPAGE_932=yCONFIG_NLS_CODEPAGE_949=yCONFIG_NLS_CODEPAGE_874=yCONFIG_NLS_ISO8859_8=yCONFIG_NLS_CODEPAGE_1250=yCONFIG_NLS_CODEPAGE_1251=yCONFIG_NLS_ASCII=yCONFIG_NLS_ISO8859_1=yCONFIG_NLS_ISO8859_2=yCONFIG_NLS_ISO8859_3=yCONFIG_NLS_ISO8859_4=yCONFIG_NLS_ISO8859_5=yCONFIG_NLS_ISO8859_6=yCONFIG_NLS_ISO8859_7=yCONFIG_NLS_ISO8859_9=yCONFIG_NLS_ISO8859_13=yCONFIG_NLS_ISO8859_14=yCONFIG_NLS_ISO8859_15=yCONFIG_NLS_KOI8_R=yCONFIG_NLS_KOI8_U=yCONFIG_NLS_UTF8=yCONFIG_DLM=yCONFIG_DLM_DEBUG=yCONFIG_INSTRUMENTATION=yCONFIG_PROFILING=yCONFIG_OPROFILE=yCONFIG_KPROBES=yCONFIG_MARKERS=y
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_PRINTK_TIME=yCONFIG_ENABLE_WARN_DEPRECATED=yCONFIG_ENABLE_MUST_CHECK=yCONFIG_MAGIC_SYSRQ=yCONFIG_UNUSED_SYMBOLS=yCONFIG_DEBUG_FS=yCONFIG_HEADERS_CHECK=yCONFIG_DEBUG_KERNEL=yCONFIG_DEBUG_SHIRQ=yCONFIG_DETECT_SOFTLOCKUP=yCONFIG_SCHED_DEBUG=yCONFIG_SCHEDSTATS=yCONFIG_TIMER_STATS=yCONFIG_SLUB_DEBUG_ON=yCONFIG_DEBUG_RT_MUTEXES=yCONFIG_DEBUG_PI_LIST=yCONFIG_RT_MUTEX_TESTER=yCONFIG_DEBUG_SPINLOCK=yCONFIG_DEBUG_MUTEXES=yCONFIG_DEBUG_LOCK_ALLOC=yCONFIG_PROVE_LOCKING=yCONFIG_LOCKDEP=yCONFIG_LOCK_STAT=yCONFIG_DEBUG_LOCKDEP=yCONFIG_TRACE_IRQFLAGS=yCONFIG_DEBUG_SPINLOCK_SLEEP=yCONFIG_DEBUG_LOCKING_API_SELFTESTS=yCONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not setCONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not setCONFIG_DEBUG_VM=yCONFIG_DEBUG_LIST=yCONFIG_DEBUG_SG=yCONFIG_FRAME_POINTER=yCONFIG_FORCED_INLINING=yCONFIG_BOOT_PRINTK_DELAY=yCONFIG_RCU_TORTURE_TEST=mCONFIG_KPROBES_SANITY_TEST=yCONFIG_BACKTRACE_SELF_TEST=yCONFIG_LKDTM=yCONFIG_FAULT_INJECTION=yCONFIG_FAILSLAB=yCONFIG_FAIL_PAGE_ALLOC=yCONFIG_FAIL_MAKE_REQUEST=yCONFIG_FAULT_INJECTION_DEBUG_FS=yCONFIG_PROVIDE_OHCI1394_DMA_INIT=yCONFIG_SAMPLES=yCONFIG_SAMPLE_MARKERS=m
# CONFIG_WANT_EXTRA_DEBUG_INFORMATION is not set
# CONFIG_UNWIND_INFO is not set
# CONFIG_KGDB is not set
# CONFIG_KGDB_ATTACH_WAIT is not setCONFIG_EARLY_PRINTK=yCONFIG_DEBUG_STACKOVERFLOW=yCONFIG_DEBUG_STACK_USAGE=yCONFIG_DEBUG_RODATA=yCONFIG_X86_SMP_MAX=yCONFIG_X86_MPPARSE=yCONFIG_IOMMU_DEBUG=yCONFIG_IOMMU_LEAK=yCONFIG_IO_DELAY_TYPE_0X80=0CONFIG_IO_DELAY_TYPE_0XED=1CONFIG_IO_DELAY_TYPE_UDELAY=2CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not setCONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not setCONFIG_DEFAULT_IO_DELAY_TYPE=1CONFIG_DEBUG_BOOT_PARAMS=y
# CONFIG_CPA_DEBUG is not set
#
# Security options
#CONFIG_KEYS=yCONFIG_KEYS_DEBUG_PROC_KEYS=yCONFIG_SECURITY=yCONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_NETWORK_XFRM=y CONFIG_SECURITY_CAPABILITIES=y CONFIG_SECURITY_FILE_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG 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
# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX=y CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX_VALUE=19 CONFIG_XOR_BLOCKS=yCONFIG_ASYNC_CORE=yCONFIG_ASYNC_MEMCPY=yCONFIG_ASYNC_XOR=yCONFIG_CRYPTO=yCONFIG_CRYPTO_ALGAPI=yCONFIG_CRYPTO_ABLKCIPHER=yCONFIG_CRYPTO_AEAD=yCONFIG_CRYPTO_BLKCIPHER=yCONFIG_CRYPTO_HASH=yCONFIG_CRYPTO_MANAGER=yCONFIG_CRYPTO_HMAC=yCONFIG_CRYPTO_XCBC=yCONFIG_CRYPTO_NULL=yCONFIG_CRYPTO_MD4=yCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA256=yCONFIG_CRYPTO_SHA512=yCONFIG_CRYPTO_WP512=yCONFIG_CRYPTO_TGR192=yCONFIG_CRYPTO_GF128MUL=yCONFIG_CRYPTO_ECB=yCONFIG_CRYPTO_CBC=yCONFIG_CRYPTO_PCBC=yCONFIG_CRYPTO_LRW=yCONFIG_CRYPTO_XTS=yCONFIG_CRYPTO_CRYPTD=yCONFIG_CRYPTO_DES=yCONFIG_CRYPTO_FCRYPT=yCONFIG_CRYPTO_BLOWFISH=yCONFIG_CRYPTO_TWOFISH=y CONFIG_CRYPTO_TWOFISH_COMMON=y CONFIG_CRYPTO_TWOFISH_X86_64=y CONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_AES=yCONFIG_CRYPTO_AES_X86_64=yCONFIG_CRYPTO_CAST5=yCONFIG_CRYPTO_CAST6=yCONFIG_CRYPTO_TEA=yCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_KHAZAD=yCONFIG_CRYPTO_ANUBIS=yCONFIG_CRYPTO_SEED=yCONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_MICHAEL_MIC=yCONFIG_CRYPTO_CRC32C=yCONFIG_CRYPTO_CAMELLIA=yCONFIG_CRYPTO_TEST=mCONFIG_CRYPTO_AUTHENC=yCONFIG_CRYPTO_HW=y
#
# Library routines
#CONFIG_BITREVERSE=yCONFIG_CRC_CCITT=yCONFIG_CRC16=yCONFIG_CRC_ITU_T=yCONFIG_CRC32=yCONFIG_CRC7=yCONFIG_LIBCRC32C=yCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_GENERIC_ALLOCATOR=yCONFIG_TEXTSEARCH=yCONFIG_TEXTSEARCH_KMP=yCONFIG_TEXTSEARCH_BM=yCONFIG_TEXTSEARCH_FSM=yCONFIG_PLIST=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_CHECK_SIGNATURE=y
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Quoted 10 lines · Ingo Molnar
Quoted 6 lines
NR_CPUS: max limit now 4096
NODES_SHIFT: max limit now 9
THREAD_ORDER: max limit now 3
X86_SMP_MAX: say Y to enable possible cpus ==NR_CPUSSigned-off-by Mike Travis <[email protected]>i've bisected a boot failure down to this patch (sans the
THREAD_ORDERbits): it causes an instant reboot of the 64-bit kernel upon bootup. Failing config attached.
and then it crashes with:
[ 0.000000] Bootmem setup node 0 0000000000000000-000000003fff0000 [ 0.000000] KERN_NOTICE cpu_to_node(0): usage too early! PANIC: early exception 06 rip 10:ffffffff81f77f30 error 0 cr2 f06f53 [ 0.000000] Pid: 0, comm: swapper Not tainted 2.6.24-rc8 #422 [ 0.000000] [ 0.000000] Call Trace: [ 0.000000] [<ffffffff81f76b4a>] ? setup_node_bootmem+0x1a0/0x1b8 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77103>] ? numa_initmem_init+0x343/0x471
moral: PLEASE do not use BUG() on in early init code, unless absolutely necessary.
Ingo
--- include/asm-x86/topology.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
include/asm-x86/topology.h +3 -2
@@ -70,10 +70,11 @@ static inline int cpu_to_node(int cpu)if (x86_cpu_to_node_map_early_ptr) {printk ("KERN_NOTICE cpu_to_node(%d): usage too early!\n" , (int )cpu); -BUG (); +dump_stack (); +return 0 ; }#endif -if (per_cpu_offset (cpu)) +if (per_cpu_offset (cpu))return per_cpu (x86_cpu_to_node_map, cpu);else return NUMA_NO_NODE ;
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Quoted 13 lines · Ingo Molnar
and then it crashes with:
[ 0.000000] Bootmem setup node 0 0000000000000000-000000003fff0000 [ 0.000000] KERN_NOTICE cpu_to_node(0): usage too early! PANIC: early exception 06 rip 10:ffffffff81f77f30 error 0 cr2 f06f53 [ 0.000000] Pid: 0, comm: swapper Not tainted 2.6.24-rc8 #422 [ 0.000000] [ 0.000000] Call Trace: [ 0.000000] [<ffffffff81f76b4a>] ? setup_node_bootmem+0x1a0/0x1b8 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77103>] ? numa_initmem_init+0x343/0x471
Quoted 2 lines
moral: PLEASE do not use
BUG()on in early init code, unless absolutely necessary.
the right fix is below.
Ingo
--- include/asm-x86/topology.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
include/asm-x86/topology.h +2 -2
@@ -70,10 +70,10 @@ static inline int cpu_to_node(int cpu)if (x86_cpu_to_node_map_early_ptr) {printk ("KERN_NOTICE cpu_to_node(%d): usage too early!\n" , (int )cpu); -BUG (); +dump_stack (); }#endif -if (per_cpu_offset (cpu)) +if (per_cpu_offset (cpu))return per_cpu (x86_cpu_to_node_map, cpu);else return NUMA_NO_NODE ;
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
Quoted 33 lines · Ingo Molnar
Quoted 13 lines · Ingo Molnar
and then it crashes with:
[ 0.000000] Bootmem setup node 0 0000000000000000-000000003fff0000 [ 0.000000] KERN_NOTICE cpu_to_node(0): usage too early! PANIC: early exception 06 rip 10:ffffffff81f77f30 error 0 cr2 f06f53 [ 0.000000] Pid: 0, comm: swapper Not tainted 2.6.24-rc8 #422 [ 0.000000] [ 0.000000] Call Trace: [ 0.000000] [<ffffffff81f76b4a>] ? setup_node_bootmem+0x1a0/0x1b8 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77103>] ? numa_initmem_init+0x343/0x471Quoted 2 lines
moral: PLEASE do not use
BUG()on in early init code, unless absolutely necessary.the right fix is below.
Ingo
--- include/asm-x86/topology.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)Index:
linux/include/asm-x86/topology.h
===================================================================include/asm-x86/topology.h +0
-0@@ -70,10 +70,10 @@ static inline int cpu_to_node(int cpu)if (x86_cpu_to_node_map_early_ptr) { printk("KERN_NOTICE cpu_to_node(%d): usage too early!\n",
include/asm-x86/topology.h static inline int cpu_to_node(int cpu) · line 79
Quoted 10 lines
include/asm-x86/topology.h +2
-2(int)cpu); - BUG(); + dump_stack(); }#endif -if (per_cpu_offset (cpu)) +if (per_cpu_offset (cpu))return per_cpu (x86_cpu_to_node_map, cpu);else return NUMA_NO_NODE ;
Thanks. I had pulled this from the patch as ak suggested. But it seems that it's finding real errors that need to be fixed.
Thanks,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
In reply to Ingo MolnarQuoted 44 lines · Ingo Molnar
Quoted 13 lines · Ingo Molnar
and then it crashes with:
[ 0.000000] Bootmem setup node 0 0000000000000000-000000003fff0000 [ 0.000000] KERN_NOTICE cpu_to_node(0): usage too early! PANIC: early exception 06 rip 10:ffffffff81f77f30 error 0 cr2 f06f53 [ 0.000000] Pid: 0, comm: swapper Not tainted 2.6.24-rc8 #422 [ 0.000000] [ 0.000000] Call Trace: [ 0.000000] [<ffffffff81f76b4a>] ? setup_node_bootmem+0x1a0/0x1b8 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77103>] ? numa_initmem_init+0x343/0x471Quoted 2 lines
moral: PLEASE do not use
BUG()on in early init code, unless absolutely necessary.the right fix is below.
Ingo
--- include/asm-x86/topology.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)Index:
linux/include/asm-x86/topology.h
===================================================================include/asm-x86/topology.h +2
-3@@ -70,10 +70,10 @@ static inline int cpu_to_node(int cpu)if (x86_cpu_to_node_map_early_ptr) {printk ("KERN_NOTICE cpu_to_node(%d): usage too early!\n" , (int )cpu); -BUG (); +dump_stack (); }#endif -if (per_cpu_offset (cpu)) +if (per_cpu_offset (cpu))return per_cpu (x86_cpu_to_node_map, cpu);else return NUMA_NO_NODE ; --
Quoted 4 lines
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/
Except the function needs to return a valid node id if it's to continue:
include/asm-x86/topology.h 2008-01-19 15:23:05.208564537 -0800 renamed from include/asm-x86/topology.h 2008-01-19 15:23:04.996551867 -0800 +2 -1
@@ -67,10 +67,11 @@ static inline int early_cpu_to_node(int static inline int cpu_to_node(int cpu) { #ifdef CONFIG_DEBUG_PER_CPU_MAPS - if(x86_cpu_to_node_map_early_ptr) { + if (x86_cpu_to_node_map_early_ptr) { printk("KERN_NOTICE cpu_to_node(%d): usage too early!\n", (int)cpu); dump_stack(); + return ((numanode_t *)x86_cpu_to_node_map_early_ptr)[cpu]; } #endif if (per_cpu_offset(cpu))
??
Thannks,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
In reply to Ingo MolnarQuoted 4 lines · Ingo Molnar
Quoted 2 lines · Ingo Molnar
and then it crashes with:
Quoted 11 lines
Quoted 11 lines
[ 0.000000] Bootmem setup node 0 0000000000000000-000000003fff0000 [ 0.000000] KERN_NOTICE cpu_to_node(0): usage too early! PANIC: early exception 06 rip 10:ffffffff81f77f30 error 0 cr2 f06f53 [ 0.000000] Pid: 0, comm: swapper Not tainted 2.6.24-rc8 #422 [ 0.000000] [ 0.000000] Call Trace: [ 0.000000] [<ffffffff81f76b4a>] ? setup_node_bootmem+0x1a0/0x1b8 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77f30>] ? acpi_scan_nodes+0x204/0x255 [ 0.000000] [<ffffffff81f77103>] ? numa_initmem_init+0x343/0x471
I *think* but have not been able to verify that this will fix the above panic:
arch/x86/mm/srat_64.c +1 -1
@@ -393,7 +393,7 @@ int __init acpi_scan_nodes(unsigned longsetup_node_bootmem (i, nodes[i].start, nodes[i].end);for (i =0 ; i <NR_CPUS ; i++) { -int node =cpu_to_node (i); +int node =early_cpu_to_node (i);if (node ==NUMA_NO_NODE )continue ;if (!node_isset (node, node_possible_map))
The problem is that the x86 test tree kernel doesn't boot, even without my changes. And the stack trace I don't think is correct.
Thanks,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 4/5] x86: Add config variables for SMP_MAX
In reply to Ingo MolnarQuoted 10 lines · Ingo Molnar
Quoted 8 lines · * [email protected] <[email protected]> wrote:
Adds and increases some config variables to accomodate larger SMP configurations:
NR_CPUS: max limit now 4096
NODES_SHIFT: max limit now 9
THREAD_ORDER: max limit now 3
X86_SMP_MAX: say Y to enable possible cpus ==NR_CPUS
Quoted 8 lines
Quoted 1 line
Signed-off-by Mike Travis <[email protected]>i've bisected a boot failure down to this patch (sans the
THREAD_ORDERbits): it causes an instant reboot of the 64-bit kernel upon bootup. Failing config attached.Ingo
Thanks Ingo!
I've pulled the THREAD_ORDER change from my next version of the patch. Seems SMP_MAX is just not ready for prime time yet.
One problem that I'm having appears to be that the !NUMA config of the current -mm version also doesn't boot so I haven't been able to verify that. (At least it doesn't seem to make it worse... ;-)
Thanks,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH 5/5 x86: Add debug of invalid per_cpu map accesses
In reply to [email protected]Provide a means to trap usages of per_cpu map variables before they are setup. Define CONFIG_DEBUG_PER_CPU_MAPS to activate.
--- arch/x86/Kconfig.debug | 12 ++++++++++++ arch/x86/mm/numa_64.c | 3 +++ include/asm-x86/topology.h | 7 +++++++ 3 files changed, 22 insertions(+)
arch/x86/Kconfig.debug +12 -0
@@ -47,6 +47,18 @@ config DEBUG_PAGEALLOC This results in a large slowdown, but helps to find certain types of memory corruptions. +config DEBUG_PER_CPU_MAPS + bool "Debug access to per_cpu maps" + depends on DEBUG_KERNEL + depends on X86_64_SMP + default n + help + Say Y to verify that the per_cpu map being accessed has + been setup. Adds a fair amount of code to kernel memory + and decreases performance. + + Say N if unsure. + config DEBUG_RODATA bool "Write protect kernel read-only data structures" depends on DEBUG_KERNEL
arch/x86/mm/numa_64.c +3 -0
@@ -37,6 +37,9 @@ u16 x86_cpu_to_node_map_init[NR_CPUS] =void *x86_cpu_to_node_map_early_ptr;DEFINE_PER_CPU (u16, x86_cpu_to_node_map) =NUMA_NO_NODE ;EXPORT_PER_CPU_SYMBOL (x86_cpu_to_node_map); +#ifdef CONFIG_DEBUG_PER_CPU_MAPS +EXPORT_SYMBOL (x86_cpu_to_node_map_early_ptr); +#endif u16 apicid_to_node[MAX_LOCAL_APIC ]__cpuinitdata = { [0 ...MAX_LOCAL_APIC -1 ] =NUMA_NO_NODE
include/asm-x86/topology.h +7 -0
@@ -66,6 +66,13 @@ static inline int early_cpu_to_node(intstatic inline int cpu_to_node (int cpu) { +#ifdef CONFIG_DEBUG_PER_CPU_MAPS +if (x86_cpu_to_node_map_early_ptr) { +printk ("KERN_NOTICE cpu_to_node(%d): usage too early!\n" , + (int )cpu); +BUG (); + } +#endif if (per_cpu_offset (cpu))return per_cpu (x86_cpu_to_node_map, cpu);else
Signature · 5 lines
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 5/5] x86: Add debug of invalid per_cpu map accesses
Quoted 2 lines · On Friday 18 January 2008 19:30:16 [email protected] wrote:
Provide a means to trap usages of
per_cpumap variables before they are setup. DefineCONFIG_DEBUG_PER_CPU_MAPSto activate.
Are you sure that debug option is generally useful enough to merge? It seems very specific to your patchkit, but I'm not sure it would be worth carrying forever in the kernel.
Better would be probably to just unmap those areas anyways.
-Andi
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 5/5] x86: Add debug of invalid per_cpu map accesses
Quoted 11 lines · Andi Kleen
Quoted 2 lines · On Friday 18 January 2008 19:30:16 [email protected] wrote:
Provide a means to trap usages of
per_cpumap variables before they are setup. DefineCONFIG_DEBUG_PER_CPU_MAPSto activate.Are you sure that debug option is generally useful enough to merge? It seems very specific to your patchkit, but I'm not sure it would be worth carrying forever in the kernel.
Better would be probably to just unmap those areas anyways.
-Andi
I thought for a round of testing it'd be worthwhile, particularly testing randconfig. The next version of percpu changes are coming soon and I can remove them then. Ideally, you are right, it'd be nice to not have the percpu memory mapped for processors that are not present.
One thing that comes into play is that (soon) the boot_pda will be in the per_cpu area and it's maintained for all "possible" cpus as it keeps track of some info on "off-lined" cpus. What I was thinking is that perhaps no memory is allocated (and mapped) until a cpu becomes not only possible, but probable. This means that until a cpu is brought online, or discovered via ACPI, then there is no percpu area and access to an invalid percpu area causes a kernel fault.
Thanks,
Mike
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 5/5] x86: Add debug of invalid per_cpu map accesses
In reply to Andi KleenQuoted 9 lines · Andi Kleen
Quoted 2 lines · On Friday 18 January 2008 19:30:16 [email protected] wrote:
Provide a means to trap usages of
per_cpumap variables before they are setup. DefineCONFIG_DEBUG_PER_CPU_MAPSto activate.Are you sure that debug option is generally useful enough to merge? It seems very specific to your patchkit, but I'm not sure it would be worth carrying forever in the kernel.
Better would be probably to just unmap those areas anyways.
Its generally useful also for the cpu_alloc changes that may lead to the moving around of early initialization code for consolidation of code between i386 and x86_64 once Mike's initial patchset is in.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: [PATCH 5/5] x86: Add debug of invalid per_cpu map accesses
In reply to Andi KleenQuoted 7 lines · Andi Kleen
Quoted 2 lines · On Friday 18 January 2008 19:30:16 [email protected] wrote:
Provide a means to trap usages of
per_cpumap variables before they are setup. DefineCONFIG_DEBUG_PER_CPU_MAPSto activate.Are you sure that debug option is generally useful enough to merge? It seems very specific to your patchkit, but I'm not sure it would be worth carrying forever in the kernel.
yeah, i think it's simple enough.
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>