Compare commits
548 Commits
Author | SHA1 | Date |
---|---|---|
Josh Boyer | 498deb1154 | |
Josh Boyer | 891cc1841b | |
Dave Jones | 76082fd1da | |
Josh Boyer | be05448047 | |
Josh Boyer | 6523ee4682 | |
Peter Robinson | e0f4b6180b | |
Josh Boyer | 745e1e6d9f | |
Josh Boyer | 5b7355e655 | |
Josh Boyer | c26d168712 | |
Josh Boyer | e39d89beef | |
Josh Boyer | 26edf9ecd2 | |
Josh Boyer | c8c0339604 | |
Josh Boyer | d1740087bc | |
Josh Boyer | e02d934488 | |
Josh Boyer | 9006cf8aee | |
Josh Boyer | c8304131bf | |
Josh Boyer | 1c0545258e | |
Josh Boyer | 1622b3d8e5 | |
Josh Boyer | 940cf17eb0 | |
Josh Boyer | 6fd38013c8 | |
Josh Boyer | ae3a062e88 | |
Josh Boyer | ccaa0a90c5 | |
Josh Boyer | 38c2c4d211 | |
Justin M. Forbes | 753f28c2d8 | |
Dave Jones | f58c94c259 | |
Josh Boyer | 86985d0596 | |
Josh Boyer | 06a13386b0 | |
Josh Boyer | f7695cdcaf | |
Josh Boyer | 8ff0b55e6a | |
Josh Boyer | 20ff6b3171 | |
Josh Boyer | 7a126072eb | |
Josh Boyer | b54718c5ec | |
Josh Boyer | c60f5d3991 | |
Josh Boyer | f174ce0724 | |
Josh Boyer | 2a7218df92 | |
Josh Boyer | 333bcd60b9 | |
Josh Boyer | e6a9984329 | |
Josh Boyer | 6ca684a54d | |
Josh Boyer | 4e6476bdd5 | |
Josh Boyer | 3eefce94f5 | |
Josh Boyer | fc7d3f59a4 | |
Josh Boyer | 2f84d57e54 | |
Josh Boyer | 1c462fd782 | |
Justin M. Forbes | 642c45daf1 | |
Josh Boyer | 0b1d6743c8 | |
Josh Boyer | 231a6c6746 | |
Peter Robinson | 1656aee902 | |
Peter Robinson | 4829c8180f | |
Justin M. Forbes | 6328a50193 | |
Josh Boyer | 36c229586e | |
Josh Boyer | f1f97f7fa3 | |
Justin M. Forbes | 977738adfe | |
Justin M. Forbes | e6852b690d | |
Josh Boyer | 89560ac259 | |
Justin M. Forbes | 4751fcd387 | |
Justin M. Forbes | 16dc88406e | |
Peter Robinson | af3159cc36 | |
Josh Boyer | 638bba75cc | |
Josh Boyer | b92e84a3a8 | |
Josh Boyer | b0d734f6c4 | |
Josh Boyer | 158d104c07 | |
Josh Boyer | f36a215782 | |
Josh Boyer | 0ebd597832 | |
Josh Boyer | e576093454 | |
Josh Boyer | 583f2ea58f | |
Josh Boyer | 62ad7b1fc0 | |
Josh Boyer | 4a7e4a4d41 | |
Josh Boyer | 2d3286ee13 | |
Josh Boyer | f4dacfee76 | |
Josh Boyer | e9cd14fc4d | |
Josh Boyer | 401880b16e | |
Josh Boyer | d5e330f6f8 | |
Josh Boyer | 586dc72172 | |
Dave Jones | 76877b8187 | |
Josh Boyer | 7f35254607 | |
Josh Boyer | aa9dea0e34 | |
Josh Boyer | 0a3f614f1a | |
Josh Boyer | cceeebddab | |
Dave Jones | 069f7ae276 | |
Dave Jones | af745223da | |
Josh Boyer | 97b1b12b20 | |
Dave Jones | 257bb08298 | |
Josh Boyer | 01bed76462 | |
Josh Boyer | 719ad5a41f | |
Josh Boyer | 498db5becd | |
Josh Boyer | f70e5919dc | |
Peter Robinson | aa42a31acf | |
Josh Boyer | e6e57faa6b | |
Justin M. Forbes | 0390113468 | |
Dave Jones | 7a13662cd4 | |
Josh Boyer | 9a2eae9267 | |
Josh Boyer | 0303fb0eac | |
Josh Boyer | f9c0a737cc | |
Josh Boyer | 83d2836284 | |
Justin M. Forbes | aa34b4a3d3 | |
Josh Boyer | 2f06bf0c2b | |
Josh Boyer | 462525f905 | |
Justin M. Forbes | 0ff6c9ba73 | |
Josh Boyer | 29aec5dbb4 | |
Peter Robinson | 8edaa7fef3 | |
Peter Robinson | eefd4a7b9c | |
Peter Robinson | 4b23d6ae18 | |
Josh Boyer | 89389a2e90 | |
Josh Boyer | eed7f51b23 | |
Josh Boyer | 8d496427eb | |
Josh Boyer | 403abecdfc | |
Justin M. Forbes | 01783818dd | |
Peter Robinson | df1cf3af93 | |
Peter Robinson | fad676f9ff | |
Josh Boyer | f6d83f1bcb | |
Josh Boyer | 314bf85c5a | |
Josh Boyer | 5d9a19407d | |
Mauro Carvalho Chehab | d07c9bf44a | |
Josh Boyer | 6f8ae00dca | |
Josh Boyer | 9fa4523eb7 | |
Josh Boyer | 6af31c189d | |
Josh Boyer | c690b0ad2b | |
Josh Boyer | 63a70f0755 | |
Josh Boyer | b9b2422ce0 | |
Mauro Carvalho Chehab | fc114e5562 | |
Josh Boyer | ba5da0cf14 | |
Josh Boyer | 9a0a8c2024 | |
Josh Boyer | 053e021c3a | |
Josh Boyer | 365b244c7c | |
Josh Boyer | 49732d2a24 | |
Josh Boyer | 49decd0917 | |
Josh Boyer | f08161620a | |
Justin M. Forbes | ca09502aec | |
Josh Boyer | 90b1fad492 | |
Peter Robinson | aef219c581 | |
Josh Boyer | 645ccd73dc | |
Josh Boyer | 39198815d8 | |
Josh Boyer | 86ce060b46 | |
Justin M. Forbes | 8d3a89bb31 | |
Justin M. Forbes | b710426697 | |
Josh Boyer | 81649bdb3e | |
Peter Robinson | bbf7716489 | |
Josh Boyer | d33d175ed0 | |
Josh Boyer | 6ac537a028 | |
Josh Boyer | 5a61b3c3be | |
Justin M. Forbes | 48601caa5c | |
Josh Boyer | 31122695c7 | |
Justin M. Forbes | ec583c93be | |
Josh Boyer | 413c7e79f6 | |
Peter Robinson | 6067ea9ca1 | |
Justin M. Forbes | 3c34bf7a1f | |
Justin M. Forbes | dc7f562424 | |
Josh Boyer | 1f1cbe4b73 | |
Josh Boyer | 66df908ad4 | |
Josh Boyer | 48b6f5c693 | |
Josh Boyer | 375c9e59f5 | |
Josh Boyer | 2038832ba0 | |
Josh Boyer | 7a177e376a | |
Josh Boyer | 930df99ee1 | |
Justin M. Forbes | 639f23b1b1 | |
Adam Jackson | ac36543927 | |
Adam Jackson | ec07e9dbae | |
Josh Boyer | 381fac519a | |
Justin M. Forbes | 6a4938fe99 | |
Adam Jackson | c8a1c7c713 | |
Adam Jackson | b5410eb507 | |
Justin M. Forbes | eae3ac4d02 | |
Justin M. Forbes | ec0018e745 | |
Josh Boyer | a8887f38a3 | |
Josh Boyer | 228b22afc5 | |
Josh Boyer | d4c9a720d9 | |
Justin M. Forbes | 2fa62b2c11 | |
Peter Robinson | 3900a1c2e7 | |
Josh Boyer | 87ef682fd1 | |
Josh Boyer | 2ee5453858 | |
Justin M. Forbes | d06e03b3b8 | |
Josh Boyer | 2ab3c91680 | |
Justin M. Forbes | ccfa9cad08 | |
Josh Boyer | 70941191f8 | |
Peter Robinson | 803c4f1115 | |
Peter Robinson | 90005a2208 | |
Justin M. Forbes | 7bd354bebe | |
Josh Boyer | 9f4fa4a8be | |
Justin M. Forbes | 000cc3f5b2 | |
Dave Jones | c7ce3f8cd6 | |
Justin M. Forbes | 21070266ff | |
Josh Boyer | 6792bee3a5 | |
Josh Boyer | 82e9f20090 | |
Peter Robinson | ea1041cae6 | |
Josh Boyer | bf8beb2520 | |
Josh Boyer | 8e4071a187 | |
Justin M. Forbes | 32a943ee1f | |
Josh Boyer | a577c7dc62 | |
Josh Boyer | 89a713e2a7 | |
Josh Boyer | 639aa658b1 | |
Josh Boyer | fff6e55c0a | |
Josh Boyer | bf1ab34254 | |
Josh Boyer | 46e984b0cc | |
Josh Boyer | 6cc4725ea9 | |
Justin M. Forbes | 9c2b622aa0 | |
Josh Boyer | 47d4848005 | |
Josh Boyer | 9f37335d3f | |
Justin M. Forbes | a6b73f8197 | |
Josh Boyer | 3f737433a5 | |
Justin M. Forbes | ba1530aaae | |
Josh Boyer | 2103f93a59 | |
Justin M. Forbes | f2c359e484 | |
Josh Boyer | 140e24d99e | |
Josh Boyer | 418011b505 | |
Josh Boyer | 1380ea091c | |
Josh Boyer | 4209423e87 | |
Josh Boyer | ceeebe3bad | |
Peter Robinson | 89f20dbfa7 | |
Peter Robinson | 861a924b1a | |
Josh Boyer | e0f0154760 | |
Josh Boyer | 68b56ce54e | |
Josh Boyer | 9ef55ad171 | |
Justin M. Forbes | 3cd5674396 | |
Josh Boyer | 51aef44bf2 | |
Josh Boyer | 999740f300 | |
Justin M. Forbes | ebefd3cc65 | |
Justin M. Forbes | 42b0632bc6 | |
Justin M. Forbes | 019f1d555e | |
Justin M. Forbes | d6512de431 | |
Dave Jones | 5cffc5a007 | |
Josh Boyer | e3cffe0bf8 | |
Mauro Carvalho Chehab | c15eb72f4b | |
Josh Boyer | 8e8972af61 | |
Josh Boyer | c84ab99ae9 | |
Justin M. Forbes | 6d20a43c2f | |
Justin M. Forbes | 76d02ca8df | |
Justin M. Forbes | cd394142aa | |
Josh Boyer | 9516ccc8d5 | |
Josh Boyer | 24d200243d | |
Peter Robinson | b71c8a4360 | |
Peter Robinson | ebea7f281f | |
Josh Boyer | c8c2a319d5 | |
Josh Boyer | dd77d2b803 | |
Josh Boyer | 8431cbd968 | |
Josh Boyer | 951aef5850 | |
Josh Boyer | 994eaf2759 | |
Peter Robinson | 1fc4e2217f | |
Peter Robinson | aeb97b1a00 | |
Josh Boyer | 9580bc3940 | |
Josh Boyer | 3204d8646a | |
Josh Boyer | 2cf66fac5e | |
Josh Boyer | df409ec92f | |
Josh Boyer | 05a71e9f31 | |
Josh Boyer | 77e4883e85 | |
Mauro Carvalho Chehab | a3db4ce6af | |
Mauro Carvalho Chehab | e524144689 | |
Mauro Carvalho Chehab | f41e24298c | |
Mauro Carvalho Chehab | a25b44e653 | |
Mauro Carvalho Chehab | 1d13150d5e | |
Josh Boyer | e2d59620f5 | |
Josh Boyer | e5b3dadf5f | |
Josh Boyer | c05f8b9272 | |
Mauro Carvalho Chehab | 35552829b4 | |
Mauro Carvalho Chehab | 1a44375e15 | |
Mauro Carvalho Chehab | 088b3292dd | |
Mauro Carvalho Chehab | 6a9077fe35 | |
Peter Robinson | 6f283881b2 | |
Peter Robinson | 9a09a5c53c | |
Josh Boyer | 43e4600ffe | |
Josh Boyer | b2ff1b70cc | |
Josh Boyer | 5e430a4dd6 | |
Josh Boyer | ef6c2f38d1 | |
Dave Jones | 1876a31055 | |
Josh Boyer | 6cec19f42c | |
Justin M. Forbes | e1089320be | |
Josh Boyer | 5e2cf58050 | |
Justin M. Forbes | 107cc7895c | |
Justin M. Forbes | 20a9e7ec59 | |
Justin M. Forbes | 021ce7bee3 | |
Dave Jones | 743d347abb | |
Justin M. Forbes | 877f9f439e | |
Dave Jones | 04489966aa | |
Dave Jones | 90780aef64 | |
Dave Jones | 0348219582 | |
Dave Jones | db67df2ee4 | |
Dave Jones | 17c4c18ae9 | |
Dave Jones | a7252002cb | |
Dave Jones | 700f9d642a | |
Dave Jones | 32403ff239 | |
Dave Jones | 222b075b3f | |
Josh Boyer | fbb6665b06 | |
Dave Jones | 880031fe2d | |
Josh Boyer | 66cb0c0021 | |
Josh Boyer | ac50af7370 | |
Josh Boyer | 487c4d7167 | |
Josh Boyer | 53ecebd579 | |
Josh Boyer | 63bb17548c | |
Josh Boyer | 40e2ad513d | |
Josh Boyer | a394a589c5 | |
Josh Boyer | e89b5d878b | |
Josh Boyer | e557f0dad8 | |
Josh Boyer | 1ea9812cdb | |
Josh Boyer | b51c09f7b5 | |
Josh Boyer | e3521339a4 | |
Josh Boyer | fda19b317c | |
Josh Boyer | 656d21accd | |
Josh Boyer | 755df4e987 | |
Justin M. Forbes | 9143a6376f | |
Josh Boyer | e86c904030 | |
Justin M. Forbes | a5a7f0c684 | |
Peter Robinson | 2f09889abb | |
Josh Boyer | 1e9cc93abf | |
Josh Boyer | 55271253c5 | |
Josh Boyer | 2d2df068ff | |
Peter Robinson | 48d388d483 | |
Peter Robinson | 5f9a54d3c0 | |
Josh Boyer | 4ecd7184ff | |
Peter Robinson | cb6e1a99f5 | |
Josh Boyer | 470b70635f | |
Josh Boyer | 082fbe3473 | |
John W. Linville | ed9681dca3 | |
Dennis Gilmore | e35f3f6061 | |
Justin M. Forbes | 694fdf18e6 | |
Josh Boyer | 5290429908 | |
Dave Jones | d295287e24 | |
Josh Boyer | 48a9b7ba7a | |
Josh Boyer | 1c5ab3b392 | |
John W. Linville | ec675c56ba | |
Justin M. Forbes | 6c6f1b8594 | |
Josh Boyer | 28170d1407 | |
Josh Boyer | da59896775 | |
Josh Boyer | 3d47c715a4 | |
Josh Boyer | a2fe54c8b0 | |
Justin M. Forbes | 50263f8131 | |
Dave Jones | 6f3b87d430 | |
Justin M. Forbes | 9d2bce0cc6 | |
Justin M. Forbes | 46932ff9af | |
Justin M. Forbes | 81b6a5b514 | |
Justin M. Forbes | 82f5c0ee45 | |
Justin M. Forbes | c459464235 | |
Josh Boyer | 7b1733efd5 | |
Josh Boyer | 1b96ab66be | |
Justin M. Forbes | 5a91192c1e | |
Dennis Gilmore | 72cee3c2fc | |
Josh Boyer | a8283add14 | |
Josh Boyer | 95e7d92685 | |
Josh Boyer | 2ccad4cf5e | |
Josh Boyer | ab7183ff44 | |
Josh Boyer | 12eb25beb1 | |
Josh Boyer | 2cd576ed87 | |
Dennis Gilmore | b920e9b748 | |
Dennis Gilmore | 26dfa93c6b | |
Dennis Gilmore | dac218827a | |
Dennis Gilmore | 0ee1a3499d | |
Dennis Gilmore | 0c2c60f6fb | |
Peter Robinson | 85ce09f074 | |
Peter Robinson | 745a2cc5d4 | |
Josh Boyer | a8e293d2a3 | |
Dave Jones | 88fa1f0332 | |
Peter Robinson | d885d6c86a | |
Justin M. Forbes | 2660d94801 | |
Justin M. Forbes | 39acffae26 | |
Josh Boyer | 506e7ae6a2 | |
Josh Boyer | 62a54c7401 | |
Mauro Carvalho Chehab | 1e953ffdf6 | |
Mauro Carvalho Chehab | b2151191d3 | |
Josh Boyer | 455182ef81 | |
Adam Jackson | 2ee75d45c7 | |
Justin M. Forbes | af47703545 | |
Josh Boyer | ec51726eca | |
Josh Boyer | 07d66f28b6 | |
Josh Boyer | fe11531247 | |
Dennis Gilmore | a4ec16e544 | |
Justin M. Forbes | a8d5b8b142 | |
Josh Boyer | 0e8b5cac91 | |
Dennis Gilmore | 34b6abb66f | |
Josh Boyer | 6f5fb13061 | |
Justin M. Forbes | be402e5a53 | |
Justin M. Forbes | 29833ee66f | |
Josh Boyer | 8511ce0313 | |
Mauro Carvalho Chehab | 5963c7872d | |
Josh Boyer | 99667a9f69 | |
Dave Jones | c733befc8b | |
Dave Jones | ded40ae5b3 | |
Justin M. Forbes | c11628e2fd | |
Justin M. Forbes | f5a9f4b3b3 | |
Justin M. Forbes | 35223b7f9c | |
Josh Boyer | ba63b0eddb | |
Dennis Gilmore | 33847bf37e | |
Dennis Gilmore | d8200c0196 | |
Dennis Gilmore | 6de3dde529 | |
Peter Robinson | 76a51fad57 | |
Justin M. Forbes | b17fbf6281 | |
Josh Boyer | db355f7ded | |
Justin M. Forbes | db21f469dd | |
Justin M. Forbes | aeab634894 | |
Josh Boyer | c1dc37b693 | |
Dave Jones | cab5127bd1 | |
Justin M. Forbes | a8f58bb89c | |
Justin M. Forbes | 918c474fc0 | |
Josh Boyer | 37e7953c58 | |
Josh Boyer | 5b0120f33f | |
Josh Boyer | 3b96934ff4 | |
Josh Boyer | 6e2468ba3e | |
Peter Hutterer | f3ba8d1a96 | |
Josh Boyer | 7bb156c930 | |
Josh Boyer | d80df3443e | |
Josh Boyer | 2ddaf28593 | |
Justin M. Forbes | 1268e178c4 | |
Justin M. Forbes | 3490e9bb74 | |
Justin M. Forbes | 150a1754ad | |
Josh Boyer | d49243fb20 | |
Josh Boyer | 052403b3c9 | |
Josh Boyer | 861ec4fcf6 | |
Josh Boyer | 905b88a9e8 | |
Josh Boyer | f7429699b4 | |
Josh Boyer | 3357ee4929 | |
Josh Boyer | 640877bc22 | |
Josh Boyer | 6ae0c8402e | |
Josh Boyer | 03aee81210 | |
Josh Boyer | aca0c0113c | |
Josh Boyer | d9aad82f33 | |
Dennis Gilmore | d3a46ed584 | |
Peter Robinson | 116089caa5 | |
Peter Robinson | 341240f413 | |
Peter Robinson | 34c59d0ce1 | |
Dennis Gilmore | 65cabe786d | |
Josh Boyer | c6f2d01d81 | |
Josh Boyer | 4b3699110c | |
Mauro Carvalho Chehab | 21154b3b1c | |
Josh Boyer | 546745e9c3 | |
Josh Boyer | 1d8fbc4937 | |
Josh Boyer | 6bae32eefe | |
Dave Jones | 8e40392487 | |
Josh Boyer | 541804a28d | |
Josh Boyer | 7c5e45e7c3 | |
Josh Boyer | 359bad2b92 | |
Josh Boyer | 008280377a | |
Josh Boyer | 37604c39bc | |
Josh Boyer | e7391bed1e | |
Josh Boyer | 035ffabe06 | |
Dave Jones | 5be33f56fa | |
Dave Jones | e9cafbfe1a | |
Josh Boyer | 9abfa16136 | |
Josh Boyer | c898e790c9 | |
Josh Boyer | e238325e94 | |
Josh Boyer | b2e5b31ef2 | |
Josh Boyer | 2722c59313 | |
Josh Boyer | 0aca2ef1c5 | |
Josh Boyer | 5bdfff4ee1 | |
Josh Boyer | e5e09d24a2 | |
Josh Boyer | 46ad899861 | |
Matthew Garrett | f1d2f5da9e | |
Dave Jones | 52f64574fa | |
Dave Jones | 6797a3efae | |
Josh Boyer | 98931fa9d1 | |
Dave Jones | 3b5b9ca4f6 | |
Josh Boyer | 5bbe9ea49d | |
Josh Boyer | 475d827aeb | |
Dave Jones | 3cc64333de | |
Dave Jones | 64c1946b90 | |
Adam Jackson | efa8ce0877 | |
Dave Jones | 0901f900da | |
Dave Jones | b4ed1de226 | |
Justin M. Forbes | 63bfa6a42c | |
Josh Boyer | 841f4ae865 | |
Justin M. Forbes | 7e5dab31d9 | |
Josh Boyer | 631462571d | |
Dave Jones | 114779eefd | |
Dave Jones | bf89f3a369 | |
Dave Jones | 26fca6fb1f | |
Dave Jones | dc7e77c88c | |
John W. Linville | ec5a8cd72e | |
Dennis Gilmore | c298448388 | |
Josh Boyer | 4f07bf38b5 | |
Dave Jones | cade301a3b | |
Dave Jones | f8424d652a | |
Dave Jones | 953a44d426 | |
Dave Jones | bb24598347 | |
Dave Jones | 987250ae87 | |
Dave Jones | 43c809527e | |
Dave Jones | b183b702f7 | |
Dave Jones | 0c76388efa | |
Dave Jones | 49d8394023 | |
Dave Jones | 322dbeb8ef | |
John W. Linville | 16d5b4083a | |
Mark Wielaard | b81b450037 | |
Justin M. Forbes | 5a64af3faf | |
Adam Jackson | 543bc43145 | |
Dave Jones | 191eabc46e | |
Dave Jones | 957f70d8ce | |
Dave Jones | 34f57fef38 | |
Josh Boyer | 8604c9164a | |
Dave Jones | 03f3fa649f | |
Justin M. Forbes | c15034c210 | |
Dave Jones | c675e2db6b | |
Josh Boyer | 3e2c562382 | |
Josh Boyer | 918552e3f3 | |
Josh Boyer | 3daa224e41 | |
Josh Boyer | d55b8fbc56 | |
Josh Boyer | d4f9238c88 | |
Josh Boyer | 9b45c234f0 | |
Josh Boyer | db1939dd8f | |
Josh Boyer | 6b45478950 | |
Peter Robinson | da2d4fb231 | |
Josh Boyer | 7d7342cd50 | |
Josh Boyer | 950a401dc3 | |
Josh Boyer | 55bd825353 | |
Josh Boyer | 6bdf8498f4 | |
Josh Boyer | add2ca9e12 | |
Peter Robinson | 76ebbb6c6c | |
Josh Boyer | dae3cd5ca5 | |
Josh Boyer | 0a89a58e03 | |
Josh Boyer | 0255fc68c9 | |
Josh Boyer | 0e3dcef2db | |
Josh Boyer | 44e57012c8 | |
Peter Robinson | e1d46a5d22 | |
Dave Jones | b2f4cd93ec | |
Peter Robinson | d15a70859a | |
Josh Boyer | c08cca5888 | |
Dave Jones | 0297ab965a | |
Josh Boyer | 8bd30695f0 | |
Josh Boyer | abff21a8fa | |
Josh Boyer | cd68c0b144 | |
Peter Robinson | d92680c835 | |
Dave Jones | ad44e064a0 | |
Dave Jones | 9ce789da04 | |
Josh Boyer | 9163dd7666 | |
Josh Boyer | 157fe84354 | |
Peter Robinson | 3a72e754ec | |
Peter Robinson | 3f54814095 | |
Josh Boyer | 39fd9cfd02 | |
Josh Boyer | 7952cde44b | |
Adam Jackson | f935a16509 | |
John W. Linville | f516fcd1f0 | |
Josh Boyer | 08db8c5d12 | |
Josh Boyer | b150cfcb0f | |
Josh Boyer | 65b7231f44 | |
Josh Boyer | 9bf39b3281 | |
Josh Boyer | 770ad8ca88 | |
Peter Robinson | 4cee10509f | |
Josh Boyer | 2d7f1ba183 | |
Josh Boyer | 96e2cd2647 | |
Josh Boyer | 88671e11c1 | |
Josh Boyer | beef0e952d | |
Josh Boyer | 87001d5c4f | |
Josh Boyer | 85df0e0b4f | |
Josh Boyer | fa3e4fce5a | |
Dave Jones | 75f90a6e2f | |
Josh Boyer | b0d8317b77 | |
Josh Boyer | 9befbf0be8 | |
Josh Boyer | a9de21e9b4 | |
Josh Boyer | 36def90773 | |
Josh Boyer | 7dc73bb9a6 | |
Josh Boyer | 5fbbd7cdcd | |
Josh Boyer | 92a0ba45a8 | |
Josh Boyer | d916a9f0bf | |
Chris Wright | d12d87cbf7 |
|
@ -0,0 +1,83 @@
|
|||
From b05ceba560e094d27ff716f6df1e2d5ef670d4d3 Mon Sep 17 00:00:00 2001
|
||||
From: Kent Yoder <key@linux.vnet.ibm.com>
|
||||
Date: Wed, 27 Feb 2013 15:50:27 -0600
|
||||
Subject: [PATCH] drivers/crypto/nx: fix init race, alignmasks and GCM bug
|
||||
|
||||
Fixes a race on driver init with registering algorithms where the
|
||||
driver status flag wasn't being set before self testing started.
|
||||
|
||||
Added the cra_alignmask field for CBC and ECB modes.
|
||||
|
||||
Fixed a bug in GCM where AES block size was being used instead of
|
||||
authsize.
|
||||
|
||||
Signed-off-by: Kent Yoder <key@linux.vnet.ibm.com>
|
||||
---
|
||||
drivers/crypto/nx/nx-aes-cbc.c | 1 +
|
||||
drivers/crypto/nx/nx-aes-ecb.c | 1 +
|
||||
drivers/crypto/nx/nx-aes-gcm.c | 2 +-
|
||||
drivers/crypto/nx/nx.c | 4 ++--
|
||||
4 files changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/crypto/nx/nx-aes-cbc.c b/drivers/crypto/nx/nx-aes-cbc.c
|
||||
index a76d4c4..35d483f 100644
|
||||
--- a/drivers/crypto/nx/nx-aes-cbc.c
|
||||
+++ b/drivers/crypto/nx/nx-aes-cbc.c
|
||||
@@ -126,6 +126,7 @@ struct crypto_alg nx_cbc_aes_alg = {
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct nx_crypto_ctx),
|
||||
.cra_type = &crypto_blkcipher_type,
|
||||
+ .cra_alignmask = 0xf,
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_init = nx_crypto_ctx_aes_cbc_init,
|
||||
.cra_exit = nx_crypto_ctx_exit,
|
||||
diff --git a/drivers/crypto/nx/nx-aes-ecb.c b/drivers/crypto/nx/nx-aes-ecb.c
|
||||
index ba5f161..7bbc9a8 100644
|
||||
--- a/drivers/crypto/nx/nx-aes-ecb.c
|
||||
+++ b/drivers/crypto/nx/nx-aes-ecb.c
|
||||
@@ -123,6 +123,7 @@ struct crypto_alg nx_ecb_aes_alg = {
|
||||
.cra_priority = 300,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
+ .cra_alignmask = 0xf,
|
||||
.cra_ctxsize = sizeof(struct nx_crypto_ctx),
|
||||
.cra_type = &crypto_blkcipher_type,
|
||||
.cra_module = THIS_MODULE,
|
||||
diff --git a/drivers/crypto/nx/nx-aes-gcm.c b/drivers/crypto/nx/nx-aes-gcm.c
|
||||
index c8109ed..6cca6c3 100644
|
||||
--- a/drivers/crypto/nx/nx-aes-gcm.c
|
||||
+++ b/drivers/crypto/nx/nx-aes-gcm.c
|
||||
@@ -219,7 +219,7 @@ static int gcm_aes_nx_crypt(struct aead_request *req, int enc)
|
||||
if (enc)
|
||||
NX_CPB_FDM(csbcpb) |= NX_FDM_ENDE_ENCRYPT;
|
||||
else
|
||||
- nbytes -= AES_BLOCK_SIZE;
|
||||
+ nbytes -= crypto_aead_authsize(crypto_aead_reqtfm(req));
|
||||
|
||||
csbcpb->cpb.aes_gcm.bit_length_data = nbytes * 8;
|
||||
|
||||
diff --git a/drivers/crypto/nx/nx.c b/drivers/crypto/nx/nx.c
|
||||
index c767f23..7621d05 100644
|
||||
--- a/drivers/crypto/nx/nx.c
|
||||
+++ b/drivers/crypto/nx/nx.c
|
||||
@@ -454,6 +454,8 @@ static int nx_register_algs(void)
|
||||
if (rc)
|
||||
goto out;
|
||||
|
||||
+ nx_driver.of.status = NX_OKAY;
|
||||
+
|
||||
rc = crypto_register_alg(&nx_ecb_aes_alg);
|
||||
if (rc)
|
||||
goto out;
|
||||
@@ -498,8 +500,6 @@ static int nx_register_algs(void)
|
||||
if (rc)
|
||||
goto out_unreg_s512;
|
||||
|
||||
- nx_driver.of.status = NX_OKAY;
|
||||
-
|
||||
goto out;
|
||||
|
||||
out_unreg_s512:
|
||||
--
|
||||
1.7.11.7
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From d0a934b764c67b4bf626f5b7cf725a6e3066afd2 Mon Sep 17 00:00:00 2001
|
||||
From: David Herrmann <dh.herrmann@gmail.com>
|
||||
Date: Mon, 13 May 2013 15:01:30 +0000
|
||||
Subject: HID: input: return ENODATA if reading battery attrs fails
|
||||
|
||||
power_supply core has the bad habit of calling our battery callbacks
|
||||
from within power_supply_register(). Furthermore, if the callbacks
|
||||
fail with an unhandled error code, it will skip any uevent that it
|
||||
might currently process.
|
||||
So if HID-core registers battery devices, an "add" uevent is generated
|
||||
and the battery callbacks are called. These will gracefully fail due
|
||||
to timeouts as they might still hold locks on event processing. One
|
||||
could argue that this should be fixed in power_supply core, but the
|
||||
least we can do is to signal ENODATA so power_supply core will just
|
||||
skip the property and continue with the uevent.
|
||||
|
||||
This fixes a bug where "add" and "remove" uevents are skipped for
|
||||
battery devices. upower is unable to track these devices and currently
|
||||
needs to ignore them.
|
||||
|
||||
This patch also overwrites any other error code. I cannot see any reason
|
||||
why we should forward protocol- or I/O-errors to the power_supply core.
|
||||
We handle these errors in hid_ll_driver later, anyway, so just skip
|
||||
them. power_supply core cannot do anything useful with them, anyway,
|
||||
and we avoid skipping important uevents and confusing user-space.
|
||||
|
||||
Thanks a lot to Daniel Nicoletti for pushing and investigating
|
||||
on this.
|
||||
|
||||
Cc: Jiri Kosina <jkosina@suse.cz>
|
||||
Cc: Anton Vorontsov <cbou@mail.ru>
|
||||
Cc: David Woodhouse <dwmw2@infradead.org>
|
||||
Reported-by: Daniel Nicoletti <dantti12@gmail.com>
|
||||
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
|
||||
index 945b815..c526a3c 100644
|
||||
--- a/drivers/hid/hid-input.c
|
||||
+++ b/drivers/hid/hid-input.c
|
||||
@@ -354,10 +354,10 @@ static int hidinput_get_battery_property(struct power_supply *psy,
|
||||
dev->battery_report_type);
|
||||
|
||||
if (ret != 2) {
|
||||
- if (ret >= 0)
|
||||
- ret = -EINVAL;
|
||||
+ ret = -ENODATA;
|
||||
break;
|
||||
}
|
||||
+ ret = 0;
|
||||
|
||||
if (dev->battery_min < dev->battery_max &&
|
||||
buf[1] >= dev->battery_min &&
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -0,0 +1,98 @@
|
|||
From 3685c18e17f12438d0a83331c1b6a5b00fade7a1 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Date: Tue, 02 Jul 2013 16:10:09 +0000
|
||||
Subject: HID: kye: Add report fixup for Genius Gila Gaming mouse
|
||||
|
||||
Genius Gila Gaming Mouse presents an obviously wrong report descriptor.
|
||||
the Consumer control (report ID 3) is the following:
|
||||
0x05, 0x0c, // Usage Page (Consumer Devices) 105
|
||||
0x09, 0x01, // Usage (Consumer Control) 107
|
||||
0xa1, 0x01, // Collection (Application) 109
|
||||
0x85, 0x03, // Report ID (3) 111
|
||||
0x19, 0x00, // Usage Minimum (0) 113
|
||||
0x2a, 0xff, 0x7f, // Usage Maximum (32767) 115
|
||||
0x15, 0x00, // Logical Minimum (0) 118
|
||||
0x26, 0xff, 0x7f, // Logical Maximum (32767) 120
|
||||
0x75, 0x10, // Report Size (16) 123
|
||||
0x95, 0x03, // Report Count (3) 125
|
||||
0x81, 0x00, // Input (Data,Arr,Abs) 127
|
||||
0x75, 0x08, // Report Size (8) 129
|
||||
0x95, 0x01, // Report Count (1) 131
|
||||
0x81, 0x01, // Input (Cnst,Arr,Abs) 133
|
||||
0xc0, // End Collection 135
|
||||
|
||||
So the first input whithin this report has a count of 3 but a usage range
|
||||
of 32768. So this value is obviously wrong as it should not be greater than
|
||||
the report count.
|
||||
|
||||
Fixes:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=959721
|
||||
|
||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
||||
index 8f616bd..27aa7c7 100644
|
||||
--- a/drivers/hid/hid-core.c
|
||||
+++ b/drivers/hid/hid-core.c
|
||||
@@ -1589,6 +1589,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ION, USB_DEVICE_ID_ICADE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_KENSINGTON, USB_DEVICE_ID_KS_SLIMBLADE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_KEYTOUCH, USB_DEVICE_ID_KEYTOUCH_IEC) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_ERGO_525V) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_I405X) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X) },
|
||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
||||
index 3da75dd..b2b692e 100644
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -474,6 +474,7 @@
|
||||
|
||||
#define USB_VENDOR_ID_KYE 0x0458
|
||||
#define USB_DEVICE_ID_KYE_ERGO_525V 0x0087
|
||||
+#define USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE 0x0138
|
||||
#define USB_DEVICE_ID_KYE_GPEN_560 0x5003
|
||||
#define USB_DEVICE_ID_KYE_EASYPEN_I405X 0x5010
|
||||
#define USB_DEVICE_ID_KYE_MOUSEPEN_I608X 0x5011
|
||||
diff --git a/drivers/hid/hid-kye.c b/drivers/hid/hid-kye.c
|
||||
index 6af90db..1e2ee2aa 100644
|
||||
--- a/drivers/hid/hid-kye.c
|
||||
+++ b/drivers/hid/hid-kye.c
|
||||
@@ -314,6 +314,25 @@ static __u8 *kye_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
*rsize = sizeof(easypen_m610x_rdesc_fixed);
|
||||
}
|
||||
break;
|
||||
+ case USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE:
|
||||
+ /*
|
||||
+ * the fixup that need to be done:
|
||||
+ * - change Usage Maximum in the Comsumer Control
|
||||
+ * (report ID 3) to a reasonable value
|
||||
+ */
|
||||
+ if (*rsize >= 135 &&
|
||||
+ /* Usage Page (Consumer Devices) */
|
||||
+ rdesc[104] == 0x05 && rdesc[105] == 0x0c &&
|
||||
+ /* Usage (Consumer Control) */
|
||||
+ rdesc[106] == 0x09 && rdesc[107] == 0x01 &&
|
||||
+ /* Usage Maximum > 12287 */
|
||||
+ rdesc[114] == 0x2a && rdesc[116] > 0x2f) {
|
||||
+ hid_info(hdev,
|
||||
+ "fixing up Genius Gila Gaming Mouse "
|
||||
+ "report descriptor\n");
|
||||
+ rdesc[116] = 0x2f;
|
||||
+ }
|
||||
+ break;
|
||||
}
|
||||
return rdesc;
|
||||
}
|
||||
@@ -407,6 +426,8 @@ static const struct hid_device_id kye_devices[] = {
|
||||
USB_DEVICE_ID_KYE_MOUSEPEN_I608X) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_KYE,
|
||||
USB_DEVICE_ID_KYE_EASYPEN_M610X) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_KYE,
|
||||
+ USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE) },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(hid, kye_devices);
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -1,78 +0,0 @@
|
|||
From 0769c5de24621141c953fbe1f943582d37cb4244 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stephan=20B=C3=A4rwolf?= <stephan.baerwolf@tu-ilmenau.de>
|
||||
Date: Thu, 12 Jan 2012 16:43:03 +0100
|
||||
Subject: [PATCH 1/2] KVM: x86: extend "struct x86_emulate_ops" with
|
||||
"get_cpuid"
|
||||
|
||||
In order to be able to proceed checks on CPU-specific properties
|
||||
within the emulator, function "get_cpuid" is introduced.
|
||||
With "get_cpuid" it is possible to virtually call the guests
|
||||
"cpuid"-opcode without changing the VM's context.
|
||||
|
||||
[mtosatti: cleanup/beautify code]
|
||||
|
||||
Signed-off-by: Stephan Baerwolf <stephan.baerwolf@tu-ilmenau.de>
|
||||
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
---
|
||||
arch/x86/include/asm/kvm_emulate.h | 3 +++
|
||||
arch/x86/kvm/x86.c | 23 +++++++++++++++++++++++
|
||||
2 files changed, 26 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
|
||||
index ab4092e..c8b2868 100644
|
||||
--- a/arch/x86/include/asm/kvm_emulate.h
|
||||
+++ b/arch/x86/include/asm/kvm_emulate.h
|
||||
@@ -190,6 +190,9 @@ struct x86_emulate_ops {
|
||||
int (*intercept)(struct x86_emulate_ctxt *ctxt,
|
||||
struct x86_instruction_info *info,
|
||||
enum x86_intercept_stage stage);
|
||||
+
|
||||
+ bool (*get_cpuid)(struct x86_emulate_ctxt *ctxt,
|
||||
+ u32 *eax, u32 *ebx, u32 *ecx, u32 *edx);
|
||||
};
|
||||
|
||||
typedef u32 __attribute__((vector_size(16))) sse128_t;
|
||||
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
|
||||
index f0fa3fb..c95ca2d 100644
|
||||
--- a/arch/x86/kvm/x86.c
|
||||
+++ b/arch/x86/kvm/x86.c
|
||||
@@ -4205,6 +4205,28 @@ static int emulator_intercept(struct x86_emulate_ctxt *ctxt,
|
||||
return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage);
|
||||
}
|
||||
|
||||
+static bool emulator_get_cpuid(struct x86_emulate_ctxt *ctxt,
|
||||
+ u32 *eax, u32 *ebx, u32 *ecx, u32 *edx)
|
||||
+{
|
||||
+ struct kvm_cpuid_entry2 *cpuid = NULL;
|
||||
+
|
||||
+ if (eax && ecx)
|
||||
+ cpuid = kvm_find_cpuid_entry(emul_to_vcpu(ctxt),
|
||||
+ *eax, *ecx);
|
||||
+
|
||||
+ if (cpuid) {
|
||||
+ *eax = cpuid->eax;
|
||||
+ *ecx = cpuid->ecx;
|
||||
+ if (ebx)
|
||||
+ *ebx = cpuid->ebx;
|
||||
+ if (edx)
|
||||
+ *edx = cpuid->edx;
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
static struct x86_emulate_ops emulate_ops = {
|
||||
.read_std = kvm_read_guest_virt_system,
|
||||
.write_std = kvm_write_guest_virt_system,
|
||||
@@ -4236,6 +4258,7 @@ static struct x86_emulate_ops emulate_ops = {
|
||||
.get_fpu = emulator_get_fpu,
|
||||
.put_fpu = emulator_put_fpu,
|
||||
.intercept = emulator_intercept,
|
||||
+ .get_cpuid = emulator_get_cpuid,
|
||||
};
|
||||
|
||||
static void cache_all_regs(struct kvm_vcpu *vcpu)
|
||||
--
|
||||
1.7.7.5
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
From e28ba7bb020f07193bc000453c8775e9d2c0dda7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stephan=20B=C3=A4rwolf?= <stephan.baerwolf@tu-ilmenau.de>
|
||||
Date: Thu, 12 Jan 2012 16:43:04 +0100
|
||||
Subject: [PATCH 2/2] KVM: x86: fix missing checks in syscall emulation
|
||||
|
||||
On hosts without this patch, 32bit guests will crash (and 64bit guests
|
||||
may behave in a wrong way) for example by simply executing following
|
||||
nasm-demo-application:
|
||||
|
||||
[bits 32]
|
||||
global _start
|
||||
SECTION .text
|
||||
_start: syscall
|
||||
|
||||
(I tested it with winxp and linux - both always crashed)
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
00000000 <_start>:
|
||||
0: 0f 05 syscall
|
||||
|
||||
The reason seems a missing "invalid opcode"-trap (int6) for the
|
||||
syscall opcode "0f05", which is not available on Intel CPUs
|
||||
within non-longmodes, as also on some AMD CPUs within legacy-mode.
|
||||
(depending on CPU vendor, MSR_EFER and cpuid)
|
||||
|
||||
Because previous mentioned OSs may not engage corresponding
|
||||
syscall target-registers (STAR, LSTAR, CSTAR), they remain
|
||||
NULL and (non trapping) syscalls are leading to multiple
|
||||
faults and finally crashs.
|
||||
|
||||
Depending on the architecture (AMD or Intel) pretended by
|
||||
guests, various checks according to vendor's documentation
|
||||
are implemented to overcome the current issue and behave
|
||||
like the CPUs physical counterparts.
|
||||
|
||||
[mtosatti: cleanup/beautify code]
|
||||
|
||||
Signed-off-by: Stephan Baerwolf <stephan.baerwolf@tu-ilmenau.de>
|
||||
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
---
|
||||
arch/x86/include/asm/kvm_emulate.h | 13 +++++++++
|
||||
arch/x86/kvm/emulate.c | 51 ++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 64 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
|
||||
index c8b2868..7b9cfc4 100644
|
||||
--- a/arch/x86/include/asm/kvm_emulate.h
|
||||
+++ b/arch/x86/include/asm/kvm_emulate.h
|
||||
@@ -301,6 +301,19 @@ struct x86_emulate_ctxt {
|
||||
#define X86EMUL_MODE_PROT (X86EMUL_MODE_PROT16|X86EMUL_MODE_PROT32| \
|
||||
X86EMUL_MODE_PROT64)
|
||||
|
||||
+/* CPUID vendors */
|
||||
+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx 0x68747541
|
||||
+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx 0x444d4163
|
||||
+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_edx 0x69746e65
|
||||
+
|
||||
+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx 0x69444d41
|
||||
+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx 0x21726574
|
||||
+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_edx 0x74656273
|
||||
+
|
||||
+#define X86EMUL_CPUID_VENDOR_GenuineIntel_ebx 0x756e6547
|
||||
+#define X86EMUL_CPUID_VENDOR_GenuineIntel_ecx 0x6c65746e
|
||||
+#define X86EMUL_CPUID_VENDOR_GenuineIntel_edx 0x49656e69
|
||||
+
|
||||
enum x86_intercept_stage {
|
||||
X86_ICTP_NONE = 0, /* Allow zero-init to not match anything */
|
||||
X86_ICPT_PRE_EXCEPT,
|
||||
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
|
||||
index 05a562b..0982507 100644
|
||||
--- a/arch/x86/kvm/emulate.c
|
||||
+++ b/arch/x86/kvm/emulate.c
|
||||
@@ -1891,6 +1891,51 @@ setup_syscalls_segments(struct x86_emulate_ctxt *ctxt,
|
||||
ss->p = 1;
|
||||
}
|
||||
|
||||
+static bool em_syscall_is_enabled(struct x86_emulate_ctxt *ctxt)
|
||||
+{
|
||||
+ struct x86_emulate_ops *ops = ctxt->ops;
|
||||
+ u32 eax, ebx, ecx, edx;
|
||||
+
|
||||
+ /*
|
||||
+ * syscall should always be enabled in longmode - so only become
|
||||
+ * vendor specific (cpuid) if other modes are active...
|
||||
+ */
|
||||
+ if (ctxt->mode == X86EMUL_MODE_PROT64)
|
||||
+ return true;
|
||||
+
|
||||
+ eax = 0x00000000;
|
||||
+ ecx = 0x00000000;
|
||||
+ if (ops->get_cpuid(ctxt, &eax, &ebx, &ecx, &edx)) {
|
||||
+ /*
|
||||
+ * Intel ("GenuineIntel")
|
||||
+ * remark: Intel CPUs only support "syscall" in 64bit
|
||||
+ * longmode. Also an 64bit guest with a
|
||||
+ * 32bit compat-app running will #UD !! While this
|
||||
+ * behaviour can be fixed (by emulating) into AMD
|
||||
+ * response - CPUs of AMD can't behave like Intel.
|
||||
+ */
|
||||
+ if (ebx == X86EMUL_CPUID_VENDOR_GenuineIntel_ebx &&
|
||||
+ ecx == X86EMUL_CPUID_VENDOR_GenuineIntel_ecx &&
|
||||
+ edx == X86EMUL_CPUID_VENDOR_GenuineIntel_edx)
|
||||
+ return false;
|
||||
+
|
||||
+ /* AMD ("AuthenticAMD") */
|
||||
+ if (ebx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx &&
|
||||
+ ecx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx &&
|
||||
+ edx == X86EMUL_CPUID_VENDOR_AuthenticAMD_edx)
|
||||
+ return true;
|
||||
+
|
||||
+ /* AMD ("AMDisbetter!") */
|
||||
+ if (ebx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx &&
|
||||
+ ecx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx &&
|
||||
+ edx == X86EMUL_CPUID_VENDOR_AMDisbetterI_edx)
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ /* default: (not Intel, not AMD), apply Intel's stricter rules... */
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
static int em_syscall(struct x86_emulate_ctxt *ctxt)
|
||||
{
|
||||
struct x86_emulate_ops *ops = ctxt->ops;
|
||||
@@ -1904,9 +1949,15 @@ static int em_syscall(struct x86_emulate_ctxt *ctxt)
|
||||
ctxt->mode == X86EMUL_MODE_VM86)
|
||||
return emulate_ud(ctxt);
|
||||
|
||||
+ if (!(em_syscall_is_enabled(ctxt)))
|
||||
+ return emulate_ud(ctxt);
|
||||
+
|
||||
ops->get_msr(ctxt, MSR_EFER, &efer);
|
||||
setup_syscalls_segments(ctxt, &cs, &ss);
|
||||
|
||||
+ if (!(efer & EFER_SCE))
|
||||
+ return emulate_ud(ctxt);
|
||||
+
|
||||
ops->get_msr(ctxt, MSR_STAR, &msr_data);
|
||||
msr_data >>= 32;
|
||||
cs_sel = (u16)(msr_data & 0xfffc);
|
||||
--
|
||||
1.7.7.5
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
|
||||
index 094b5d9..64a4b03 100644
|
||||
--- a/arch/x86/kvm/x86.c
|
||||
+++ b/arch/x86/kvm/x86.c
|
||||
@@ -1194,20 +1194,37 @@ void kvm_write_tsc(struct kvm_vcpu *vcpu, struct msr_data *msr)
|
||||
elapsed = ns - kvm->arch.last_tsc_nsec;
|
||||
|
||||
if (vcpu->arch.virtual_tsc_khz) {
|
||||
+ int faulted = 0;
|
||||
+
|
||||
/* n.b - signed multiplication and division required */
|
||||
usdiff = data - kvm->arch.last_tsc_write;
|
||||
#ifdef CONFIG_X86_64
|
||||
usdiff = (usdiff * 1000) / vcpu->arch.virtual_tsc_khz;
|
||||
#else
|
||||
/* do_div() only does unsigned */
|
||||
- asm("idivl %2; xor %%edx, %%edx"
|
||||
- : "=A"(usdiff)
|
||||
- : "A"(usdiff * 1000), "rm"(vcpu->arch.virtual_tsc_khz));
|
||||
+ asm("1: idivl %[divisor]\n"
|
||||
+ "2: xor %%edx, %%edx\n"
|
||||
+ " movl $0, %[faulted]\n"
|
||||
+ "3:\n"
|
||||
+ ".section .fixup,\"ax\"\n"
|
||||
+ "4: movl $1, %[faulted]\n"
|
||||
+ " jmp 3b\n"
|
||||
+ ".previous\n"
|
||||
+
|
||||
+ _ASM_EXTABLE(1b, 4b)
|
||||
+
|
||||
+ : "=A"(usdiff), [faulted] "=r" (faulted)
|
||||
+ : "A"(usdiff * 1000), [divisor] "rm"(vcpu->arch.virtual_tsc_khz));
|
||||
+
|
||||
#endif
|
||||
do_div(elapsed, 1000);
|
||||
usdiff -= elapsed;
|
||||
if (usdiff < 0)
|
||||
usdiff = -usdiff;
|
||||
+
|
||||
+ /* idivl overflow => difference is larger than USEC_PER_SEC */
|
||||
+ if (faulted)
|
||||
+ usdiff = USEC_PER_SEC;
|
||||
} else
|
||||
usdiff = USEC_PER_SEC; /* disable TSC match window below */
|
||||
|
2
Makefile
2
Makefile
|
@ -100,7 +100,7 @@ debug:
|
|||
|
||||
@perl -pi -e 's/# CONFIG_MAXSMP is not set/CONFIG_MAXSMP=y/' config-x86-generic
|
||||
|
||||
# Try out UAS in rawhide builds.
|
||||
@# Try out UAS in rawhide builds.
|
||||
@perl -pi -e 's/# CONFIG_USB_UAS is not set/CONFIG_USB_UAS=m/' config-generic
|
||||
|
||||
@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
|
||||
|
|
|
@ -9,16 +9,13 @@ CONFIGFILES = \
|
|||
$(CFG)-i686-PAE.config $(CFG)-i686-PAEdebug.config \
|
||||
$(CFG)-x86_64.config $(CFG)-x86_64-debug.config \
|
||||
$(CFG)-s390x.config \
|
||||
$(CFG)-arm.config $(CFG)-armv5tel.config $(CFG)-armv7hl.config \
|
||||
$(CFG)-armv5tel-kirkwood.config $(CFG)-armv7l-imx.config \
|
||||
$(CFG)-armv7l-omap.config $(CFG)-armv7l-tegra.config \
|
||||
$(CFG)-armv7hl-imx.config $(CFG)-armv7hl-highbank.config \
|
||||
$(CFG)-armv7hl-omap.config $(CFG)-armv7hl-tegra.config \
|
||||
$(CFG)-armv5tel-kirkwood.config \
|
||||
$(CFG)-armv7l.config $(CFG)-armv7hl.config \
|
||||
$(CFG)-armv7l-tegra.config $(CFG)-armv7hl-tegra.config \
|
||||
$(CFG)-ppc.config $(CFG)-ppc-smp.config \
|
||||
$(CFG)-sparc64.config \
|
||||
$(CFG)-ppc64.config $(CFG)-ppc64-debug.config
|
||||
|
||||
PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x sparc64
|
||||
PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x arm
|
||||
TEMPFILES = $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS)))
|
||||
|
||||
configs: $(CONFIGFILES)
|
||||
|
@ -36,24 +33,21 @@ temp-generic: config-generic
|
|||
temp-debug-generic: config-generic
|
||||
cat config-generic config-debug > temp-debug-generic
|
||||
|
||||
temp-armv7-generic: config-armv7-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv7: config-armv7 temp-armv7-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv7-tegra: config-armv7-tegra temp-armv7-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-arm-generic: config-arm-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv7l-omap-generic: config-arm-omap-generic temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv7l-tegra: config-arm-tegra temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv5tel-kirkwood: config-arm-kirkwood temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv7l-imx: config-arm-imx temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv7l-highbank: config-arm-highbank temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86-32: config-x86-32-generic config-x86-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
|
@ -72,9 +66,6 @@ temp-x86_64-generic: temp-x86-64 temp-generic
|
|||
temp-x86_64-debug-generic: temp-x86-64 temp-debug-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-sparc64-generic: config-sparc64-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-powerpc-generic: config-powerpc-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
|
@ -105,9 +96,6 @@ kernel-$(VERSION)-x86_64.config: /dev/null temp-x86_64-generic
|
|||
kernel-$(VERSION)-x86_64-debug.config: /dev/null temp-x86_64-debug-generic
|
||||
perl merge.pl $^ x86_64 > $@
|
||||
|
||||
kernel-$(VERSION)-sparc64.config: /dev/null temp-sparc64-generic
|
||||
perl merge.pl $^ sparc64 > $@
|
||||
|
||||
kernel-$(VERSION)-ppc64.config: config-powerpc64 temp-powerpc-generic
|
||||
perl merge.pl $^ powerpc > $@
|
||||
|
||||
|
@ -117,40 +105,19 @@ kernel-$(VERSION)-ppc64-debug.config: config-powerpc64 temp-powerpc-debug-generi
|
|||
kernel-$(VERSION)-s390x.config: config-s390x temp-s390-generic
|
||||
perl merge.pl $^ s390 > $@
|
||||
|
||||
kernel-$(VERSION)-arm.config: /dev/null temp-arm-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv5tel.config: /dev/null temp-arm-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl.config: /dev/null temp-arm-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv5tel-kirkwood.config: /dev/null temp-armv5tel-kirkwood
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7l-imx.config: /dev/null temp-armv7l-imx
|
||||
kernel-$(VERSION)-armv7l.config: /dev/null temp-armv7
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7l-highbank.config: /dev/null temp-armv7l-highbank
|
||||
kernel-$(VERSION)-armv7l-tegra.config: /dev/null temp-armv7-tegra
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7l-omap.config: /dev/null temp-armv7l-omap-generic
|
||||
kernel-$(VERSION)-armv7hl.config: /dev/null temp-armv7
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7l-tegra.config: /dev/null temp-armv7l-tegra
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl-imx.config: /dev/null temp-armv7l-imx
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl-highbank.config: /dev/null temp-armv7l-highbank
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl-omap.config: /dev/null temp-armv7l-omap-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl-tegra.config: /dev/null temp-armv7l-tegra
|
||||
kernel-$(VERSION)-armv7hl-tegra.config: /dev/null temp-armv7-tegra
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-ppc.config: /dev/null temp-powerpc32-generic
|
||||
|
|
|
@ -0,0 +1,153 @@
|
|||
From: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
|
||||
Currently, we will correctly optimise away a truncate that doesn't
|
||||
change the file size. However, in the case of open(O_TRUNC), we
|
||||
also want to optimise away the time changes.
|
||||
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
---
|
||||
fs/nfs/dir.c | 25 +++++++++++++++++++------
|
||||
fs/nfs/inode.c | 4 ++--
|
||||
fs/nfs/nfs4proc.c | 10 +++++++---
|
||||
3 files changed, 28 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
|
||||
index fd9a872..bb132a8 100644
|
||||
--- a/fs/nfs/dir.c
|
||||
+++ b/fs/nfs/dir.c
|
||||
@@ -1429,6 +1429,7 @@ static struct dentry *nfs_atomic_lookup(struct inode *dir, struct dentry *dentry
|
||||
}
|
||||
|
||||
open_flags = nd->intent.open.flags;
|
||||
+ attr.ia_valid = 0;
|
||||
|
||||
ctx = create_nfs_open_context(dentry, open_flags);
|
||||
res = ERR_CAST(ctx);
|
||||
@@ -1437,11 +1438,14 @@ static struct dentry *nfs_atomic_lookup(struct inode *dir, struct dentry *dentry
|
||||
|
||||
if (nd->flags & LOOKUP_CREATE) {
|
||||
attr.ia_mode = nd->intent.open.create_mode;
|
||||
- attr.ia_valid = ATTR_MODE;
|
||||
+ attr.ia_valid |= ATTR_MODE;
|
||||
attr.ia_mode &= ~current_umask();
|
||||
- } else {
|
||||
+ } else
|
||||
open_flags &= ~(O_EXCL | O_CREAT);
|
||||
- attr.ia_valid = 0;
|
||||
+
|
||||
+ if (open_flags & O_TRUNC) {
|
||||
+ attr.ia_valid |= ATTR_SIZE;
|
||||
+ attr.ia_size = 0;
|
||||
}
|
||||
|
||||
/* Open the file on the server */
|
||||
@@ -1495,6 +1499,7 @@ static int nfs_open_revalidate(struct dentry *dentry, struct nameidata *nd)
|
||||
struct inode *inode;
|
||||
struct inode *dir;
|
||||
struct nfs_open_context *ctx;
|
||||
+ struct iattr attr;
|
||||
int openflags, ret = 0;
|
||||
|
||||
if (nd->flags & LOOKUP_RCU)
|
||||
@@ -1523,19 +1528,27 @@ static int nfs_open_revalidate(struct dentry *dentry, struct nameidata *nd)
|
||||
/* We cannot do exclusive creation on a positive dentry */
|
||||
if ((openflags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL))
|
||||
goto no_open_dput;
|
||||
- /* We can't create new files, or truncate existing ones here */
|
||||
- openflags &= ~(O_CREAT|O_EXCL|O_TRUNC);
|
||||
+ /* We can't create new files here */
|
||||
+ openflags &= ~(O_CREAT|O_EXCL);
|
||||
|
||||
ctx = create_nfs_open_context(dentry, openflags);
|
||||
ret = PTR_ERR(ctx);
|
||||
if (IS_ERR(ctx))
|
||||
goto out;
|
||||
+
|
||||
+ attr.ia_valid = 0;
|
||||
+ if (openflags & O_TRUNC) {
|
||||
+ attr.ia_valid |= ATTR_SIZE;
|
||||
+ attr.ia_size = 0;
|
||||
+ nfs_wb_all(inode);
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* Note: we're not holding inode->i_mutex and so may be racing with
|
||||
* operations that change the directory. We therefore save the
|
||||
* change attribute *before* we do the RPC call.
|
||||
*/
|
||||
- inode = NFS_PROTO(dir)->open_context(dir, ctx, openflags, NULL);
|
||||
+ inode = NFS_PROTO(dir)->open_context(dir, ctx, openflags, &attr);
|
||||
if (IS_ERR(inode)) {
|
||||
ret = PTR_ERR(inode);
|
||||
switch (ret) {
|
||||
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
|
||||
index f649fba..57d0abb 100644
|
||||
--- a/fs/nfs/inode.c
|
||||
+++ b/fs/nfs/inode.c
|
||||
@@ -401,7 +401,7 @@ out_no_inode:
|
||||
goto out;
|
||||
}
|
||||
|
||||
-#define NFS_VALID_ATTRS (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_SIZE|ATTR_ATIME|ATTR_ATIME_SET|ATTR_MTIME|ATTR_MTIME_SET|ATTR_FILE)
|
||||
+#define NFS_VALID_ATTRS (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_SIZE|ATTR_ATIME|ATTR_ATIME_SET|ATTR_MTIME|ATTR_MTIME_SET|ATTR_FILE|ATTR_OPEN)
|
||||
|
||||
int
|
||||
nfs_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
@@ -423,7 +423,7 @@ nfs_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
|
||||
/* Optimization: if the end result is no change, don't RPC */
|
||||
attr->ia_valid &= NFS_VALID_ATTRS;
|
||||
- if ((attr->ia_valid & ~ATTR_FILE) == 0)
|
||||
+ if ((attr->ia_valid & ~(ATTR_FILE|ATTR_OPEN)) == 0)
|
||||
return 0;
|
||||
|
||||
/* Write all dirty data */
|
||||
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
|
||||
index 1515e45..c4c6b48 100644
|
||||
--- a/fs/nfs/nfs4proc.c
|
||||
+++ b/fs/nfs/nfs4proc.c
|
||||
@@ -833,7 +833,7 @@ static struct nfs4_opendata *nfs4_opendata_alloc(struct dentry *dentry,
|
||||
p->o_arg.bitmask = server->attr_bitmask;
|
||||
p->o_arg.dir_bitmask = server->cache_consistency_bitmask;
|
||||
p->o_arg.claim = NFS4_OPEN_CLAIM_NULL;
|
||||
- if (flags & O_CREAT) {
|
||||
+ if (attrs != NULL && attrs->ia_valid != 0) {
|
||||
u32 *s;
|
||||
|
||||
p->o_arg.u.attrs = &p->attrs;
|
||||
@@ -890,7 +890,7 @@ static int can_open_cached(struct nfs4_state *state, fmode_t mode, int open_mode
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
- if (open_mode & O_EXCL)
|
||||
+ if (open_mode & (O_EXCL|O_TRUNC))
|
||||
goto out;
|
||||
switch (mode & (FMODE_READ|FMODE_WRITE)) {
|
||||
case FMODE_READ:
|
||||
@@ -1038,7 +1038,7 @@ static struct nfs4_state *nfs4_try_open_cached(struct nfs4_opendata *opendata)
|
||||
struct nfs4_state *state = opendata->state;
|
||||
struct nfs_inode *nfsi = NFS_I(state->inode);
|
||||
struct nfs_delegation *delegation;
|
||||
- int open_mode = opendata->o_arg.open_flags & O_EXCL;
|
||||
+ int open_mode = opendata->o_arg.open_flags & (O_EXCL|O_TRUNC);
|
||||
fmode_t fmode = opendata->o_arg.fmode;
|
||||
nfs4_stateid stateid;
|
||||
int ret = -EAGAIN;
|
||||
@@ -2439,6 +2439,10 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
|
||||
}
|
||||
}
|
||||
|
||||
+ /* Deal with open(O_TRUNC) */
|
||||
+ if (sattr->ia_valid & ATTR_OPEN)
|
||||
+ sattr->ia_valid &= ~(ATTR_MTIME|ATTR_CTIME|ATTR_OPEN);
|
||||
+
|
||||
status = nfs4_do_setattr(inode, cred, fattr, sattr, state);
|
||||
if (status == 0)
|
||||
nfs_setattr_update_inode(inode, sattr);
|
||||
--
|
||||
1.7.7.6
|
||||
|
||||
_______________________________________________
|
||||
kernel mailing list
|
||||
kernel@lists.fedoraproject.org
|
||||
https://admin.fedoraproject.org/mailman/listinfo/kernel
|
|
@ -0,0 +1,109 @@
|
|||
diff -up linux-3.2.noarch/fs/nfs/idmap.c.orig linux-3.2.noarch/fs/nfs/idmap.c
|
||||
--- linux-3.2.noarch/fs/nfs/idmap.c.orig 2012-03-14 13:08:37.462928792 -0400
|
||||
+++ linux-3.2.noarch/fs/nfs/idmap.c 2012-03-14 13:10:17.076030982 -0400
|
||||
@@ -365,7 +365,7 @@ struct idmap_hashent {
|
||||
|
||||
struct idmap_hashtable {
|
||||
__u8 h_type;
|
||||
- struct idmap_hashent h_entries[IDMAP_HASH_SZ];
|
||||
+ struct idmap_hashent *h_entries;
|
||||
};
|
||||
|
||||
struct idmap {
|
||||
@@ -420,20 +420,39 @@ nfs_idmap_new(struct nfs_client *clp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static void
|
||||
+idmap_alloc_hashtable(struct idmap_hashtable *h)
|
||||
+{
|
||||
+ if (h->h_entries != NULL)
|
||||
+ return;
|
||||
+ h->h_entries = kcalloc(IDMAP_HASH_SZ,
|
||||
+ sizeof(*h->h_entries),
|
||||
+ GFP_KERNEL);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+idmap_free_hashtable(struct idmap_hashtable *h)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ if (h->h_entries == NULL)
|
||||
+ return;
|
||||
+ for (i = 0; i < IDMAP_HASH_SZ; i++)
|
||||
+ kfree(h->h_entries[i].ih_name);
|
||||
+ kfree(h->h_entries);
|
||||
+}
|
||||
+
|
||||
void
|
||||
nfs_idmap_delete(struct nfs_client *clp)
|
||||
{
|
||||
struct idmap *idmap = clp->cl_idmap;
|
||||
- int i;
|
||||
|
||||
if (!idmap)
|
||||
return;
|
||||
rpc_unlink(idmap->idmap_dentry);
|
||||
clp->cl_idmap = NULL;
|
||||
- for (i = 0; i < ARRAY_SIZE(idmap->idmap_user_hash.h_entries); i++)
|
||||
- kfree(idmap->idmap_user_hash.h_entries[i].ih_name);
|
||||
- for (i = 0; i < ARRAY_SIZE(idmap->idmap_group_hash.h_entries); i++)
|
||||
- kfree(idmap->idmap_group_hash.h_entries[i].ih_name);
|
||||
+ idmap_free_hashtable(&idmap->idmap_user_hash);
|
||||
+ idmap_free_hashtable(&idmap->idmap_group_hash);
|
||||
kfree(idmap);
|
||||
}
|
||||
|
||||
@@ -443,6 +462,8 @@ nfs_idmap_delete(struct nfs_client *clp)
|
||||
static inline struct idmap_hashent *
|
||||
idmap_name_hash(struct idmap_hashtable* h, const char *name, size_t len)
|
||||
{
|
||||
+ if (h->h_entries == NULL)
|
||||
+ return NULL;
|
||||
return &h->h_entries[fnvhash32(name, len) % IDMAP_HASH_SZ];
|
||||
}
|
||||
|
||||
@@ -451,6 +472,8 @@ idmap_lookup_name(struct idmap_hashtable
|
||||
{
|
||||
struct idmap_hashent *he = idmap_name_hash(h, name, len);
|
||||
|
||||
+ if (he == NULL)
|
||||
+ return NULL;
|
||||
if (he->ih_namelen != len || memcmp(he->ih_name, name, len) != 0)
|
||||
return NULL;
|
||||
if (time_after(jiffies, he->ih_expires))
|
||||
@@ -461,6 +484,8 @@ idmap_lookup_name(struct idmap_hashtable
|
||||
static inline struct idmap_hashent *
|
||||
idmap_id_hash(struct idmap_hashtable* h, __u32 id)
|
||||
{
|
||||
+ if (h->h_entries == NULL)
|
||||
+ return NULL;
|
||||
return &h->h_entries[fnvhash32(&id, sizeof(id)) % IDMAP_HASH_SZ];
|
||||
}
|
||||
|
||||
@@ -468,6 +493,9 @@ static struct idmap_hashent *
|
||||
idmap_lookup_id(struct idmap_hashtable *h, __u32 id)
|
||||
{
|
||||
struct idmap_hashent *he = idmap_id_hash(h, id);
|
||||
+
|
||||
+ if (he == NULL)
|
||||
+ return NULL;
|
||||
if (he->ih_id != id || he->ih_namelen == 0)
|
||||
return NULL;
|
||||
if (time_after(jiffies, he->ih_expires))
|
||||
@@ -483,12 +511,14 @@ idmap_lookup_id(struct idmap_hashtable *
|
||||
static inline struct idmap_hashent *
|
||||
idmap_alloc_name(struct idmap_hashtable *h, char *name, size_t len)
|
||||
{
|
||||
+ idmap_alloc_hashtable(h);
|
||||
return idmap_name_hash(h, name, len);
|
||||
}
|
||||
|
||||
static inline struct idmap_hashent *
|
||||
idmap_alloc_id(struct idmap_hashtable *h, __u32 id)
|
||||
{
|
||||
+ idmap_alloc_hashtable(h);
|
||||
return idmap_id_hash(h, id);
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
From 14977489ffdb80d4caf5a184ba41b23b02fbacd9 Mon Sep 17 00:00:00 2001
|
||||
From: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
Date: Tue, 27 Mar 2012 18:31:25 -0400
|
||||
Subject: [PATCH] NFSv4: Minor cleanups for nfs4_handle_exception and
|
||||
nfs4_async_handle_error
|
||||
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
---
|
||||
fs/nfs/nfs4proc.c | 10 +++++-----
|
||||
1 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
|
||||
index 1933e67..f82bde0 100644
|
||||
--- a/fs/nfs/nfs4proc.c
|
||||
+++ b/fs/nfs/nfs4proc.c
|
||||
@@ -270,7 +270,7 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc
|
||||
case 0:
|
||||
return 0;
|
||||
case -NFS4ERR_OPENMODE:
|
||||
- if (nfs_have_delegation(inode, FMODE_READ)) {
|
||||
+ if (inode && nfs_have_delegation(inode, FMODE_READ)) {
|
||||
nfs_inode_return_delegation(inode);
|
||||
exception->retry = 1;
|
||||
return 0;
|
||||
@@ -282,10 +282,9 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc
|
||||
case -NFS4ERR_DELEG_REVOKED:
|
||||
case -NFS4ERR_ADMIN_REVOKED:
|
||||
case -NFS4ERR_BAD_STATEID:
|
||||
- if (state != NULL)
|
||||
- nfs_remove_bad_delegation(state->inode);
|
||||
if (state == NULL)
|
||||
break;
|
||||
+ nfs_remove_bad_delegation(state->inode);
|
||||
nfs4_schedule_stateid_recovery(server, state);
|
||||
goto wait_on_recovery;
|
||||
case -NFS4ERR_EXPIRED:
|
||||
@@ -3825,8 +3824,9 @@ nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,
|
||||
case -NFS4ERR_DELEG_REVOKED:
|
||||
case -NFS4ERR_ADMIN_REVOKED:
|
||||
case -NFS4ERR_BAD_STATEID:
|
||||
- if (state != NULL)
|
||||
- nfs_remove_bad_delegation(state->inode);
|
||||
+ if (state == NULL)
|
||||
+ break;
|
||||
+ nfs_remove_bad_delegation(state->inode);
|
||||
case -NFS4ERR_OPENMODE:
|
||||
if (state == NULL)
|
||||
break;
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
From 34d91cfbc163c6e2a136a27c96918fc35de06341 Mon Sep 17 00:00:00 2001
|
||||
From: William Dauchy <wdauchy@gmail.com>
|
||||
Date: Wed, 14 Mar 2012 12:32:04 +0100
|
||||
Subject: [PATCH] NFSv4: Rate limit the state manager for lock reclaim warning
|
||||
messages
|
||||
|
||||
Adding rate limit on `Lock reclaim failed` messages since it could fill
|
||||
up system logs
|
||||
Signed-off-by: William Dauchy <wdauchy@gmail.com>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
|
||||
Conflicts:
|
||||
|
||||
fs/nfs/nfs4state.c
|
||||
---
|
||||
fs/nfs/nfs4state.c | 5 +++--
|
||||
1 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
|
||||
index bacb271..3676b5c 100644
|
||||
--- a/fs/nfs/nfs4state.c
|
||||
+++ b/fs/nfs/nfs4state.c
|
||||
@@ -1247,8 +1247,9 @@ restart:
|
||||
spin_lock(&state->state_lock);
|
||||
list_for_each_entry(lock, &state->lock_states, ls_locks) {
|
||||
if (!(lock->ls_flags & NFS_LOCK_INITIALIZED))
|
||||
- printk("%s: Lock reclaim failed!\n",
|
||||
- __func__);
|
||||
+ pr_warn_ratelimited("NFS: "
|
||||
+ "%s: Lock reclaim "
|
||||
+ "failed!\n", __func__);
|
||||
}
|
||||
spin_unlock(&state->state_lock);
|
||||
nfs4_put_open_state(state);
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
diff -up linux-3.2.noarch/fs/nfs/idmap.c.orig linux-3.2.noarch/fs/nfs/idmap.c
|
||||
--- linux-3.2.noarch/fs/nfs/idmap.c.orig 2012-02-07 07:12:52.585471833 -0500
|
||||
+++ linux-3.2.noarch/fs/nfs/idmap.c 2012-03-14 13:08:37.462928792 -0400
|
||||
@@ -360,7 +360,7 @@ struct idmap_hashent {
|
||||
unsigned long ih_expires;
|
||||
__u32 ih_id;
|
||||
size_t ih_namelen;
|
||||
- char ih_name[IDMAP_NAMESZ];
|
||||
+ const char *ih_name;
|
||||
};
|
||||
|
||||
struct idmap_hashtable {
|
||||
@@ -424,11 +424,16 @@ void
|
||||
nfs_idmap_delete(struct nfs_client *clp)
|
||||
{
|
||||
struct idmap *idmap = clp->cl_idmap;
|
||||
+ int i;
|
||||
|
||||
if (!idmap)
|
||||
return;
|
||||
rpc_unlink(idmap->idmap_dentry);
|
||||
clp->cl_idmap = NULL;
|
||||
+ for (i = 0; i < ARRAY_SIZE(idmap->idmap_user_hash.h_entries); i++)
|
||||
+ kfree(idmap->idmap_user_hash.h_entries[i].ih_name);
|
||||
+ for (i = 0; i < ARRAY_SIZE(idmap->idmap_group_hash.h_entries); i++)
|
||||
+ kfree(idmap->idmap_group_hash.h_entries[i].ih_name);
|
||||
kfree(idmap);
|
||||
}
|
||||
|
||||
@@ -491,9 +496,14 @@ static void
|
||||
idmap_update_entry(struct idmap_hashent *he, const char *name,
|
||||
size_t namelen, __u32 id)
|
||||
{
|
||||
+ char *str = kmalloc(namelen + 1, GFP_KERNEL);
|
||||
+ if (str == NULL)
|
||||
+ return;
|
||||
+ kfree(he->ih_name);
|
||||
he->ih_id = id;
|
||||
- memcpy(he->ih_name, name, namelen);
|
||||
- he->ih_name[namelen] = '\0';
|
||||
+ memcpy(str, name, namelen);
|
||||
+ str[namelen] = '\0';
|
||||
+ he->ih_name = str;
|
||||
he->ih_namelen = namelen;
|
||||
he->ih_expires = jiffies + nfs_idmap_cache_timeout;
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
From: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
|
||||
If the file wasn't opened for writing, then truncate and ftruncate
|
||||
need to report the appropriate errors.
|
||||
|
||||
Reported-by: Miklos Szeredi <miklos@szeredi.hu>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
---
|
||||
fs/nfs/dir.c | 4 ++--
|
||||
fs/nfs/nfs4proc.c | 15 ++++++++++++---
|
||||
2 files changed, 14 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
|
||||
index bb132a8..51a2686 100644
|
||||
--- a/fs/nfs/dir.c
|
||||
+++ b/fs/nfs/dir.c
|
||||
@@ -1429,7 +1429,7 @@ static struct dentry *nfs_atomic_lookup(struct inode *dir, struct dentry *dentry
|
||||
}
|
||||
|
||||
open_flags = nd->intent.open.flags;
|
||||
- attr.ia_valid = 0;
|
||||
+ attr.ia_valid = ATTR_OPEN;
|
||||
|
||||
ctx = create_nfs_open_context(dentry, open_flags);
|
||||
res = ERR_CAST(ctx);
|
||||
@@ -1536,7 +1536,7 @@ static int nfs_open_revalidate(struct dentry *dentry, struct nameidata *nd)
|
||||
if (IS_ERR(ctx))
|
||||
goto out;
|
||||
|
||||
- attr.ia_valid = 0;
|
||||
+ attr.ia_valid = ATTR_OPEN;
|
||||
if (openflags & O_TRUNC) {
|
||||
attr.ia_valid |= ATTR_SIZE;
|
||||
attr.ia_size = 0;
|
||||
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
|
||||
index c4c6b48..e2a2893 100644
|
||||
--- a/fs/nfs/nfs4proc.c
|
||||
+++ b/fs/nfs/nfs4proc.c
|
||||
@@ -1921,10 +1921,19 @@ static int nfs4_do_setattr(struct inode *inode, struct rpc_cred *cred,
|
||||
};
|
||||
int err;
|
||||
do {
|
||||
- err = nfs4_handle_exception(server,
|
||||
- _nfs4_do_setattr(inode, cred, fattr, sattr, state),
|
||||
- &exception);
|
||||
+ err = _nfs4_do_setattr(inode, cred, fattr, sattr, state);
|
||||
+ switch (err) {
|
||||
+ case -NFS4ERR_OPENMODE:
|
||||
+ if (state && !(state->state & FMODE_WRITE)) {
|
||||
+ err = -EBADF;
|
||||
+ if (sattr->ia_valid & ATTR_OPEN)
|
||||
+ err = -EACCES;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ }
|
||||
+ err = nfs4_handle_exception(server, err, &exception);
|
||||
} while (exception.retry);
|
||||
+out:
|
||||
return err;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.7.6
|
||||
|
||||
_______________________________________________
|
||||
kernel mailing list
|
||||
kernel@lists.fedoraproject.org
|
||||
https://admin.fedoraproject.org/mailman/listinfo/kernel
|
1
TODO
1
TODO
|
@ -1,5 +1,6 @@
|
|||
Config TODOs:
|
||||
* review & disable a bunch of the I2C, RTC, DVB, SOUND options.
|
||||
* Re-enable CONFIG_RELOCATABLE for 32bit builds with 3.4
|
||||
|
||||
|
||||
Spec file TODOs:
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
@@ -, +, @@
|
||||
VMX: x86: handle host TSC calibration failure
|
||||
|
||||
If the host TSC calibration fails, tsc_khz is zero (see tsc_init.c).
|
||||
Handle such case properly in KVM (instead of dividing by zero).
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=859282
|
||||
|
||||
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
Signed-off-by: Gleb Natapov <gleb@redhat.com>
|
||||
--- a/arch/x86/kvm/x86.c
|
||||
+++ a/arch/x86/kvm/x86.c
|
||||
@@ -1079,6 +1079,10 @@ static void kvm_set_tsc_khz(struct kvm_vcpu *vcpu, u32 this_tsc_khz)
|
||||
u32 thresh_lo, thresh_hi;
|
||||
int use_scaling = 0;
|
||||
|
||||
+ /* tsc_khz can be zero if TSC calibration fails */
|
||||
+ if (this_tsc_khz == 0)
|
||||
+ return;
|
||||
+
|
||||
/* Compute a scale to convert nanoseconds in TSC cycles */
|
||||
kvm_get_time_scale(this_tsc_khz, NSEC_PER_SEC / 1000,
|
||||
&vcpu->arch.virtual_tsc_shift,
|
||||
@@ -1156,20 +1160,23 @@ void kvm_write_tsc(struct kvm_vcpu *vcpu, struct msr_data *msr)
|
||||
ns = get_kernel_ns();
|
||||
elapsed = ns - kvm->arch.last_tsc_nsec;
|
||||
|
||||
- /* n.b - signed multiplication and division required */
|
||||
- usdiff = data - kvm->arch.last_tsc_write;
|
||||
+ if (vcpu->arch.virtual_tsc_khz) {
|
||||
+ /* n.b - signed multiplication and division required */
|
||||
+ usdiff = data - kvm->arch.last_tsc_write;
|
||||
#ifdef CONFIG_X86_64
|
||||
- usdiff = (usdiff * 1000) / vcpu->arch.virtual_tsc_khz;
|
||||
+ usdiff = (usdiff * 1000) / vcpu->arch.virtual_tsc_khz;
|
||||
#else
|
||||
- /* do_div() only does unsigned */
|
||||
- asm("idivl %2; xor %%edx, %%edx"
|
||||
- : "=A"(usdiff)
|
||||
- : "A"(usdiff * 1000), "rm"(vcpu->arch.virtual_tsc_khz));
|
||||
+ /* do_div() only does unsigned */
|
||||
+ asm("idivl %2; xor %%edx, %%edx"
|
||||
+ : "=A"(usdiff)
|
||||
+ : "A"(usdiff * 1000), "rm"(vcpu->arch.virtual_tsc_khz));
|
||||
#endif
|
||||
- do_div(elapsed, 1000);
|
||||
- usdiff -= elapsed;
|
||||
- if (usdiff < 0)
|
||||
- usdiff = -usdiff;
|
||||
+ do_div(elapsed, 1000);
|
||||
+ usdiff -= elapsed;
|
||||
+ if (usdiff < 0)
|
||||
+ usdiff = -usdiff;
|
||||
+ } else
|
||||
+ usdiff = USEC_PER_SEC; /* disable TSC match window below */
|
||||
|
||||
/*
|
||||
* Special case: TSC write with a small delta (1 second) of virtual
|
|
@ -0,0 +1,25 @@
|
|||
--- linux-2.6.34.noarch/include/acpi/acconfig.h~ 2010-07-01 14:49:03.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/include/acpi/acconfig.h 2010-07-01 14:49:17.000000000 -0400
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
/* Maximum number of While() loop iterations before forced abort */
|
||||
|
||||
-#define ACPI_MAX_LOOP_ITERATIONS 0xFFFF
|
||||
+#define ACPI_MAX_LOOP_ITERATIONS 0xFFFFFF
|
||||
|
||||
/* Maximum sleep allowed via Sleep() operator */
|
||||
|
||||
--- a/drivers/acpi/acpica/dscontrol.c
|
||||
+++ b/drivers/acpi/acpica/dscontrol.c
|
||||
@@ -212,6 +212,11 @@ acpi_ds_exec_end_control_op(struct acpi_walk_state * walk_state,
|
||||
* loop does not implement a timeout.
|
||||
*/
|
||||
control_state->control.loop_count++;
|
||||
+ if ((control_state->control.loop_count > 1) &&
|
||||
+ (control_state->control.loop_count % 0xffff == 0))
|
||||
+ printk("ACPI: While loop taking a really long time. loop_count=0x%x\n",
|
||||
+ control_state->control.loop_count);
|
||||
+
|
||||
if (control_state->control.loop_count >
|
||||
ACPI_MAX_LOOP_ITERATIONS) {
|
||||
status = AE_AML_INFINITE_LOOP;
|
|
@ -1,146 +0,0 @@
|
|||
From 9a056a5843ff83db987d6e18625f4a2ee64b5450 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <mjg@redhat.com>
|
||||
Date: Tue, 30 Aug 2011 10:07:24 -0400
|
||||
Subject: [PATCH] ACPI: Ensure thermal limits match CPU frequencies
|
||||
|
||||
The ACPI thermal management code supports slowing down a CPU when it's
|
||||
overheating. Right now that's done by choosing to run it at 100%, 75%, 50%
|
||||
or 25% of full speed. However, most CPUs do not allow an arbitrary
|
||||
frequency to be set and so will run at the first frequency below that value.
|
||||
This doesn't match the intent of the specification, which is to drop the
|
||||
frequency state by state until the temperature stabalises. Fix this up
|
||||
so it uses actual frequencies rather than percentages.
|
||||
|
||||
Reported by: Gene Snider <snider6982@comcast.net>
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
---
|
||||
drivers/acpi/Kconfig | 1 +
|
||||
drivers/acpi/processor_thermal.c | 45 +++++++++++++++++++++----------------
|
||||
2 files changed, 26 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
|
||||
index de0e3df..7d1bdb5 100644
|
||||
--- a/drivers/acpi/Kconfig
|
||||
+++ b/drivers/acpi/Kconfig
|
||||
@@ -185,6 +185,7 @@ config ACPI_PROCESSOR
|
||||
tristate "Processor"
|
||||
select THERMAL
|
||||
select CPU_IDLE
|
||||
+ select CPU_FREQ_TABLE
|
||||
default y
|
||||
help
|
||||
This driver installs ACPI as the idle handler for Linux and uses
|
||||
diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
|
||||
index 870550d..1c4eb60 100644
|
||||
--- a/drivers/acpi/processor_thermal.c
|
||||
+++ b/drivers/acpi/processor_thermal.c
|
||||
@@ -52,10 +52,8 @@ ACPI_MODULE_NAME("processor_thermal");
|
||||
* _any_ cpufreq driver and not only the acpi-cpufreq driver.
|
||||
*/
|
||||
|
||||
-#define CPUFREQ_THERMAL_MIN_STEP 0
|
||||
-#define CPUFREQ_THERMAL_MAX_STEP 3
|
||||
|
||||
-static DEFINE_PER_CPU(unsigned int, cpufreq_thermal_reduction_pctg);
|
||||
+static DEFINE_PER_CPU(unsigned int, cpufreq_thermal_limit_state);
|
||||
static unsigned int acpi_thermal_cpufreq_is_init = 0;
|
||||
|
||||
static int cpu_has_cpufreq(unsigned int cpu)
|
||||
@@ -70,19 +68,19 @@ static int acpi_thermal_cpufreq_notifier(struct notifier_block *nb,
|
||||
unsigned long event, void *data)
|
||||
{
|
||||
struct cpufreq_policy *policy = data;
|
||||
- unsigned long max_freq = 0;
|
||||
+ int state = per_cpu(cpufreq_thermal_limit_state, policy->cpu);
|
||||
+ struct cpufreq_frequency_table *table;
|
||||
|
||||
if (event != CPUFREQ_ADJUST)
|
||||
- goto out;
|
||||
+ return 0;
|
||||
+
|
||||
+ table = cpufreq_frequency_get_table(policy->cpu);
|
||||
|
||||
- max_freq = (
|
||||
- policy->cpuinfo.max_freq *
|
||||
- (100 - per_cpu(cpufreq_thermal_reduction_pctg, policy->cpu) * 20)
|
||||
- ) / 100;
|
||||
+ if (!table)
|
||||
+ return 0;
|
||||
|
||||
- cpufreq_verify_within_limits(policy, 0, max_freq);
|
||||
+ cpufreq_verify_within_limits(policy, 0, table[state].frequency);
|
||||
|
||||
- out:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -92,10 +90,21 @@ static struct notifier_block acpi_thermal_cpufreq_notifier_block = {
|
||||
|
||||
static int cpufreq_get_max_state(unsigned int cpu)
|
||||
{
|
||||
+ int count = 0;
|
||||
+ struct cpufreq_frequency_table *table;
|
||||
+
|
||||
if (!cpu_has_cpufreq(cpu))
|
||||
return 0;
|
||||
|
||||
- return CPUFREQ_THERMAL_MAX_STEP;
|
||||
+ table = cpufreq_frequency_get_table(cpu);
|
||||
+
|
||||
+ if (!table)
|
||||
+ return 0;
|
||||
+
|
||||
+ while (table[count].frequency != CPUFREQ_TABLE_END)
|
||||
+ count++;
|
||||
+
|
||||
+ return count;
|
||||
}
|
||||
|
||||
static int cpufreq_get_cur_state(unsigned int cpu)
|
||||
@@ -103,7 +112,7 @@ static int cpufreq_get_cur_state(unsigned int cpu)
|
||||
if (!cpu_has_cpufreq(cpu))
|
||||
return 0;
|
||||
|
||||
- return per_cpu(cpufreq_thermal_reduction_pctg, cpu);
|
||||
+ return per_cpu(cpufreq_thermal_limit_state, cpu);
|
||||
}
|
||||
|
||||
static int cpufreq_set_cur_state(unsigned int cpu, int state)
|
||||
@@ -111,7 +120,7 @@ static int cpufreq_set_cur_state(unsigned int cpu, int state)
|
||||
if (!cpu_has_cpufreq(cpu))
|
||||
return 0;
|
||||
|
||||
- per_cpu(cpufreq_thermal_reduction_pctg, cpu) = state;
|
||||
+ per_cpu(cpufreq_thermal_limit_state, cpu) = state;
|
||||
cpufreq_update_policy(cpu);
|
||||
return 0;
|
||||
}
|
||||
@@ -122,7 +131,7 @@ void acpi_thermal_cpufreq_init(void)
|
||||
|
||||
for (i = 0; i < nr_cpu_ids; i++)
|
||||
if (cpu_present(i))
|
||||
- per_cpu(cpufreq_thermal_reduction_pctg, i) = 0;
|
||||
+ per_cpu(cpufreq_thermal_limit_state, i) = 0;
|
||||
|
||||
i = cpufreq_register_notifier(&acpi_thermal_cpufreq_notifier_block,
|
||||
CPUFREQ_POLICY_NOTIFIER);
|
||||
@@ -170,15 +179,11 @@ int acpi_processor_get_limit_info(struct acpi_processor *pr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* thermal coolign device callbacks */
|
||||
+/* thermal cooling device callbacks */
|
||||
static int acpi_processor_max_state(struct acpi_processor *pr)
|
||||
{
|
||||
int max_state = 0;
|
||||
|
||||
- /*
|
||||
- * There exists four states according to
|
||||
- * cpufreq_thermal_reduction_ptg. 0, 1, 2, 3
|
||||
- */
|
||||
max_state += cpufreq_get_max_state(pr->id);
|
||||
if (pr->flags.throttling)
|
||||
max_state += (pr->throttling.state_count -1);
|
||||
--
|
||||
1.7.6
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
From a5cc68f3d63306d0d288f31edfc2ae6ef8ecd887 Mon Sep 17 00:00:00 2001
|
||||
From: Mathias Krause <minipli@googlemail.com>
|
||||
Date: Wed, 26 Jun 2013 21:52:30 +0000
|
||||
Subject: af_key: fix info leaks in notify messages
|
||||
|
||||
key_notify_sa_flush() and key_notify_policy_flush() miss to initialize
|
||||
the sadb_msg_reserved member of the broadcasted message and thereby
|
||||
leak 2 bytes of heap memory to listeners. Fix that.
|
||||
|
||||
Signed-off-by: Mathias Krause <minipli@googlemail.com>
|
||||
Cc: Steffen Klassert <steffen.klassert@secunet.com>
|
||||
Cc: "David S. Miller" <davem@davemloft.net>
|
||||
Cc: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
diff --git a/net/key/af_key.c b/net/key/af_key.c
|
||||
index c5fbd75..9da8620 100644
|
||||
--- a/net/key/af_key.c
|
||||
+++ b/net/key/af_key.c
|
||||
@@ -1710,6 +1710,7 @@ static int key_notify_sa_flush(const struct km_event *c)
|
||||
hdr->sadb_msg_version = PF_KEY_V2;
|
||||
hdr->sadb_msg_errno = (uint8_t) 0;
|
||||
hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t));
|
||||
+ hdr->sadb_msg_reserved = 0;
|
||||
|
||||
pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net);
|
||||
|
||||
@@ -2699,6 +2700,7 @@ static int key_notify_policy_flush(const struct km_event *c)
|
||||
hdr->sadb_msg_errno = (uint8_t) 0;
|
||||
hdr->sadb_msg_satype = SADB_SATYPE_UNSPEC;
|
||||
hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t));
|
||||
+ hdr->sadb_msg_reserved = 0;
|
||||
pfkey_broadcast(skb_out, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net);
|
||||
return 0;
|
||||
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -0,0 +1,384 @@
|
|||
commit 9964e2a108292685fbbf0980493c5e9776eac762
|
||||
Author: Seth Forshee <seth.forshee@canonical.com>
|
||||
Date: Fri Mar 16 14:41:21 2012 -0500
|
||||
|
||||
apple_bl: Add register/unregister functions
|
||||
|
||||
Add functions to allow other modules to enable or disable apple_bl. This
|
||||
will be used by the gmux driver to disable apple_bl when the gmux is
|
||||
present, as it is a better and more reliable option for brightness
|
||||
control.
|
||||
|
||||
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
|
||||
diff --git a/drivers/video/backlight/apple_bl.c b/drivers/video/backlight/apple_bl.c
|
||||
index be98d15..a523b25 100644
|
||||
--- a/drivers/video/backlight/apple_bl.c
|
||||
+++ b/drivers/video/backlight/apple_bl.c
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <linux/io.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/acpi.h>
|
||||
+#include <linux/atomic.h>
|
||||
|
||||
static struct backlight_device *apple_backlight_device;
|
||||
|
||||
@@ -221,14 +222,32 @@ static struct acpi_driver apple_bl_driver = {
|
||||
},
|
||||
};
|
||||
|
||||
+static atomic_t apple_bl_registered = ATOMIC_INIT(0);
|
||||
+
|
||||
+int apple_bl_register(void)
|
||||
+{
|
||||
+ if (atomic_xchg(&apple_bl_registered, 1) == 0)
|
||||
+ return acpi_bus_register_driver(&apple_bl_driver);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(apple_bl_register);
|
||||
+
|
||||
+void apple_bl_unregister(void)
|
||||
+{
|
||||
+ if (atomic_xchg(&apple_bl_registered, 0) == 1)
|
||||
+ acpi_bus_unregister_driver(&apple_bl_driver);
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(apple_bl_unregister);
|
||||
+
|
||||
static int __init apple_bl_init(void)
|
||||
{
|
||||
- return acpi_bus_register_driver(&apple_bl_driver);
|
||||
+ return apple_bl_register();
|
||||
}
|
||||
|
||||
static void __exit apple_bl_exit(void)
|
||||
{
|
||||
- acpi_bus_unregister_driver(&apple_bl_driver);
|
||||
+ apple_bl_unregister();
|
||||
}
|
||||
|
||||
module_init(apple_bl_init);
|
||||
diff --git a/include/linux/apple_bl.h b/include/linux/apple_bl.h
|
||||
new file mode 100644
|
||||
index 0000000..47bedc0
|
||||
--- /dev/null
|
||||
+++ b/include/linux/apple_bl.h
|
||||
@@ -0,0 +1,26 @@
|
||||
+/*
|
||||
+ * apple_bl exported symbols
|
||||
+ */
|
||||
+
|
||||
+#ifndef _LINUX_APPLE_BL_H
|
||||
+#define _LINUX_APPLE_BL_H
|
||||
+
|
||||
+#ifdef CONFIG_BACKLIGHT_APPLE
|
||||
+
|
||||
+extern int apple_bl_register(void);
|
||||
+extern void apple_bl_unregister(void);
|
||||
+
|
||||
+#else /* !CONFIG_BACKLIGHT_APPLE */
|
||||
+
|
||||
+static inline int apple_bl_register(void)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static inline void apple_bl_unregister(void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+#endif /* !CONFIG_BACKLIGHT_APPLE */
|
||||
+
|
||||
+#endif /* _LINUX_APPLE_BL_H */
|
||||
commit 89c093937dc8b07db4652251c83ec3710e5f15a2
|
||||
Author: Seth Forshee <seth.forshee@canonical.com>
|
||||
Date: Fri Mar 16 14:41:22 2012 -0500
|
||||
|
||||
platform/x86: Add driver for Apple gmux device
|
||||
|
||||
Apple laptops with hybrid graphics have a device named gmux that
|
||||
controls the muxing of the LVDS panel between the GPUs as well as screen
|
||||
brightness. This driver adds support for the gmux device. Only backlight
|
||||
control is supported initially.
|
||||
|
||||
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
Tested-by: Grant Likely <grant.likely@secretlab.ca>
|
||||
|
||||
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
|
||||
index ce10f03..c5b4bfe 100644
|
||||
--- a/drivers/platform/x86/Kconfig
|
||||
+++ b/drivers/platform/x86/Kconfig
|
||||
@@ -752,4 +752,14 @@ config SAMSUNG_Q10
|
||||
This driver provides support for backlight control on Samsung Q10
|
||||
and related laptops, including Dell Latitude X200.
|
||||
|
||||
+config APPLE_GMUX
|
||||
+ tristate "Apple Gmux Driver"
|
||||
+ depends on PNP
|
||||
+ select BACKLIGHT_CLASS_DEVICE
|
||||
+ ---help---
|
||||
+ This driver provides support for the gmux device found on many
|
||||
+ Apple laptops, which controls the display mux for the hybrid
|
||||
+ graphics as well as the backlight. Currently only backlight
|
||||
+ control is supported by the driver.
|
||||
+
|
||||
endif # X86_PLATFORM_DEVICES
|
||||
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
|
||||
index dcfee6b..bf7e4f9 100644
|
||||
--- a/drivers/platform/x86/Makefile
|
||||
+++ b/drivers/platform/x86/Makefile
|
||||
@@ -49,3 +49,4 @@ obj-$(CONFIG_MXM_WMI) += mxm-wmi.o
|
||||
obj-$(CONFIG_INTEL_MID_POWER_BUTTON) += intel_mid_powerbtn.o
|
||||
obj-$(CONFIG_INTEL_OAKTRAIL) += intel_oaktrail.o
|
||||
obj-$(CONFIG_SAMSUNG_Q10) += samsung-q10.o
|
||||
+obj-$(CONFIG_APPLE_GMUX) += apple-gmux.o
|
||||
diff --git a/drivers/platform/x86/apple-gmux.c b/drivers/platform/x86/apple-gmux.c
|
||||
new file mode 100644
|
||||
index 0000000..c81e31f
|
||||
--- /dev/null
|
||||
+++ b/drivers/platform/x86/apple-gmux.c
|
||||
@@ -0,0 +1,242 @@
|
||||
+/*
|
||||
+ * Gmux driver for Apple laptops
|
||||
+ *
|
||||
+ * Copyright (C) Canonical Ltd. <seth.forshee@canonical.com>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ */
|
||||
+
|
||||
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/backlight.h>
|
||||
+#include <linux/acpi.h>
|
||||
+#include <linux/pnp.h>
|
||||
+#include <linux/apple_bl.h>
|
||||
+#include <acpi/video.h>
|
||||
+
|
||||
+struct apple_gmux_data {
|
||||
+ unsigned long iostart;
|
||||
+ unsigned long iolen;
|
||||
+
|
||||
+ struct backlight_device *bdev;
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ * gmux port offsets. Many of these are not yet used, but may be in the
|
||||
+ * future, and it's useful to have them documented here anyhow.
|
||||
+ */
|
||||
+#define GMUX_PORT_VERSION_MAJOR 0x04
|
||||
+#define GMUX_PORT_VERSION_MINOR 0x05
|
||||
+#define GMUX_PORT_VERSION_RELEASE 0x06
|
||||
+#define GMUX_PORT_SWITCH_DISPLAY 0x10
|
||||
+#define GMUX_PORT_SWITCH_GET_DISPLAY 0x11
|
||||
+#define GMUX_PORT_INTERRUPT_ENABLE 0x14
|
||||
+#define GMUX_PORT_INTERRUPT_STATUS 0x16
|
||||
+#define GMUX_PORT_SWITCH_DDC 0x28
|
||||
+#define GMUX_PORT_SWITCH_EXTERNAL 0x40
|
||||
+#define GMUX_PORT_SWITCH_GET_EXTERNAL 0x41
|
||||
+#define GMUX_PORT_DISCRETE_POWER 0x50
|
||||
+#define GMUX_PORT_MAX_BRIGHTNESS 0x70
|
||||
+#define GMUX_PORT_BRIGHTNESS 0x74
|
||||
+
|
||||
+#define GMUX_MIN_IO_LEN (GMUX_PORT_BRIGHTNESS + 4)
|
||||
+
|
||||
+#define GMUX_INTERRUPT_ENABLE 0xff
|
||||
+#define GMUX_INTERRUPT_DISABLE 0x00
|
||||
+
|
||||
+#define GMUX_INTERRUPT_STATUS_ACTIVE 0
|
||||
+#define GMUX_INTERRUPT_STATUS_DISPLAY (1 << 0)
|
||||
+#define GMUX_INTERRUPT_STATUS_POWER (1 << 2)
|
||||
+#define GMUX_INTERRUPT_STATUS_HOTPLUG (1 << 3)
|
||||
+
|
||||
+#define GMUX_BRIGHTNESS_MASK 0x00ffffff
|
||||
+#define GMUX_MAX_BRIGHTNESS GMUX_BRIGHTNESS_MASK
|
||||
+
|
||||
+static inline u8 gmux_read8(struct apple_gmux_data *gmux_data, int port)
|
||||
+{
|
||||
+ return inb(gmux_data->iostart + port);
|
||||
+}
|
||||
+
|
||||
+static inline void gmux_write8(struct apple_gmux_data *gmux_data, int port,
|
||||
+ u8 val)
|
||||
+{
|
||||
+ outb(val, gmux_data->iostart + port);
|
||||
+}
|
||||
+
|
||||
+static inline u32 gmux_read32(struct apple_gmux_data *gmux_data, int port)
|
||||
+{
|
||||
+ return inl(gmux_data->iostart + port);
|
||||
+}
|
||||
+
|
||||
+static int gmux_get_brightness(struct backlight_device *bd)
|
||||
+{
|
||||
+ struct apple_gmux_data *gmux_data = bl_get_data(bd);
|
||||
+ return gmux_read32(gmux_data, GMUX_PORT_BRIGHTNESS) &
|
||||
+ GMUX_BRIGHTNESS_MASK;
|
||||
+}
|
||||
+
|
||||
+static int gmux_update_status(struct backlight_device *bd)
|
||||
+{
|
||||
+ struct apple_gmux_data *gmux_data = bl_get_data(bd);
|
||||
+ u32 brightness = bd->props.brightness;
|
||||
+
|
||||
+ /*
|
||||
+ * Older gmux versions require writing out lower bytes first then
|
||||
+ * setting the upper byte to 0 to flush the values. Newer versions
|
||||
+ * accept a single u32 write, but the old method also works, so we
|
||||
+ * just use the old method for all gmux versions.
|
||||
+ */
|
||||
+ gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS, brightness);
|
||||
+ gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 1, brightness >> 8);
|
||||
+ gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 2, brightness >> 16);
|
||||
+ gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 3, 0);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct backlight_ops gmux_bl_ops = {
|
||||
+ .get_brightness = gmux_get_brightness,
|
||||
+ .update_status = gmux_update_status,
|
||||
+};
|
||||
+
|
||||
+static int __devinit gmux_probe(struct pnp_dev *pnp,
|
||||
+ const struct pnp_device_id *id)
|
||||
+{
|
||||
+ struct apple_gmux_data *gmux_data;
|
||||
+ struct resource *res;
|
||||
+ struct backlight_properties props;
|
||||
+ struct backlight_device *bdev;
|
||||
+ u8 ver_major, ver_minor, ver_release;
|
||||
+ int ret = -ENXIO;
|
||||
+
|
||||
+ gmux_data = kzalloc(sizeof(*gmux_data), GFP_KERNEL);
|
||||
+ if (!gmux_data)
|
||||
+ return -ENOMEM;
|
||||
+ pnp_set_drvdata(pnp, gmux_data);
|
||||
+
|
||||
+ res = pnp_get_resource(pnp, IORESOURCE_IO, 0);
|
||||
+ if (!res) {
|
||||
+ pr_err("Failed to find gmux I/O resource\n");
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ gmux_data->iostart = res->start;
|
||||
+ gmux_data->iolen = res->end - res->start;
|
||||
+
|
||||
+ if (gmux_data->iolen < GMUX_MIN_IO_LEN) {
|
||||
+ pr_err("gmux I/O region too small (%lu < %u)\n",
|
||||
+ gmux_data->iolen, GMUX_MIN_IO_LEN);
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ if (!request_region(gmux_data->iostart, gmux_data->iolen,
|
||||
+ "Apple gmux")) {
|
||||
+ pr_err("gmux I/O already in use\n");
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * On some machines the gmux is in ACPI even thought the machine
|
||||
+ * doesn't really have a gmux. Check for invalid version information
|
||||
+ * to detect this.
|
||||
+ */
|
||||
+ ver_major = gmux_read8(gmux_data, GMUX_PORT_VERSION_MAJOR);
|
||||
+ ver_minor = gmux_read8(gmux_data, GMUX_PORT_VERSION_MINOR);
|
||||
+ ver_release = gmux_read8(gmux_data, GMUX_PORT_VERSION_RELEASE);
|
||||
+ if (ver_major == 0xff && ver_minor == 0xff && ver_release == 0xff) {
|
||||
+ pr_info("gmux device not present\n");
|
||||
+ ret = -ENODEV;
|
||||
+ goto err_release;
|
||||
+ }
|
||||
+
|
||||
+ pr_info("Found gmux version %d.%d.%d\n", ver_major, ver_minor,
|
||||
+ ver_release);
|
||||
+
|
||||
+ memset(&props, 0, sizeof(props));
|
||||
+ props.type = BACKLIGHT_PLATFORM;
|
||||
+ props.max_brightness = gmux_read32(gmux_data, GMUX_PORT_MAX_BRIGHTNESS);
|
||||
+
|
||||
+ /*
|
||||
+ * Currently it's assumed that the maximum brightness is less than
|
||||
+ * 2^24 for compatibility with old gmux versions. Cap the max
|
||||
+ * brightness at this value, but print a warning if the hardware
|
||||
+ * reports something higher so that it can be fixed.
|
||||
+ */
|
||||
+ if (WARN_ON(props.max_brightness > GMUX_MAX_BRIGHTNESS))
|
||||
+ props.max_brightness = GMUX_MAX_BRIGHTNESS;
|
||||
+
|
||||
+ bdev = backlight_device_register("gmux_backlight", &pnp->dev,
|
||||
+ gmux_data, &gmux_bl_ops, &props);
|
||||
+ if (IS_ERR(bdev)) {
|
||||
+ ret = PTR_ERR(bdev);
|
||||
+ goto err_release;
|
||||
+ }
|
||||
+
|
||||
+ gmux_data->bdev = bdev;
|
||||
+ bdev->props.brightness = gmux_get_brightness(bdev);
|
||||
+ backlight_update_status(bdev);
|
||||
+
|
||||
+ /*
|
||||
+ * The backlight situation on Macs is complicated. If the gmux is
|
||||
+ * present it's the best choice, because it always works for
|
||||
+ * backlight control and supports more levels than other options.
|
||||
+ * Disable the other backlight choices.
|
||||
+ */
|
||||
+ acpi_video_unregister();
|
||||
+ apple_bl_unregister();
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+err_release:
|
||||
+ release_region(gmux_data->iostart, gmux_data->iolen);
|
||||
+err_free:
|
||||
+ kfree(gmux_data);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void __devexit gmux_remove(struct pnp_dev *pnp)
|
||||
+{
|
||||
+ struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp);
|
||||
+
|
||||
+ backlight_device_unregister(gmux_data->bdev);
|
||||
+ release_region(gmux_data->iostart, gmux_data->iolen);
|
||||
+ kfree(gmux_data);
|
||||
+
|
||||
+ acpi_video_register();
|
||||
+ apple_bl_register();
|
||||
+}
|
||||
+
|
||||
+static const struct pnp_device_id gmux_device_ids[] = {
|
||||
+ {"APP000B", 0},
|
||||
+ {"", 0}
|
||||
+};
|
||||
+
|
||||
+static struct pnp_driver gmux_pnp_driver = {
|
||||
+ .name = "apple-gmux",
|
||||
+ .probe = gmux_probe,
|
||||
+ .remove = __devexit_p(gmux_remove),
|
||||
+ .id_table = gmux_device_ids,
|
||||
+};
|
||||
+
|
||||
+static int __init apple_gmux_init(void)
|
||||
+{
|
||||
+ return pnp_register_driver(&gmux_pnp_driver);
|
||||
+}
|
||||
+
|
||||
+static void __exit apple_gmux_exit(void)
|
||||
+{
|
||||
+ pnp_unregister_driver(&gmux_pnp_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(apple_gmux_init);
|
||||
+module_exit(apple_gmux_exit);
|
||||
+
|
||||
+MODULE_AUTHOR("Seth Forshee <seth.forshee@canonical.com>");
|
||||
+MODULE_DESCRIPTION("Apple Gmux Driver");
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_DEVICE_TABLE(pnp, gmux_device_ids);
|
|
@ -0,0 +1,10 @@
|
|||
--- linux-3.7.0-0.rc2.git1.2.fc19.x86_64/arch/arm/kernel/armksyms.c.orig 2012-10-01 00:47:46.000000000 +0100
|
||||
+++ linux-3.7.0-0.rc2.git1.2.fc19.x86_64/arch/arm/kernel/armksyms.c 2012-10-24 09:06:46.570452677 +0100
|
||||
@@ -50,6 +50,7 @@
|
||||
|
||||
/* platform dependent support */
|
||||
EXPORT_SYMBOL(arm_delay_ops);
|
||||
+EXPORT_SYMBOL(read_current_timer);
|
||||
|
||||
/* networking */
|
||||
EXPORT_SYMBOL(csum_partial);
|
|
@ -1,42 +0,0 @@
|
|||
diff -up linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c.fdt linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c
|
||||
--- linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c.fdt 2011-08-04 16:51:12.034188064 -0500
|
||||
+++ linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c 2011-08-04 22:13:52.801156923 -0500
|
||||
@@ -591,6 +591,11 @@ static void __init omap3_beagle_init(voi
|
||||
beagle_opp_init();
|
||||
}
|
||||
|
||||
+static const char *omap3_beagle_dt_match[] __initdata = {
|
||||
+ "ti,omap3-beagle",
|
||||
+ NULL
|
||||
+};
|
||||
+
|
||||
MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
|
||||
/* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
|
||||
.boot_params = 0x80000100,
|
||||
@@ -600,4 +605,5 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagl
|
||||
.init_irq = omap3_beagle_init_irq,
|
||||
.init_machine = omap3_beagle_init,
|
||||
.timer = &omap3_secure_timer,
|
||||
+ .dt_compat = omap3_beagle_dt_match,
|
||||
MACHINE_END
|
||||
diff -up linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c.fdt linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c
|
||||
--- linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c.fdt 2011-08-04 16:51:12.092169023 -0500
|
||||
+++ linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c 2011-08-04 22:15:29.200157437 -0500
|
||||
@@ -708,6 +708,11 @@ static void __init omap4_panda_map_io(vo
|
||||
omap44xx_map_common_io();
|
||||
}
|
||||
|
||||
+static const char *omap4_panda_match[] __initdata = {
|
||||
+ "ti,omap4-panda",
|
||||
+ NULL,
|
||||
+};
|
||||
+
|
||||
MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
|
||||
/* Maintainer: David Anders - Texas Instruments Inc */
|
||||
.boot_params = 0x80000100,
|
||||
@@ -717,4 +722,5 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda
|
||||
.init_irq = gic_init_irq,
|
||||
.init_machine = omap4_panda_init,
|
||||
.timer = &omap4_timer,
|
||||
+ .dt_compat = omap4_panda_match,
|
||||
MACHINE_END
|
|
@ -0,0 +1,190 @@
|
|||
From 54a419668b0f27b7982807fb2376d237e0a0ce05 Mon Sep 17 00:00:00 2001
|
||||
From: Alan Stern <stern@rowland.harvard.edu>
|
||||
Date: Tue, 12 Mar 2013 10:44:39 +0000
|
||||
Subject: USB: EHCI: split ehci-omap out to a separate driver
|
||||
|
||||
This patch (as1645) converts ehci-omap over to the new "ehci-hcd is a
|
||||
library" approach, so that it can coexist peacefully with other EHCI
|
||||
platform drivers and can make use of the private area allocated at
|
||||
the end of struct ehci_hcd.
|
||||
|
||||
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
|
||||
index c59a112..62f4e9a 100644
|
||||
--- a/drivers/usb/host/Kconfig
|
||||
+++ b/drivers/usb/host/Kconfig
|
||||
@@ -155,7 +155,7 @@ config USB_EHCI_MXC
|
||||
Variation of ARC USB block used in some Freescale chips.
|
||||
|
||||
config USB_EHCI_HCD_OMAP
|
||||
- bool "EHCI support for OMAP3 and later chips"
|
||||
+ tristate "EHCI support for OMAP3 and later chips"
|
||||
depends on USB_EHCI_HCD && ARCH_OMAP
|
||||
default y
|
||||
---help---
|
||||
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
|
||||
index 001fbff..56de410 100644
|
||||
--- a/drivers/usb/host/Makefile
|
||||
+++ b/drivers/usb/host/Makefile
|
||||
@@ -27,6 +27,7 @@ obj-$(CONFIG_USB_EHCI_HCD) += ehci-hcd.o
|
||||
obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o
|
||||
obj-$(CONFIG_USB_EHCI_HCD_PLATFORM) += ehci-platform.o
|
||||
obj-$(CONFIG_USB_EHCI_MXC) += ehci-mxc.o
|
||||
+obj-$(CONFIG_USB_EHCI_HCD_OMAP) += ehci-omap.o
|
||||
|
||||
obj-$(CONFIG_USB_OXU210HP_HCD) += oxu210hp-hcd.o
|
||||
obj-$(CONFIG_USB_ISP116X_HCD) += isp116x-hcd.o
|
||||
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
|
||||
index b416a3f..303b022 100644
|
||||
--- a/drivers/usb/host/ehci-hcd.c
|
||||
+++ b/drivers/usb/host/ehci-hcd.c
|
||||
@@ -1252,11 +1252,6 @@ MODULE_LICENSE ("GPL");
|
||||
#define PLATFORM_DRIVER ehci_hcd_sh_driver
|
||||
#endif
|
||||
|
||||
-#ifdef CONFIG_USB_EHCI_HCD_OMAP
|
||||
-#include "ehci-omap.c"
|
||||
-#define PLATFORM_DRIVER ehci_hcd_omap_driver
|
||||
-#endif
|
||||
-
|
||||
#ifdef CONFIG_PPC_PS3
|
||||
#include "ehci-ps3.c"
|
||||
#define PS3_SYSTEM_BUS_DRIVER ps3_ehci_driver
|
||||
@@ -1346,6 +1341,7 @@ MODULE_LICENSE ("GPL");
|
||||
!IS_ENABLED(CONFIG_USB_EHCI_HCD_PLATFORM) && \
|
||||
!IS_ENABLED(CONFIG_USB_CHIPIDEA_HOST) && \
|
||||
!IS_ENABLED(CONFIG_USB_EHCI_MXC) && \
|
||||
+ !IS_ENABLED(CONFIG_USB_EHCI_HCD_OMAP) && \
|
||||
!defined(PLATFORM_DRIVER) && \
|
||||
!defined(PS3_SYSTEM_BUS_DRIVER) && \
|
||||
!defined(OF_PLATFORM_DRIVER) && \
|
||||
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
|
||||
index 0555ee4..fa66757 100644
|
||||
--- a/drivers/usb/host/ehci-omap.c
|
||||
+++ b/drivers/usb/host/ehci-omap.c
|
||||
@@ -36,6 +36,9 @@
|
||||
* - convert to use hwmod and runtime PM
|
||||
*/
|
||||
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/io.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/usb/ulpi.h>
|
||||
@@ -43,6 +46,10 @@
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/clk.h>
|
||||
+#include <linux/usb.h>
|
||||
+#include <linux/usb/hcd.h>
|
||||
+
|
||||
+#include "ehci.h"
|
||||
|
||||
#include <linux/platform_data/usb-omap.h>
|
||||
|
||||
@@ -57,9 +64,11 @@
|
||||
#define EHCI_INSNREG05_ULPI_EXTREGADD_SHIFT 8
|
||||
#define EHCI_INSNREG05_ULPI_WRDATA_SHIFT 0
|
||||
|
||||
-/*-------------------------------------------------------------------------*/
|
||||
+#define DRIVER_DESC "OMAP-EHCI Host Controller driver"
|
||||
|
||||
-static const struct hc_driver ehci_omap_hc_driver;
|
||||
+static const char hcd_name[] = "ehci-omap";
|
||||
+
|
||||
+/*-------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
static inline void ehci_write(void __iomem *base, u32 reg, u32 val)
|
||||
@@ -166,6 +175,12 @@ static void disable_put_regulator(
|
||||
/* configure so an HC device and id are always provided */
|
||||
/* always called with process context; sleeping is OK */
|
||||
|
||||
+static struct hc_driver __read_mostly ehci_omap_hc_driver;
|
||||
+
|
||||
+static const struct ehci_driver_overrides ehci_omap_overrides __initdata = {
|
||||
+ .reset = omap_ehci_init,
|
||||
+};
|
||||
+
|
||||
/**
|
||||
* ehci_hcd_omap_probe - initialize TI-based HCDs
|
||||
*
|
||||
@@ -315,56 +330,33 @@ static struct platform_driver ehci_hcd_omap_driver = {
|
||||
/*.suspend = ehci_hcd_omap_suspend, */
|
||||
/*.resume = ehci_hcd_omap_resume, */
|
||||
.driver = {
|
||||
- .name = "ehci-omap",
|
||||
+ .name = hcd_name,
|
||||
}
|
||||
};
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
-static const struct hc_driver ehci_omap_hc_driver = {
|
||||
- .description = hcd_name,
|
||||
- .product_desc = "OMAP-EHCI Host Controller",
|
||||
- .hcd_priv_size = sizeof(struct ehci_hcd),
|
||||
-
|
||||
- /*
|
||||
- * generic hardware linkage
|
||||
- */
|
||||
- .irq = ehci_irq,
|
||||
- .flags = HCD_MEMORY | HCD_USB2,
|
||||
-
|
||||
- /*
|
||||
- * basic lifecycle operations
|
||||
- */
|
||||
- .reset = omap_ehci_init,
|
||||
- .start = ehci_run,
|
||||
- .stop = ehci_stop,
|
||||
- .shutdown = ehci_shutdown,
|
||||
-
|
||||
- /*
|
||||
- * managing i/o requests and associated device resources
|
||||
- */
|
||||
- .urb_enqueue = ehci_urb_enqueue,
|
||||
- .urb_dequeue = ehci_urb_dequeue,
|
||||
- .endpoint_disable = ehci_endpoint_disable,
|
||||
- .endpoint_reset = ehci_endpoint_reset,
|
||||
+static int __init ehci_omap_init(void)
|
||||
+{
|
||||
+ if (usb_disabled())
|
||||
+ return -ENODEV;
|
||||
|
||||
- /*
|
||||
- * scheduling support
|
||||
- */
|
||||
- .get_frame_number = ehci_get_frame,
|
||||
+ pr_info("%s: " DRIVER_DESC "\n", hcd_name);
|
||||
|
||||
- /*
|
||||
- * root hub support
|
||||
- */
|
||||
- .hub_status_data = ehci_hub_status_data,
|
||||
- .hub_control = ehci_hub_control,
|
||||
- .bus_suspend = ehci_bus_suspend,
|
||||
- .bus_resume = ehci_bus_resume,
|
||||
+ ehci_init_driver(&ehci_omap_hc_driver, &ehci_omap_overrides);
|
||||
+ return platform_driver_register(&ehci_hcd_omap_driver);
|
||||
+}
|
||||
+module_init(ehci_omap_init);
|
||||
|
||||
- .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
|
||||
-};
|
||||
+static void __exit ehci_omap_cleanup(void)
|
||||
+{
|
||||
+ platform_driver_unregister(&ehci_hcd_omap_driver);
|
||||
+}
|
||||
+module_exit(ehci_omap_cleanup);
|
||||
|
||||
MODULE_ALIAS("platform:ehci-omap");
|
||||
MODULE_AUTHOR("Texas Instruments, Inc.");
|
||||
MODULE_AUTHOR("Felipe Balbi <felipe.balbi@nokia.com>");
|
||||
|
||||
+MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
+MODULE_LICENSE("GPL");
|
||||
--
|
||||
cgit v0.9.1
|
|
@ -1,92 +0,0 @@
|
|||
From 0b608345e114681f66ca0a3cf9d9434728da62ce Mon Sep 17 00:00:00 2001
|
||||
From: Ken Cox <ken@coxcampers.net>
|
||||
Date: Thu, 23 Jun 2011 10:36:43 -0500
|
||||
Subject: [PATCH] Support reading mac address from device tree.
|
||||
|
||||
If CONFIG_OF is enabled, we will try to read the mac address from the device tree. This enables us the ability to have a "static" mac address on arm boards such as the pandaboard and beagleboard which generate random mac addresses.
|
||||
---
|
||||
drivers/net/usb/smsc75xx.c | 17 +++++++++++++++++
|
||||
drivers/net/usb/smsc95xx.c | 18 +++++++++++++++++-
|
||||
2 files changed, 34 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
|
||||
index 753ee6e..ac0a200 100644
|
||||
--- a/drivers/net/usb/smsc75xx.c
|
||||
+++ b/drivers/net/usb/smsc75xx.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/usb/usbnet.h>
|
||||
#include <linux/slab.h>
|
||||
+#include <linux/of_device.h>
|
||||
#include "smsc75xx.h"
|
||||
|
||||
#define SMSC_CHIPNAME "smsc75xx"
|
||||
@@ -658,6 +659,22 @@ static int smsc75xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
|
||||
|
||||
static void smsc75xx_init_mac_address(struct usbnet *dev)
|
||||
{
|
||||
+ void *address;
|
||||
+#ifdef CONFIG_OF
|
||||
+ struct device_node *np;
|
||||
+
|
||||
+ /* try the device tree */
|
||||
+ np = of_find_node_by_name(NULL, "smsc75xx");
|
||||
+ if (np) {
|
||||
+ address = of_get_property(np, "local-mac-address", NULL);
|
||||
+ if (address) {
|
||||
+ memcpy(dev->net->dev_addr, address, ETH_ALEN);
|
||||
+ netif_dbg(dev, ifup, dev->net, "MAC address read from device tree\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* try reading mac address from EEPROM */
|
||||
if (smsc75xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
|
||||
dev->net->dev_addr) == 0) {
|
||||
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
|
||||
index bc86f4b..c83942d 100644
|
||||
--- a/drivers/net/usb/smsc95xx.c
|
||||
+++ b/drivers/net/usb/smsc95xx.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/usb/usbnet.h>
|
||||
#include <linux/slab.h>
|
||||
+#include <linux/of_device.h>
|
||||
#include "smsc95xx.h"
|
||||
|
||||
#define SMSC_CHIPNAME "smsc95xx"
|
||||
@@ -639,6 +640,22 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
|
||||
|
||||
static void smsc95xx_init_mac_address(struct usbnet *dev)
|
||||
{
|
||||
+ void *address;
|
||||
+#ifdef CONFIG_OF
|
||||
+ struct device_node *np;
|
||||
+
|
||||
+ /* try the device tree */
|
||||
+ np = of_find_node_by_name(NULL, "smsc95xx");
|
||||
+ if (np) {
|
||||
+ address = of_get_property(np, "local-mac-address", NULL);
|
||||
+ if (address) {
|
||||
+ memcpy(dev->net->dev_addr, address, ETH_ALEN);
|
||||
+ netif_dbg(dev, ifup, dev->net, "MAC address read from device tree\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* try reading mac address from EEPROM */
|
||||
if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
|
||||
dev->net->dev_addr) == 0) {
|
||||
@@ -648,7 +665,6 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
|
||||
return;
|
||||
}
|
||||
}
|
||||
-
|
||||
/* no eeprom, or eeprom values are invalid. generate random MAC */
|
||||
random_ether_addr(dev->net->dev_addr);
|
||||
netif_dbg(dev, ifup, dev->net, "MAC address set to random_ether_addr\n");
|
||||
--
|
||||
1.7.2.3
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
diff --git a/drivers/clk/tegra/clk-periph.c b/drivers/clk/tegra/clk-periph.c
|
||||
index 788486e..2f4d0e3 100644
|
||||
--- a/drivers/clk/tegra/clk-periph.c
|
||||
+++ b/drivers/clk/tegra/clk-periph.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/err.h>
|
||||
+#include <linux/export.h>
|
||||
|
||||
#include "clk.h"
|
||||
|
||||
@@ -128,6 +129,7 @@ void tegra_periph_reset_deassert(struct clk *c)
|
||||
|
||||
tegra_periph_reset(gate, 0);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(tegra_periph_reset_deassert);
|
||||
|
||||
void tegra_periph_reset_assert(struct clk *c)
|
||||
{
|
||||
@@ -147,6 +149,7 @@ void tegra_periph_reset_assert(struct clk *c)
|
||||
|
||||
tegra_periph_reset(gate, 1);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(tegra_periph_reset_assert);
|
||||
|
||||
const struct clk_ops tegra_clk_periph_ops = {
|
||||
.get_parent = clk_periph_get_parent,
|
|
@ -0,0 +1,16 @@
|
|||
--- linux-3.3.4-3.fc17.x86_64_orig/drivers/usb/core/hub.c 2012-05-02 20:08:18.421685932 -0400
|
||||
+++ linux-3.3.4-3.fc17.x86_64/drivers/usb/core/hub.c 2012-05-02 20:30:36.565865425 -0400
|
||||
@@ -3484,6 +3484,13 @@ static void hub_events(void)
|
||||
(u16) hub->change_bits[0],
|
||||
(u16) hub->event_bits[0]);
|
||||
|
||||
+ /* Don't disconnect USB-SATA on TrimSlice */
|
||||
+ if (strcmp(dev_name(hdev->bus->controller), "tegra-ehci.0") == 0) {
|
||||
+ if ((hdev->state == 7) && (hub->change_bits[0] == 0) &&
|
||||
+ (hub->event_bits[0] == 0x2))
|
||||
+ hub->event_bits[0] = 0;
|
||||
+ }
|
||||
+
|
||||
/* Lock the device, then check to see if we were
|
||||
* disconnected while waiting for the lock to succeed. */
|
||||
usb_lock_device(hdev);
|
|
@ -0,0 +1,72 @@
|
|||
Memory allocated by vmalloc (including stack) can not be used for DMA,
|
||||
i.e. data pointer on usb_control_msg() should not point to stack memory.
|
||||
|
||||
Resolves:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=977558
|
||||
|
||||
Reported-and-tested-by: Andy Lawrence <dr.diesel@gmail.com>
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/bluetooth/ath3k.c | 38 +++++++++++++++++++++++++++++---------
|
||||
1 file changed, 29 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
|
||||
index 11f467c..81b636c 100644
|
||||
--- a/drivers/bluetooth/ath3k.c
|
||||
+++ b/drivers/bluetooth/ath3k.c
|
||||
@@ -193,24 +193,44 @@ error:
|
||||
|
||||
static int ath3k_get_state(struct usb_device *udev, unsigned char *state)
|
||||
{
|
||||
- int pipe = 0;
|
||||
+ int ret, pipe = 0;
|
||||
+ char *buf;
|
||||
+
|
||||
+ buf = kmalloc(1, GFP_KERNEL);
|
||||
+ if (!buf)
|
||||
+ return -ENOMEM;
|
||||
|
||||
pipe = usb_rcvctrlpipe(udev, 0);
|
||||
- return usb_control_msg(udev, pipe, ATH3K_GETSTATE,
|
||||
- USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
|
||||
- state, 0x01, USB_CTRL_SET_TIMEOUT);
|
||||
+ ret = usb_control_msg(udev, pipe, ATH3K_GETSTATE,
|
||||
+ USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
|
||||
+ buf, 1, USB_CTRL_SET_TIMEOUT);
|
||||
+
|
||||
+ *state = *buf;
|
||||
+ kfree(buf);
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static int ath3k_get_version(struct usb_device *udev,
|
||||
struct ath3k_version *version)
|
||||
{
|
||||
- int pipe = 0;
|
||||
+ int ret, pipe = 0;
|
||||
+ char *buf;
|
||||
+ const int size = sizeof(struct ath3k_version);
|
||||
+
|
||||
+ buf = kmalloc(size, GFP_KERNEL);
|
||||
+ if (!buf)
|
||||
+ return -ENOMEM;
|
||||
|
||||
pipe = usb_rcvctrlpipe(udev, 0);
|
||||
- return usb_control_msg(udev, pipe, ATH3K_GETVERSION,
|
||||
- USB_TYPE_VENDOR | USB_DIR_IN, 0, 0, version,
|
||||
- sizeof(struct ath3k_version),
|
||||
- USB_CTRL_SET_TIMEOUT);
|
||||
+ ret = usb_control_msg(udev, pipe, ATH3K_GETVERSION,
|
||||
+ USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
|
||||
+ buf, size, USB_CTRL_SET_TIMEOUT);
|
||||
+
|
||||
+ memcpy(version, buf, size);
|
||||
+ kfree(buf);
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static int ath3k_load_fwfile(struct usb_device *udev,
|
||||
--
|
||||
1.7.11.7
|
|
@ -0,0 +1,28 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/mac.c
|
||||
@@ -689,7 +689,7 @@ bool ath9k_hw_stopdmarecv(struct ath_hw
|
||||
{
|
||||
#define AH_RX_STOP_DMA_TIMEOUT 10000 /* usec */
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
- u32 mac_status, last_mac_status = 0;
|
||||
+ u32 mac_status = 0, last_mac_status = 0;
|
||||
int i;
|
||||
|
||||
/* Enable access to the DMA observation bus */
|
||||
@@ -719,6 +719,16 @@ bool ath9k_hw_stopdmarecv(struct ath_hw
|
||||
}
|
||||
|
||||
if (i == 0) {
|
||||
+ if (!AR_SREV_9300_20_OR_LATER(ah) &&
|
||||
+ (mac_status & 0x700) == 0) {
|
||||
+ /*
|
||||
+ * DMA is idle but the MAC is still stuck
|
||||
+ * processing events
|
||||
+ */
|
||||
+ *reset = true;
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
ath_err(common,
|
||||
"DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x DMADBG_7=0x%08x\n",
|
||||
AH_RX_STOP_DMA_TIMEOUT / 1000,
|
|
@ -0,0 +1,159 @@
|
|||
From 9f00b2e7cf241fa389733d41b615efdaa2cb0f5b Mon Sep 17 00:00:00 2001
|
||||
From: Cong Wang <amwang@redhat.com>
|
||||
Date: Tue, 21 May 2013 21:52:55 +0000
|
||||
Subject: bridge: only expire the mdb entry when query is received
|
||||
|
||||
Currently we arm the expire timer when the mdb entry is added,
|
||||
however, this causes problem when there is no querier sent
|
||||
out after that.
|
||||
|
||||
So we should only arm the timer when a corresponding query is
|
||||
received, as suggested by Herbert.
|
||||
|
||||
And he also mentioned "if there is no querier then group
|
||||
subscriptions shouldn't expire. There has to be at least one querier
|
||||
in the network for this thing to work. Otherwise it just degenerates
|
||||
into a non-snooping switch, which is OK."
|
||||
|
||||
Cc: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
Cc: Stephen Hemminger <stephen@networkplumber.org>
|
||||
Cc: "David S. Miller" <davem@davemloft.net>
|
||||
Cc: Adam Baker <linux@baker-net.org.uk>
|
||||
Signed-off-by: Cong Wang <amwang@redhat.com>
|
||||
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
(limited to 'net/bridge')
|
||||
|
||||
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
|
||||
index 2475147..40bda80 100644
|
||||
--- a/net/bridge/br_multicast.c
|
||||
+++ b/net/bridge/br_multicast.c
|
||||
@@ -617,8 +617,6 @@ rehash:
|
||||
|
||||
mp->br = br;
|
||||
mp->addr = *group;
|
||||
- setup_timer(&mp->timer, br_multicast_group_expired,
|
||||
- (unsigned long)mp);
|
||||
|
||||
hlist_add_head_rcu(&mp->hlist[mdb->ver], &mdb->mhash[hash]);
|
||||
mdb->size++;
|
||||
@@ -656,7 +654,6 @@ static int br_multicast_add_group(struct net_bridge *br,
|
||||
struct net_bridge_mdb_entry *mp;
|
||||
struct net_bridge_port_group *p;
|
||||
struct net_bridge_port_group __rcu **pp;
|
||||
- unsigned long now = jiffies;
|
||||
int err;
|
||||
|
||||
spin_lock(&br->multicast_lock);
|
||||
@@ -671,7 +668,6 @@ static int br_multicast_add_group(struct net_bridge *br,
|
||||
|
||||
if (!port) {
|
||||
mp->mglist = true;
|
||||
- mod_timer(&mp->timer, now + br->multicast_membership_interval);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -679,7 +675,7 @@ static int br_multicast_add_group(struct net_bridge *br,
|
||||
(p = mlock_dereference(*pp, br)) != NULL;
|
||||
pp = &p->next) {
|
||||
if (p->port == port)
|
||||
- goto found;
|
||||
+ goto out;
|
||||
if ((unsigned long)p->port < (unsigned long)port)
|
||||
break;
|
||||
}
|
||||
@@ -690,8 +686,6 @@ static int br_multicast_add_group(struct net_bridge *br,
|
||||
rcu_assign_pointer(*pp, p);
|
||||
br_mdb_notify(br->dev, port, group, RTM_NEWMDB);
|
||||
|
||||
-found:
|
||||
- mod_timer(&p->timer, now + br->multicast_membership_interval);
|
||||
out:
|
||||
err = 0;
|
||||
|
||||
@@ -1131,6 +1125,10 @@ static int br_ip4_multicast_query(struct net_bridge *br,
|
||||
if (!mp)
|
||||
goto out;
|
||||
|
||||
+ setup_timer(&mp->timer, br_multicast_group_expired, (unsigned long)mp);
|
||||
+ mod_timer(&mp->timer, now + br->multicast_membership_interval);
|
||||
+ mp->timer_armed = true;
|
||||
+
|
||||
max_delay *= br->multicast_last_member_count;
|
||||
|
||||
if (mp->mglist &&
|
||||
@@ -1205,6 +1203,10 @@ static int br_ip6_multicast_query(struct net_bridge *br,
|
||||
if (!mp)
|
||||
goto out;
|
||||
|
||||
+ setup_timer(&mp->timer, br_multicast_group_expired, (unsigned long)mp);
|
||||
+ mod_timer(&mp->timer, now + br->multicast_membership_interval);
|
||||
+ mp->timer_armed = true;
|
||||
+
|
||||
max_delay *= br->multicast_last_member_count;
|
||||
if (mp->mglist &&
|
||||
(timer_pending(&mp->timer) ?
|
||||
@@ -1263,7 +1265,7 @@ static void br_multicast_leave_group(struct net_bridge *br,
|
||||
call_rcu_bh(&p->rcu, br_multicast_free_pg);
|
||||
br_mdb_notify(br->dev, port, group, RTM_DELMDB);
|
||||
|
||||
- if (!mp->ports && !mp->mglist &&
|
||||
+ if (!mp->ports && !mp->mglist && mp->timer_armed &&
|
||||
netif_running(br->dev))
|
||||
mod_timer(&mp->timer, jiffies);
|
||||
}
|
||||
@@ -1275,30 +1277,12 @@ static void br_multicast_leave_group(struct net_bridge *br,
|
||||
br->multicast_last_member_interval;
|
||||
|
||||
if (!port) {
|
||||
- if (mp->mglist &&
|
||||
+ if (mp->mglist && mp->timer_armed &&
|
||||
(timer_pending(&mp->timer) ?
|
||||
time_after(mp->timer.expires, time) :
|
||||
try_to_del_timer_sync(&mp->timer) >= 0)) {
|
||||
mod_timer(&mp->timer, time);
|
||||
}
|
||||
-
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
- for (p = mlock_dereference(mp->ports, br);
|
||||
- p != NULL;
|
||||
- p = mlock_dereference(p->next, br)) {
|
||||
- if (p->port != port)
|
||||
- continue;
|
||||
-
|
||||
- if (!hlist_unhashed(&p->mglist) &&
|
||||
- (timer_pending(&p->timer) ?
|
||||
- time_after(p->timer.expires, time) :
|
||||
- try_to_del_timer_sync(&p->timer) >= 0)) {
|
||||
- mod_timer(&p->timer, time);
|
||||
- }
|
||||
-
|
||||
- break;
|
||||
}
|
||||
|
||||
out:
|
||||
@@ -1674,6 +1658,7 @@ void br_multicast_stop(struct net_bridge *br)
|
||||
hlist_for_each_entry_safe(mp, n, &mdb->mhash[i],
|
||||
hlist[ver]) {
|
||||
del_timer(&mp->timer);
|
||||
+ mp->timer_armed = false;
|
||||
call_rcu_bh(&mp->rcu, br_multicast_free_group);
|
||||
}
|
||||
}
|
||||
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
|
||||
index e260710..1b0ac95 100644
|
||||
--- a/net/bridge/br_private.h
|
||||
+++ b/net/bridge/br_private.h
|
||||
@@ -112,6 +112,7 @@ struct net_bridge_mdb_entry
|
||||
struct timer_list timer;
|
||||
struct br_ip addr;
|
||||
bool mglist;
|
||||
+ bool timer_armed;
|
||||
};
|
||||
|
||||
struct net_bridge_mdb_htable
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -0,0 +1,57 @@
|
|||
From 6b7df111ece130fa979a0c4f58e53674c1e47d3e Mon Sep 17 00:00:00 2001
|
||||
From: Cong Wang <amwang@redhat.com>
|
||||
Date: Tue, 21 May 2013 21:52:56 +0000
|
||||
Subject: bridge: send query as soon as leave is received
|
||||
|
||||
Continue sending queries when leave is received if the user marks
|
||||
it as a querier.
|
||||
|
||||
Cc: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
Cc: Stephen Hemminger <stephen@networkplumber.org>
|
||||
Cc: "David S. Miller" <davem@davemloft.net>
|
||||
Cc: Adam Baker <linux@baker-net.org.uk>
|
||||
Signed-off-by: Cong Wang <amwang@redhat.com>
|
||||
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
(limited to 'net/bridge')
|
||||
|
||||
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
|
||||
index 40bda80..37a4676 100644
|
||||
--- a/net/bridge/br_multicast.c
|
||||
+++ b/net/bridge/br_multicast.c
|
||||
@@ -1250,6 +1250,32 @@ static void br_multicast_leave_group(struct net_bridge *br,
|
||||
if (!mp)
|
||||
goto out;
|
||||
|
||||
+ if (br->multicast_querier &&
|
||||
+ !timer_pending(&br->multicast_querier_timer)) {
|
||||
+ __br_multicast_send_query(br, port, &mp->addr);
|
||||
+
|
||||
+ time = jiffies + br->multicast_last_member_count *
|
||||
+ br->multicast_last_member_interval;
|
||||
+ mod_timer(port ? &port->multicast_query_timer :
|
||||
+ &br->multicast_query_timer, time);
|
||||
+
|
||||
+ for (p = mlock_dereference(mp->ports, br);
|
||||
+ p != NULL;
|
||||
+ p = mlock_dereference(p->next, br)) {
|
||||
+ if (p->port != port)
|
||||
+ continue;
|
||||
+
|
||||
+ if (!hlist_unhashed(&p->mglist) &&
|
||||
+ (timer_pending(&p->timer) ?
|
||||
+ time_after(p->timer.expires, time) :
|
||||
+ try_to_del_timer_sync(&p->timer) >= 0)) {
|
||||
+ mod_timer(&p->timer, time);
|
||||
+ }
|
||||
+
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (port && (port->flags & BR_MULTICAST_FAST_LEAVE)) {
|
||||
struct net_bridge_port_group __rcu **pp;
|
||||
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
|
||||
index d6448e3..aadb596 100644
|
||||
--- a/net/bridge/br_multicast.c
|
||||
+++ b/net/bridge/br_multicast.c
|
||||
@@ -269,7 +269,7 @@ static void br_multicast_del_pg(struct net_bridge *br,
|
||||
del_timer(&p->timer);
|
||||
call_rcu_bh(&p->rcu, br_multicast_free_pg);
|
||||
|
||||
- if (!mp->ports && !mp->mglist &&
|
||||
+ if (!mp->ports && !mp->mglist && mp->timer_armed &&
|
||||
netif_running(br->dev))
|
||||
mod_timer(&mp->timer, jiffies);
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
diff -up compat-wireless-2012-02-05/config.mk.orig compat-wireless-2012-02-05/config.mk
|
||||
--- compat-wireless-2012-02-05/config.mk.orig 2012-02-05 16:10:31.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/config.mk 2012-02-06 11:43:46.142222712 -0500
|
||||
@@ -14,6 +14,9 @@ else
|
||||
include $(KLIB_BUILD)/.config
|
||||
endif
|
||||
|
||||
+# Enable SSB module (needs to be visible in compat_autoconf.h)
|
||||
+CONFIG_SSB=m
|
||||
+
|
||||
ifneq ($(wildcard $(KLIB_BUILD)/Makefile),)
|
||||
|
||||
COMPAT_LATEST_VERSION = 3
|
||||
diff -up compat-wireless-2012-02-05/drivers/misc/eeprom/Makefile.orig compat-wireless-2012-02-05/drivers/misc/eeprom/Makefile
|
||||
--- compat-wireless-2012-02-05/drivers/misc/eeprom/Makefile.orig 2012-02-05 16:10:39.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/misc/eeprom/Makefile 2012-02-06 11:43:46.143222699 -0500
|
||||
@@ -1 +1 @@
|
||||
-obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o
|
||||
+#obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/ethernet/atheros/Makefile.orig compat-wireless-2012-02-05/drivers/net/ethernet/atheros/Makefile
|
||||
--- compat-wireless-2012-02-05/drivers/net/ethernet/atheros/Makefile.orig 2012-02-05 16:10:37.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/ethernet/atheros/Makefile 2012-02-06 11:43:46.143222699 -0500
|
||||
@@ -2,7 +2,7 @@
|
||||
# Makefile for the Atheros network device drivers.
|
||||
#
|
||||
|
||||
-obj-$(CONFIG_ATL1) += atlx/
|
||||
-obj-$(CONFIG_ATL2) += atlx/
|
||||
-obj-$(CONFIG_ATL1E) += atl1e/
|
||||
-obj-$(CONFIG_ATL1C) += atl1c/
|
||||
+#obj-$(CONFIG_ATL1) += atlx/
|
||||
+#obj-$(CONFIG_ATL2) += atlx/
|
||||
+#obj-$(CONFIG_ATL1E) += atl1e/
|
||||
+#obj-$(CONFIG_ATL1C) += atl1c/
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/usb/Makefile.orig compat-wireless-2012-02-05/drivers/net/usb/Makefile
|
||||
--- compat-wireless-2012-02-05/drivers/net/usb/Makefile.orig 2012-02-05 16:10:39.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/usb/Makefile 2012-02-06 11:45:23.531005184 -0500
|
||||
@@ -2,6 +2,6 @@
|
||||
# Makefile for USB Network drivers
|
||||
#
|
||||
|
||||
-obj-$(CONFIG_USB_NET_COMPAT_CDCETHER) += cdc_ether.o
|
||||
-obj-$(CONFIG_USB_NET_COMPAT_RNDIS_HOST) += rndis_host.o
|
||||
-obj-$(CONFIG_USB_COMPAT_USBNET) += usbnet.o
|
||||
+#obj-$(CONFIG_USB_NET_COMPAT_CDCETHER) += cdc_ether.o
|
||||
+#obj-$(CONFIG_USB_NET_COMPAT_RNDIS_HOST) += rndis_host.o
|
||||
+#obj-$(CONFIG_USB_COMPAT_USBNET) += usbnet.o
|
||||
diff -up compat-wireless-2012-02-05/Makefile.orig compat-wireless-2012-02-05/Makefile
|
||||
--- compat-wireless-2012-02-05/Makefile.orig 2012-02-05 16:10:31.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/Makefile 2012-02-06 11:43:46.145222675 -0500
|
||||
@@ -10,8 +10,8 @@ export KLIB_BUILD ?= $(KLIB)/build
|
||||
MODPROBE := /sbin/modprobe
|
||||
|
||||
ifneq ($(wildcard $(MODPROBE)),)
|
||||
-MADWIFI=$(shell $(MODPROBE) -l ath_pci)
|
||||
-OLD_IWL=$(shell $(MODPROBE) -l iwl4965)
|
||||
+MADWIFI=""
|
||||
+OLD_IWL=""
|
||||
endif
|
||||
|
||||
DESTDIR?=
|
||||
@@ -44,8 +44,8 @@ endif
|
||||
|
||||
endif
|
||||
|
||||
-obj-$(CONFIG_COMPAT_BLUETOOTH) += net/bluetooth/
|
||||
-obj-$(CONFIG_COMPAT_BLUETOOTH_MODULES) += drivers/bluetooth/
|
||||
+#obj-$(CONFIG_COMPAT_BLUETOOTH) += net/bluetooth/
|
||||
+#obj-$(CONFIG_COMPAT_BLUETOOTH_MODULES) += drivers/bluetooth/
|
||||
|
||||
else
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up compat-wireless-2011-12-01/Makefile.orig compat-wireless-2011-12-01/Makefile
|
||||
--- compat-wireless-2011-12-01/Makefile.orig 2011-12-14 09:10:01.377297637 -0500
|
||||
+++ compat-wireless-2011-12-01/Makefile 2011-12-14 09:47:36.834100534 -0500
|
||||
@@ -68,7 +68,7 @@ all: modules
|
||||
|
||||
modules: $(CREL_CHECK)
|
||||
@./scripts/check_config.sh
|
||||
- $(MAKE) -C $(KLIB_BUILD) M=$(PWD) modules
|
||||
+ $(MAKE) -C $(KLIB_BUILD) M=$(PWD) INTEGRATED_BUILD=1 modules
|
||||
@touch $@
|
||||
|
||||
bt: $(CREL_CHECK)
|
|
@ -1,611 +0,0 @@
|
|||
diff -up compat-wireless-2012-02-05/compat/crc8.c.orig compat-wireless-2012-02-05/compat/crc8.c
|
||||
--- compat-wireless-2012-02-05/compat/crc8.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/compat/crc8.c 2012-02-06 11:53:01.617278318 -0500
|
||||
@@ -14,6 +14,7 @@
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/bcma/bcma_private.h.orig compat-wireless-2012-02-05/drivers/bcma/bcma_private.h
|
||||
--- compat-wireless-2012-02-05/drivers/bcma/bcma_private.h.orig 2012-02-05 16:10:33.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/bcma/bcma_private.h 2012-02-06 11:53:01.618278306 -0500
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef LINUX_BCMA_PRIVATE_H_
|
||||
#define LINUX_BCMA_PRIVATE_H_
|
||||
|
||||
+#undef pr_fmt
|
||||
#ifndef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
#endif
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/ethernet/broadcom/b44.c.orig compat-wireless-2012-02-05/drivers/net/ethernet/broadcom/b44.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/ethernet/broadcom/b44.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/ethernet/broadcom/b44.c 2012-02-06 11:53:01.620278282 -0500
|
||||
@@ -10,6 +10,7 @@
|
||||
* Distribute under GPL.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c.orig compat-wireless-2012-02-05/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c.orig 2012-02-05 16:10:33.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c 2012-02-06 11:53:01.621278269 -0500
|
||||
@@ -16,6 +16,7 @@
|
||||
* File contents: support functions for PCI/PCIe
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/delay.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/brcm80211/brcmsmac/dma.c.orig compat-wireless-2012-02-05/drivers/net/wireless/brcm80211/brcmsmac/dma.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/brcm80211/brcmsmac/dma.c.orig 2012-02-05 16:10:33.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/brcm80211/brcmsmac/dma.c 2012-02-06 11:53:01.622278256 -0500
|
||||
@@ -14,6 +14,7 @@
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/slab.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/iwlegacy/3945-mac.c.orig compat-wireless-2012-02-05/drivers/net/wireless/iwlegacy/3945-mac.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/iwlegacy/3945-mac.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/iwlegacy/3945-mac.c 2012-02-06 11:53:01.625278218 -0500
|
||||
@@ -27,6 +27,7 @@
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/iwlegacy/4965-mac.c.orig compat-wireless-2012-02-05/drivers/net/wireless/iwlegacy/4965-mac.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/iwlegacy/4965-mac.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/iwlegacy/4965-mac.c 2012-02-06 11:53:01.630278156 -0500
|
||||
@@ -27,6 +27,7 @@
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas/cfg.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas/cfg.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas/cfg.c.orig 2012-02-05 16:10:35.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas/cfg.c 2012-02-06 11:53:01.630278156 -0500
|
||||
@@ -6,6 +6,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/hardirq.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_cs.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_cs.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_cs.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_cs.c 2012-02-06 11:53:01.631278143 -0500
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_sdio.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_sdio.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_sdio.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_sdio.c 2012-02-06 11:53:01.631278143 -0500
|
||||
@@ -26,6 +26,7 @@
|
||||
* if_sdio_card_to_host() to pad the data.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_spi.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_spi.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_spi.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_spi.c 2012-02-06 11:53:01.631278143 -0500
|
||||
@@ -17,6 +17,7 @@
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/hardirq.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_usb.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_usb.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_usb.c.orig 2012-02-05 16:10:35.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas/if_usb.c 2012-02-06 11:53:01.632278130 -0500
|
||||
@@ -2,6 +2,7 @@
|
||||
* This file contains functions used in USB interface module.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/delay.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas/main.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas/main.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas/main.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas/main.c 2012-02-06 11:53:01.632278130 -0500
|
||||
@@ -4,6 +4,7 @@
|
||||
* thread etc..
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas/mesh.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas/mesh.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas/mesh.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas/mesh.c 2012-02-06 11:53:01.633278118 -0500
|
||||
@@ -1,3 +1,4 @@
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/delay.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas/rx.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas/rx.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas/rx.c.orig 2012-02-05 16:10:35.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas/rx.c 2012-02-06 11:53:01.633278118 -0500
|
||||
@@ -2,6 +2,7 @@
|
||||
* This file contains the handling of RX in wlan driver.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/etherdevice.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/cmd.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/cmd.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/cmd.c.orig 2012-02-05 16:10:36.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/cmd.c 2012-02-06 11:53:01.633278118 -0500
|
||||
@@ -7,6 +7,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*/
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/hardirq.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/if_usb.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/if_usb.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/if_usb.c.orig 2012-02-05 16:10:36.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/if_usb.c 2012-02-06 11:53:01.634278106 -0500
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#define DRV_NAME "lbtf_usb"
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "libertas_tf.h"
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/main.c.orig compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/main.c
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/main.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/libertas_tf/main.c 2012-02-06 11:53:01.634278106 -0500
|
||||
@@ -7,6 +7,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*/
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/hardirq.h>
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/base.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/base.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/cam.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/cam.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192de/sw.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192se/hw.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192se/hw.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192se/phy.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192se/phy.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192se/rf.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192se/rf.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192se/sw.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/usb.c.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/usb.c
|
||||
diff -up compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/wifi.h.orig compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/wifi.h
|
||||
--- compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/wifi.h.orig 2012-02-06 11:53:38.798813484 -0500
|
||||
+++ compat-wireless-2012-02-05/drivers/net/wireless/rtlwifi/wifi.h 2012-02-06 11:53:47.489704835 -0500
|
||||
@@ -30,6 +30,7 @@
|
||||
#ifndef __RTL_WIFI_H__
|
||||
#define __RTL_WIFI_H__
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/sched.h>
|
||||
diff -up compat-wireless-2012-02-05/net/wireless/core.c.orig compat-wireless-2012-02-05/net/wireless/core.c
|
||||
--- compat-wireless-2012-02-05/net/wireless/core.c.orig 2012-02-05 16:10:38.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/net/wireless/core.c 2012-02-06 11:53:01.640278030 -0500
|
||||
@@ -4,6 +4,7 @@
|
||||
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/if.h>
|
||||
diff -up compat-wireless-2012-02-05/net/wireless/lib80211.c.orig compat-wireless-2012-02-05/net/wireless/lib80211.c
|
||||
--- compat-wireless-2012-02-05/net/wireless/lib80211.c.orig 2012-02-05 16:10:31.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/net/wireless/lib80211.c 2012-02-06 11:53:01.640278030 -0500
|
||||
@@ -13,6 +13,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
diff -up compat-wireless-2012-02-05/net/wireless/lib80211_crypt_tkip.c.orig compat-wireless-2012-02-05/net/wireless/lib80211_crypt_tkip.c
|
||||
--- compat-wireless-2012-02-05/net/wireless/lib80211_crypt_tkip.c.orig 2012-02-05 16:10:31.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/net/wireless/lib80211_crypt_tkip.c 2012-02-06 11:53:01.641278018 -0500
|
||||
@@ -10,6 +10,7 @@
|
||||
* more details.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/err.h>
|
||||
diff -up compat-wireless-2012-02-05/net/wireless/reg.c.orig compat-wireless-2012-02-05/net/wireless/reg.c
|
||||
--- compat-wireless-2012-02-05/net/wireless/reg.c.orig 2012-02-05 16:10:31.000000000 -0500
|
||||
+++ compat-wireless-2012-02-05/net/wireless/reg.c 2012-02-06 11:53:01.641278018 -0500
|
||||
@@ -42,6 +42,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
diff -up compat-wireless-2012-02-05/patches/98-pr_fmt.patch.orig compat-wireless-2012-02-05/patches/98-pr_fmt.patch
|
||||
--- compat-wireless-2012-02-05/patches/98-pr_fmt.patch.orig 2012-02-06 11:53:01.641278018 -0500
|
||||
+++ compat-wireless-2012-02-05/patches/98-pr_fmt.patch 2012-02-06 11:53:01.641278018 -0500
|
||||
@@ -0,0 +1,346 @@
|
||||
+The way the compat-* header files are included causes the default
|
||||
+pr_fmt definition from <linux/kernel.h> to be evaluated for every file.
|
||||
+Files that define pr_fmt then generate a lot of build SPAM about
|
||||
+pr_fmt being redefined.
|
||||
+
|
||||
+Eliminate the build noise by preemptively undefining pr_fmt in those
|
||||
+files that define it.
|
||||
+
|
||||
+diff -up compat-wireless-3.2-rc1-1/compat/crc8.c.pr_fmt compat-wireless-3.2-rc1-1/compat/crc8.c
|
||||
+--- compat-wireless-3.2-rc1-1/compat/crc8.c.pr_fmt 2011-11-18 15:08:04.497812086 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/compat/crc8.c 2011-11-18 15:20:09.450522691 -0500
|
||||
+@@ -14,6 +14,7 @@
|
||||
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/module.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/bcma/bcma_private.h.pr_fmt compat-wireless-3.2-rc1-1/drivers/bcma/bcma_private.h
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/bcma/bcma_private.h.pr_fmt 2011-11-18 15:08:04.522323679 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/bcma/bcma_private.h 2011-11-18 15:20:09.451522757 -0500
|
||||
+@@ -1,6 +1,7 @@
|
||||
+ #ifndef LINUX_BCMA_PRIVATE_H_
|
||||
+ #define LINUX_BCMA_PRIVATE_H_
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #ifndef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+ #endif
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/ethernet/broadcom/b44.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/ethernet/broadcom/b44.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/ethernet/broadcom/b44.c.pr_fmt 2011-11-18 15:08:04.529757401 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/ethernet/broadcom/b44.c 2011-11-18 15:20:09.453522618 -0500
|
||||
+@@ -10,6 +10,7 @@
|
||||
+ * Distribute under GPL.
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/kernel.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/iwlegacy/iwl3945-base.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/iwlegacy/iwl3945-base.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/iwlegacy/iwl3945-base.c.pr_fmt 2011-11-18 15:08:04.531811389 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/iwlegacy/iwl3945-base.c 2011-11-18 15:20:09.455522411 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/kernel.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/iwlegacy/iwl4965-base.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/iwlegacy/iwl4965-base.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/iwlegacy/iwl4965-base.c.pr_fmt 2011-11-18 15:08:04.533811528 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/iwlegacy/iwl4965-base.c 2011-11-18 15:20:09.456520247 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/kernel.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/cfg.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/cfg.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/cfg.c.pr_fmt 2011-11-18 15:08:04.534811319 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/cfg.c 2011-11-18 15:20:09.456520247 -0500
|
||||
+@@ -6,6 +6,7 @@
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/hardirq.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_cs.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_cs.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_cs.c.pr_fmt 2011-11-18 15:08:04.534811319 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_cs.c 2011-11-18 15:20:09.457520945 -0500
|
||||
+@@ -21,6 +21,7 @@
|
||||
+
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/module.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_sdio.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_sdio.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_sdio.c.pr_fmt 2011-11-18 15:08:04.535829198 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_sdio.c 2011-11-18 15:20:09.457520945 -0500
|
||||
+@@ -26,6 +26,7 @@
|
||||
+ * if_sdio_card_to_host() to pad the data.
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/kernel.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_spi.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_spi.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_spi.c.pr_fmt 2011-11-18 15:08:04.536811878 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_spi.c 2011-11-18 15:20:09.457520945 -0500
|
||||
+@@ -17,6 +17,7 @@
|
||||
+ * (at your option) any later version.
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/hardirq.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_usb.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_usb.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_usb.c.pr_fmt 2011-11-18 15:08:04.536811878 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/if_usb.c 2011-11-18 15:20:09.458521084 -0500
|
||||
+@@ -2,6 +2,7 @@
|
||||
+ * This file contains functions used in USB interface module.
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/delay.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/main.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/main.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/main.c.pr_fmt 2011-11-18 15:08:04.537812436 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/main.c 2011-11-18 15:20:09.458521084 -0500
|
||||
+@@ -4,6 +4,7 @@
|
||||
+ * thread etc..
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/module.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/mesh.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/mesh.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/mesh.c.pr_fmt 2011-11-18 15:08:04.537812436 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/mesh.c 2011-11-18 15:20:09.458521084 -0500
|
||||
+@@ -1,3 +1,4 @@
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/delay.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/rx.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/rx.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/rx.c.pr_fmt 2011-11-18 15:08:04.538812017 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas/rx.c 2011-11-18 15:20:09.459520455 -0500
|
||||
+@@ -2,6 +2,7 @@
|
||||
+ * This file contains the handling of RX in wlan driver.
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/etherdevice.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/cmd.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/cmd.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/cmd.c.pr_fmt 2011-11-18 15:08:04.544819700 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/cmd.c 2011-11-18 15:20:09.459520455 -0500
|
||||
+@@ -7,6 +7,7 @@
|
||||
+ * the Free Software Foundation; either version 2 of the License, or (at
|
||||
+ * your option) any later version.
|
||||
+ */
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/hardirq.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/if_usb.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/if_usb.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/if_usb.c.pr_fmt 2011-11-18 15:08:04.545747064 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/if_usb.c 2011-11-18 15:20:09.459520455 -0500
|
||||
+@@ -9,6 +9,7 @@
|
||||
+ */
|
||||
+ #define DRV_NAME "lbtf_usb"
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include "libertas_tf.h"
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/main.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/main.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/main.c.pr_fmt 2011-11-18 15:08:04.545747064 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/libertas_tf/main.c 2011-11-18 15:20:09.459520455 -0500
|
||||
+@@ -7,6 +7,7 @@
|
||||
+ * the Free Software Foundation; either version 2 of the License, or (at
|
||||
+ * your option) any later version.
|
||||
+ */
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/hardirq.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/base.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/base.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/base.c.pr_fmt 2011-11-18 15:08:04.565011903 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/base.c 2011-11-18 15:20:55.315644844 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/ip.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/cam.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/cam.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/cam.c.pr_fmt 2011-11-18 15:08:04.565812364 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/cam.c 2011-11-18 15:20:55.322652946 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/export.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c.pr_fmt 2011-11-18 15:08:04.565812364 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c 2011-11-18 15:20:55.334647078 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/firmware.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c.pr_fmt 2011-11-18 15:08:04.567811877 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c 2011-11-18 15:20:55.341625637 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include "../wifi.h"
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c.pr_fmt 2011-11-18 15:08:04.567811877 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c 2011-11-18 15:20:55.342644635 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ ****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/module.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192de/sw.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192de/sw.c.pr_fmt 2011-11-18 15:08:04.568814042 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192de/sw.c 2011-11-18 15:20:55.350617325 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/vmalloc.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/hw.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/hw.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/hw.c.pr_fmt 2011-11-18 15:08:04.569828848 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/hw.c 2011-11-18 15:20:55.358645682 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include "../wifi.h"
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/phy.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/phy.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/phy.c.pr_fmt 2011-11-18 15:08:04.570818023 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/phy.c 2011-11-18 15:20:55.365635904 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include "../wifi.h"
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/rf.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/rf.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/rf.c.pr_fmt 2011-11-18 15:08:04.571812156 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/rf.c 2011-11-18 15:20:55.371549230 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include "../wifi.h"
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/sw.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/sw.c.pr_fmt 2011-11-18 15:08:04.571812156 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/rtl8192se/sw.c 2011-11-18 15:20:55.379720621 -0500
|
||||
+@@ -27,6 +27,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/vmalloc.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/usb.c.pr_fmt compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/usb.c
|
||||
+--- compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/usb.c.pr_fmt 2011-11-18 15:08:04.572718638 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/drivers/net/wireless/rtlwifi/usb.c 2011-11-18 15:20:55.389173129 -0500
|
||||
+@@ -25,6 +25,7 @@
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/usb.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/net/wireless/core.c.pr_fmt compat-wireless-3.2-rc1-1/net/wireless/core.c
|
||||
+--- compat-wireless-3.2-rc1-1/net/wireless/core.c.pr_fmt 2011-11-18 15:08:04.573774302 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/net/wireless/core.c 2011-11-18 15:20:55.395647078 -0500
|
||||
+@@ -4,6 +4,7 @@
|
||||
+ * Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/if.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/net/wireless/lib80211.c.pr_fmt compat-wireless-3.2-rc1-1/net/wireless/lib80211.c
|
||||
+--- compat-wireless-3.2-rc1-1/net/wireless/lib80211.c.pr_fmt 2011-11-18 15:08:04.573774302 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/net/wireless/lib80211.c 2011-11-18 15:20:55.405646450 -0500
|
||||
+@@ -13,6 +13,7 @@
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/module.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/net/wireless/lib80211_crypt_tkip.c.pr_fmt compat-wireless-3.2-rc1-1/net/wireless/lib80211_crypt_tkip.c
|
||||
+--- compat-wireless-3.2-rc1-1/net/wireless/lib80211_crypt_tkip.c.pr_fmt 2011-11-18 15:08:04.574811667 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/net/wireless/lib80211_crypt_tkip.c 2011-11-18 15:20:55.406648475 -0500
|
||||
+@@ -10,6 +10,7 @@
|
||||
+ * more details.
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/err.h>
|
||||
+diff -up compat-wireless-3.2-rc1-1/net/wireless/reg.c.pr_fmt compat-wireless-3.2-rc1-1/net/wireless/reg.c
|
||||
+--- compat-wireless-3.2-rc1-1/net/wireless/reg.c.pr_fmt 2011-11-18 15:08:04.575716473 -0500
|
||||
++++ compat-wireless-3.2-rc1-1/net/wireless/reg.c 2011-11-18 15:20:55.408647986 -0500
|
||||
+@@ -33,6 +33,7 @@
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
++#undef pr_fmt
|
||||
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
+
|
||||
+ #include <linux/kernel.h>
|
|
@ -1,62 +1,130 @@
|
|||
# Generic ARM config. This is common config options that should be
|
||||
# enabled on all ARM kernels and hence should be added here
|
||||
#
|
||||
# FIXME - we need to add debug/nodebug generic build options
|
||||
# CONFIG_DEBUG_PER_CPU_MAPS is not set
|
||||
|
||||
# Generic ARM processor options
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
# CONFIG_SMP is not set
|
||||
|
||||
# CONFIG_CMDLINE_FORCE is not set
|
||||
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
|
||||
CONFIG_ARCH_VERSATILE=y
|
||||
CONFIG_ARCH_VERSATILE_PB=y
|
||||
CONFIG_MACH_VERSATILE_AB=y
|
||||
CONFIG_MACH_VERSATILE_DT=y
|
||||
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
|
||||
# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
|
||||
|
||||
CONFIG_ZBOOT_ROM_TEXT=0
|
||||
CONFIG_ZBOOT_ROM_BSS=0
|
||||
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
|
||||
CONFIG_ATAGS_PROC=y
|
||||
|
||||
# CONFIG_FPE_NWFPE is not set
|
||||
CONFIG_FPE_FASTFPE=y
|
||||
CONFIG_VFP=y
|
||||
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_PM_TRACE is not set
|
||||
CONFIG_SUSPEND=y
|
||||
# CONFIG_PM_TEST_SUSPEND is not set
|
||||
CONFIG_APM_EMULATION=y
|
||||
|
||||
CONFIG_ARM_THUMB=y
|
||||
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_OABI_COMPAT=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_ARM_UNWIND=y
|
||||
# CONFIG_ARCH_MULTI_V7 is not set
|
||||
# CONFIG_OABI_COMPAT is not set
|
||||
|
||||
# CONFIG_UACCESS_WITH_MEMCPY is not set
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_SMP_ON_UP=y
|
||||
|
||||
CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20"
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
|
||||
CONFIG_CMDLINE=""
|
||||
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
# CONFIG_FPE_NWFPE is not set
|
||||
CONFIG_FPE_FASTFPE=y
|
||||
CONFIG_HIGHPTE=y
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
CONFIG_UACCESS_WITH_MEMCPY=y
|
||||
# CONFIG_GENERIC_CPUFREQ_CPU0 is not set
|
||||
|
||||
# Generic ARM Errata
|
||||
CONFIG_ARM_ERRATA_720789=y
|
||||
CONFIG_ARM_ERRATA_751472=y
|
||||
CONFIG_ARM_ERRATA_742230=y
|
||||
CONFIG_ARM_ERRATA_742231=y
|
||||
CONFIG_ARM_ERRATA_754327=y
|
||||
CONFIG_ARM_ERRATA_764369=y
|
||||
CONFIG_ARM_ERRATA_775420=y
|
||||
CONFIG_PL310_ERRATA_753970=y
|
||||
|
||||
# Generic ARM config options
|
||||
CONFIG_ZBOOT_ROM_TEXT=0
|
||||
CONFIG_ZBOOT_ROM_BSS=0
|
||||
CONFIG_LOCAL_TIMERS=y
|
||||
|
||||
CONFIG_ATAGS=y
|
||||
CONFIG_ATAGS_PROC=y
|
||||
|
||||
CONFIG_PL330_DMA=y
|
||||
CONFIG_AMBA_PL08X=y
|
||||
CONFIG_PL330_DMA=y
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
|
||||
# Generic options we want for ARM that aren't defualt
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
CONFIG_ARM_CPU_TOPOLOGY=y
|
||||
|
||||
CONFIG_LEDS=y
|
||||
CONFIG_LEDS_CPU=y
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
CONFIG_LSM_MMAP_MIN_ADDR=32768
|
||||
|
||||
CONFIG_MTD_AFS_PARTS=y
|
||||
CONFIG_MTD_ARM_INTEGRATOR=y
|
||||
CONFIG_MTD_IMPA7=y
|
||||
# CONFIG_XEN is not set
|
||||
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCONF=y
|
||||
|
||||
CONFIG_COMMON_CLK=y
|
||||
|
||||
CONFIG_THERMAL=y
|
||||
|
||||
CONFIG_ETHERNET=y
|
||||
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
|
||||
# Generic HW for all ARM platforms
|
||||
CONFIG_LEDS_GPIO=m
|
||||
|
||||
CONFIG_LBDAF=y
|
||||
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_RFKILL_GPIO=m
|
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=m
|
||||
CONFIG_PINCTRL_SINGLE=m
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
|
||||
CONFIG_USB_ULPI=y
|
||||
|
||||
CONFIG_SND_ARM=y
|
||||
CONFIG_SND_ARMAACI=m
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_DESIGNWARE_I2S=m
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
# CONFIG_SND_SOC_CACHE_LZO is not set
|
||||
CONFIG_SND_SOC_ALL_CODECS=m
|
||||
CONFIG_SND_SPI=y
|
||||
|
||||
CONFIG_AX88796=m
|
||||
CONFIG_AX88796_93CX6=y
|
||||
|
@ -68,104 +136,317 @@ CONFIG_SMC911X=m
|
|||
CONFIG_SMSC911X=m
|
||||
|
||||
CONFIG_SERIO_AMBAKMI=m
|
||||
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
|
||||
CONFIG_I2C_VERSATILE=y
|
||||
|
||||
CONFIG_THERMAL=y
|
||||
|
||||
# CONFIG_MFD_T7L66XB is not set
|
||||
# CONFIG_MFD_TC6387XB is not set
|
||||
|
||||
CONFIG_I2C_NOMADIK=m
|
||||
CONFIG_ARM_SP805_WATCHDOG=m
|
||||
CONFIG_FB_ARMCLCD=m
|
||||
|
||||
CONFIG_SND_ARM=y
|
||||
CONFIG_SND_ARMAACI=m
|
||||
CONFIG_SND_SOC=m
|
||||
# CONFIG_SND_SOC_CACHE_LZO is not set
|
||||
# CONFIG_SND_SOC_ALL_CODECS is not set
|
||||
|
||||
CONFIG_USB_MUSB_HDRC=y
|
||||
CONFIG_MUSB_PIO_ONLY=y
|
||||
CONFIG_USB_TUSB6010=y
|
||||
# CONFIG_USB_MUSB_DEBUG is not set
|
||||
CONFIG_FB_SSD1307=m
|
||||
CONFIG_MPCORE_WATCHDOG=m
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
|
||||
CONFIG_MMC_ARMMMCI=m
|
||||
CONFIG_MMC_DW=m
|
||||
# CONFIG_MMC_DW_IDMAC is not set
|
||||
|
||||
CONFIG_RTC_DRV_PL030=m
|
||||
CONFIG_RTC_DRV_PL031=m
|
||||
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_ERRORS is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
CONFIG_ARM_UNWIND=y
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
# CONFIG_USB_ULPI is not set
|
||||
# CONFIG_OC_ETM is not set
|
||||
|
||||
# CONFIG_MTD_PISMO is not set
|
||||
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
|
||||
# CONFIG_MG_DISK is not set
|
||||
# CONFIG_GPIO_PL061 is not set
|
||||
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
|
||||
# CONFIG_ARM_CHARLCD is not set
|
||||
# CONFIG_DEPRECATED_PARAM_STRUCT is not set
|
||||
|
||||
# CONFIG_ARM_SP805_WATCHDOG is not set
|
||||
|
||||
CONFIG_PM_OPP=y
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
# CONFIG_AMBA_PL08X is not set
|
||||
|
||||
# CONFIG_HVC_DCC is not set
|
||||
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
|
||||
# CONFIG_ARM_PATCH_PHYS_VIRT is not set
|
||||
|
||||
CONFIG_HWSPINLOCK_OMAP=m
|
||||
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_MTD_PHYSMAP_OF=m
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_MMC_SDHCI_PLTFM=m
|
||||
CONFIG_MMC_SDHCI_OF=m
|
||||
CONFIG_MMC_SPI=m
|
||||
CONFIG_MMC_DW=m
|
||||
CONFIG_MMC_DW_PLTFM=m
|
||||
CONFIG_MMC_DW_PCI=m
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
# CONFIG_MMC_DW_IDMAC is not set
|
||||
CONFIG_MMC_SDHCI_PXAV3=m
|
||||
CONFIG_MMC_SDHCI_PXAV2=m
|
||||
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_PL330_DMA=y
|
||||
# CONFIG_ARM_KPROBES_TEST is not set
|
||||
# CONFIG_ARM_ATAG_DTB_COMPAT is not set
|
||||
# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
|
||||
|
||||
# CONFIG_FTGMAC100 is not set
|
||||
# CONFIG_FTMAC100 is not set
|
||||
#
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
CONFIG_LSM_MMAP_MIN_ADDR=32768
|
||||
CONFIG_SPI=y
|
||||
# Generic GPIO options
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
|
||||
CONFIG_MTD=m
|
||||
CONFIG_MTD_TESTS=m
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
# CONFIG_MTD_AFS_PARTS is not set
|
||||
CONFIG_MTD_CHAR=m
|
||||
CONFIG_MTD_BLKDEVS=m
|
||||
CONFIG_MTD_BLOCK=m
|
||||
# CONFIG_MTD_TESTS is not set
|
||||
# CONFIG_MTD_BLOCK_RO is not set
|
||||
# CONFIG_MTD_AR7_PARTS is not set
|
||||
CONFIG_MTD_CFI=m
|
||||
CONFIG_MTD_CFI_AMDSTD=m
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
CONFIG_MTD_CFI_NOSWAP=y
|
||||
CONFIG_MTD_CFI_GEOMETRY=y
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_STAA=y
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
CONFIG_MTD_DOC2000=m
|
||||
CONFIG_MTD_DOC2001=m
|
||||
CONFIG_MTD_DOC2001PLUS=m
|
||||
# CONFIG_MTD_DOCPROBE_ADVANCED is not set
|
||||
CONFIG_MTD_ALAUDA=m
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
CONFIG_MTD_JEDECPROBE=m
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
CONFIG_MTD_IMPA7=m
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||
# CONFIG_MTD_CFI_I4 is not set
|
||||
# CONFIG_MTD_CFI_I8 is not set
|
||||
CONFIG_MTD_PHYSMAP=m
|
||||
# CONFIG_MTD_PHYSMAP_COMPAT is not set
|
||||
CONFIG_MTD_M25P80=m
|
||||
CONFIG_M25PXX_USE_FAST_READ=y
|
||||
CONFIG_MTD_NAND=m
|
||||
CONFIG_MTD_NAND_ECC=m
|
||||
CONFIG_MTD_NAND_IDS=m
|
||||
# CONFIG_MTD_NAND_CAFE is not set
|
||||
# CONFIG_MTD_NAND_ECC_SMC is not set
|
||||
# CONFIG_MTD_NAND_DENALI is not set
|
||||
# CONFIG_MTD_NAND_DOCG4 is not set
|
||||
CONFIG_MTD_NAND_GPIO=m
|
||||
# CONFIG_MTD_INTEL_VR_NOR is not set
|
||||
# CONFIG_MTD_NAND_NANDSIM is not set
|
||||
CONFIG_MTD_NAND_ORION=m
|
||||
# CONFIG_MTD_NAND_RICOH is not set
|
||||
# CONFIG_MTD_NAND_PLATFORM is not set
|
||||
# CONFIG_MTD_OTP is not set
|
||||
# CONFIG_MTD_PMC551 is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
CONFIG_MTD_DATAFLASH=m
|
||||
CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
|
||||
CONFIG_MTD_DATAFLASH_OTP=y
|
||||
CONFIG_MTD_SST25L=m
|
||||
CONFIG_MTD_UBI=m
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
CONFIG_MTD_UBI_BEB_RESERVE=1
|
||||
# CONFIG_MTD_UBI_GLUEBI is not set
|
||||
# CONFIG_MTD_UBI_DEBUG is not set
|
||||
CONFIG_MG_DISK=m
|
||||
CONFIG_MG_DISK_RES=0
|
||||
|
||||
# CONFIG_SM_FTL is not set
|
||||
|
||||
CONFIG_JFFS2_FS=m
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
|
||||
# CONFIG_JFFS2_SUMMARY is not set
|
||||
# CONFIG_JFFS2_FS_XATTR is not set
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
# CONFIG_JFFS2_LZO is not set
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
|
||||
CONFIG_UBIFS_FS=m
|
||||
CONFIG_UBIFS_FS_XATTR=y
|
||||
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
||||
CONFIG_UBIFS_FS_LZO=y
|
||||
CONFIG_UBIFS_FS_ZLIB=y
|
||||
# CONFIG_UBIFS_FS_DEBUG is not set
|
||||
|
||||
# HW crypto and rng
|
||||
CONFIG_CRYPTO_SHA1_ARM=m
|
||||
CONFIG_CRYPTO_AES_ARM=m
|
||||
CONFIG_HW_RANDOM_ATMEL=m
|
||||
CONFIG_HW_RANDOM_EXYNOS=m
|
||||
|
||||
# Device tree
|
||||
CONFIG_DTC=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_OF_DEVICE=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_ARM_ATAG_DTB_COMPAT=y
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_PCI=y
|
||||
CONFIG_OF_PCI_IRQ=y
|
||||
CONFIG_I2C_MUX_PINCTRL=m
|
||||
CONFIG_OF_MDIO=m
|
||||
CONFIG_MDIO_BUS_MUX_GPIO=m
|
||||
CONFIG_MDIO_BUS_MUX_MMIOREG=m
|
||||
|
||||
CONFIG_BPF_JIT=y
|
||||
|
||||
CONFIG_RCU_FANOUT_LEAF=16
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
|
||||
CONFIG_RTC_DRV_88PM80X=m
|
||||
CONFIG_RTC_DRV_DS1305=m
|
||||
CONFIG_RTC_DRV_DS1390=m
|
||||
CONFIG_RTC_DRV_DS3234=m
|
||||
CONFIG_RTC_DRV_M41T93=m
|
||||
CONFIG_RTC_DRV_M41T94=m
|
||||
CONFIG_RTC_DRV_MAX6902=m
|
||||
CONFIG_RTC_DRV_MC13XXX=m
|
||||
CONFIG_RTC_DRV_PCF2123=m
|
||||
CONFIG_RTC_DRV_PL030=m
|
||||
CONFIG_RTC_DRV_PL031=m
|
||||
CONFIG_RTC_DRV_R9701=m
|
||||
CONFIG_RTC_DRV_RS5C348=m
|
||||
CONFIG_RTC_DRV_SNVS=m
|
||||
|
||||
CONFIG_RFKILL_REGULATOR=m
|
||||
CONFIG_INPUT_88PM80X_ONKEY=y
|
||||
CONFIG_INPUT_GP2A=m
|
||||
CONFIG_INPUT_GPIO_TILT_POLLED=m
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_INPUT_ARIZONA_HAPTICS=m
|
||||
CONFIG_INPUT_MC13783_PWRBUTTON=m
|
||||
|
||||
CONFIG_SERIAL_AMBA_PL010=m
|
||||
CONFIG_SERIAL_AMBA_PL011=m
|
||||
CONFIG_SERIAL_MAX3100=m
|
||||
CONFIG_SERIAL_MAX310X=y
|
||||
CONFIG_SERIAL_IFX6X60=m
|
||||
|
||||
CONFIG_GPIO_74X164=m
|
||||
CONFIG_GPIO_ADNP=m
|
||||
CONFIG_GPIO_ARIZONA=m
|
||||
CONFIG_GPIO_MAX7301=m
|
||||
CONFIG_GPIO_MC33880=m
|
||||
CONFIG_GPIO_MCP23S08=m
|
||||
CONFIG_GPIO_PL061=y
|
||||
|
||||
CONFIG_SPI_ALTERA=m
|
||||
CONFIG_SPI_BITBANG=m
|
||||
CONFIG_SPI_BUTTERFLY=m
|
||||
CONFIG_SPI_DW_MMIO=m
|
||||
CONFIG_SPI_GPIO=m
|
||||
CONFIG_SPI_LM70_LLP=m
|
||||
CONFIG_SPI_OC_TINY=m
|
||||
CONFIG_SPI_PL022=m
|
||||
CONFIG_SPI_SC18IS602=m
|
||||
CONFIG_SPI_XCOMM=m
|
||||
CONFIG_SPI_XILINX=m
|
||||
CONFIG_SPI_DESIGNWARE=m
|
||||
CONFIG_SPI_SPIDEV=m
|
||||
CONFIG_SPI_TLE62X0=m
|
||||
CONFIG_BMP085_SPI=m
|
||||
CONFIG_BMP085_SPI=m
|
||||
CONFIG_EEPROM_AT25=m
|
||||
CONFIG_EEPROM_93XX46=m
|
||||
CONFIG_KS8851=m
|
||||
CONFIG_MICREL_KS8995MA=m
|
||||
CONFIG_LIBERTAS_SPI=m
|
||||
CONFIG_P54_SPI=m
|
||||
CONFIG_P54_SPI_DEFAULT_EEPROM=y
|
||||
|
||||
CONFIG_MFD_CORE=m
|
||||
CONFIG_MFD_88PM800=m
|
||||
CONFIG_MFD_88PM805=m
|
||||
CONFIG_MFD_ARIZONA_SPI=m
|
||||
CONFIG_MFD_MC13XXX_SPI=m
|
||||
CONFIG_MFD_SYSCON=y
|
||||
# CONFIG_MFD_WM5102 is not set
|
||||
# CONFIG_MFD_WM5110 is not set
|
||||
# CONFIG_MFD_TPS65912_SPI is not set
|
||||
# CONFIG_MFD_DA9052_SPI is not set
|
||||
# CONFIG_MFD_WM831X_SPI is not set
|
||||
# CONFIG_MFD_TPS80031 is not set
|
||||
# CONFIG_MFD_AS3711 is not set
|
||||
# CONFIG_MFD_SMSC is not set
|
||||
# CONFIG_MFD_DA9055 is not set
|
||||
# CONFIG_MFD_MAX8907 is not set
|
||||
|
||||
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
|
||||
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
|
||||
# CONFIG_REGULATOR_DUMMY is not set
|
||||
CONFIG_REGULATOR_GPIO=m
|
||||
CONFIG_REGULATOR_AD5398=m
|
||||
CONFIG_REGULATOR_ANATOP=m
|
||||
CONFIG_REGULATOR_ARIZONA=m
|
||||
CONFIG_REGULATOR_FAN53555=m
|
||||
CONFIG_REGULATOR_ISL6271A=m
|
||||
CONFIG_REGULATOR_LP3972=m
|
||||
CONFIG_REGULATOR_MAX1586=m
|
||||
CONFIG_REGULATOR_MAX8649=m
|
||||
CONFIG_REGULATOR_MAX8660=m
|
||||
CONFIG_REGULATOR_MAX8952=m
|
||||
CONFIG_REGULATOR_MAX8973=m
|
||||
CONFIG_REGULATOR_MC13783=m
|
||||
CONFIG_REGULATOR_MC13892=m
|
||||
CONFIG_REGULATOR_LP3971=m
|
||||
CONFIG_REGULATOR_TPS51632=m
|
||||
CONFIG_REGULATOR_TPS62360=m
|
||||
CONFIG_REGULATOR_TPS65023=m
|
||||
CONFIG_REGULATOR_TPS6524X=m
|
||||
CONFIG_REGULATOR_TPS6507X=m
|
||||
CONFIG_CHARGER_MANAGER=y
|
||||
CONFIG_EXTCON_GPIO=m
|
||||
|
||||
CONFIG_SENSORS_AD7314=m
|
||||
CONFIG_SENSORS_ADCXX=m
|
||||
CONFIG_SENSORS_LM70=m
|
||||
CONFIG_SENSORS_MAX1111=m
|
||||
CONFIG_SENSORS_MC13783_ADC=m
|
||||
CONFIG_SENSORS_ADS7871=m
|
||||
CONFIG_SENSORS_LIS3_SPI=m
|
||||
|
||||
CONFIG_IEEE802154_AT86RF230=m
|
||||
CONFIG_IEEE802154_MRF24J40=m
|
||||
|
||||
# CONFIG_ARM_VIRT_EXT is not set
|
||||
# CONFIG_PINCTRL_EXYNOS4 is not set
|
||||
# CONFIG_PINCTRL_EXYNOS5440 is not set
|
||||
|
||||
# CONFIG_AUTO_ZRELADDR is not set
|
||||
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
||||
|
||||
# CONFIG_VFIO is not set
|
||||
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||
# CONFIG_APM_EMULATION is not set
|
||||
# CONFIG_DEPRECATED_PARAM_STRUCT is not set
|
||||
|
||||
# CONFIG_SERIAL_8250_EM is not set
|
||||
# CONFIG_GPIO_EM is not set
|
||||
# CONFIG_HVC_DCC is not set
|
||||
# CONFIG_LEDS_RENESAS_TPU is not set
|
||||
CONFIG_LEDS_DAC124S085=m
|
||||
CONFIG_LEDS_MC13783=m
|
||||
|
||||
# CONFIG_VIRTIO_CONSOLE is not set
|
||||
|
||||
# Possibly part of Snowball
|
||||
# CONFIG_MFD_T7L66XB is not set
|
||||
# CONFIG_MFD_TC6387XB is not set
|
||||
|
||||
# CONFIG_IRQ_DOMAIN_DEBUG is not set
|
||||
# CONFIG_COMMON_CLK_DEBUG is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
# CONFIG_ARM_KPROBES_TEST is not set
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
|
||||
# CONFIG_DEBUG_PINCTRL is not set
|
||||
|
||||
# HW Disabled because it causes issues on ARM platforms
|
||||
|
||||
# disable TPM on arm at least on the trimslices it causes havoc
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
# CONFIG_IMA is not set
|
||||
|
||||
# ERROR: "__bswapsi2" [drivers/staging/crystalhd/crystalhd.ko] undefined!
|
||||
|
@ -179,6 +460,7 @@ CONFIG_LSM_MMAP_MIN_ADDR=32768
|
|||
# CONFIG_DRM_RADEON is not set
|
||||
# CONFIG_ATM_HE is not set
|
||||
# CONFIG_SCSI_ACARD is not set
|
||||
# CONFIG_SFC is not set
|
||||
|
||||
# these all currently fail due to missing symbols __bad_udelay or
|
||||
# error: implicit declaration of function ‘iowrite32be’
|
||||
|
@ -186,26 +468,40 @@ CONFIG_LSM_MMAP_MIN_ADDR=32768
|
|||
# CONFIG_DRM_NOUVEAU is not set
|
||||
# CONFIG_MLX4_EN is not set
|
||||
|
||||
CONFIG_TOUCHSCREEN_ADS7846=m
|
||||
CONFIG_TOUCHSCREEN_AD7877=m
|
||||
CONFIG_TOUCHSCREEN_TSC2005=m
|
||||
CONFIG_TOUCHSCREEN_MC13783=m
|
||||
|
||||
# drivers/input/touchscreen/eeti_ts.c:65:2: error: implicit declaration of function 'irq_to_gpio' [-Werror=implicit-function-declaration]
|
||||
# CONFIG_TOUCHSCREEN_EETI is not set
|
||||
# CONFIG_TOUCHSCREEN_EGALAX is not set
|
||||
#
|
||||
# FIXME: Guesses, need checking
|
||||
# CONFIG_MACH_EUKREA_CPUIMX35SD is not set
|
||||
CONFIG_ARM_ERRATA_720789=y
|
||||
CONFIG_ARM_ERRATA_751472=y
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
|
||||
# CONFIG_PANEL_LGPHILIPS_LB035Q02 is not set
|
||||
# CONFIG_PANEL_ACX565AKM is not set
|
||||
# CONFIG_PANEL_N8X0 is not set
|
||||
|
||||
# CONFIG_LCD_L4F00242T03 is not set
|
||||
# CONFIG_LCD_LMS283GF05 is not set
|
||||
# CONFIG_LCD_LTV350QV is not set
|
||||
# CONFIG_LCD_ILI9320 is not set
|
||||
# CONFIG_LCD_TDO24M is not set
|
||||
# CONFIG_LCD_VGG2432A4 is not set
|
||||
# CONFIG_LCD_S6E63M0 is not set
|
||||
# CONFIG_LCD_LD9040 is not set
|
||||
# CONFIG_LCD_AMS369FG06 is not set
|
||||
|
||||
# CONFIG_FB_MX3 is not set
|
||||
# CONFIG_MX3_IPU is not set
|
||||
# CONFIG_MX3_IPU_IRQS is not set
|
||||
|
||||
# CONFIG_NET_VENDOR_CIRRUS is not set
|
||||
# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||
# CONFIG_CS89x0 is not set
|
||||
# CONFIG_DVB_USB_PCTV452E is not set
|
||||
# CONFIG_PINCTRL_EXYNOS is not set
|
||||
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
# CONFIG_MACH_IMX51_DT is not set
|
||||
# CONFIG_MACH_IMX53_DT is not set
|
||||
# CONFIG_MACH_MX53_EVK is not set
|
||||
# CONFIG_MACH_MX53_SMD is not set
|
||||
# CONFIG_MACH_MX53_LOCO is not set
|
||||
# CONFIG_MACH_MX53_ARD is not set
|
||||
# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
|
||||
# CONFIG_EZX_PCAP is not set
|
||||
|
||||
# CONFIG_EXTCON_ARIZONA is not set
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
ONFIG_ARCH_HIGHBANK=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_NEON=y
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
104
config-arm-imx
104
config-arm-imx
|
@ -1,104 +0,0 @@
|
|||
CONFIG_ARCH_MXC=y
|
||||
CONFIG_ARCH_MX51=y
|
||||
CONFIG_MACH_MX51_BABBAGE=y
|
||||
CONFIG_MACH_MX51_3DS=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX51=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_NEON=y
|
||||
|
||||
CONFIG_MACH_EUKREA_CPUIMX51SD=y
|
||||
CONFIG_MACH_MX51_EFIKAMX=y
|
||||
CONFIG_MACH_MX51_EFIKASB=y
|
||||
# CONFIG_SWP_EMULATE is not set
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
CONFIG_CPU_FREQ_IMX=y
|
||||
CONFIG_W1_MASTER_MXC=m
|
||||
CONFIG_IMX_SDMA=y
|
||||
CONFIG_MACH_MX31ADS=y
|
||||
CONFIG_MACH_MX31LILLY=y
|
||||
CONFIG_MACH_MX31LITE=y
|
||||
CONFIG_MACH_PCM037=y
|
||||
CONFIG_MACH_MX31_3DS=y
|
||||
CONFIG_MACH_MX31MOBOARD=y
|
||||
CONFIG_MACH_QONG=y
|
||||
CONFIG_MACH_ARMADILLO5X0=y
|
||||
CONFIG_MACH_KZM_ARM11_01=y
|
||||
CONFIG_MACH_BUG=y
|
||||
CONFIG_MACH_PCM043=y
|
||||
CONFIG_MACH_MX35_3DS=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX35=y
|
||||
CONFIG_MACH_VPR200=y
|
||||
CONFIG_SOC_IMX6Q=y
|
||||
CONFIG_MXC_IRQ_PRIOR=y
|
||||
CONFIG_MXC_PWM=m
|
||||
CONFIG_MXC_DEBUG_BOARD=y
|
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||
CONFIG_CACHE_L2X0=y
|
||||
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
|
||||
CONFIG_ARM_ERRATA_411920=y
|
||||
CONFIG_PL310_ERRATA_588369=y
|
||||
CONFIG_PL310_ERRATA_727915=y
|
||||
CONFIG_ARM_ERRATA_364296=y
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
CONFIG_RFKILL_GPIO=m
|
||||
CONFIG_PATA_IMX=m
|
||||
CONFIG_ETHERNET=y
|
||||
CONFIG_NET_VENDOR_BROADCOM=y
|
||||
CONFIG_NET_VENDOR_FREESCALE=y
|
||||
CONFIG_FEC=y
|
||||
CONFIG_KEYBOARD_IMX=m
|
||||
CONFIG_SERIAL_IMX=y
|
||||
CONFIG_HW_RANDOM_MXC_RNGA=m
|
||||
CONFIG_I2C_IMX=m
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_GPIO_MCP23S08=m
|
||||
CONFIG_DVB_TDA1004X=m
|
||||
CONFIG_DVB_PLL=m
|
||||
CONFIG_SND_IMX_SOC=m
|
||||
CONFIG_USB_EHCI_MXC=y
|
||||
# CONFIG_USB_IMX21_HCD is not set
|
||||
CONFIG_MMC_SDHCI_ESDHC_IMX=m
|
||||
CONFIG_MMC_MXC=m
|
||||
CONFIG_RTC_MXC=m
|
||||
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
CONFIG_LEDS_PWM=m
|
||||
|
||||
CONFIG_MACH_PCM037_EET=y
|
||||
# CONFIG_MACH_MX31_3DS_MXC_NAND_USE_BBT is not set
|
||||
CONFIG_MXC_USE_EPIT=y
|
||||
CONFIG_ARM_THUMBEE=y
|
||||
CONFIG_ARM_ERRATA_430973=y
|
||||
CONFIG_ARM_ERRATA_458693=y
|
||||
CONFIG_ARM_ERRATA_460075=y
|
||||
CONFIG_ARM_ERRATA_743622=y
|
||||
CONFIG_ARM_ERRATA_754322=y
|
||||
CONFIG_CAN_FLEXCAN=m
|
||||
CONFIG_MTD_NAND_MXC=m
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_SERIAL_IMX_CONSOLE=y
|
||||
CONFIG_IMX2_WDT=m
|
||||
CONFIG_SND_SOC_PHYCORE_AC97=m
|
||||
CONFIG_SND_SOC_EUKREA_TLV320=m
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_PL310_ERRATA_769419=y
|
||||
CONFIG_LEDS_RENESAS_TPU=y
|
||||
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
|
|
@ -1,26 +1,48 @@
|
|||
CONFIG_ARCH_KIRKWOOD=y
|
||||
CONFIG_ARCH_KIRKWOOD_DT=y
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_VFP is not set
|
||||
|
||||
CONFIG_MACH_D2NET_V2=y
|
||||
CONFIG_MACH_DB88F6281_BP=y
|
||||
CONFIG_MACH_RD88F6192_NAS=y
|
||||
CONFIG_MACH_RD88F6281=y
|
||||
CONFIG_MACH_MV88F6281GTW_GE=y
|
||||
CONFIG_MACH_SHEEVAPLUG=y
|
||||
CONFIG_MACH_ESATA_SHEEVAPLUG=y
|
||||
CONFIG_MACH_GURUPLUG=y
|
||||
CONFIG_MACH_DOCKSTAR=y
|
||||
CONFIG_MACH_TS219=y
|
||||
CONFIG_MACH_TS41X=y
|
||||
CONFIG_MACH_DOCKSTAR_DT=y
|
||||
CONFIG_MACH_DREAMPLUG_DT=y
|
||||
CONFIG_MACH_ESATA_SHEEVAPLUG=y
|
||||
CONFIG_MACH_DLINK_KIRKWOOD_DT=y
|
||||
CONFIG_MACH_GOFLEXNET_DT=y
|
||||
CONFIG_MACH_GURUPLUG=y
|
||||
CONFIG_MACH_GURUPLUG_DT=y
|
||||
CONFIG_MACH_ICONNECT_DT=y
|
||||
CONFIG_MACH_IB62X0_DT=y
|
||||
CONFIG_MACH_INETSPACE_V2=y
|
||||
CONFIG_MACH_INETSPACE_V2_DT=y
|
||||
CONFIG_MACH_IOMEGA_IX2_200_DT=y
|
||||
CONFIG_MACH_KM_KIRKWOOD_DT=y
|
||||
CONFIG_MACH_LSXL_DT=y
|
||||
CONFIG_MACH_MPLCEC4_DT=y
|
||||
CONFIG_MACH_MV88F6281GTW_GE=y
|
||||
CONFIG_MACH_NETSPACE_LITE_V2_DT=y
|
||||
CONFIG_MACH_NETSPACE_MAX_V2=y
|
||||
CONFIG_MACH_NETSPACE_MAX_V2_DT=y
|
||||
CONFIG_MACH_NETSPACE_MINI_V2_DT=y
|
||||
CONFIG_MACH_NETSPACE_V2=y
|
||||
CONFIG_MACH_NETSPACE_V2_DT=y
|
||||
CONFIG_MACH_NET2BIG_V2=y
|
||||
CONFIG_MACH_NET5BIG_V2=y
|
||||
CONFIG_MACH_NSA310_DT=y
|
||||
CONFIG_MACH_OPENBLOCKS_A6_DT=y
|
||||
CONFIG_MACH_OPENRD_BASE=y
|
||||
CONFIG_MACH_OPENRD_CLIENT=y
|
||||
CONFIG_MACH_OPENRD_ULTIMATE=y
|
||||
CONFIG_MACH_NETSPACE_V2=y
|
||||
CONFIG_MACH_INETSPACE_V2=y
|
||||
CONFIG_MACH_NETSPACE_MAX_V2=y
|
||||
CONFIG_MACH_D2NET_V2=y
|
||||
CONFIG_MACH_NET2BIG_V2=y
|
||||
CONFIG_MACH_NET5BIG_V2=y
|
||||
CONFIG_MACH_RD88F6192_NAS=y
|
||||
CONFIG_MACH_RD88F6281=y
|
||||
CONFIG_MACH_SHEEVAPLUG=y
|
||||
CONFIG_MACH_TOPKICK_DT=y
|
||||
CONFIG_MACH_TS219=y
|
||||
CONFIG_MACH_TS219_DT=y
|
||||
CONFIG_MACH_TS41X=y
|
||||
CONFIG_MACH_T5325=y
|
||||
# CONFIG_CPU_FEROCEON_OLD_ID is not set
|
||||
|
||||
|
||||
CONFIG_CACHE_FEROCEON_L2=y
|
||||
CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH=y
|
||||
|
@ -36,11 +58,29 @@ CONFIG_SND_KIRKWOOD_SOC_T5325=m
|
|||
CONFIG_MMC_MVSDIO=m
|
||||
CONFIG_LEDS_NS2=m
|
||||
CONFIG_LEDS_NETXBIG=m
|
||||
CONFIG_RTC_DRV_MV=m
|
||||
CONFIG_RTC_DRV_MV=y
|
||||
CONFIG_MV_XOR=y
|
||||
CONFIG_CRYPTO_DEV_MV_CESA=m
|
||||
# CONFIG_PINCTRL_EXYNOS is not set
|
||||
CONFIG_PINCTRL_MVEBU=y
|
||||
CONFIG_PINCTRL_KIRKWOOD=y
|
||||
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
# CONFIG_CPU_IDLE_KIRKWOOD is not set
|
||||
CONFIG_POWER_RESET_QNAP=y
|
||||
CONFIG_POWER_RESET_RESTART=y
|
||||
CONFIG_KIRKWOOD_THERMAL=m
|
||||
CONFIG_REGULATOR_LP8755=m
|
||||
# CONFIG_DRM_TILCDC is not set
|
||||
CONFIG_OF_DISPLAY_TIMING=y
|
||||
CONFIG_OF_VIDEOMODE=y
|
||||
CONFIG_SND_ATMEL_SOC=m
|
||||
|
||||
# CONFIG_CPU_FEROCEON_OLD_ID is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
# CONFIG_HIGHPTE is not set
|
||||
# CONFIG_VIRTUALIZATION is not set
|
||||
# CONFIG_EDAC is not set
|
||||
# CONFIG_SPI is not set
|
||||
|
||||
CONFIG_FB_XGI=m
|
||||
|
|
File diff suppressed because it is too large
Load Diff
116
config-arm-tegra
116
config-arm-tegra
|
@ -1,29 +1,47 @@
|
|||
CONFIG_ARCH_TEGRA=y
|
||||
CONFIG_MACH_HARMONY=y
|
||||
|
||||
CONFIG_ARCH_TEGRA_2x_SOC=y
|
||||
# CONFIG_ARCH_TEGRA_3x_SOC is not set
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VFPv3=y
|
||||
|
||||
# CONFIG_MACH_HARMONY is not set
|
||||
CONFIG_MACH_KAEN=y
|
||||
CONFIG_MACH_PAZ00=y
|
||||
CONFIG_MACH_SEABOARD=y
|
||||
CONFIG_MACH_TEGRA_DT=y
|
||||
CONFIG_MACH_TRIMSLICE=y
|
||||
CONFIG_MACH_WARIO=y
|
||||
CONFIG_MACH_TEGRA_DT=y
|
||||
CONFIG_MACH_VENTANA=y
|
||||
|
||||
CONFIG_TEGRA_DEBUG_UARTD=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_ARM_CPU_TOPOLOGY=y
|
||||
|
||||
CONFIG_I2C_TEGRA=y
|
||||
CONFIG_TEGRA_PCI=y
|
||||
CONFIG_TEGRA_IOMMU_GART=y
|
||||
CONFIG_TEGRA_IOMMU_SMMU=y
|
||||
|
||||
CONFIG_I2C_TEGRA=m
|
||||
|
||||
# This block is temporary until we work out why the MMC modules don't work as modules
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI_OF=y
|
||||
CONFIG_MMC_SPI=y
|
||||
|
||||
CONFIG_MMC_SDHCI_TEGRA=y
|
||||
|
||||
# CONFIG_RCU_BOOST is not set
|
||||
CONFIG_TEGRA_SYSTEM_DMA=y
|
||||
CONFIG_TEGRA_EMC_SCALING_ENABLE=y
|
||||
CONFIG_TEGRA_AHB=y
|
||||
CONFIG_TEGRA20_APB_DMA=y
|
||||
CONFIG_SPI_TEGRA20_SFLASH=m
|
||||
CONFIG_SPI_TEGRA20_SLINK=m
|
||||
CONFIG_ARM_THUMBEE=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||
|
@ -43,62 +61,66 @@ CONFIG_ARM_ERRATA_720789=y
|
|||
# CONFIG_ARM_ERRATA_754322 is not set
|
||||
# CONFIG_ARM_ERRATA_754327 is not set
|
||||
# CONFIG_ARM_ERRATA_764369 is not set
|
||||
CONFIG_SMP_ON_UP=y
|
||||
CONFIG_LOCAL_TIMERS=y
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_NEON is not set
|
||||
# CONFIG_RFKILL_GPIO is not set
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
CONFIG_KEYBOARD_TEGRA=y
|
||||
# CONFIG_MPCORE_WATCHDOG is not set
|
||||
# CONFIG_KEYBOARD_TEGRA is not set
|
||||
CONFIG_PINCTRL_TEGRA=y
|
||||
CONFIG_PINCTRL_TEGRA20=y
|
||||
CONFIG_USB_EHCI_TEGRA=y
|
||||
CONFIG_RTC_DRV_TEGRA=m
|
||||
CONFIG_RTC_DRV_TEGRA=y
|
||||
|
||||
CONFIG_SND_SOC_TEGRA=m
|
||||
CONFIG_SND_SOC_TEGRA_ALC5632=m
|
||||
CONFIG_SND_SOC_TEGRA_WM8753=m
|
||||
CONFIG_SND_SOC_TEGRA_WM8903=m
|
||||
CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
|
||||
CONFIG_SND_SOC_TEGRA30_AHUB=m
|
||||
CONFIG_SND_SOC_TEGRA30_I2S=m
|
||||
|
||||
CONFIG_MFD_NVEC=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_RCU_CPU_STALL_VERBOSE is not set
|
||||
# CONFIG_PREEMPT_TRACER is not set
|
||||
# AC100 (PAZ00)
|
||||
# CONFIG_MFD_NVEC is not set
|
||||
CONFIG_MFD_TPS80031=y
|
||||
CONFIG_KEYBOARD_NVEC=y
|
||||
CONFIG_SERIO_NVEC_PS2=y
|
||||
CONFIG_NVEC_POWER=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_NVEC_LEDS=y
|
||||
CONFIG_NVEC_PAZ00=y
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
# CONFIG_MFD_TPS6586X is not set
|
||||
# CONFIG_RTC_DRV_TPS6586X is not set
|
||||
|
||||
CONFIG_CRYSTALHD=m
|
||||
CONFIG_PWM_TEGRA=m
|
||||
|
||||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
|
||||
CONFIG_DRM_TEGRA=m
|
||||
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
|
||||
CONFIG_CRYPTO_DEV_TEGRA_AES=m
|
||||
|
||||
CONFIG_MACH_VENTANA=y
|
||||
CONFIG_PL310_ERRATA_753970=y
|
||||
CONFIG_ARM_CPU_TOPOLOGY=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_LEDS_RENESAS_TPU=y
|
||||
|
||||
# CONFIG_ARCH_TEGRA_2x_SOC is not set
|
||||
# CONFIG_ARCH_TEGRA_3x_SOC is not set
|
||||
# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
|
||||
# CONFIG_ETHERNET is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
# CONFIG_DVB_TDA1004X is not set
|
||||
# CONFIG_DVB_PLL is not set
|
||||
# CONFIG_SND_SOC_TEGRA_ALC5632 is not set
|
||||
CONFIG_OF=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_PCI=y
|
||||
CONFIG_OF_PCI_IRQ=y
|
||||
|
||||
# CONFIG_DRM_TEGRA_DEBUG is not set
|
||||
# CONFIG_TI_DAC7512 is not set
|
||||
# CONFIG_SPI_TOPCLIFF_PCH is not set
|
||||
# CONFIG_SPI_DW_PCI is not set
|
||||
|
|
|
@ -0,0 +1,501 @@
|
|||
# ARM unified arch kernel
|
||||
CONFIG_CPU_V7=y
|
||||
# CONFIG_ARCH_MULTI_V4 is not set
|
||||
# CONFIG_ARCH_MULTI_V4T is not set
|
||||
# CONFIG_ARCH_MULTI_V6 is not set
|
||||
CONFIG_ARCH_MULTI_V6_V7=y
|
||||
CONFIG_ARCH_MULTI_V7=y
|
||||
# This is V6 so we'll eventually support it in v5 unified kernels
|
||||
# CONFIG_ARCH_BCM is not set
|
||||
CONFIG_ARCH_HIGHBANK=y
|
||||
CONFIG_ARCH_MVEBU=y
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
CONFIG_ARCH_OMAP2PLUS=y
|
||||
CONFIG_ARCH_PICOXCELL=y
|
||||
CONFIG_ARCH_SOCFPGA=y
|
||||
CONFIG_ARCH_SUNXI=y
|
||||
CONFIG_ARCH_VEXPRESS_CA9X4=y
|
||||
CONFIG_ARCH_VEXPRESS_DT=y
|
||||
CONFIG_ARCH_VIRT=y
|
||||
# CONFIG_ARCH_WM8850 is not set
|
||||
CONFIG_ARCH_ZYNQ=y
|
||||
|
||||
# These are supported in the LPAE kernel
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
# CONFIG_XEN is not set
|
||||
# CONFIG_VIRTIO_CONSOLE is not set
|
||||
# CONFIG_ARM_VIRT_EXT is not set
|
||||
|
||||
# highbank
|
||||
# 2013/04/19 - stability issues
|
||||
# CONFIG_CPU_IDLE_CALXEDA is not set
|
||||
CONFIG_EDAC_HIGHBANK_MC=m
|
||||
CONFIG_EDAC_HIGHBANK_L2=m
|
||||
CONFIG_SATA_HIGHBANK=m
|
||||
CONFIG_ARM_HIGHBANK_CPUFREQ=m
|
||||
|
||||
# versatile
|
||||
CONFIG_VEXPRESS_CONFIG=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_ARMCLCD=m
|
||||
CONFIG_FB_CFB_COPYAREA=m
|
||||
CONFIG_FB_CFB_FILLRECT=m
|
||||
CONFIG_FB_CFB_IMAGEBLIT=m
|
||||
CONFIG_TOUCHSCREEN_ADS7846=m
|
||||
|
||||
CONFIG_OC_ETM=y
|
||||
CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
|
||||
|
||||
# mvebu
|
||||
CONFIG_MACH_ARMADA_370_XP=y
|
||||
CONFIG_MACH_ARMADA_370=y
|
||||
CONFIG_MACH_ARMADA_XP=y
|
||||
|
||||
CONFIG_CACHE_TAUROS2=y
|
||||
CONFIG_MV_XOR=y
|
||||
CONFIG_CRYPTO_DEV_MV_CESA=m
|
||||
CONFIG_MV643XX_ETH=m
|
||||
CONFIG_I2C_MV64XXX=m
|
||||
CONFIG_PINCTRL_MVEBU=y
|
||||
CONFIG_PINCTRL_ARMADA_370=y
|
||||
CONFIG_PINCTRL_ARMADA_XP=y
|
||||
CONFIG_PINCTRL_DOVE=y
|
||||
CONFIG_EDAC_MV64X60=m
|
||||
CONFIG_RTC_DRV_S35390A=m
|
||||
CONFIG_RTC_DRV_88PM80X=m
|
||||
CONFIG_RTC_DRV_MV=m
|
||||
CONFIG_MVNETA=m
|
||||
CONFIG_GPIO_MVEBU=y
|
||||
CONFIG_MVEBU_CLK_CORE=y
|
||||
CONFIG_MVEBU_CLK_GATING=y
|
||||
CONFIG_MMC_MVSDIO=m
|
||||
CONFIG_SPI_ORION=m
|
||||
CONFIG_USB_MV_UDC=m
|
||||
|
||||
# omap
|
||||
CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
|
||||
# CONFIG_ARCH_OMAP2 is not set
|
||||
CONFIG_ARCH_OMAP3=y
|
||||
CONFIG_ARCH_OMAP4=y
|
||||
# CONFIG_SOC_OMAP5 is not set
|
||||
# CONFIG_SOC_OMAP2420 is not set
|
||||
# CONFIG_SOC_OMAP2430 is not set
|
||||
CONFIG_SOC_OMAP3430=y
|
||||
CONFIG_SOC_TI81XX=y
|
||||
CONFIG_SOC_AM33XX=y
|
||||
CONFIG_MACH_OMAP_GENERIC=y
|
||||
CONFIG_MACH_OMAP3_BEAGLE=y
|
||||
CONFIG_MACH_DEVKIT8000=y
|
||||
CONFIG_MACH_OMAP_LDP=y
|
||||
CONFIG_MACH_OMAP3530_LV_SOM=y
|
||||
CONFIG_MACH_OMAP3_TORPEDO=y
|
||||
CONFIG_MACH_OVERO=y
|
||||
CONFIG_MACH_OMAP3EVM=y
|
||||
CONFIG_MACH_OMAP3517EVM=y
|
||||
CONFIG_MACH_CRANEBOARD=y
|
||||
CONFIG_MACH_OMAP3_PANDORA=y
|
||||
CONFIG_MACH_TOUCHBOOK=y
|
||||
CONFIG_MACH_OMAP_3430SDP=y
|
||||
# CONFIG_MACH_NOKIA_N8X0 is not set
|
||||
# CONFIG_MACH_NOKIA_RM680 is not set
|
||||
# CONFIG_MACH_NOKIA_RX51 is not set
|
||||
CONFIG_MACH_OMAP_ZOOM2=y
|
||||
CONFIG_MACH_OMAP_ZOOM3=y
|
||||
CONFIG_MACH_CM_T35=y
|
||||
CONFIG_MACH_CM_T3517=y
|
||||
CONFIG_MACH_IGEP0030=y
|
||||
CONFIG_MACH_SBC3530=y
|
||||
CONFIG_MACH_OMAP_3630SDP=y
|
||||
CONFIG_MACH_TI8168EVM=y
|
||||
CONFIG_MACH_TI8148EVM=y
|
||||
CONFIG_MACH_OMAP_4430SDP=y
|
||||
CONFIG_MACH_OMAP4_PANDA=y
|
||||
|
||||
CONFIG_OMAP_RESET_CLOCKS=y
|
||||
CONFIG_OMAP_MUX=y
|
||||
CONFIG_OMAP_MUX_WARNINGS=y
|
||||
CONFIG_OMAP_32K_TIMER=y
|
||||
CONFIG_OMAP_32K_TIMER_HZ=128
|
||||
# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
|
||||
|
||||
CONFIG_OMAP_MCBSP=y
|
||||
CONFIG_OMAP_MBOX_FWK=m
|
||||
CONFIG_OMAP_MBOX_KFIFO_SIZE=256
|
||||
CONFIG_OMAP_DM_TIMER=y
|
||||
CONFIG_OMAP_PM_NOOP=y
|
||||
CONFIG_OMAP_IOMMU=y
|
||||
CONFIG_OMAP_IOVMM=m
|
||||
CONFIG_OMAP3_EMU=y
|
||||
# CONFIG_OMAP3_SDRC_AC_TIMING is not set
|
||||
CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
|
||||
|
||||
CONFIG_TI_ST=m
|
||||
CONFIG_TI_DAC7512=m
|
||||
CONFIG_TI_DAVINCI_EMAC=m
|
||||
CONFIG_TI_DAVINCI_MDIO=m
|
||||
CONFIG_TI_DAVINCI_CPDMA=m
|
||||
CONFIG_TI_CPSW=m
|
||||
CONFIG_TI_CPTS=y
|
||||
CONFIG_TI_EMIF=m
|
||||
CONFIG_MFD_TPS65217=m
|
||||
CONFIG_REGULATOR_TPS65217=m
|
||||
CONFIG_BACKLIGHT_TPS65217=m
|
||||
|
||||
CONFIG_SERIAL_OMAP=y
|
||||
CONFIG_SERIAL_OMAP_CONSOLE=y
|
||||
|
||||
CONFIG_GPIO_TWL4030=m
|
||||
CONFIG_GPIO_TWL6040=m
|
||||
CONFIG_I2C_OMAP=m
|
||||
CONFIG_CHARGER_TWL4030=m
|
||||
CONFIG_OMAP_WATCHDOG=m
|
||||
CONFIG_TWL4030_CORE=y
|
||||
CONFIG_TWL4030_MADC=m
|
||||
CONFIG_TWL4030_POWER=y
|
||||
CONFIG_TWL4030_CODEC=y
|
||||
CONFIG_TWL4030_WATCHDOG=m
|
||||
CONFIG_TWL4030_USB=m
|
||||
CONFIG_TWL6030_USB=m
|
||||
CONFIG_TWL6030_PWM=m
|
||||
CONFIG_TWL6040_CORE=y
|
||||
CONFIG_CLK_TWL6040=m
|
||||
CONFIG_OMAP_INTERCONNECT=m
|
||||
# CONFIG_MFD_TPS80031 is not set
|
||||
CONFIG_MFD_TI_AM335X_TSCADC=m
|
||||
CONFIG_MFD_OMAP_USB_HOST=y
|
||||
CONFIG_MTD_ONENAND_OMAP2=m
|
||||
CONFIG_HDQ_MASTER_OMAP=m
|
||||
CONFIG_REGULATOR_TWL4030=y
|
||||
CONFIG_BACKLIGHT_PANDORA=m
|
||||
CONFIG_OMAP_OCP2SCP=m
|
||||
CONFIG_USB_EHCI_HCD_OMAP=y
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_OHCI_HCD_OMAP3=y
|
||||
CONFIG_USB_MUSB_AM35X=m
|
||||
CONFIG_USB_MUSB_OMAP2PLUS=m
|
||||
CONFIG_USB_MUSB_HDRC=m
|
||||
CONFIG_USB_GADGET_MUSB_HDRC=m
|
||||
# CONFIG_MUSB_PIO_ONLY is not set
|
||||
# CONFIG_USB_MUSB_DEBUG is not set
|
||||
CONFIG_OMAP_CONTROL_USB=m
|
||||
CONFIG_NOP_USB_XCEIV=m
|
||||
CONFIG_MMC_OMAP=y
|
||||
CONFIG_MMC_OMAP_HS=y
|
||||
CONFIG_RTC_DRV_MAX8907=m
|
||||
# CONFIG_RTC_DRV_TWL92330 is not set
|
||||
CONFIG_RTC_DRV_TWL4030=m
|
||||
CONFIG_RTC_DRV_OMAP=m
|
||||
# Note needs to be compiled in until we build MMC modular
|
||||
CONFIG_DMA_OMAP=y
|
||||
CONFIG_OMAP_IOVMM=m
|
||||
CONFIG_HWSPINLOCK_OMAP=m
|
||||
CONFIG_SENSORS_TWL4030_MADC=m
|
||||
|
||||
CONFIG_WL_TI=y
|
||||
CONFIG_WLCORE_SDIO=m
|
||||
CONFIG_WLCORE_SPI=m
|
||||
CONFIG_WL1251_SPI=m
|
||||
CONFIG_WL12XX_SPI=m
|
||||
CONFIG_WL12XX_SDIO_TEST=m
|
||||
CONFIG_WL18XX=m
|
||||
CONFIG_WILINK_PLATFORM_DATA=y
|
||||
CONFIG_MFD_WL1273_CORE=m
|
||||
CONFIG_NFC_WILINK=m
|
||||
|
||||
CONFIG_MTD_NAND_OMAP2=y
|
||||
CONFIG_MTD_NAND_OMAP_PREFETCH=y
|
||||
CONFIG_MTD_NAND_OMAP_PREFETCH_DMA=y
|
||||
CONFIG_SPI_DAVINCI=m
|
||||
CONFIG_SPI_OMAP24XX=y
|
||||
CONFIG_MFD_TI_SSP=m
|
||||
CONFIG_SPI_TI_SSP=m
|
||||
|
||||
CONFIG_INPUT_TWL4030_PWRBUTTON=m
|
||||
CONFIG_INPUT_TWL4030_VIBRA=m
|
||||
CONFIG_INPUT_TWL6040_VIBRA=m
|
||||
CONFIG_KEYBOARD_OMAP4=m
|
||||
CONFIG_KEYBOARD_TWL4030=m
|
||||
CONFIG_TOUCHSCREEN_TI_TSCADC=m
|
||||
|
||||
# OMAP thermal temp. Can likely be built as module but doesn't autoload so build in to ensure performance on PandaES
|
||||
CONFIG_OMAP_BANDGAP=y
|
||||
CONFIG_OMAP4_THERMAL=y
|
||||
CONFIG_OMAP5_THERMAL=y
|
||||
|
||||
# OMAP3 thermal/power
|
||||
CONFIG_POWER_AVS=y
|
||||
CONFIG_POWER_AVS_OMAP=y
|
||||
CONFIG_POWER_AVS_OMAP_CLASS3=y
|
||||
|
||||
CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
|
||||
|
||||
CONFIG_PWM_TIECAP=m
|
||||
CONFIG_PWM_TIEHRPWM=m
|
||||
CONFIG_PWM_TWL=m
|
||||
CONFIG_PWM_TWL_LED=m
|
||||
|
||||
CONFIG_CRYPTO_DEV_OMAP_SHAM=m
|
||||
CONFIG_CRYPTO_DEV_OMAP_AES=m
|
||||
CONFIG_HW_RANDOM_OMAP=m
|
||||
|
||||
# CONFIG_DRM_TILCDC is not set
|
||||
CONFIG_DRM_OMAP=m
|
||||
CONFIG_DRM_OMAP_NUM_CRTCS=2
|
||||
CONFIG_OMAP2_VRAM=y
|
||||
CONFIG_OMAP2_VRAM_SIZE=0
|
||||
CONFIG_OMAP2_VRFB=y
|
||||
# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
|
||||
# CONFIG_FB_OMAP_LCD_VGA is not set
|
||||
# CONFIG_FB_OMAP2 is not set
|
||||
# CONFIG_FB_DA8XX is not set
|
||||
|
||||
CONFIG_OMAP2_DSS=m
|
||||
CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
|
||||
# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
|
||||
CONFIG_OMAP2_DSS_DPI=y
|
||||
CONFIG_OMAP2_DSS_RFBI=y
|
||||
CONFIG_OMAP2_DSS_VENC=y
|
||||
CONFIG_OMAP4_DSS_HDMI=y
|
||||
CONFIG_OMAP2_DSS_SDI=y
|
||||
CONFIG_OMAP2_DSS_DSI=y
|
||||
# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
|
||||
CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
|
||||
CONFIG_OMAP2_DSS_SLEEP_BEFORE_RESET=y
|
||||
CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
|
||||
|
||||
CONFIG_PANEL_GENERIC_DPI=m
|
||||
CONFIG_PANEL_TFP410=m
|
||||
CONFIG_PANEL_SHARP_LS037V7DW01=m
|
||||
CONFIG_PANEL_PICODLP=m
|
||||
CONFIG_PANEL_TAAL=m
|
||||
CONFIG_PANEL_NEC_NL8048HL11_01B=m
|
||||
CONFIG_PANEL_TPO_TD043MTEA1=m
|
||||
CONFIG_PANEL_LGPHILIPS_LB035Q02=m
|
||||
CONFIG_PANEL_ACX565AKM=m
|
||||
# CONFIG_PANEL_N8X0 is not set
|
||||
|
||||
# Enable V4L2 drivers for OMAP2+
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||
CONFIG_V4L_PLATFORM_DRIVERS=y
|
||||
# CONFIG_VIDEO_OMAP2_VOUT is not set
|
||||
# CONFIG_VIDEO_OMAP3 is not set
|
||||
# CONFIG_VIDEO_VPFE_CAPTURE is not set
|
||||
# The ones below are for TI Davinci
|
||||
# CONFIG_VIDEO_VPSS_SYSTEM is not set
|
||||
# CONFIG_VIDEO_DM6446_CCDC is not set
|
||||
# CONFIG_VIDEO_DM644X_VPBE is not set
|
||||
# CONFIG_VIDEO_DM355_CCDC is not set
|
||||
# CONFIG_VIDEO_ISIF is not set
|
||||
# Also enable vivi driver - useful for testing a full kernelspace V4L2 driver
|
||||
CONFIG_V4L_TEST_DRIVERS=y
|
||||
CONFIG_VIDEO_VIVI=m
|
||||
|
||||
CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP_HDMI=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
|
||||
|
||||
CONFIG_SND_OMAP_SOC=m
|
||||
CONFIG_SND_SOC_I2C_AND_SPI=m
|
||||
CONFIG_SND_OMAP_SOC_AM3517EVM=m
|
||||
CONFIG_SND_OMAP_SOC_DMIC=m
|
||||
CONFIG_SND_OMAP_SOC_IGEP0020=m
|
||||
CONFIG_SND_OMAP_SOC_MCBSP=m
|
||||
CONFIG_SND_OMAP_SOC_MCPDM=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP_HDMI=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP3EVM=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=m
|
||||
CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
|
||||
CONFIG_SND_OMAP_SOC_OVERO=m
|
||||
# CONFIG_SND_OMAP_SOC_RX51 is not set
|
||||
CONFIG_SND_OMAP_SOC_SDP4430=m
|
||||
CONFIG_SND_SOC_TLV320AIC23=m
|
||||
CONFIG_SND_SOC_TLV320AIC3X=m
|
||||
CONFIG_SND_SOC_TWL4030=m
|
||||
CONFIG_SND_SOC_TWL6040=m
|
||||
CONFIG_RADIO_WL128X=m
|
||||
|
||||
# CONFIG_OMAP_REMOTEPROC is not set
|
||||
|
||||
# CONFIG_TIDSPBRIDGE is not set
|
||||
# CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000
|
||||
# CONFIG_TIDSPBRIDGE_DEBUG is not set
|
||||
# CONFIG_TIDSPBRIDGE_RECOVERY=y
|
||||
# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set
|
||||
# CONFIG_TIDSPBRIDGE_WDT3=y
|
||||
# CONFIG_TIDSPBRIDGE_WDT_TIMEOUT=5
|
||||
# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set
|
||||
# CONFIG_TIDSPBRIDGE_BACKTRACE is not set
|
||||
|
||||
# CONFIG_OMAP2_DSS_DEBUGFS is not set
|
||||
# CONFIG_OMAP_IOMMU_DEBUG is not set
|
||||
# CONFIG_OMAP_MUX_DEBUG is not set
|
||||
# CONFIG_VIDEO_OMAP3_DEBUG is not set
|
||||
|
||||
# Allwinner a1x
|
||||
CONFIG_PINCTRL_SUNXI=y
|
||||
# CONFIG_SUNXI_RFKILL=y
|
||||
# CONFIG_SUNXI_NAND=y
|
||||
# CONFIG_SUNXI_DBGREG=m
|
||||
# CONFIG_WEMAC_SUN4I=y
|
||||
# CONFIG_KEYBOARD_SUN4IKEYPAD=m
|
||||
# CONFIG_KEYBOARD_SUN4I_KEYBOARD=m
|
||||
# CONFIG_IR_SUN4I=m
|
||||
# CONFIG_TOUCHSCREEN_SUN4I_TS=m
|
||||
# CONFIG_SUN4I_G2D=y
|
||||
# CONFIG_I2C_SUN4I=y
|
||||
# CONFIG_DRM_MALI=m
|
||||
# CONFIG_MALI=m
|
||||
# CONFIG_FB_SUNXI=m
|
||||
# CONFIG_FB_SUNXI_UMP=y
|
||||
# CONFIG_FB_SUNXI_LCD=m
|
||||
# CONFIG_FB_SUNXI_HDMI=m
|
||||
# CONFIG_SOUND_SUN4I=y
|
||||
# CONFIG_SND_SUN4I_SOC_CODEC=y
|
||||
# CONFIG_SND_SUN4I_SOC_HDMIAUDIO=y
|
||||
# CONFIG_SND_SUN4I_SOC_SPDIF=m
|
||||
# CONFIG_SND_SUN4I_SOC_I2S_INTERFACE=m
|
||||
# CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
# CONFIG_USB_SW_SUN4I_HCD=y
|
||||
# CONFIG_USB_SW_SUN4I_HCD0=y
|
||||
# CONFIG_USB_SW_SUN4I_HCI=y
|
||||
# CONFIG_USB_SW_SUN4I_EHCI0=y
|
||||
# CONFIG_USB_SW_SUN4I_EHCI1=y
|
||||
# CONFIG_USB_SW_SUN4I_OHCI0=y
|
||||
# CONFIG_USB_SW_SUN4I_OHCI1=y
|
||||
# CONFIG_USB_SW_SUN4I_USB=y
|
||||
# CONFIG_USB_SW_SUN4I_USB_MANAGER=y
|
||||
# CONFIG_MMC_SUNXI_POWER_CONTROL=y
|
||||
# CONFIG_MMC_SUNXI=y
|
||||
# CONFIG_RTC_DRV_SUN4I=y
|
||||
|
||||
# imx
|
||||
# CONFIG_BACKLIGHT_PWM is not set
|
||||
# CONFIG_DRM_IMX is not set
|
||||
# CONFIG_DRM_IMX_FB_HELPER=m
|
||||
# CONFIG_DRM_IMX_PARALLEL_DISPLAY=m
|
||||
# CONFIG_DRM_IMX_IPUV3_CORE=m
|
||||
# CONFIG_DRM_IMX_IPUV3=m
|
||||
# CONFIG_VIDEO_CODA is not set
|
||||
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_INPUT_88PM80X_ONKEY=m
|
||||
|
||||
# exynos
|
||||
# CONFIG_DRM_EXYNOS is not set
|
||||
# CONFIG_PINCTRL_EXYNOS5440 is not set
|
||||
# CONFIG_PINCTRL_EXYNOS is not set
|
||||
|
||||
# picoxcell
|
||||
CONFIG_CRYPTO_DEV_PICOXCELL=m
|
||||
CONFIG_HW_RANDOM_PICOXCELL=m
|
||||
|
||||
# ST Ericsson
|
||||
# CONFIG_I2C_NOMADIK is not set
|
||||
# CONFIG_SENSORS_LIS3_I2C is not set
|
||||
|
||||
# ZYNQ
|
||||
CONFIG_LATTICE_ECP3_CONFIG=m
|
||||
|
||||
# MMC/SD
|
||||
CONFIG_MMC_TMIO=m
|
||||
CONFIG_MMC_SDHCI_PXAV3=m
|
||||
CONFIG_MMC_SDHCI_PXAV2=m
|
||||
|
||||
# Multi function devices
|
||||
CONFIG_MFD_CORE=m
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MFD_88PM800=m
|
||||
CONFIG_MFD_88PM805=m
|
||||
CONFIG_MFD_T7L66XB=y
|
||||
CONFIG_MFD_TC6387XB=y
|
||||
|
||||
# Regulator drivers
|
||||
CONFIG_REGULATOR_FAN53555=m
|
||||
# CONFIG_CHARGER_MANAGER is not set
|
||||
# CONFIG_REGULATOR_DUMMY is not set
|
||||
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
|
||||
# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
|
||||
CONFIG_RFKILL_REGULATOR=m
|
||||
CONFIG_REGULATOR_GPIO=m
|
||||
CONFIG_REGULATOR_AD5398=m
|
||||
CONFIG_REGULATOR_ISL6271A=m
|
||||
CONFIG_REGULATOR_MAX1586=m
|
||||
CONFIG_REGULATOR_MAX8649=m
|
||||
CONFIG_REGULATOR_MAX8660=m
|
||||
CONFIG_REGULATOR_MAX8952=m
|
||||
CONFIG_REGULATOR_MAX8973=m
|
||||
CONFIG_REGULATOR_LP3971=m
|
||||
CONFIG_REGULATOR_LP3972=m
|
||||
CONFIG_REGULATOR_TPS51632=m
|
||||
CONFIG_REGULATOR_TPS62360=m
|
||||
CONFIG_REGULATOR_TPS65023=m
|
||||
CONFIG_REGULATOR_TPS6524X=m
|
||||
CONFIG_REGULATOR_TPS6507X=m
|
||||
CONFIG_REGULATOR_TPS65912=m
|
||||
CONFIG_REGULATOR_MAX8907=m
|
||||
CONFIG_REGULATOR_LP872X=y
|
||||
CONFIG_REGULATOR_LP8755=m
|
||||
|
||||
# Needs work/investigation
|
||||
|
||||
# CONFIG_ARM_CHARLCD is not set
|
||||
# CONFIG_MTD_AFS_PARTS is not set
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
# CONFIG_DEPRECATED_PARAM_STRUCT is not set
|
||||
|
||||
# CONFIG_ARM_KPROBES_TEST is not set
|
||||
|
||||
# Defined config options we don't use yet
|
||||
# CONFIG_PINCTRL_IMX35 is not set
|
||||
# CONFIG_DRM_IMX_FB_HELPER is not set
|
||||
# CONFIG_DRM_IMX_PARALLEL_DISPLAY is not set
|
||||
# CONFIG_DRM_IMX_IPUV3_CORE is not set
|
||||
# CONFIG_DRM_IMX_IPUV3 is not set
|
||||
# CONFIG_REGULATOR_ANATOP is not set
|
||||
|
||||
# CONFIG_BATTERY_RX51 is not set
|
||||
# CONFIG_IR_RX51 is not set
|
||||
# CONFIG_GENERIC_CPUFREQ_CPU0 is not set
|
||||
# CONFIG_MFD_SMSC is not set
|
||||
# CONFIG_MFD_SEC_CORE is not set
|
||||
# CONFIG_MFD_DA9055 is not set
|
||||
# CONFIG_MFD_LP8788 is not set
|
||||
# CONFIG_MFD_MAX8907 is not set
|
||||
# CONFIG_MFD_TPS65912_I2C is not set
|
||||
# CONFIG_MFD_DA9052_I2C is not set
|
||||
# CONFIG_MFD_MAX77686 is not set
|
||||
# CONFIG_MFD_MAX77693 is not set
|
||||
# CONFIG_MFD_MAX8997 is not set
|
||||
# CONFIG_MFD_TPS65090 is not set
|
||||
# CONFIG_MFD_AAT2870_CORE is not set
|
||||
# CONFIG_MFD_RC5T583 is not set
|
||||
# CONFIG_MFD_PALMAS is not set
|
||||
# CONFIG_MFD_DA9055 is not set
|
||||
# CONFIG_MFD_SMSC is not set
|
||||
# CONFIG_MFD_TPS65910 is not set
|
||||
# CONFIG_MFD_AS3711 is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_PMIC_ADP5520 is not set
|
||||
# CONFIG_REGULATOR_LP3972 is not set
|
||||
# CONFIG_REGULATOR_LP872X is not set
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
|
||||
# CONFIG_DVB_USB_PCTV452E is not set
|
||||
# We need to fix these as they should be either generic includes or kconfig fixes
|
||||
# drivers/input/touchscreen/eeti_ts.c:65:2: error: implicit declaration of function 'irq_to_gpio' [-Werror=implicit-function-declaration]
|
||||
# CONFIG_TOUCHSCREEN_EETI is not set
|
||||
# CONFIG_TOUCHSCREEN_EGALAX is not set
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
|
||||
# CONFIG_VIRTUALIZATION is not set
|
||||
# CONFIG_CHARGER_MANAGER is not set
|
||||
# CONFIG_POWER_RESET_QNAP is not set
|
||||
# CONFIG_POWER_RESET_RESTART is not set
|
||||
# CONFIG_OMAP2_DSS_DEBUG is not set
|
|
@ -0,0 +1,469 @@
|
|||
# arm configs for sharing between armv7 and armv7-lpae
|
||||
# Generic ARM config options
|
||||
CONFIG_ARM=y
|
||||
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_HAVE_ARM_TWD=y
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VFPv3=y
|
||||
CONFIG_NEON=y
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ARM_THUMB=y
|
||||
CONFIG_ARM_THUMBEE=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_ASM_UNIFIED=y
|
||||
CONFIG_ARM_CPU_TOPOLOGY=y
|
||||
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
CONFIG_CACHE_L2X0=y
|
||||
CONFIG_CACHE_PL310=y
|
||||
CONFIG_HIGHPTE=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_ATAGS=y
|
||||
CONFIG_ATAGS_PROC=y
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
|
||||
CONFIG_XZ_DEC_ARMTHUMB=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
||||
CONFIG_ALWAYS_USE_PERSISTENT_CLOCK=y
|
||||
|
||||
# CONFIG_OABI_COMPAT is not set
|
||||
# CONFIG_FPE_NWFPE is not set
|
||||
# CONFIG_FPE_FASTFPE is not set
|
||||
# CONFIG_APM_EMULATION is not set
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||
# CONFIG_DMA_CACHE_RWFO is not set
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
# CONFIG_HVC_DCC is not set
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_ARM_VIRT_EXT is not set
|
||||
|
||||
# errata
|
||||
# v5/v6
|
||||
# CONFIG_ARM_ERRATA_326103 is not set
|
||||
# CONFIG_ARM_ERRATA_411920 is not set
|
||||
# Cortex-A8
|
||||
CONFIG_ARM_ERRATA_430973=y
|
||||
CONFIG_ARM_ERRATA_458693=y
|
||||
CONFIG_ARM_ERRATA_460075=y
|
||||
# Cortex-A9
|
||||
CONFIG_ARM_ERRATA_643719=y
|
||||
CONFIG_ARM_ERRATA_720789=y
|
||||
CONFIG_ARM_ERRATA_742230=y
|
||||
CONFIG_ARM_ERRATA_742231=y
|
||||
CONFIG_ARM_ERRATA_743622=y
|
||||
CONFIG_ARM_ERRATA_751472=y
|
||||
CONFIG_ARM_ERRATA_754322=y
|
||||
CONFIG_ARM_ERRATA_754327=y
|
||||
CONFIG_ARM_ERRATA_764369=y
|
||||
CONFIG_ARM_ERRATA_775420=y
|
||||
# Disabled due to causing highbank to crash
|
||||
# CONFIG_PL310_ERRATA_588369 is not set
|
||||
# CONFIG_PL310_ERRATA_727915 is not set
|
||||
CONFIG_PL310_ERRATA_753970=y
|
||||
CONFIG_PL310_ERRATA_769419=y
|
||||
# Cortex-A15
|
||||
CONFIG_ARM_ERRATA_798181=y
|
||||
|
||||
# generic that deviates from or should be merged into config-generic
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_SMP_ON_UP=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
CONFIG_RCU_FANOUT_LEAF=16
|
||||
|
||||
# 2013/04/19 - disable due to stability issues in 3.9 for the moment
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
## CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
# CONFIG_CPU_IDLE_GOV_MENU is not set
|
||||
# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
|
||||
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
CONFIG_LSM_MMAP_MIN_ADDR=32768
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_OC_ETM=y
|
||||
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
|
||||
CONFIG_LOCAL_TIMERS=y
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
CONFIG_UACCESS_WITH_MEMCPY=y
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
|
||||
# Root as NFS, different from mainline
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
|
||||
CONFIG_LBDAF=y
|
||||
|
||||
CONFIG_COMMON_CLK=y
|
||||
|
||||
# Device tree
|
||||
CONFIG_DTC=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_OF_DEVICE=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_ARM_ATAG_DTB_COMPAT=y
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_OF_PCI=y
|
||||
CONFIG_OF_PCI_IRQ=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_I2C_MUX_PINCTRL=m
|
||||
CONFIG_OF_MDIO=m
|
||||
|
||||
CONFIG_OF_DISPLAY_TIMING=y
|
||||
CONFIG_OF_VIDEOMODE=y
|
||||
|
||||
# General vexpress ARM drivers
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_TIMER_SP804=y
|
||||
|
||||
CONFIG_SERIO_AMBAKMI=m
|
||||
CONFIG_SERIAL_AMBA_PL010=y
|
||||
CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_DW=y
|
||||
|
||||
CONFIG_RTC_DRV_PL030=y
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
|
||||
# disable because it's currently broken on highbank :-/
|
||||
# CONFIG_PL330_DMA is not set
|
||||
CONFIG_AMBA_PL08X=y
|
||||
CONFIG_ARM_SP805_WATCHDOG=m
|
||||
CONFIG_I2C_VERSATILE=m
|
||||
CONFIG_GPIO_PL061=y
|
||||
CONFIG_SENSORS_VEXPRESS=m
|
||||
CONFIG_FB_ARMCLCD=m
|
||||
CONFIG_REGULATOR_VEXPRESS=m
|
||||
|
||||
# usb
|
||||
CONFIG_USB_OTG=y
|
||||
# CONFIG_USB_OTG_WHITELIST is not set
|
||||
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
||||
CONFIG_USB_ULPI=y
|
||||
CONFIG_AX88796=m
|
||||
CONFIG_AX88796_93CX6=y
|
||||
CONFIG_SMC91X=m
|
||||
CONFIG_SMC911X=m
|
||||
CONFIG_SMSC911X=m
|
||||
CONFIG_USB_ISP1760_HCD=m
|
||||
|
||||
# Multifunction Devices
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MFD_TPS65912_SPI=y
|
||||
# CONFIG_MFD_DA9052_SPI is not set
|
||||
# CONFIG_MFD_ARIZONA_SPI is not set
|
||||
# CONFIG_MFD_WM831X_SPI is not set
|
||||
# CONFIG_MFD_MC13XXX_SPI is not set
|
||||
|
||||
# Pin stuff
|
||||
CONFIG_PINMUX=y
|
||||
CONFIG_PINCONF=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_SINGLE=m
|
||||
# CONFIG_PINCTRL_SAMSUNG is not set
|
||||
# CONFIG_PINCTRL_EXYNOS4 is not set
|
||||
|
||||
# GPIO
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=m
|
||||
CONFIG_EXTCON_GPIO=m
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||
# CONFIG_GPIO_EM is not set
|
||||
CONFIG_GPIO_ADNP=m
|
||||
CONFIG_GPIO_MCP23S08=m
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
CONFIG_RFKILL_GPIO=m
|
||||
CONFIG_SERIAL_8250_EM=m
|
||||
CONFIG_INPUT_GPIO_TILT_POLLED=m
|
||||
CONFIG_MDIO_BUS_MUX_GPIO=m
|
||||
CONFIG_MDIO_BUS_MUX_MMIOREG=m
|
||||
CONFIG_LEDS_GPIO=m
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_MAX7301=m
|
||||
CONFIG_GPIO_MC33880=m
|
||||
CONFIG_GPIO_74X164=m
|
||||
CONFIG_GPIO_TPS65912=m
|
||||
CONFIG_W1_MASTER_GPIO=m
|
||||
CONFIG_CHARGER_GPIO=m
|
||||
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_GPIO=m
|
||||
CONFIG_SPI_BITBANG=m
|
||||
CONFIG_SPI_PL022=m
|
||||
CONFIG_SPI_SPIDEV=m
|
||||
CONFIG_SPI_ALTERA=m
|
||||
CONFIG_SPI_BUTTERFLY=m
|
||||
CONFIG_SPI_LM70_LLP=m
|
||||
CONFIG_SPI_OC_TINY=m
|
||||
CONFIG_SPI_S3C64XX=m
|
||||
CONFIG_SPI_SC18IS602=m
|
||||
CONFIG_SPI_XCOMM=m
|
||||
CONFIG_SPI_XILINX=m
|
||||
CONFIG_SPI_DESIGNWARE=m
|
||||
CONFIG_SPI_TLE62X0=m
|
||||
|
||||
# HW crypto and rng
|
||||
CONFIG_CRYPTO_SHA1_ARM=m
|
||||
CONFIG_CRYPTO_AES_ARM=m
|
||||
|
||||
# EDAC
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
|
||||
# Watchdog
|
||||
CONFIG_MPCORE_WATCHDOG=m
|
||||
|
||||
# Thermal / powersaving
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_POWER_RESET_RESTART=y
|
||||
CONFIG_ARM_PSCI=y
|
||||
|
||||
# MTD
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
# CONFIG_MG_DISK is not set
|
||||
CONFIG_MTD_DATAFLASH=m
|
||||
CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
|
||||
CONFIG_MTD_DATAFLASH_OTP=y
|
||||
CONFIG_MTD_M25P80=m
|
||||
CONFIG_MTD_SST25L=m
|
||||
CONFIG_EEPROM_AT25=m
|
||||
CONFIG_EEPROM_93XX46=m
|
||||
|
||||
# MMC/SD
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_ARMMMCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=m
|
||||
CONFIG_MMC_SPI=m
|
||||
CONFIG_MMC_DW=m
|
||||
CONFIG_MMC_DW_PLTFM=m
|
||||
CONFIG_MMC_DW_PCI=m
|
||||
CONFIG_SPI_DW_MMIO=m
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
# CONFIG_MMC_DW_IDMAC is not set
|
||||
|
||||
# Sound
|
||||
CONFIG_SND_ARM=y
|
||||
CONFIG_SND_ARMAACI=m
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_SPI=y
|
||||
CONFIG_SND_DESIGNWARE_I2S=m
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
CONFIG_SND_SOC_CACHE_LZO=y
|
||||
CONFIG_SND_SOC_ALL_CODECS=m
|
||||
# CONFIG_SND_ATMEL_SOC is not set
|
||||
|
||||
# Displays
|
||||
CONFIG_FB_SSD1307=m
|
||||
|
||||
# PWM
|
||||
CONFIG_PWM=y
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
|
||||
# RTC
|
||||
CONFIG_RTC_DRV_M41T93=m
|
||||
CONFIG_RTC_DRV_M41T94=m
|
||||
CONFIG_RTC_DRV_DS1305=m
|
||||
CONFIG_RTC_DRV_DS1390=m
|
||||
CONFIG_RTC_DRV_MAX6902=m
|
||||
CONFIG_RTC_DRV_R9701=m
|
||||
CONFIG_RTC_DRV_RS5C348=m
|
||||
CONFIG_RTC_DRV_DS3234=m
|
||||
CONFIG_RTC_DRV_PCF2123=m
|
||||
CONFIG_RTC_DRV_RX4581=m
|
||||
|
||||
# Regulators
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_RFKILL_REGULATOR=m
|
||||
CONFIG_CHARGER_MANAGER=y
|
||||
# CONFIG_REGULATOR_DUMMY is not set
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=m
|
||||
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
|
||||
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
|
||||
CONFIG_REGULATOR_GPIO=m
|
||||
CONFIG_REGULATOR_AD5398=m
|
||||
CONFIG_REGULATOR_FAN53555=m
|
||||
CONFIG_REGULATOR_ANATOP=m
|
||||
CONFIG_REGULATOR_ISL6271A=m
|
||||
CONFIG_REGULATOR_MAX1586=m
|
||||
CONFIG_REGULATOR_MAX8649=m
|
||||
CONFIG_REGULATOR_MAX8660=m
|
||||
CONFIG_REGULATOR_MAX8952=m
|
||||
CONFIG_REGULATOR_MAX8973=m
|
||||
CONFIG_REGULATOR_LP3971=m
|
||||
CONFIG_REGULATOR_LP3972=m
|
||||
CONFIG_REGULATOR_LP8755=m
|
||||
CONFIG_REGULATOR_TPS51632=m
|
||||
CONFIG_REGULATOR_TPS62360=m
|
||||
CONFIG_REGULATOR_TPS65023=m
|
||||
CONFIG_REGULATOR_TPS6507X=m
|
||||
CONFIG_REGULATOR_TPS6524X=m
|
||||
CONFIG_REGULATOR_TPS65912=m
|
||||
|
||||
CONFIG_SENSORS_AD7314=m
|
||||
CONFIG_SENSORS_ADCXX=m
|
||||
CONFIG_SENSORS_LM70=m
|
||||
CONFIG_SENSORS_MAX1111=m
|
||||
CONFIG_SENSORS_ADS7871=m
|
||||
CONFIG_SENSORS_LIS3_SPI=m
|
||||
CONFIG_SENSORS_GPIO_FAN=m
|
||||
|
||||
CONFIG_LCD_L4F00242T03=m
|
||||
CONFIG_LCD_LMS283GF05=m
|
||||
CONFIG_LCD_LTV350QV=m
|
||||
CONFIG_LCD_ILI9320=m
|
||||
CONFIG_LCD_TDO24M=m
|
||||
CONFIG_LCD_VGG2432A4=m
|
||||
CONFIG_LCD_S6E63M0=m
|
||||
CONFIG_LCD_LD9040=m
|
||||
CONFIG_LCD_AMS369FG06=m
|
||||
CONFIG_LCD_LMS501KF03=m
|
||||
CONFIG_LCD_HX8357=m
|
||||
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_INPUT_GP2A=m
|
||||
CONFIG_INPUT_ARIZONA_HAPTICS=m
|
||||
CONFIG_INPUT_MC13783_PWRBUTTON=m
|
||||
|
||||
|
||||
CONFIG_TOUCHSCREEN_ADS7846=m
|
||||
CONFIG_TOUCHSCREEN_AD7877=m
|
||||
CONFIG_TOUCHSCREEN_MC13783=m
|
||||
CONFIG_TOUCHSCREEN_TSC2005=m
|
||||
|
||||
CONFIG_LEDS_DAC124S085=m
|
||||
CONFIG_LEDS_PWM=m
|
||||
CONFIG_BMP085_SPI=m
|
||||
|
||||
# Ethernet
|
||||
CONFIG_KS8851=m
|
||||
CONFIG_ENC28J60=m
|
||||
CONFIG_LIBERTAS_SPI=m
|
||||
CONFIG_P54_SPI=m
|
||||
CONFIG_P54_SPI_DEFAULT_EEPROM=n
|
||||
CONFIG_MICREL_KS8995MA=m
|
||||
CONFIG_IEEE802154_AT86RF230=m
|
||||
CONFIG_IEEE802154_MRF24J40=m
|
||||
|
||||
CONFIG_ARM_KPROBES_TEST=m
|
||||
|
||||
# jffs2
|
||||
CONFIG_JFFS2_FS=m
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
|
||||
CONFIG_JFFS2_FS_POSIX_ACL=y
|
||||
CONFIG_JFFS2_FS_SECURITY=y
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
CONFIG_JFFS2_FS_XATTR=y
|
||||
CONFIG_JFFS2_LZO=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
CONFIG_JFFS2_RUBIN=y
|
||||
CONFIG_JFFS2_SUMMARY=y
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
|
||||
CONFIG_UBIFS_FS=m
|
||||
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
||||
CONFIG_UBIFS_FS_LZO=y
|
||||
CONFIG_UBIFS_FS_ZLIB=y
|
||||
# CONFIG_UBIFS_FS_DEBUG is not set
|
||||
|
||||
# Should be in generic
|
||||
CONFIG_ETHERNET=y
|
||||
CONFIG_BPF_JIT=y
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_CIRRUS is not set
|
||||
# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||
|
||||
# CONFIG_PATA_PLATFORM is not set
|
||||
CONFIG_PERF_EVENTS=y
|
||||
|
||||
# CONFIG_RTC_DRV_SNVS is not set
|
||||
# CONFIG_DRM_EXYNOS is not set
|
||||
# CONFIG_DRM_TILCDC is not set
|
||||
# CONFIG_DRM_IMX is not set
|
||||
# CONFIG_MMC_SDHCI_PXAV3 is not set
|
||||
# CONFIG_MMC_SDHCI_PXAV2 is not set
|
||||
# CONFIG_CS89x0 is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
# CONFIG_HW_RANDOM_ATMEL is not set
|
||||
# CONFIG_HW_RANDOM_EXYNOS is not set
|
||||
# CONFIG_I2C_NOMADIK is not set
|
||||
# CONFIG_LEDS_RENESAS_TPU is not set
|
||||
# CONFIG_MFD_T7L66XB is not set
|
||||
# CONFIG_MFD_TC6387XB is not set
|
||||
# CONFIG_TI_DAC7512 is not set
|
||||
# CONFIG_EZX_PCAP is not set
|
||||
|
||||
# Needs work/investigation
|
||||
# CONFIG_ARM_CHARLCD is not set
|
||||
# CONFIG_MTD_AFS_PARTS is not set
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
# CONFIG_DEPRECATED_PARAM_STRUCT is not set
|
||||
# CONFIG_LATTICE_ECP3_CONFIG is not set
|
||||
# CONFIG_M25PXX_USE_FAST_READ is not set
|
||||
# CONFIG_SERIAL_MAX3100 is not set
|
||||
# CONFIG_SERIAL_MAX310X is not set
|
||||
# CONFIG_SERIAL_IFX6X60 is not set
|
||||
|
||||
# these modules all fail with missing __bad_udelay
|
||||
# http://www.spinics.net/lists/arm/msg15615.html provides some background
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_FB_SAVAGE is not set
|
||||
# CONFIG_FB_RADEON is not set
|
||||
# CONFIG_DRM_RADEON is not set
|
||||
# CONFIG_ATM_HE is not set
|
||||
# CONFIG_SCSI_ACARD is not set
|
||||
# CONFIG_SFC is not set
|
||||
|
||||
# these all currently fail due to missing symbols __bad_udelay or
|
||||
# error: implicit declaration of function ‘iowrite32be’
|
||||
# CONFIG_SND_ALI5451 is not set
|
||||
# CONFIG_DRM_NOUVEAU is not set
|
||||
# CONFIG_MLX4_EN is not set
|
||||
|
||||
# Debug options. We need to deal with them at some point like x86
|
||||
# CONFIG_COMMON_CLK_DEBUG is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
# CONFIG_IRQ_DOMAIN_DEBUG is not set
|
||||
# CONFIG_DEBUG_PINCTRL is not set
|
|
@ -0,0 +1,108 @@
|
|||
CONFIG_ARCH_TEGRA=y
|
||||
|
||||
CONFIG_ARCH_TEGRA_2x_SOC=y
|
||||
# CONFIG_ARCH_TEGRA_3x_SOC is not set
|
||||
# CONFIG_ARCH_TEGRA_114_SOC is not set
|
||||
|
||||
# CONFIG_NEON is not set
|
||||
# These are supported in the LPAE kernel
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
# CONFIG_XEN is not set
|
||||
# CONFIG_VIRTIO_CONSOLE is not set
|
||||
# CONFIG_ARM_VIRT_EXT is not set
|
||||
# CONFIG_VIRTUALIZATION is not set
|
||||
|
||||
# CONFIG_MACH_HARMONY is not set
|
||||
CONFIG_MACH_KAEN=y
|
||||
CONFIG_MACH_PAZ00=y
|
||||
CONFIG_MACH_SEABOARD=y
|
||||
CONFIG_MACH_TEGRA_DT=y
|
||||
CONFIG_MACH_TRIMSLICE=y
|
||||
CONFIG_MACH_WARIO=y
|
||||
CONFIG_MACH_VENTANA=y
|
||||
|
||||
CONFIG_TEGRA_PCI=y
|
||||
CONFIG_TEGRA_IOMMU_GART=y
|
||||
CONFIG_TEGRA_IOMMU_SMMU=y
|
||||
|
||||
CONFIG_I2C_TEGRA=m
|
||||
|
||||
# This block is temporary until we work out why the MMC modules don't work as modules
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI_OF=y
|
||||
CONFIG_MMC_SDHCI_TEGRA=y
|
||||
|
||||
CONFIG_TEGRA_SYSTEM_DMA=y
|
||||
CONFIG_TEGRA_EMC_SCALING_ENABLE=y
|
||||
CONFIG_TEGRA_AHB=y
|
||||
CONFIG_TEGRA20_APB_DMA=y
|
||||
CONFIG_SPI_TEGRA20_SFLASH=m
|
||||
CONFIG_SPI_TEGRA20_SLINK=m
|
||||
|
||||
CONFIG_KEYBOARD_TEGRA=m
|
||||
CONFIG_PINCTRL_TEGRA=y
|
||||
CONFIG_PINCTRL_TEGRA20=y
|
||||
CONFIG_PINCTRL_TEGRA30=y
|
||||
CONFIG_USB_EHCI_TEGRA=y
|
||||
CONFIG_RTC_DRV_TEGRA=y
|
||||
|
||||
CONFIG_SND_SOC_TEGRA=m
|
||||
CONFIG_SND_SOC_TEGRA_ALC5632=m
|
||||
CONFIG_SND_SOC_TEGRA_WM8753=m
|
||||
CONFIG_SND_SOC_TEGRA_WM8903=m
|
||||
CONFIG_SND_SOC_TEGRA_WM9712=m
|
||||
CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
|
||||
CONFIG_SND_SOC_TEGRA30_AHUB=m
|
||||
CONFIG_SND_SOC_TEGRA30_I2S=m
|
||||
CONFIG_SND_SOC_TEGRA20_AC97=m
|
||||
|
||||
# AC100 (PAZ00)
|
||||
CONFIG_MFD_NVEC=y
|
||||
CONFIG_MFD_TPS80031=y
|
||||
CONFIG_KEYBOARD_NVEC=y
|
||||
CONFIG_SERIO_NVEC_PS2=y
|
||||
CONFIG_NVEC_POWER=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_NVEC_LEDS=y
|
||||
CONFIG_NVEC_PAZ00=y
|
||||
|
||||
# CONFIG_MFD_TPS6586X is not set
|
||||
# CONFIG_RTC_DRV_TPS6586X is not set
|
||||
|
||||
CONFIG_PWM_TEGRA=m
|
||||
|
||||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
|
||||
CONFIG_DRM_TEGRA=m
|
||||
|
||||
CONFIG_CRYPTO_DEV_TEGRA_AES=m
|
||||
|
||||
CONFIG_LEDS_RENESAS_TPU=y
|
||||
|
||||
CONFIG_OF=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_TEGRA=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_PCI=y
|
||||
CONFIG_OF_PCI_IRQ=y
|
||||
|
||||
# CONFIG_DRM_TEGRA_DEBUG is not set
|
||||
# CONFIG_TI_DAC7512 is not set
|
||||
# CONFIG_SPI_TOPCLIFF_PCH is not set
|
||||
# CONFIG_SPI_DW_PCI is not set
|
||||
# CONFIG_SPI_PXA2XX is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_PINCTRL_EXYNOS is not set
|
||||
# CONFIG_PINCTRL_EXYNOS5440 is not set
|
|
@ -1,24 +0,0 @@
|
|||
# CONFIG_CFG80211 is not set
|
||||
# CONFIG_LIB80211 is not set
|
||||
|
||||
# CONFIG_MAC80211 is not set
|
||||
|
||||
# CONFIG_BCMA is not set
|
||||
|
||||
#
|
||||
# ssb and b44 share infrastructure with b43
|
||||
#
|
||||
# CONFIG_SSB is not set
|
||||
# CONFIG_B44 is not set
|
||||
|
||||
#
|
||||
# Prevent b43 and brcmsmac from competing
|
||||
#
|
||||
# CONFIG_B43_BCMA is not set
|
||||
|
||||
#
|
||||
# These have to be turned-on again since compat-wireless does not
|
||||
# provide them...
|
||||
#
|
||||
CONFIG_CRC7=m
|
||||
CONFIG_AVERAGE=y
|
|
@ -8,7 +8,6 @@ CONFIG_DEBUG_MUTEXES=y
|
|||
CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||
CONFIG_PROVE_LOCKING=y
|
||||
CONFIG_DEBUG_VM=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_PROVE_RCU=y
|
||||
# CONFIG_PROVE_RCU_REPEATEDLY is not set
|
||||
|
@ -73,6 +72,8 @@ CONFIG_DEBUG_PERF_USE_VMALLOC=y
|
|||
|
||||
CONFIG_JBD2_DEBUG=y
|
||||
|
||||
CONFIG_NFSD_FAULT_INJECTION=y
|
||||
|
||||
CONFIG_DEBUG_BLK_CGROUP=y
|
||||
|
||||
CONFIG_DRBD_FAULT_INJECTION=y
|
||||
|
@ -95,6 +96,7 @@ CONFIG_PCI_DEFAULT_USE_CRS=y
|
|||
|
||||
CONFIG_KGDB_KDB=y
|
||||
CONFIG_KDB_KEYBOARD=y
|
||||
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
|
||||
|
||||
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
||||
CONFIG_TEST_LIST_SORT=y
|
||||
|
@ -110,3 +112,8 @@ CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024
|
|||
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
|
||||
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
|
||||
|
||||
CONFIG_MAC80211_MESSAGE_TRACING=y
|
||||
|
||||
CONFIG_EDAC_DEBUG=y
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
|
|
829
config-generic
829
config-generic
File diff suppressed because it is too large
Load Diff
119
config-nodebug
119
config-nodebug
|
@ -2,111 +2,120 @@ CONFIG_SND_VERBOSE_PRINTK=y
|
|||
CONFIG_SND_DEBUG=y
|
||||
CONFIG_SND_PCM_XRUN_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_ATOMIC_SLEEP=y
|
||||
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
|
||||
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||
CONFIG_PROVE_LOCKING=y
|
||||
CONFIG_DEBUG_VM=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_PROVE_RCU=y
|
||||
# CONFIG_DEBUG_MUTEXES is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_DEBUG_LOCK_ALLOC is not set
|
||||
# CONFIG_PROVE_LOCKING is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_PROVE_RCU is not set
|
||||
# CONFIG_PROVE_RCU_REPEATEDLY is not set
|
||||
CONFIG_DEBUG_PER_CPU_MAPS=y
|
||||
# CONFIG_DEBUG_PER_CPU_MAPS is not set
|
||||
CONFIG_CPUMASK_OFFSTACK=y
|
||||
|
||||
CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
|
||||
# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
|
||||
|
||||
CONFIG_FAULT_INJECTION=y
|
||||
CONFIG_FAILSLAB=y
|
||||
CONFIG_FAIL_PAGE_ALLOC=y
|
||||
CONFIG_FAIL_MAKE_REQUEST=y
|
||||
CONFIG_FAULT_INJECTION_DEBUG_FS=y
|
||||
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
||||
CONFIG_FAIL_IO_TIMEOUT=y
|
||||
CONFIG_FAIL_MMC_REQUEST=y
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_FAILSLAB is not set
|
||||
# CONFIG_FAIL_PAGE_ALLOC is not set
|
||||
# CONFIG_FAIL_MAKE_REQUEST is not set
|
||||
# CONFIG_FAULT_INJECTION_DEBUG_FS is not set
|
||||
# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
|
||||
# CONFIG_FAIL_IO_TIMEOUT is not set
|
||||
# CONFIG_FAIL_MMC_REQUEST is not set
|
||||
|
||||
CONFIG_SLUB_DEBUG_ON=y
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
|
||||
CONFIG_LOCK_STAT=y
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
||||
CONFIG_ACPI_DEBUG=y
|
||||
# CONFIG_ACPI_DEBUG is not set
|
||||
# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
|
||||
|
||||
CONFIG_DEBUG_SG=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
||||
CONFIG_DEBUG_WRITECOUNT=y
|
||||
CONFIG_DEBUG_OBJECTS=y
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
|
||||
CONFIG_DEBUG_OBJECTS_FREE=y
|
||||
CONFIG_DEBUG_OBJECTS_TIMERS=y
|
||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
||||
# CONFIG_DEBUG_OBJECTS_FREE is not set
|
||||
# CONFIG_DEBUG_OBJECTS_TIMERS is not set
|
||||
# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set
|
||||
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
||||
|
||||
CONFIG_X86_PTDUMP=y
|
||||
# CONFIG_X86_PTDUMP is not set
|
||||
|
||||
CONFIG_CAN_DEBUG_DEVICES=y
|
||||
# CONFIG_CAN_DEBUG_DEVICES is not set
|
||||
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
|
||||
|
||||
CONFIG_DEBUG_NOTIFIERS=y
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
|
||||
CONFIG_DMA_API_DEBUG=y
|
||||
# CONFIG_DMA_API_DEBUG is not set
|
||||
|
||||
CONFIG_MMIOTRACE=y
|
||||
# CONFIG_MMIOTRACE is not set
|
||||
|
||||
CONFIG_DEBUG_CREDENTIALS=y
|
||||
# CONFIG_DEBUG_CREDENTIALS is not set
|
||||
|
||||
# off in both production debug and nodebug builds,
|
||||
# on in rawhide nodebug builds
|
||||
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
|
||||
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
|
||||
|
||||
CONFIG_EXT4_DEBUG=y
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
|
||||
CONFIG_DEBUG_PERF_USE_VMALLOC=y
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
|
||||
CONFIG_JBD2_DEBUG=y
|
||||
# CONFIG_JBD2_DEBUG is not set
|
||||
|
||||
CONFIG_DEBUG_BLK_CGROUP=y
|
||||
# CONFIG_NFSD_FAULT_INJECTION is not set
|
||||
|
||||
CONFIG_DRBD_FAULT_INJECTION=y
|
||||
# CONFIG_DEBUG_BLK_CGROUP is not set
|
||||
|
||||
CONFIG_ATH_DEBUG=y
|
||||
CONFIG_CARL9170_DEBUGFS=y
|
||||
CONFIG_IWLWIFI_DEVICE_TRACING=y
|
||||
# CONFIG_DRBD_FAULT_INJECTION is not set
|
||||
|
||||
CONFIG_DEBUG_OBJECTS_WORK=y
|
||||
# CONFIG_ATH_DEBUG is not set
|
||||
# CONFIG_CARL9170_DEBUGFS is not set
|
||||
# CONFIG_IWLWIFI_DEVICE_TRACING is not set
|
||||
|
||||
CONFIG_DMADEVICES_DEBUG=y
|
||||
CONFIG_DMADEVICES_VDEBUG=y
|
||||
# CONFIG_DEBUG_OBJECTS_WORK is not set
|
||||
|
||||
# CONFIG_DMADEVICES_DEBUG is not set
|
||||
# CONFIG_DMADEVICES_VDEBUG is not set
|
||||
|
||||
CONFIG_PM_ADVANCED_DEBUG=y
|
||||
|
||||
CONFIG_CEPH_LIB_PRETTYDEBUG=y
|
||||
CONFIG_QUOTA_DEBUG=y
|
||||
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
|
||||
# CONFIG_QUOTA_DEBUG is not set
|
||||
|
||||
CONFIG_PCI_DEFAULT_USE_CRS=y
|
||||
|
||||
CONFIG_KGDB_KDB=y
|
||||
CONFIG_KDB_KEYBOARD=y
|
||||
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
|
||||
|
||||
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
||||
CONFIG_TEST_LIST_SORT=y
|
||||
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
|
||||
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
|
||||
|
||||
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
|
||||
# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set
|
||||
|
||||
CONFIG_DEBUG_KMEMLEAK=y
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024
|
||||
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
|
||||
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
|
||||
|
||||
# CONFIG_MAC80211_MESSAGE_TRACING is not set
|
||||
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
|
||||
# CONFIG_SPI_DEBUG is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
|
|
|
@ -159,9 +159,15 @@ CONFIG_IDE_TASK_IOCTL=y
|
|||
# CONFIG_BLK_DEV_SLC90E66 is not set
|
||||
# CONFIG_BLK_DEV_TRM290 is not set
|
||||
# CONFIG_BLK_DEV_VIA82CXXX is not set
|
||||
CONFIG_BLK_DEV_IDE_PMAC=m
|
||||
CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
|
||||
# CONFIG_BLK_DEV_IDE_PMAC is not set
|
||||
# CONFIG_BLK_DEV_AMD74XX is not set
|
||||
# CONFIG_BLK_DEV_OPTI621 is not set
|
||||
# CONFIG_BLK_DEV_OFFBOARD is not set
|
||||
CONFIG_BLK_DEV_DELKIN=m
|
||||
# CONFIG_BLK_DEV_IT8213 is not set
|
||||
# CONFIG_BLK_DEV_TC86C001 is not set
|
||||
CONFIG_BLK_DEV_IDEDMA=y
|
||||
CONFIG_BLK_DEV_GENERIC=y
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
CONFIG_MTD_PHYSMAP_OF=m
|
||||
|
@ -175,11 +181,11 @@ CONFIG_PMAC_APM_EMU=m
|
|||
CONFIG_HW_RANDOM_PASEMI=m
|
||||
|
||||
CONFIG_EDAC=y
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_PASEMI=m
|
||||
CONFIG_EDAC_AMD8131=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
|
||||
# CONFIG_AXON_RAM is not set
|
||||
# CONFIG_OPROFILE_CELL is not set
|
||||
|
@ -307,7 +313,7 @@ CONFIG_SPARSE_IRQ=y
|
|||
# CONFIG_PPC_MPC5200_LPBFIFO is not set
|
||||
# CONFIG_CAN_MSCAN is not set
|
||||
# CONFIG_CAN_MPC5XXX is not set
|
||||
CONFIG_PATA_MACIO=m
|
||||
CONFIG_PATA_MACIO=y
|
||||
CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
||||
# CONFIG_PMIC_ADP5520 is not set
|
||||
# CONFIG_MFD_88PM8607 is not set
|
||||
|
@ -339,6 +345,7 @@ CONFIG_I2C_MPC=m
|
|||
CONFIG_RFKILL_GPIO=m
|
||||
|
||||
# CONFIG_CRYPTO_DEV_FSL_CAAM is not set
|
||||
# CONFIG_CRYPTO_SHA1_PPC is not set
|
||||
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
|
@ -350,9 +357,6 @@ CONFIG_RFKILL_GPIO=m
|
|||
# CONFIG_NET_VENDOR_PASEMI is not set
|
||||
# CONFIG_NET_VENDOR_TOSHIBA is not set
|
||||
|
||||
# Disable btrfs until it is shown to work with 64k pages (rhbz 747079)
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
#
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
|
@ -360,3 +364,30 @@ CONFIG_RFKILL_GPIO=m
|
|||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
CONFIG_RCU_FANOUT_LEAF=16
|
||||
|
||||
# CONFIG_IRQ_DOMAIN_DEBUG is not set
|
||||
# CONFIG_MPIC_MSGR is not set
|
||||
# CONFIG_FA_DUMP is not set
|
||||
# CONFIG_MDIO_BUS_MUX_GPIO is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
|
||||
# CONFIG_FAIL_IOMMU is not set
|
||||
|
||||
# CONFIG_PPC_DENORMALISATION is not set
|
||||
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
|
||||
# CONFIG_GPIO_ADNP is not set
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
# CONFIG_RTC_DRV_SNVS is not set
|
||||
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
||||
|
||||
# CONFIG_OF_DISPLAY_TIMING is not set
|
||||
# CONFIG_OF_VIDEOMODE is not set
|
||||
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
CONFIG_FB_SSD1307=m
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=n
|
||||
|
||||
CONFIG_XZ_DEC_POWERPC=y
|
||||
|
|
|
@ -33,6 +33,8 @@ CONFIG_SCSI_MESH=m
|
|||
CONFIG_SCSI_MESH_SYNC_RATE=5
|
||||
CONFIG_SCSI_MESH_RESET_DELAY_MS=4000
|
||||
|
||||
CONFIG_LBDAF=y
|
||||
|
||||
CONFIG_SCSI_MAC53C94=m
|
||||
CONFIG_ADB_CUDA=y
|
||||
CONFIG_ADB_MACIO=y
|
||||
|
@ -45,7 +47,7 @@ CONFIG_NET_VENDOR_APPLE=y
|
|||
CONFIG_BMAC=m
|
||||
CONFIG_MACE=m
|
||||
# CONFIG_MACE_AAUI_PORT is not set
|
||||
CONFIG_MV643XX_ETH=m
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
CONFIG_I2C_HYDRA=m
|
||||
CONFIG_I2C_MPC=m
|
||||
CONFIG_THERM_WINDTUNNEL=m
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
CONFIG_WINDFARM_PM81=y
|
||||
CONFIG_WINDFARM_PM91=y
|
||||
CONFIG_WINDFARM_PM121=y
|
||||
CONFIG_WINDFARM_PM72=y
|
||||
CONFIG_WINDFARM_RM31=y
|
||||
|
||||
CONFIG_PPC_PMAC64=y
|
||||
CONFIG_PPC_MAPLE=y
|
||||
# CONFIG_PPC_CELL is not set
|
||||
|
@ -139,8 +142,7 @@ CONFIG_PERF_EVENTS=y
|
|||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_KVM_BOOK3S_64=m
|
||||
#-- Enable _HV once publicly available POWER7 hardware can use it
|
||||
# CONFIG_KVM_BOOK3S_64_HV is not set
|
||||
CONFIG_KVM_BOOK3S_64_HV=y
|
||||
# CONFIG_KVM_EXIT_TIMING is not set
|
||||
|
||||
#-- bz#607175
|
||||
|
@ -154,12 +156,29 @@ CONFIG_SPARSEMEM_VMEMMAP=y
|
|||
|
||||
CONFIG_PSERIES_ENERGY=m
|
||||
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_PSERIES_IDLE=y
|
||||
|
||||
CONFIG_PPC_ICSWX=y
|
||||
CONFIG_IO_EVENT_IRQ=y
|
||||
CONFIG_HW_RANDOM_AMD=m
|
||||
|
||||
CONFIG_UIO_PDRV=m
|
||||
|
||||
CONFIG_HW_RANDOM_PSERIES=m
|
||||
CONFIG_CRYPTO_DEV_NX=y
|
||||
CONFIG_CRYPTO_842=m
|
||||
CONFIG_CRYPTO_DEV_NX_ENCRYPT=m
|
||||
CONFIG_CRYPTO_DEV_NX_COMPRESS=m
|
||||
|
||||
|
||||
CONFIG_BPF_JIT=y
|
||||
# CONFIG_PPC_ICSWX_PID is not set
|
||||
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
# CONFIG_PCIEPORTBUS is not set
|
||||
# CONFIG_PPC_TRANSACTIONAL_MEM is not set
|
||||
# CONFIG_SND_HDA_INTEL is not set
|
||||
CONFIG_BLK_DEV_RSXX=m
|
||||
|
||||
|
|
33
config-s390x
33
config-s390x
|
@ -197,6 +197,7 @@ CONFIG_QETH_L3=m
|
|||
CONFIG_CRYPTO_SHA512_S390=m
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
# CONFIG_KVM_S390_UCONTROL is not set
|
||||
CONFIG_S390_GUEST=y
|
||||
|
||||
|
||||
|
@ -210,6 +211,7 @@ CONFIG_CHSC_SCH=m
|
|||
CONFIG_HVC_IUCV=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
CONFIG_RCU_FANOUT_LEAF=16
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
|
@ -239,3 +241,34 @@ CONFIG_STRICT_DEVMEM=y
|
|||
CONFIG_CRYPTO_GHASH_S390=m
|
||||
CONFIG_NET_CORE=y
|
||||
CONFIG_ETHERNET=y
|
||||
|
||||
CONFIG_BPF_JIT=y
|
||||
# CONFIG_TRANSPARENT_HUGEPAGE is not set
|
||||
CONFIG_SCM_BUS=y
|
||||
CONFIG_EADM_SCH=m
|
||||
CONFIG_SCM_BLOCK=m
|
||||
CONFIG_SCM_BLOCK_CLUSTER_WRITE=y
|
||||
# CONFIG_S390_PTDUMP is not set
|
||||
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
||||
CONFIG_PCI_NR_FUNCTIONS=64
|
||||
CONFIG_HOTPLUG_PCI=m
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_HOTPLUG_PCI_S390=m
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
|
||||
# CONFIG_MEDIA_SUPPORT is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_SOUND is not set
|
||||
# CONFIG_DW_DMAC is not set
|
||||
# CONFIG_I2C_SMBUS is not set
|
||||
# CONFIG_I2C_STUB is not set
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
# CONFIG_I2C_PARPORT is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
|
||||
|
|
|
@ -1,198 +0,0 @@
|
|||
CONFIG_SMP=y
|
||||
CONFIG_SPARC=y
|
||||
CONFIG_SPARC64=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=100
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
|
||||
CONFIG_US3_FREQ=m
|
||||
CONFIG_US2E_FREQ=m
|
||||
|
||||
CONFIG_SUN_LDOMS=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_BBC_I2C is not set
|
||||
CONFIG_HUGETLB_PAGE_SIZE_4MB=y
|
||||
# CONFIG_HUGETLB_PAGE_SIZE_512K is not set
|
||||
# CONFIG_HUGETLB_PAGE_SIZE_64K is not set
|
||||
CONFIG_NR_CPUS=256
|
||||
CONFIG_US3_FREQ=m
|
||||
CONFIG_US2E_FREQ=m
|
||||
CONFIG_SUN_OPENPROMFS=m
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_BINFMT_ELF32=y
|
||||
CONFIG_ENVCTRL=m
|
||||
CONFIG_DISPLAY7SEG=m
|
||||
CONFIG_WATCHDOG_CP1XXX=m
|
||||
CONFIG_WATCHDOG_RIO=m
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_PARPORT is not set
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_LIRC_PARALLEL is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_SIMTEC is not set
|
||||
CONFIG_I2C_ALI1535=m
|
||||
# CONFIG_VGASTATE is not set
|
||||
# CONFIG_FB_DDC is not set
|
||||
# CONFIG_FB_BW2 is not set
|
||||
# CONFIG_FB_GRVGA is not set
|
||||
CONFIG_FB_CG3=y
|
||||
CONFIG_FB_CG6=y
|
||||
# CONFIG_FB_RIVA is not set
|
||||
# CONFIG_FB_MATROX is not set
|
||||
# CONFIG_FB_RADEON is not set
|
||||
CONFIG_FB_ATY=y
|
||||
# CONFIG_FB_S3 is not set
|
||||
# CONFIG_FB_SAVAGE is not set
|
||||
# CONFIG_FB_SIS is not set
|
||||
# CONFIG_FB_NEOMAGIC is not set
|
||||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
CONFIG_FB_SBUS=y
|
||||
CONFIG_FB_FFB=y
|
||||
# CONFIG_FB_TCX is not set
|
||||
# CONFIG_FB_CG14 is not set
|
||||
CONFIG_FB_PM2=y
|
||||
CONFIG_FB_P9100=y
|
||||
# CONFIG_FB_LEO is not set
|
||||
CONFIG_FB_XVR500=y
|
||||
CONFIG_FB_XVR2500=y
|
||||
# CONFIG_VGASTATE is not set
|
||||
# CONFIG_FB_DDC is not set
|
||||
# CONFIG_FB_CIRRUS is not set
|
||||
# CONFIG_FB_ATY128 is not set
|
||||
# CONFIG_FB_KYRO is not set
|
||||
# CONFIG_AGP is not set
|
||||
# CONFIG_DRM_NOUVEAU is not set
|
||||
# CONFIG_MDA_CONSOLE is not set
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONT_8x8 is not set
|
||||
# CONFIG_FONT_8x16 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
CONFIG_FONT_SUN8x16=y
|
||||
CONFIG_FONT_SUN12x22=y
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
CONFIG_SERIAL_SUNZILOG=y
|
||||
CONFIG_SERIAL_SUNZILOG_CONSOLE=y
|
||||
CONFIG_SERIAL_SUNSU=y
|
||||
CONFIG_SERIAL_SUNSU_CONSOLE=y
|
||||
CONFIG_SERIAL_SUNSAB=y
|
||||
CONFIG_SERIAL_SUNSAB_CONSOLE=y
|
||||
CONFIG_SERIAL_SUNHV=y
|
||||
CONFIG_SUN_OPENPROMIO=y
|
||||
CONFIG_OBP_FLASH=m
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_BLK_DEV_FD=y
|
||||
CONFIG_SUNVDC=m
|
||||
CONFIG_SUNVNET=m
|
||||
# CONFIG_BLK_DEV_AEC62XX is not set
|
||||
# CONFIG_BLK_DEV_HPT366 is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
||||
# CONFIG_BLK_DEV_SIIMAGE is not set
|
||||
# CONFIG_BLK_DEV_SLC90E66 is not set
|
||||
# CONFIG_BLK_DEV_VIA82CXXX is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_GDTH is not set
|
||||
# CONFIG_SCSI_AIC7XXX is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
CONFIG_SCSI_QLOGICPTI=m
|
||||
CONFIG_SCSI_SUNESP=m
|
||||
CONFIG_SUNLANCE=m
|
||||
CONFIG_SUNBMAC=m
|
||||
CONFIG_SUNQE=m
|
||||
# CONFIG_DM9102 is not set
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_R8169 is not set
|
||||
CONFIG_ATM_FORE200E_USE_TASKLET=y
|
||||
CONFIG_ATM_FORE200E_DEBUG=0
|
||||
CONFIG_ATM_FORE200E_TX_RETRY=16
|
||||
# CONFIG_DRM_TDFX is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
CONFIG_KEYBOARD_SUNKBD=y
|
||||
# CONFIG_INPUT_PCSPKR is not set
|
||||
CONFIG_INPUT_SPARCSPKR=m
|
||||
# CONFIG_SOUND_PRIME is not set
|
||||
# CONFIG_SND_SUN_AMD7930 is not set
|
||||
CONFIG_SND_SUN_CS4231=m
|
||||
# CONFIG_SND_SUN_DBRI is not set
|
||||
CONFIG_PARPORT_SUNBPP=m
|
||||
CONFIG_LOGO_SUN_CLUT224=y
|
||||
CONFIG_MTD_SUN_UFLASH=m
|
||||
CONFIG_MYRI_SBUS=m
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_VIDEO_ZORAN is not set
|
||||
# CONFIG_VIDEO_STRADIS is not set
|
||||
# CONFIG_IEEE1394_SBP2 is not set
|
||||
# CONFIG_USB_NET2280 is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_DCFLUSH is not set
|
||||
# CONFIG_DEBUG_BOOTMEM is not set
|
||||
# CONFIG_DEBUG_LOCK_ALLOC is not set
|
||||
# CONFIG_PROVE_LOCKING is not set
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
# CONFIG_LOCKDEP is not set
|
||||
# CONFIG_STACK_DEBUG is not set
|
||||
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
|
||||
# CONFIG_THERMAL is not set
|
||||
|
||||
CONFIG_FRAME_WARN=2048
|
||||
|
||||
CONFIG_NUMA=y
|
||||
|
||||
CONFIG_SND_SPARC=y
|
||||
|
||||
CONFIG_HW_RANDOM_N2RNG=m
|
||||
|
||||
# drivers/isdn/hardware/mISDN/hfcmulti.c:5255:2: error: #error "not running on big endian machines now"
|
||||
# CONFIG_MISDN_HFCMULTI is not set
|
||||
|
||||
CONFIG_US3_MC=y
|
||||
CONFIG_SENSORS_ULTRA45=m
|
||||
CONFIG_LEDS_SUNFIRE=m
|
||||
CONFIG_TADPOLE_TS102_UCTRL=m
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
CONFIG_LIRC_ENE0100=m
|
||||
# CONFIG_BATTERY_DS2782 is not set
|
||||
CONFIG_USB_GSPCA_SN9C20X=m
|
||||
CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
|
||||
CONFIG_LSM_MMAP_MIN_ADDR=65536
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_EARLYFB=y
|
||||
CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
||||
|
||||
CONFIG_GRETH=m
|
||||
CONFIG_FB_XVR1000=y
|
||||
|
||||
CONFIG_CRYPTO_DEV_NIAGARA2=y
|
||||
|
||||
# CONFIG_MTD_OF_PARTS is not set
|
||||
# CONFIG_MTD_PHYSMAP_OF is not set
|
||||
# CONFIG_MMC_SDHCI_OF is not set
|
||||
# CONFIG_OF_SELFTEST is not set
|
|
@ -3,6 +3,7 @@
|
|||
CONFIG_X86_32_NON_STANDARD=y
|
||||
|
||||
# CONFIG_X86_ELAN is not set
|
||||
# CONFIG_X86_GOLDFISH is not set
|
||||
# CONFIG_X86_NUMAQ is not set
|
||||
# CONFIG_X86_SUMMIT is not set
|
||||
CONFIG_X86_BIGSMP=y
|
||||
|
@ -27,6 +28,7 @@ CONFIG_M686=y
|
|||
# CONFIG_MWINCHIP3D is not set
|
||||
# CONFIG_MCYRIXIII is not set
|
||||
# CONFIG_MVIAC3_2 is not set
|
||||
# CONFIG_STA2X11 is not set
|
||||
|
||||
CONFIG_NR_CPUS=32
|
||||
CONFIG_X86_GENERIC=y
|
||||
|
@ -52,6 +54,8 @@ CONFIG_FB_GEODE_LX=y
|
|||
CONFIG_FB_GEODE_GX=y
|
||||
# CONFIG_FB_GEODE_GX1 is not set
|
||||
|
||||
CONFIG_FB_SSD1307=m
|
||||
|
||||
# CONFIG_PCI_GOBIOS is not set
|
||||
# CONFIG_PCI_GODIRECT is not set
|
||||
# CONFIG_PCI_GOMMCONFIG is not set
|
||||
|
@ -93,6 +97,8 @@ CONFIG_X86_TRAMPOLINE=y
|
|||
|
||||
CONFIG_PCI_DIRECT=y
|
||||
|
||||
# CONFIG_TRANSPARENT_HUGEPAGE is not set
|
||||
|
||||
# SHPC has half-arsed PCI probing, which makes it load on too many systems
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
|
||||
|
@ -137,6 +143,8 @@ CONFIG_XEN_MAX_DOMAIN_MEMORY=8
|
|||
|
||||
CONFIG_MTD_NAND_CAFE=m
|
||||
|
||||
CONFIG_LBDAF=y
|
||||
|
||||
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
|
||||
|
||||
|
||||
|
@ -176,6 +184,7 @@ CONFIG_XO1_RFKILL=m
|
|||
|
||||
CONFIG_X86_32_IRIS=m
|
||||
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_PHYSMAP_OF=m
|
||||
|
@ -187,6 +196,7 @@ CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
|||
# CONFIG_X86_INTEL_MID is not set
|
||||
|
||||
CONFIG_MFD_CS5535=m
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
|
||||
# I2O enabled only for 32-bit x86, disabled for PAE kernel
|
||||
CONFIG_I2O=m
|
||||
|
@ -197,6 +207,8 @@ CONFIG_I2O_CONFIG=y
|
|||
CONFIG_I2O_EXT_ADAPTEC=y
|
||||
CONFIG_I2O_CONFIG_OLD_IOCTL=y
|
||||
CONFIG_I2O_BUS=m
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
|
||||
# CONFIG_EDAC_SBRIDGE is not set
|
||||
|
||||
|
@ -205,3 +217,13 @@ CONFIG_I2O_BUS=m
|
|||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
# CONFIG_GEOS is not set
|
||||
# CONFIG_NET5501 is not set
|
||||
# CONFIG_MDIO_BUS_MUX_GPIO is not set
|
||||
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
|
||||
# CONFIG_GPIO_SODAVILLE is not set
|
||||
# CONFIG_GPIO_ADNP is not set
|
||||
# CONFIG_BACKLIGHT_OT200 is not set
|
||||
# CONFIG_RTC_DRV_SNVS is not set
|
||||
# CONFIG_OF_DISPLAY_TIMING is not set
|
||||
# CONFIG_OF_VIDEOMODE is not set
|
||||
|
|
|
@ -14,6 +14,7 @@ CONFIG_I8K=m
|
|||
CONFIG_SONYPI_COMPAT=y
|
||||
CONFIG_MICROCODE=m
|
||||
CONFIG_MICROCODE_INTEL=y
|
||||
CONFIG_MICROCODE_INTEL_EARLY=y
|
||||
CONFIG_MICROCODE_AMD=y
|
||||
|
||||
CONFIG_X86_MSR=y
|
||||
|
@ -28,7 +29,7 @@ CONFIG_PNP=y
|
|||
|
||||
CONFIG_MTRR=y
|
||||
CONFIG_MTRR_SANITIZER=y
|
||||
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
|
||||
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
|
||||
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
|
||||
CONFIG_X86_PAT=y
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
|
@ -36,6 +37,8 @@ CONFIG_X86_PM_TIMER=y
|
|||
CONFIG_EFI=y
|
||||
CONFIG_EFI_STUB=y
|
||||
CONFIG_EFI_VARS=y
|
||||
CONFIG_EFI_VARS_PSTORE=y
|
||||
CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
|
||||
CONFIG_EFI_PCDP=y
|
||||
CONFIG_FB_EFI=y
|
||||
|
||||
|
@ -67,7 +70,7 @@ CONFIG_ACPI_AC=y
|
|||
# CONFIG_ACPI_ASUS is not set
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_CONTAINER=m
|
||||
CONFIG_ACPI_CONTAINER=y
|
||||
CONFIG_ACPI_DOCK=y
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_NUMA=y
|
||||
|
@ -78,6 +81,7 @@ CONFIG_ACPI_SLEEP=y
|
|||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_ACPI_TOSHIBA=m
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
|
||||
# FIXME: Next two are deprecated. Remove them when they disappear upstream
|
||||
# CONFIG_ACPI_PROCFS_POWER is not set
|
||||
# CONFIG_ACPI_PROC_EVENT is not set
|
||||
|
@ -91,11 +95,14 @@ CONFIG_ACPI_APEI_MEMORY_FAILURE=y
|
|||
# CONFIG_ACPI_APEI_EINJ is not set
|
||||
CONFIG_ACPI_IPMI=m
|
||||
CONFIG_ACPI_CUSTOM_METHOD=m
|
||||
CONFIG_ACPI_BGRT=y
|
||||
|
||||
CONFIG_X86_ACPI_CPUFREQ=y
|
||||
CONFIG_X86_PCC_CPUFREQ=y
|
||||
CONFIG_X86_POWERNOW_K8=y
|
||||
CONFIG_X86_P4_CLOCKMOD=y
|
||||
# CONFIG_X86_INTEL_PSTATE is not set
|
||||
CONFIG_X86_ACPI_CPUFREQ=m
|
||||
CONFIG_X86_PCC_CPUFREQ=m
|
||||
CONFIG_X86_ACPI_CPUFREQ_CPB=y
|
||||
CONFIG_X86_POWERNOW_K8=m
|
||||
CONFIG_X86_P4_CLOCKMOD=m
|
||||
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
||||
|
||||
#
|
||||
|
@ -139,6 +146,7 @@ CONFIG_I2C_AMD756_S4882=m
|
|||
CONFIG_I2C_AMD8111=m
|
||||
CONFIG_I2C_I801=m
|
||||
CONFIG_I2C_ISCH=m
|
||||
CONFIG_I2C_ISMT=m
|
||||
CONFIG_I2C_NFORCE2=m
|
||||
CONFIG_I2C_NFORCE2_S4985=m
|
||||
CONFIG_I2C_PIIX4=m
|
||||
|
@ -150,7 +158,6 @@ CONFIG_DELL_RBU=m
|
|||
CONFIG_DCDBAS=m
|
||||
|
||||
CONFIG_EDAC=y
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_AMD76X=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
|
@ -171,6 +178,7 @@ CONFIG_EDAC_R82600=m
|
|||
CONFIG_EDAC_X38=m
|
||||
CONFIG_EDAC_MCE_INJ=m
|
||||
CONFIG_EDAC_DECODE_MCE=m
|
||||
CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
|
||||
CONFIG_SCHED_MC=y
|
||||
|
||||
|
@ -187,10 +195,13 @@ CONFIG_HW_RANDOM_VIA=m
|
|||
|
||||
CONFIG_X86_PLATFORM_DEVICES=y
|
||||
|
||||
CONFIG_AMILO_RFKILL=m
|
||||
CONFIG_ASUS_LAPTOP=m
|
||||
CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_DELL_LAPTOP=m
|
||||
CONFIG_CHROMEOS_LAPTOP=m
|
||||
CONFIG_EEEPC_LAPTOP=m
|
||||
CONFIG_FUJITSU_TABLET=m
|
||||
CONFIG_FUJITSU_LAPTOP=m
|
||||
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
|
||||
CONFIG_IDEAPAD_LAPTOP=m
|
||||
|
@ -200,6 +211,7 @@ CONFIG_SAMSUNG_LAPTOP=m
|
|||
CONFIG_SONY_LAPTOP=m
|
||||
CONFIG_TOPSTAR_LAPTOP=m
|
||||
|
||||
|
||||
CONFIG_ACPI_WMI=m
|
||||
CONFIG_ACER_WMI=m
|
||||
CONFIG_ACERHDF=m
|
||||
|
@ -212,6 +224,7 @@ CONFIG_DELL_WMI_AIO=m
|
|||
CONFIG_EEEPC_WMI=m
|
||||
CONFIG_INTEL_OAKTRAIL=m
|
||||
CONFIG_SAMSUNG_Q10=m
|
||||
CONFIG_APPLE_GMUX=m
|
||||
CONFIG_XO15_EBOOK=m
|
||||
|
||||
# CONFIG_TOUCHSCREEN_INTEL_MID is not set
|
||||
|
@ -219,6 +232,7 @@ CONFIG_XO15_EBOOK=m
|
|||
# CONFIG_SMSC37B787_WDT is not set
|
||||
CONFIG_W83697HF_WDT=m
|
||||
CONFIG_VIA_WDT=m
|
||||
CONFIG_IE6XX_WDT=m
|
||||
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_PROC_VMCORE=y
|
||||
|
@ -249,6 +263,7 @@ CONFIG_XEN_BALLOON=y
|
|||
CONFIG_XEN_SCRUB_PAGES=y
|
||||
CONFIG_XEN_SAVE_RESTORE=y
|
||||
CONFIG_HVC_XEN=y
|
||||
CONFIG_HVC_XEN_FRONTEND=y
|
||||
CONFIG_XEN_FBDEV_FRONTEND=y
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=m
|
||||
CONFIG_XEN_NETDEV_FRONTEND=m
|
||||
|
@ -266,6 +281,7 @@ CONFIG_XEN_GNTDEV=m
|
|||
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
|
||||
CONFIG_XEN_SELFBALLOONING=y
|
||||
CONFIG_XEN_PCIDEV_BACKEND=m
|
||||
CONFIG_XEN_ACPI_PROCESSOR=m
|
||||
|
||||
CONFIG_MTD_ESB2ROM=m
|
||||
CONFIG_MTD_CK804XROM=m
|
||||
|
@ -273,6 +289,7 @@ CONFIG_MTD_CK804XROM=m
|
|||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
|
||||
|
@ -310,7 +327,8 @@ CONFIG_STRICT_DEVMEM=y
|
|||
# CONFIG_NO_BOOTMEM is not set
|
||||
|
||||
# CONFIG_MEMTEST is not set
|
||||
CONFIG_MAXSMP=y
|
||||
# CONFIG_DEBUG_TLBFLUSH is not set
|
||||
# CONFIG_MAXSMP is not set
|
||||
|
||||
|
||||
CONFIG_HP_ILO=m
|
||||
|
@ -334,7 +352,7 @@ CONFIG_PERF_EVENTS=y
|
|||
CONFIG_X86_MCE=y
|
||||
CONFIG_X86_MCE_INTEL=y
|
||||
CONFIG_X86_MCE_AMD=y
|
||||
# CONFIG_X86_MCE_INJECT is not set
|
||||
CONFIG_X86_MCE_INJECT=m
|
||||
|
||||
CONFIG_SFI=y
|
||||
|
||||
|
@ -349,6 +367,10 @@ CONFIG_TOSHIBA_BT_RFKILL=m
|
|||
|
||||
CONFIG_VGA_SWITCHEROO=y
|
||||
CONFIG_LPC_SCH=m
|
||||
CONFIG_LPC_ICH=m
|
||||
|
||||
CONFIG_GPIO_ICH=m
|
||||
# CONFIG_GPIO_LYNXPOINT is not set
|
||||
|
||||
CONFIG_PCI_CNB20LE_QUIRK=y
|
||||
|
||||
|
@ -372,13 +394,14 @@ CONFIG_VIDEO_VIA_CAMERA=m
|
|||
CONFIG_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_X86_RESERVE_LOW=64
|
||||
|
||||
# CONFIG_IRQ_DOMAIN_DEBUG is not set
|
||||
|
||||
CONFIG_PCH_GBE=m
|
||||
CONFIG_PCH_PHUB=m
|
||||
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
|
||||
CONFIG_CRYPTO_AES_NI_INTEL=y
|
||||
CONFIG_CRYPTO_SERPENT_SSE2_586=m
|
||||
CONFIG_CRYPTO_CRC32_PCLMUL=m
|
||||
|
||||
CONFIG_HP_ACCEL=m
|
||||
|
||||
|
@ -391,15 +414,34 @@ CONFIG_SCHED_SMT=y
|
|||
CONFIG_CC_STACKPROTECTOR=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
|
||||
# CONFIG_HYPERV is not set
|
||||
CONFIG_HYPERV=m
|
||||
CONFIG_HYPERV_UTILS=m
|
||||
CONFIG_HID_HYPERV_MOUSE=m
|
||||
CONFIG_HYPERV_NET=m
|
||||
CONFIG_HYPERV_STORAGE=m
|
||||
CONFIG_HYPERV_BALLOON=m
|
||||
|
||||
# Depends on HOTPLUG_PCI_PCIE
|
||||
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
|
||||
|
||||
CONFIG_DRM_GMA500=m
|
||||
# CONFIG_DRM_GMA600 is not set
|
||||
# CONFIG_DRM_GMA3600 is not set
|
||||
CONFIG_DRM_GMA3600=y
|
||||
|
||||
CONFIG_RCU_FANOUT_LEAF=16
|
||||
|
||||
CONFIG_INTEL_MEI=m
|
||||
CONFIG_INTEL_MEI_ME=y
|
||||
|
||||
# Maybe enable in debug kernels?
|
||||
# CONFIG_DEBUG_NMI_SELFTEST is not set
|
||||
|
||||
# CONFIG_X86_INTEL_LPSS is not set
|
||||
|
||||
# CONFIG_INTEL_POWERCLAMP is not set
|
||||
|
||||
CONFIG_VMWARE_VMCI=m
|
||||
CONFIG_VMWARE_VMCI_VSOCKETS=m
|
||||
|
||||
CONFIG_VMXNET3=m
|
||||
CONFIG_VFIO_PCI_VGA=y
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
CONFIG_64BIT=y
|
||||
|
||||
# CONFIG_X86_X32 is not set
|
||||
# CONFIG_MK8 is not set
|
||||
# CONFIG_MPSC is not set
|
||||
CONFIG_GENERIC_CPU=y
|
||||
|
@ -12,8 +13,10 @@ CONFIG_AMD_NUMA=y
|
|||
CONFIG_X86_64_ACPI_NUMA=y
|
||||
# CONFIG_NUMA_EMU is not set
|
||||
# CONFIG_X86_NUMACHIP is not set
|
||||
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
|
||||
CONFIG_NUMA_BALANCING=y
|
||||
|
||||
CONFIG_NR_CPUS=64
|
||||
CONFIG_NR_CPUS=128
|
||||
CONFIG_PHYSICAL_START=0x1000000
|
||||
|
||||
CONFIG_IA32_EMULATION=y
|
||||
|
@ -26,6 +29,8 @@ CONFIG_AMD_IOMMU_V2=m
|
|||
CONFIG_SWIOTLB=y
|
||||
# CONFIG_CALGARY_IOMMU is not set
|
||||
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
|
||||
CONFIG_KEXEC_JUMP=y
|
||||
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=0
|
||||
|
@ -44,6 +49,12 @@ CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
|
|||
CONFIG_CRYPTO_SHA1_SSSE3=m
|
||||
CONFIG_CRYPTO_BLOWFISH_X86_64=m
|
||||
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
|
||||
CONFIG_CRYPTO_CAMELLIA_X86_64=m
|
||||
CONFIG_CRYPTO_CAST5_AVX_X86_64=m
|
||||
CONFIG_CRYPTO_CAST6_AVX_X86_64=m
|
||||
CONFIG_CRYPTO_SERPENT_AVX_X86_64=m
|
||||
CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m
|
||||
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m
|
||||
|
||||
# CONFIG_I2C_ALI1535 is not set
|
||||
# CONFIG_I2C_ALI1563 is not set
|
||||
|
@ -63,6 +74,7 @@ CONFIG_SPARSEMEM=y
|
|||
CONFIG_HAVE_MEMORY_PRESENT=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
# CONFIG_MOVABLE_NODE is not set
|
||||
# CONFIG_MEMORY_HOTPLUG is not set
|
||||
# CONFIG_MEMORY_HOTREMOVE is not set
|
||||
|
||||
|
@ -84,6 +96,7 @@ CONFIG_XEN_MAX_DOMAIN_MEMORY=128
|
|||
# CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is not set
|
||||
CONFIG_XEN_DEV_EVTCHN=m
|
||||
CONFIG_XEN_SYS_HYPERVISOR=y
|
||||
# CONFIG_XEN_MCE_LOG is not set
|
||||
|
||||
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
|
||||
|
||||
|
@ -102,6 +115,7 @@ CONFIG_X86_X2APIC=y
|
|||
CONFIG_SPARSE_IRQ=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
# CONFIG_RCU_USER_QS is not set
|
||||
|
||||
CONFIG_INTEL_TXT=y
|
||||
|
||||
|
@ -116,3 +130,21 @@ CONFIG_BPF_JIT=y
|
|||
# Should be 32bit only, but lacks KConfig depends
|
||||
# CONFIG_XO15_EBOOK is not set
|
||||
|
||||
CONFIG_NTB=m
|
||||
CONFIG_NTB_NETDEV=m
|
||||
|
||||
# 10GigE
|
||||
#
|
||||
CONFIG_IP1000=m
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MLX4_EN_DCB=y
|
||||
# CONFIG_MLX4_DEBUG is not set
|
||||
CONFIG_SFC=m
|
||||
CONFIG_SFC_MCDI_MON=y
|
||||
CONFIG_SFC_SRIOV=y
|
||||
CONFIG_SFC_PTP=y
|
||||
CONFIG_SFC_MTD=y
|
||||
# Override MTD stuff because SFC_MTD needs it
|
||||
CONFIG_MTD_CHAR=m
|
||||
CONFIG_MTD_BLOCK=m
|
||||
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
|
||||
index 639d26b..2b94403 100644
|
||||
--- a/drivers/block/cpqarray.c
|
||||
+++ b/drivers/block/cpqarray.c
|
||||
@@ -1193,6 +1193,7 @@ out_passthru:
|
||||
ida_pci_info_struct pciinfo;
|
||||
|
||||
if (!arg) return -EINVAL;
|
||||
+ memset(&pciinfo, 0, sizeof(pciinfo));
|
||||
pciinfo.bus = host->pci_dev->bus->number;
|
||||
pciinfo.dev_fn = host->pci_dev->devfn;
|
||||
pciinfo.board_id = host->board_id;
|
||||
|
||||
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
|
||||
index 6374dc1..34971aa 100644
|
||||
--- a/drivers/block/cciss.c
|
||||
+++ b/drivers/block/cciss.c
|
||||
@@ -1201,6 +1201,7 @@ static int cciss_ioctl32_passthru(struct block_device *bdev, fmode_t mode,
|
||||
int err;
|
||||
u32 cp;
|
||||
|
||||
+ memset(&arg64, 0, sizeof(arg64));
|
||||
err = 0;
|
||||
err |=
|
||||
copy_from_user(&arg64.LUN_info, &arg32->LUN_info,
|
||||
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
--- linux.orig/include/asm-generic/bug.h
|
||||
+++ linux/include/asm-generic/bug.h
|
||||
@@ -55,6 +55,8 @@ struct bug_entry {
|
||||
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0)
|
||||
#endif
|
||||
|
||||
+void print_hardware_dmi_name(void);
|
||||
+
|
||||
/*
|
||||
* WARN(), WARN_ON(), WARN_ON_ONCE, and so on can be used to report
|
||||
* significant issues that need prompt attention if they should ever
|
||||
--- linux.orig/kernel/panic.c
|
||||
+++ linux/kernel/panic.c
|
||||
@@ -391,6 +391,15 @@ void oops_exit(void)
|
||||
kmsg_dump(KMSG_DUMP_OOPS);
|
||||
}
|
||||
|
||||
+void print_hardware_dmi_name(void)
|
||||
+{
|
||||
+ const char *board;
|
||||
+
|
||||
+ board = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||
+ if (board)
|
||||
+ printk(KERN_WARNING "Hardware name: %s\n", board);
|
||||
+}
|
||||
+
|
||||
#ifdef WANT_WARN_ON_SLOWPATH
|
||||
struct slowpath_args {
|
||||
const char *fmt;
|
||||
@@ -400,13 +409,10 @@ struct slowpath_args {
|
||||
static void warn_slowpath_common(const char *file, int line, void *caller,
|
||||
unsigned taint, struct slowpath_args *args)
|
||||
{
|
||||
- const char *board;
|
||||
-
|
||||
printk(KERN_WARNING "------------[ cut here ]------------\n");
|
||||
printk(KERN_WARNING "WARNING: at %s:%d %pS()\n", file, line, caller);
|
||||
- board = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||
- if (board)
|
||||
- printk(KERN_WARNING "Hardware name: %s\n", board);
|
||||
+
|
||||
+ print_hardware_dmi_name();
|
||||
|
||||
if (args)
|
||||
vprintk(args->fmt, args->args);
|
||||
--- linux.orig/mm/memory.c
|
||||
+++ linux/mm/memory.c
|
||||
@@ -706,6 +706,8 @@ static void print_bad_pte(struct vm_area
|
||||
"BUG: Bad page map in process %s pte:%08llx pmd:%08llx\n",
|
||||
current->comm,
|
||||
(long long)pte_val(pte), (long long)pmd_val(*pmd));
|
||||
+ print_hardware_dmi_name();
|
||||
+
|
||||
if (page)
|
||||
dump_page(page);
|
||||
printk(KERN_ALERT
|
||||
--- linux.orig/mm/page_alloc.c
|
||||
+++ linux/mm/page_alloc.c
|
||||
@@ -321,6 +321,7 @@ static void bad_page(struct page *page)
|
||||
current->comm, page_to_pfn(page));
|
||||
dump_page(page);
|
||||
|
||||
+ print_hardware_dmi_name();
|
||||
print_modules();
|
||||
dump_stack();
|
||||
out:
|
|
@ -0,0 +1,21 @@
|
|||
diff -durpN '--exclude-from=/home/davej/.exclude' /home/davej/src/kernel/git-trees/linux/mm/memory.c linux-dj/mm/memory.c
|
||||
--- /home/davej/src/kernel/git-trees/linux/mm/memory.c 2013-02-26 14:41:18.591116577 -0500
|
||||
+++ linux-dj/mm/memory.c 2013-02-28 20:04:37.678304092 -0500
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <linux/swapops.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/gfp.h>
|
||||
+#include <linux/module.h>
|
||||
#include <linux/migrate.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
--- linux-3.9.0-200.fc18.x86_64/mm/memory.c~ 2013-05-06 15:04:30.324416922 -0400
|
||||
+++ linux-3.9.0-200.fc18.x86_64/mm/memory.c 2013-05-06 15:04:43.933398227 -0400
|
||||
@@ -723,6 +723,7 @@ static void print_bad_pte(struct vm_area
|
||||
if (vma->vm_file && vma->vm_file->f_op)
|
||||
print_symbol(KERN_ALERT "vma->vm_file->f_op->mmap: %s\n",
|
||||
(unsigned long)vma->vm_file->f_op->mmap);
|
||||
+ print_modules();
|
||||
dump_stack();
|
||||
add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
|
||||
}
|
|
@ -16,7 +16,7 @@ index 4789f8e..5923914 100644
|
|||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x006a, quirk_calpella_no_shadow_gtt);
|
||||
|
||||
+/* https://bugzilla.redhat.com/show_bug.cgi?id=605888 */
|
||||
+static void __devinit quirk_ricoh_multifunction(struct pci_dev *dev)
|
||||
+static void quirk_ricoh_multifunction(struct pci_dev *dev)
|
||||
+{
|
||||
+ dmar_disabled = 1;
|
||||
+}
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
|
||||
index 296cfc2..516e1e2 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_dp.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_dp.c
|
||||
@@ -350,7 +350,7 @@ intel_dp_check_edp(struct intel_dp *intel_dp)
|
||||
if (!is_edp(intel_dp))
|
||||
return;
|
||||
if (!ironlake_edp_have_panel_power(intel_dp) && !ironlake_edp_have_panel_vdd(intel_dp)) {
|
||||
- WARN(1, "eDP powered off while attempting aux channel communication.\n");
|
||||
+ DRM_ERROR("eDP powered off while attempting aux channel communication.\n");
|
||||
DRM_DEBUG_KMS("Status 0x%08x Control 0x%08x\n",
|
||||
I915_READ(PCH_PP_STATUS),
|
||||
I915_READ(PCH_PP_CONTROL));
|
||||
@@ -447,7 +447,7 @@ intel_dp_aux_ch(struct intel_dp *intel_d
|
||||
}
|
||||
|
||||
if (try == 3) {
|
||||
- WARN(1, "dp_aux_ch not started status 0x%08x\n",
|
||||
+ DRM_ERROR("dp_aux_ch not started status 0x%08x\n",
|
||||
I915_READ(ch_ctl));
|
||||
ret = -EBUSY;
|
||||
goto out;
|
||||
@@ -1024,8 +1024,8 @@ static void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
|
||||
return;
|
||||
DRM_DEBUG_KMS("Turn eDP VDD on\n");
|
||||
|
||||
- WARN(intel_dp->want_panel_vdd,
|
||||
- "eDP VDD already requested on\n");
|
||||
+ if (intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("eDP VDD already requested on\n");
|
||||
|
||||
intel_dp->want_panel_vdd = true;
|
||||
|
||||
@@ -1090,7 +1090,8 @@ static void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
|
||||
return;
|
||||
|
||||
DRM_DEBUG_KMS("Turn eDP VDD off %d\n", intel_dp->want_panel_vdd);
|
||||
- WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on");
|
||||
+ if (!intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("eDP VDD not forced on");
|
||||
|
||||
intel_dp->want_panel_vdd = false;
|
||||
|
||||
@@ -1160,7 +1161,8 @@ static void ironlake_edp_panel_off(struct intel_dp *intel_dp)
|
||||
|
||||
DRM_DEBUG_KMS("Turn eDP power off\n");
|
||||
|
||||
- WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n");
|
||||
+ if (!intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("Need VDD to turn off panel\n");
|
||||
|
||||
pp = ironlake_get_pp_control(dev_priv);
|
||||
pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE);
|
|
@ -0,0 +1,46 @@
|
|||
Obviously this is not upstreamable...
|
||||
|
||||
diff -up linux-3.7.5-202.fc18.x86_64/drivers/gpu/drm/i915/intel_display.c.jx linux-3.7.5-202.fc18.x86_64/drivers/gpu/drm/i915/intel_display.c
|
||||
--- linux-3.7.5-202.fc18.x86_64/drivers/gpu/drm/i915/intel_display.c.jx 2013-01-30 12:03:28.000000000 -0500
|
||||
+++ linux-3.7.5-202.fc18.x86_64/drivers/gpu/drm/i915/intel_display.c 2013-01-30 12:40:53.177449368 -0500
|
||||
@@ -6925,6 +6925,11 @@ intel_modeset_check_state(struct drm_dev
|
||||
struct intel_encoder *encoder;
|
||||
struct intel_connector *connector;
|
||||
|
||||
+ /* oh hush */
|
||||
+ extern int i915_in_tv_detect;
|
||||
+ if (i915_in_tv_detect)
|
||||
+ return;
|
||||
+
|
||||
list_for_each_entry(connector, &dev->mode_config.connector_list,
|
||||
base.head) {
|
||||
/* This also checks the encoder/connector hw state with the
|
||||
diff -up linux-3.7.5-202.fc18.x86_64/drivers/gpu/drm/i915/intel_tv.c.jx linux-3.7.5-202.fc18.x86_64/drivers/gpu/drm/i915/intel_tv.c
|
||||
--- linux-3.7.5-202.fc18.x86_64/drivers/gpu/drm/i915/intel_tv.c.jx 2012-12-10 22:30:57.000000000 -0500
|
||||
+++ linux-3.7.5-202.fc18.x86_64/drivers/gpu/drm/i915/intel_tv.c 2013-01-30 12:39:34.318593585 -0500
|
||||
@@ -1296,6 +1296,8 @@ static void intel_tv_find_better_format(
|
||||
connector->dev->mode_config.tv_mode_property, i);
|
||||
}
|
||||
|
||||
+int i915_in_tv_detect = 0;
|
||||
+
|
||||
/**
|
||||
* Detect the TV connection.
|
||||
*
|
||||
@@ -1314,11 +1316,15 @@ intel_tv_detect(struct drm_connector *co
|
||||
if (force) {
|
||||
struct intel_load_detect_pipe tmp;
|
||||
|
||||
+ i915_in_tv_detect = 1;
|
||||
if (intel_get_load_detect_pipe(connector, &mode, &tmp)) {
|
||||
type = intel_tv_detect_type(intel_tv, connector);
|
||||
intel_release_load_detect_pipe(connector, &tmp);
|
||||
- } else
|
||||
+ i915_in_tv_detect = 0;
|
||||
+ } else {
|
||||
+ i915_in_tv_detect = 0;
|
||||
return connector_status_unknown;
|
||||
+ }
|
||||
} else
|
||||
return connector->status;
|
||||
|
|
@ -0,0 +1,492 @@
|
|||
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
|
||||
index 2418429..566c468 100644
|
||||
--- a/drivers/gpu/drm/Kconfig
|
||||
+++ b/drivers/gpu/drm/Kconfig
|
||||
@@ -159,6 +159,14 @@ config DRM_SAVAGE
|
||||
Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister
|
||||
chipset. If M is selected the module will be called savage.
|
||||
|
||||
+config DRM_VGEM
|
||||
+ tristate "Virtual GEM provider"
|
||||
+ depends on DRM
|
||||
+ help
|
||||
+ Choose this option to get a virtual graphics memory manager,
|
||||
+ as used by Mesa's software renderer for enhanced performance.
|
||||
+ If M is selected the module will be called vgem.
|
||||
+
|
||||
source "drivers/gpu/drm/exynos/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/vmwgfx/Kconfig"
|
||||
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
|
||||
index 0cde1b8..021bf8a 100644
|
||||
--- a/drivers/gpu/drm/Makefile
|
||||
+++ b/drivers/gpu/drm/Makefile
|
||||
@@ -34,6 +34,7 @@ obj-$(CONFIG_DRM_SIS) += sis/
|
||||
obj-$(CONFIG_DRM_SAVAGE)+= savage/
|
||||
obj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/
|
||||
obj-$(CONFIG_DRM_VIA) +=via/
|
||||
+obj-$(CONFIG_DRM_VGEM) += vgem/
|
||||
obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/
|
||||
obj-$(CONFIG_DRM_EXYNOS) +=exynos/
|
||||
obj-$(CONFIG_DRM_GMA500) += gma500/
|
||||
diff --git a/drivers/gpu/drm/vgem/Makefile b/drivers/gpu/drm/vgem/Makefile
|
||||
new file mode 100644
|
||||
index 0000000..3f4c7b8
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/vgem/Makefile
|
||||
@@ -0,0 +1,4 @@
|
||||
+ccflags-y := -Iinclude/drm
|
||||
+vgem-y := vgem_drv.o
|
||||
+
|
||||
+obj-$(CONFIG_DRM_VGEM) += vgem.o
|
||||
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
|
||||
new file mode 100644
|
||||
index 0000000..16f88ee
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
|
||||
@@ -0,0 +1,377 @@
|
||||
+/*
|
||||
+ * Copyright 2011 Red Hat, Inc.
|
||||
+ *
|
||||
+ * Permission is hereby granted, free of charge, to any person obtaining a
|
||||
+ * copy of this software and associated documentation files (the "Software")
|
||||
+ * to deal in the software without restriction, including without limitation
|
||||
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
|
||||
+ * license, and/or sell copies of the Software, and to permit persons to whom
|
||||
+ * them Software is furnished to do so, subject to the following conditions:
|
||||
+ *
|
||||
+ * The above copyright notice and this permission notice (including the next
|
||||
+ * paragraph) shall be included in all copies or substantial portions of the
|
||||
+ * Software.
|
||||
+ *
|
||||
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTIBILITY,
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
+ * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER
|
||||
+ * IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
+ *
|
||||
+ * Authors:
|
||||
+ * Adam Jackson <ajax@redhat.com>
|
||||
+ */
|
||||
+
|
||||
+/**
|
||||
+ * This is vgem, a (non-hardware-backed) GEM service. This is used by Mesa's
|
||||
+ * software renderer and the X server for efficient buffer sharing.
|
||||
+ */
|
||||
+
|
||||
+#include "drmP.h"
|
||||
+#include "drm.h"
|
||||
+#include "vgem_drm.h"
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/ramfs.h>
|
||||
+#include <linux/shmem_fs.h>
|
||||
+
|
||||
+#define DRIVER_NAME "vgem"
|
||||
+#define DRIVER_DESC "Virtual GEM provider"
|
||||
+#define DRIVER_DATE "20120112"
|
||||
+#define DRIVER_MAJOR 1
|
||||
+#define DRIVER_MINOR 0
|
||||
+
|
||||
+#define to_vgem_bo(x) container_of(x, struct drm_vgem_gem_object, base)
|
||||
+
|
||||
+struct drm_vgem_gem_object {
|
||||
+ struct drm_gem_object base;
|
||||
+ struct page **pages;
|
||||
+};
|
||||
+
|
||||
+static int vgem_load(struct drm_device *dev, unsigned long flags)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int vgem_unload(struct drm_device *dev)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void vgem_preclose(struct drm_device *dev, struct drm_file *file)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+static void vgem_lastclose(struct drm_device *dev)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+static int vgem_gem_init_object(struct drm_gem_object *obj)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void vgem_gem_put_pages(struct drm_vgem_gem_object *obj)
|
||||
+{
|
||||
+ int num_pages = obj->base.size / PAGE_SIZE;
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < num_pages; i++) {
|
||||
+ page_cache_release(obj->pages[i]);
|
||||
+ }
|
||||
+
|
||||
+ drm_free_large(obj->pages);
|
||||
+ obj->pages = NULL;
|
||||
+}
|
||||
+
|
||||
+static void vgem_gem_free_object(struct drm_gem_object *obj)
|
||||
+{
|
||||
+ struct drm_vgem_gem_object *vgem_obj = to_vgem_bo(obj);
|
||||
+
|
||||
+ if (obj)
|
||||
+ drm_gem_free_mmap_offset(obj);
|
||||
+
|
||||
+ drm_gem_object_release(obj);
|
||||
+
|
||||
+ if (vgem_obj->pages)
|
||||
+ vgem_gem_put_pages(vgem_obj);
|
||||
+
|
||||
+ kfree(vgem_obj);
|
||||
+}
|
||||
+
|
||||
+static int vgem_gem_get_pages(struct drm_vgem_gem_object *obj)
|
||||
+{
|
||||
+ struct address_space *mapping;
|
||||
+ gfp_t gfpmask = __GFP_NORETRY | __GFP_NOWARN;
|
||||
+ int num_pages, i, ret = 0;
|
||||
+
|
||||
+ num_pages = obj->base.size / PAGE_SIZE;
|
||||
+
|
||||
+ if (!obj->pages) {
|
||||
+ obj->pages = drm_malloc_ab(num_pages, sizeof(struct page *));
|
||||
+ if (obj->pages == NULL)
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping;
|
||||
+ gfpmask |= mapping_gfp_mask(mapping);
|
||||
+
|
||||
+ if (WARN_ON(mapping == NULL))
|
||||
+ return VM_FAULT_SIGBUS;
|
||||
+
|
||||
+ for (i = 0; i < num_pages; i++) {
|
||||
+ struct page *page;
|
||||
+ page = shmem_read_mapping_page_gfp(mapping, i, gfpmask);
|
||||
+ if (IS_ERR(page)) {
|
||||
+ ret = PTR_ERR(page);
|
||||
+ goto err_out;
|
||||
+ }
|
||||
+ obj->pages[i] = page;
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+
|
||||
+err_out:
|
||||
+ while (i--)
|
||||
+ page_cache_release(obj->pages[i]);
|
||||
+ drm_free_large(obj->pages);
|
||||
+ obj->pages = NULL;
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
||||
+{
|
||||
+ struct drm_vgem_gem_object *obj = to_vgem_bo(vma->vm_private_data);
|
||||
+ loff_t num_pages;
|
||||
+ pgoff_t page_offset;
|
||||
+ int ret;
|
||||
+
|
||||
+ /* We don't use vmf->pgoff since that has the fake offset */
|
||||
+ page_offset = ((unsigned long)vmf->virtual_address - vma->vm_start) >>
|
||||
+ PAGE_SHIFT;
|
||||
+
|
||||
+ num_pages = obj->base.size / PAGE_SIZE;
|
||||
+
|
||||
+ if (WARN_ON(page_offset > num_pages))
|
||||
+ return VM_FAULT_SIGBUS;
|
||||
+
|
||||
+ ret = vgem_gem_get_pages(obj);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ ret = vm_insert_page(vma, (unsigned long)vmf->virtual_address,
|
||||
+ obj->pages[page_offset]);
|
||||
+
|
||||
+ /* Pretty dumb handler for now */
|
||||
+ switch (ret) {
|
||||
+ case 0:
|
||||
+ case -ERESTARTSYS:
|
||||
+ case -EINTR:
|
||||
+ return VM_FAULT_NOPAGE;
|
||||
+ default:
|
||||
+ return VM_FAULT_SIGBUS;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static const struct vm_operations_struct vgem_gem_vm_ops = {
|
||||
+ .fault = vgem_gem_fault,
|
||||
+ .open = drm_gem_vm_open,
|
||||
+ .close = drm_gem_vm_close,
|
||||
+};
|
||||
+
|
||||
+/* ioctls */
|
||||
+
|
||||
+static struct drm_gem_object *vgem_gem_create(struct drm_device *dev,
|
||||
+ struct drm_file *file,
|
||||
+ unsigned int *handle,
|
||||
+ unsigned long size)
|
||||
+{
|
||||
+ struct drm_vgem_gem_object *obj;
|
||||
+ struct drm_gem_object *gem_object;
|
||||
+ int err;
|
||||
+
|
||||
+ size = roundup(size, PAGE_SIZE);
|
||||
+
|
||||
+ obj = kzalloc(sizeof(*obj), GFP_KERNEL);
|
||||
+ if (!obj)
|
||||
+ return ERR_PTR(-ENOMEM);
|
||||
+
|
||||
+ gem_object = &obj->base;
|
||||
+
|
||||
+ if ((err = drm_gem_object_init(dev, gem_object, size)))
|
||||
+ goto out;
|
||||
+
|
||||
+ if ((err = drm_gem_create_mmap_offset(gem_object)))
|
||||
+ goto mmap_out;
|
||||
+
|
||||
+ if ((err = drm_gem_handle_create(file, gem_object, handle)))
|
||||
+ goto handle_out;
|
||||
+
|
||||
+ drm_gem_object_unreference_unlocked(gem_object);
|
||||
+
|
||||
+ return gem_object;
|
||||
+
|
||||
+handle_out:
|
||||
+ drm_gem_free_mmap_offset(gem_object);
|
||||
+
|
||||
+mmap_out:
|
||||
+ drm_gem_object_release(gem_object);
|
||||
+
|
||||
+out:
|
||||
+ kfree(gem_object);
|
||||
+
|
||||
+ return ERR_PTR(err);
|
||||
+}
|
||||
+
|
||||
+static int vgem_gem_create_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file)
|
||||
+{
|
||||
+ struct vgem_gem_create *args = data;
|
||||
+ struct drm_gem_object *gem_object;
|
||||
+
|
||||
+ gem_object = vgem_gem_create(dev, file, &args->handle, args->size);
|
||||
+
|
||||
+ if (IS_ERR(gem_object))
|
||||
+ return PTR_ERR(gem_object);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int vgem_gem_mmap_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file)
|
||||
+{
|
||||
+ struct vgem_gem_mmap *args = data;
|
||||
+ struct drm_gem_object *obj;
|
||||
+
|
||||
+ obj = drm_gem_object_lookup(dev, file, args->handle);
|
||||
+ if (!obj)
|
||||
+ return -ENOENT;
|
||||
+
|
||||
+ obj->filp->private_data = obj;
|
||||
+
|
||||
+ BUG_ON(!obj->map_list.map);
|
||||
+
|
||||
+ args->mapped = (uint64_t)obj->map_list.hash.key << PAGE_SHIFT;
|
||||
+
|
||||
+ drm_gem_object_unreference_unlocked(obj);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int vgem_gem_getparam_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file)
|
||||
+{
|
||||
+ struct vgem_gem_getparam *args = data;
|
||||
+ int value=0, ret;
|
||||
+
|
||||
+ switch (args->param) {
|
||||
+ case VGEM_PARAM_IS_VGEM:
|
||||
+ value = 1;
|
||||
+ }
|
||||
+
|
||||
+ ret = copy_to_user(args->value, &value, sizeof(int));
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static struct drm_ioctl_desc vgem_ioctls[] = {
|
||||
+ DRM_IOCTL_DEF_DRV(VGEM_GEM_CREATE, vgem_gem_create_ioctl,
|
||||
+ DRM_UNLOCKED | DRM_AUTH),
|
||||
+ DRM_IOCTL_DEF_DRV(VGEM_GEM_MMAP, vgem_gem_mmap_ioctl,
|
||||
+ DRM_UNLOCKED | DRM_AUTH),
|
||||
+ DRM_IOCTL_DEF_DRV(VGEM_GEM_GETPARAM, vgem_gem_getparam_ioctl,
|
||||
+ DRM_UNLOCKED),
|
||||
+};
|
||||
+
|
||||
+static const struct file_operations vgem_driver_fops = {
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .open = drm_open,
|
||||
+ .mmap = drm_gem_mmap,
|
||||
+ .poll = drm_poll,
|
||||
+ .read = drm_read,
|
||||
+ .unlocked_ioctl = drm_ioctl,
|
||||
+ .release = drm_release,
|
||||
+};
|
||||
+
|
||||
+static struct drm_driver vgem_driver = {
|
||||
+ .driver_features = DRIVER_BUS_PLATFORM | DRIVER_GEM,
|
||||
+ .load = vgem_load,
|
||||
+ .unload = vgem_unload,
|
||||
+ .preclose = vgem_preclose,
|
||||
+ .lastclose = vgem_lastclose,
|
||||
+ .gem_init_object = vgem_gem_init_object,
|
||||
+ .gem_free_object = vgem_gem_free_object,
|
||||
+ .gem_vm_ops = &vgem_gem_vm_ops,
|
||||
+ .ioctls = vgem_ioctls,
|
||||
+ .fops = &vgem_driver_fops,
|
||||
+ .name = DRIVER_NAME,
|
||||
+ .desc = DRIVER_DESC,
|
||||
+ .date = DRIVER_DATE,
|
||||
+ .major = DRIVER_MAJOR,
|
||||
+ .minor = DRIVER_MINOR,
|
||||
+};
|
||||
+
|
||||
+static int vgem_platform_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ vgem_driver.num_ioctls = DRM_ARRAY_SIZE(vgem_ioctls);
|
||||
+
|
||||
+ return drm_platform_init(&vgem_driver, pdev);
|
||||
+}
|
||||
+
|
||||
+static int vgem_platform_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ drm_platform_exit(&vgem_driver, pdev);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct platform_driver vgem_platform_driver = {
|
||||
+ .probe = vgem_platform_probe,
|
||||
+ .remove = __devexit_p(vgem_platform_remove),
|
||||
+ .driver = {
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .name = DRIVER_NAME,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static struct platform_device *vgem_device;
|
||||
+
|
||||
+static int __init vgem_init(void)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ if ((ret = platform_driver_register(&vgem_platform_driver)))
|
||||
+ return ret;
|
||||
+
|
||||
+ vgem_device = platform_device_alloc("vgem", -1);
|
||||
+ if (!vgem_device) {
|
||||
+ ret = -ENOMEM;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ ret = platform_device_add(vgem_device);
|
||||
+ if (!ret)
|
||||
+ return 0;
|
||||
+
|
||||
+out:
|
||||
+ platform_device_put(vgem_device);
|
||||
+ platform_driver_unregister(&vgem_platform_driver);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void __exit vgem_exit(void)
|
||||
+{
|
||||
+ platform_device_unregister(vgem_device);
|
||||
+ platform_driver_unregister(&vgem_platform_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(vgem_init);
|
||||
+module_exit(vgem_exit);
|
||||
+
|
||||
+MODULE_AUTHOR("Red Hat, Inc.");
|
||||
+MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
+MODULE_LICENSE("GPL and additional rights");
|
||||
diff --git a/include/drm/vgem_drm.h b/include/drm/vgem_drm.h
|
||||
new file mode 100644
|
||||
index 0000000..df83503
|
||||
--- /dev/null
|
||||
+++ b/include/drm/vgem_drm.h
|
||||
@@ -0,0 +1,62 @@
|
||||
+/*
|
||||
+ * Copyright 2011 Red Hat, Inc.
|
||||
+ *
|
||||
+ * Permission is hereby granted, free of charge, to any person obtaining a
|
||||
+ * copy of this software and associated documentation files (the "Software")
|
||||
+ * to deal in the software without restriction, including without limitation
|
||||
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
|
||||
+ * license, and/or sell copies of the Software, and to permit persons to whom
|
||||
+ * them Software is furnished to do so, subject to the following conditions:
|
||||
+ *
|
||||
+ * The above copyright notice and this permission notice (including the next
|
||||
+ * paragraph) shall be included in all copies or substantial portions of the
|
||||
+ * Software.
|
||||
+ *
|
||||
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTIBILITY,
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
+ * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER
|
||||
+ * IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
+ */
|
||||
+
|
||||
+#ifndef VGEM_DRM_H
|
||||
+#define VGEM_DRM_H
|
||||
+
|
||||
+/* Bare API largely ripped off from exynos driver */
|
||||
+
|
||||
+struct vgem_gem_create {
|
||||
+ unsigned int size;
|
||||
+ unsigned int flags;
|
||||
+ unsigned int handle;
|
||||
+};
|
||||
+
|
||||
+struct vgem_gem_mmap {
|
||||
+ unsigned int handle;
|
||||
+ unsigned int size;
|
||||
+ uint64_t mapped;
|
||||
+};
|
||||
+
|
||||
+struct vgem_gem_getparam {
|
||||
+#define VGEM_PARAM_IS_VGEM 1
|
||||
+ unsigned int param;
|
||||
+ unsigned int *value;
|
||||
+};
|
||||
+
|
||||
+#define DRM_VGEM_GEM_CREATE 0x00
|
||||
+#define DRM_VGEM_GEM_MMAP 0x01
|
||||
+#define DRM_VGEM_GEM_GETPARAM 0x02
|
||||
+
|
||||
+#define DRM_IOCTL_VGEM_GEM_CREATE \
|
||||
+ DRM_IOWR(DRM_COMMAND_BASE + DRM_VGEM_GEM_CREATE, \
|
||||
+ struct vgem_gem_create)
|
||||
+
|
||||
+#define DRM_IOCTL_VGEM_GEM_MMAP \
|
||||
+ DRM_IOWR(DRM_COMMAND_BASE + DRM_VGEM_GEM_MMAP, \
|
||||
+ struct vgem_gem_mmap)
|
||||
+
|
||||
+#define DRM_IOCTL_VGEM_GEM_GETPARAM \
|
||||
+ DRM_IOWR(DRM_COMMAND_BASE + DRM_VGEM_GEM_GETPARAM, \
|
||||
+ struct vgem_gem_getparam)
|
||||
+
|
||||
+#endif
|
|
@ -0,0 +1,45 @@
|
|||
commit 9b989ae8a30f5a430fabbf911e0643bca96c3fd1
|
||||
Author: Matthew Garrett <mjg@redhat.com>
|
||||
Date: Thu Apr 26 17:35:58 2012 -0400
|
||||
|
||||
efifb: Skip DMI checks if the bootloader knows what it's doing
|
||||
|
||||
The majority of the DMI checks in efifb are for cases where the bootloader
|
||||
has provided invalid information. However, on some machines the overrides
|
||||
may do more harm than good due to configuration differences between machines
|
||||
with the same machine identifier. It turns out that it's possible for the
|
||||
bootloader to get the correct information on GOP-based systems, but we
|
||||
can't guarantee that the kernel's being booted with one that's been updated
|
||||
to do so. Add support for a capabilities flag that can be set by the
|
||||
bootloader, and skip the DMI checks in that case.
|
||||
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
|
||||
diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c
|
||||
index b4a632a..932abaa 100644
|
||||
--- a/drivers/video/efifb.c
|
||||
+++ b/drivers/video/efifb.c
|
||||
@@ -553,7 +553,9 @@ static int __init efifb_init(void)
|
||||
int ret;
|
||||
char *option = NULL;
|
||||
|
||||
- dmi_check_system(dmi_system_table);
|
||||
+ if (screen_info.orig_video_isVGA != VIDEO_TYPE_EFI ||
|
||||
+ !(screen_info.capabilities & VIDEO_CAPABILITY_SKIP_QUIRKS))
|
||||
+ dmi_check_system(dmi_system_table);
|
||||
|
||||
if (screen_info.orig_video_isVGA != VIDEO_TYPE_EFI)
|
||||
return -ENODEV;
|
||||
diff --git a/include/linux/screen_info.h b/include/linux/screen_info.h
|
||||
index 899fbb4..fb3c5a8 100644
|
||||
--- a/include/linux/screen_info.h
|
||||
+++ b/include/linux/screen_info.h
|
||||
@@ -68,6 +68,8 @@ struct screen_info {
|
||||
|
||||
#define VIDEO_FLAGS_NOCURSOR (1 << 0) /* The video mode has no cursor set */
|
||||
|
||||
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
|
||||
+
|
||||
#ifdef __KERNEL__
|
||||
extern struct screen_info screen_info;
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
From 20ae2081584450e552735a3df968ce5b5946a607 Mon Sep 17 00:00:00 2001
|
||||
From: Kees Cook <keescook@chromium.org>
|
||||
Date: Mon, 26 Nov 2012 08:56:37 -0500
|
||||
Subject: [PATCH 1/2] exec: do not leave bprm->interp on stack
|
||||
|
||||
If a series of scripts are executed, each triggering module loading via
|
||||
unprintable bytes in the script header, kernel stack contents can leak
|
||||
into the command line.
|
||||
|
||||
Normally execution of binfmt_script and binfmt_misc happens recursively.
|
||||
However, when modules are enabled, and unprintable bytes exist in the
|
||||
bprm->buf, execution will restart after attempting to load matching binfmt
|
||||
modules. Unfortunately, the logic in binfmt_script and binfmt_misc does
|
||||
not expect to get restarted. They leave bprm->interp pointing to their
|
||||
local stack. This means on restart bprm->interp is left pointing into
|
||||
unused stack memory which can then be copied into the userspace argv
|
||||
areas.
|
||||
|
||||
After additional study, it seems that both recursion and restart remains
|
||||
the desirable way to handle exec with scripts, misc, and modules. As
|
||||
such, we need to protect the changes to interp.
|
||||
|
||||
This changes the logic to require allocation for any changes to the
|
||||
bprm->interp. To avoid adding a new kmalloc to every exec, the default
|
||||
value is left as-is. Only when passing through binfmt_script or
|
||||
binfmt_misc does an allocation take place.
|
||||
|
||||
For a proof of concept, see DoTest.sh from:
|
||||
http://www.halfdog.net/Security/2012/LinuxKernelBinfmtScriptStackDataDisclosure/
|
||||
|
||||
Signed-off-by: Kees Cook <keescook@chromium.org>
|
||||
Cc: halfdog <me@halfdog.net>
|
||||
Cc: P J P <ppandit@redhat.com>
|
||||
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
---
|
||||
fs/binfmt_misc.c | 5 ++++-
|
||||
fs/binfmt_script.c | 4 +++-
|
||||
fs/exec.c | 15 +++++++++++++++
|
||||
include/linux/binfmts.h | 1 +
|
||||
4 files changed, 23 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
|
||||
index 790b3cd..772428d 100644
|
||||
--- a/fs/binfmt_misc.c
|
||||
+++ b/fs/binfmt_misc.c
|
||||
@@ -176,7 +176,10 @@ static int load_misc_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
||||
goto _error;
|
||||
bprm->argc ++;
|
||||
|
||||
- bprm->interp = iname; /* for binfmt_script */
|
||||
+ /* Update interp in case binfmt_script needs it. */
|
||||
+ retval = bprm_change_interp(iname, bprm);
|
||||
+ if (retval < 0)
|
||||
+ goto _error;
|
||||
|
||||
interp_file = open_exec (iname);
|
||||
retval = PTR_ERR (interp_file);
|
||||
diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c
|
||||
index d3b8c1f..df49d48 100644
|
||||
--- a/fs/binfmt_script.c
|
||||
+++ b/fs/binfmt_script.c
|
||||
@@ -82,7 +82,9 @@ static int load_script(struct linux_binprm *bprm,struct pt_regs *regs)
|
||||
retval = copy_strings_kernel(1, &i_name, bprm);
|
||||
if (retval) return retval;
|
||||
bprm->argc++;
|
||||
- bprm->interp = interp;
|
||||
+ retval = bprm_change_interp(interp, bprm);
|
||||
+ if (retval < 0)
|
||||
+ return retval;
|
||||
|
||||
/*
|
||||
* OK, now restart the process with the interpreter's dentry.
|
||||
diff --git a/fs/exec.c b/fs/exec.c
|
||||
index fab2c6d..59896ae 100644
|
||||
--- a/fs/exec.c
|
||||
+++ b/fs/exec.c
|
||||
@@ -1202,9 +1202,24 @@ void free_bprm(struct linux_binprm *bprm)
|
||||
mutex_unlock(¤t->signal->cred_guard_mutex);
|
||||
abort_creds(bprm->cred);
|
||||
}
|
||||
+ /* If a binfmt changed the interp, free it. */
|
||||
+ if (bprm->interp != bprm->filename)
|
||||
+ kfree(bprm->interp);
|
||||
kfree(bprm);
|
||||
}
|
||||
|
||||
+int bprm_change_interp(char *interp, struct linux_binprm *bprm)
|
||||
+{
|
||||
+ /* If a binfmt changed the interp, free it first. */
|
||||
+ if (bprm->interp != bprm->filename)
|
||||
+ kfree(bprm->interp);
|
||||
+ bprm->interp = kstrdup(interp, GFP_KERNEL);
|
||||
+ if (!bprm->interp)
|
||||
+ return -ENOMEM;
|
||||
+ return 0;
|
||||
+}
|
||||
+EXPORT_SYMBOL(bprm_change_interp);
|
||||
+
|
||||
/*
|
||||
* install the new credentials for this executable
|
||||
*/
|
||||
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
|
||||
index 366422b..eb53e15 100644
|
||||
--- a/include/linux/binfmts.h
|
||||
+++ b/include/linux/binfmts.h
|
||||
@@ -128,6 +128,7 @@ extern int setup_arg_pages(struct linux_binprm * bprm,
|
||||
unsigned long stack_top,
|
||||
int executable_stack);
|
||||
extern int bprm_mm_init(struct linux_binprm *bprm);
|
||||
+extern int bprm_change_interp(char *interp, struct linux_binprm *bprm);
|
||||
extern int copy_strings_kernel(int argc, const char *const *argv,
|
||||
struct linux_binprm *bprm);
|
||||
extern int prepare_bprm_creds(struct linux_binprm *bprm);
|
||||
--
|
||||
1.8.0
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
From ea75f7357e3a881bd1bd0db5e483fc6a8681567b Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@redhat.com>
|
||||
Date: Tue, 10 Jan 2012 09:39:02 -0500
|
||||
Subject: [PATCH] ext4: Support "check=none" "nocheck" mount options
|
||||
|
||||
The ext2/ext3 filesystems supported "check=none" and "nocheck" as mount options
|
||||
even though that was already the default behavior and it essentially did
|
||||
nothing. When using ext4 to mount ext2/ext3 filesystems, that mount option
|
||||
causes the mount to fail. That isn't as backward compatible as it could be,
|
||||
so add support to ext4 to accept the option.
|
||||
|
||||
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
|
||||
---
|
||||
fs/ext4/super.c | 7 ++++++-
|
||||
1 files changed, 6 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
|
||||
index 3e1329e..5ff09e7 100644
|
||||
--- a/fs/ext4/super.c
|
||||
+++ b/fs/ext4/super.c
|
||||
@@ -1333,7 +1333,7 @@ enum {
|
||||
Opt_nomblk_io_submit, Opt_block_validity, Opt_noblock_validity,
|
||||
Opt_inode_readahead_blks, Opt_journal_ioprio,
|
||||
Opt_dioread_nolock, Opt_dioread_lock,
|
||||
- Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable,
|
||||
+ Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable, Opt_nocheck,
|
||||
};
|
||||
|
||||
static const match_table_t tokens = {
|
||||
@@ -1409,6 +1409,8 @@ static const match_table_t tokens = {
|
||||
{Opt_init_itable, "init_itable=%u"},
|
||||
{Opt_init_itable, "init_itable"},
|
||||
{Opt_noinit_itable, "noinit_itable"},
|
||||
+ {Opt_nocheck, "check=none"},
|
||||
+ {Opt_nocheck, "nocheck"},
|
||||
{Opt_err, NULL},
|
||||
};
|
||||
|
||||
@@ -1905,6 +1907,9 @@ set_qf_format:
|
||||
case Opt_noinit_itable:
|
||||
clear_opt(sb, INIT_INODE_TABLE);
|
||||
break;
|
||||
+ case Opt_nocheck:
|
||||
+ /* ext2/ext3 used to "support" this option. Silently eat it */
|
||||
+ break;
|
||||
default:
|
||||
ext4_msg(sb, KERN_ERR,
|
||||
"Unrecognized mount option \"%s\" "
|
||||
--
|
||||
1.7.7.5
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
|
||||
index 6c80083..77cc85d 100644
|
||||
--- a/fs/notify/fanotify/fanotify_user.c
|
||||
+++ b/fs/notify/fanotify/fanotify_user.c
|
||||
@@ -122,6 +122,7 @@ static int fill_event_metadata(struct fsnotify_group *group,
|
||||
metadata->event_len = FAN_EVENT_METADATA_LEN;
|
||||
metadata->metadata_len = FAN_EVENT_METADATA_LEN;
|
||||
metadata->vers = FANOTIFY_METADATA_VERSION;
|
||||
+ metadata->reserved = 0;
|
||||
metadata->mask = event->mask & FAN_ALL_OUTGOING_EVENTS;
|
||||
metadata->pid = pid_vnr(event->tgid);
|
||||
if (unlikely(event->mask & FAN_Q_OVERFLOW))
|
||||
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
Allow threads other than the main thread to do introspection of files in
|
||||
proc without relying on read permissions. proc_pid_follow_link() calls
|
||||
proc_fd_access_allowed() which ultimately calls __ptrace_may_access().
|
||||
|
||||
Though this allows additional access to some proc files, we do not
|
||||
believe that this has any unintended security implications. However it
|
||||
probably needs to be looked at carefully.
|
||||
|
||||
The original problem was a thread of a process whose permissions were
|
||||
111 couldn't open its own /proc/self/exe This was interfering with a
|
||||
special purpose debugging tool. A simple reproducer is below.:
|
||||
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#define BUFSIZE 2048
|
||||
|
||||
void *thread_main(void *arg){
|
||||
char *str=(char*)arg;
|
||||
char buf[BUFSIZE];
|
||||
ssize_t len=readlink("/proc/self/exe", buf, BUFSIZE);
|
||||
if(len==-1)
|
||||
printf("/proc/self/exe in %s: %s\n", str,sys_errlist[errno]);
|
||||
else
|
||||
printf("/proc/self/exe in %s: OK\n", str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(){
|
||||
pthread_t thread;
|
||||
|
||||
int retval=pthread_create( &thread, NULL, thread_main, "thread");
|
||||
if(retval!=0)
|
||||
exit(1);
|
||||
|
||||
thread_main("main");
|
||||
pthread_join(thread, NULL);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
Signed-off-by: Ben Woodard <woodard@redhat.com>
|
||||
Signed-off-by: Mark Grondona <mgrondona@llnl.gov>
|
||||
---
|
||||
kernel/ptrace.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
|
||||
index acbd284..347c4c7 100644
|
||||
--- a/kernel/ptrace.c
|
||||
+++ b/kernel/ptrace.c
|
||||
diff -ruNp linux-3.8.4-103.fc17.noarch/kernel/ptrace.c linux-3.8.4-103.fc17.ptrace/kernel/ptrace.c
|
||||
--- linux-3.8.4-103.fc17.noarch/kernel/ptrace.c 2013-02-18 17:58:34.000000000 -0600
|
||||
+++ linux-3.8.4-103.fc17.ptrace/kernel/ptrace.c 2013-03-26 14:59:01.939396346 -0500
|
||||
@@ -234,7 +234,7 @@ static int __ptrace_may_access(struct ta
|
||||
*/
|
||||
int dumpable = 0;
|
||||
/* Don't let security modules deny introspection */
|
||||
- if (task == current)
|
||||
+ if (same_thread_group(task, current))
|
||||
return 0;
|
||||
rcu_read_lock();
|
||||
tcred = __task_cred(task);
|
||||
--
|
||||
1.8.1.4
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
Please read the FAQ at http://www.tux.org/lkml/
|
|
@ -0,0 +1,207 @@
|
|||
From 93f6b57df5d9dd8c0327cebc01f6c00dbcd6d2ff Mon Sep 17 00:00:00 2001
|
||||
From: Jan Kara <jack@suse.cz>
|
||||
Date: Fri, 31 May 2013 19:33:42 -0400
|
||||
Subject: [PATCH 1/4] ext4: fix data offset overflow on 32-bit archs in
|
||||
ext4_inline_data_fiemap()
|
||||
|
||||
On 32-bit archs when sector_t is defined as 32-bit the logic computing
|
||||
data offset in ext4_inline_data_fiemap(). Fix that by properly typing
|
||||
the shifted value.
|
||||
|
||||
Signed-off-by: Jan Kara <jack@suse.cz>
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
fs/ext4/inline.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
|
||||
index c0fd1a1..c46a01e 100644
|
||||
--- a/fs/ext4/inline.c
|
||||
+++ b/fs/ext4/inline.c
|
||||
@@ -1702,7 +1702,7 @@ int ext4_inline_data_fiemap(struct inode *inode,
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
- physical = iloc.bh->b_blocknr << inode->i_sb->s_blocksize_bits;
|
||||
+ physical = (__u64)iloc.bh->b_blocknr << inode->i_sb->s_blocksize_bits;
|
||||
physical += (char *)ext4_raw_inode(&iloc) - iloc.bh->b_data;
|
||||
physical += offsetof(struct ext4_inode, i_block);
|
||||
length = i_size_read(inode);
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From 4d2cedb535bae3ada76a335540657e948f99d9c0 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Kara <jack@suse.cz>
|
||||
Date: Fri, 31 May 2013 19:37:56 -0400
|
||||
Subject: [PATCH 2/4] ext4: fix overflows in SEEK_HOLE, SEEK_DATA
|
||||
implementations
|
||||
|
||||
ext4_lblk_t is just u32 so multiplying it by blocksize can easily
|
||||
overflow for files larger than 4 GB. Fix that by properly typing the
|
||||
block offsets before shifting.
|
||||
|
||||
Signed-off-by: Jan Kara <jack@suse.cz>
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
|
||||
---
|
||||
fs/ext4/file.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
|
||||
index 64848b5..b47ccf9 100644
|
||||
--- a/fs/ext4/file.c
|
||||
+++ b/fs/ext4/file.c
|
||||
@@ -311,7 +311,7 @@ static int ext4_find_unwritten_pgoff(struct inode *inode,
|
||||
blkbits = inode->i_sb->s_blocksize_bits;
|
||||
startoff = *offset;
|
||||
lastoff = startoff;
|
||||
- endoff = (map->m_lblk + map->m_len) << blkbits;
|
||||
+ endoff = (loff_t)(map->m_lblk + map->m_len) << blkbits;
|
||||
|
||||
index = startoff >> PAGE_CACHE_SHIFT;
|
||||
end = endoff >> PAGE_CACHE_SHIFT;
|
||||
@@ -456,7 +456,7 @@ static loff_t ext4_seek_data(struct file *file, loff_t offset, loff_t maxsize)
|
||||
ret = ext4_map_blocks(NULL, inode, &map, 0);
|
||||
if (ret > 0 && !(map.m_flags & EXT4_MAP_UNWRITTEN)) {
|
||||
if (last != start)
|
||||
- dataoff = last << blkbits;
|
||||
+ dataoff = (loff_t)last << blkbits;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -467,7 +467,7 @@ static loff_t ext4_seek_data(struct file *file, loff_t offset, loff_t maxsize)
|
||||
ext4_es_find_delayed_extent(inode, last, &es);
|
||||
if (es.es_len != 0 && in_range(last, es.es_lblk, es.es_len)) {
|
||||
if (last != start)
|
||||
- dataoff = last << blkbits;
|
||||
+ dataoff = (loff_t)last << blkbits;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -485,7 +485,7 @@ static loff_t ext4_seek_data(struct file *file, loff_t offset, loff_t maxsize)
|
||||
}
|
||||
|
||||
last++;
|
||||
- dataoff = last << blkbits;
|
||||
+ dataoff = (loff_t)last << blkbits;
|
||||
} while (last <= end);
|
||||
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
@@ -539,7 +539,7 @@ static loff_t ext4_seek_hole(struct file *file, loff_t offset, loff_t maxsize)
|
||||
ret = ext4_map_blocks(NULL, inode, &map, 0);
|
||||
if (ret > 0 && !(map.m_flags & EXT4_MAP_UNWRITTEN)) {
|
||||
last += ret;
|
||||
- holeoff = last << blkbits;
|
||||
+ holeoff = (loff_t)last << blkbits;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -550,7 +550,7 @@ static loff_t ext4_seek_hole(struct file *file, loff_t offset, loff_t maxsize)
|
||||
ext4_es_find_delayed_extent(inode, last, &es);
|
||||
if (es.es_len != 0 && in_range(last, es.es_lblk, es.es_len)) {
|
||||
last = es.es_lblk + es.es_len;
|
||||
- holeoff = last << blkbits;
|
||||
+ holeoff = (loff_t)last << blkbits;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -565,7 +565,7 @@ static loff_t ext4_seek_hole(struct file *file, loff_t offset, loff_t maxsize)
|
||||
&map, &holeoff);
|
||||
if (!unwritten) {
|
||||
last += ret;
|
||||
- holeoff = last << blkbits;
|
||||
+ holeoff = (loff_t)last << blkbits;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From 114fe3b7fc9ca3ca00f774dd8705e8c802f39f14 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Kara <jack@suse.cz>
|
||||
Date: Fri, 31 May 2013 19:38:56 -0400
|
||||
Subject: [PATCH 3/4] ext4: fix data offset overflow in ext4_xattr_fiemap() on
|
||||
32-bit archs
|
||||
|
||||
On 32-bit architectures with 32-bit sector_t computation of data offset
|
||||
in ext4_xattr_fiemap() can overflow resulting in reporting bogus data
|
||||
location. Fix the problem by typing block number to proper type before
|
||||
shifting.
|
||||
|
||||
Signed-off-by: Jan Kara <jack@suse.cz>
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
fs/ext4/extents.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
|
||||
index 9c6d06d..6bb303c 100644
|
||||
--- a/fs/ext4/extents.c
|
||||
+++ b/fs/ext4/extents.c
|
||||
@@ -4605,7 +4605,7 @@ static int ext4_xattr_fiemap(struct inode *inode,
|
||||
error = ext4_get_inode_loc(inode, &iloc);
|
||||
if (error)
|
||||
return error;
|
||||
- physical = iloc.bh->b_blocknr << blockbits;
|
||||
+ physical = (__u64)iloc.bh->b_blocknr << blockbits;
|
||||
offset = EXT4_GOOD_OLD_INODE_SIZE +
|
||||
EXT4_I(inode)->i_extra_isize;
|
||||
physical += offset;
|
||||
@@ -4613,7 +4613,7 @@ static int ext4_xattr_fiemap(struct inode *inode,
|
||||
flags |= FIEMAP_EXTENT_DATA_INLINE;
|
||||
brelse(iloc.bh);
|
||||
} else { /* external block */
|
||||
- physical = EXT4_I(inode)->i_file_acl << blockbits;
|
||||
+ physical = (__u64)EXT4_I(inode)->i_file_acl << blockbits;
|
||||
length = inode->i_sb->s_blocksize;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From aeb72ff4b7fe084b4373d4a91d77d3bea8089627 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Kara <jack@suse.cz>
|
||||
Date: Fri, 31 May 2013 19:39:56 -0400
|
||||
Subject: [PATCH 4/4] ext4: fix overflow when counting used blocks on 32-bit
|
||||
architectures
|
||||
|
||||
The arithmetics adding delalloc blocks to the number of used blocks in
|
||||
ext4_getattr() can easily overflow on 32-bit archs as we first multiply
|
||||
number of blocks by blocksize and then divide back by 512. Make the
|
||||
arithmetics more clever and also use proper type (unsigned long long
|
||||
instead of unsigned long).
|
||||
|
||||
Signed-off-by: Jan Kara <jack@suse.cz>
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
fs/ext4/inode.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
|
||||
index d69e954..e33e2d2 100644
|
||||
--- a/fs/ext4/inode.c
|
||||
+++ b/fs/ext4/inode.c
|
||||
@@ -4616,7 +4616,7 @@ int ext4_getattr(struct vfsmount *mnt, struct dentry *dentry,
|
||||
struct kstat *stat)
|
||||
{
|
||||
struct inode *inode;
|
||||
- unsigned long delalloc_blocks;
|
||||
+ unsigned long long delalloc_blocks;
|
||||
|
||||
inode = dentry->d_inode;
|
||||
generic_fillattr(inode, stat);
|
||||
@@ -4634,7 +4634,7 @@ int ext4_getattr(struct vfsmount *mnt, struct dentry *dentry,
|
||||
delalloc_blocks = EXT4_C2B(EXT4_SB(inode->i_sb),
|
||||
EXT4_I(inode)->i_reserved_data_blocks);
|
||||
|
||||
- stat->blocks += (delalloc_blocks << inode->i_sb->s_blocksize_bits)>>9;
|
||||
+ stat->blocks += delalloc_blocks << (inode->i_sb->s_blocksize_bits-9);
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
|
||||
Legacy hypervisors (RHEL 5.0 and RHEL 5.1) do not handle guest writes to
|
||||
cr4 gracefully. If a guest attempts to write a bit of cr4 that is
|
||||
unsupported, then the HV is so offended it crashes the domain. While
|
||||
later guest kernels (such as RHEL6) don't assume the HV supports all
|
||||
features, they do expect nicer responses. That assumption introduced
|
||||
code that probes whether or not xsave is supported early in the boot. So
|
||||
now when attempting to boot a RHEL6 guest on RHEL5.0 or RHEL5.1 an early
|
||||
crash will occur.
|
||||
|
||||
This patch is quite obviously an undesirable hack. The real fix for this
|
||||
problem should be in the HV, and is, in later HVs. However, to support
|
||||
running on old HVs, RHEL6 can take this small change. No impact will
|
||||
occur for running on any RHEL HV (not even RHEL 5.5 supports xsave).
|
||||
There is only potential for guest performance loss on upstream Xen.
|
||||
|
||||
---
|
||||
arch/x86/xen/enlighten.c | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
|
||||
index 52f8e19..6db3d67 100644
|
||||
--- a/arch/x86/xen/enlighten.c
|
||||
+++ b/arch/x86/xen/enlighten.c
|
||||
@@ -802,6 +802,7 @@ static void xen_write_cr4(unsigned long cr4)
|
||||
{
|
||||
cr4 &= ~X86_CR4_PGE;
|
||||
cr4 &= ~X86_CR4_PSE;
|
||||
+ cr4 &= ~X86_CR4_OSXSAVE;
|
||||
|
||||
native_write_cr4(cr4);
|
||||
}
|
||||
--
|
||||
1.6.6.1
|
|
@ -1,107 +0,0 @@
|
|||
From 5c21b39ab123ada8ce248efc733420bd8c9ea255 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@redhat.com>
|
||||
Date: Fri, 28 Oct 2011 15:38:06 -0400
|
||||
Subject: [PATCH] floppy: Remove _hlt related functions
|
||||
|
||||
It's close enough to 2012 and the WARN_ONCE is causing things like abrt to
|
||||
auto-file bugs that aren't really bugs.
|
||||
|
||||
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
|
||||
|
||||
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
|
||||
index d5ac362..df1e87c 100644
|
||||
--- a/Documentation/feature-removal-schedule.txt
|
||||
+++ b/Documentation/feature-removal-schedule.txt
|
||||
@@ -6,14 +6,6 @@ be removed from this file.
|
||||
|
||||
---------------------------
|
||||
|
||||
-What: x86 floppy disable_hlt
|
||||
-When: 2012
|
||||
-Why: ancient workaround of dubious utility clutters the
|
||||
- code used by everybody else.
|
||||
-Who: Len Brown <len.brown@intel.com>
|
||||
-
|
||||
----------------------------
|
||||
-
|
||||
What: CONFIG_APM_CPU_IDLE, and its ability to call APM BIOS in idle
|
||||
When: 2012
|
||||
Why: This optional sub-feature of APM is of dubious reliability,
|
||||
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
|
||||
index 9955a53..40bf4c2 100644
|
||||
--- a/drivers/block/floppy.c
|
||||
+++ b/drivers/block/floppy.c
|
||||
@@ -1032,37 +1032,6 @@ static int fd_wait_for_completion(unsigned long delay, timeout_fn function)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static DEFINE_SPINLOCK(floppy_hlt_lock);
|
||||
-static int hlt_disabled;
|
||||
-static void floppy_disable_hlt(void)
|
||||
-{
|
||||
- unsigned long flags;
|
||||
-
|
||||
- WARN_ONCE(1, "floppy_disable_hlt() scheduled for removal in 2012");
|
||||
- spin_lock_irqsave(&floppy_hlt_lock, flags);
|
||||
- if (!hlt_disabled) {
|
||||
- hlt_disabled = 1;
|
||||
-#ifdef HAVE_DISABLE_HLT
|
||||
- disable_hlt();
|
||||
-#endif
|
||||
- }
|
||||
- spin_unlock_irqrestore(&floppy_hlt_lock, flags);
|
||||
-}
|
||||
-
|
||||
-static void floppy_enable_hlt(void)
|
||||
-{
|
||||
- unsigned long flags;
|
||||
-
|
||||
- spin_lock_irqsave(&floppy_hlt_lock, flags);
|
||||
- if (hlt_disabled) {
|
||||
- hlt_disabled = 0;
|
||||
-#ifdef HAVE_DISABLE_HLT
|
||||
- enable_hlt();
|
||||
-#endif
|
||||
- }
|
||||
- spin_unlock_irqrestore(&floppy_hlt_lock, flags);
|
||||
-}
|
||||
-
|
||||
static void setup_DMA(void)
|
||||
{
|
||||
unsigned long f;
|
||||
@@ -1107,7 +1076,6 @@ static void setup_DMA(void)
|
||||
fd_enable_dma();
|
||||
release_dma_lock(f);
|
||||
#endif
|
||||
- floppy_disable_hlt();
|
||||
}
|
||||
|
||||
static void show_floppy(void);
|
||||
@@ -1709,7 +1677,6 @@ irqreturn_t floppy_interrupt(int irq, void *dev_id)
|
||||
fd_disable_dma();
|
||||
release_dma_lock(f);
|
||||
|
||||
- floppy_enable_hlt();
|
||||
do_floppy = NULL;
|
||||
if (fdc >= N_FDC || FDCS->address == -1) {
|
||||
/* we don't even know which FDC is the culprit */
|
||||
@@ -1858,8 +1825,6 @@ static void floppy_shutdown(unsigned long data)
|
||||
show_floppy();
|
||||
cancel_activity();
|
||||
|
||||
- floppy_enable_hlt();
|
||||
-
|
||||
flags = claim_dma_lock();
|
||||
fd_disable_dma();
|
||||
release_dma_lock(flags);
|
||||
@@ -4504,7 +4469,6 @@ static void floppy_release_irq_and_dma(void)
|
||||
#if N_FDC > 1
|
||||
set_dor(1, ~8, 0);
|
||||
#endif
|
||||
- floppy_enable_hlt();
|
||||
|
||||
if (floppy_track_buffer && max_buffer_sectors) {
|
||||
tmpsize = max_buffer_sectors * 1024;
|
||||
--
|
||||
1.7.6.4
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/fs/proc/proc_devtree.c b/fs/proc/proc_devtree.c
|
||||
index 927cbd1..f060f28 100644
|
||||
--- a/fs/proc/proc_devtree.c
|
||||
+++ b/fs/proc/proc_devtree.c
|
||||
@@ -233,6 +233,7 @@ void __init proc_device_tree_init(void)
|
||||
return;
|
||||
root = of_find_node_by_path("/");
|
||||
if (root == NULL) {
|
||||
+ remove_proc_entry("device-tree", NULL);
|
||||
pr_debug("/proc/device-tree: can't find root\n");
|
||||
return;
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
The finder_info block in the hfsplus volume header is currently defined as
|
||||
an array of 8 bit values, but TN1150 defines it as being an array of 32 bit
|
||||
values. Fix for convenience.
|
||||
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
---
|
||||
fs/hfsplus/hfsplus_raw.h | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/fs/hfsplus/hfsplus_raw.h b/fs/hfsplus/hfsplus_raw.h
|
||||
index 927cdd6..921967e 100644
|
||||
--- a/fs/hfsplus/hfsplus_raw.h
|
||||
+++ b/fs/hfsplus/hfsplus_raw.h
|
||||
@@ -117,7 +117,7 @@ struct hfsplus_vh {
|
||||
__be32 write_count;
|
||||
__be64 encodings_bmp;
|
||||
|
||||
- u8 finder_info[32];
|
||||
+ u32 finder_info[8];
|
||||
|
||||
struct hfsplus_fork_raw alloc_file;
|
||||
struct hfsplus_fork_raw ext_file;
|
||||
--
|
||||
1.7.7.1
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
From f3922382ce930e76773fb06416a7a6081a8702ad Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <mjg@redhat.com>
|
||||
Date: Tue, 13 Mar 2012 12:10:34 -0400
|
||||
Subject: [PATCH] hfsplus: initialise userflags
|
||||
|
||||
The userflags field was being written to the filesystem without being
|
||||
initialised. Make sure it's clear, since otherwise files end up with
|
||||
garbage attributes.
|
||||
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
||||
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
|
||||
---
|
||||
fs/hfsplus/inode.c | 2 ++
|
||||
1 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
|
||||
index 6643b24..82b69ee 100644
|
||||
--- a/fs/hfsplus/inode.c
|
||||
+++ b/fs/hfsplus/inode.c
|
||||
@@ -193,6 +193,7 @@ static struct dentry *hfsplus_file_lookup(struct inode *dir,
|
||||
mutex_init(&hip->extents_lock);
|
||||
hip->extent_state = 0;
|
||||
hip->flags = 0;
|
||||
+ hip->userflags = 0;
|
||||
set_bit(HFSPLUS_I_RSRC, &hip->flags);
|
||||
|
||||
err = hfs_find_init(HFSPLUS_SB(sb)->cat_tree, &fd);
|
||||
@@ -400,6 +401,7 @@ struct inode *hfsplus_new_inode(struct super_block *sb, umode_t mode)
|
||||
atomic_set(&hip->opencnt, 0);
|
||||
hip->extent_state = 0;
|
||||
hip->flags = 0;
|
||||
+ hip->userflags = 0;
|
||||
memset(hip->first_extents, 0, sizeof(hfsplus_extent_rec));
|
||||
memset(hip->cached_extents, 0, sizeof(hfsplus_extent_rec));
|
||||
hip->alloc_blocks = 0;
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -0,0 +1,287 @@
|
|||
commit b94887bbc0621e1e8402e7f0ec4bc3adf46c9a6e
|
||||
Author: Rafael J. Wysocki <rjw@sisk.pl>
|
||||
Date: Fri Feb 17 12:42:08 2012 -0500
|
||||
|
||||
Freeze all filesystems during system suspend and (kernel-driven)
|
||||
hibernation by calling freeze_supers() for all superblocks and thaw
|
||||
them during the subsequent resume with the help of thaw_supers().
|
||||
|
||||
This makes filesystems stay in a consistent state in case something
|
||||
goes wrong between system suspend (or hibernation) and the subsequent
|
||||
resume (e.g. journal replays won't be necessary in those cases). In
|
||||
particular, this should help to solve a long-standing issue that, in
|
||||
some cases, during resume from hibernation the boot loader causes the
|
||||
journal to be replied for the filesystem containing the kernel image
|
||||
and/or initrd causing it to become inconsistent with the information
|
||||
stored in the hibernation image.
|
||||
|
||||
The user-space-driven hibernation (s2disk) is not covered by this
|
||||
change, because the freezing of filesystems prevents s2disk from
|
||||
accessing device special files it needs to do its job.
|
||||
|
||||
This change is based on earlier work by Nigel Cunningham.
|
||||
|
||||
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
|
||||
|
||||
Rebased to 3.3-rc3 by Josh Boyer <jwboyer@redhat.com>
|
||||
|
||||
diff --git a/fs/super.c b/fs/super.c
|
||||
index 6015c02..c8057fa 100644
|
||||
--- a/fs/super.c
|
||||
+++ b/fs/super.c
|
||||
@@ -594,6 +594,79 @@ void iterate_supers_type(struct file_system_type *type,
|
||||
EXPORT_SYMBOL(iterate_supers_type);
|
||||
|
||||
/**
|
||||
+ * thaw_supers - call thaw_super() for all superblocks
|
||||
+ */
|
||||
+void thaw_supers(void)
|
||||
+{
|
||||
+ struct super_block *sb, *p = NULL;
|
||||
+
|
||||
+ spin_lock(&sb_lock);
|
||||
+ list_for_each_entry(sb, &super_blocks, s_list) {
|
||||
+ if (hlist_unhashed(&sb->s_instances))
|
||||
+ continue;
|
||||
+ sb->s_count++;
|
||||
+ spin_unlock(&sb_lock);
|
||||
+
|
||||
+ if (sb->s_flags & MS_FROZEN) {
|
||||
+ thaw_super(sb);
|
||||
+ sb->s_flags &= ~MS_FROZEN;
|
||||
+ }
|
||||
+
|
||||
+ spin_lock(&sb_lock);
|
||||
+ if (p)
|
||||
+ __put_super(p);
|
||||
+ p = sb;
|
||||
+ }
|
||||
+ if (p)
|
||||
+ __put_super(p);
|
||||
+ spin_unlock(&sb_lock);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * freeze_supers - call freeze_super() for all superblocks
|
||||
+ */
|
||||
+int freeze_supers(void)
|
||||
+{
|
||||
+ struct super_block *sb, *p = NULL;
|
||||
+ int error = 0;
|
||||
+
|
||||
+ spin_lock(&sb_lock);
|
||||
+ /*
|
||||
+ * Freeze in reverse order so filesystems depending on others are
|
||||
+ * frozen in the right order (eg. loopback on ext3).
|
||||
+ */
|
||||
+ list_for_each_entry_reverse(sb, &super_blocks, s_list) {
|
||||
+ if (hlist_unhashed(&sb->s_instances))
|
||||
+ continue;
|
||||
+ sb->s_count++;
|
||||
+ spin_unlock(&sb_lock);
|
||||
+
|
||||
+ if (sb->s_root && sb->s_frozen != SB_FREEZE_TRANS
|
||||
+ && !(sb->s_flags & MS_RDONLY)) {
|
||||
+ error = freeze_super(sb);
|
||||
+ if (!error)
|
||||
+ sb->s_flags |= MS_FROZEN;
|
||||
+ }
|
||||
+
|
||||
+ spin_lock(&sb_lock);
|
||||
+ if (error)
|
||||
+ break;
|
||||
+ if (p)
|
||||
+ __put_super(p);
|
||||
+ p = sb;
|
||||
+ }
|
||||
+ if (p)
|
||||
+ __put_super(p);
|
||||
+ spin_unlock(&sb_lock);
|
||||
+
|
||||
+ if (error)
|
||||
+ thaw_supers();
|
||||
+
|
||||
+ return error;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/**
|
||||
* get_super - get the superblock of a device
|
||||
* @bdev: device to get the superblock for
|
||||
*
|
||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||
index 386da09..a164f4a 100644
|
||||
--- a/include/linux/fs.h
|
||||
+++ b/include/linux/fs.h
|
||||
@@ -210,6 +210,7 @@ struct inodes_stat_t {
|
||||
#define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */
|
||||
#define MS_I_VERSION (1<<23) /* Update inode I_version field */
|
||||
#define MS_STRICTATIME (1<<24) /* Always perform atime updates */
|
||||
+#define MS_FROZEN (1<<25) /* Frozen filesystem */
|
||||
#define MS_NOSEC (1<<28)
|
||||
#define MS_BORN (1<<29)
|
||||
#define MS_ACTIVE (1<<30)
|
||||
@@ -2501,6 +2502,8 @@ extern void drop_super(struct super_block *sb);
|
||||
extern void iterate_supers(void (*)(struct super_block *, void *), void *);
|
||||
extern void iterate_supers_type(struct file_system_type *,
|
||||
void (*)(struct super_block *, void *), void *);
|
||||
+extern int freeze_supers(void);
|
||||
+extern void thaw_supers(void);
|
||||
|
||||
extern int dcache_dir_open(struct inode *, struct file *);
|
||||
extern int dcache_dir_close(struct inode *, struct file *);
|
||||
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
|
||||
index 6d6d288..492fc62 100644
|
||||
--- a/kernel/power/hibernate.c
|
||||
+++ b/kernel/power/hibernate.c
|
||||
@@ -626,12 +626,17 @@ int hibernate(void)
|
||||
if (error)
|
||||
goto Finish;
|
||||
|
||||
- error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM);
|
||||
+ error = freeze_supers();
|
||||
if (error)
|
||||
goto Thaw;
|
||||
+
|
||||
+ error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM);
|
||||
+ if (error)
|
||||
+ goto Thaw_fs;
|
||||
+
|
||||
if (freezer_test_done) {
|
||||
freezer_test_done = false;
|
||||
- goto Thaw;
|
||||
+ goto Thaw_fs;
|
||||
}
|
||||
|
||||
if (in_suspend) {
|
||||
@@ -655,6 +660,8 @@ int hibernate(void)
|
||||
pr_debug("PM: Image restored successfully.\n");
|
||||
}
|
||||
|
||||
+ Thaw_fs:
|
||||
+ thaw_supers();
|
||||
Thaw:
|
||||
thaw_processes();
|
||||
Finish:
|
||||
diff --git a/kernel/power/power.h b/kernel/power/power.h
|
||||
index 21724ee..40d6f64 100644
|
||||
--- a/kernel/power/power.h
|
||||
+++ b/kernel/power/power.h
|
||||
@@ -1,3 +1,4 @@
|
||||
+#include <linux/fs.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/suspend_ioctls.h>
|
||||
#include <linux/utsname.h>
|
||||
@@ -227,45 +228,3 @@ enum {
|
||||
#define TEST_MAX (__TEST_AFTER_LAST - 1)
|
||||
|
||||
extern int pm_test_level;
|
||||
-
|
||||
-#ifdef CONFIG_SUSPEND_FREEZER
|
||||
-static inline int suspend_freeze_processes(void)
|
||||
-{
|
||||
- int error;
|
||||
-
|
||||
- error = freeze_processes();
|
||||
-
|
||||
- /*
|
||||
- * freeze_processes() automatically thaws every task if freezing
|
||||
- * fails. So we need not do anything extra upon error.
|
||||
- */
|
||||
- if (error)
|
||||
- goto Finish;
|
||||
-
|
||||
- error = freeze_kernel_threads();
|
||||
-
|
||||
- /*
|
||||
- * freeze_kernel_threads() thaws only kernel threads upon freezing
|
||||
- * failure. So we have to thaw the userspace tasks ourselves.
|
||||
- */
|
||||
- if (error)
|
||||
- thaw_processes();
|
||||
-
|
||||
- Finish:
|
||||
- return error;
|
||||
-}
|
||||
-
|
||||
-static inline void suspend_thaw_processes(void)
|
||||
-{
|
||||
- thaw_processes();
|
||||
-}
|
||||
-#else
|
||||
-static inline int suspend_freeze_processes(void)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static inline void suspend_thaw_processes(void)
|
||||
-{
|
||||
-}
|
||||
-#endif
|
||||
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
|
||||
index 4fd51be..5f51fc7 100644
|
||||
--- a/kernel/power/suspend.c
|
||||
+++ b/kernel/power/suspend.c
|
||||
@@ -29,6 +29,62 @@
|
||||
|
||||
#include "power.h"
|
||||
|
||||
+#ifdef CONFIG_SUSPEND_FREEZER
|
||||
+
|
||||
+static inline int suspend_freeze_processes(void)
|
||||
+{
|
||||
+ int error;
|
||||
+
|
||||
+ error = freeze_processes();
|
||||
+
|
||||
+ /*
|
||||
+ * freeze_processes() automatically thaws every task if freezing
|
||||
+ * fails. So we need not do anything extra upon error.
|
||||
+ */
|
||||
+
|
||||
+ if (error)
|
||||
+ goto Finish;
|
||||
+
|
||||
+ error = freeze_supers();
|
||||
+ if (error) {
|
||||
+ thaw_processes();
|
||||
+ goto Finish;
|
||||
+ }
|
||||
+
|
||||
+ error = freeze_kernel_threads();
|
||||
+
|
||||
+ /*
|
||||
+ * freeze_kernel_threads() thaws only kernel threads upon freezing
|
||||
+ * failure. So we have to thaw the userspace tasks ourselves.
|
||||
+ */
|
||||
+ if (error) {
|
||||
+ thaw_supers();
|
||||
+ thaw_processes();
|
||||
+ }
|
||||
+
|
||||
+Finish:
|
||||
+ return error;
|
||||
+}
|
||||
+
|
||||
+static inline void suspend_thaw_processes(void)
|
||||
+{
|
||||
+ thaw_supers();
|
||||
+ thaw_processes();
|
||||
+}
|
||||
+
|
||||
+#else /* !CONFIG_SUSPEND_FREEZER */
|
||||
+
|
||||
+static inline int suspend_freeze_processes(void)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static inline void suspend_thaw_processes(void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+#endif /* !CONFIG_SUSPEND_FREEZER */
|
||||
+
|
||||
const char *const pm_states[PM_SUSPEND_MAX] = {
|
||||
[PM_SUSPEND_STANDBY] = "standby",
|
||||
[PM_SUSPEND_MEM] = "mem",
|
|
@ -0,0 +1,108 @@
|
|||
commit 8ed5b5d41168a98cffa63e2f6c51c3243e159706
|
||||
Author: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
Date: Wed Mar 13 22:56:33 2013 -0300
|
||||
|
||||
i7300_edac: Fix memory detection in single mode
|
||||
|
||||
When the machine is on single mode, only branch 0 channel 0
|
||||
is valid. However, the code is not honouring it:
|
||||
|
||||
[ 1952.639341] EDAC DEBUG: i7300_get_mc_regs: Memory controller operating on single mode
|
||||
...
|
||||
[ 1952.639351] EDAC DEBUG: i7300_init_csrows: AMB-present CH0 = 0x1:
|
||||
[ 1952.639353] EDAC DEBUG: i7300_init_csrows: AMB-present CH1 = 0x0:
|
||||
[ 1952.639355] EDAC DEBUG: i7300_init_csrows: AMB-present CH2 = 0x0:
|
||||
[ 1952.639358] EDAC DEBUG: i7300_init_csrows: AMB-present CH3 = 0x0:
|
||||
...
|
||||
[ 1952.639360] EDAC DEBUG: decode_mtr: MTR0 CH0: DIMMs are Present (mtr)
|
||||
[ 1952.639362] EDAC DEBUG: decode_mtr: WIDTH: x8
|
||||
[ 1952.639363] EDAC DEBUG: decode_mtr: ELECTRICAL THROTTLING is enabled
|
||||
[ 1952.639364] EDAC DEBUG: decode_mtr: NUMBANK: 4 bank(s)
|
||||
[ 1952.639366] EDAC DEBUG: decode_mtr: NUMRANK: single
|
||||
[ 1952.639367] EDAC DEBUG: decode_mtr: NUMROW: 16,384 - 14 rows
|
||||
[ 1952.639368] EDAC DEBUG: decode_mtr: NUMCOL: 1,024 - 10 columns
|
||||
[ 1952.639370] EDAC DEBUG: decode_mtr: SIZE: 512 MB
|
||||
[ 1952.639371] EDAC DEBUG: decode_mtr: ECC code is 8-byte-over-32-byte SECDED+ code
|
||||
[ 1952.639373] EDAC DEBUG: decode_mtr: Scrub algorithm for x8 is on enhanced mode
|
||||
[ 1952.639374] EDAC DEBUG: decode_mtr: MTR0 CH1: DIMMs are Present (mtr)
|
||||
[ 1952.639376] EDAC DEBUG: decode_mtr: WIDTH: x8
|
||||
[ 1952.639377] EDAC DEBUG: decode_mtr: ELECTRICAL THROTTLING is enabled
|
||||
[ 1952.639379] EDAC DEBUG: decode_mtr: NUMBANK: 4 bank(s)
|
||||
[ 1952.639380] EDAC DEBUG: decode_mtr: NUMRANK: single
|
||||
[ 1952.639381] EDAC DEBUG: decode_mtr: NUMROW: 16,384 - 14 rows
|
||||
[ 1952.639383] EDAC DEBUG: decode_mtr: NUMCOL: 1,024 - 10 columns
|
||||
[ 1952.639384] EDAC DEBUG: decode_mtr: SIZE: 512 MB
|
||||
[ 1952.639385] EDAC DEBUG: decode_mtr: ECC code is 8-byte-over-32-byte SECDED+ code
|
||||
[ 1952.639387] EDAC DEBUG: decode_mtr: Scrub algorithm for x8 is on enhanced mode
|
||||
...
|
||||
[ 1952.639449] EDAC DEBUG: print_dimm_size: channel 0 | channel 1 | channel 2 | channel 3 |
|
||||
[ 1952.639451] EDAC DEBUG: print_dimm_size: -------------------------------------------------------------
|
||||
[ 1952.639453] EDAC DEBUG: print_dimm_size: csrow/SLOT 0 512 MB | 512 MB | 0 MB | 0 MB |
|
||||
[ 1952.639456] EDAC DEBUG: print_dimm_size: csrow/SLOT 1 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639458] EDAC DEBUG: print_dimm_size: csrow/SLOT 2 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639460] EDAC DEBUG: print_dimm_size: csrow/SLOT 3 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639462] EDAC DEBUG: print_dimm_size: csrow/SLOT 4 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639464] EDAC DEBUG: print_dimm_size: csrow/SLOT 5 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639466] EDAC DEBUG: print_dimm_size: csrow/SLOT 6 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639468] EDAC DEBUG: print_dimm_size: csrow/SLOT 7 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639470] EDAC DEBUG: print_dimm_size: -------------------------------------------------------------
|
||||
|
||||
Instead of detecting a single memory at channel 0, it is showing
|
||||
twice the memory.
|
||||
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
|
||||
diff --git a/drivers/edac/i7300_edac.c b/drivers/edac/i7300_edac.c
|
||||
index 087c27b..9004c64 100644
|
||||
--- a/drivers/edac/i7300_edac.c
|
||||
+++ b/drivers/edac/i7300_edac.c
|
||||
@@ -750,15 +750,23 @@ static int i7300_init_csrows(struct mem_ctl_info *mci)
|
||||
struct i7300_dimm_info *dinfo;
|
||||
int rc = -ENODEV;
|
||||
int mtr;
|
||||
- int ch, branch, slot, channel;
|
||||
+ int ch, branch, slot, channel, max_channel, max_branch;
|
||||
struct dimm_info *dimm;
|
||||
|
||||
pvt = mci->pvt_info;
|
||||
|
||||
edac_dbg(2, "Memory Technology Registers:\n");
|
||||
|
||||
+ if (IS_SINGLE_MODE(pvt->mc_settings_a)) {
|
||||
+ max_branch = 1;
|
||||
+ max_channel = 1;
|
||||
+ } else {
|
||||
+ max_branch = MAX_BRANCHES;
|
||||
+ max_channel = MAX_CH_PER_BRANCH;
|
||||
+ }
|
||||
+
|
||||
/* Get the AMB present registers for the four channels */
|
||||
- for (branch = 0; branch < MAX_BRANCHES; branch++) {
|
||||
+ for (branch = 0; branch < max_branch; branch++) {
|
||||
/* Read and dump branch 0's MTRs */
|
||||
channel = to_channel(0, branch);
|
||||
pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch],
|
||||
@@ -767,6 +775,9 @@ static int i7300_init_csrows(struct mem_ctl_info *mci)
|
||||
edac_dbg(2, "\t\tAMB-present CH%d = 0x%x:\n",
|
||||
channel, pvt->ambpresent[channel]);
|
||||
|
||||
+ if (max_channel == 1)
|
||||
+ continue;
|
||||
+
|
||||
channel = to_channel(1, branch);
|
||||
pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch],
|
||||
AMBPRESENT_1,
|
||||
@@ -778,11 +789,11 @@ static int i7300_init_csrows(struct mem_ctl_info *mci)
|
||||
/* Get the set of MTR[0-7] regs by each branch */
|
||||
for (slot = 0; slot < MAX_SLOTS; slot++) {
|
||||
int where = mtr_regs[slot];
|
||||
- for (branch = 0; branch < MAX_BRANCHES; branch++) {
|
||||
+ for (branch = 0; branch < max_branch; branch++) {
|
||||
pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch],
|
||||
where,
|
||||
&pvt->mtr[slot][branch]);
|
||||
- for (ch = 0; ch < MAX_CH_PER_BRANCH; ch++) {
|
||||
+ for (ch = 0; ch < max_channel; ch++) {
|
||||
int channel = to_channel(ch, branch);
|
||||
|
||||
dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms,
|
|
@ -1,17 +1,8 @@
|
|||
From b2c6d55b2351152696aafb8c9bf3ec8968acf77c Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Mon, 29 Mar 2010 23:59:58 -0400
|
||||
Subject: linux-2.6-input-kill-stupid-messages
|
||||
|
||||
---
|
||||
drivers/input/keyboard/atkbd.c | 5 +++++
|
||||
1 files changed, 5 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
|
||||
index d358ef8..38db098 100644
|
||||
index add5ffd..5eb2f03 100644
|
||||
--- a/drivers/input/keyboard/atkbd.c
|
||||
+++ b/drivers/input/keyboard/atkbd.c
|
||||
@@ -425,11 +426,15 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
||||
@@ -430,11 +430,15 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
||||
goto out;
|
||||
case ATKBD_RET_ACK:
|
||||
case ATKBD_RET_NAK:
|
||||
|
@ -21,12 +12,9 @@ index d358ef8..38db098 100644
|
|||
if (printk_ratelimit())
|
||||
dev_warn(&serio->dev,
|
||||
"Spurious %s on %s. "
|
||||
"Some program might be trying access hardware directly.\n",
|
||||
"Some program might be trying to access hardware directly.\n",
|
||||
data == ATKBD_RET_ACK ? "ACK" : "NAK", serio->phys);
|
||||
+#endif
|
||||
goto out;
|
||||
case ATKBD_RET_ERR:
|
||||
atkbd->err_count++;
|
||||
--
|
||||
1.7.0.1
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
This triggers on a MacBook Pro.
|
||||
|
||||
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=948262
|
||||
---
|
||||
drivers/iommu/intel_irq_remapping.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
|
||||
index f3b8f23..a7e0ad1 100644
|
||||
--- a/drivers/iommu/intel_irq_remapping.c
|
||||
+++ b/drivers/iommu/intel_irq_remapping.c
|
||||
@@ -654,8 +654,7 @@ error:
|
||||
*/
|
||||
|
||||
if (x2apic_present)
|
||||
- WARN(1, KERN_WARNING
|
||||
- "Failed to enable irq remapping. You are vulnerable to irq-injection attacks.\n");
|
||||
+ pr_warn("Failed to enable irq remapping. You are vulnerable to irq-injection attacks.\n");
|
||||
|
||||
return -1;
|
||||
}
|
||||
--
|
||||
1.8.1.4
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
--- a/drivers/platform/x86/intel_ips.c
|
||||
+++ a/drivers/platform/x86/intel_ips.c
|
||||
@@ -1603,6 +1603,12 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||
goto error_unmap;
|
||||
}
|
||||
|
||||
+ /* No IRQ assigned is a BIOS failure... */
|
||||
+ if (dev->irq <= 0) {
|
||||
+ ret = -ENODEV;
|
||||
+ goto error_unmap;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* IRQ handler for ME interaction
|
||||
* Note: don't use MSI here as the PCH has bugs.
|
|
@ -0,0 +1,52 @@
|
|||
From a963a37d384d71ad43b3e9e79d68d42fbe0901f3 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Dumazet <edumazet@google.com>
|
||||
Date: Wed, 26 Jun 2013 04:15:07 -0700
|
||||
Subject: [PATCH] ipv6: ip6_sk_dst_check() must not assume ipv6 dst
|
||||
|
||||
It's possible to use AF_INET6 sockets and to connect to an IPv4
|
||||
destination. After this, socket dst cache is a pointer to a rtable,
|
||||
not rt6_info.
|
||||
|
||||
ip6_sk_dst_check() should check the socket dst cache is IPv6, or else
|
||||
various corruptions/crashes can happen.
|
||||
|
||||
Dave Jones can reproduce immediate crash with
|
||||
trinity -q -l off -n -c sendmsg -c connect
|
||||
|
||||
With help from Hannes Frederic Sowa
|
||||
|
||||
Reported-by: Dave Jones <davej@redhat.com>
|
||||
Reported-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: Eric Dumazet <edumazet@google.com>
|
||||
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/ipv6/ip6_output.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
|
||||
index 95703ba..d5d20cd 100644
|
||||
--- a/net/ipv6/ip6_output.c
|
||||
+++ b/net/ipv6/ip6_output.c
|
||||
@@ -821,11 +821,17 @@ static struct dst_entry *ip6_sk_dst_check(struct sock *sk,
|
||||
const struct flowi6 *fl6)
|
||||
{
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
- struct rt6_info *rt = (struct rt6_info *)dst;
|
||||
+ struct rt6_info *rt;
|
||||
|
||||
if (!dst)
|
||||
goto out;
|
||||
|
||||
+ if (dst->ops->family != AF_INET6) {
|
||||
+ dst_release(dst);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ rt = (struct rt6_info *)dst;
|
||||
/* Yes, checking route validity in not connected
|
||||
* case is not very simple. Take into account,
|
||||
* that we do not support routing by source, TOS,
|
||||
--
|
||||
1.8.2.1
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
From: Eric Dumazet <edumazet@google.com>
|
||||
|
||||
Steinar reported reallocations of skb->head with IPv6, leading to
|
||||
a warning in skb_try_coalesce()
|
||||
|
||||
It turns out iwl3945 has several problems :
|
||||
|
||||
1) skb->truesize is underestimated.
|
||||
We really consume PAGE_SIZE bytes for a fragment,
|
||||
not the frame length.
|
||||
2) 128 bytes of initial headroom is a bit low and forces reallocations.
|
||||
3) We can avoid consuming a full page for small enough frames.
|
||||
|
||||
Reported-by: Steinar H. Gunderson <sesse@google.com>
|
||||
Signed-off-by: Eric Dumazet <edumazet@google.com>
|
||||
Cc: Paul Stewart <pstew@google.com>
|
||||
---
|
||||
v3: use regular memcpy(skb_put(...),...)
|
||||
v2: SMALL_PACKET_SIZE define
|
||||
|
||||
drivers/net/wireless/iwlegacy/3945.c | 31 +++++++++++++++----------
|
||||
1 file changed, 19 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlegacy/3945.c b/drivers/net/wireless/iwlegacy/3945.c
|
||||
index c092033..f09e257 100644
|
||||
--- a/drivers/net/wireless/iwlegacy/3945.c
|
||||
+++ b/drivers/net/wireless/iwlegacy/3945.c
|
||||
@@ -475,6 +475,8 @@ il3945_is_network_packet(struct il_priv *il, struct ieee80211_hdr *header)
|
||||
}
|
||||
}
|
||||
|
||||
+#define SMALL_PACKET_SIZE 256
|
||||
+
|
||||
static void
|
||||
il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb,
|
||||
struct ieee80211_rx_status *stats)
|
||||
@@ -483,14 +485,13 @@ il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb,
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)IL_RX_DATA(pkt);
|
||||
struct il3945_rx_frame_hdr *rx_hdr = IL_RX_HDR(pkt);
|
||||
struct il3945_rx_frame_end *rx_end = IL_RX_END(pkt);
|
||||
- u16 len = le16_to_cpu(rx_hdr->len);
|
||||
+ u32 len = le16_to_cpu(rx_hdr->len);
|
||||
struct sk_buff *skb;
|
||||
__le16 fc = hdr->frame_control;
|
||||
+ u32 fraglen = PAGE_SIZE << il->hw_params.rx_page_order;
|
||||
|
||||
/* We received data from the HW, so stop the watchdog */
|
||||
- if (unlikely
|
||||
- (len + IL39_RX_FRAME_SIZE >
|
||||
- PAGE_SIZE << il->hw_params.rx_page_order)) {
|
||||
+ if (unlikely(len + IL39_RX_FRAME_SIZE > fraglen)) {
|
||||
D_DROP("Corruption detected!\n");
|
||||
return;
|
||||
}
|
||||
@@ -506,26 +507,32 @@ il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb,
|
||||
D_INFO("Woke queues - frame received on passive channel\n");
|
||||
}
|
||||
|
||||
- skb = dev_alloc_skb(128);
|
||||
+ skb = dev_alloc_skb(SMALL_PACKET_SIZE);
|
||||
if (!skb) {
|
||||
IL_ERR("dev_alloc_skb failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!il3945_mod_params.sw_crypto)
|
||||
- il_set_decrypted_flag(il, (struct ieee80211_hdr *)rxb_addr(rxb),
|
||||
+ il_set_decrypted_flag(il, (struct ieee80211_hdr *)pkt,
|
||||
le32_to_cpu(rx_end->status), stats);
|
||||
|
||||
- skb_add_rx_frag(skb, 0, rxb->page,
|
||||
- (void *)rx_hdr->payload - (void *)pkt, len,
|
||||
- len);
|
||||
-
|
||||
+ /* If frame is small enough to fit into skb->head, copy it
|
||||
+ * and do not consume a full page
|
||||
+ */
|
||||
+ if (len <= SMALL_PACKET_SIZE) {
|
||||
+ memcpy(skb_put(skb, len), rx_hdr->payload, len);
|
||||
+ } else {
|
||||
+ skb_add_rx_frag(skb, 0, rxb->page,
|
||||
+ (void *)rx_hdr->payload - (void *)pkt, len,
|
||||
+ fraglen);
|
||||
+ il->alloc_rxb_page--;
|
||||
+ rxb->page = NULL;
|
||||
+ }
|
||||
il_update_stats(il, false, fc, len);
|
||||
memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats));
|
||||
|
||||
ieee80211_rx(il->hw, skb);
|
||||
- il->alloc_rxb_page--;
|
||||
- rxb->page = NULL;
|
||||
}
|
||||
|
||||
#define IL_DELAY_NEXT_SCAN_AFTER_ASSOC (HZ*6)
|
||||
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
4965 version of Eric patch "iwl3945: better skb management in rx path".
|
||||
It fixes several problems :
|
||||
|
||||
1) skb->truesize is underestimated.
|
||||
We really consume PAGE_SIZE bytes for a fragment,
|
||||
not the frame length.
|
||||
2) 128 bytes of initial headroom is a bit low and forces reallocations.
|
||||
3) We can avoid consuming a full page for small enough frames.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/iwlegacy/4965-mac.c | 18 ++++++++++++------
|
||||
1 file changed, 12 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c
|
||||
index d287fd2..4e5d408 100644
|
||||
--- a/drivers/net/wireless/iwlegacy/4965-mac.c
|
||||
+++ b/drivers/net/wireless/iwlegacy/4965-mac.c
|
||||
@@ -574,9 +574,11 @@ il4965_translate_rx_status(struct il_priv *il, u32 decrypt_in)
|
||||
return decrypt_out;
|
||||
}
|
||||
|
||||
+#define SMALL_PACKET_SIZE 256
|
||||
+
|
||||
static void
|
||||
il4965_pass_packet_to_mac80211(struct il_priv *il, struct ieee80211_hdr *hdr,
|
||||
- u16 len, u32 ampdu_status, struct il_rx_buf *rxb,
|
||||
+ u32 len, u32 ampdu_status, struct il_rx_buf *rxb,
|
||||
struct ieee80211_rx_status *stats)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
@@ -598,21 +600,25 @@ il4965_pass_packet_to_mac80211(struct il_priv *il, struct ieee80211_hdr *hdr,
|
||||
il_set_decrypted_flag(il, hdr, ampdu_status, stats))
|
||||
return;
|
||||
|
||||
- skb = dev_alloc_skb(128);
|
||||
+ skb = dev_alloc_skb(SMALL_PACKET_SIZE);
|
||||
if (!skb) {
|
||||
IL_ERR("dev_alloc_skb failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
- skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len,
|
||||
- len);
|
||||
+ if (len <= SMALL_PACKET_SIZE) {
|
||||
+ memcpy(skb_put(skb, len), hdr, len);
|
||||
+ } else {
|
||||
+ skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb),
|
||||
+ len, PAGE_SIZE << il->hw_params.rx_page_order);
|
||||
+ il->alloc_rxb_page--;
|
||||
+ rxb->page = NULL;
|
||||
+ }
|
||||
|
||||
il_update_stats(il, false, fc, len);
|
||||
memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats));
|
||||
|
||||
ieee80211_rx(il->hw, skb);
|
||||
- il->alloc_rxb_page--;
|
||||
- rxb->page = NULL;
|
||||
}
|
||||
|
||||
/* Called for N_RX (legacy ABG frames), or
|
||||
--
|
||||
1.7.11.7
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From 7b29fdb8cd8f92e31f550611a8c031986dba2e8f Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Fri, 03 May 2013 16:58:16 +0000
|
||||
Subject: iwlwifi: dvm: don't send BT_CONFIG on devices w/o Bluetooth
|
||||
|
||||
The BT_CONFIG command that is sent to the device during
|
||||
startup will enable BT coex unless the module parameter
|
||||
turns it off, but on devices without Bluetooth this may
|
||||
cause problems, as reported in Redhat BZ 885407.
|
||||
|
||||
Fix this by sending the BT_CONFIG command only when the
|
||||
device has Bluetooth.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
|
||||
---
|
||||
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c
|
||||
index 3952ddf..1531a4f 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/dvm/main.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
|
||||
@@ -758,7 +758,7 @@ int iwl_alive_start(struct iwl_priv *priv)
|
||||
BT_COEX_PRIO_TBL_EVT_INIT_CALIB2);
|
||||
if (ret)
|
||||
return ret;
|
||||
- } else {
|
||||
+ } else if (priv->cfg->bt_params) {
|
||||
/*
|
||||
* default is 2-wire BT coexexistence support
|
||||
*/
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -0,0 +1,56 @@
|
|||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
|
||||
When a queue is disabled, it frees all its entries. Later,
|
||||
the op_mode might still get notifications from the firmware
|
||||
that triggers to free entries in the tx queue. The transport
|
||||
should be prepared for these races and know to ignore
|
||||
reclaim calls on queues that have been disabled and whose
|
||||
entries have been freed.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/pcie/tx.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
index cb5c679..faaf77c 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
@@ -578,9 +578,12 @@ static void iwl_pcie_txq_unmap(struct iwl_trans *trans, int txq_id)
|
||||
|
||||
spin_lock_bh(&txq->lock);
|
||||
while (q->write_ptr != q->read_ptr) {
|
||||
+ IWL_DEBUG_TX_REPLY(trans, "Q %d Free %d\n",
|
||||
+ txq_id, q->read_ptr);
|
||||
iwl_pcie_txq_free_tfd(trans, txq);
|
||||
q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd);
|
||||
}
|
||||
+ txq->active = false;
|
||||
spin_unlock_bh(&txq->lock);
|
||||
}
|
||||
|
||||
@@ -929,6 +932,12 @@ void iwl_trans_pcie_reclaim(struct iwl_trans *trans, int txq_id, int ssn,
|
||||
|
||||
spin_lock_bh(&txq->lock);
|
||||
|
||||
+ if (!txq->active) {
|
||||
+ IWL_DEBUG_TX_QUEUES(trans, "Q %d inactive - ignoring idx %d\n",
|
||||
+ txq_id, ssn);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
if (txq->q.read_ptr == tfd_num)
|
||||
goto out;
|
||||
|
||||
@@ -1105,6 +1114,7 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, int fifo,
|
||||
(fifo << SCD_QUEUE_STTS_REG_POS_TXF) |
|
||||
(1 << SCD_QUEUE_STTS_REG_POS_WSL) |
|
||||
SCD_QUEUE_STTS_REG_MSK);
|
||||
+ trans_pcie->txq[txq_id].active = true;
|
||||
IWL_DEBUG_TX_QUEUES(trans, "Activate queue %d on FIFO %d WrPtr: %d\n",
|
||||
txq_id, fifo, ssn & 0xff);
|
||||
}
|
||||
--
|
||||
1.7.11.7
|
|
@ -0,0 +1,35 @@
|
|||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
|
||||
When the queue is unmapped while it was so loaded that
|
||||
mac80211's was stopped, we need to wake the queue after
|
||||
having freed all the packets in the queue.
|
||||
Not doing so can result in weird stuff like:
|
||||
|
||||
* run lots of traffic (mac80211's queue gets stopped)
|
||||
* RFKILL
|
||||
* de-assert RFKILL
|
||||
* no traffic
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/pcie/tx.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
index faaf77c..4e7b8d4 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
@@ -585,6 +585,9 @@ static void iwl_pcie_txq_unmap(struct iwl_trans *trans, int txq_id)
|
||||
}
|
||||
txq->active = false;
|
||||
spin_unlock_bh(&txq->lock);
|
||||
+
|
||||
+ /* just in case - this queue may have been stopped */
|
||||
+ iwl_wake_queue(trans, txq);
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
1.7.11.7
|
1917
kernel.spec
1917
kernel.spec
File diff suppressed because it is too large
Load Diff
|
@ -1,251 +0,0 @@
|
|||
Before:
|
||||
Heap randomisation test (PIE) : 16 bits (guessed)
|
||||
Main executable randomisation (PIE) : 8 bits (guessed)
|
||||
|
||||
after:
|
||||
Heap randomisation test (PIE) : 19 bits (guessed)
|
||||
Main executable randomisation (PIE) : 12 bits (guessed)
|
||||
|
||||
|
||||
|
||||
--- b/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -397,6 +397,10 @@
|
||||
extern unsigned long
|
||||
arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
|
||||
unsigned long, unsigned long);
|
||||
+
|
||||
+extern unsigned long
|
||||
+arch_get_unmapped_exec_area(struct file *, unsigned long, unsigned long,
|
||||
+ unsigned long, unsigned long);
|
||||
extern unsigned long
|
||||
arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
|
||||
unsigned long len, unsigned long pgoff,
|
||||
--- b/mm/mmap.c
|
||||
+++ b/mm/mmap.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <linux/perf_event.h>
|
||||
#include <linux/audit.h>
|
||||
#include <linux/khugepaged.h>
|
||||
+#include <linux/random.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/cacheflush.h>
|
||||
@@ -1000,7 +1001,8 @@
|
||||
/* Obtain the address to map to. we verify (or select) it and ensure
|
||||
* that it represents a valid section of the address space.
|
||||
*/
|
||||
- addr = get_unmapped_area(file, addr, len, pgoff, flags);
|
||||
+ addr = get_unmapped_area_prot(file, addr, len, pgoff, flags,
|
||||
+ prot & PROT_EXEC);
|
||||
if (addr & ~PAGE_MASK)
|
||||
return addr;
|
||||
|
||||
@@ -1552,8 +1554,8 @@
|
||||
}
|
||||
|
||||
unsigned long
|
||||
-get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
|
||||
- unsigned long pgoff, unsigned long flags)
|
||||
+get_unmapped_area_prot(struct file *file, unsigned long addr, unsigned long len,
|
||||
+ unsigned long pgoff, unsigned long flags, int exec)
|
||||
{
|
||||
unsigned long (*get_area)(struct file *, unsigned long,
|
||||
unsigned long, unsigned long, unsigned long);
|
||||
@@ -1566,7 +1568,11 @@
|
||||
if (len > TASK_SIZE)
|
||||
return -ENOMEM;
|
||||
|
||||
- get_area = current->mm->get_unmapped_area;
|
||||
+ if (exec && current->mm->get_unmapped_exec_area)
|
||||
+ get_area = current->mm->get_unmapped_exec_area;
|
||||
+ else
|
||||
+ get_area = current->mm->get_unmapped_area;
|
||||
+
|
||||
if (file && file->f_op && file->f_op->get_unmapped_area)
|
||||
get_area = file->f_op->get_unmapped_area;
|
||||
addr = get_area(file, addr, len, pgoff, flags);
|
||||
@@ -1580,8 +1586,83 @@
|
||||
|
||||
return arch_rebalance_pgtables(addr, len);
|
||||
}
|
||||
+EXPORT_SYMBOL(get_unmapped_area_prot);
|
||||
+
|
||||
+static bool should_randomize(void)
|
||||
+{
|
||||
+ return (current->flags & PF_RANDOMIZE) &&
|
||||
+ !(current->personality & ADDR_NO_RANDOMIZE);
|
||||
+}
|
||||
+
|
||||
+#define SHLIB_BASE 0x00110000
|
||||
+
|
||||
+unsigned long
|
||||
+arch_get_unmapped_exec_area(struct file *filp, unsigned long addr0,
|
||||
+ unsigned long len0, unsigned long pgoff, unsigned long flags)
|
||||
+{
|
||||
+ unsigned long addr = addr0, len = len0;
|
||||
+ struct mm_struct *mm = current->mm;
|
||||
+ struct vm_area_struct *vma;
|
||||
+ unsigned long tmp;
|
||||
+
|
||||
+ if (len > TASK_SIZE)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ if (flags & MAP_FIXED)
|
||||
+ return addr;
|
||||
+
|
||||
+ if (!addr)
|
||||
+ addr = !should_randomize() ? SHLIB_BASE :
|
||||
+ randomize_range(SHLIB_BASE, 0x01000000, len);
|
||||
+
|
||||
+ if (addr) {
|
||||
+ addr = PAGE_ALIGN(addr);
|
||||
+ vma = find_vma(mm, addr);
|
||||
+ if (TASK_SIZE - len >= addr &&
|
||||
+ (!vma || addr + len <= vma->vm_start))
|
||||
+ return addr;
|
||||
+ }
|
||||
+
|
||||
+ addr = SHLIB_BASE;
|
||||
+ for (vma = find_vma(mm, addr); ; vma = vma->vm_next) {
|
||||
+ /* At this point: (!vma || addr < vma->vm_end). */
|
||||
+ if (TASK_SIZE - len < addr)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ if (!vma || addr + len <= vma->vm_start) {
|
||||
+ /*
|
||||
+ * Must not let a PROT_EXEC mapping get into the
|
||||
+ * brk area:
|
||||
+ */
|
||||
+ if (addr + len > mm->brk)
|
||||
+ goto failed;
|
||||
+
|
||||
+ /*
|
||||
+ * Up until the brk area we randomize addresses
|
||||
+ * as much as possible:
|
||||
+ */
|
||||
+ if (addr >= 0x01000000 && should_randomize()) {
|
||||
+ tmp = randomize_range(0x01000000,
|
||||
+ PAGE_ALIGN(max(mm->start_brk,
|
||||
+ (unsigned long)0x08000000)), len);
|
||||
+ vma = find_vma(mm, tmp);
|
||||
+ if (TASK_SIZE - len >= tmp &&
|
||||
+ (!vma || tmp + len <= vma->vm_start))
|
||||
+ return tmp;
|
||||
+ }
|
||||
+ /*
|
||||
+ * Ok, randomization didnt work out - return
|
||||
+ * the result of the linear search:
|
||||
+ */
|
||||
+ return addr;
|
||||
+ }
|
||||
+ addr = vma->vm_end;
|
||||
+ }
|
||||
+
|
||||
+failed:
|
||||
+ return current->mm->get_unmapped_area(filp, addr0, len0, pgoff, flags);
|
||||
+}
|
||||
|
||||
-EXPORT_SYMBOL(get_unmapped_area);
|
||||
|
||||
/* Look up the first VMA which satisfies addr < vm_end, NULL if none. */
|
||||
struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
|
||||
--- a/arch/x86/mm/mmap.c
|
||||
+++ b/arch/x86/mm/mmap.c
|
||||
@@ -124,13 +124,19 @@ static unsigned long mmap_legacy_base(void)
|
||||
*/
|
||||
void arch_pick_mmap_layout(struct mm_struct *mm)
|
||||
{
|
||||
if (mmap_is_legacy()) {
|
||||
mm->mmap_base = mmap_legacy_base();
|
||||
mm->get_unmapped_area = arch_get_unmapped_area;
|
||||
mm->unmap_area = arch_unmap_area;
|
||||
} else {
|
||||
mm->mmap_base = mmap_base();
|
||||
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ if (!(current->personality & READ_IMPLIES_EXEC)
|
||||
+ && !(__supported_pte_mask & _PAGE_NX)
|
||||
+ && mmap_is_ia32())
|
||||
+ mm->get_unmapped_exec_area = arch_get_unmapped_exec_area;
|
||||
+#endif
|
||||
mm->unmap_area = arch_unmap_area_topdown;
|
||||
}
|
||||
}
|
||||
--- a/arch/x86/vdso/vdso32-setup.c
|
||||
+++ b/arch/x86/vdso/vdso32-setup.c
|
||||
@@ -331,7 +331,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
|
||||
if (compat)
|
||||
addr = VDSO_HIGH_BASE;
|
||||
else {
|
||||
- addr = get_unmapped_area(NULL, 0, PAGE_SIZE, 0, 0);
|
||||
+ addr = get_unmapped_area_prot(NULL, 0, PAGE_SIZE, 0, 0, 1);
|
||||
if (IS_ERR_VALUE(addr)) {
|
||||
ret = addr;
|
||||
goto up_fail;
|
||||
--- a/include/linux/mm.h
|
||||
+++ b/include/linux/mm.h
|
||||
@@ -1263,7 +1263,13 @@ extern int install_special_mapping(struct mm_struct *mm,
|
||||
unsigned long addr, unsigned long len,
|
||||
unsigned long flags, struct page **pages);
|
||||
|
||||
-extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
|
||||
+extern unsigned long get_unmapped_area_prot(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, int);
|
||||
+
|
||||
+static inline unsigned long get_unmapped_area(struct file *file, unsigned long addr,
|
||||
+ unsigned long len, unsigned long pgoff, unsigned long flags)
|
||||
+{
|
||||
+ return get_unmapped_area_prot(file, addr, len, pgoff, flags, 0);
|
||||
+}
|
||||
|
||||
extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
|
||||
unsigned long len, unsigned long prot,
|
||||
--- a/include/linux/mm_types.h
|
||||
+++ b/include/linux/mm_types.h
|
||||
@@ -227,6 +227,9 @@ struct mm_struct {
|
||||
unsigned long (*get_unmapped_area) (struct file *filp,
|
||||
unsigned long addr, unsigned long len,
|
||||
unsigned long pgoff, unsigned long flags);
|
||||
+ unsigned long (*get_unmapped_exec_area) (struct file *filp,
|
||||
+ unsigned long addr, unsigned long len,
|
||||
+ unsigned long pgoff, unsigned long flags);
|
||||
void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
|
||||
#endif
|
||||
unsigned long mmap_base; /* base of mmap area */
|
||||
--- a/mm/mremap.c
|
||||
+++ b/mm/mremap.c
|
||||
@@ -487,10 +487,10 @@ unsigned long do_mremap(unsigned long addr,
|
||||
if (vma->vm_flags & VM_MAYSHARE)
|
||||
map_flags |= MAP_SHARED;
|
||||
|
||||
- new_addr = get_unmapped_area(vma->vm_file, 0, new_len,
|
||||
+ new_addr = get_unmapped_area_prot(vma->vm_file, 0, new_len,
|
||||
vma->vm_pgoff +
|
||||
((addr - vma->vm_start) >> PAGE_SHIFT),
|
||||
- map_flags);
|
||||
+ map_flags, vma->vm_flags & VM_EXEC);
|
||||
if (new_addr & ~PAGE_MASK) {
|
||||
ret = new_addr;
|
||||
goto out;
|
||||
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
|
||||
index 57d1868..29c0c35 100644
|
||||
--- a/arch/x86/kernel/process.c
|
||||
+++ b/arch/x86/kernel/process.c
|
||||
@@ -669,6 +669,16 @@ unsigned long arch_align_stack(unsigned long sp)
|
||||
unsigned long arch_randomize_brk(struct mm_struct *mm)
|
||||
{
|
||||
unsigned long range_end = mm->brk + 0x02000000;
|
||||
- return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
|
||||
+ unsigned long bump = 0;
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ /* in the case of NX emulation, shove the brk segment way out of the
|
||||
+ way of the exec randomization area, since it can collide with
|
||||
+ future allocations if not. */
|
||||
+ if ( (mm->get_unmapped_exec_area == arch_get_unmapped_exec_area) &&
|
||||
+ (mm->brk < 0x08000000) ) {
|
||||
+ bump = (TASK_SIZE/6);
|
||||
+ }
|
||||
+#endif
|
||||
+ return bump + (randomize_range(mm->brk, range_end, 0) ? : mm->brk);
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
--- linux-2.6.34.noarch/drivers/acpi/acpica/acconfig.h~ 2010-07-01 14:49:03.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/acpi/acpica/acconfig.h 2010-07-01 14:49:17.000000000 -0400
|
||||
--- linux-2.6.34.noarch/include/acpi/acconfig.h~ 2010-07-01 14:49:03.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/include/acpi/acconfig.h 2010-07-01 14:49:17.000000000 -0400
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
/* Maximum number of While() loop iterations before forced abort */
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
diff -up linux-2.6.30.noarch/drivers/pci/pcie/aspm.c.mjg linux-2.6.30.noarch/drivers/pci/pcie/aspm.c
|
||||
--- linux-2.6.30.noarch/drivers/pci/pcie/aspm.c.mjg 2009-07-16 22:01:11.000000000 +0100
|
||||
+++ linux-2.6.30.noarch/drivers/pci/pcie/aspm.c 2009-07-16 22:01:30.000000000 +0100
|
||||
@@ -65,7 +65,7 @@ static LIST_HEAD(link_list);
|
||||
#define POLICY_DEFAULT 0 /* BIOS default setting */
|
||||
#define POLICY_PERFORMANCE 1 /* high performance */
|
||||
#define POLICY_POWERSAVE 2 /* high power saving */
|
||||
-static int aspm_policy;
|
||||
+static int aspm_policy = POLICY_POWERSAVE;
|
||||
static const char *policy_str[] = {
|
||||
[POLICY_DEFAULT] = "default",
|
||||
[POLICY_PERFORMANCE] = "performance",
|
|
@ -1,46 +0,0 @@
|
|||
From 802e6d8c8477a553a677b23a247d6d2638e01958 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Jones <davej@redhat.com>
|
||||
Date: Wed, 26 Oct 2011 13:31:47 -0400
|
||||
Subject: [PATCH] e1000e: ich9 montevina
|
||||
|
||||
This only showed up in one SDV (Montevina).
|
||||
The PCIE slots don't seem to like network cards, so this is the only hope
|
||||
to get networking working. It's never going upstream, but it's low impact
|
||||
enough to carry just to keep those SDVs working.
|
||||
---
|
||||
drivers/net/ethernet/intel/e1000e/ich8lan.c | 6 ++++++
|
||||
drivers/net/ethernet/intel/e1000e/netdev.c | 1 +
|
||||
2 files changed, 7 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
|
||||
index 6a17c62..0e40975 100644
|
||||
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
|
||||
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
|
||||
@@ -452,6 +452,12 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw)
|
||||
|
||||
/* Verify phy id */
|
||||
switch (phy->id) {
|
||||
+ case 0:
|
||||
+ if (hw->adapter->pdev->device == 0x10be)
|
||||
+ e_dbg("got 0 phy id, trying anyway");
|
||||
+ /* Fall through to IGP03E1000 case below */
|
||||
+ else
|
||||
+ return -E1000_ERR_PHY;
|
||||
case IGP03E1000_E_PHY_ID:
|
||||
phy->type = e1000_phy_igp_3;
|
||||
phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
|
||||
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
index a855db1..edac30b 100644
|
||||
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
@@ -6359,6 +6359,7 @@ static DEFINE_PCI_DEVICE_TABLE(e1000_pci_tbl) = {
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M), board_ich9lan },
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_AMT), board_ich9lan },
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_V), board_ich9lan },
|
||||
+ { PCI_VDEVICE(INTEL, 0x10be), board_ich9lan },
|
||||
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LM), board_ich9lan },
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LF), board_ich9lan },
|
||||
--
|
||||
1.7.6.4
|
||||
|
|
@ -1,594 +0,0 @@
|
|||
--- a/arch/x86/include/asm/desc.h
|
||||
+++ b/arch/x86/include/asm/desc.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <asm/ldt.h>
|
||||
#include <asm/mmu.h>
|
||||
|
||||
+#include <linux/mm_types.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
static inline void fill_ldt(struct desc_struct *desc, const struct user_desc *info)
|
||||
@@ -97,6 +98,9 @@ static inline int desc_empty(const void *ptr)
|
||||
|
||||
#define load_TLS(t, cpu) native_load_tls(t, cpu)
|
||||
#define set_ldt native_set_ldt
|
||||
+#ifdef CONFIG_X86_32
|
||||
+#define load_user_cs_desc native_load_user_cs_desc
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
|
||||
#define write_ldt_entry(dt, entry, desc) native_write_ldt_entry(dt, entry, desc)
|
||||
#define write_gdt_entry(dt, entry, desc, type) native_write_gdt_entry(dt, entry, desc, type)
|
||||
@@ -392,4 +396,25 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
|
||||
_set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS);
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+static inline void set_user_cs(struct desc_struct *desc, unsigned long limit)
|
||||
+{
|
||||
+ limit = (limit - 1) / PAGE_SIZE;
|
||||
+ desc->a = limit & 0xffff;
|
||||
+ desc->b = (limit & 0xf0000) | 0x00c0fb00;
|
||||
+}
|
||||
+
|
||||
+static inline void native_load_user_cs_desc(int cpu, struct mm_struct *mm)
|
||||
+{
|
||||
+ get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS] = (mm)->context.user_cs;
|
||||
+}
|
||||
+
|
||||
+#define arch_add_exec_range arch_add_exec_range
|
||||
+#define arch_remove_exec_range arch_remove_exec_range
|
||||
+#define arch_flush_exec_range arch_flush_exec_range
|
||||
+extern void arch_add_exec_range(struct mm_struct *mm, unsigned long limit);
|
||||
+extern void arch_remove_exec_range(struct mm_struct *mm, unsigned long limit);
|
||||
+extern void arch_flush_exec_range(struct mm_struct *mm);
|
||||
+#endif /* CONFIG_X86_32 */
|
||||
+
|
||||
#endif /* _ASM_X86_DESC_H */
|
||||
--- a/arch/x86/include/asm/mmu.h
|
||||
+++ b/arch/x86/include/asm/mmu.h
|
||||
@@ -7,6 +7,9 @@
|
||||
/*
|
||||
* The x86 doesn't have a mmu context, but
|
||||
* we put the segment information here.
|
||||
+ *
|
||||
+ * exec_limit is used to track the range PROT_EXEC
|
||||
+ * mappings span.
|
||||
*/
|
||||
typedef struct {
|
||||
void *ldt;
|
||||
@@ -19,6 +22,11 @@ typedef struct {
|
||||
|
||||
struct mutex lock;
|
||||
void *vdso;
|
||||
+
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ struct desc_struct user_cs;
|
||||
+ unsigned long exec_limit;
|
||||
+#endif
|
||||
} mm_context_t;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
--- a/arch/x86/include/asm/paravirt.h
|
||||
+++ b/arch/x86/include/asm/paravirt.h
|
||||
@@ -289,6 +289,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
|
||||
{
|
||||
PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries);
|
||||
}
|
||||
+#ifdef CONFIG_X86_32
|
||||
+static inline void load_user_cs_desc(unsigned int cpu, struct mm_struct *mm)
|
||||
+{
|
||||
+ PVOP_VCALL2(pv_cpu_ops.load_user_cs_desc, cpu, mm);
|
||||
+}
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
static inline void store_gdt(struct desc_ptr *dtr)
|
||||
{
|
||||
PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr);
|
||||
--- a/arch/x86/include/asm/paravirt_types.h
|
||||
+++ b/arch/x86/include/asm/paravirt_types.h
|
||||
@@ -118,6 +118,9 @@ struct pv_cpu_ops {
|
||||
void (*store_gdt)(struct desc_ptr *);
|
||||
void (*store_idt)(struct desc_ptr *);
|
||||
void (*set_ldt)(const void *desc, unsigned entries);
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ void (*load_user_cs_desc)(int cpu, struct mm_struct *mm);
|
||||
+#endif
|
||||
unsigned long (*store_tr)(void);
|
||||
void (*load_tls)(struct thread_struct *t, unsigned int cpu);
|
||||
#ifdef CONFIG_X86_64
|
||||
--- a/arch/x86/kernel/cpu/common.c
|
||||
+++ b/arch/x86/kernel/cpu/common.c
|
||||
@@ -802,6 +802,22 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
|
||||
/* Filter out anything that depends on CPUID levels we don't have */
|
||||
filter_cpuid_features(c, true);
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ /*
|
||||
+ * emulation of NX with segment limits unfortunately means
|
||||
+ * we have to disable the fast system calls, due to the way that
|
||||
+ * sysexit clears the segment limits on return.
|
||||
+ * If we have either disabled exec-shield on the boot command line,
|
||||
+ * or we have NX, then we don't need to do this.
|
||||
+ */
|
||||
+ if (!disable_nx) {
|
||||
+#ifdef CONFIG_X86_PAE
|
||||
+ if (!test_cpu_cap(c, X86_FEATURE_NX))
|
||||
+#endif
|
||||
+ clear_cpu_cap(c, X86_FEATURE_SEP);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* If the model name is still unset, do table lookup. */
|
||||
if (!c->x86_model_id[0]) {
|
||||
const char *p;
|
||||
--- a/arch/x86/kernel/paravirt.c
|
||||
+++ b/arch/x86/kernel/paravirt.c
|
||||
@@ -345,6 +345,9 @@ struct pv_cpu_ops pv_cpu_ops = {
|
||||
.read_tscp = native_read_tscp,
|
||||
.load_tr_desc = native_load_tr_desc,
|
||||
.set_ldt = native_set_ldt,
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ .load_user_cs_desc = native_load_user_cs_desc,
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
.load_gdt = native_load_gdt,
|
||||
.load_idt = native_load_idt,
|
||||
.store_gdt = native_store_gdt,
|
||||
--- a/arch/x86/kernel/process_32.c
|
||||
+++ b/arch/x86/kernel/process_32.c
|
||||
@@ -243,7 +243,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
|
||||
void
|
||||
start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
|
||||
{
|
||||
+ int cpu;
|
||||
+
|
||||
set_user_gs(regs, 0);
|
||||
+
|
||||
regs->fs = 0;
|
||||
regs->ds = __USER_DS;
|
||||
regs->es = __USER_DS;
|
||||
@@ -252,6 +255,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
|
||||
regs->cs = __USER_CS;
|
||||
regs->ip = new_ip;
|
||||
regs->sp = new_sp;
|
||||
+
|
||||
+ cpu = get_cpu();
|
||||
+ load_user_cs_desc(cpu, current->mm);
|
||||
+ put_cpu();
|
||||
+
|
||||
/*
|
||||
* Free the old FP and other extended state
|
||||
*/
|
||||
@@ -311,6 +319,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
|
||||
if (preload_fpu)
|
||||
prefetch(next->fpu.state);
|
||||
|
||||
+ if (next_p->mm)
|
||||
+ load_user_cs_desc(cpu, next_p->mm);
|
||||
+
|
||||
/*
|
||||
* Reload esp0.
|
||||
*/
|
||||
@@ -404,3 +415,40 @@ unsigned long get_wchan(struct task_struct *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static void modify_cs(struct mm_struct *mm, unsigned long limit)
|
||||
+{
|
||||
+ mm->context.exec_limit = limit;
|
||||
+ set_user_cs(&mm->context.user_cs, limit);
|
||||
+ if (mm == current->mm) {
|
||||
+ int cpu;
|
||||
+
|
||||
+ cpu = get_cpu();
|
||||
+ load_user_cs_desc(cpu, mm);
|
||||
+ put_cpu();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void arch_add_exec_range(struct mm_struct *mm, unsigned long limit)
|
||||
+{
|
||||
+ if (limit > mm->context.exec_limit)
|
||||
+ modify_cs(mm, limit);
|
||||
+}
|
||||
+
|
||||
+void arch_remove_exec_range(struct mm_struct *mm, unsigned long old_end)
|
||||
+{
|
||||
+ struct vm_area_struct *vma;
|
||||
+ unsigned long limit = PAGE_SIZE;
|
||||
+
|
||||
+ if (old_end == mm->context.exec_limit) {
|
||||
+ for (vma = mm->mmap; vma; vma = vma->vm_next)
|
||||
+ if ((vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
|
||||
+ limit = vma->vm_end;
|
||||
+ modify_cs(mm, limit);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void arch_flush_exec_range(struct mm_struct *mm)
|
||||
+{
|
||||
+ mm->context.exec_limit = 0;
|
||||
+ set_user_cs(&mm->context.user_cs, 0);
|
||||
+}
|
||||
--- a/arch/x86/kernel/traps.c
|
||||
+++ b/arch/x86/kernel/traps.c
|
||||
@@ -109,6 +109,78 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
|
||||
dec_preempt_count();
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+static inline int
|
||||
+__compare_user_cs_desc(const struct desc_struct *desc1,
|
||||
+ const struct desc_struct *desc2)
|
||||
+{
|
||||
+ return ((desc1->limit0 != desc2->limit0) ||
|
||||
+ (desc1->limit != desc2->limit) ||
|
||||
+ (desc1->base0 != desc2->base0) ||
|
||||
+ (desc1->base1 != desc2->base1) ||
|
||||
+ (desc1->base2 != desc2->base2));
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * lazy-check for CS validity on exec-shield binaries:
|
||||
+ *
|
||||
+ * the original non-exec stack patch was written by
|
||||
+ * Solar Designer <solar at openwall.com>. Thanks!
|
||||
+ */
|
||||
+static int
|
||||
+check_lazy_exec_limit(int cpu, struct pt_regs *regs, long error_code)
|
||||
+{
|
||||
+ struct desc_struct *desc1, *desc2;
|
||||
+ struct vm_area_struct *vma;
|
||||
+ unsigned long limit;
|
||||
+
|
||||
+ if (current->mm == NULL)
|
||||
+ return 0;
|
||||
+
|
||||
+ limit = -1UL;
|
||||
+ if (current->mm->context.exec_limit != -1UL) {
|
||||
+ limit = PAGE_SIZE;
|
||||
+ spin_lock(¤t->mm->page_table_lock);
|
||||
+ for (vma = current->mm->mmap; vma; vma = vma->vm_next)
|
||||
+ if ((vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
|
||||
+ limit = vma->vm_end;
|
||||
+ vma = get_gate_vma(current->mm);
|
||||
+ if (vma && (vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
|
||||
+ limit = vma->vm_end;
|
||||
+ spin_unlock(¤t->mm->page_table_lock);
|
||||
+ if (limit >= TASK_SIZE)
|
||||
+ limit = -1UL;
|
||||
+ current->mm->context.exec_limit = limit;
|
||||
+ }
|
||||
+ set_user_cs(¤t->mm->context.user_cs, limit);
|
||||
+
|
||||
+ desc1 = ¤t->mm->context.user_cs;
|
||||
+ desc2 = get_cpu_gdt_table(cpu) + GDT_ENTRY_DEFAULT_USER_CS;
|
||||
+
|
||||
+ if (__compare_user_cs_desc(desc1, desc2)) {
|
||||
+ /*
|
||||
+ * The CS was not in sync - reload it and retry the
|
||||
+ * instruction. If the instruction still faults then
|
||||
+ * we won't hit this branch next time around.
|
||||
+ */
|
||||
+ if (print_fatal_signals >= 2) {
|
||||
+ printk(KERN_ERR "#GPF fixup (%ld[seg:%lx]) at %08lx, CPU#%d.\n",
|
||||
+ error_code, error_code/8, regs->ip,
|
||||
+ smp_processor_id());
|
||||
+ printk(KERN_ERR "exec_limit: %08lx, user_cs: %08x/%08x, CPU_cs: %08x/%08x.\n",
|
||||
+ current->mm->context.exec_limit,
|
||||
+ desc1->a, desc1->b, desc2->a, desc2->b);
|
||||
+ }
|
||||
+
|
||||
+ load_user_cs_desc(cpu, current->mm);
|
||||
+
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static void __kprobes
|
||||
do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
|
||||
long error_code, siginfo_t *info)
|
||||
@@ -265,6 +337,29 @@ do_general_protection(struct pt_regs *regs, long error_code)
|
||||
if (!user_mode(regs))
|
||||
goto gp_in_kernel;
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+{
|
||||
+ int cpu;
|
||||
+ int ok;
|
||||
+
|
||||
+ cpu = get_cpu();
|
||||
+ ok = check_lazy_exec_limit(cpu, regs, error_code);
|
||||
+ put_cpu();
|
||||
+
|
||||
+ if (ok)
|
||||
+ return;
|
||||
+
|
||||
+ if (print_fatal_signals) {
|
||||
+ printk(KERN_ERR "#GPF(%ld[seg:%lx]) at %08lx, CPU#%d.\n",
|
||||
+ error_code, error_code/8, regs->ip, smp_processor_id());
|
||||
+ printk(KERN_ERR "exec_limit: %08lx, user_cs: %08x/%08x.\n",
|
||||
+ current->mm->context.exec_limit,
|
||||
+ current->mm->context.user_cs.a,
|
||||
+ current->mm->context.user_cs.b);
|
||||
+ }
|
||||
+}
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
+
|
||||
tsk->thread.error_code = error_code;
|
||||
tsk->thread.trap_no = 13;
|
||||
|
||||
@@ -792,19 +887,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
+/*
|
||||
+ * The fixup code for errors in iret jumps to here (iret_exc). It loses
|
||||
+ * the original trap number and erorr code. The bogus trap 32 and error
|
||||
+ * code 0 are what the vanilla kernel delivers via:
|
||||
+ * DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0, 1)
|
||||
+ *
|
||||
+ * NOTE: Because of the final "1" in the macro we need to enable interrupts.
|
||||
+ *
|
||||
+ * In case of a general protection fault in the iret instruction, we
|
||||
+ * need to check for a lazy CS update for exec-shield.
|
||||
+ */
|
||||
dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
|
||||
{
|
||||
- siginfo_t info;
|
||||
+ int ok;
|
||||
+ int cpu;
|
||||
+
|
||||
local_irq_enable();
|
||||
|
||||
- info.si_signo = SIGILL;
|
||||
- info.si_errno = 0;
|
||||
- info.si_code = ILL_BADSTK;
|
||||
- info.si_addr = NULL;
|
||||
- if (notify_die(DIE_TRAP, "iret exception",
|
||||
- regs, error_code, 32, SIGILL) == NOTIFY_STOP)
|
||||
- return;
|
||||
- do_trap(32, SIGILL, "iret exception", regs, error_code, &info);
|
||||
+ cpu = get_cpu();
|
||||
+ ok = check_lazy_exec_limit(cpu, regs, error_code);
|
||||
+ put_cpu();
|
||||
+
|
||||
+ if (!ok && notify_die(DIE_TRAP, "iret exception", regs,
|
||||
+ error_code, 32, SIGSEGV) != NOTIFY_STOP) {
|
||||
+ siginfo_t info;
|
||||
+ info.si_signo = SIGSEGV;
|
||||
+ info.si_errno = 0;
|
||||
+ info.si_code = ILL_BADSTK;
|
||||
+ info.si_addr = 0;
|
||||
+ do_trap(32, SIGSEGV, "iret exception", regs, error_code, &info);
|
||||
+ }
|
||||
}
|
||||
#endif
|
||||
|
||||
--- a/arch/x86/mm/setup_nx.c
|
||||
+++ b/arch/x86/mm/setup_nx.c
|
||||
@@ -1,3 +1,4 @@
|
||||
+#include <linux/sched.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/init.h>
|
||||
@@ -6,7 +6,7 @@
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/proto.h>
|
||||
|
||||
-static int disable_nx __cpuinitdata;
|
||||
+int disable_nx __cpuinitdata;
|
||||
|
||||
/*
|
||||
* noexec = on|off
|
||||
@@ -40,6 +42,10 @@ void __cpuinit x86_configure_nx(void)
|
||||
void __init x86_report_nx(void)
|
||||
{
|
||||
if (!cpu_has_nx) {
|
||||
+ if (!disable_nx)
|
||||
+ printk(KERN_INFO "Using x86 segment limits to approximate NX protection\n");
|
||||
+ else
|
||||
+
|
||||
printk(KERN_NOTICE "Notice: NX (Execute Disable) protection "
|
||||
"missing in CPU!\n");
|
||||
} else {
|
||||
--- a/arch/x86/mm/tlb.c
|
||||
+++ b/arch/x86/mm/tlb.c
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/cpu.h>
|
||||
|
||||
+#include <asm/desc.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/cache.h>
|
||||
@@ -131,6 +132,12 @@ void smp_invalidate_interrupt(struct pt_regs *regs)
|
||||
union smp_flush_state *f;
|
||||
|
||||
cpu = smp_processor_id();
|
||||
+
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ if (current->active_mm)
|
||||
+ load_user_cs_desc(cpu, current->active_mm);
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* orig_rax contains the negated interrupt vector.
|
||||
* Use that to determine where the sender put the data.
|
||||
--- a/arch/x86/xen/enlighten.c
|
||||
+++ b/arch/x86/xen/enlighten.c
|
||||
@@ -335,6 +335,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
|
||||
xen_mc_issue(PARAVIRT_LAZY_CPU);
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+static void xen_load_user_cs_desc(int cpu, struct mm_struct *mm)
|
||||
+{
|
||||
+ void *gdt;
|
||||
+ xmaddr_t mgdt;
|
||||
+ u64 descriptor;
|
||||
+ struct desc_struct user_cs;
|
||||
+
|
||||
+ gdt = &get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS];
|
||||
+ mgdt = virt_to_machine(gdt);
|
||||
+
|
||||
+ user_cs = mm->context.user_cs;
|
||||
+ descriptor = (u64) user_cs.a | ((u64) user_cs.b) << 32;
|
||||
+
|
||||
+ HYPERVISOR_update_descriptor(mgdt.maddr, descriptor);
|
||||
+}
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
+
|
||||
static void xen_load_gdt(const struct desc_ptr *dtr)
|
||||
{
|
||||
unsigned long va = dtr->address;
|
||||
@@ -961,6 +979,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
|
||||
|
||||
.load_tr_desc = paravirt_nop,
|
||||
.set_ldt = xen_set_ldt,
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ .load_user_cs_desc = xen_load_user_cs_desc,
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
.load_gdt = xen_load_gdt,
|
||||
.load_idt = xen_load_idt,
|
||||
.load_tls = xen_load_tls,
|
||||
--- a/fs/binfmt_elf.c
|
||||
+++ b/fs/binfmt_elf.c
|
||||
@@ -717,6 +722,15 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
||||
if (retval)
|
||||
goto out_free_dentry;
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ /*
|
||||
+ * Turn off the CS limit completely if exec-shield disabled or
|
||||
+ * NX active:
|
||||
+ */
|
||||
+ if (disable_nx || executable_stack != EXSTACK_DISABLE_X || (__supported_pte_mask & _PAGE_NX))
|
||||
+ arch_add_exec_range(current->mm, -1);
|
||||
+#endif
|
||||
+
|
||||
/* OK, This is the point of no return */
|
||||
current->flags &= ~PF_FORKNOEXEC;
|
||||
current->mm->def_flags = def_flags;
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -101,6 +101,9 @@ struct bio_list;
|
||||
struct perf_event_context;
|
||||
struct blk_plug;
|
||||
|
||||
+extern int disable_nx;
|
||||
+extern int print_fatal_signals;
|
||||
+
|
||||
/*
|
||||
* List of flags we want to share for kernel threads,
|
||||
* if only because they are not used by them anyway.
|
||||
--- b/mm/mmap.c
|
||||
+++ b/mm/mmap.c
|
||||
@@ -44,6 +45,18 @@
|
||||
#define arch_rebalance_pgtables(addr, len) (addr)
|
||||
#endif
|
||||
|
||||
+/* No sane architecture will #define these to anything else */
|
||||
+#ifndef arch_add_exec_range
|
||||
+#define arch_add_exec_range(mm, limit) do { ; } while (0)
|
||||
+#endif
|
||||
+#ifndef arch_flush_exec_range
|
||||
+#define arch_flush_exec_range(mm) do { ; } while (0)
|
||||
+#endif
|
||||
+#ifndef arch_remove_exec_range
|
||||
+#define arch_remove_exec_range(mm, limit) do { ; } while (0)
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
static void unmap_region(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, struct vm_area_struct *prev,
|
||||
unsigned long start, unsigned long end);
|
||||
@@ -432,6 +432,8 @@ __vma_link(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
struct vm_area_struct *prev, struct rb_node **rb_link,
|
||||
struct rb_node *rb_parent)
|
||||
{
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_add_exec_range(mm, vma->vm_end);
|
||||
__vma_link_list(mm, vma, prev, rb_parent);
|
||||
__vma_link_rb(mm, vma, rb_link, rb_parent);
|
||||
}
|
||||
@@ -489,6 +504,8 @@
|
||||
rb_erase(&vma->vm_rb, &mm->mm_rb);
|
||||
if (mm->mmap_cache == vma)
|
||||
mm->mmap_cache = prev;
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_remove_exec_range(mm, vma->vm_end);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -790,6 +807,8 @@
|
||||
} else /* cases 2, 5, 7 */
|
||||
err = vma_adjust(prev, prev->vm_start,
|
||||
end, prev->vm_pgoff, NULL);
|
||||
+ if (prev->vm_flags & VM_EXEC)
|
||||
+ arch_add_exec_range(mm, prev->vm_end);
|
||||
if (err)
|
||||
return NULL;
|
||||
return prev;
|
||||
@@ -1966,10 +2075,14 @@
|
||||
if (new->vm_ops && new->vm_ops->open)
|
||||
new->vm_ops->open(new);
|
||||
|
||||
- if (new_below)
|
||||
+ if (new_below) {
|
||||
+ unsigned long old_end = vma->vm_end;
|
||||
+
|
||||
err = vma_adjust(vma, addr, vma->vm_end, vma->vm_pgoff +
|
||||
((addr - new->vm_start) >> PAGE_SHIFT), new);
|
||||
- else
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_remove_exec_range(mm, old_end);
|
||||
+ } else
|
||||
err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
|
||||
|
||||
/* Success. */
|
||||
@@ -2254,6 +2367,7 @@
|
||||
|
||||
free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, 0);
|
||||
tlb_finish_mmu(&tlb, 0, end);
|
||||
+ arch_flush_exec_range(mm);
|
||||
|
||||
/*
|
||||
* Walk the list again, actually closing and freeing it,
|
||||
--- a/mm/mprotect.c
|
||||
+++ b/mm/mprotect.c
|
||||
@@ -25,9 +25,14 @@
|
||||
#include <linux/perf_event.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/pgtable.h>
|
||||
+#include <asm/pgalloc.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/tlbflush.h>
|
||||
|
||||
+#ifndef arch_remove_exec_range
|
||||
+#define arch_remove_exec_range(mm, limit) do { ; } while (0)
|
||||
+#endif
|
||||
+
|
||||
#ifndef pgprot_modify
|
||||
static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
|
||||
{
|
||||
@@ -138,7 +143,7 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
unsigned long oldflags = vma->vm_flags;
|
||||
long nrpages = (end - start) >> PAGE_SHIFT;
|
||||
- unsigned long charged = 0;
|
||||
+ unsigned long charged = 0, old_end = vma->vm_end;
|
||||
pgoff_t pgoff;
|
||||
int error;
|
||||
int dirty_accountable = 0;
|
||||
@@ -203,6 +208,9 @@ success:
|
||||
dirty_accountable = 1;
|
||||
}
|
||||
|
||||
+ if (oldflags & VM_EXEC)
|
||||
+ arch_remove_exec_range(current->mm, old_end);
|
||||
+
|
||||
mmu_notifier_invalidate_range_start(mm, start, end);
|
||||
if (is_vm_hugetlb_page(vma))
|
||||
hugetlb_change_protection(vma, start, end, vma->vm_page_prot);
|
|
@ -1,110 +0,0 @@
|
|||
diff -up linux-3.1.x86_64/Documentation/networking/dns_resolver.txt.orig linux-3.1.x86_64/Documentation/networking/dns_resolver.txt
|
||||
--- linux-3.1.x86_64/Documentation/networking/dns_resolver.txt.orig 2011-10-24 03:10:05.000000000 -0400
|
||||
+++ linux-3.1.x86_64/Documentation/networking/dns_resolver.txt 2011-12-13 15:09:35.705766078 -0500
|
||||
@@ -102,6 +102,10 @@ implemented in the module can be called
|
||||
If _expiry is non-NULL, the expiry time (TTL) of the result will be
|
||||
returned also.
|
||||
|
||||
+The kernel maintains an internal keyring in which it caches looked up keys.
|
||||
+This can be cleared by any process that has the CAP_SYS_ADMIN capability by
|
||||
+the use of KEYCTL_KEYRING_CLEAR on the keyring ID.
|
||||
+
|
||||
|
||||
===============================
|
||||
READING DNS KEYS FROM USERSPACE
|
||||
diff -up linux-3.1.x86_64/Documentation/security/keys.txt.orig linux-3.1.x86_64/Documentation/security/keys.txt
|
||||
--- linux-3.1.x86_64/Documentation/security/keys.txt.orig 2011-10-24 03:10:05.000000000 -0400
|
||||
+++ linux-3.1.x86_64/Documentation/security/keys.txt 2011-12-13 15:09:35.706766099 -0500
|
||||
@@ -554,6 +554,10 @@ The keyctl syscall functions are:
|
||||
process must have write permission on the keyring, and it must be a
|
||||
keyring (or else error ENOTDIR will result).
|
||||
|
||||
+ This function can also be used to clear special kernel keyrings if they
|
||||
+ are appropriately marked if the user has CAP_SYS_ADMIN capability. The
|
||||
+ DNS resolver cache keyring is an example of this.
|
||||
+
|
||||
|
||||
(*) Link a key into a keyring:
|
||||
|
||||
diff -up linux-3.1.x86_64/fs/cifs/cifsacl.c.orig linux-3.1.x86_64/fs/cifs/cifsacl.c
|
||||
--- linux-3.1.x86_64/fs/cifs/cifsacl.c.orig 2011-12-13 12:54:12.221145867 -0500
|
||||
+++ linux-3.1.x86_64/fs/cifs/cifsacl.c 2011-12-13 15:09:35.707766122 -0500
|
||||
@@ -556,6 +556,7 @@ init_cifs_idmap(void)
|
||||
|
||||
/* instruct request_key() to use this special keyring as a cache for
|
||||
* the results it looks up */
|
||||
+ set_bit(KEY_FLAG_ROOT_CAN_CLEAR, &keyring->flags);
|
||||
cred->thread_keyring = keyring;
|
||||
cred->jit_keyring = KEY_REQKEY_DEFL_THREAD_KEYRING;
|
||||
root_cred = cred;
|
||||
diff -up linux-3.1.x86_64/fs/nfs/idmap.c.orig linux-3.1.x86_64/fs/nfs/idmap.c
|
||||
--- linux-3.1.x86_64/fs/nfs/idmap.c.orig 2011-12-13 12:54:14.657203507 -0500
|
||||
+++ linux-3.1.x86_64/fs/nfs/idmap.c 2011-12-13 15:10:14.731681691 -0500
|
||||
@@ -115,6 +115,7 @@ int nfs_idmap_init(void)
|
||||
if (ret < 0)
|
||||
goto failed_put_key;
|
||||
|
||||
+ set_bit(KEY_FLAG_ROOT_CAN_CLEAR, &keyring->flags);
|
||||
cred->thread_keyring = keyring;
|
||||
cred->jit_keyring = KEY_REQKEY_DEFL_THREAD_KEYRING;
|
||||
id_resolver_cache = cred;
|
||||
@@ -185,7 +186,7 @@ static ssize_t nfs_idmap_request_key(con
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
- rkey->perm |= KEY_USR_VIEW;
|
||||
+ rkey->perm |= KEY_USR_VIEW|KEY_USR_WRITE;
|
||||
|
||||
ret = key_validate(rkey);
|
||||
if (ret < 0)
|
||||
diff -up linux-3.1.x86_64/include/linux/key.h.orig linux-3.1.x86_64/include/linux/key.h
|
||||
--- linux-3.1.x86_64/include/linux/key.h.orig 2011-10-24 03:10:05.000000000 -0400
|
||||
+++ linux-3.1.x86_64/include/linux/key.h 2011-12-13 15:09:35.748767078 -0500
|
||||
@@ -155,6 +155,7 @@ struct key {
|
||||
#define KEY_FLAG_IN_QUOTA 3 /* set if key consumes quota */
|
||||
#define KEY_FLAG_USER_CONSTRUCT 4 /* set if key is being constructed in userspace */
|
||||
#define KEY_FLAG_NEGATIVE 5 /* set if key is negative */
|
||||
+#define KEY_FLAG_ROOT_CAN_CLEAR 6 /* set if key can be cleared by root without permission */
|
||||
|
||||
/* the description string
|
||||
* - this is used to match a key against search criteria
|
||||
diff -up linux-3.1.x86_64/net/dns_resolver/dns_key.c.orig linux-3.1.x86_64/net/dns_resolver/dns_key.c
|
||||
--- linux-3.1.x86_64/net/dns_resolver/dns_key.c.orig 2011-10-24 03:10:05.000000000 -0400
|
||||
+++ linux-3.1.x86_64/net/dns_resolver/dns_key.c 2011-12-13 15:09:35.748767078 -0500
|
||||
@@ -281,6 +281,7 @@ static int __init init_dns_resolver(void
|
||||
|
||||
/* instruct request_key() to use this special keyring as a cache for
|
||||
* the results it looks up */
|
||||
+ set_bit(KEY_FLAG_ROOT_CAN_CLEAR, &keyring->flags);
|
||||
cred->thread_keyring = keyring;
|
||||
cred->jit_keyring = KEY_REQKEY_DEFL_THREAD_KEYRING;
|
||||
dns_resolver_cache = cred;
|
||||
diff -up linux-3.1.x86_64/security/keys/keyctl.c.orig linux-3.1.x86_64/security/keys/keyctl.c
|
||||
--- linux-3.1.x86_64/security/keys/keyctl.c.orig 2011-12-13 12:54:30.322571289 -0500
|
||||
+++ linux-3.1.x86_64/security/keys/keyctl.c 2011-12-13 15:09:35.756767271 -0500
|
||||
@@ -388,11 +388,24 @@ long keyctl_keyring_clear(key_serial_t r
|
||||
keyring_ref = lookup_user_key(ringid, KEY_LOOKUP_CREATE, KEY_WRITE);
|
||||
if (IS_ERR(keyring_ref)) {
|
||||
ret = PTR_ERR(keyring_ref);
|
||||
+
|
||||
+ /* Root is permitted to invalidate certain special keyrings */
|
||||
+ if (capable(CAP_SYS_ADMIN)) {
|
||||
+ keyring_ref = lookup_user_key(ringid, 0, 0);
|
||||
+ if (IS_ERR(keyring_ref))
|
||||
+ goto error;
|
||||
+ if (test_bit(KEY_FLAG_ROOT_CAN_CLEAR,
|
||||
+ &key_ref_to_ptr(keyring_ref)->flags))
|
||||
+ goto clear;
|
||||
+ goto error_put;
|
||||
+ }
|
||||
+
|
||||
goto error;
|
||||
}
|
||||
|
||||
+clear:
|
||||
ret = keyring_clear(key_ref_to_ptr(keyring_ref));
|
||||
-
|
||||
+error_put:
|
||||
key_ref_put(keyring_ref);
|
||||
error:
|
||||
return ret;
|
|
@ -0,0 +1,217 @@
|
|||
commit e6499c6f4b5f56a16f8b8ef60529c1da28b13aea
|
||||
Author: Bryan Schumaker <bjschuma@netapp.com>
|
||||
Date: Thu Jan 26 16:54:23 2012 -0500
|
||||
|
||||
NFS: Fall back on old idmapper if request_key() fails
|
||||
|
||||
This patch removes the CONFIG_NFS_USE_NEW_IDMAPPER compile option.
|
||||
First, the idmapper will attempt to map the id using /sbin/request-key
|
||||
and nfsidmap. If this fails (if /etc/request-key.conf is not configured
|
||||
properly) then the idmapper will call the legacy code to perform the
|
||||
mapping. I left a comment stating where the legacy code begins to make
|
||||
it easier for somebody to remove in the future.
|
||||
|
||||
Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
|
||||
diff -up linux-3.2.noarch/fs/nfs/idmap.c.orig linux-3.2.noarch/fs/nfs/idmap.c
|
||||
--- linux-3.2.noarch/fs/nfs/idmap.c.orig 2012-01-27 10:07:07.209851446 -0500
|
||||
+++ linux-3.2.noarch/fs/nfs/idmap.c 2012-01-27 10:15:42.914563082 -0500
|
||||
@@ -142,8 +142,6 @@ static int nfs_map_numeric_to_string(__u
|
||||
return snprintf(buf, buflen, "%u", id);
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_NFS_USE_NEW_IDMAPPER
|
||||
-
|
||||
#include <linux/cred.h>
|
||||
#include <linux/sunrpc/sched.h>
|
||||
#include <linux/nfs4.h>
|
||||
@@ -328,43 +326,7 @@ static int nfs_idmap_lookup_id(const cha
|
||||
return ret;
|
||||
}
|
||||
|
||||
-int nfs_map_name_to_uid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *uid)
|
||||
-{
|
||||
- if (nfs_map_string_to_numeric(name, namelen, uid))
|
||||
- return 0;
|
||||
- return nfs_idmap_lookup_id(name, namelen, "uid", uid);
|
||||
-}
|
||||
-
|
||||
-int nfs_map_group_to_gid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *gid)
|
||||
-{
|
||||
- if (nfs_map_string_to_numeric(name, namelen, gid))
|
||||
- return 0;
|
||||
- return nfs_idmap_lookup_id(name, namelen, "gid", gid);
|
||||
-}
|
||||
-
|
||||
-int nfs_map_uid_to_name(const struct nfs_server *server, __u32 uid, char *buf, size_t buflen)
|
||||
-{
|
||||
- int ret = -EINVAL;
|
||||
-
|
||||
- if (!(server->caps & NFS_CAP_UIDGID_NOMAP))
|
||||
- ret = nfs_idmap_lookup_name(uid, "user", buf, buflen);
|
||||
- if (ret < 0)
|
||||
- ret = nfs_map_numeric_to_string(uid, buf, buflen);
|
||||
- return ret;
|
||||
-}
|
||||
-int nfs_map_gid_to_group(const struct nfs_server *server, __u32 gid, char *buf, size_t buflen)
|
||||
-{
|
||||
- int ret = -EINVAL;
|
||||
-
|
||||
- if (!(server->caps & NFS_CAP_UIDGID_NOMAP))
|
||||
- ret = nfs_idmap_lookup_name(gid, "group", buf, buflen);
|
||||
- if (ret < 0)
|
||||
- ret = nfs_map_numeric_to_string(gid, buf, buflen);
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-#else /* CONFIG_NFS_USE_NEW_IDMAPPER not defined */
|
||||
-
|
||||
+/* idmap classic begins here */
|
||||
#include <linux/module.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/init.h>
|
||||
@@ -796,19 +758,27 @@ static unsigned int fnvhash32(const void
|
||||
int nfs_map_name_to_uid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *uid)
|
||||
{
|
||||
struct idmap *idmap = server->nfs_client->cl_idmap;
|
||||
+ int ret = -EINVAL;
|
||||
|
||||
if (nfs_map_string_to_numeric(name, namelen, uid))
|
||||
return 0;
|
||||
- return nfs_idmap_id(idmap, &idmap->idmap_user_hash, name, namelen, uid);
|
||||
+ ret = nfs_idmap_lookup_id(name, namelen, "uid", uid);
|
||||
+ if (ret < 0)
|
||||
+ ret = nfs_idmap_id(idmap, &idmap->idmap_user_hash, name, namelen, uid);
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
-int nfs_map_group_to_gid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *uid)
|
||||
+int nfs_map_group_to_gid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *gid)
|
||||
{
|
||||
struct idmap *idmap = server->nfs_client->cl_idmap;
|
||||
+ int ret = -EINVAL;
|
||||
|
||||
- if (nfs_map_string_to_numeric(name, namelen, uid))
|
||||
+ if (nfs_map_string_to_numeric(name, namelen, gid))
|
||||
return 0;
|
||||
- return nfs_idmap_id(idmap, &idmap->idmap_group_hash, name, namelen, uid);
|
||||
+ ret = nfs_idmap_lookup_id(name, namelen, "gid", gid);
|
||||
+ if (ret < 0)
|
||||
+ ret = nfs_idmap_id(idmap, &idmap->idmap_group_hash, name, namelen, gid);
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
int nfs_map_uid_to_name(const struct nfs_server *server, __u32 uid, char *buf, size_t buflen)
|
||||
@@ -816,22 +786,26 @@ int nfs_map_uid_to_name(const struct nfs
|
||||
struct idmap *idmap = server->nfs_client->cl_idmap;
|
||||
int ret = -EINVAL;
|
||||
|
||||
- if (!(server->caps & NFS_CAP_UIDGID_NOMAP))
|
||||
- ret = nfs_idmap_name(idmap, &idmap->idmap_user_hash, uid, buf);
|
||||
+ if (!(server->caps & NFS_CAP_UIDGID_NOMAP)) {
|
||||
+ ret = nfs_idmap_lookup_name(uid, "user", buf, buflen);
|
||||
+ if (ret < 0)
|
||||
+ ret = nfs_idmap_name(idmap, &idmap->idmap_user_hash, uid, buf);
|
||||
+ }
|
||||
if (ret < 0)
|
||||
ret = nfs_map_numeric_to_string(uid, buf, buflen);
|
||||
return ret;
|
||||
}
|
||||
-int nfs_map_gid_to_group(const struct nfs_server *server, __u32 uid, char *buf, size_t buflen)
|
||||
+int nfs_map_gid_to_group(const struct nfs_server *server, __u32 gid, char *buf, size_t buflen)
|
||||
{
|
||||
struct idmap *idmap = server->nfs_client->cl_idmap;
|
||||
int ret = -EINVAL;
|
||||
|
||||
- if (!(server->caps & NFS_CAP_UIDGID_NOMAP))
|
||||
- ret = nfs_idmap_name(idmap, &idmap->idmap_group_hash, uid, buf);
|
||||
+ if (!(server->caps & NFS_CAP_UIDGID_NOMAP)) {
|
||||
+ ret = nfs_idmap_lookup_name(gid, "group", buf, buflen);
|
||||
+ if (ret < 0)
|
||||
+ ret = nfs_idmap_name(idmap, &idmap->idmap_group_hash, gid, buf);
|
||||
+ }
|
||||
if (ret < 0)
|
||||
- ret = nfs_map_numeric_to_string(uid, buf, buflen);
|
||||
+ ret = nfs_map_numeric_to_string(gid, buf, buflen);
|
||||
return ret;
|
||||
}
|
||||
-
|
||||
-#endif /* CONFIG_NFS_USE_NEW_IDMAPPER */
|
||||
diff -up linux-3.2.noarch/fs/nfs/Kconfig.orig linux-3.2.noarch/fs/nfs/Kconfig
|
||||
--- linux-3.2.noarch/fs/nfs/Kconfig.orig 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.noarch/fs/nfs/Kconfig 2012-01-27 10:15:42.913562572 -0500
|
||||
@@ -132,14 +132,3 @@ config NFS_USE_KERNEL_DNS
|
||||
select DNS_RESOLVER
|
||||
select KEYS
|
||||
default y
|
||||
-
|
||||
-config NFS_USE_NEW_IDMAPPER
|
||||
- bool "Use the new idmapper upcall routine"
|
||||
- depends on NFS_V4 && KEYS
|
||||
- help
|
||||
- Say Y here if you want NFS to use the new idmapper upcall functions.
|
||||
- You will need /sbin/request-key (usually provided by the keyutils
|
||||
- package). For details, read
|
||||
- <file:Documentation/filesystems/nfs/idmapper.txt>.
|
||||
-
|
||||
- If you are unsure, say N.
|
||||
diff -up linux-3.2.noarch/fs/nfs/sysctl.c.orig linux-3.2.noarch/fs/nfs/sysctl.c
|
||||
--- linux-3.2.noarch/fs/nfs/sysctl.c.orig 2012-01-04 18:55:44.000000000 -0500
|
||||
+++ linux-3.2.noarch/fs/nfs/sysctl.c 2012-01-27 10:15:42.914563082 -0500
|
||||
@@ -32,7 +32,6 @@ static ctl_table nfs_cb_sysctls[] = {
|
||||
.extra1 = (int *)&nfs_set_port_min,
|
||||
.extra2 = (int *)&nfs_set_port_max,
|
||||
},
|
||||
-#ifndef CONFIG_NFS_USE_NEW_IDMAPPER
|
||||
{
|
||||
.procname = "idmap_cache_timeout",
|
||||
.data = &nfs_idmap_cache_timeout,
|
||||
@@ -40,7 +39,6 @@ static ctl_table nfs_cb_sysctls[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
},
|
||||
-#endif /* CONFIG_NFS_USE_NEW_IDMAPPER */
|
||||
#endif
|
||||
{
|
||||
.procname = "nfs_mountpoint_timeout",
|
||||
diff -up linux-3.2.noarch/include/linux/nfs_idmap.h.orig linux-3.2.noarch/include/linux/nfs_idmap.h
|
||||
--- linux-3.2.noarch/include/linux/nfs_idmap.h.orig 2012-01-27 10:06:46.783643915 -0500
|
||||
+++ linux-3.2.noarch/include/linux/nfs_idmap.h 2012-01-27 10:15:42.915563594 -0500
|
||||
@@ -69,36 +69,11 @@ struct nfs_server;
|
||||
struct nfs_fattr;
|
||||
struct nfs4_string;
|
||||
|
||||
-#ifdef CONFIG_NFS_USE_NEW_IDMAPPER
|
||||
-
|
||||
int nfs_idmap_init(void);
|
||||
void nfs_idmap_quit(void);
|
||||
-
|
||||
-static inline int nfs_idmap_new(struct nfs_client *clp)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static inline void nfs_idmap_delete(struct nfs_client *clp)
|
||||
-{
|
||||
-}
|
||||
-
|
||||
-#else /* CONFIG_NFS_USE_NEW_IDMAPPER not set */
|
||||
-
|
||||
-static inline int nfs_idmap_init(void)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static inline void nfs_idmap_quit(void)
|
||||
-{
|
||||
-}
|
||||
-
|
||||
int nfs_idmap_new(struct nfs_client *);
|
||||
void nfs_idmap_delete(struct nfs_client *);
|
||||
|
||||
-#endif /* CONFIG_NFS_USE_NEW_IDMAPPER */
|
||||
-
|
||||
void nfs_fattr_init_names(struct nfs_fattr *fattr,
|
||||
struct nfs4_string *owner_name,
|
||||
struct nfs4_string *group_name);
|
|
@ -0,0 +1,97 @@
|
|||
commit 3cd0f37a2cc9e4d6188df10041a2441eaa41d991
|
||||
Author: Bryan Schumaker <bjschuma@netapp.com>
|
||||
Date: Thu Jan 26 16:54:24 2012 -0500
|
||||
|
||||
NFS: Keep idmapper include files in one place
|
||||
|
||||
Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
|
||||
diff -up linux-3.2.noarch/fs/nfs/idmap.c.orig linux-3.2.noarch/fs/nfs/idmap.c
|
||||
--- linux-3.2.noarch/fs/nfs/idmap.c.orig 2012-01-27 10:15:42.914563082 -0500
|
||||
+++ linux-3.2.noarch/fs/nfs/idmap.c 2012-01-27 10:19:22.711401559 -0500
|
||||
@@ -39,6 +39,36 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/nfs_idmap.h>
|
||||
#include <linux/nfs_fs.h>
|
||||
+#include <linux/cred.h>
|
||||
+#include <linux/sunrpc/sched.h>
|
||||
+#include <linux/nfs4.h>
|
||||
+#include <linux/nfs_fs_sb.h>
|
||||
+#include <linux/keyctl.h>
|
||||
+#include <linux/key-type.h>
|
||||
+#include <linux/rcupdate.h>
|
||||
+#include <linux/err.h>
|
||||
+#include <keys/user-type.h>
|
||||
+
|
||||
+/* include files needed by legacy idmapper */
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/mutex.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/socket.h>
|
||||
+#include <linux/in.h>
|
||||
+#include <linux/sched.h>
|
||||
+#include <linux/sunrpc/clnt.h>
|
||||
+#include <linux/workqueue.h>
|
||||
+#include <linux/sunrpc/rpc_pipe_fs.h>
|
||||
+#include <linux/nfs_fs.h>
|
||||
+#include "nfs4_fs.h"
|
||||
+
|
||||
+#define NFS_UINT_MAXLEN 11
|
||||
+#define IDMAP_HASH_SZ 128
|
||||
+
|
||||
+/* Default cache timeout is 10 minutes */
|
||||
+unsigned int nfs_idmap_cache_timeout = 600 * HZ;
|
||||
+const struct cred *id_resolver_cache;
|
||||
+
|
||||
|
||||
/**
|
||||
* nfs_fattr_init_names - initialise the nfs_fattr owner_name/group_name fields
|
||||
@@ -142,21 +172,6 @@ static int nfs_map_numeric_to_string(__u
|
||||
return snprintf(buf, buflen, "%u", id);
|
||||
}
|
||||
|
||||
-#include <linux/cred.h>
|
||||
-#include <linux/sunrpc/sched.h>
|
||||
-#include <linux/nfs4.h>
|
||||
-#include <linux/nfs_fs_sb.h>
|
||||
-#include <linux/keyctl.h>
|
||||
-#include <linux/key-type.h>
|
||||
-#include <linux/rcupdate.h>
|
||||
-#include <linux/err.h>
|
||||
-
|
||||
-#include <keys/user-type.h>
|
||||
-
|
||||
-#define NFS_UINT_MAXLEN 11
|
||||
-
|
||||
-const struct cred *id_resolver_cache;
|
||||
-
|
||||
struct key_type key_type_id_resolver = {
|
||||
.name = "id_resolver",
|
||||
.instantiate = user_instantiate,
|
||||
@@ -327,25 +342,6 @@ static int nfs_idmap_lookup_id(const cha
|
||||
}
|
||||
|
||||
/* idmap classic begins here */
|
||||
-#include <linux/module.h>
|
||||
-#include <linux/mutex.h>
|
||||
-#include <linux/init.h>
|
||||
-#include <linux/socket.h>
|
||||
-#include <linux/in.h>
|
||||
-#include <linux/sched.h>
|
||||
-#include <linux/sunrpc/clnt.h>
|
||||
-#include <linux/workqueue.h>
|
||||
-#include <linux/sunrpc/rpc_pipe_fs.h>
|
||||
-
|
||||
-#include <linux/nfs_fs.h>
|
||||
-
|
||||
-#include "nfs4_fs.h"
|
||||
-
|
||||
-#define IDMAP_HASH_SZ 128
|
||||
-
|
||||
-/* Default cache timeout is 10 minutes */
|
||||
-unsigned int nfs_idmap_cache_timeout = 600 * HZ;
|
||||
-
|
||||
static int param_set_idmap_timeout(const char *val, struct kernel_param *kp)
|
||||
{
|
||||
char *endp;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue