Compare commits
586 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 32a1f000c9 | |||
| 8f5c09f2a2 | |||
| 58e1411288 | |||
| c0bc7200dd | |||
| 59f671259f | |||
| 3586674412 | |||
| 1f648e2e3d | |||
| bdef3a6987 | |||
| 427aaae438 | |||
| fc6265b2cd | |||
| b0cf84138c | |||
| d71c6f6ddc | |||
| 29c5635cbf | |||
| eb5e6b01e5 | |||
| 6dd88f24f3 | |||
| 29b2273272 | |||
| 906bd17eef | |||
| ca4749d8c1 | |||
| 93a56271bf | |||
| 5635239f81 | |||
| f16bec8882 | |||
| 3f0f88a9ca | |||
| 18ff8bc893 | |||
| 5aac946312 | |||
| be78228a5a | |||
| c9410e45a1 | |||
| f9ad5a437b | |||
| 853b331918 | |||
| c13d5fc3fb | |||
| de0b96496d | |||
| b60c309172 | |||
| a3f3624c88 | |||
| 047bfa2377 | |||
| c2bdc5df1b | |||
| 61d387aed2 | |||
| e523c9775d | |||
| a407b1836a | |||
| dfe171682e | |||
| 2720fb24bc | |||
| e5b626d53f | |||
| d8c3821c44 | |||
| 9b7d5347dc | |||
| 5d0b391958 | |||
| ad2354af9c | |||
| d6d2673367 | |||
| 91e62a26d1 | |||
| 0526800c60 | |||
| df61fbb656 | |||
| 435ce620dd | |||
| 04db5935e5 | |||
| 0323d46185 | |||
| 0c8b6239ea | |||
| 7e533bd274 | |||
| 3ae59cb640 | |||
| 534a867d27 | |||
| ac8b15f941 | |||
| 58aa7d8106 | |||
| ba8f85fddf | |||
| 73203806f7 | |||
| df37ce58e8 | |||
| eb873abef2 | |||
| 49aac9eb9a | |||
| eac6e867ee | |||
| 755cd69665 | |||
| 7cdccab690 | |||
| c954845709 | |||
| 865b8a2e71 | |||
| ae831e39e4 | |||
| c2b61d34d3 | |||
| b25b25fd0e | |||
| 1c298c4643 | |||
| f25c6d5c10 | |||
| b36558e537 | |||
| 73d98e6d6f | |||
| 81fb85b5b1 | |||
| b58135abde | |||
| 620acb001f | |||
| 7eceeb29f3 | |||
| e9dddc17c8 | |||
| 52d2cdc27b | |||
| b165d9d9c0 | |||
| 963523c73b | |||
| 6d66594f1d | |||
| ec6c1fb00e | |||
| 866ca4388d | |||
| 1266e5d3ca | |||
| 821a9f575c | |||
| 7eb5b8fbf4 | |||
| a0d83e596c | |||
| 86f668d5bc | |||
| 447e3a1195 | |||
| a0480d797e | |||
| 0547348250 | |||
| f06c924365 | |||
| 7e6d2bebc8 | |||
| 1cfc2f7351 | |||
| a3a15e26a3 | |||
| 06f97a9389 | |||
| 94a7c2c0af | |||
| bfa69a1582 | |||
| 55bd254df3 | |||
| 5138884db3 | |||
| 65863316f9 | |||
| 44201998c0 | |||
| 24e7d2a6d6 | |||
| d2d8fd7493 | |||
| a8515a72b5 | |||
| 5b8b967f0a | |||
| dbaa2fe5fb | |||
| 4212b32778 | |||
| 79ba95c439 | |||
| 5ac5ac8295 | |||
| d7f7ad6af5 | |||
| 0da9dbc930 | |||
| b95c9b461f | |||
| f271d54c50 | |||
| d980345820 | |||
| b012ae6dd0 | |||
| 0adbb89823 | |||
| 64e8627d40 | |||
| c7851080e5 | |||
| 7776feeb72 | |||
| 1b06417f59 | |||
| 546e56a61a | |||
| 0e98d794ae | |||
| c38a5a42da | |||
| e3b085042c | |||
| d6323bcdef | |||
| 93a772de84 | |||
| 79f3a710c7 | |||
| bce8c6d9f3 | |||
| 5e8202f9bd | |||
| 009bf2d0f1 | |||
| 99c98859fa | |||
| 416ac7ab19 | |||
| 3ce5223320 | |||
| 3c7c64a0a2 | |||
| c428523014 | |||
| 77272d27c9 | |||
| eb45c5e89b | |||
| 3236f442de | |||
| af01110734 | |||
| 00f1279015 | |||
| 6523457941 | |||
| 528c770887 | |||
| f3f3e4a7e6 | |||
| ef9ef2c9ea | |||
| bb6fdc22ac | |||
| a1e6327191 | |||
| 8e2c6eb4e2 | |||
| 00b5ae50ce | |||
| 61246eabdb | |||
| d9b904a5de | |||
| c63acd2359 | |||
| 87e57ed058 | |||
| 46a7da4e20 | |||
| 04cd2c9a0f | |||
| 6d8b27f22c | |||
| c6b8f6db8f | |||
| b6468f44d5 | |||
| 5eb42713c7 | |||
| bf7b29bc93 | |||
| 396741adc3 | |||
| 177478a3a4 | |||
| d7e1b684a8 | |||
| b7f4e874f8 | |||
| 2afc467dbb | |||
| 6701e2f3e6 | |||
| dfcbfbdef6 | |||
| 20032a3f2c | |||
| 47cb10d3fe | |||
| 3f8bb78ad7 | |||
| 89e6c84fd1 | |||
| 9b83391c72 | |||
| 571ddb7f77 | |||
| 4372bcc3a8 | |||
| 0056589c19 | |||
| 9546c43f46 | |||
| 65382f4a38 | |||
| 7e8f3ffb64 | |||
| 58c7a73854 | |||
| 41fa6e1058 | |||
| f8391725df | |||
| 546dc958f7 | |||
| 0a775a36cf | |||
| f824aa6fe1 | |||
| 8eeb104919 | |||
| 6400b6b5e7 | |||
| 2efc116ebe | |||
| 995ed8f5ea | |||
| 839173fc99 | |||
| 5e2fcb3c3e | |||
| b0ff5790a2 | |||
| 9d5a33130c | |||
| 4dfb38ad78 | |||
| 501de28c4b | |||
| 8bb6d0d6de | |||
| 107f887f03 | |||
| 4392dbbb76 | |||
| 70899c7012 | |||
| 4f0b8e8221 | |||
| 07dc39bb62 | |||
| 8c4503de28 | |||
| 2472956725 | |||
| 58b80e879f | |||
| be465f43df | |||
| e0c1e9380b | |||
| 7dba91840c | |||
| 3bac61b08f | |||
| 44525139ef | |||
| eb8a3ddb89 | |||
| 5cf0084dcc | |||
| 1c4027af07 | |||
| 021befddbb | |||
| 4e9a685d10 | |||
| 78a082d8c8 | |||
| a8080566bc | |||
| 7aadd3fd1e | |||
| b81e27741e | |||
| 86b4c99dbd | |||
| 95a347fcd9 | |||
| 69097961dd | |||
| ec3cdeec72 | |||
| a64280c458 | |||
| 141d87bde1 | |||
| 14f3012a6b | |||
| 7697af8107 | |||
| 678bc103b0 | |||
| 2b8e4e9377 | |||
| 48a8067c42 | |||
| 316e0e2cfc | |||
| 711f474f84 | |||
| 10d0939b37 | |||
| 24276f1290 | |||
| 57ab1c1d31 | |||
| f141fdd9a9 | |||
| 7e29b41e5a | |||
| 721399c49b | |||
| 4185da5fa1 | |||
| bcc692d8b8 | |||
| cc1b8f6592 | |||
| 738413ae9f | |||
| f55bde1d3d | |||
| 364fa8ffc1 | |||
| 3c2a8f0897 | |||
| c87b2863e7 | |||
| 5751eb005d | |||
| 7e16c2c29e | |||
| 648543110c | |||
| 709254f9cb | |||
| 4ffecd7335 | |||
| 9dc722bc28 | |||
| 8287dda6df | |||
| 13ba84bf98 | |||
| 1e8f715275 | |||
| ce64249568 | |||
| bade5dfdee | |||
| 0a47eb9ddb | |||
| 59c829bb76 | |||
| e4ed898c54 | |||
| ce4ce6411f | |||
| 32fa562020 | |||
| a7f1e5f933 | |||
| 390d046d7d | |||
| 65a9d40991 | |||
| 1a35ac648e | |||
| 920ce42b00 | |||
| b093b0dfcc | |||
| 58cf25fd7c | |||
| 02a6245435 | |||
| 687ac46cf5 | |||
| 8d6d9c5e70 | |||
| c32a4b10d3 | |||
| d413b6a03f | |||
| 6559e87c73 | |||
| 1f89469c62 | |||
| ab3157ba00 | |||
| 862d99947c | |||
| 6ce974eb7b | |||
| 72b51f98d9 | |||
| c968e79356 | |||
| 7d44e4db2f | |||
| b2efe66b71 | |||
| 6e0473f884 | |||
| 55588de248 | |||
| bfdc436466 | |||
| 1befbd4b0c | |||
| e5f5b4a5d4 | |||
| 78401aad73 | |||
| b2d20ef048 | |||
| 27fb7740ce | |||
| 974a85caa6 | |||
| 5d3d7416ef | |||
| 0994dfb5f0 | |||
| 2b18b68adc | |||
| b4d36e9b61 | |||
| bb1d1c848b | |||
| 359058d10e | |||
| 52439cac64 | |||
| 2d954356a4 | |||
| 385e12c39f | |||
| eb8bda6d03 | |||
| 3cefd3f110 | |||
| 42fb355a6c | |||
| 2dd2f1ec6b | |||
| 81df203067 | |||
| 5f211c234f | |||
| 3bcaa8f458 | |||
| 488dc5ab78 | |||
| 8ec287fb1b | |||
| 777d66d2fb | |||
| 264a67a961 | |||
| c9b38a3b99 | |||
| 498e9e5e2d | |||
| dc8a9bf81f | |||
| 077abbb696 | |||
| 3db7cda2f5 | |||
| 82989f93ab | |||
| ddf6d1d028 | |||
| f34464bb8d | |||
| 65d57a20a1 | |||
| 1dc77ca13f | |||
| af3e7f0a3c | |||
| ac31a8c4c1 | |||
| 34a9716ea3 | |||
| e77046dbcd | |||
| 8b6b9a096d | |||
| c6eea8f663 | |||
| 18f33d9b55 | |||
| a26c5378cd | |||
| d5bfcc9d3f | |||
| 7e1320a776 | |||
| ca43715fc4 | |||
| 991403386f | |||
| 2a52fa273e | |||
| 1023cd62a5 | |||
| 8a12e3cf6f | |||
| 59d3aca6ec | |||
| c3ff4e3209 | |||
| 9de67f92ea | |||
| 75df24e91f | |||
| e9cc4d98ac | |||
| d9814459da | |||
| 889b337ca5 | |||
| c75d067555 | |||
| fce67a7e00 | |||
| c2a99fbd54 | |||
| 45454cd135 | |||
| e26337818b | |||
| c66719d202 | |||
| 248802fc63 | |||
| 1396b50398 | |||
| ab24079483 | |||
| 30f8abdc47 | |||
| c592a4b091 | |||
| 7dd49c81e7 | |||
| 2c88f62360 | |||
| 8bfbddfd7d | |||
| bcbd93991c | |||
| c7259554fd | |||
| 1cbdc01067 | |||
| 79f45703c8 | |||
| 667f4e5f43 | |||
| 58af3c0d7d | |||
| 6b4cb2d684 | |||
| c26f155b05 | |||
| c794094ddc | |||
| 32c2d0d008 | |||
| 07be4dcbe6 | |||
| 05bdeea14f | |||
| 086b3a0a46 | |||
| 1a1c8186f3 | |||
| 6eda4ebb34 | |||
| e5c231d4a3 | |||
| 3818225c1c | |||
| 2effe23c07 | |||
| 3e668f7bed | |||
| fae6419ea0 | |||
| 36de95863f | |||
| c0b34e1055 | |||
| ee4b95b65e | |||
| 069b2065f9 | |||
| 0240623b5e | |||
| 8f4ccccbf5 | |||
| d8fa7b561f | |||
| 6816f85e11 | |||
| f726392241 | |||
| 9ba2eedf87 | |||
| 9955e40b7d | |||
| 55b59aa6d8 | |||
| b76c53f657 | |||
| 465f61a6a3 | |||
| 16bb3cf0d5 | |||
| 0e6d8d53ba | |||
| 95d3f73f8b | |||
| 0be622ea09 | |||
| 87f955a50d | |||
| d97224c2e7 | |||
| 134038f9e7 | |||
| 34ce39b4cc | |||
| d6ed0df52b | |||
| cf5008cc08 | |||
| fdd8b3f1b3 | |||
| a72777d74e | |||
| 607aeaad82 | |||
| 29d3be7650 | |||
| 4699fa16ee | |||
| df0aaea63b | |||
| af88701b86 | |||
| 2275c937e0 | |||
| 77e56c8df1 | |||
| 0961ce4f04 | |||
| f306fc70a2 | |||
| 794cbebdaa | |||
| fdde8dcd01 | |||
| 56cc177d24 | |||
| 476a649e8f | |||
| dbd2139624 | |||
| 50a7735405 | |||
| 70a72aeca1 | |||
| c5313385a8 | |||
| bf0f2c267b | |||
| 5d0f116d89 | |||
| 9abde1e94b | |||
| d7ad18f4de | |||
| 6d0c8bd8c3 | |||
| 8e77060547 | |||
| e950985a5f | |||
| 9edcd9510e | |||
| 7dc4ab2d51 | |||
| f714fcb126 | |||
| fc206405b8 | |||
| d700b4b675 | |||
| 0adead1521 | |||
| e7987ffe15 | |||
| fa6641e171 | |||
| 79e450b609 | |||
| 60e1aa4749 | |||
| f62de0ab07 | |||
| 5a6e31d7e4 | |||
| 4c1aa5b4ef | |||
| bd0cfbf0ae | |||
| adb1b3a79f | |||
| 029e93a6a4 | |||
| 9069618d2a | |||
| f41eda3107 | |||
| 3e3b53074d | |||
| a2987d2357 | |||
| 8199e5e839 | |||
| 914809e01d | |||
| 01311c63b5 | |||
| bfb6c0773c | |||
| 3e1effb15b | |||
| 7c748096b1 | |||
| 288e8ec308 | |||
| 2c787bc340 | |||
| 619ff52726 | |||
| 52ecac467c | |||
| 0f780f5636 | |||
| 3dad828884 | |||
| 0f63c6344b | |||
| 018049d3a3 | |||
| b9f12e9217 | |||
| f01bdb06fb | |||
| 0ffd24bce6 | |||
| 951f0ce21c | |||
| 9023195a50 | |||
| 9ea51ce7ec | |||
| b74e481204 | |||
| f3e5f6cb84 | |||
| d8b2b50f0d | |||
| 6835d481e0 | |||
| e233d4eeae | |||
| 9489704d2a | |||
| 58f14626db | |||
| 40562cad06 | |||
| 83fd0a0e41 | |||
| fda3013f23 | |||
| 2f8391cd8e | |||
| 01e60f5a6b | |||
| 8867e6522a | |||
| 594e60b1f1 | |||
| 242c23ca97 | |||
| 2585000470 | |||
| 772576aa9c | |||
| 492ede14db | |||
| 015cf59208 | |||
| fee7be63d0 | |||
| 6fa5631ea5 | |||
| 8d861cc193 | |||
| c1dfe5f738 | |||
| e5271da5b6 | |||
| 1945611b9c | |||
| 534994f5ea | |||
| aec578d5db | |||
| f791d2e35d | |||
| f19aa1e48a | |||
| 2f86517914 | |||
| 6634d88717 | |||
| e7cd21093e | |||
| 65ff945666 | |||
| 5f413dfc28 | |||
| c6882c65fe | |||
| 3ea1ae8cbf | |||
| 64e825612e | |||
| 50ed015d9a | |||
| 801b520048 | |||
| aa5226b929 | |||
| 82fdb210d9 | |||
| 14aa28d68f | |||
| 7d9ae1a93a | |||
| c37e3b996a | |||
| 23dc84d231 | |||
| cd8562af91 | |||
| 0d078a1560 | |||
| 3e93ad596f | |||
| 5e58d9b80d | |||
| 41146547a5 | |||
| c82468c694 | |||
| 13a835fc16 | |||
| b803382487 | |||
| bea005e33d | |||
| 1f815c731d | |||
| 50de9ff98e | |||
| 16f5d5b943 | |||
| 1bed8f49d5 | |||
| a39a2c1658 | |||
| 12b06b820b | |||
| 0abcc923dc | |||
| 23d5f5efdd | |||
| 8a00ea6d3a | |||
| d040744022 | |||
| 9caaa85ed1 | |||
| 7faa0b1195 | |||
| 482428684c | |||
| 62a62e4c93 | |||
| 220a2de56f | |||
| 171089a0e1 | |||
| e218e906ba | |||
| 9bd8486ff9 | |||
| 66881e6b9a | |||
| 861422d53a | |||
| ff99ccf145 | |||
| cdaee8b005 | |||
| 9ddca18784 | |||
| 8ddd72e2c3 | |||
| 26c1f292fc | |||
| 773f79286b | |||
| 1cd6b8beaf | |||
| c6be62a5ac | |||
| c93594c468 | |||
| a54e152233 | |||
| 3c6af3c6f6 | |||
| e849604dd8 | |||
| 0357406a27 | |||
| e3df0a9e25 | |||
| 330fab9d36 | |||
| 966fa05e95 | |||
| d6a9eeb05e | |||
| 664b5d1296 | |||
| 336bccbfe5 | |||
| 587754d5b1 | |||
| 0eca359213 | |||
| 6427e64a35 | |||
| bffc169432 | |||
| d2adf7f17d | |||
| ad6e7f3b54 | |||
| 318fe34dbe | |||
| cdf339b2bc | |||
| c6f72d68a6 | |||
| a59aab03b9 | |||
| 60e98408f5 | |||
| c74e524b4d | |||
| 03a2771387 | |||
| 619a4236b9 | |||
| 08844ad4bf | |||
| 2a715b3289 | |||
| 9b53eb6ca7 | |||
| fc4724ab15 | |||
| 48d695d515 | |||
| 6f866e6f57 | |||
| 90d18d25af | |||
| f62d88c8f3 | |||
| bf3dcc1e22 | |||
| bb830ffba8 | |||
| 8707aff636 |
@@ -0,0 +1,196 @@
|
||||
- [x] acl - Erişim denetim listesi için çeşitli araçlar
|
||||
- [ ] alternatives - Alternatif yönetim sistemi
|
||||
- [x] attr - Gelişkin öznitelikler araçları
|
||||
- [x] autoconf - Used to create autoconfiguration files
|
||||
- [x] autogen - Otomatik metin ve program üretme aracı -- arch'da 5.18.6
|
||||
- [x] automake - Makefile.am yapılandırma dosyalarından Makefile.in dosyası üreten program
|
||||
- [ ] baselayout - Dosya sisteminin temel planı
|
||||
- [x] bash - GNU Bource again kabuğu
|
||||
- [x] bc - Konsol temelli hesap makinesi
|
||||
- [ ] binutils - Makine dili derleme ve bağlama araçları // *LFS 2.25.1*
|
||||
- [x] biosdevname - Biosdevname is a udev helper utility developed // *http://linux.dell.com/biosdevname/biosdevname-0.7.1/biosdevname-0.7.1.tar.gz*
|
||||
- [x] bison - Yacc uyumlu yazım ayrıştırma üreteci
|
||||
- [ ] busybox - Statik bağlanmış sistem komutları bütünü // *http://busybox.net/downloads/busybox-1.24.1.tar.bz2*
|
||||
- [x] bzip2 - Yüksek kaliteli bir veri sıkıştırma uygulaması
|
||||
- [x] ca-certificates - Common CA certificates // https://packages.qa.debian.org/c/ca-certificates.html 20151214*
|
||||
- [ ] catbox - Python için sandbox modülü
|
||||
- [x] check - C için birim test ortamı //*BLFS http://downloads.sourceforge.net/check/check-0.10.0.tar.gz*
|
||||
- [x] chrpath - Dinamik kitaplık yükleme yolunu (rpath) değiştirme aracı // BLFS
|
||||
- [ ] cloog - Chunky Loop Generator // *https://github.com/periscop/cloog/archive/cloog-0.18.4.tar.gz*
|
||||
- [ ] cmake - Cmake, açık kaynak kodlu ve birden fazla platformda çalışan bir 'make' sistemidir. // * BLFS http://www.cmake.org/files/v3.4/cmake-3.4.1.tar.gz*
|
||||
- [x] colorgcc - GCC çıktısını renklendiren bir araç.
|
||||
- [ ] comar - Sistem yapılandırmasını yönetir
|
||||
- [ ] comar-api - Çomar betikleri için yardımcı fonksiyonlar
|
||||
- [x] coreutils - Standart dosya, metin ve kabuk uygulamaları
|
||||
- [x] cpio - Tar ve cpio dosyaları içine yazıp okuyabilen bir dosya arşivleme uygulaması // BLFS
|
||||
- [x] cpupowertools - CPU güç/frekans yönetim araçları
|
||||
- [ ] cracklib - Parola Kontrol Kütüphanesi // *BLFS https://github.com/cracklib/cracklib/releases/download/cracklib-2.9.6/cracklib-2.9.6.tar.gz*
|
||||
- [ ] cryptsetup - Şifreli dosya sistemleri yaratmak için bir araç // * https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.0.tar.xz*
|
||||
- [ ] curl - Uzak sunuculardan dosya indirmek için bir araç // *BLFS http://curl.haxx.se/download/curl-7.46.0.tar.lzma*
|
||||
- [ ] cython - Python için C eklentileri // * http://cython.org/release/Cython-0.23.4.tar.gz*
|
||||
- [ ] db - Oracle Berkeley DB // *BLFS http://download.oracle.com/berkeley-db/db-6.1.26.tar.gz *
|
||||
- [x] dbus - Uygulamaların birbirleriyle haberleşmesinin basit bir yöntemi
|
||||
- [x] dbus-glib - D-Bus için GLib bağlayıcıları
|
||||
- [x] dbus-python - D-Bus için Python bağlayıcıları
|
||||
- [ ] dhcpcd - DHCP protokolü için istemci // *BLFS http://roy.marples.name/downloads/dhcpcd/dhcpcd-6.9.4.tar.xz *
|
||||
- [ ] dietlibc - Düşük boyut için optimize edilmiş C kütüphanesi // http://www.fefe.de/dietlibc/dietlibc-0.33.tar.bz2
|
||||
- [x] diffutils - Dosyaları karşılaştırmak ve fark dosyaları oluşturmak için kullanılan araçlar
|
||||
- [ ] disktype - Disk veya disk görüntüsünün biçimsel içeriğini saptar
|
||||
- [ ] docbook-xml - Docbook XML DTD
|
||||
- [ ] docbook-xsl - Docbook XSL biçemyaprakları
|
||||
- [x] e2fsprogs - Standart ext2, ext3, ext4 dosya sistemi uygulamaları
|
||||
- [ ] elfutils - Derlenmiş objeleri işlemek için gereken aletler koleksiyonu // *BLFS https://fedorahosted.org/releases/e/l/elfutils/0.164/elfutils-0.164.tar.bz2 *
|
||||
- [ ] eudev - eudev sistemd-udev uygulamasının çatalı // * https://github.com/gentoo/eudev/archive/v3.1.5.tar.gz* __this release need libgudev__
|
||||
- [x] expat - XML ayrıştırıcı kütüphaneleri
|
||||
- [x] file - Dosya tipini belirlemek için kullanılan bir uygulamadır
|
||||
- [x] findutils - Dosya bulmak için kullanılan GNU uygulamaları
|
||||
- [x] flex - GNU sözcüksel analiz üreteci
|
||||
- [ ] freetype - Yüksek kaliteli ve taşınabilir yazıtipi düzeneği // *BLFS http://downloads.sourceforge.net/freetype/freetype-2.6.2.tar.bz2*
|
||||
- [x] fuse - Kullanıcı düzeyinde dosya sistemi oluştumaya yarayan kitaplık // BLFS
|
||||
- [x] gawk - Metin işleme uygulaması olan awk'ın GNU versiyonu
|
||||
- [ ] gc - C ve C++ için bir çöp toplama kitaplığı
|
||||
- [ ] gcc - C/C++ ve Fortran derleyicisi // gcc-5.3.0
|
||||
- [x] gdbm - Perl uyumlu standart GNU veritabanı kütüphaneleri
|
||||
- [x] gettext - Farklı dillerde ileti katalogları üretmek için gerekli GNU araçları ve kütüphaneleri
|
||||
- [x] glib2 - C programlama dili için glib kütüphanesi // * BLFS http://ftp.gnome.org/pub/gnome/sources/glib/2.46/glib-2.46.2.tar.xz *
|
||||
- [ ] glibc - GNU libc6 (glibc2 olarak da bilinir) C kitaplığı // Glibc-2.22
|
||||
- [ ] glpk - GNU Doğrusal Programlama Kiti //* http://ftp.gnu.org/gnu/glpk/glpk-4.57.tar.gz*
|
||||
- [x] gmp - İstenilen duyarlıkta çalışabilen aritmetik işlem kitaplığı
|
||||
- [ ] gnuconfig - Autofoo için temel config dosyaları
|
||||
- [x] gobject-introspection - Introspection system for GObject-based libraries // * BLFS http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.46/gobject-introspection-1.46.0.tar.xz *
|
||||
- [x] gperf - Mükemmel hash üreticisi
|
||||
- [ ] gperftools - Google Performans Araçları // * https://github.com/gperftools/gperftools/releases/download/gperftools-2.4/gperftools-2.4.tar.gz *
|
||||
- [x] grep - Grep düzenli ifade eşleme aracı
|
||||
- [x] groff - Belge biçimlendirme sistemi
|
||||
- [ ] grub2 - GNU GRUB is a Multiboot boot loader.
|
||||
- [x] guile - GNU Scheme yorumlayıcısı ve kitaplığı // * BLFS*
|
||||
- [x] gzip - GNU dosya arşiv aracı
|
||||
- [ ] help2man - Geleneksel --help çıktılarını man sayfalarına dönüştüren bir GNU yazılımı // * ftp://ftp.gnu.org/gnu/help2man/help2man-1.47.3.tar.xz*
|
||||
- [x] intltool - Çeşitli kaynak kod dosyalarından satırları ayıklamak için kullanılan betikler
|
||||
- [ ] isl - Integer Set Library
|
||||
- [x] json-c - C dilinde JSON gerçeklemesi // BLFS
|
||||
- [x] kbd - Klavye ve konsol araçları
|
||||
- [ ] kernel - Pisi Linux için Linux çekirdeği
|
||||
- [ ] klibc - Küçük bir C kütüphanesi (libc) uyarlaması
|
||||
- [x] kmod - Linux kernel modülleri yönetim araçları
|
||||
- [x] less - Mükemmel bir metin görüntüleyici
|
||||
- [ ] leveldb - Hızlı ve hafif bir anahtar/değer veri kütüphanesi
|
||||
- [x] libarchive - Birçok farklı akış arşiv formatını yaratan ve okuyan programlama kitaplığı // *BLFS*
|
||||
- [x] libatomic_ops - Atomik bellek işlemleri kütüphanesi // BLFS
|
||||
- [x] libcap - POSIX 1003.1e desteği
|
||||
- [ ] libcap-ng - Alternatif bir POSIX yetenekleri kütüphanesi // * http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-0.7.7.tar.gz*
|
||||
- [x] libee - An Event Expression Library inspired by CEE
|
||||
- [ ] libestr - Library for some string essentials // *http://libestr.adiscon.com/files/download/libestr-0.1.10.tar.gz*
|
||||
- [x] libffi - Yabancı işlev arayüzleri için taşınabilir bir kitaplık
|
||||
- [ ] libgcrypt - Genel amaçlı bir şifreleme kitaplığı // *BLFS ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.4.tar.bz2*
|
||||
- [ ] libgpg-error - GnuPG bileşenlerinin kullandığı hata değerleri için kitaplık // * BLFS ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.21.tar.bz2 *
|
||||
- [ ] libidn - Uluslararası Alan Adları (IDN) destek kütüphanesi // *BLFS http://ftp.gnu.org/gnu/libidn/libidn-1.32.tar.gz *
|
||||
- [ ] liblogging - Easy to use, portable, open source library for system logging // *http://download.rsyslog.com/liblogging/liblogging-1.0.5.tar.gz *
|
||||
- [x] libmpc - Yüksek hassasiyet ve yuvarlama kitaplığı
|
||||
- [ ] libpcre - Perl-uyumlu sıradan ifade kütüphanesi // *ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz *
|
||||
- [x] libpipeline - pipeline yönetim kitaplığı
|
||||
- [ ] libpng - PNG kütüphanesi // *http://downloads.sourceforge.net/libpng/libpng-1.6.20.tar.xz *
|
||||
- [ ] libseccomp - Gelişmiş seccomp kütüphanesi // *https://github.com/seccomp/libseccomp/releases/download/v2.2.3/libseccomp-2.2.3.tar.gz*
|
||||
- [x] libsigsegv - Oluşan bellek hatalarının kullanıcı kipinde işlenmesini sağlayan bir kitaplık
|
||||
- [ ] libssh2 - SSH2 protokolü için kütüphane // *http://www.libssh2.org/download/libssh2-1.6.0.tar.gz*
|
||||
- [ ] libtool - Program geliştiriciler için ortak kütüphane aracı // __libtool-2.4.6__
|
||||
- [ ] libunistring - Unicode karakter dizisi kitaplığı // *http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.5.tar.xz*
|
||||
- [x] libunwind - Yazılım çağrıları geri izleme aracı
|
||||
- [ ] libusb - Userspace access to USB devices // BLFS http://downloads.sourceforge.net/libusb/libusb-1.0.20.tar.bz2
|
||||
- [x] libusb-compat - Userspace access to USB devices // BLFS
|
||||
- [ ] libuser - Kullanıcı ve grup hesap yönetim kitaplığı // libuser-0.62
|
||||
- [ ] libxml2 - XML türü dosyaları işlemeye aracılık eden kütüphanenin 2. sürümü // BLFS *http://xmlsoft.org/sources/libxml2-2.9.3.tar.gz*
|
||||
- [x] libxslt - XSLT kitaplığı ve araçları // BLFS
|
||||
- [ ] linux-firmware - Linux çekirdeği tarafından kullanılan firmware dosyaları
|
||||
- [x] lsb-release - LSB sürüm sorgulama aracı // BLFS
|
||||
- [ ] lvm2 - Mantıksal Hacim Yönetimi aracı // *BLFS ftp://sources.redhat.com/pub/lvm2/releases/LVM2.2.02.138.tgz*
|
||||
- [x] lzo - Çok hızlı bir sıkıştırma/açma kütüphanesi // BLFS
|
||||
- [x] m4 - GNU makro işleyicisi
|
||||
- [ ] mailcap - Dosya türleri için yardımcı uygulama ve MIME türü ilişkilendirmeleri // mailcap-2.1.44
|
||||
- [x] make - Geleneksel kaynak kod ağaçlarını derleme aracı
|
||||
- [x] man-db - Kapsamlı Linux kılavuzları
|
||||
- [x] man-pages - Kapsamlı Linux kılavuz dökümanları
|
||||
- [ ] mdadm - MD aygıtlarını (Yazılımsal RAID) denetleme aracı // *BLFS http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-3.3.4.tar.xz*
|
||||
- [ ] mingetty - Sadece sanal konsollar için yekpare bir getty programı
|
||||
- [ ] miscfiles - Çeşitli dosyalar
|
||||
- [ ] mkinitramfs - initramfs image dosyası yaratmak için araç
|
||||
- [ ] module-bbswitch - Optimus grafik kartlı bir dizüstü bilgisayarda grafik kartını seçmeye yarayan çekirdek modülüdür.
|
||||
- [ ] module-broadcom-wl - Broadcom'un BCM4311, BCM4312, BCM4321 ve BCM4322 tabanlı kablosuz bağdaştırıcıları için IEEE 802.11a/b/g/n aygıt sürücüleri
|
||||
- [ ] module-virtualbox - Kernel modules for VirtualBox
|
||||
- [ ] module-virtualbox-guest - VirtualBox misafir makineleri için çekirdek modülleri
|
||||
- [ ] mpfr - Multiple precision floating point library // MPFR-3.1.3
|
||||
- [ ] mudur - Pisi Linux açılış sistemi
|
||||
- [ ] nasm - Assembler derleyicisi // *BLFS http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/nasm-2.11.08.tar.xz*
|
||||
- [ ] ncompress - Bir başka sıkışmış dosya açma programı
|
||||
- [x] ncurses - Konsol görsel kütüphanesi
|
||||
- [ ] ndiswrapper - Bir sürücü ara yazılımı(wrapper)
|
||||
- [ ] net-tools - Linux ağ araçları // BLFS http://anduin.linuxfromscratch.org/BLFS/net-tools/net-tools-CVS_20101030.tar.gz ?
|
||||
- [x] nettle - The Nettle package contains the low-level cryptographic library. // BLFS
|
||||
- [ ] nspr - Netscape Taşınabilir Çalışma Zamanı // *https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v4.11/src/nspr-4.11.tar.gz *
|
||||
- [x] nss-mdns - İsim servisi değiştirme modülü
|
||||
- [ ] numactl - NUMA makineleri optimize etmek için bir kitaplık // __move to util.admin?__
|
||||
- [x] openssl - SSL v2/v3 ve TLS v1 için araç kiti // BLFS
|
||||
- [ ] os-prober - Utility to detect other OSes on a set of drives // __1.70__
|
||||
- [ ] pam - PAM - Eklenebilir Yetkilendirme Modülleri // *BLFS http://linux-pam.org/library/Linux-PAM-1.2.1.tar.bz2*
|
||||
- [x] patch - Yama dosyalarını uygular //
|
||||
- [x] pciutils - PCI veriyolu işlevleri ile ilgili çeşitli programlar // *BLFS 3.4.1*
|
||||
- [ ] pcmciautils - PCMCIA veriyolu işlevleri ile ilgili çeşitli araçlar
|
||||
- [ ] perl - Perl dili // *5.22.1*
|
||||
- [x] perl-Locale-gettext - GNU yerel araçlarına erişim için Perl modülü //
|
||||
- [x] perl-XML-Parser - James Clark'ın XML ayırıştırıcısına bir Perl uzantısı arayüzü
|
||||
- [ ] piksemel - iksemel için python desteği
|
||||
- [ ] pisi - PİSİ PiSi Linux'un paket yönetim sistemidir
|
||||
- [ ] pisilinux-python - PiSi Linux için Python modülleri
|
||||
- [x] pkgconfig - Kütüphaneler için derleme bayraklarını yöneten bir paket yapılandırma sistemi
|
||||
- [x] plyvel - Plyvel, LevelDB için, hızlı ve zengin özellikli Python arabirimi.
|
||||
- [x] polkit - Sistem bileşenleri için erişim politikası servisi
|
||||
- [x] popt - Popt komut satırında çalıştıran bir seçenek ayrıştırıcıdır.
|
||||
- [ ] ppl - Pharma Polyhedra kitaplığı
|
||||
- [x] procps - Geleneksel bilgilendirme yardımcı programları ve süreç işleme araçları
|
||||
- [x] psmisc - proc dosya sistemi kullanan bir araç takımı
|
||||
- [ ] pycurl - Python cURL Modülü // *https://github.com/pycurl/pycurl/archive/REL_7_19_5_3.tar.gz*
|
||||
- [ ] pypolkit - PolicyKit için Python bağlayıcısı
|
||||
- [ ] python - Nesneye yönelik bir programlama dili // *BLFS https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz*
|
||||
- [ ] python-psutil - Platform bağımsız, süreçler hakkında bilgi sağlayan bir Python modülü // *https://pypi.python.org/packages/source/p/psutil/psutil-3.3.0.tar.gz*
|
||||
- [x] python-pyliblzma - Python için lzma bağlayıcıları
|
||||
- [ ] python-setuptools - Python kurulum araçları // *? https://pypi.python.org/pypi/distribute/0.7.3 , https://pypi.python.org/pypi/setuptools*
|
||||
- [x] readline - Diğer bir şirin konsol gösterim kütüphanesi //
|
||||
- [ ] rsyslog - Gelişmiş sistem günlükleme hizmeti // *http://www.rsyslog.com/files/download/rsyslog/rsyslog-8.15.0.tar.gz*
|
||||
- [ ] run-parts - run scripts or programs in a directory
|
||||
- [ ] scons - Python temelli, esnek, geliştirilebilir inşa aracı // *BLFS http://downloads.sourceforge.net/scons/scons-2.4.1.tar.gz *
|
||||
- [x] sed - GNU stream düzenleyici
|
||||
- [x] sgml-common - SGML ISO karakter nesneleri ve yardımcı programları
|
||||
- [x] shadow - Kullanıcı hesapları yönetimi için araçlar
|
||||
- [x] slang - Bir çok metin gösterici yazılım tarfından kullanılan konsol görüntüleme kütüphanesi //__ why that is not in main?__
|
||||
- [ ] snappy - Linux için sıkıştırma/ayıklama kütüphanesidir. // *https://github.com/google/snappy/archive/1.1.3.tar.gz*
|
||||
- [x] spidermonkey - Javascript C Kitaplığı
|
||||
- [ ] sqlite - Bir C kütüphanesi içindeki bir SQL veritabanı motoru // *BLFS http://sqlite.org/2015/sqlite-autoconf-3090200.tar.gz*
|
||||
- [x] sysfsutils - Çeşitli sistem araç ve gereçleri
|
||||
- [x] sysvinit - Programs which control basic system processes
|
||||
- [x] tar - GNU dosya arşivleme uygulaması
|
||||
- [x] tcp-wrappers - TCP Wrappers
|
||||
- [x] texinfo - GNU info (bilgi) programı ve araçları
|
||||
- [x] time - Bir programın sistem kaynak kullanımını izleyen GNU aracı // BLFS
|
||||
- [x] timezone - Zamandilimi veri dosyaları ve araçları
|
||||
- [ ] unifdef - The unifdef utility selectively processes conditional cpp(1) directives // *http://dotat.at/prog/unifdef/unifdef-2.11.tar.xz*
|
||||
- [ ] unzip - pkzip ile sıkıştırılmış dosyalar için açıcı // *BLFS http://downloads.sourceforge.net/infozip/unzip60.tar.gz*
|
||||
- [x] urlgrabber - Python için yüksek seviyeli, platform bağımsız bir url-grabber kütüphanesi
|
||||
- [x] usbutils - USB listeleme araçları // BLFS
|
||||
- [x] util-linux - Çeşitli kullanışlı Linux araçları
|
||||
- [ ] util-macros - X.Org X11 Autotools makroları // * BLFS http://ftp.x.org/pub/individual/util/util-macros-1.19.0.tar.bz2*
|
||||
- [x] v86d - uvesafb için kullanıcı uzayı yardımcısı
|
||||
- [x] vixie-cron - Tam teşekküllü bir crond uyarlaması
|
||||
- [x] which - Verilen komutun çalıştırma yolundaki önceliğe göre yerini gösterir // BLFS
|
||||
- [x] wireless-tools - Kablosuz ağ kartlarını yapılandırmak için kullanılan bir araç seti // BLFS 29 da biz 30 dayız.
|
||||
- [x] xcb-proto - XCB protokol tanımlamaları
|
||||
- [ ] xmlto - XML ve DocBook için dönüşüm aracı // * BLFS https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.28.tar.bz2*
|
||||
- [ ] xorg-proto - X.Org Protokol Başlıkları // * BLFS check pls http://www.linuxfromscratch.org/blfs/view/svn/x/x7proto.html*
|
||||
- [ ] xorg-util - X.Org araçları // * check ftp://mirror.csclub.uwaterloo.ca/x.org/individual/util *
|
||||
- [x] xtrans - X.Org trans kitaplığı.
|
||||
- [x] xz - XZ sıkıştırma araçları
|
||||
- [ ] yacc - Yacc: Yet Another Compiler-Compiler
|
||||
- [ ] yasm - Bir çok sentaks ve mimari destekleyen Assembler // *http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz*
|
||||
- [x] zip - ZIP programı (şifreleme desteği ile birlikte)
|
||||
- [x] zlib - Standart sıkıştırma/açma kütüphanesi
|
||||
|
||||
dosyanın en güncel hali için: https://gist.github.com/ertugerata/3dd26e482f0f928b7bc9
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
@@ -13,7 +14,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>A high-quality and portable font engine</Summary>
|
||||
<Description>FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output. It can be used in graphics libraries, display servers, font conversion tools, text image generation tools, and many other products as well.</Description>
|
||||
<Archive sha1sum="cd2b144205dd2c61693e2d861069367aa3dde1bc" type="tarbz2">mirrors://sourceforge/freetype/freetype-2.6.tar.bz2</Archive>
|
||||
<Archive sha1sum="6c98bd5d0be313207c37ca23d25faf983486aee5" type="tarbz2">mirrors://sourceforge/freetype/freetype-2.6.3.tar.bz2</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>zlib-devel</Dependency>
|
||||
<Dependency>bzip2</Dependency>
|
||||
@@ -72,82 +73,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="11">
|
||||
<Date>2015-07-29</Date>
|
||||
<Version>2.6</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2015-05-22</Date>
|
||||
<Version>2.5.5</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ayhan Yalçınsoy</Name>
|
||||
<Email>ayhanyalcinsoy@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="9">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>2.5.3</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="8">
|
||||
<Date>2014-03-29</Date>
|
||||
<Version>2.5.3</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2013-12-11</Date>
|
||||
<Version>2.5.2</Version>
|
||||
<Comment>Version bump, cleanup.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2013-11-26</Date>
|
||||
<Version>2.5.1</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>Richard de Bruin</Name>
|
||||
<Email>richdb@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2013-10-28</Date>
|
||||
<Version>2.5.0.1</Version>
|
||||
<Comment>rebuild.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2013-07-26</Date>
|
||||
<Version>2.5.0.1</Version>
|
||||
<Comment>Fix deps,release bump.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-06-28</Date>
|
||||
<Version>2.5.0.1</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-01-14</Date>
|
||||
<Version>2.4.11</Version>
|
||||
<Comment>New release</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-11-24</Date>
|
||||
<Version>2.4.10</Version>
|
||||
<Date>2016-03-13</Date>
|
||||
<Version>2.6.3</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
<Name>Alihan Öztürk</Name>
|
||||
<Email>alihan@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
+5
-5
@@ -1,10 +1,10 @@
|
||||
<PISI>
|
||||
<SourceName>PisiLinux</SourceName>
|
||||
<Version>1.0</Version>
|
||||
<Description xml:lang="tr">PisiLinux 1.0 Deposu</Description>
|
||||
<Description xml:lang="en">PisiLinux 1.0 Repository</Description>
|
||||
<Description xml:lang="es">PisiLinux 1.0 Repositorio</Description>
|
||||
<Description xml:lang="nl">PisiLinux 1.0 Opslagplaats</Description>
|
||||
<Version>2.0</Version>
|
||||
<Description xml:lang="tr">PisiLinux 2.0 Core Deposu</Description>
|
||||
<Description xml:lang="en">PisiLinux 2.0 Core Repository</Description>
|
||||
<Description xml:lang="es">PisiLinux 2.0 Core Repositorio</Description>
|
||||
<Description xml:lang="nl">PisiLinux 2.0 Core Opslagplaats</Description>
|
||||
<Type>Core</Type>
|
||||
<BinaryName>PisiLinux</BinaryName>
|
||||
<Obsoletes>
|
||||
|
||||
@@ -15,7 +15,7 @@ import lzma
|
||||
|
||||
import piksemel
|
||||
|
||||
pisirepouri = "http://ciftlik.pisilinux.org/pisi-2.0/pisi-index.xml.xz"
|
||||
pisirepouri = "http://ciftlik.pisilinux.org/2.0-Beta/pisi-index.xml.xz"
|
||||
svnrepouri = "https://github.com/ertugerata/core/raw/master/pisi-index.xml.xz"
|
||||
|
||||
def getIndex(uri):
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
|
||||
@@ -35,26 +36,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Update release="1">
|
||||
<Date>2015-04-01</Date>
|
||||
<Version>9</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-10-29</Date>
|
||||
<Version>9</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-08-23</Date>
|
||||
<Version>9</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
@@ -19,7 +19,15 @@ def builddiet():
|
||||
autotools.make("distclean")
|
||||
|
||||
autotools.autoreconf("-fi")
|
||||
autotools.configure('ac_cv_lib_dl_dlopen=no \
|
||||
autotools.configure('--with-thin-check= \
|
||||
--with-thin-dump= \
|
||||
--with-thin-repair= \
|
||||
--with-thin-restore= \
|
||||
--with-cache-check= \
|
||||
--with-cache-dump= \
|
||||
--with-cache-repair= \
|
||||
--with-cache-restore= \
|
||||
ac_cv_lib_dl_dlopen=no \
|
||||
--with-staticdir="/sbin" \
|
||||
--enable-debug \
|
||||
--with-optimisation=\"%s -Os\" \
|
||||
@@ -36,8 +44,8 @@ def builddiet():
|
||||
--with-systemdsystemunitdir=no \
|
||||
--enable-udev_sync' % get.CFLAGS())
|
||||
|
||||
pisitools.dosed("lib/misc/configure.h","rpl_malloc","malloc")
|
||||
pisitools.dosed("lib/misc/configure.h","rpl_realloc","realloc")
|
||||
#pisitools.dosed("lib/misc/configure.h","rpl_malloc","malloc")
|
||||
#pisitools.dosed("lib/misc/configure.h","rpl_realloc","realloc")
|
||||
|
||||
autotools.make("-j1 -C include")
|
||||
autotools.make("-j1 -C lib LIB_SHARED= VERSIONED_SHLIB=")
|
||||
@@ -58,7 +66,15 @@ def setup():
|
||||
pisitools.dosed("conf/example.conf.in", "use_lvmetad = 0", "use_lvmetad = 1")
|
||||
|
||||
autotools.autoreconf("-fi")
|
||||
autotools.configure("--enable-lvm1_fallback \
|
||||
autotools.configure("--with-thin-check= \
|
||||
--with-thin-dump= \
|
||||
--with-thin-repair= \
|
||||
--with-thin-restore= \
|
||||
--with-cache-check= \
|
||||
--with-cache-dump= \
|
||||
--with-cache-repair= \
|
||||
--with-cache-restore= \
|
||||
--enable-lvm1_fallback \
|
||||
--with-default-pid-dir=/run \
|
||||
--with-default-run-dir=/run/lvm \
|
||||
--with-default-locking-dir=/run/lock/lvm \
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
@@ -12,16 +13,16 @@
|
||||
<IsA>app:console</IsA>
|
||||
<Summary>Userland logical volume management tools</Summary>
|
||||
<Description>LVM2 includes all of the support for handling read/write operations physical and logical volumes.</Description>
|
||||
<Archive sha1sum="4f45406eb122443a0a9a3f2d338d5203d94d93de" type="targz">ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.118.tgz</Archive>
|
||||
<Archive sha1sum="2a7cce6407d91847731d8f2ca2b4ba7dee03225a" type="targz">ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.142.tgz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency releaseFrom="9">libutil-linux-devel</Dependency>
|
||||
<Dependency>libutil-linux-devel</Dependency>
|
||||
<Dependency>eudev-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!--<Patch level="1">lvm2-2.02.63-always-make-static-libdm.patch</Patch>
|
||||
<Patch level="1">lvm2-2.02.92-dynamic-static-ldflags.patch</Patch>
|
||||
<Patch level="1">lvm2-2.02.105-pthread-pkgconfig.patch</Patch>
|
||||
<Patch>lvm2-2.02.106-static-pkgconfig-libs.patch</Patch>-->
|
||||
<Patch>lvm2-2.02.106-static-pkgconfig-libs.patch</Patch>-->
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -34,6 +35,7 @@
|
||||
<Description>Device-mapper includes the driver enables the definition of new block devices composed of ranges of sectors of existing devices to define disk partitions or logical volumes.</Description>
|
||||
<Files>
|
||||
<Path fileType="executable">/usr/sbin/dmsetup</Path>
|
||||
<Path fileType="executable">/usr/sbin/dmstats</Path>
|
||||
<Path fileType="library">/usr/lib/libdevmapper.a</Path>
|
||||
<Path fileType="library">/usr/lib/libdevmapper.so*</Path>
|
||||
<Path fileType="data">/lib/udev/rules.d/10-dm.rules</Path>
|
||||
@@ -42,6 +44,7 @@
|
||||
<Path fileType="doc">/usr/share/doc/VERSION_DM</Path>
|
||||
<Path fileType="doc">/usr/share/doc/WHATS_NEW_DM</Path>
|
||||
<Path fileType="man">/usr/share/man/man8/dmsetup.8</Path>
|
||||
<Path fileType="man">/usr/share/man/man8/dmstats.8</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
@@ -180,58 +183,18 @@
|
||||
<Description>Number of utilities for creating, checking, and repairing logical volumes - statically linked for initramfs.</Description>
|
||||
<Files>
|
||||
<Path fileType="executable">/sbin/lvm.static</Path>
|
||||
<Path fileType="library">/usr/lib/liblvm2app.a</Path>
|
||||
<Path fileType="library">/usr/lib/liblvm2cmd.a</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="7">
|
||||
<Date>2015-05-02</Date>
|
||||
<Version>2.02.118</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Update release="1">
|
||||
<Date>2016-03-13</Date>
|
||||
<Version>2.02.142</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2014-09-04</Date>
|
||||
<Version>2.02.111</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2014-05-09</Date>
|
||||
<Version>2.02.106</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2014-04-07</Date>
|
||||
<Version>2.02.105</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-11-09</Date>
|
||||
<Version>2.02.103</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-07-26</Date>
|
||||
<Version>2.02.98</Version>
|
||||
<Comment>Fix dep, release bump.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptanan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-11-14</Date>
|
||||
<Version>2.02.98</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
@@ -12,7 +13,7 @@
|
||||
<IsA>app:console</IsA>
|
||||
<Summary>Utility to control Linux MD devices (software RAID arrays)</Summary>
|
||||
<Description>mdadm is used to create, manage, and monitor Linux MD (software RAID) devices.</Description>
|
||||
<Archive sha1sum="c649601d84553501c2f3b452cf93d1fbc53f976a" type="tarxz">https://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-3.3.2.tar.xz</Archive>
|
||||
<Archive sha1sum="0b6c284970567bfa30dbc14ea5c0e2320582b80c" type="tarxz">https://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-3.4.tar.xz</Archive>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
@@ -51,40 +52,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="5">
|
||||
<Date>2015-05-25</Date>
|
||||
<Version>3.3.2</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2014-05-17</Date>
|
||||
<Version>3.3</Version>
|
||||
<Comment>Rebuild. Fixed service.py file</Comment>
|
||||
<Name>Aydın Demirel</Name>
|
||||
<Email>aydin.demirel@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2014-04-13</Date>
|
||||
<Version>3.3</Version>
|
||||
<Comment>mdadm-static is a part of system.base now.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2014-01-31</Date>
|
||||
<Version>3.3</Version>
|
||||
<Comment>Ver. bump, rebuild</Comment>
|
||||
<Name>Kamil Atlı</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-11-14</Date>
|
||||
<Version>3.2.6</Version>
|
||||
<Date>2016-03-13</Date>
|
||||
<Version>3.4</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Licensed under the GNU General Public License, version 3.
|
||||
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||
|
||||
from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
from pisi.actionsapi import shelltools
|
||||
from pisi.actionsapi import get
|
||||
|
||||
def setup():
|
||||
#for i in ["mtools.texi"]:
|
||||
# pisitools.dosed(i, "/usr/local/etc", "/etc")
|
||||
|
||||
shelltools.export("INSTALL_PROGRAM", "install")
|
||||
autotools.autoreconf("-fi")
|
||||
autotools.configure("--prefix=/usr \
|
||||
--sysconfdir=/etc/mtools \
|
||||
--includedir=/usr/src/linux/include")
|
||||
|
||||
def build():
|
||||
autotools.make()
|
||||
pisitools.dosed("mtools.conf","SAMPLE FILE","#SAMPLE FILE")
|
||||
def install():
|
||||
autotools.rawInstall('-j1 DESTDIR="%s"' % get.installDIR())
|
||||
|
||||
|
||||
pisitools.insinto("/etc/mtools","mtools.conf")
|
||||
|
||||
pisitools.dodoc("COPYING", "README*", "Release.notes")
|
||||
@@ -0,0 +1,39 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>mtools</Name>
|
||||
<Homepage>http://mtools.linux.lu/</Homepage>
|
||||
<Packager>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Packager>
|
||||
<License>GPLv2</License>
|
||||
<IsA>app:console</IsA>
|
||||
<Summary>Utilities to access MS-DOS disks without mounting them</Summary>
|
||||
<Description>Mtools are utilities to access MS-DOS disks without mounting them.</Description>
|
||||
<Archive sha1sum="d703db71a409837a37db10a09ef63a35183f7565" type="targz">mirrors://gnu/mtools/mtools-4.0.18.tar.gz</Archive>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>mtools</Name>
|
||||
<Files>
|
||||
<Path fileType="executable">/usr/bin</Path>
|
||||
<Path fileType="config">/etc</Path>
|
||||
<Path fileType="doc">/usr/share/doc</Path>
|
||||
<Path fileType="info">/usr/share/info</Path>
|
||||
<Path fileType="man">/usr/share/man</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="1">
|
||||
<Date>2014-02-12</Date>
|
||||
<Version>4.0.18</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Richard de Bruin</Name>
|
||||
<Email>richdb@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" ?>
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>mtools</Name>
|
||||
<Summary xml:lang="tr">MS-DOS (Windows) disketlerinize -mount ile bağlamadan- erişim araçları</Summary>
|
||||
<Description xml:lang="tr">Mtools diskinizdeki MS-DOS (Windows) bölümlerine -mount komutu ile bağlamadan- erişebilmek için gereken araç setidir.</Description>
|
||||
</Source>
|
||||
</PISI>
|
||||
Binary file not shown.
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
@@ -17,22 +18,23 @@
|
||||
<IsA>data</IsA>
|
||||
<Summary>Firmware files used by the Linux kernel</Summary>
|
||||
<Description>linux-firmware contains different firmware files required for some devices to operate correctly.</Description>
|
||||
<!-- linux-firmware commit: commit f88e5c2e2ff57026ce8028ba4dde8e7325f251a4 2015-09-24 -->
|
||||
<Archive sha1sum="053e48266c07116bf86d0848655e9c0c02076609" type="tarbz2">http://source.pisilinux.org/1.0/linux-firmware/linux-firmware-20150924.tar.bz2</Archive>
|
||||
<!-- linux-firmware commit: 40e9ae84308274b91ac069fba2f1a290fcdc83fc 2016-01-11 -->
|
||||
<Archive sha1sum="03d895382f5c1c4ec0545143970ae2b79ee430fb" type="tarbz2">http://sourceforge.net/projects/pisilinux/files/source/linux-firmware-20160111.tar.bz2</Archive>
|
||||
<Archive sha1sum="dd685266f7bc0acb0d455462637d23e3e895bc96" type="tarxz" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/common-fw.tar.xz</Archive>
|
||||
<Archive sha1sum="b2bb7fce3ea67d131f543a48134f7a65f2a8d834" type="tarxz" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware-ipw.tar.xz</Archive>
|
||||
<Archive sha1sum="a5a616a9f765cf9cbb224deb7ccefdc82a7fe4d9" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware/firmware-nonfreebox-2-tar.bz2</Archive>
|
||||
<Archive sha1sum="6c18b28e62637fb809eaff89fff623ae1d470500" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware/ar9170.tar.bz2</Archive>
|
||||
<Archive sha1sum="aa3b414c2948be5f226a25fa5f37e56fd659a3bb" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware/ipw2x00-firmware.tar.bz2</Archive>
|
||||
<Archive sha1sum="f7ecf5412b7818871fa2798f1b314f8ddddb494e" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware/aic94xx-seq.tar.bz2</Archive>
|
||||
<Archive sha1sum="9be626663e9b9d15278f2b5cd1c916570eb62727" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware/zd12x1-firmware.tar.bz2</Archive>
|
||||
<Archive sha1sum="16d5f4dcc90f978732a9a5b3b0347672a6cc4c36" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware/accessrunner-firmware.tar.bz2</Archive>
|
||||
<Archive sha1sum="e40729d30ad6d7a6c88b90ee7bc5fbaeb9458cb7" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware/rtl8192se-firmware.tar.bz2</Archive>
|
||||
<Archive sha1sum="5d333e75f02a57861565337c14f6944090a242a8" type="tarxz" target="linux-firmware/mix">http://source.pisilinux.org/erdinc/firmware/nouveau-1.tar.xz</Archive>
|
||||
<Archive sha1sum="ff9e7f4b120476a90cd3fb69d76240166c4ff2a5" type="tarbz2" target="linux-firmware/mix">http://sourceforge.net/projects/pisilinux/files/source/zd12x1.tar.bz2</Archive>
|
||||
<Archive sha1sum="3239212ae7c5f60baa749764dcb8f5189e1e2f13" type="tarxz" target="linux-firmware/mix">http://sourceforge.net/projects/pisilinux/files/source/nouveau-340-32.tar.xz</Archive>
|
||||
<AdditionalFiles>
|
||||
<AdditionalFile target="intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq">fw/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq</AdditionalFile>
|
||||
<!--AdditionalFile target="intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq">fw/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq</AdditionalFile-->
|
||||
<AdditionalFile target="iwlwifi-7260-14.ucode">iwlwifi-7260-14.ucode</AdditionalFile>
|
||||
<AdditionalFile target="iwlwifi-7260-15.ucode">iwlwifi-7260-15.ucode</AdditionalFile>
|
||||
<AdditionalFile target="iwlwifi-7260-16.ucode">iwlwifi-7260-17.ucode</AdditionalFile>
|
||||
</AdditionalFiles>
|
||||
</Source>
|
||||
|
||||
@@ -48,138 +50,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="19">
|
||||
<Date>2015-09-06</Date>
|
||||
<Version>20150924</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="18">
|
||||
<Date>2015-09-06</Date>
|
||||
<Version>20150824</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="17">
|
||||
<Date>2015-07-20</Date>
|
||||
<Version>20150716</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="16">
|
||||
<Date>2015-03-26</Date>
|
||||
<Version>20150320</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="15">
|
||||
<Date>2015-02-14</Date>
|
||||
<Version>20150214</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="14">
|
||||
<Date>2014-12-16</Date>
|
||||
<Version>20141216</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="13">
|
||||
<Date>2014-11-07</Date>
|
||||
<Version>20141107</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="12">
|
||||
<Date>2014-07-23</Date>
|
||||
<Version>20140603</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin.bojara@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="11">
|
||||
<Date>2014-04-02</Date>
|
||||
<Version>20140316</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2014-03-01</Date>
|
||||
<Version>20140217</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="9">
|
||||
<Date>2013-11-30</Date>
|
||||
<Version>20131013</Version>
|
||||
<Comment>Remove unneeded build dep,fix unpack problem.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="8">
|
||||
<Date>2013-11-23</Date>
|
||||
<Version>20131013</Version>
|
||||
<Comment>Version bump to 20131013 git.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2013-09-30</Date>
|
||||
<Version>20130811</Version>
|
||||
<Comment>add update Intel-Bluetooth patchs</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2013-08-11</Date>
|
||||
<Version>20130811</Version>
|
||||
<Comment>add update patchs</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2013-07-19</Date>
|
||||
<Version>20130609</Version>
|
||||
<Comment>add update patchs</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2013-06-09</Date>
|
||||
<Version>20130609</Version>
|
||||
<Comment>bump</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-04-07</Date>
|
||||
<Version>20130421</Version>
|
||||
<Comment>bump</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-03-07</Date>
|
||||
<Version>20130224</Version>
|
||||
<Comment>bump</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-12-12</Date>
|
||||
<Version>20121212</Version>
|
||||
<Date>2016-01-22</Date>
|
||||
<Version>20160111</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
'''
|
||||
Created on 24-12-2012
|
||||
|
||||
@author: marcin
|
||||
'''
|
||||
import os
|
||||
import re
|
||||
|
||||
rootpath = "."
|
||||
specfile = "pspec.xml"
|
||||
newcomment = "First release"
|
||||
newrelease = "1"
|
||||
relative_backup_path = "../backup"
|
||||
|
||||
def read_file(path):
|
||||
with open(path) as f:
|
||||
return f.read().strip()
|
||||
|
||||
def reset_history(spec):
|
||||
release = re.compile("(.*?release\s*=\s*)[\"\']\d+[\"\'](.*?)")
|
||||
newspec = ''
|
||||
history = False
|
||||
update1 = False
|
||||
skipline = False
|
||||
for line in spec.split("\n"):
|
||||
if "</History>" in line: history = False
|
||||
if "<History>" in line: history = True
|
||||
if history:
|
||||
if "</Update>" in line:
|
||||
if not update1: newspec = "\n".join((newspec, line))
|
||||
update1 = True
|
||||
if update1: continue
|
||||
else:
|
||||
if "<Update" in line: line = re.sub(release, r'\1"%s"\2' % newrelease, line)
|
||||
elif "<Comment" in line:
|
||||
if not "</Comment" in line:
|
||||
skipline = True
|
||||
if "</Comment" in line:
|
||||
skipline = False
|
||||
line = " " * 12 + "<Comment>%s</Comment>" % newcomment
|
||||
if not skipline: newspec = "\n".join((newspec, line))
|
||||
else: newspec = "\n".join((newspec, line))
|
||||
return newspec
|
||||
|
||||
if __name__ == '__main__':
|
||||
backup_path = os.path.normpath(os.path.join(rootpath, relative_backup_path))
|
||||
if not os.path.isdir(backup_path):
|
||||
os.makedirs(backup_path)
|
||||
else:
|
||||
suffix = 0
|
||||
parent_backup = os.path.dirname(backup_path)
|
||||
base_name = os.path.basename(relative_backup_path)
|
||||
for d in os.listdir(parent_backup):
|
||||
if d.startswith(base_name):
|
||||
ext = d.replace(base_name, '')
|
||||
if os.path.isdir("%s/%s" % (parent_backup, d)) and ext.isdigit():
|
||||
if int(ext) > suffix:
|
||||
suffix = int(ext)
|
||||
suffix +=1
|
||||
suffix = "0%d" % suffix if suffix < 10 else str(suffix)
|
||||
os.rename(backup_path, backup_path + suffix)
|
||||
os.makedirs(backup_path)
|
||||
|
||||
for root, dirs, files in os.walk(rootpath):
|
||||
if specfile in files:
|
||||
f = "%s/%s" % (root, specfile)
|
||||
print(f)
|
||||
spec = read_file(f)
|
||||
bf = "%s/%s" % (os.path.normpath(root.replace(rootpath, relative_backup_path)), specfile)
|
||||
os.makedirs(os.path.dirname(bf))
|
||||
open(bf, "w").write(spec)
|
||||
open(bf, "a").write("\n")
|
||||
open(f, "w").write(reset_history(spec))
|
||||
open(f, "a").write("\n")
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>module-bbswitch</Name>
|
||||
@@ -11,7 +12,7 @@
|
||||
<Summary>Kernel module allowing to switch dedicated graphics card on Optimus laptops</Summary>
|
||||
<Description>kernel module allowing to switch dedicated graphics card on Optimus laptops</Description>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.4.4">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
<Archive sha1sum="e282ee682d794e3962baa4dead01917c42571e78" type="targz">https://github.com/Bumblebee-Project/bbswitch/archive/v0.8.tar.gz</Archive>
|
||||
<Patches>
|
||||
@@ -20,7 +21,7 @@
|
||||
<Package>
|
||||
<Name>module-bbswitch</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.4.4">kernel</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="library" permanent="true">/lib/modules</Path>
|
||||
@@ -34,243 +35,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="33">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.2.5.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="32">
|
||||
<Date>2015-11-27</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.2.4.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="31">
|
||||
<Date>2015-10-05</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.2.3.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="30">
|
||||
<Date>2015-10-01</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.2.2.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="29">
|
||||
<Date>2015-09-23</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.1.8.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="28">
|
||||
<Date>2015-09-18</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.1.7.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="27">
|
||||
<Date>2015-08-18</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.1.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="26">
|
||||
<Date>2015-08-13</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.1.5.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="25">
|
||||
<Date>2015-07-23</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.1.3.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="24">
|
||||
<Date>2015-07-20</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.1.2.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="23">
|
||||
<Date>2015-07-13</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.0.8.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="22">
|
||||
<Date>2015-06-30</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.0.7.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="21">
|
||||
<Date>2015-06-24</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.0.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="20">
|
||||
<Date>2015-06-16</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for new kernel</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="19">
|
||||
<Date>2015-05-22</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.19.8</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="18">
|
||||
<Date>2015-05-05</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.19.6</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="17">
|
||||
<Date>2015-04-24</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.19.5</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="16">
|
||||
<Date>2015-04-16</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.19.4</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="15">
|
||||
<Date>2015-04-02</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.19.3</Comment>
|
||||
<Name>Hakan Yıldız</Name>
|
||||
<Email>hknyldz93@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="14">
|
||||
<Date>2015-03-08</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.19.1</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="13">
|
||||
<Date>2015-03-01</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.19.0</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="12">
|
||||
<Date>2015-01-28</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.18.3</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="11">
|
||||
<Date>2015-01-09</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.18.1</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2014-11-29</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.17.4</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="9">
|
||||
<Date>2014-10-18</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.17.1</Comment>
|
||||
<Name>Kamil Atlı</Name>
|
||||
<Email>suvari@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="8">
|
||||
<Date>2014-09-19</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.16.3</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2014-09-03</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.16.1</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2014-07-24</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.15.6</Comment>
|
||||
<Name>Vedat Demir</Name>
|
||||
<Email>vedat@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2014-06-15</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.15.0</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2014-05-29</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.14.4.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2014-05-02</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.14.2.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2014-04-15</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.13.10.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2014-03-29</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel 3.13.6.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2014-03-09</Date>
|
||||
<Date>2016-03-07</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>First release.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
@@ -15,7 +16,7 @@
|
||||
<Archive sha1sum="e02beac9cc713011551c483ae5f20f065f5b88c7" type="targz" target="i686">http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_248.tar.gz</Archive>
|
||||
<Archive sha1sum="bd55f1fdc6b0a4d0a70dc4ba4bb4169a824e238c" type="targz" target="x86_64">http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_248.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.4.4">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">patch/linux-40.patch</Patch>
|
||||
@@ -32,7 +33,7 @@
|
||||
<Package>
|
||||
<Name>module-broadcom-wl</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.4.4">kernel</Dependency>
|
||||
<Dependency release="current">module-broadcom-wl-userspace</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Replaces>
|
||||
@@ -64,376 +65,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="53">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.2.5.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="52">
|
||||
<Date>2015-11-27</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.2.4.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="51">
|
||||
<Date>2015-10-05</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.2.3.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="50">
|
||||
<Date>2015-10-01</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.2.2.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="49">
|
||||
<Date>2015-09-23</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.1.8.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="48">
|
||||
<Date>2015-09-18</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.1.7.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="47">
|
||||
<Date>2015-08-18</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.1.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="46">
|
||||
<Date>2015-08-13</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.1.5.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="45">
|
||||
<Date>2015-07-23</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.1.3.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="44">
|
||||
<Date>2015-07-20</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.1.2.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="43">
|
||||
<Date>2015-07-13</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.0.8.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="42">
|
||||
<Date>2015-06-30</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.0.7.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="41">
|
||||
<Date>2015-06-16</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.0.6</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="40">
|
||||
<Date>2015-06-16</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.0.5</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="38">
|
||||
<Date>2015-05-22</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.19.6</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="37">
|
||||
<Date>2015-05-05</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.19.6</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="36">
|
||||
<Date>2015-04-24</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.19.5</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="35">
|
||||
<Date>2015-04-16</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.19.4</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="34">
|
||||
<Date>2015-04-02</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.19.3</Comment>
|
||||
<Name>Hakan Yıldız</Name>
|
||||
<Email>hknyldz93@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="33">
|
||||
<Date>2015-03-08</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.19.1</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="32">
|
||||
<Date>2015-03-01</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.19.0</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="31">
|
||||
<Date>2015-02-28</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.18.3</Comment>
|
||||
<Name>Hakan Yıldız</Name>
|
||||
<Email>hknyldz93@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="30">
|
||||
<Date>2014-11-29</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.17.4</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="29">
|
||||
<Date>2014-10-19</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.17.1</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="28">
|
||||
<Date>2014-09-19</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.16.3</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="27">
|
||||
<Date>2014-09-03</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 3.16.1</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="26">
|
||||
<Date>2014-07-23</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Version bump for kernel 3.15.6</Comment>
|
||||
<Name>Vedat Demir</Name>
|
||||
<Email>vedat@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="25">
|
||||
<Date>2014-06-15</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for kernel 3.15.0</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="24">
|
||||
<Date>2014-05-29</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for kernel 3.14.4.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="23">
|
||||
<Date>2014-05-02</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for kernel 3.14.2.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="22">
|
||||
<Date>2014-04-15</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for kernel 3.13.10.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="21">
|
||||
<Date>2014-03-29</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for 3.13.6</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="20">
|
||||
<Date>2014-03-01</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for 3.12.13</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="19">
|
||||
<Date>2014-01-17</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for 3.12.8</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="18">
|
||||
<Date>2013-12-17</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for 3.12.5</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="17">
|
||||
<Date>2013-12-14</Date>
|
||||
<Version>6.30.223.141</Version>
|
||||
<Comment>Rebuild for 3.12.5</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="16">
|
||||
<Date>2013-11-23</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>Rebuild for 3.10.20</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="15">
|
||||
<Date>2013-11-05</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>Rebuild for 3.10.18</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="14">
|
||||
<Date>2013-10-09</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>fix solution broadcom-wl</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="13">
|
||||
<Date>2013-09-28</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>fix solution broadcom-wl</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="12">
|
||||
<Date>2013-09-18</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>fix solution broadcom-wl</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="11">
|
||||
<Date>2013-09-05</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>fix solution broadcom-wl</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2013-08-30</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>3.10.10</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2013-08-20</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>3.10.9</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="9">
|
||||
<Date>2013-08-20</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>3.10.x</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="8">
|
||||
<Date>2013-08-11</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>without blacklist</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2013-07-26</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>Rebuild for Kernel 3.10.x</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2013-06-15</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>rebuild for Kernel 3.8.13</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2013-05-26</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>rebuild for Kernel 3.9.4</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2013-05-26</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>Kernel 3.9.3</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-02-07</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>Runtime dep</Comment>
|
||||
<Name>Ertan Güven</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-02-01</Date>
|
||||
<Version>5.100.82.112</Version>
|
||||
<Comment>bump+fix for new kernel-line</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2011-09-15</Date>
|
||||
<Version>5.100.82.38</Version>
|
||||
<Date>2016-03-07</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Pisi Linux Admins</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
@@ -12,16 +13,16 @@
|
||||
<IsA>driver</IsA>
|
||||
<Summary>Kernel modules for VirtualBox guest machines</Summary>
|
||||
<Description>This package provides the kernel modules needed for mouse integration and shared folder support between VirtualBox host and guest systems.</Description>
|
||||
<Archive sha1sum="cd1f7c62e17ef3d9b5f7aef7d83fd160355eb396" type="tarxz">http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-guest-5.0.4.tar.xz</Archive>
|
||||
<Archive sha1sum="4fee388ca9ce5ab342f11edcc0631a694029665b" type="tarxz">http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-guest-5.0.12.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.4.4">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>module-virtualbox-guest</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.4.4">kernel</Dependency>
|
||||
<Dependency>baselayout</Dependency>
|
||||
<Dependency version="current">module-virtualbox-guest-userspace</Dependency>
|
||||
</RuntimeDependencies>
|
||||
@@ -52,390 +53,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="54">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>5.0.4</Version>
|
||||
<Comment>Rebuild for kernel-4.2.5.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="53">
|
||||
<Date>2015-11-27</Date>
|
||||
<Version>5.0.4</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="52">
|
||||
<Date>2015-10-05</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.2.3.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="51">
|
||||
<Date>2015-10-01</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.2.2.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="50">
|
||||
<Date>2015-08-23</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.8.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="49">
|
||||
<Date>2015-08-18</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.7.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="48">
|
||||
<Date>2015-08-13</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.5.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="47">
|
||||
<Date>2015-07-23</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.3.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="46">
|
||||
<Date>2015-07-20</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.2.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="45">
|
||||
<Date>2015-07-13</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.0.8.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="45">
|
||||
<Date>2015-06-24</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.0.7.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="44">
|
||||
<Date>2015-06-24</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.0.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="43">
|
||||
<Date>2015-06-09</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Version Bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="42">
|
||||
<Date>2015-05-14</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.8</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="41">
|
||||
<Date>2015-05-05</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.6</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="40">
|
||||
<Date>2015-04-24</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.5</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="39">
|
||||
<Date>2015-04-16</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.4</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="38">
|
||||
<Date>2015-04-02</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.3</Comment>
|
||||
<Name>Hakan Yıldız</Name>
|
||||
<Email>hknyldz93@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="37">
|
||||
<Date>2015-03-08</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.1</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="36">
|
||||
<Date>2015-03-01</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.0</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="35">
|
||||
<Date>2015-01-28</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.18.3</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="34">
|
||||
<Date>2015-01-09</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Version bump, kernel 3.18.1</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="33">
|
||||
<Date>2014-11-29</Date>
|
||||
<Version>4.3.18</Version>
|
||||
<Comment>Version bump, kernel 3.17.4</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="32">
|
||||
<Date>2014-10-19</Date>
|
||||
<Version>4.3.18</Version>
|
||||
<Comment>Version bump, kernel 3.17.1</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="31">
|
||||
<Date>2014-09-19</Date>
|
||||
<Version>4.3.16</Version>
|
||||
<Comment>Version bump, kernel 3.16.3</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="30">
|
||||
<Date>2014-09-03</Date>
|
||||
<Version>4.3.14</Version>
|
||||
<Comment>Rebuild for kernel 3.16.1</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="29">
|
||||
<Date>2014-07-24</Date>
|
||||
<Version>4.3.14</Version>
|
||||
<Comment>Version bump for kernel 3.15.6</Comment>
|
||||
<Name>Vedat Demir</Name>
|
||||
<Email>vedatn@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="28">
|
||||
<Date>2014-06-15</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Rebuild for kernel 3.15.0</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="27">
|
||||
<Date>2014-05-29</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Rebuild for kernel 3.14.4.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="26">
|
||||
<Date>2014-05-02</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Rebuild for kernel 3.14.2.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="25">
|
||||
<Date>2014-04-15</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Rebuild for kernel 3.13.10.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="24">
|
||||
<Date>2014-04-07</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="23">
|
||||
<Date>2014-03-29</Date>
|
||||
<Version>4.3.8</Version>
|
||||
<Comment>Rebuild for 3.13.6</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="22">
|
||||
<Date>2014-03-09</Date>
|
||||
<Version>4.3.8</Version>
|
||||
<Comment>Rebuild for 3.12.13</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="21">
|
||||
<Date>2014-03-01</Date>
|
||||
<Version>4.3.8</Version>
|
||||
<Comment>Rebuild for 3.12.13</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="20">
|
||||
<Date>2014-01-17</Date>
|
||||
<Version>4.3.6</Version>
|
||||
<Comment>Rebuild for 3.12.8</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="19">
|
||||
<Date>2013-12-21</Date>
|
||||
<Version>4.3.6</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="18">
|
||||
<Date>2013-12-17</Date>
|
||||
<Version>4.3.2</Version>
|
||||
<Comment>Rebuild for 3.12.5</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="17">
|
||||
<Date>2013-12-12</Date>
|
||||
<Version>4.3.2</Version>
|
||||
<Comment>Rebuild for 3.12.5</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="16">
|
||||
<Date>2013-11-23</Date>
|
||||
<Version>4.3.2</Version>
|
||||
<Comment>Rebuild for 3.10.20</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="15">
|
||||
<Date>2013-11-11</Date>
|
||||
<Version>4.3.2</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="14">
|
||||
<Date>2013-11-05</Date>
|
||||
<Version>4.2.18</Version>
|
||||
<Comment>Rebuild for 3.10.18</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="13">
|
||||
<Date>2013-10-10</Date>
|
||||
<Version>4.2.18</Version>
|
||||
<Comment>version bump</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="12">
|
||||
<Date>2013-09-28</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>3.10.13</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="11">
|
||||
<Date>2013-09-18</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>3.10.12</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2013-08-30</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>3.10.10</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="9">
|
||||
<Date>2013-08-20</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>3.10.9</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="8">
|
||||
<Date>2013-08-20</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>Kernel 3.10.6</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2013-07-06</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2013-06-01</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Kernel 3.8.13</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2013-06-01</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Kernel 3.9.4</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2013-05-04</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Update</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-04-14</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-03-02</Date>
|
||||
<Version>4.2.8</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2013-01-22</Date>
|
||||
<Version>4.2.6</Version>
|
||||
<Date>2016-03-07</Date>
|
||||
<Version>5.0.12</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# https://forums.virtualbox.org/viewtopic.php?uid=80969&f=7&t=70150&start=0
|
||||
# kernel 4.3-rc1 heads up
|
||||
#
|
||||
--- ./vboxdrv/linux/SUPDrv-linux.c.orig 2015-09-25 20:56:04.704532570 -0700
|
||||
+++ ./vboxdrv/linux/SUPDrv-linux.c 2015-09-25 20:57:17.265521751 -0700
|
||||
@@ -485,6 +485,7 @@
|
||||
* opened, at least we'll blindly assume that here.
|
||||
*/
|
||||
#ifdef CONFIG_VBOXDRV_AS_MISC
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0)
|
||||
rc = misc_deregister(&gMiscDeviceUsr);
|
||||
if (rc < 0)
|
||||
{
|
||||
@@ -495,6 +496,10 @@
|
||||
{
|
||||
Log(("misc_deregister failed with rc=%#x on vboxdrv\n", rc));
|
||||
}
|
||||
+#else
|
||||
+ misc_deregister(&gMiscDeviceUsr);
|
||||
+ misc_deregister(&gMiscDeviceSys);
|
||||
+#endif
|
||||
#else /* !CONFIG_VBOXDRV_AS_MISC */
|
||||
# ifdef CONFIG_DEVFS_FS
|
||||
/*
|
||||
--- ./vboxnetadp/linux/VBoxNetAdp-linux.c.orig 2015-09-25 20:55:42.309667865 -0700
|
||||
+++ ./vboxnetadp/linux/VBoxNetAdp-linux.c 2015-09-25 20:58:49.331034237 -0700
|
||||
@@ -436,7 +436,11 @@
|
||||
|
||||
vboxNetAdpShutdown();
|
||||
/* Remove control device */
|
||||
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0)
|
||||
rc = misc_deregister(&g_CtlDev);
|
||||
+ #else
|
||||
+ misc_deregister(&g_CtlDev);
|
||||
+ #endif
|
||||
if (rc < 0)
|
||||
{
|
||||
printk(KERN_ERR "misc_deregister failed with rc=%x\n", rc);
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
@@ -12,16 +13,19 @@
|
||||
<IsA>driver</IsA>
|
||||
<Summary>Kernel modules for VirtualBox</Summary>
|
||||
<Description>This package provides the kernel support for VirtualBox.</Description>
|
||||
<Archive sha1sum="14e3d8630f779dc1349d9aa488fa7e6604b9ba3e" type="tarxz">http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-5.0.4.tar.xz</Archive>
|
||||
<Archive sha1sum="19662922a8a696fe0eb37184024712a781d06a73" type="tarxz">http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-5.0.12.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.4.4">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
<!--Patches>
|
||||
<Patch>vbox_linux-4.3.diff</Patch>
|
||||
</Patches-->
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>module-virtualbox</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.4.4">kernel</Dependency>
|
||||
<Dependency version="current">module-virtualbox-userspace</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
@@ -47,411 +51,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="57">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>5.0.4</Version>
|
||||
<Comment>Rebuild for kernel-4.2.5.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="56">
|
||||
<Date>2015-11-27</Date>
|
||||
<Version>5.0.4</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="55">
|
||||
<Date>2015-10-05</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.2.3.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="54">
|
||||
<Date>2015-10-01</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.2.2.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="53">
|
||||
<Date>2015-09-23</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.8.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="52">
|
||||
<Date>2015-09-18</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.7.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="51">
|
||||
<Date>2015-08-18</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="50">
|
||||
<Date>2015-08-13</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.5.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="49">
|
||||
<Date>2015-07-23</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.3.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="48">
|
||||
<Date>2015-07-20</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.1.2.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="47">
|
||||
<Date>2015-07-13</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.0.8.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="46">
|
||||
<Date>2015-06-30</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.0.7.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="45">
|
||||
<Date>2015-06-24</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Rebuild for kernel-4.0.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="44">
|
||||
<Date>2015-06-09</Date>
|
||||
<Version>4.3.28</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="43">
|
||||
<Date>2015-05-14</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.8</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="42">
|
||||
<Date>2015-05-05</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.6</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="41">
|
||||
<Date>2015-04-24</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.5</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="40">
|
||||
<Date>2015-04-16</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.4</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="39">
|
||||
<Date>2015-04-02</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.3</Comment>
|
||||
<Name>Hakan Yıldız</Name>
|
||||
<Email>hknyldz93@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="38">
|
||||
<Date>2015-03-08</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.1</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="37">
|
||||
<Date>2015-03-01</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.19.0</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="36">
|
||||
<Date>2015-01-28</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Rebuild for kernel 3.18.3</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="35">
|
||||
<Date>2015-01-09</Date>
|
||||
<Version>4.3.20</Version>
|
||||
<Comment>Version bump, kernel 3.18.1</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="34">
|
||||
<Date>2014-11-29</Date>
|
||||
<Version>4.3.18</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="33">
|
||||
<Date>2014-11-21</Date>
|
||||
<Version>4.3.18</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="32">
|
||||
<Date>2014-10-19</Date>
|
||||
<Version>4.3.18</Version>
|
||||
<Comment>Version bump, 4.3.18</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="31">
|
||||
<Date>2014-09-19</Date>
|
||||
<Version>4.3.16</Version>
|
||||
<Comment>Version bump, 4.3.16</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="30">
|
||||
<Date>2014-09-03</Date>
|
||||
<Version>4.3.14</Version>
|
||||
<Comment>Rebuild for kernel 3.16.1</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="29">
|
||||
<Date>2014-07-24</Date>
|
||||
<Version>4.3.14</Version>
|
||||
<Comment>Version bump for kernel 3.15.6</Comment>
|
||||
<Name>Vedat Demir</Name>
|
||||
<Email>vedat@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="28">
|
||||
<Date>2014-06-15</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Rebuild for kernel 3.15.0</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="27">
|
||||
<Date>2014-05-29</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Rebuild for kernel 3.14.4.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="26">
|
||||
<Date>2014-05-02</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Rebuild for kernel 3.14.2.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="25">
|
||||
<Date>2014-04-15</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Rebuild for kernel 3.13.10.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="24">
|
||||
<Date>2014-04-07</Date>
|
||||
<Version>4.3.10</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="23">
|
||||
<Date>2014-03-29</Date>
|
||||
<Version>4.3.8</Version>
|
||||
<Comment>Rebuild for 3.13.6</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="22">
|
||||
<Date>2014-03-09</Date>
|
||||
<Version>4.3.8</Version>
|
||||
<Comment>Rebuild for 3.12.13</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="21">
|
||||
<Date>2014-03-01</Date>
|
||||
<Version>4.3.8</Version>
|
||||
<Comment>Rebuild for 3.12.13</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="20">
|
||||
<Date>2014-01-17</Date>
|
||||
<Version>4.3.6</Version>
|
||||
<Comment>Rebuild for 3.12.8</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="19">
|
||||
<Date>2013-12-22</Date>
|
||||
<Version>4.3.6</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="18">
|
||||
<Date>2013-12-17</Date>
|
||||
<Version>4.3.2</Version>
|
||||
<Comment>Rebuild for 3.12.5</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="17">
|
||||
<Date>2013-12-12</Date>
|
||||
<Version>4.3.2</Version>
|
||||
<Comment>Rebuild for 3.12.5</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="16">
|
||||
<Date>2013-11-23</Date>
|
||||
<Version>4.3.2</Version>
|
||||
<Comment>Rebuild for 3.10.20</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="15">
|
||||
<Date>2013-11-11</Date>
|
||||
<Version>4.3.2</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="14">
|
||||
<Date>2013-11-05</Date>
|
||||
<Version>4.2.18</Version>
|
||||
<Comment>Rebuild for 3.10.18</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="13">
|
||||
<Date>2013-10-09</Date>
|
||||
<Version>4.2.18</Version>
|
||||
<Comment>version bump</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="12">
|
||||
<Date>2013-09-28</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>3.10.13</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="11">
|
||||
<Date>2013-09-18</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>3.10.12</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2013-08-20</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>3.10.10</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2013-08-20</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>3.10.9</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="9">
|
||||
<Date>2013-08-20</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>Kernel 3.10.6</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="8">
|
||||
<Date>2013-07-06</Date>
|
||||
<Version>4.2.16</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2013-06-15</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Kernel 3.8.13</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2013-06-01</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Kernel 3.9.4</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2013-05-26</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Kernel 3.9.3</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2013-05-04</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Update</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-04-14</Date>
|
||||
<Version>4.2.12</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-03-02</Date>
|
||||
<Version>4.2.8</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2013-01-22</Date>
|
||||
<Version>4.2.6</Version>
|
||||
<Date>2016-03-07</Date>
|
||||
<Version>5.0.12</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
@@ -15,7 +16,7 @@
|
||||
<Description>module-ndiswrapper allows you to use Windows XP drivers for WLAN cards without proper Linux drivers.</Description>
|
||||
<Archive sha1sum="75fbbda677fe91ee07a6f6a8e19b1f3e2479540f" type="targz">http://download.sourceforge.net/ndiswrapper/ndiswrapper-1.59.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.4.4">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch>support_kernel-4.0.patch</Patch>
|
||||
@@ -29,7 +30,7 @@
|
||||
<Package>
|
||||
<Name>ndiswrapper</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.4.4">kernel</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="library" permanent="true">/lib/modules</Path>
|
||||
@@ -45,54 +46,12 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="7">
|
||||
<Date>2014-11-30</Date>
|
||||
<Version>1.59</Version>
|
||||
<Comment>Rebuild for kernel-4.2.5.</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2014-11-27</Date>
|
||||
<Version>1.59</Version>
|
||||
<Comment>Rebuild for kernel-4.2.4.</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2014-10-05</Date>
|
||||
<Version>1.59</Version>
|
||||
<Comment>Rebuild for kernel-4.2.3.</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2014-10-01</Date>
|
||||
<Version>1.59</Version>
|
||||
<Comment>Rebuild for kernel-4.2.2.</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2014-09-23</Date>
|
||||
<Version>1.59</Version>
|
||||
<Comment>Rebuild for kernel-4.1.8.</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2014-08-18</Date>
|
||||
<Version>1.59</Version>
|
||||
<Comment>Rebuild for kernel-4.1.6.</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2014-08-13</Date>
|
||||
<Date>2016-03-07</Date>
|
||||
<Version>1.59</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -83,9 +83,9 @@ diff -Nurp linux-4.2.2/Makefile linux-4.2.2-3rd/Makefile
|
||||
net-y := net/
|
||||
libs-y := lib/
|
||||
core-y := usr/
|
||||
diff -Nurp linux-4.2.2/scripts/kconfig/Makefile linux-4.2.2-3rd/scripts/kconfig/Makefile
|
||||
--- linux-4.2.2/scripts/kconfig/Makefile 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-3rd/scripts/kconfig/Makefile 2015-09-29 23:04:06.298700940 +0300
|
||||
diff -Nurp linux-4.4.0/scripts/kconfig/Makefile linux-4.4.0-3rd/scripts/kconfig/Makefile
|
||||
--- linux-4.4.0/scripts/kconfig/Makefile
|
||||
+++ linux-4.4.0-3rd/scripts/kconfig/Makefile
|
||||
@@ -18,26 +18,26 @@ endif
|
||||
# We need this, in case the user has it in its environment
|
||||
unexport CONFIG_
|
||||
@@ -144,9 +144,9 @@ diff -Nurp linux-4.2.2/scripts/kconfig/Makefile linux-4.2.2-3rd/scripts/kconfig/
|
||||
+defconfig: $(obj)/conf 3rdparty/Makefile
|
||||
ifeq ($(KBUILD_DEFCONFIG),)
|
||||
$< $(silent) --defconfig $(Kconfig)
|
||||
else
|
||||
@@ -101,7 +101,7 @@ else
|
||||
$(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
|
||||
else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),)
|
||||
@@ -104,26 +104,26 @@ else
|
||||
$(Q)$(MAKE) -f $(srctree)/Makefile $(KBUILD_DEFCONFIG)
|
||||
endif
|
||||
|
||||
-%_defconfig: $(obj)/conf
|
||||
@@ -154,7 +154,11 @@ diff -Nurp linux-4.2.2/scripts/kconfig/Makefile linux-4.2.2-3rd/scripts/kconfig/
|
||||
$(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
|
||||
|
||||
configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@)
|
||||
@@ -112,14 +112,14 @@ configfiles=$(wildcard $(srctree)/kernel
|
||||
|
||||
-%.config: $(obj)/conf
|
||||
+%.config: $(obj)/conf 3rdparty/Makefile
|
||||
$(if $(call configfiles),, $(error No configuration exists for this target on this architecture))
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles)
|
||||
+$(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig
|
||||
|
||||
PHONY += kvmconfig
|
||||
@@ -167,12 +171,13 @@ diff -Nurp linux-4.2.2/scripts/kconfig/Makefile linux-4.2.2-3rd/scripts/kconfig/
|
||||
+xenconfig: xen.config 3rdparty/Makefile
|
||||
@:
|
||||
|
||||
-PHONY += tinyconfig
|
||||
+PHONY += tinyconfig 3rdparty/Makefile
|
||||
tinyconfig:
|
||||
PHONY += tinyconfig
|
||||
-tinyconfig:
|
||||
+tinyconfig: 3rdparty/Makefile
|
||||
$(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config
|
||||
|
||||
@@ -183,6 +183,9 @@ gconf-objs := gconf.o zconf.tab.o
|
||||
# Help text used by make help
|
||||
@@ -186,6 +186,9 @@ gconf-objs := gconf.o zconf.tab.o
|
||||
|
||||
hostprogs-y := conf nconf mconf kxgettext qconf gconf
|
||||
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
From:
|
||||
https://github.com/lwfinger/rtl8723bs/commit/49fcb39bc7dc0b7ae61463d493c0b630dc6a27ca
|
||||
|
||||
From 49fcb39bc7dc0b7ae61463d493c0b630dc6a27ca Mon Sep 17 00:00:00 2001
|
||||
From: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Date: Sat, 15 Aug 2015 10:51:20 -0500
|
||||
Subject: [PATCH] rtl8723bs: Fix builds on kernel 4.2
|
||||
|
||||
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
[adapted to mga kernel / tmb]
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
---
|
||||
hal/hal_com_phycfg.c | 38 +++++++++++++++++++-------------------
|
||||
os_dep/ioctl_cfg80211.c | 5 +++++
|
||||
2 files changed, 24 insertions(+), 19 deletions(-)
|
||||
|
||||
3rdparty/rtl8723bs/hal/hal_com_phycfg.c | 38 ++++++++++++++---------------
|
||||
3rdparty/rtl8723bs/os_dep/ioctl_cfg80211.c | 5 +++
|
||||
2 files changed, 24 insertions(+), 19 deletions(-)
|
||||
|
||||
diff -Nurp linux/3rdparty/rtl8723bs.orig/hal/hal_com_phycfg.c linux/3rdparty/rtl8723bs/hal/hal_com_phycfg.c
|
||||
--- linux/3rdparty/rtl8723bs.orig/hal/hal_com_phycfg.c 2015-09-30 00:51:13.000000000 +0300
|
||||
+++ linux/3rdparty/rtl8723bs/hal/hal_com_phycfg.c 2015-09-30 01:49:37.475440016 +0300
|
||||
@@ -2254,7 +2254,7 @@ Hal_ChannelPlanToRegulation(
|
||||
#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
|
||||
|
||||
extern char *rtw_phy_file_path;
|
||||
-static char file_path[PATH_MAX];
|
||||
+static char rtl_file_path[PATH_MAX];
|
||||
|
||||
#define GetLineFromBuffer(buffer) strsep(&buffer, "\n")
|
||||
|
||||
@@ -2276,11 +2276,11 @@ phy_ConfigMACWithParaFile(
|
||||
|
||||
if ((pHalData->mac_reg_len == 0) && (pHalData->mac_reg == NULL))
|
||||
{
|
||||
- rtw_merge_string(file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
+ rtw_merge_string(rtl_file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
|
||||
- if (rtw_is_file_readable(file_path) == true)
|
||||
+ if (rtw_is_file_readable(rtl_file_path) == true)
|
||||
{
|
||||
- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
+ rlen = rtw_retrive_from_file(rtl_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
if (rlen > 0)
|
||||
{
|
||||
rtStatus = _SUCCESS;
|
||||
@@ -2375,11 +2375,11 @@ phy_ConfigBBWithParaFile(
|
||||
|
||||
if ((pBufLen != NULL) && (*pBufLen == 0) && (pBuf == NULL))
|
||||
{
|
||||
- rtw_merge_string(file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
+ rtw_merge_string(rtl_file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
|
||||
- if (rtw_is_file_readable(file_path) == true)
|
||||
+ if (rtw_is_file_readable(rtl_file_path) == true)
|
||||
{
|
||||
- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
+ rlen = rtw_retrive_from_file(rtl_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
if (rlen > 0)
|
||||
{
|
||||
rtStatus = _SUCCESS;
|
||||
@@ -2824,11 +2824,11 @@ phy_ConfigBBWithPgParaFile(
|
||||
|
||||
if ((pHalData->bb_phy_reg_pg_len == 0) && (pHalData->bb_phy_reg_pg == NULL))
|
||||
{
|
||||
- rtw_merge_string(file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
+ rtw_merge_string(rtl_file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
|
||||
- if (rtw_is_file_readable(file_path) == true)
|
||||
+ if (rtw_is_file_readable(rtl_file_path) == true)
|
||||
{
|
||||
- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
+ rlen = rtw_retrive_from_file(rtl_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
if (rlen > 0)
|
||||
{
|
||||
rtStatus = _SUCCESS;
|
||||
@@ -2904,11 +2904,11 @@ PHY_ConfigRFWithParaFile(
|
||||
|
||||
if ((pBufLen != NULL) && (*pBufLen == 0) && (pBuf == NULL))
|
||||
{
|
||||
- rtw_merge_string(file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
+ rtw_merge_string(rtl_file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
|
||||
- if (rtw_is_file_readable(file_path) == true)
|
||||
+ if (rtw_is_file_readable(rtl_file_path) == true)
|
||||
{
|
||||
- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
+ rlen = rtw_retrive_from_file(rtl_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
if (rlen > 0)
|
||||
{
|
||||
rtStatus = _SUCCESS;
|
||||
@@ -3178,11 +3178,11 @@ PHY_ConfigRFWithTxPwrTrackParaFile(
|
||||
|
||||
if ((pHalData->rf_tx_pwr_track_len == 0) && (pHalData->rf_tx_pwr_track == NULL))
|
||||
{
|
||||
- rtw_merge_string(file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
+ rtw_merge_string(rtl_file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
|
||||
- if (rtw_is_file_readable(file_path) == true)
|
||||
+ if (rtw_is_file_readable(rtl_file_path) == true)
|
||||
{
|
||||
- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
+ rlen = rtw_retrive_from_file(rtl_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
if (rlen > 0)
|
||||
{
|
||||
rtStatus = _SUCCESS;
|
||||
@@ -3527,11 +3527,11 @@ PHY_ConfigRFWithPowerLimitTableParaFile(
|
||||
|
||||
if ((pHalData->rf_tx_pwr_lmt_len == 0) && (pHalData->rf_tx_pwr_lmt == NULL))
|
||||
{
|
||||
- rtw_merge_string(file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
+ rtw_merge_string(rtl_file_path, PATH_MAX, rtw_phy_file_path, pFileName);
|
||||
|
||||
- if (rtw_is_file_readable(file_path) == true)
|
||||
+ if (rtw_is_file_readable(rtl_file_path) == true)
|
||||
{
|
||||
- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
+ rlen = rtw_retrive_from_file(rtl_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
|
||||
if (rlen > 0)
|
||||
{
|
||||
rtStatus = _SUCCESS;
|
||||
diff -Nurp linux/3rdparty/rtl8723bs.orig/os_dep/ioctl_cfg80211.c linux/3rdparty/rtl8723bs/os_dep/ioctl_cfg80211.c
|
||||
--- linux/3rdparty/rtl8723bs.orig/os_dep/ioctl_cfg80211.c 2015-09-30 00:51:13.000000000 +0300
|
||||
+++ linux/3rdparty/rtl8723bs/os_dep/ioctl_cfg80211.c 2015-09-30 01:49:37.476440020 +0300
|
||||
@@ -587,7 +587,12 @@ void rtw_cfg80211_indicate_disconnect(_a
|
||||
|
||||
if (!padapter->mlmepriv.not_indic_disco) {
|
||||
if(check_fwstate(&padapter->mlmepriv, _FW_LINKED))
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0))
|
||||
+ cfg80211_disconnected(padapter->pnetdev, 0,
|
||||
+ NULL, 0, true, GFP_ATOMIC);
|
||||
+#else
|
||||
cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, GFP_ATOMIC);
|
||||
+#endif
|
||||
else
|
||||
cfg80211_connect_result(padapter->pnetdev, NULL, NULL, 0, NULL, 0,
|
||||
WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC/*GFP_KERNEL*/);
|
||||
@@ -1,23 +0,0 @@
|
||||
From 842e61cb85813b1ed8a1646cbe6739950c0c9822 Mon Sep 17 00:00:00 2001
|
||||
From: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Date: Thu, 7 May 2015 19:08:17 +0000
|
||||
Subject: [PATCH] rtl8723bs: Fix Makefile to allow warnings
|
||||
|
||||
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
---
|
||||
Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git linux.old/3rdparty/rtl8723bs/Makefile linux/3rdparty/rtl8723bs/Makefile
|
||||
index a4d9f45..4da73fa 100644
|
||||
--- linux.old/3rdparty/rtl8723bs/Makefile
|
||||
+++ linux/3rdparty/rtl8723bs/Makefile
|
||||
@@ -3,7 +3,7 @@ EXTRA_CFLAGS += -O1
|
||||
#EXTRA_CFLAGS += -O3
|
||||
#EXTRA_CFLAGS += -Wall
|
||||
#EXTRA_CFLAGS += -Wextra
|
||||
-EXTRA_CFLAGS += -Werror
|
||||
+#EXTRA_CFLAGS += -Werror
|
||||
#EXTRA_CFLAGS += -pedantic
|
||||
#EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+40
@@ -0,0 +1,40 @@
|
||||
From 61f9738d65094a6b18d22c7beb6bb8c3dc0606b9 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Mon, 26 Oct 2015 15:20:46 +0100
|
||||
Subject: [PATCH] ACPI / video: Add a quirk to force acpi-video backlight on
|
||||
Dell XPS L421X
|
||||
|
||||
Just like the Dell XPS 15 (L521X) the Dell XPS 14 (L421X) needs to use
|
||||
the acpi-video backlight interface rather then the native one for backlight
|
||||
control to work, add a quirk for this.
|
||||
|
||||
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1272633
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
---
|
||||
drivers/acpi/video_detect.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
|
||||
index 0d3a384..daaf1c4 100644
|
||||
--- a/drivers/acpi/video_detect.c
|
||||
+++ b/drivers/acpi/video_detect.c
|
||||
@@ -233,6 +233,15 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
|
||||
},
|
||||
},
|
||||
{
|
||||
+ /* https://bugzilla.redhat.com/show_bug.cgi?id=1272633 */
|
||||
+ .callback = video_detect_force_video,
|
||||
+ .ident = "Dell XPS14 L421X",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "XPS L421X"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
/* https://bugzilla.redhat.com/show_bug.cgi?id=1163574 */
|
||||
.callback = video_detect_force_video,
|
||||
.ident = "Dell XPS15 L521X",
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
From ca45663819accf038291dbe2d67ed66dc48d714c Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Backlund <tmb@mageia.org>
|
||||
Date: Sun, 29 Nov 2015 14:44:22 +0200
|
||||
Subject: [PATCH] Revert "x86/mm/mtrr: Remove kernel internal MTRR interfaces:
|
||||
unexport mtrr_add() and mtrr_del()"
|
||||
|
||||
This reverts commit 2baa891e42d84159b693eadd44f6fe1486285bdc.
|
||||
|
||||
It currently breaks nvidia304 driver.
|
||||
|
||||
Signed-of-by: Thomas Backlund <tmb@mageia.org>
|
||||
---
|
||||
Documentation/x86/mtrr.txt | 20 ++++----------------
|
||||
arch/x86/kernel/cpu/mtrr/main.c | 2 ++
|
||||
2 files changed, 6 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/Documentation/x86/mtrr.txt b/Documentation/x86/mtrr.txt
|
||||
index dc3e703..860bc3a 100644
|
||||
--- a/Documentation/x86/mtrr.txt
|
||||
+++ b/Documentation/x86/mtrr.txt
|
||||
@@ -6,22 +6,10 @@ Luis R. Rodriguez <mcgrof@do-not-panic.com> - April 9, 2015
|
||||
===============================================================================
|
||||
Phasing out MTRR use
|
||||
|
||||
-MTRR use is replaced on modern x86 hardware with PAT. Direct MTRR use by
|
||||
-drivers on Linux is now completely phased out, device drivers should use
|
||||
-arch_phys_wc_add() in combination with ioremap_wc() to make MTRR effective on
|
||||
-non-PAT systems while a no-op but equally effective on PAT enabled systems.
|
||||
-
|
||||
-Even if Linux does not use MTRRs directly, some x86 platform firmware may still
|
||||
-set up MTRRs early before booting the OS. They do this as some platform
|
||||
-firmware may still have implemented access to MTRRs which would be controlled
|
||||
-and handled by the platform firmware directly. An example of platform use of
|
||||
-MTRRs is through the use of SMI handlers, one case could be for fan control,
|
||||
-the platform code would need uncachable access to some of its fan control
|
||||
-registers. Such platform access does not need any Operating System MTRR code in
|
||||
-place other than mtrr_type_lookup() to ensure any OS specific mapping requests
|
||||
-are aligned with platform MTRR setup. If MTRRs are only set up by the platform
|
||||
-firmware code though and the OS does not make any specific MTRR mapping
|
||||
-requests mtrr_type_lookup() should always return MTRR_TYPE_INVALID.
|
||||
+MTRR use is replaced on modern x86 hardware with PAT. Over time the only type
|
||||
+of effective MTRR that is expected to be supported will be for write-combining.
|
||||
+As MTRR use is phased out device drivers should use arch_phys_wc_add() to make
|
||||
+MTRR effective on non-PAT systems while a no-op on PAT enabled systems.
|
||||
|
||||
For details refer to Documentation/x86/pat.txt.
|
||||
|
||||
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
|
||||
index f891b47..e7ed0d8 100644
|
||||
--- a/arch/x86/kernel/cpu/mtrr/main.c
|
||||
+++ b/arch/x86/kernel/cpu/mtrr/main.c
|
||||
@@ -448,6 +448,7 @@ int mtrr_add(unsigned long base, unsigned long size, unsigned int type,
|
||||
return mtrr_add_page(base >> PAGE_SHIFT, size >> PAGE_SHIFT, type,
|
||||
increment);
|
||||
}
|
||||
+EXPORT_SYMBOL(mtrr_add);
|
||||
|
||||
/**
|
||||
* mtrr_del_page - delete a memory type region
|
||||
@@ -536,6 +537,7 @@ int mtrr_del(int reg, unsigned long base, unsigned long size)
|
||||
return -EINVAL;
|
||||
return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT);
|
||||
}
|
||||
+EXPORT_SYMBOL(mtrr_del);
|
||||
|
||||
/**
|
||||
* arch_phys_wc_add - add a WC MTRR and handle errors if PAT is unavailable
|
||||
--
|
||||
2.3.10
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
From 56e74338a535cbcc2f2da08b1ea1a92920194364 Mon Sep 17 00:00:00 2001
|
||||
From: Alexandra Yates <alexandra.yates@linux.intel.com>
|
||||
Date: Tue, 3 Nov 2015 14:14:18 -0800
|
||||
Subject: [PATCH] ahci: add new Intel device IDs
|
||||
|
||||
Adding Intel codename Lewisburg platform device IDs for SATA.
|
||||
|
||||
Signed-off-by: Alexandra Yates <alexandra.yates@linux.intel.com>
|
||||
Signed-off-by: Tejun Heo <tj@kernel.org>
|
||||
---
|
||||
drivers/ata/ahci.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
|
||||
index ff343c4..ff02bb4 100644
|
||||
--- a/drivers/ata/ahci.c
|
||||
+++ b/drivers/ata/ahci.c
|
||||
@@ -314,6 +314,16 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
||||
{ PCI_VDEVICE(INTEL, 0x1f37), board_ahci_avn }, /* Avoton RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x1f3e), board_ahci_avn }, /* Avoton RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x1f3f), board_ahci_avn }, /* Avoton RAID */
|
||||
+ { PCI_VDEVICE(INTEL, 0xa182), board_ahci }, /* Lewisburg AHCI*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa202), board_ahci }, /* Lewisburg AHCI*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa184), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa204), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa186), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa206), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0x2822), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0x2826), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa18e), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa20e), board_ahci }, /* Lewisburg RAID*/
|
||||
{ PCI_VDEVICE(INTEL, 0x2823), board_ahci }, /* Wellsburg RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x2827), board_ahci }, /* Wellsburg RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x8d02), board_ahci }, /* Wellsburg AHCI */
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
From 57e5c6d95b2cde884634586d833b02f54ba1c79d Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Tue, 21 Apr 2015 09:42:21 -0700
|
||||
Subject: [PATCH 1/3] dt-bindings: Add root properties for Raspberry Pi 2
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
|
||||
index c78576b..11d3056 100644
|
||||
--- a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
|
||||
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
|
||||
@@ -26,6 +26,10 @@ Raspberry Pi Model B+
|
||||
Required root node properties:
|
||||
compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
|
||||
|
||||
+Raspberry Pi 2 Model B
|
||||
+Required root node properties:
|
||||
+compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
|
||||
+
|
||||
Raspberry Pi Compute Module
|
||||
Required root node properties:
|
||||
compatible = "raspberrypi,compute-module", "brcm,bcm2835";
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
From c1be3c1fc6178ca48750b4e66f1acb7c22b64997 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Wed, 16 Dec 2015 15:55:14 -0800
|
||||
Subject: [PATCH 2/3] ARM: bcm2835: Add a compat string for bcm2836 machine
|
||||
probe
|
||||
|
||||
Supporting the 2836 requires using the new interrupt controller, which
|
||||
we have support for.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/mach-bcm/board_bcm2835.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c
|
||||
index 0f7b9ea..834d676 100644
|
||||
--- a/arch/arm/mach-bcm/board_bcm2835.c
|
||||
+++ b/arch/arm/mach-bcm/board_bcm2835.c
|
||||
@@ -36,7 +36,12 @@ static void __init bcm2835_init(void)
|
||||
}
|
||||
|
||||
static const char * const bcm2835_compat[] = {
|
||||
+#ifdef CONFIG_ARCH_MULTI_V6
|
||||
"brcm,bcm2835",
|
||||
+#endif
|
||||
+#ifdef CONFIG_ARCH_MULTI_V7
|
||||
+ "brcm,bcm2836",
|
||||
+#endif
|
||||
NULL
|
||||
};
|
||||
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
From 5234c34e4cd7695647ccc1cabb50c3e7720dd3fb Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Tue, 24 Feb 2015 15:07:55 +0000
|
||||
Subject: [PATCH 3/3] ARM: bcm2835: Add Kconfig support for bcm2836
|
||||
|
||||
This should be a complete port of bcm2835 functionality to bcm2836
|
||||
(Raspberry Pi 2).
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/Kconfig.debug | 10 ++++++++--
|
||||
arch/arm/mach-bcm/Kconfig | 9 +++++----
|
||||
2 files changed, 13 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
|
||||
index 259c0ca..957b876 100644
|
||||
--- a/arch/arm/Kconfig.debug
|
||||
+++ b/arch/arm/Kconfig.debug
|
||||
@@ -143,7 +143,12 @@ choice
|
||||
|
||||
config DEBUG_BCM2835
|
||||
bool "Kernel low-level debugging on BCM2835 PL011 UART"
|
||||
- depends on ARCH_BCM2835
|
||||
+ depends on ARCH_BCM2835 && ARCH_MULTI_V6
|
||||
+ select DEBUG_UART_PL01X
|
||||
+
|
||||
+ config DEBUG_BCM2836
|
||||
+ bool "Kernel low-level debugging on BCM2836 PL011 UART"
|
||||
+ depends on ARCH_BCM2835 && ARCH_MULTI_V7
|
||||
select DEBUG_UART_PL01X
|
||||
|
||||
config DEBUG_BCM_5301X
|
||||
@@ -1402,6 +1407,7 @@ config DEBUG_UART_PHYS
|
||||
default 0x20064000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
|
||||
default 0x20068000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3
|
||||
default 0x20201000 if DEBUG_BCM2835
|
||||
+ default 0x3f201000 if DEBUG_BCM2836
|
||||
default 0x3e000000 if DEBUG_BCM_KONA_UART
|
||||
default 0x4000e400 if DEBUG_LL_UART_EFM32
|
||||
default 0x40081000 if DEBUG_LPC18XX_UART0
|
||||
@@ -1485,7 +1491,7 @@ config DEBUG_UART_VIRT
|
||||
default 0xf0000be0 if ARCH_EBSA110
|
||||
default 0xf0010000 if DEBUG_ASM9260_UART
|
||||
default 0xf01fb000 if DEBUG_NOMADIK_UART
|
||||
- default 0xf0201000 if DEBUG_BCM2835
|
||||
+ default 0xf0201000 if DEBUG_BCM2835 || DEBUG_BCM2836
|
||||
default 0xf1000300 if DEBUG_BCM_5301X
|
||||
default 0xf1002000 if DEBUG_MT8127_UART0
|
||||
default 0xf1006000 if DEBUG_MT6589_UART0
|
||||
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
|
||||
index 8c53c55..3b2acf4 100644
|
||||
--- a/arch/arm/mach-bcm/Kconfig
|
||||
+++ b/arch/arm/mach-bcm/Kconfig
|
||||
@@ -122,17 +122,18 @@ config ARCH_BCM_MOBILE_SMP
|
||||
comment "Other Architectures"
|
||||
|
||||
config ARCH_BCM2835
|
||||
- bool "Broadcom BCM2835 family" if ARCH_MULTI_V6
|
||||
+ bool "Broadcom BCM2835 family" if ARCH_MULTI_V6 || ARCH_MULTI_V7
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
select ARM_AMBA
|
||||
- select ARM_ERRATA_411920
|
||||
+ select ARM_ERRATA_411920 if ARCH_MULTI_V6
|
||||
select ARM_TIMER_SP804
|
||||
+ select HAVE_ARM_ARCH_TIMER if ARCH_MULTI_V7
|
||||
select CLKSRC_OF
|
||||
select PINCTRL
|
||||
select PINCTRL_BCM2835
|
||||
help
|
||||
- This enables support for the Broadcom BCM2835 SoC. This SoC is
|
||||
- used in the Raspberry Pi and Roku 2 devices.
|
||||
+ This enables support for the Broadcom BCM2835 and BCM2836 SoCs.
|
||||
+ This SoC is used in the Raspberry Pi and Roku 2 devices.
|
||||
|
||||
config ARCH_BCM_63XX
|
||||
bool "Broadcom BCM63xx DSL SoC" if ARCH_MULTI_V7
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
From 60d56333e869be6ad6926cdba3ba974512b2183b Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Tue, 1 Dec 2015 16:49:12 -0800
|
||||
Subject: [PATCH 1/3] ARM: bcm2835: Define two new packets from the latest
|
||||
firmware.
|
||||
|
||||
These packets give us direct access to the firmware's power management
|
||||
code, as opposed to GET/SET_POWER_STATE packets that only had a couple
|
||||
of domains implemented.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
Reviewed-by: Kevin Hilman <khilman@linaro.org>
|
||||
---
|
||||
include/soc/bcm2835/raspberrypi-firmware.h | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h
|
||||
index c07d74a..3fb3571 100644
|
||||
--- a/include/soc/bcm2835/raspberrypi-firmware.h
|
||||
+++ b/include/soc/bcm2835/raspberrypi-firmware.h
|
||||
@@ -72,10 +72,12 @@ enum rpi_firmware_property_tag {
|
||||
RPI_FIRMWARE_SET_ENABLE_QPU = 0x00030012,
|
||||
RPI_FIRMWARE_GET_DISPMANX_RESOURCE_MEM_HANDLE = 0x00030014,
|
||||
RPI_FIRMWARE_GET_EDID_BLOCK = 0x00030020,
|
||||
+ RPI_FIRMWARE_GET_DOMAIN_STATE = 0x00030030,
|
||||
RPI_FIRMWARE_SET_CLOCK_STATE = 0x00038001,
|
||||
RPI_FIRMWARE_SET_CLOCK_RATE = 0x00038002,
|
||||
RPI_FIRMWARE_SET_VOLTAGE = 0x00038003,
|
||||
RPI_FIRMWARE_SET_TURBO = 0x00038009,
|
||||
+ RPI_FIRMWARE_SET_DOMAIN_STATE = 0x00038030,
|
||||
|
||||
/* Dispmanx TAGS */
|
||||
RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001,
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
From 4c8b338f9ae38dee9c77bda023babc7f7543f52c Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Aring <alex.aring@gmail.com>
|
||||
Date: Wed, 16 Dec 2015 16:26:48 -0800
|
||||
Subject: [PATCH 2/3] dt-bindings: add rpi power domain driver bindings
|
||||
|
||||
This patch adds devicetree tree bindings for the Raspberry Pi power
|
||||
domain driver.
|
||||
|
||||
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Reviewed-by: Kevin Hilman <khilman@linaro.org>
|
||||
---
|
||||
.../bindings/soc/bcm/raspberrypi,bcm2835-power.txt | 47 ++++++++++++++++++++++
|
||||
1 file changed, 47 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/soc/bcm/raspberrypi,bcm2835-power.txt
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/soc/bcm/raspberrypi,bcm2835-power.txt b/Documentation/devicetree/bindings/soc/bcm/raspberrypi,bcm2835-power.txt
|
||||
new file mode 100644
|
||||
index 0000000..30942cf
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/soc/bcm/raspberrypi,bcm2835-power.txt
|
||||
@@ -0,0 +1,47 @@
|
||||
+Raspberry Pi power domain driver
|
||||
+
|
||||
+Required properties:
|
||||
+
|
||||
+- compatible: Should be "raspberrypi,bcm2835-power".
|
||||
+- firmware: Reference to the RPi firmware device node.
|
||||
+- #power-domain-cells: Should be <1>, we providing multiple power domains.
|
||||
+
|
||||
+The valid defines for power domain are:
|
||||
+
|
||||
+ RPI_POWER_DOMAIN_I2C0
|
||||
+ RPI_POWER_DOMAIN_I2C1
|
||||
+ RPI_POWER_DOMAIN_I2C2
|
||||
+ RPI_POWER_DOMAIN_VIDEO_SCALER
|
||||
+ RPI_POWER_DOMAIN_VPU1
|
||||
+ RPI_POWER_DOMAIN_HDMI
|
||||
+ RPI_POWER_DOMAIN_USB
|
||||
+ RPI_POWER_DOMAIN_VEC
|
||||
+ RPI_POWER_DOMAIN_JPEG
|
||||
+ RPI_POWER_DOMAIN_H264
|
||||
+ RPI_POWER_DOMAIN_V3D
|
||||
+ RPI_POWER_DOMAIN_ISP
|
||||
+ RPI_POWER_DOMAIN_UNICAM0
|
||||
+ RPI_POWER_DOMAIN_UNICAM1
|
||||
+ RPI_POWER_DOMAIN_CCP2RX
|
||||
+ RPI_POWER_DOMAIN_CSI2
|
||||
+ RPI_POWER_DOMAIN_CPI
|
||||
+ RPI_POWER_DOMAIN_DSI0
|
||||
+ RPI_POWER_DOMAIN_DSI1
|
||||
+ RPI_POWER_DOMAIN_TRANSPOSER
|
||||
+ RPI_POWER_DOMAIN_CCP2TX
|
||||
+ RPI_POWER_DOMAIN_CDP
|
||||
+ RPI_POWER_DOMAIN_ARM
|
||||
+
|
||||
+Example:
|
||||
+
|
||||
+power: power {
|
||||
+ compatible = "raspberrypi,bcm2835-power";
|
||||
+ firmware = <&firmware>;
|
||||
+ #power-domain-cells = <1>;
|
||||
+};
|
||||
+
|
||||
+Example for using power domain:
|
||||
+
|
||||
+&usb {
|
||||
+ power-domains = <&power RPI_POWER_DOMAIN_USB>;
|
||||
+};
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+379
@@ -0,0 +1,379 @@
|
||||
From a09cd356586d33f64cbe64ee4f5c1a7c4a6abee5 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Aring <alex.aring@gmail.com>
|
||||
Date: Wed, 16 Dec 2015 16:26:47 -0800
|
||||
Subject: [PATCH 3/3] ARM: bcm2835: add rpi power domain driver
|
||||
|
||||
This patch adds support for several power domains on Raspberry Pi,
|
||||
including USB (so it can be enabled even if the bootloader didn't do
|
||||
it), and graphics.
|
||||
|
||||
This patch is the combined work of Eric Anholt (who wrote USB support
|
||||
inside of the Raspberry Pi firmware driver, and wrote the non-USB
|
||||
domain support) and Alexander Aring (who separated the original USB
|
||||
work out from the firmware driver).
|
||||
|
||||
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Reviewed-by: Kevin Hilman <khilman@linaro.org>
|
||||
---
|
||||
drivers/soc/Kconfig | 1 +
|
||||
drivers/soc/Makefile | 1 +
|
||||
drivers/soc/bcm/Kconfig | 9 +
|
||||
drivers/soc/bcm/Makefile | 1 +
|
||||
drivers/soc/bcm/raspberrypi-power.c | 247 ++++++++++++++++++++++++++
|
||||
include/dt-bindings/power/raspberrypi-power.h | 41 +++++
|
||||
6 files changed, 300 insertions(+)
|
||||
create mode 100644 drivers/soc/bcm/Kconfig
|
||||
create mode 100644 drivers/soc/bcm/Makefile
|
||||
create mode 100644 drivers/soc/bcm/raspberrypi-power.c
|
||||
create mode 100644 include/dt-bindings/power/raspberrypi-power.h
|
||||
|
||||
diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
|
||||
index 4e853ed..8441426 100644
|
||||
--- a/drivers/soc/Kconfig
|
||||
+++ b/drivers/soc/Kconfig
|
||||
@@ -1,5 +1,6 @@
|
||||
menu "SOC (System On Chip) specific Drivers"
|
||||
|
||||
+source "drivers/soc/bcm/Kconfig"
|
||||
source "drivers/soc/brcmstb/Kconfig"
|
||||
source "drivers/soc/mediatek/Kconfig"
|
||||
source "drivers/soc/qcom/Kconfig"
|
||||
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
|
||||
index f2ba2e9..f3f955c 100644
|
||||
--- a/drivers/soc/Makefile
|
||||
+++ b/drivers/soc/Makefile
|
||||
@@ -2,6 +2,7 @@
|
||||
# Makefile for the Linux Kernel SOC specific device drivers.
|
||||
#
|
||||
|
||||
+obj-y += bcm/
|
||||
obj-$(CONFIG_SOC_BRCMSTB) += brcmstb/
|
||||
obj-$(CONFIG_MACH_DOVE) += dove/
|
||||
obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/
|
||||
diff --git a/drivers/soc/bcm/Kconfig b/drivers/soc/bcm/Kconfig
|
||||
new file mode 100644
|
||||
index 0000000..5ba1827
|
||||
--- /dev/null
|
||||
+++ b/drivers/soc/bcm/Kconfig
|
||||
@@ -0,0 +1,9 @@
|
||||
+config RASPBERRYPI_POWER
|
||||
+ bool "Raspberry Pi power domain driver"
|
||||
+ depends on ARCH_BCM2835 || COMPILE_TEST
|
||||
+ depends on RASPBERRYPI_FIRMWARE
|
||||
+ select PM_GENERIC_DOMAINS if PM
|
||||
+ select PM_GENERIC_DOMAINS_OF if PM
|
||||
+ help
|
||||
+ This enables support for the RPi power domains which can be enabled
|
||||
+ or disabled via the RPi firmware.
|
||||
diff --git a/drivers/soc/bcm/Makefile b/drivers/soc/bcm/Makefile
|
||||
new file mode 100644
|
||||
index 0000000..63aa3eb
|
||||
--- /dev/null
|
||||
+++ b/drivers/soc/bcm/Makefile
|
||||
@@ -0,0 +1 @@
|
||||
+obj-$(CONFIG_RASPBERRYPI_POWER) += raspberrypi-power.o
|
||||
diff --git a/drivers/soc/bcm/raspberrypi-power.c b/drivers/soc/bcm/raspberrypi-power.c
|
||||
new file mode 100644
|
||||
index 0000000..fe96a8b
|
||||
--- /dev/null
|
||||
+++ b/drivers/soc/bcm/raspberrypi-power.c
|
||||
@@ -0,0 +1,247 @@
|
||||
+/* (C) 2015 Pengutronix, Alexander Aring <aar@pengutronix.de>
|
||||
+ *
|
||||
+ * 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.
|
||||
+ *
|
||||
+ * Authors:
|
||||
+ * Alexander Aring <aar@pengutronix.de>
|
||||
+ * Eric Anholt <eric@anholt.net>
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of_platform.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/pm_domain.h>
|
||||
+#include <dt-bindings/power/raspberrypi-power.h>
|
||||
+#include <soc/bcm2835/raspberrypi-firmware.h>
|
||||
+
|
||||
+/*
|
||||
+ * Firmware indices for the old power domains interface. Only a few
|
||||
+ * of them were actually implemented.
|
||||
+ */
|
||||
+#define RPI_OLD_POWER_DOMAIN_USB 3
|
||||
+#define RPI_OLD_POWER_DOMAIN_V3D 10
|
||||
+
|
||||
+struct rpi_power_domain {
|
||||
+ u32 domain;
|
||||
+ bool enabled;
|
||||
+ bool old_interface;
|
||||
+ struct generic_pm_domain base;
|
||||
+ struct rpi_firmware *fw;
|
||||
+};
|
||||
+
|
||||
+struct rpi_power_domains {
|
||||
+ bool has_new_interface;
|
||||
+ struct genpd_onecell_data xlate;
|
||||
+ struct rpi_firmware *fw;
|
||||
+ struct rpi_power_domain domains[RPI_POWER_DOMAIN_COUNT];
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ * Packet definition used by RPI_FIRMWARE_SET_POWER_STATE and
|
||||
+ * RPI_FIRMWARE_SET_DOMAIN_STATE
|
||||
+ */
|
||||
+struct rpi_power_domain_packet {
|
||||
+ u32 domain;
|
||||
+ u32 on;
|
||||
+} __packet;
|
||||
+
|
||||
+/*
|
||||
+ * Asks the firmware to enable or disable power on a specific power
|
||||
+ * domain.
|
||||
+ */
|
||||
+static int rpi_firmware_set_power(struct rpi_power_domain *rpi_domain, bool on)
|
||||
+{
|
||||
+ struct rpi_power_domain_packet packet;
|
||||
+
|
||||
+ packet.domain = rpi_domain->domain;
|
||||
+ packet.on = on;
|
||||
+ return rpi_firmware_property(rpi_domain->fw,
|
||||
+ rpi_domain->old_interface ?
|
||||
+ RPI_FIRMWARE_SET_POWER_STATE :
|
||||
+ RPI_FIRMWARE_SET_DOMAIN_STATE,
|
||||
+ &packet, sizeof(packet));
|
||||
+}
|
||||
+
|
||||
+static int rpi_domain_off(struct generic_pm_domain *domain)
|
||||
+{
|
||||
+ struct rpi_power_domain *rpi_domain =
|
||||
+ container_of(domain, struct rpi_power_domain, base);
|
||||
+
|
||||
+ return rpi_firmware_set_power(rpi_domain, false);
|
||||
+}
|
||||
+
|
||||
+static int rpi_domain_on(struct generic_pm_domain *domain)
|
||||
+{
|
||||
+ struct rpi_power_domain *rpi_domain =
|
||||
+ container_of(domain, struct rpi_power_domain, base);
|
||||
+
|
||||
+ return rpi_firmware_set_power(rpi_domain, true);
|
||||
+}
|
||||
+
|
||||
+static void rpi_common_init_power_domain(struct rpi_power_domains *rpi_domains,
|
||||
+ int xlate_index, const char *name)
|
||||
+{
|
||||
+ struct rpi_power_domain *dom = &rpi_domains->domains[xlate_index];
|
||||
+
|
||||
+ dom->fw = rpi_domains->fw;
|
||||
+
|
||||
+ dom->base.name = name;
|
||||
+ dom->base.power_on = rpi_domain_on;
|
||||
+ dom->base.power_off = rpi_domain_off;
|
||||
+
|
||||
+ /*
|
||||
+ * Treat all power domains as off at boot.
|
||||
+ *
|
||||
+ * The firmware itself may be keeping some domains on, but
|
||||
+ * from Linux's perspective all we control is the refcounts
|
||||
+ * that we give to the firmware, and we can't ask the firmware
|
||||
+ * to turn off something that we haven't ourselves turned on.
|
||||
+ */
|
||||
+ pm_genpd_init(&dom->base, NULL, true);
|
||||
+
|
||||
+ rpi_domains->xlate.domains[xlate_index] = &dom->base;
|
||||
+}
|
||||
+
|
||||
+static void rpi_init_power_domain(struct rpi_power_domains *rpi_domains,
|
||||
+ int xlate_index, const char *name)
|
||||
+{
|
||||
+ struct rpi_power_domain *dom = &rpi_domains->domains[xlate_index];
|
||||
+
|
||||
+ if (!rpi_domains->has_new_interface)
|
||||
+ return;
|
||||
+
|
||||
+ /* The DT binding index is the firmware's domain index minus one. */
|
||||
+ dom->domain = xlate_index + 1;
|
||||
+
|
||||
+ rpi_common_init_power_domain(rpi_domains, xlate_index, name);
|
||||
+}
|
||||
+
|
||||
+static void rpi_init_old_power_domain(struct rpi_power_domains *rpi_domains,
|
||||
+ int xlate_index, int domain,
|
||||
+ const char *name)
|
||||
+{
|
||||
+ struct rpi_power_domain *dom = &rpi_domains->domains[xlate_index];
|
||||
+
|
||||
+ dom->old_interface = true;
|
||||
+ dom->domain = domain;
|
||||
+
|
||||
+ rpi_common_init_power_domain(rpi_domains, xlate_index, name);
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Detects whether the firmware supports the new power domains interface.
|
||||
+ *
|
||||
+ * The firmware doesn't actually return an error on an unknown tag,
|
||||
+ * and just skips over it, so we do the detection by putting an
|
||||
+ * unexpected value in the return field and checking if it was
|
||||
+ * unchanged.
|
||||
+ */
|
||||
+static bool
|
||||
+rpi_has_new_domain_support(struct rpi_power_domains *rpi_domains)
|
||||
+{
|
||||
+ struct rpi_power_domain_packet packet;
|
||||
+ int ret;
|
||||
+
|
||||
+ packet.domain = RPI_POWER_DOMAIN_ARM;
|
||||
+ packet.on = ~0;
|
||||
+
|
||||
+ ret = rpi_firmware_property(rpi_domains->fw,
|
||||
+ RPI_FIRMWARE_GET_DOMAIN_STATE,
|
||||
+ &packet, sizeof(packet));
|
||||
+
|
||||
+ return ret == 0 && packet.on != ~0;
|
||||
+}
|
||||
+
|
||||
+static int rpi_power_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct device_node *fw_np;
|
||||
+ struct device *dev = &pdev->dev;
|
||||
+ struct rpi_power_domains *rpi_domains;
|
||||
+
|
||||
+ rpi_domains = devm_kzalloc(dev, sizeof(*rpi_domains), GFP_KERNEL);
|
||||
+ if (!rpi_domains)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ rpi_domains->xlate.domains =
|
||||
+ devm_kzalloc(dev, sizeof(*rpi_domains->xlate.domains) *
|
||||
+ RPI_POWER_DOMAIN_COUNT, GFP_KERNEL);
|
||||
+ if (!rpi_domains->xlate.domains)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ rpi_domains->xlate.num_domains = RPI_POWER_DOMAIN_COUNT;
|
||||
+
|
||||
+ fw_np = of_parse_phandle(pdev->dev.of_node, "firmware", 0);
|
||||
+ if (!fw_np) {
|
||||
+ dev_err(&pdev->dev, "no firmware node\n");
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+
|
||||
+ rpi_domains->fw = rpi_firmware_get(fw_np);
|
||||
+ of_node_put(fw_np);
|
||||
+ if (!rpi_domains->fw)
|
||||
+ return -EPROBE_DEFER;
|
||||
+
|
||||
+ rpi_domains->has_new_interface =
|
||||
+ rpi_has_new_domain_support(rpi_domains);
|
||||
+
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_I2C0, "I2C0");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_I2C1, "I2C1");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_I2C2, "I2C2");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_VIDEO_SCALER,
|
||||
+ "VIDEO_SCALER");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_VPU1, "VPU1");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_HDMI, "HDMI");
|
||||
+
|
||||
+ /*
|
||||
+ * Use the old firmware interface for USB power, so that we
|
||||
+ * can turn it on even if the firmware hasn't been updated.
|
||||
+ */
|
||||
+ rpi_init_old_power_domain(rpi_domains, RPI_POWER_DOMAIN_USB,
|
||||
+ RPI_OLD_POWER_DOMAIN_USB, "USB");
|
||||
+
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_VEC, "VEC");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_JPEG, "JPEG");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_H264, "H264");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_V3D, "V3D");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_ISP, "ISP");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_UNICAM0, "UNICAM0");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_UNICAM1, "UNICAM1");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_CCP2RX, "CCP2RX");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_CSI2, "CSI2");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_CPI, "CPI");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_DSI0, "DSI0");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_DSI1, "DSI1");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_TRANSPOSER,
|
||||
+ "TRANSPOSER");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_CCP2TX, "CCP2TX");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_CDP, "CDP");
|
||||
+ rpi_init_power_domain(rpi_domains, RPI_POWER_DOMAIN_ARM, "ARM");
|
||||
+
|
||||
+ of_genpd_add_provider_onecell(dev->of_node, &rpi_domains->xlate);
|
||||
+
|
||||
+ platform_set_drvdata(pdev, rpi_domains);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id rpi_power_of_match[] = {
|
||||
+ { .compatible = "raspberrypi,bcm2835-power", },
|
||||
+ {},
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, rpi_power_of_match);
|
||||
+
|
||||
+static struct platform_driver rpi_power_driver = {
|
||||
+ .driver = {
|
||||
+ .name = "raspberrypi-power",
|
||||
+ .of_match_table = rpi_power_of_match,
|
||||
+ },
|
||||
+ .probe = rpi_power_probe,
|
||||
+};
|
||||
+builtin_platform_driver(rpi_power_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Alexander Aring <aar@pengutronix.de>");
|
||||
+MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
|
||||
+MODULE_DESCRIPTION("Raspberry Pi power domain driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
diff --git a/include/dt-bindings/power/raspberrypi-power.h b/include/dt-bindings/power/raspberrypi-power.h
|
||||
new file mode 100644
|
||||
index 0000000..b3ff8e0
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/power/raspberrypi-power.h
|
||||
@@ -0,0 +1,41 @@
|
||||
+/*
|
||||
+ * Copyright © 2015 Broadcom
|
||||
+ *
|
||||
+ * 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.
|
||||
+ */
|
||||
+
|
||||
+#ifndef _DT_BINDINGS_ARM_BCM2835_RPI_POWER_H
|
||||
+#define _DT_BINDINGS_ARM_BCM2835_RPI_POWER_H
|
||||
+
|
||||
+/* These power domain indices are the firmware interface's indices
|
||||
+ * minus one.
|
||||
+ */
|
||||
+#define RPI_POWER_DOMAIN_I2C0 0
|
||||
+#define RPI_POWER_DOMAIN_I2C1 1
|
||||
+#define RPI_POWER_DOMAIN_I2C2 2
|
||||
+#define RPI_POWER_DOMAIN_VIDEO_SCALER 3
|
||||
+#define RPI_POWER_DOMAIN_VPU1 4
|
||||
+#define RPI_POWER_DOMAIN_HDMI 5
|
||||
+#define RPI_POWER_DOMAIN_USB 6
|
||||
+#define RPI_POWER_DOMAIN_VEC 7
|
||||
+#define RPI_POWER_DOMAIN_JPEG 8
|
||||
+#define RPI_POWER_DOMAIN_H264 9
|
||||
+#define RPI_POWER_DOMAIN_V3D 10
|
||||
+#define RPI_POWER_DOMAIN_ISP 11
|
||||
+#define RPI_POWER_DOMAIN_UNICAM0 12
|
||||
+#define RPI_POWER_DOMAIN_UNICAM1 13
|
||||
+#define RPI_POWER_DOMAIN_CCP2RX 14
|
||||
+#define RPI_POWER_DOMAIN_CSI2 15
|
||||
+#define RPI_POWER_DOMAIN_CPI 16
|
||||
+#define RPI_POWER_DOMAIN_DSI0 17
|
||||
+#define RPI_POWER_DOMAIN_DSI1 18
|
||||
+#define RPI_POWER_DOMAIN_TRANSPOSER 19
|
||||
+#define RPI_POWER_DOMAIN_CCP2TX 20
|
||||
+#define RPI_POWER_DOMAIN_CDP 21
|
||||
+#define RPI_POWER_DOMAIN_ARM 22
|
||||
+
|
||||
+#define RPI_POWER_DOMAIN_COUNT 23
|
||||
+
|
||||
+#endif /* _DT_BINDINGS_ARM_BCM2835_RPI_POWER_H */
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+443
@@ -0,0 +1,443 @@
|
||||
From 482626063d446eac1809e025a79ad0a7d45bc22d Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Wed, 16 Dec 2015 13:24:40 -0800
|
||||
Subject: [PATCH 1/4] ARM: bcm2835: Split the DT for peripherals from the DT
|
||||
for the CPU
|
||||
|
||||
The set of peripherals remained constant across bcm2835 (Raspberry Pi
|
||||
1) and bcm2836 (Raspberry Pi 2), but the CPU was swapped out. Split
|
||||
the files so that we can include just peripheral setup in 2836.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/boot/dts/bcm2835.dtsi | 194 +-------------------------------------
|
||||
arch/arm/boot/dts/bcm283x.dtsi | 205 +++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 206 insertions(+), 193 deletions(-)
|
||||
create mode 100644 arch/arm/boot/dts/bcm283x.dtsi
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
|
||||
index aef64de..b83b326 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm2835.dtsi
|
||||
@@ -1,206 +1,14 @@
|
||||
-#include <dt-bindings/pinctrl/bcm2835.h>
|
||||
-#include <dt-bindings/clock/bcm2835.h>
|
||||
-#include "skeleton.dtsi"
|
||||
+#include "bcm283x.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
- model = "BCM2835";
|
||||
- interrupt-parent = <&intc>;
|
||||
-
|
||||
- chosen {
|
||||
- bootargs = "earlyprintk console=ttyAMA0";
|
||||
- };
|
||||
|
||||
soc {
|
||||
- compatible = "simple-bus";
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <1>;
|
||||
ranges = <0x7e000000 0x20000000 0x02000000>;
|
||||
dma-ranges = <0x40000000 0x00000000 0x20000000>;
|
||||
|
||||
- timer@7e003000 {
|
||||
- compatible = "brcm,bcm2835-system-timer";
|
||||
- reg = <0x7e003000 0x1000>;
|
||||
- interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
|
||||
- /* This could be a reference to BCM2835_CLOCK_TIMER,
|
||||
- * but we don't have the driver using the common clock
|
||||
- * support yet.
|
||||
- */
|
||||
- clock-frequency = <1000000>;
|
||||
- };
|
||||
-
|
||||
- dma: dma@7e007000 {
|
||||
- compatible = "brcm,bcm2835-dma";
|
||||
- reg = <0x7e007000 0xf00>;
|
||||
- interrupts = <1 16>,
|
||||
- <1 17>,
|
||||
- <1 18>,
|
||||
- <1 19>,
|
||||
- <1 20>,
|
||||
- <1 21>,
|
||||
- <1 22>,
|
||||
- <1 23>,
|
||||
- <1 24>,
|
||||
- <1 25>,
|
||||
- <1 26>,
|
||||
- <1 27>,
|
||||
- <1 28>;
|
||||
-
|
||||
- #dma-cells = <1>;
|
||||
- brcm,dma-channel-mask = <0x7f35>;
|
||||
- };
|
||||
-
|
||||
- intc: interrupt-controller@7e00b200 {
|
||||
- compatible = "brcm,bcm2835-armctrl-ic";
|
||||
- reg = <0x7e00b200 0x200>;
|
||||
- interrupt-controller;
|
||||
- #interrupt-cells = <2>;
|
||||
- };
|
||||
-
|
||||
- watchdog@7e100000 {
|
||||
- compatible = "brcm,bcm2835-pm-wdt";
|
||||
- reg = <0x7e100000 0x28>;
|
||||
- };
|
||||
-
|
||||
- clocks: cprman@7e101000 {
|
||||
- compatible = "brcm,bcm2835-cprman";
|
||||
- #clock-cells = <1>;
|
||||
- reg = <0x7e101000 0x2000>;
|
||||
-
|
||||
- /* CPRMAN derives everything from the platform's
|
||||
- * oscillator.
|
||||
- */
|
||||
- clocks = <&clk_osc>;
|
||||
- };
|
||||
-
|
||||
- rng@7e104000 {
|
||||
- compatible = "brcm,bcm2835-rng";
|
||||
- reg = <0x7e104000 0x10>;
|
||||
- };
|
||||
-
|
||||
- mailbox: mailbox@7e00b800 {
|
||||
- compatible = "brcm,bcm2835-mbox";
|
||||
- reg = <0x7e00b880 0x40>;
|
||||
- interrupts = <0 1>;
|
||||
- #mbox-cells = <0>;
|
||||
- };
|
||||
-
|
||||
- gpio: gpio@7e200000 {
|
||||
- compatible = "brcm,bcm2835-gpio";
|
||||
- reg = <0x7e200000 0xb4>;
|
||||
- /*
|
||||
- * The GPIO IP block is designed for 3 banks of GPIOs.
|
||||
- * Each bank has a GPIO interrupt for itself.
|
||||
- * There is an overall "any bank" interrupt.
|
||||
- * In order, these are GIC interrupts 17, 18, 19, 20.
|
||||
- * Since the BCM2835 only has 2 banks, the 2nd bank
|
||||
- * interrupt output appears to be mirrored onto the
|
||||
- * 3rd bank's interrupt signal.
|
||||
- * So, a bank0 interrupt shows up on 17, 20, and
|
||||
- * a bank1 interrupt shows up on 18, 19, 20!
|
||||
- */
|
||||
- interrupts = <2 17>, <2 18>, <2 19>, <2 20>;
|
||||
-
|
||||
- gpio-controller;
|
||||
- #gpio-cells = <2>;
|
||||
-
|
||||
- interrupt-controller;
|
||||
- #interrupt-cells = <2>;
|
||||
- };
|
||||
-
|
||||
- uart0: uart@7e201000 {
|
||||
- compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
|
||||
- reg = <0x7e201000 0x1000>;
|
||||
- interrupts = <2 25>;
|
||||
- clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||
- <&clocks BCM2835_CLOCK_VPU>;
|
||||
- clock-names = "uartclk", "apb_pclk";
|
||||
- arm,primecell-periphid = <0x00241011>;
|
||||
- };
|
||||
-
|
||||
- i2s: i2s@7e203000 {
|
||||
- compatible = "brcm,bcm2835-i2s";
|
||||
- reg = <0x7e203000 0x20>,
|
||||
- <0x7e101098 0x02>;
|
||||
-
|
||||
- dmas = <&dma 2>,
|
||||
- <&dma 3>;
|
||||
- dma-names = "tx", "rx";
|
||||
- status = "disabled";
|
||||
- };
|
||||
-
|
||||
- spi: spi@7e204000 {
|
||||
- compatible = "brcm,bcm2835-spi";
|
||||
- reg = <0x7e204000 0x1000>;
|
||||
- interrupts = <2 22>;
|
||||
- clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- status = "disabled";
|
||||
- };
|
||||
-
|
||||
- i2c0: i2c@7e205000 {
|
||||
- compatible = "brcm,bcm2835-i2c";
|
||||
- reg = <0x7e205000 0x1000>;
|
||||
- interrupts = <2 21>;
|
||||
- clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- status = "disabled";
|
||||
- };
|
||||
-
|
||||
- sdhci: sdhci@7e300000 {
|
||||
- compatible = "brcm,bcm2835-sdhci";
|
||||
- reg = <0x7e300000 0x100>;
|
||||
- interrupts = <2 30>;
|
||||
- clocks = <&clocks BCM2835_CLOCK_EMMC>;
|
||||
- status = "disabled";
|
||||
- };
|
||||
-
|
||||
- i2c1: i2c@7e804000 {
|
||||
- compatible = "brcm,bcm2835-i2c";
|
||||
- reg = <0x7e804000 0x1000>;
|
||||
- interrupts = <2 21>;
|
||||
- clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- status = "disabled";
|
||||
- };
|
||||
-
|
||||
- i2c2: i2c@7e805000 {
|
||||
- compatible = "brcm,bcm2835-i2c";
|
||||
- reg = <0x7e805000 0x1000>;
|
||||
- interrupts = <2 21>;
|
||||
- clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- status = "disabled";
|
||||
- };
|
||||
-
|
||||
- usb@7e980000 {
|
||||
- compatible = "brcm,bcm2835-usb";
|
||||
- reg = <0x7e980000 0x10000>;
|
||||
- interrupts = <1 9>;
|
||||
- };
|
||||
-
|
||||
arm-pmu {
|
||||
compatible = "arm,arm1176-pmu";
|
||||
};
|
||||
};
|
||||
-
|
||||
- clocks {
|
||||
- compatible = "simple-bus";
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
-
|
||||
- /* The oscillator is the root of the clock tree. */
|
||||
- clk_osc: clock@3 {
|
||||
- compatible = "fixed-clock";
|
||||
- reg = <3>;
|
||||
- #clock-cells = <0>;
|
||||
- clock-output-names = "osc";
|
||||
- clock-frequency = <19200000>;
|
||||
- };
|
||||
-
|
||||
- };
|
||||
};
|
||||
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
|
||||
new file mode 100644
|
||||
index 0000000..8a7e727
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm283x.dtsi
|
||||
@@ -0,0 +1,205 @@
|
||||
+#include <dt-bindings/pinctrl/bcm2835.h>
|
||||
+#include <dt-bindings/clock/bcm2835.h>
|
||||
+#include "skeleton.dtsi"
|
||||
+
|
||||
+/* This include file covers the common peripherals and configuration between
|
||||
+ * bcm2835 and bcm2836 implementations, leaving the CPU configuration to
|
||||
+ * bcm2835.dtsi and bcm2836.dtsi.
|
||||
+ */
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2835";
|
||||
+ model = "BCM2835";
|
||||
+ interrupt-parent = <&intc>;
|
||||
+
|
||||
+ chosen {
|
||||
+ bootargs = "earlyprintk console=ttyAMA0";
|
||||
+ };
|
||||
+
|
||||
+ soc {
|
||||
+ compatible = "simple-bus";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ timer@7e003000 {
|
||||
+ compatible = "brcm,bcm2835-system-timer";
|
||||
+ reg = <0x7e003000 0x1000>;
|
||||
+ interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
|
||||
+ /* This could be a reference to BCM2835_CLOCK_TIMER,
|
||||
+ * but we don't have the driver using the common clock
|
||||
+ * support yet.
|
||||
+ */
|
||||
+ clock-frequency = <1000000>;
|
||||
+ };
|
||||
+
|
||||
+ dma: dma@7e007000 {
|
||||
+ compatible = "brcm,bcm2835-dma";
|
||||
+ reg = <0x7e007000 0xf00>;
|
||||
+ interrupts = <1 16>,
|
||||
+ <1 17>,
|
||||
+ <1 18>,
|
||||
+ <1 19>,
|
||||
+ <1 20>,
|
||||
+ <1 21>,
|
||||
+ <1 22>,
|
||||
+ <1 23>,
|
||||
+ <1 24>,
|
||||
+ <1 25>,
|
||||
+ <1 26>,
|
||||
+ <1 27>,
|
||||
+ <1 28>;
|
||||
+
|
||||
+ #dma-cells = <1>;
|
||||
+ brcm,dma-channel-mask = <0x7f35>;
|
||||
+ };
|
||||
+
|
||||
+ intc: interrupt-controller@7e00b200 {
|
||||
+ compatible = "brcm,bcm2835-armctrl-ic";
|
||||
+ reg = <0x7e00b200 0x200>;
|
||||
+ interrupt-controller;
|
||||
+ #interrupt-cells = <2>;
|
||||
+ };
|
||||
+
|
||||
+ watchdog@7e100000 {
|
||||
+ compatible = "brcm,bcm2835-pm-wdt";
|
||||
+ reg = <0x7e100000 0x28>;
|
||||
+ };
|
||||
+
|
||||
+ clocks: cprman@7e101000 {
|
||||
+ compatible = "brcm,bcm2835-cprman";
|
||||
+ #clock-cells = <1>;
|
||||
+ reg = <0x7e101000 0x2000>;
|
||||
+
|
||||
+ /* CPRMAN derives everything from the platform's
|
||||
+ * oscillator.
|
||||
+ */
|
||||
+ clocks = <&clk_osc>;
|
||||
+ };
|
||||
+
|
||||
+ rng@7e104000 {
|
||||
+ compatible = "brcm,bcm2835-rng";
|
||||
+ reg = <0x7e104000 0x10>;
|
||||
+ };
|
||||
+
|
||||
+ mailbox: mailbox@7e00b800 {
|
||||
+ compatible = "brcm,bcm2835-mbox";
|
||||
+ reg = <0x7e00b880 0x40>;
|
||||
+ interrupts = <0 1>;
|
||||
+ #mbox-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
+ gpio: gpio@7e200000 {
|
||||
+ compatible = "brcm,bcm2835-gpio";
|
||||
+ reg = <0x7e200000 0xb4>;
|
||||
+ /*
|
||||
+ * The GPIO IP block is designed for 3 banks of GPIOs.
|
||||
+ * Each bank has a GPIO interrupt for itself.
|
||||
+ * There is an overall "any bank" interrupt.
|
||||
+ * In order, these are GIC interrupts 17, 18, 19, 20.
|
||||
+ * Since the BCM2835 only has 2 banks, the 2nd bank
|
||||
+ * interrupt output appears to be mirrored onto the
|
||||
+ * 3rd bank's interrupt signal.
|
||||
+ * So, a bank0 interrupt shows up on 17, 20, and
|
||||
+ * a bank1 interrupt shows up on 18, 19, 20!
|
||||
+ */
|
||||
+ interrupts = <2 17>, <2 18>, <2 19>, <2 20>;
|
||||
+
|
||||
+ gpio-controller;
|
||||
+ #gpio-cells = <2>;
|
||||
+
|
||||
+ interrupt-controller;
|
||||
+ #interrupt-cells = <2>;
|
||||
+ };
|
||||
+
|
||||
+ uart0: uart@7e201000 {
|
||||
+ compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
|
||||
+ reg = <0x7e201000 0x1000>;
|
||||
+ interrupts = <2 25>;
|
||||
+ clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||
+ <&clocks BCM2835_CLOCK_VPU>;
|
||||
+ clock-names = "uartclk", "apb_pclk";
|
||||
+ arm,primecell-periphid = <0x00241011>;
|
||||
+ };
|
||||
+
|
||||
+ i2s: i2s@7e203000 {
|
||||
+ compatible = "brcm,bcm2835-i2s";
|
||||
+ reg = <0x7e203000 0x20>,
|
||||
+ <0x7e101098 0x02>;
|
||||
+
|
||||
+ dmas = <&dma 2>,
|
||||
+ <&dma 3>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ spi: spi@7e204000 {
|
||||
+ compatible = "brcm,bcm2835-spi";
|
||||
+ reg = <0x7e204000 0x1000>;
|
||||
+ interrupts = <2 22>;
|
||||
+ clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ i2c0: i2c@7e205000 {
|
||||
+ compatible = "brcm,bcm2835-i2c";
|
||||
+ reg = <0x7e205000 0x1000>;
|
||||
+ interrupts = <2 21>;
|
||||
+ clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ sdhci: sdhci@7e300000 {
|
||||
+ compatible = "brcm,bcm2835-sdhci";
|
||||
+ reg = <0x7e300000 0x100>;
|
||||
+ interrupts = <2 30>;
|
||||
+ clocks = <&clocks BCM2835_CLOCK_EMMC>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ i2c1: i2c@7e804000 {
|
||||
+ compatible = "brcm,bcm2835-i2c";
|
||||
+ reg = <0x7e804000 0x1000>;
|
||||
+ interrupts = <2 21>;
|
||||
+ clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ i2c2: i2c@7e805000 {
|
||||
+ compatible = "brcm,bcm2835-i2c";
|
||||
+ reg = <0x7e805000 0x1000>;
|
||||
+ interrupts = <2 21>;
|
||||
+ clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ usb@7e980000 {
|
||||
+ compatible = "brcm,bcm2835-usb";
|
||||
+ reg = <0x7e980000 0x10000>;
|
||||
+ interrupts = <1 9>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ clocks {
|
||||
+ compatible = "simple-bus";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ /* The oscillator is the root of the clock tree. */
|
||||
+ clk_osc: clock@3 {
|
||||
+ compatible = "fixed-clock";
|
||||
+ reg = <3>;
|
||||
+ #clock-cells = <0>;
|
||||
+ clock-output-names = "osc";
|
||||
+ clock-frequency = <19200000>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+};
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
From bafa68c08c33ddde3bc10d2d7e5d3b77b4a6c8ed Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Wed, 16 Dec 2015 15:55:12 -0800
|
||||
Subject: [PATCH 2/4] ARM: bcm2835: Move the CPU/peripheral include out of
|
||||
common RPi DT.
|
||||
|
||||
For Raspberry Pi 2, we want to use the same general pin assignment
|
||||
bits, but need to use bcm2836.dtsi for the CPU instead.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 1 +
|
||||
arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 1 +
|
||||
arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 1 +
|
||||
arch/arm/boot/dts/bcm2835-rpi-b.dts | 1 +
|
||||
arch/arm/boot/dts/bcm2835-rpi.dtsi | 2 --
|
||||
5 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
||||
index b2bff43..228614f 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
||||
@@ -1,4 +1,5 @@
|
||||
/dts-v1/;
|
||||
+#include "bcm2835.dtsi"
|
||||
#include "bcm2835-rpi.dtsi"
|
||||
|
||||
/ {
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
||||
index 668442b..ef54050 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
||||
@@ -1,4 +1,5 @@
|
||||
/dts-v1/;
|
||||
+#include "bcm2835.dtsi"
|
||||
#include "bcm2835-rpi.dtsi"
|
||||
|
||||
/ {
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
||||
index eab8b591..86f1f2f 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
||||
@@ -1,4 +1,5 @@
|
||||
/dts-v1/;
|
||||
+#include "bcm2835.dtsi"
|
||||
#include "bcm2835-rpi.dtsi"
|
||||
|
||||
/ {
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
||||
index ff6b2d1..4859e9d 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
||||
@@ -1,4 +1,5 @@
|
||||
/dts-v1/;
|
||||
+#include "bcm2835.dtsi"
|
||||
#include "bcm2835-rpi.dtsi"
|
||||
|
||||
/ {
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
||||
index 3572f03..3afb9fe 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
||||
@@ -1,5 +1,3 @@
|
||||
-#include "bcm2835.dtsi"
|
||||
-
|
||||
/ {
|
||||
memory {
|
||||
reg = <0 0x10000000>;
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+160
@@ -0,0 +1,160 @@
|
||||
From c33319cd945001741d1b381655c8b7310d756163 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Thu, 16 Apr 2015 15:26:45 -0700
|
||||
Subject: [PATCH 3/4] ARM: bcm2835: Add devicetree for bcm2836 and Raspberry Pi
|
||||
2 B
|
||||
|
||||
The Pi 2 B ends up like a Pi 1 B+, with the same peripherals and
|
||||
pinout, but the CPU and memory layout changed to use the 2836.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/boot/dts/Makefile | 3 +-
|
||||
arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 35 ++++++++++++++++
|
||||
arch/arm/boot/dts/bcm2836.dtsi | 78 +++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 115 insertions(+), 1 deletion(-)
|
||||
create mode 100644 arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
||||
create mode 100644 arch/arm/boot/dts/bcm2836.dtsi
|
||||
|
||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||||
index 30bbc37..54e8f6b 100644
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -60,7 +60,8 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
|
||||
bcm2835-rpi-b.dtb \
|
||||
bcm2835-rpi-b-rev2.dtb \
|
||||
bcm2835-rpi-b-plus.dtb \
|
||||
- bcm2835-rpi-a-plus.dtb
|
||||
+ bcm2835-rpi-a-plus.dtb \
|
||||
+ bcm2836-rpi-2-b.dtb
|
||||
dtb-$(CONFIG_ARCH_BCM_5301X) += \
|
||||
bcm4708-asus-rt-ac56u.dtb \
|
||||
bcm4708-asus-rt-ac68u.dtb \
|
||||
diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
||||
new file mode 100644
|
||||
index 0000000..ff94666
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
||||
@@ -0,0 +1,35 @@
|
||||
+/dts-v1/;
|
||||
+#include "bcm2836.dtsi"
|
||||
+#include "bcm2835-rpi.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
|
||||
+ model = "Raspberry Pi 2 Model B";
|
||||
+
|
||||
+ memory {
|
||||
+ reg = <0 0x40000000>;
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ act {
|
||||
+ gpios = <&gpio 47 0>;
|
||||
+ };
|
||||
+
|
||||
+ pwr {
|
||||
+ label = "PWR";
|
||||
+ gpios = <&gpio 35 0>;
|
||||
+ default-state = "keep";
|
||||
+ linux,default-trigger = "default-on";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&gpio {
|
||||
+ pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
|
||||
+
|
||||
+ /* I2S interface */
|
||||
+ i2s_alt0: i2s_alt0 {
|
||||
+ brcm,pins = <18 19 20 21>;
|
||||
+ brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
+ };
|
||||
+};
|
||||
diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
|
||||
new file mode 100644
|
||||
index 0000000..9d0651d
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm2836.dtsi
|
||||
@@ -0,0 +1,78 @@
|
||||
+#include "bcm283x.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2836";
|
||||
+
|
||||
+ soc {
|
||||
+ ranges = <0x7e000000 0x3f000000 0x1000000>,
|
||||
+ <0x40000000 0x40000000 0x00001000>;
|
||||
+ dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
|
||||
+
|
||||
+ local_intc: local_intc {
|
||||
+ compatible = "brcm,bcm2836-l1-intc";
|
||||
+ reg = <0x40000000 0x100>;
|
||||
+ interrupt-controller;
|
||||
+ #interrupt-cells = <1>;
|
||||
+ interrupt-parent = <&local_intc>;
|
||||
+ };
|
||||
+
|
||||
+ arm-pmu {
|
||||
+ compatible = "arm,cortex-a7-pmu";
|
||||
+ interrupt-parent = <&local_intc>;
|
||||
+ interrupts = <9>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ timer {
|
||||
+ compatible = "arm,armv7-timer";
|
||||
+ interrupt-parent = <&local_intc>;
|
||||
+ interrupts = <0>, // PHYS_SECURE_PPI
|
||||
+ <1>, // PHYS_NONSECURE_PPI
|
||||
+ <3>, // VIRT_PPI
|
||||
+ <2>; // HYP_PPI
|
||||
+ always-on;
|
||||
+ };
|
||||
+
|
||||
+ cpus: cpus {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ v7_cpu0: cpu@0 {
|
||||
+ device_type = "cpu";
|
||||
+ compatible = "arm,cortex-a7";
|
||||
+ reg = <0xf00>;
|
||||
+ clock-frequency = <800000000>;
|
||||
+ };
|
||||
+
|
||||
+ v7_cpu1: cpu@1 {
|
||||
+ device_type = "cpu";
|
||||
+ compatible = "arm,cortex-a7";
|
||||
+ reg = <0xf01>;
|
||||
+ clock-frequency = <800000000>;
|
||||
+ };
|
||||
+
|
||||
+ v7_cpu2: cpu@2 {
|
||||
+ device_type = "cpu";
|
||||
+ compatible = "arm,cortex-a7";
|
||||
+ reg = <0xf02>;
|
||||
+ clock-frequency = <800000000>;
|
||||
+ };
|
||||
+
|
||||
+ v7_cpu3: cpu@3 {
|
||||
+ device_type = "cpu";
|
||||
+ compatible = "arm,cortex-a7";
|
||||
+ reg = <0xf03>;
|
||||
+ clock-frequency = <800000000>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/* Make the BCM2835-style global interrupt controller be a child of the
|
||||
+ * CPU-local interrupt controller.
|
||||
+ */
|
||||
+&intc {
|
||||
+ compatible = "brcm,bcm2836-armctrl-ic";
|
||||
+ reg = <0x7e00b200 0x200>;
|
||||
+ interrupt-parent = <&local_intc>;
|
||||
+ interrupts = <8>;
|
||||
+};
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
From 53b6084357a44d7c34044504e1bf149d9156934f Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Tue, 15 Dec 2015 15:35:59 -0800
|
||||
Subject: [PATCH 4/4] ARM: bcm2835: Add the auxiliary clocks to the device
|
||||
tree.
|
||||
|
||||
These will be used for enabling UART1, SPI1, and SPI2.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/boot/dts/bcm283x.dtsi | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
|
||||
index 8a7e727..971e741 100644
|
||||
--- a/arch/arm/boot/dts/bcm283x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm283x.dtsi
|
||||
@@ -152,6 +152,13 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ aux: aux@0x7e215000 {
|
||||
+ compatible = "brcm,bcm2835-aux";
|
||||
+ #clock-cells = <1>;
|
||||
+ reg = <0x7e215000 0x8>;
|
||||
+ clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
+ };
|
||||
+
|
||||
sdhci: sdhci@7e300000 {
|
||||
compatible = "brcm,bcm2835-sdhci";
|
||||
reg = <0x7e300000 0x100>;
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+132
@@ -0,0 +1,132 @@
|
||||
From 8c821c590f791ade672609c2f59b1ce0af750653 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Date: Tue, 27 Oct 2015 19:08:58 +0100
|
||||
Subject: [PATCH 1/2] ARM: bcm2835: enable all bcm2835-relevant in defconfig
|
||||
|
||||
Rebuild bcm2835_defconfig using "make bcm2835_defconfig;
|
||||
make savedefconfig", and enable manually the following features:
|
||||
|
||||
* all bcm2835-relevant drivers (MBOX, WDT, DMA, PWM, SND)
|
||||
* enable regular stackprotector because CONFIG_CC_STACKPROTECTOR
|
||||
disappear
|
||||
* enable some new dependencies in order to keep LED heartbeat
|
||||
( CONFIG_NEW_LEDS, CONFIG_LEDS_CLASS, CONFIG_LEDS_TRIGGERS )
|
||||
|
||||
The following options were removed, because they are enabled implicit:
|
||||
|
||||
CONFIG_RD_BZIP2, CONFIG_RD_LZMA, CONFIG_RD_XZ, CONFIG_RD_LZO,
|
||||
CONFIG_USB_DWC2_HOST, CONFIG_EXT4_FS, CONFIG_EXT4_FS_POSIX_ACL
|
||||
|
||||
These options became obsolete:
|
||||
|
||||
CONFIG_RESOURCE_COUNTERS, CONFIG_SCSI_MULTI_LUN
|
||||
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
Acked-by: Stephen Warren <swarren@wwwdotorg.org>
|
||||
---
|
||||
arch/arm/configs/bcm2835_defconfig | 28 +++++++++++++++++-----------
|
||||
1 file changed, 17 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig
|
||||
index 31cb073..0fda844 100644
|
||||
--- a/arch/arm/configs/bcm2835_defconfig
|
||||
+++ b/arch/arm/configs/bcm2835_defconfig
|
||||
@@ -10,7 +10,6 @@ CONFIG_CGROUP_FREEZER=y
|
||||
CONFIG_CGROUP_DEVICE=y
|
||||
CONFIG_CPUSETS=y
|
||||
CONFIG_CGROUP_CPUACCT=y
|
||||
-CONFIG_RESOURCE_COUNTERS=y
|
||||
CONFIG_CGROUP_PERF=y
|
||||
CONFIG_CFS_BANDWIDTH=y
|
||||
CONFIG_RT_GROUP_SCHED=y
|
||||
@@ -18,10 +17,6 @@ CONFIG_NAMESPACES=y
|
||||
CONFIG_SCHED_AUTOGROUP=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
-CONFIG_RD_BZIP2=y
|
||||
-CONFIG_RD_LZMA=y
|
||||
-CONFIG_RD_XZ=y
|
||||
-CONFIG_RD_LZO=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
@@ -29,6 +24,7 @@ CONFIG_EMBEDDED=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
+CONFIG_CC_STACKPROTECTOR_REGULAR=y
|
||||
CONFIG_ARCH_MULTI_V6=y
|
||||
# CONFIG_ARCH_MULTI_V7 is not set
|
||||
CONFIG_ARCH_BCM=y
|
||||
@@ -38,7 +34,6 @@ CONFIG_AEABI=y
|
||||
CONFIG_KSM=y
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_SECCOMP=y
|
||||
-CONFIG_CC_STACKPROTECTOR=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_VFP=y
|
||||
@@ -57,7 +52,6 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
-CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
CONFIG_NETDEVICES=y
|
||||
@@ -77,17 +71,27 @@ CONFIG_SPI=y
|
||||
CONFIG_SPI_BCM2835=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
# CONFIG_HWMON is not set
|
||||
+CONFIG_WATCHDOG=y
|
||||
+CONFIG_BCM2835_WDT=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_SIMPLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
+CONFIG_SOUND=y
|
||||
+CONFIG_SND=y
|
||||
+CONFIG_SND_SOC=y
|
||||
+CONFIG_SND_BCM2835_SOC_I2S=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
+CONFIG_USB_DWC2=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI_BCM2835=y
|
||||
+CONFIG_NEW_LEDS=y
|
||||
+CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
+CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=y
|
||||
CONFIG_LEDS_TRIGGER_ONESHOT=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
@@ -96,17 +100,19 @@ CONFIG_LEDS_TRIGGER_GPIO=y
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
CONFIG_LEDS_TRIGGER_TRANSIENT=y
|
||||
CONFIG_LEDS_TRIGGER_CAMERA=y
|
||||
+CONFIG_DMADEVICES=y
|
||||
+CONFIG_DMA_BCM2835=y
|
||||
CONFIG_STAGING=y
|
||||
-CONFIG_USB_DWC2=y
|
||||
-CONFIG_USB_DWC2_HOST=y
|
||||
+CONFIG_MAILBOX=y
|
||||
+CONFIG_BCM2835_MBOX=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
+CONFIG_PWM=y
|
||||
+CONFIG_PWM_BCM2835=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
-CONFIG_EXT4_FS=y
|
||||
-CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
From b63074fccbeb81e46b2553a200de54ff3bfadd10 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Sperl <kernel@martin.sperl.org>
|
||||
Date: Fri, 11 Sep 2015 11:22:06 +0000
|
||||
Subject: [PATCH 2/2] ARM: bcm2835: enable auxiliary spi driver in defconfig
|
||||
|
||||
add the auxiliary spi driver to the default config
|
||||
|
||||
Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/configs/bcm2835_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig
|
||||
index 0fda844..72def20 100644
|
||||
--- a/arch/arm/configs/bcm2835_defconfig
|
||||
+++ b/arch/arm/configs/bcm2835_defconfig
|
||||
@@ -69,6 +69,7 @@ CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_BCM2835=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BCM2835=y
|
||||
+CONFIG_SPI_BCM2835AUX=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
From f5bdd66c705484b4bc77eb914be15c1b7881fae7 Mon Sep 17 00:00:00 2001
|
||||
From: Alexandra Yates <alexandra.yates@linux.intel.com>
|
||||
Date: Wed, 17 Feb 2016 19:36:20 -0800
|
||||
Subject: [PATCH] Adding Intel Lewisburg device IDs for SATA
|
||||
|
||||
This patch complements the list of device IDs previously
|
||||
added for lewisburg sata.
|
||||
|
||||
Signed-off-by: Alexandra Yates <alexandra.yates@linux.intel.com>
|
||||
Signed-off-by: Tejun Heo <tj@kernel.org>
|
||||
Cc: stable@vger.kernel.org
|
||||
---
|
||||
drivers/ata/ahci.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
|
||||
index 546a369..b6263b3 100644
|
||||
--- a/drivers/ata/ahci.c
|
||||
+++ b/drivers/ata/ahci.c
|
||||
@@ -367,15 +367,21 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
||||
{ PCI_VDEVICE(INTEL, 0xa107), board_ahci }, /* Sunrise Point-H RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0xa10f), board_ahci }, /* Sunrise Point-H RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x2822), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0x2823), board_ahci }, /* Lewisburg AHCI*/
|
||||
{ PCI_VDEVICE(INTEL, 0x2826), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0x2827), board_ahci }, /* Lewisburg RAID*/
|
||||
{ PCI_VDEVICE(INTEL, 0xa182), board_ahci }, /* Lewisburg AHCI*/
|
||||
{ PCI_VDEVICE(INTEL, 0xa184), board_ahci }, /* Lewisburg RAID*/
|
||||
{ PCI_VDEVICE(INTEL, 0xa186), board_ahci }, /* Lewisburg RAID*/
|
||||
{ PCI_VDEVICE(INTEL, 0xa18e), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa1d2), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa1d6), board_ahci }, /* Lewisburg RAID*/
|
||||
{ PCI_VDEVICE(INTEL, 0xa202), board_ahci }, /* Lewisburg AHCI*/
|
||||
{ PCI_VDEVICE(INTEL, 0xa204), board_ahci }, /* Lewisburg RAID*/
|
||||
{ PCI_VDEVICE(INTEL, 0xa206), board_ahci }, /* Lewisburg RAID*/
|
||||
{ PCI_VDEVICE(INTEL, 0xa20e), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa252), board_ahci }, /* Lewisburg RAID*/
|
||||
+ { PCI_VDEVICE(INTEL, 0xa256), board_ahci }, /* Lewisburg RAID*/
|
||||
|
||||
/* JMicron 360/1/3/5/6, match class to avoid IDE function */
|
||||
{ PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
||||
--
|
||||
2.7.2
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
From dc8b4afc4a04fac8ee55a19b59f2356a25e7e778 Mon Sep 17 00:00:00 2001
|
||||
From: Manuel Lauss <manuel.lauss@gmail.com>
|
||||
Date: Sat, 27 Feb 2016 16:10:05 +0100
|
||||
Subject: [PATCH] ata: ahci: don't mark HotPlugCapable Ports as
|
||||
external/removable
|
||||
|
||||
The HPCP bit is set by bioses for on-board sata ports either because
|
||||
they think sata is hotplug capable in general or to allow Windows
|
||||
to display a "device eject" icon on ports which are routed to an
|
||||
external connector bracket.
|
||||
|
||||
However in Redhat Bugzilla #1310682, users report that with kernel 4.4,
|
||||
where this bit test first appeared, a lot of partitions on sata drives
|
||||
are now mounted automatically.
|
||||
|
||||
This patch should fix redhat and a lot of other distros which
|
||||
unconditionally automount all devices which have the "removable"
|
||||
bit set.
|
||||
|
||||
Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
|
||||
Signed-off-by: Tejun Heo <tj@kernel.org>
|
||||
Fixes: 8a3e33cf92c7 ("ata: ahci: find eSATA ports and flag them as removable" changes userspace behavior)
|
||||
Link: http://lkml.kernel.org/g/56CF35FA.1070500@redhat.com
|
||||
Cc: stable@vger.kernel.org #v4.4+
|
||||
---
|
||||
drivers/ata/libahci.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
|
||||
index 513b3fa..85ea514 100644
|
||||
--- a/drivers/ata/libahci.c
|
||||
+++ b/drivers/ata/libahci.c
|
||||
@@ -1168,8 +1168,7 @@ static void ahci_port_init(struct device *dev, struct ata_port *ap,
|
||||
|
||||
/* mark esata ports */
|
||||
tmp = readl(port_mmio + PORT_CMD);
|
||||
- if ((tmp & PORT_CMD_HPCP) ||
|
||||
- ((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS)))
|
||||
+ if ((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS))
|
||||
ap->pflags |= ATA_PFLAG_EXTERNAL;
|
||||
}
|
||||
|
||||
--
|
||||
2.7.2
|
||||
|
||||
+2
-1
@@ -20,12 +20,13 @@ diff --git a/drivers/Makefile b/drivers/Makefile
|
||||
index 932e8bf..e8df3d0 100644
|
||||
--- a/drivers/Makefile
|
||||
+++ b/drivers/Makefile
|
||||
@@ -64,9 +64,9 @@ obj-y += base/ block/ misc/ mfd/ nfc/
|
||||
@@ -69,10 +69,10 @@ obj-$(CONFIG_LIBNVDIMM) += nvdimm/
|
||||
obj-$(CONFIG_DMA_SHARED_BUFFER) += dma-buf/
|
||||
obj-$(CONFIG_NUBUS) += nubus/
|
||||
obj-y += macintosh/
|
||||
-obj-$(CONFIG_IDE) += ide/
|
||||
obj-$(CONFIG_SCSI) += scsi/
|
||||
obj-y += nvme/
|
||||
obj-$(CONFIG_ATA) += ata/
|
||||
+obj-$(CONFIG_IDE) += ide/
|
||||
obj-$(CONFIG_TARGET_CORE) += target/
|
||||
|
||||
@@ -0,0 +1,382 @@
|
||||
|
||||
fs/aufs/Kconfig | 2 +-
|
||||
fs/dcache.c | 1 +
|
||||
fs/exec.c | 1 +
|
||||
fs/fcntl.c | 1 +
|
||||
fs/file_table.c | 4 ++++
|
||||
fs/namespace.c | 2 ++
|
||||
fs/notify/group.c | 4 ++++
|
||||
fs/notify/mark.c | 4 ++++
|
||||
fs/open.c | 2 ++
|
||||
fs/read_write.c | 2 ++
|
||||
fs/splice.c | 2 ++
|
||||
fs/xattr.c | 1 +
|
||||
kernel/task_work.c | 1 +
|
||||
security/commoncap.c | 2 ++
|
||||
security/device_cgroup.c | 2 ++
|
||||
security/security.c | 10 ++++++++++
|
||||
16 files changed, 40 insertions(+), 1 deletion(-)
|
||||
|
||||
diff -Nurp linux-4.4.3-aufs/fs/aufs/Kconfig linux-4.4.3-aufs-mod/fs/aufs/Kconfig
|
||||
--- linux-4.4.3-aufs/fs/aufs/Kconfig 2016-03-02 17:59:37.360498681 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/aufs/Kconfig 2016-03-03 09:50:41.232631276 +0200
|
||||
@@ -1,5 +1,5 @@
|
||||
config AUFS_FS
|
||||
- bool "Aufs (Advanced multi layered unification filesystem) support"
|
||||
+ tristate "Aufs (Advanced multi layered unification filesystem) support"
|
||||
help
|
||||
Aufs is a stackable unification filesystem such as Unionfs,
|
||||
which unifies several directories and provides a merged single
|
||||
diff -Nurp linux-4.4.3-aufs/fs/dcache.c linux-4.4.3-aufs-mod/fs/dcache.c
|
||||
--- linux-4.4.3-aufs/fs/dcache.c 2016-03-02 17:59:37.376498796 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/dcache.c 2016-03-03 09:50:34.633586562 +0200
|
||||
@@ -1272,6 +1272,7 @@ rename_retry:
|
||||
seq = 1;
|
||||
goto again;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(d_walk);
|
||||
|
||||
/*
|
||||
* Search for at least 1 mount point in the dentry's subdirs.
|
||||
diff -Nurp linux-4.4.3-aufs/fs/exec.c linux-4.4.3-aufs-mod/fs/exec.c
|
||||
--- linux-4.4.3-aufs/fs/exec.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/exec.c 2016-03-03 09:50:34.633586562 +0200
|
||||
@@ -103,6 +103,7 @@ bool path_noexec(const struct path *path
|
||||
return (path->mnt->mnt_flags & MNT_NOEXEC) ||
|
||||
(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(path_noexec);
|
||||
|
||||
#ifdef CONFIG_USELIB
|
||||
/*
|
||||
diff -Nurp linux-4.4.3-aufs/fs/fcntl.c linux-4.4.3-aufs-mod/fs/fcntl.c
|
||||
--- linux-4.4.3-aufs/fs/fcntl.c 2016-03-02 17:59:37.376498796 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/fcntl.c 2016-03-03 09:50:34.633586562 +0200
|
||||
@@ -81,6 +81,7 @@ int setfl(int fd, struct file * filp, un
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(setfl);
|
||||
|
||||
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
||||
int force)
|
||||
diff -Nurp linux-4.4.3-aufs/fs/file_table.c linux-4.4.3-aufs-mod/fs/file_table.c
|
||||
--- linux-4.4.3-aufs/fs/file_table.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/file_table.c 2016-03-03 09:50:34.633586562 +0200
|
||||
@@ -147,6 +147,7 @@ over:
|
||||
}
|
||||
return ERR_PTR(-ENFILE);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(get_empty_filp);
|
||||
|
||||
/**
|
||||
* alloc_file - allocate and initialize a 'struct file'
|
||||
@@ -258,6 +259,7 @@ void flush_delayed_fput(void)
|
||||
{
|
||||
delayed_fput(NULL);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(flush_delayed_fput);
|
||||
|
||||
static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput);
|
||||
|
||||
@@ -300,6 +302,7 @@ void __fput_sync(struct file *file)
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(fput);
|
||||
+EXPORT_SYMBOL_GPL(__fput_sync);
|
||||
|
||||
void put_filp(struct file *file)
|
||||
{
|
||||
@@ -308,6 +311,7 @@ void put_filp(struct file *file)
|
||||
file_free(file);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(put_filp);
|
||||
|
||||
void __init files_init(void)
|
||||
{
|
||||
diff -Nurp linux-4.4.3-aufs/fs/namespace.c linux-4.4.3-aufs-mod/fs/namespace.c
|
||||
--- linux-4.4.3-aufs/fs/namespace.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/namespace.c 2016-03-03 09:50:34.634586569 +0200
|
||||
@@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *m
|
||||
mnt_dec_writers(real_mount(mnt));
|
||||
preempt_enable();
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(__mnt_drop_write);
|
||||
|
||||
/**
|
||||
* mnt_drop_write - give up write access to a mount
|
||||
@@ -1803,6 +1804,7 @@ int iterate_mounts(int (*f)(struct vfsmo
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(iterate_mounts);
|
||||
|
||||
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
|
||||
{
|
||||
diff -Nurp linux-4.4.3-aufs/fs/notify/group.c linux-4.4.3-aufs-mod/fs/notify/group.c
|
||||
--- linux-4.4.3-aufs/fs/notify/group.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/notify/group.c 2016-03-03 09:50:34.634586569 +0200
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <linux/srcu.h>
|
||||
#include <linux/rculist.h>
|
||||
#include <linux/wait.h>
|
||||
+#include <linux/module.h>
|
||||
|
||||
#include <linux/fsnotify_backend.h>
|
||||
#include "fsnotify.h"
|
||||
@@ -72,6 +73,7 @@ void fsnotify_get_group(struct fsnotify_
|
||||
{
|
||||
atomic_inc(&group->refcnt);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_get_group);
|
||||
|
||||
/*
|
||||
* Drop a reference to a group. Free it if it's through.
|
||||
@@ -81,6 +83,7 @@ void fsnotify_put_group(struct fsnotify_
|
||||
if (atomic_dec_and_test(&group->refcnt))
|
||||
fsnotify_final_destroy_group(group);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_put_group);
|
||||
|
||||
/*
|
||||
* Create a new fsnotify_group and hold a reference for the group returned.
|
||||
@@ -109,6 +112,7 @@ struct fsnotify_group *fsnotify_alloc_gr
|
||||
|
||||
return group;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_alloc_group);
|
||||
|
||||
int fsnotify_fasync(int fd, struct file *file, int on)
|
||||
{
|
||||
diff -Nurp linux-4.4.3-aufs/fs/notify/mark.c linux-4.4.3-aufs-mod/fs/notify/mark.c
|
||||
--- linux-4.4.3-aufs/fs/notify/mark.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/notify/mark.c 2016-03-03 09:50:34.634586569 +0200
|
||||
@@ -109,6 +109,7 @@ void fsnotify_put_mark(struct fsnotify_m
|
||||
mark->free_mark(mark);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_put_mark);
|
||||
|
||||
/* Calculate mask of events for a list of marks */
|
||||
u32 fsnotify_recalc_mask(struct hlist_head *head)
|
||||
@@ -208,6 +209,7 @@ void fsnotify_destroy_mark(struct fsnoti
|
||||
mutex_unlock(&group->mark_mutex);
|
||||
fsnotify_free_mark(mark);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_destroy_mark);
|
||||
|
||||
void fsnotify_destroy_marks(struct hlist_head *head, spinlock_t *lock)
|
||||
{
|
||||
@@ -392,6 +394,7 @@ err:
|
||||
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_add_mark);
|
||||
|
||||
int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group,
|
||||
struct inode *inode, struct vfsmount *mnt, int allow_dups)
|
||||
@@ -492,6 +495,7 @@ void fsnotify_init_mark(struct fsnotify_
|
||||
atomic_set(&mark->refcnt, 1);
|
||||
mark->free_mark = free_mark;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_init_mark);
|
||||
|
||||
static int fsnotify_mark_destroy(void *ignored)
|
||||
{
|
||||
diff -Nurp linux-4.4.3-aufs/fs/open.c linux-4.4.3-aufs-mod/fs/open.c
|
||||
--- linux-4.4.3-aufs/fs/open.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/open.c 2016-03-03 09:50:34.634586569 +0200
|
||||
@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, l
|
||||
mutex_unlock(&dentry->d_inode->i_mutex);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_truncate);
|
||||
|
||||
long vfs_truncate(struct path *path, loff_t length)
|
||||
{
|
||||
@@ -678,6 +679,7 @@ int open_check_o_direct(struct file *f)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(open_check_o_direct);
|
||||
|
||||
static int do_dentry_open(struct file *f,
|
||||
struct inode *inode,
|
||||
diff -Nurp linux-4.4.3-aufs/fs/read_write.c linux-4.4.3-aufs-mod/fs/read_write.c
|
||||
--- linux-4.4.3-aufs/fs/read_write.c 2016-03-02 17:59:37.377498803 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/read_write.c 2016-03-03 09:50:34.634586569 +0200
|
||||
@@ -504,6 +504,7 @@ vfs_readf_t vfs_readf(struct file *file)
|
||||
return new_sync_read;
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_readf);
|
||||
|
||||
vfs_writef_t vfs_writef(struct file *file)
|
||||
{
|
||||
@@ -515,6 +516,7 @@ vfs_writef_t vfs_writef(struct file *fil
|
||||
return new_sync_write;
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_writef);
|
||||
|
||||
ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
|
||||
{
|
||||
diff -Nurp linux-4.4.3-aufs/fs/splice.c linux-4.4.3-aufs-mod/fs/splice.c
|
||||
--- linux-4.4.3-aufs/fs/splice.c 2016-03-02 17:59:37.377498803 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/splice.c 2016-03-03 09:50:34.635586575 +0200
|
||||
@@ -1123,6 +1123,7 @@ long do_splice_from(struct pipe_inode_in
|
||||
|
||||
return splice_write(pipe, out, ppos, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_splice_from);
|
||||
|
||||
/*
|
||||
* Attempt to initiate a splice from a file to a pipe.
|
||||
@@ -1149,6 +1150,7 @@ long do_splice_to(struct file *in, loff_
|
||||
|
||||
return splice_read(in, ppos, pipe, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_splice_to);
|
||||
|
||||
/**
|
||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
||||
diff -Nurp linux-4.4.3-aufs/fs/xattr.c linux-4.4.3-aufs-mod/fs/xattr.c
|
||||
--- linux-4.4.3-aufs/fs/xattr.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/fs/xattr.c 2016-03-03 09:50:34.635586575 +0200
|
||||
@@ -207,6 +207,7 @@ vfs_getxattr_alloc(struct dentry *dentry
|
||||
*xattr_value = value;
|
||||
return error;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_getxattr_alloc);
|
||||
|
||||
/* Compare an extended attribute value with the given value */
|
||||
int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name,
|
||||
diff -Nurp linux-4.4.3-aufs/kernel/task_work.c linux-4.4.3-aufs-mod/kernel/task_work.c
|
||||
--- linux-4.4.3-aufs/kernel/task_work.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/kernel/task_work.c 2016-03-03 09:50:34.635586575 +0200
|
||||
@@ -118,3 +118,4 @@ void task_work_run(void)
|
||||
} while (work);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(task_work_run);
|
||||
diff -Nurp linux-4.4.3-aufs/security/commoncap.c linux-4.4.3-aufs-mod/security/commoncap.c
|
||||
--- linux-4.4.3-aufs/security/commoncap.c 2016-03-02 17:42:59.463713410 +0200
|
||||
+++ linux-4.4.3-aufs-mod/security/commoncap.c 2016-03-03 09:50:34.635586575 +0200
|
||||
@@ -1058,12 +1058,14 @@ int cap_mmap_addr(unsigned long addr)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(cap_mmap_addr);
|
||||
|
||||
int cap_mmap_file(struct file *file, unsigned long reqprot,
|
||||
unsigned long prot, unsigned long flags)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(cap_mmap_file);
|
||||
|
||||
#ifdef CONFIG_SECURITY
|
||||
|
||||
diff -Nurp linux-4.4.3-aufs/security/device_cgroup.c linux-4.4.3-aufs-mod/security/device_cgroup.c
|
||||
--- linux-4.4.3-aufs/security/device_cgroup.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/security/device_cgroup.c 2016-03-03 09:50:34.635586575 +0200
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <linux/device_cgroup.h>
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/ctype.h>
|
||||
+#include <linux/export.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/seq_file.h>
|
||||
@@ -849,6 +850,7 @@ int __devcgroup_inode_permission(struct
|
||||
return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
|
||||
access);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(__devcgroup_inode_permission);
|
||||
|
||||
int devcgroup_inode_mknod(int mode, dev_t dev)
|
||||
{
|
||||
diff -Nurp linux-4.4.3-aufs/security/security.c linux-4.4.3-aufs-mod/security/security.c
|
||||
--- linux-4.4.3-aufs/security/security.c 2016-01-11 01:01:32.000000000 +0200
|
||||
+++ linux-4.4.3-aufs-mod/security/security.c 2016-03-03 09:50:34.636586582 +0200
|
||||
@@ -433,6 +433,7 @@ int security_path_rmdir(struct path *dir
|
||||
return 0;
|
||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_rmdir);
|
||||
|
||||
int security_path_unlink(struct path *dir, struct dentry *dentry)
|
||||
{
|
||||
@@ -449,6 +450,7 @@ int security_path_symlink(struct path *d
|
||||
return 0;
|
||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_symlink);
|
||||
|
||||
int security_path_link(struct dentry *old_dentry, struct path *new_dir,
|
||||
struct dentry *new_dentry)
|
||||
@@ -457,6 +459,7 @@ int security_path_link(struct dentry *ol
|
||||
return 0;
|
||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_link);
|
||||
|
||||
int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
|
||||
struct path *new_dir, struct dentry *new_dentry,
|
||||
@@ -484,6 +487,7 @@ int security_path_truncate(struct path *
|
||||
return 0;
|
||||
return call_int_hook(path_truncate, 0, path);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_truncate);
|
||||
|
||||
int security_path_chmod(struct path *path, umode_t mode)
|
||||
{
|
||||
@@ -491,6 +495,7 @@ int security_path_chmod(struct path *pat
|
||||
return 0;
|
||||
return call_int_hook(path_chmod, 0, path, mode);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_chmod);
|
||||
|
||||
int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
|
||||
{
|
||||
@@ -498,6 +503,7 @@ int security_path_chown(struct path *pat
|
||||
return 0;
|
||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_chown);
|
||||
|
||||
int security_path_chroot(struct path *path)
|
||||
{
|
||||
@@ -583,6 +589,7 @@ int security_inode_readlink(struct dentr
|
||||
return 0;
|
||||
return call_int_hook(inode_readlink, 0, dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_inode_readlink);
|
||||
|
||||
int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
|
||||
bool rcu)
|
||||
@@ -598,6 +605,7 @@ int security_inode_permission(struct ino
|
||||
return 0;
|
||||
return call_int_hook(inode_permission, 0, inode, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_inode_permission);
|
||||
|
||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
@@ -736,6 +744,7 @@ int security_file_permission(struct file
|
||||
|
||||
return fsnotify_perm(file, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_file_permission);
|
||||
|
||||
int security_file_alloc(struct file *file)
|
||||
{
|
||||
@@ -795,6 +804,7 @@ int security_mmap_file(struct file *file
|
||||
return ret;
|
||||
return ima_file_mmap(file, prot);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_mmap_file);
|
||||
|
||||
int security_mmap_addr(unsigned long addr)
|
||||
{
|
||||
+5069
-4924
File diff suppressed because it is too large
Load Diff
@@ -1,341 +0,0 @@
|
||||
|
||||
fs/aufs/Kconfig | 2 +-
|
||||
fs/dcache.c | 1 +
|
||||
fs/file_table.c | 2 ++
|
||||
fs/inode.c | 2 ++
|
||||
fs/namespace.c | 2 ++
|
||||
fs/notify/group.c | 4 ++++
|
||||
fs/notify/mark.c | 4 ++++
|
||||
fs/open.c | 2 ++
|
||||
fs/read_write.c | 2 ++
|
||||
fs/splice.c | 2 ++
|
||||
security/commoncap.c | 2 ++
|
||||
security/device_cgroup.c | 2 ++
|
||||
security/security.c | 10 ++++++++++
|
||||
13 files changed, 36 insertions(+), 1 deletion(-)
|
||||
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/aufs/Kconfig linux-4.2.2-aufs4-mod/fs/aufs/Kconfig
|
||||
--- linux-4.2.2-aufs4/fs/aufs/Kconfig 2015-09-29 23:28:44.631823736 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/aufs/Kconfig 2015-09-29 23:48:32.711006787 +0300
|
||||
@@ -1,5 +1,5 @@
|
||||
config AUFS_FS
|
||||
- bool "Aufs (Advanced multi layered unification filesystem) support"
|
||||
+ tristate "Aufs (Advanced multi layered unification filesystem) support"
|
||||
help
|
||||
Aufs is a stackable unification filesystem such as Unionfs,
|
||||
which unifies several directories and provides a merged single
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/dcache.c linux-4.2.2-aufs4-mod/fs/dcache.c
|
||||
--- linux-4.2.2-aufs4/fs/dcache.c 2015-09-29 23:28:44.644823810 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/dcache.c 2015-09-29 23:48:32.711006787 +0300
|
||||
@@ -1272,6 +1272,7 @@ rename_retry:
|
||||
seq = 1;
|
||||
goto again;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(d_walk);
|
||||
|
||||
/*
|
||||
* Search for at least 1 mount point in the dentry's subdirs.
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/file_table.c linux-4.2.2-aufs4-mod/fs/file_table.c
|
||||
--- linux-4.2.2-aufs4/fs/file_table.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/file_table.c 2015-09-29 23:48:32.711006787 +0300
|
||||
@@ -147,6 +147,7 @@ over:
|
||||
}
|
||||
return ERR_PTR(-ENFILE);
|
||||
}
|
||||
+EXPORT_SYMBOL(get_empty_filp);
|
||||
|
||||
/**
|
||||
* alloc_file - allocate and initialize a 'struct file'
|
||||
@@ -308,6 +309,7 @@ void put_filp(struct file *file)
|
||||
file_free(file);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL(put_filp);
|
||||
|
||||
void __init files_init(void)
|
||||
{
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/inode.c linux-4.2.2-aufs4-mod/fs/inode.c
|
||||
--- linux-4.2.2-aufs4/fs/inode.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/inode.c 2015-09-29 23:48:32.712006792 +0300
|
||||
@@ -58,6 +58,7 @@ static struct hlist_head *inode_hashtabl
|
||||
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock);
|
||||
|
||||
__cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock);
|
||||
+EXPORT_SYMBOL(inode_sb_list_lock);
|
||||
|
||||
/*
|
||||
* Empty aops. Can be used for the cases where the user does not
|
||||
@@ -1581,6 +1582,7 @@ static int update_time(struct inode *ino
|
||||
|
||||
return update_time(inode, time, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL(update_time);
|
||||
|
||||
/**
|
||||
* touch_atime - update the access time
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/namespace.c linux-4.2.2-aufs4-mod/fs/namespace.c
|
||||
--- linux-4.2.2-aufs4/fs/namespace.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/namespace.c 2015-09-29 23:48:32.712006792 +0300
|
||||
@@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *m
|
||||
mnt_dec_writers(real_mount(mnt));
|
||||
preempt_enable();
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(__mnt_drop_write);
|
||||
|
||||
/**
|
||||
* mnt_drop_write - give up write access to a mount
|
||||
@@ -1803,6 +1804,7 @@ int iterate_mounts(int (*f)(struct vfsmo
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL(iterate_mounts);
|
||||
|
||||
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
|
||||
{
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/notify/group.c linux-4.2.2-aufs4-mod/fs/notify/group.c
|
||||
--- linux-4.2.2-aufs4/fs/notify/group.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/notify/group.c 2015-09-29 23:48:32.712006792 +0300
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <linux/srcu.h>
|
||||
#include <linux/rculist.h>
|
||||
#include <linux/wait.h>
|
||||
+#include <linux/module.h>
|
||||
|
||||
#include <linux/fsnotify_backend.h>
|
||||
#include "fsnotify.h"
|
||||
@@ -72,6 +73,7 @@ void fsnotify_get_group(struct fsnotify_
|
||||
{
|
||||
atomic_inc(&group->refcnt);
|
||||
}
|
||||
+EXPORT_SYMBOL(fsnotify_get_group);
|
||||
|
||||
/*
|
||||
* Drop a reference to a group. Free it if it's through.
|
||||
@@ -81,6 +83,7 @@ void fsnotify_put_group(struct fsnotify_
|
||||
if (atomic_dec_and_test(&group->refcnt))
|
||||
fsnotify_final_destroy_group(group);
|
||||
}
|
||||
+EXPORT_SYMBOL(fsnotify_put_group);
|
||||
|
||||
/*
|
||||
* Create a new fsnotify_group and hold a reference for the group returned.
|
||||
@@ -109,6 +112,7 @@ struct fsnotify_group *fsnotify_alloc_gr
|
||||
|
||||
return group;
|
||||
}
|
||||
+EXPORT_SYMBOL(fsnotify_alloc_group);
|
||||
|
||||
int fsnotify_fasync(int fd, struct file *file, int on)
|
||||
{
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/notify/mark.c linux-4.2.2-aufs4-mod/fs/notify/mark.c
|
||||
--- linux-4.2.2-aufs4/fs/notify/mark.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/notify/mark.c 2015-09-29 23:48:32.713006798 +0300
|
||||
@@ -109,6 +109,7 @@ void fsnotify_put_mark(struct fsnotify_m
|
||||
mark->free_mark(mark);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL(fsnotify_put_mark);
|
||||
|
||||
/* Calculate mask of events for a list of marks */
|
||||
u32 fsnotify_recalc_mask(struct hlist_head *head)
|
||||
@@ -202,6 +203,7 @@ void fsnotify_destroy_mark(struct fsnoti
|
||||
fsnotify_destroy_mark_locked(mark, group);
|
||||
mutex_unlock(&group->mark_mutex);
|
||||
}
|
||||
+EXPORT_SYMBOL(fsnotify_destroy_mark);
|
||||
|
||||
/*
|
||||
* Destroy all marks in the given list. The marks must be already detached from
|
||||
@@ -386,6 +388,7 @@ int fsnotify_add_mark(struct fsnotify_ma
|
||||
mutex_unlock(&group->mark_mutex);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL(fsnotify_add_mark);
|
||||
|
||||
/*
|
||||
* Given a list of marks, find the mark associated with given group. If found
|
||||
@@ -475,6 +478,7 @@ void fsnotify_init_mark(struct fsnotify_
|
||||
atomic_set(&mark->refcnt, 1);
|
||||
mark->free_mark = free_mark;
|
||||
}
|
||||
+EXPORT_SYMBOL(fsnotify_init_mark);
|
||||
|
||||
static int fsnotify_mark_destroy(void *ignored)
|
||||
{
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/open.c linux-4.2.2-aufs4-mod/fs/open.c
|
||||
--- linux-4.2.2-aufs4/fs/open.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/open.c 2015-09-29 23:48:32.713006798 +0300
|
||||
@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, l
|
||||
mutex_unlock(&dentry->d_inode->i_mutex);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL(do_truncate);
|
||||
|
||||
long vfs_truncate(struct path *path, loff_t length)
|
||||
{
|
||||
@@ -678,6 +679,7 @@ int open_check_o_direct(struct file *f)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL(open_check_o_direct);
|
||||
|
||||
static int do_dentry_open(struct file *f,
|
||||
struct inode *inode,
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/read_write.c linux-4.2.2-aufs4-mod/fs/read_write.c
|
||||
--- linux-4.2.2-aufs4/fs/read_write.c 2015-09-29 23:28:44.645823816 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/read_write.c 2015-09-29 23:48:32.713006798 +0300
|
||||
@@ -504,6 +504,7 @@ vfs_readf_t vfs_readf(struct file *file)
|
||||
return new_sync_read;
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
+EXPORT_SYMBOL(vfs_readf);
|
||||
|
||||
vfs_writef_t vfs_writef(struct file *file)
|
||||
{
|
||||
@@ -515,6 +516,7 @@ vfs_writef_t vfs_writef(struct file *fil
|
||||
return new_sync_write;
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
+EXPORT_SYMBOL(vfs_writef);
|
||||
|
||||
ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
|
||||
{
|
||||
diff -Nurp linux-4.2.2-aufs4/fs/splice.c linux-4.2.2-aufs4-mod/fs/splice.c
|
||||
--- linux-4.2.2-aufs4/fs/splice.c 2015-09-29 23:28:44.646823822 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/fs/splice.c 2015-09-29 23:48:32.713006798 +0300
|
||||
@@ -1115,6 +1115,7 @@ long do_splice_from(struct pipe_inode_in
|
||||
|
||||
return splice_write(pipe, out, ppos, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL(do_splice_from);
|
||||
|
||||
/*
|
||||
* Attempt to initiate a splice from a file to a pipe.
|
||||
@@ -1141,6 +1142,7 @@ long do_splice_to(struct file *in, loff_
|
||||
|
||||
return splice_read(in, ppos, pipe, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL(do_splice_to);
|
||||
|
||||
/**
|
||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
||||
diff -Nurp linux-4.2.2-aufs4/security/commoncap.c linux-4.2.2-aufs4-mod/security/commoncap.c
|
||||
--- linux-4.2.2-aufs4/security/commoncap.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/security/commoncap.c 2015-09-29 23:56:55.210817277 +0300
|
||||
@@ -970,12 +970,14 @@ int cap_mmap_addr(unsigned long addr)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL(cap_mmap_addr);
|
||||
|
||||
int cap_mmap_file(struct file *file, unsigned long reqprot,
|
||||
unsigned long prot, unsigned long flags)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL(cap_mmap_file);
|
||||
|
||||
#ifdef CONFIG_SECURITY
|
||||
|
||||
diff -Nurp linux-4.2.2-aufs4/security/device_cgroup.c linux-4.2.2-aufs4-mod/security/device_cgroup.c
|
||||
--- linux-4.2.2-aufs4/security/device_cgroup.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/security/device_cgroup.c 2015-09-29 23:48:32.714006803 +0300
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <linux/device_cgroup.h>
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/ctype.h>
|
||||
+#include <linux/export.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/seq_file.h>
|
||||
@@ -849,6 +850,7 @@ int __devcgroup_inode_permission(struct
|
||||
return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
|
||||
access);
|
||||
}
|
||||
+EXPORT_SYMBOL(__devcgroup_inode_permission);
|
||||
|
||||
int devcgroup_inode_mknod(int mode, dev_t dev)
|
||||
{
|
||||
diff -Nurp linux-4.2.2-aufs4/security/security.c linux-4.2.2-aufs4-mod/security/security.c
|
||||
--- linux-4.2.2-aufs4/security/security.c 2015-08-30 21:34:09.000000000 +0300
|
||||
+++ linux-4.2.2-aufs4-mod/security/security.c 2015-09-29 23:48:32.715006809 +0300
|
||||
@@ -438,6 +438,7 @@ int security_path_rmdir(struct path *dir
|
||||
return 0;
|
||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_path_rmdir);
|
||||
|
||||
int security_path_unlink(struct path *dir, struct dentry *dentry)
|
||||
{
|
||||
@@ -454,6 +455,7 @@ int security_path_symlink(struct path *d
|
||||
return 0;
|
||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_path_symlink);
|
||||
|
||||
int security_path_link(struct dentry *old_dentry, struct path *new_dir,
|
||||
struct dentry *new_dentry)
|
||||
@@ -462,6 +464,7 @@ int security_path_link(struct dentry *ol
|
||||
return 0;
|
||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_path_link);
|
||||
|
||||
int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
|
||||
struct path *new_dir, struct dentry *new_dentry,
|
||||
@@ -489,6 +492,7 @@ int security_path_truncate(struct path *
|
||||
return 0;
|
||||
return call_int_hook(path_truncate, 0, path);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_path_truncate);
|
||||
|
||||
int security_path_chmod(struct path *path, umode_t mode)
|
||||
{
|
||||
@@ -496,6 +500,7 @@ int security_path_chmod(struct path *pat
|
||||
return 0;
|
||||
return call_int_hook(path_chmod, 0, path, mode);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_path_chmod);
|
||||
|
||||
int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
|
||||
{
|
||||
@@ -503,6 +508,7 @@ int security_path_chown(struct path *pat
|
||||
return 0;
|
||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_path_chown);
|
||||
|
||||
int security_path_chroot(struct path *path)
|
||||
{
|
||||
@@ -588,6 +594,7 @@ int security_inode_readlink(struct dentr
|
||||
return 0;
|
||||
return call_int_hook(inode_readlink, 0, dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_inode_readlink);
|
||||
|
||||
int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
|
||||
bool rcu)
|
||||
@@ -603,6 +610,7 @@ int security_inode_permission(struct ino
|
||||
return 0;
|
||||
return call_int_hook(inode_permission, 0, inode, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_inode_permission);
|
||||
|
||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
@@ -741,6 +749,7 @@ int security_file_permission(struct file
|
||||
|
||||
return fsnotify_perm(file, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_file_permission);
|
||||
|
||||
int security_file_alloc(struct file *file)
|
||||
{
|
||||
@@ -800,6 +809,7 @@ int security_mmap_file(struct file *file
|
||||
return ret;
|
||||
return ima_file_mmap(file, prot);
|
||||
}
|
||||
+EXPORT_SYMBOL(security_mmap_file);
|
||||
|
||||
int security_mmap_addr(unsigned long addr)
|
||||
{
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
From 0f89abf56abbd0e1c6e3cef9813e6d9f05383c1e Mon Sep 17 00:00:00 2001
|
||||
From: Christian Engelmayer <cengelma@gmx.at>
|
||||
Date: Wed, 21 Oct 2015 00:50:06 +0200
|
||||
Subject: btrfs: fix possible leak in btrfs_ioctl_balance()
|
||||
|
||||
Commit 8eb934591f8b ("btrfs: check unsupported filters in balance
|
||||
arguments") adds a jump to exit label out_bargs in case the argument
|
||||
check fails. At this point in addition to the bargs memory, the
|
||||
memory for struct btrfs_balance_control has already been allocated.
|
||||
Ownership of bctl is passed to btrfs_balance() in the good case,
|
||||
thus the memory is not freed due to the introduced jump. Make sure
|
||||
that the memory gets freed in any case as necessary. Detected by
|
||||
Coverity CID 1328378.
|
||||
|
||||
Signed-off-by: Christian Engelmayer <cengelma@gmx.at>
|
||||
Reviewed-by: David Sterba <dsterba@suse.com>
|
||||
Signed-off-by: Chris Mason <clm@fb.com>
|
||||
---
|
||||
fs/btrfs/ioctl.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
|
||||
index 3e3e613..8d20f3b 100644
|
||||
--- a/fs/btrfs/ioctl.c
|
||||
+++ b/fs/btrfs/ioctl.c
|
||||
@@ -4641,7 +4641,7 @@ locked:
|
||||
|
||||
if (bctl->flags & ~(BTRFS_BALANCE_ARGS_MASK | BTRFS_BALANCE_TYPE_MASK)) {
|
||||
ret = -EINVAL;
|
||||
- goto out_bargs;
|
||||
+ goto out_bctl;
|
||||
}
|
||||
|
||||
do_balance:
|
||||
@@ -4655,12 +4655,15 @@ do_balance:
|
||||
need_unlock = false;
|
||||
|
||||
ret = btrfs_balance(bctl, bargs);
|
||||
+ bctl = NULL;
|
||||
|
||||
if (arg) {
|
||||
if (copy_to_user(arg, bargs, sizeof(*bargs)))
|
||||
ret = -EFAULT;
|
||||
}
|
||||
|
||||
+out_bctl:
|
||||
+ kfree(bctl);
|
||||
out_bargs:
|
||||
kfree(bargs);
|
||||
out_unlock:
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
From 257f871993474e2bde6c497b54022c362cf398e1 Mon Sep 17 00:00:00 2001
|
||||
From: Stephen Hemminger <stephen@networkplumber.org>
|
||||
Date: Wed, 4 Nov 2015 10:59:52 -0800
|
||||
Subject: [PATCH 3/6] ovl: move super block magic number to magic.h
|
||||
|
||||
The overlayfs file system is not recognized by programs
|
||||
like tail because the magic number is not in standard header location.
|
||||
|
||||
Move it so that the value will propagate on for the GNU library
|
||||
and utilities. Needs to go in the fstatfs manual page as well.
|
||||
|
||||
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
|
||||
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
|
||||
---
|
||||
fs/overlayfs/super.c | 2 --
|
||||
include/uapi/linux/magic.h | 1 +
|
||||
2 files changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
|
||||
index 97cacb5..32f3124 100644
|
||||
--- a/fs/overlayfs/super.c
|
||||
+++ b/fs/overlayfs/super.c
|
||||
@@ -24,8 +24,6 @@ MODULE_AUTHOR("Miklos Szeredi <miklos@szeredi.hu>");
|
||||
MODULE_DESCRIPTION("Overlay filesystem");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
-#define OVERLAYFS_SUPER_MAGIC 0x794c7630
|
||||
-
|
||||
struct ovl_config {
|
||||
char *lowerdir;
|
||||
char *upperdir;
|
||||
diff --git a/include/uapi/linux/magic.h b/include/uapi/linux/magic.h
|
||||
index 7b1425a..eec4389 100644
|
||||
--- a/include/uapi/linux/magic.h
|
||||
+++ b/include/uapi/linux/magic.h
|
||||
@@ -31,6 +31,7 @@
|
||||
#define PSTOREFS_MAGIC 0x6165676C
|
||||
#define EFIVARFS_MAGIC 0xde5e81e4
|
||||
#define HOSTFS_SUPER_MAGIC 0x00c0ffee
|
||||
+#define OVERLAYFS_SUPER_MAGIC 0x794c7630
|
||||
|
||||
#define MINIX_SUPER_MAGIC 0x137F /* minix v1 fs, 14 char names */
|
||||
#define MINIX_SUPER_MAGIC2 0x138F /* minix v1 fs, 30 char names */
|
||||
--
|
||||
2.7.0
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
From a6351c68fe1ea89ebb39e8c405d622464bcb339e Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Zabel <philipp.zabel@gmail.com>
|
||||
Date: Thu, 2 Apr 2015 17:29:03 +0200
|
||||
Subject: [PATCH 1/4] devicetree: add vendor prefix for Vivante Corporation
|
||||
|
||||
Trivial patch to add Vivante Corporation to the list of
|
||||
devicetree vendor prefixes.
|
||||
|
||||
Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
|
||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
|
||||
index 55df1d4..c2767a7 100644
|
||||
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
|
||||
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
|
||||
@@ -238,6 +238,7 @@ v3 V3 Semiconductor
|
||||
variscite Variscite Ltd.
|
||||
via VIA Technologies, Inc.
|
||||
virtio Virtual I/O Device Specification, developed by the OASIS consortium
|
||||
+vivante Vivante Corporation
|
||||
voipac Voipac Technologies s.r.o.
|
||||
wexler Wexler
|
||||
winbond Winbond Electronics corp.
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
From f04b205ac143413831b193f39fd9592665111d4b Mon Sep 17 00:00:00 2001
|
||||
From: Lucas Stach <l.stach@pengutronix.de>
|
||||
Date: Thu, 2 Apr 2015 17:29:04 +0200
|
||||
Subject: [PATCH 2/4] drm/etnaviv: add devicetree bindings
|
||||
|
||||
Etnaviv follows the same priciple as imx-drm to have a virtual
|
||||
master device node to bind all the individual GPU cores together
|
||||
into one DRM device.
|
||||
|
||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
.../bindings/display/etnaviv/etnaviv-drm.txt | 54 ++++++++++++++++++++++
|
||||
1 file changed, 54 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt b/Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt
|
||||
new file mode 100644
|
||||
index 0000000..ed5e0a7
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt
|
||||
@@ -0,0 +1,54 @@
|
||||
+Etnaviv DRM master device
|
||||
+=========================
|
||||
+
|
||||
+The Etnaviv DRM master device is a virtual device needed to list all
|
||||
+Vivante GPU cores that comprise the GPU subsystem.
|
||||
+
|
||||
+Required properties:
|
||||
+- compatible: Should be one of
|
||||
+ "fsl,imx-gpu-subsystem"
|
||||
+ "marvell,dove-gpu-subsystem"
|
||||
+- cores: Should contain a list of phandles pointing to Vivante GPU devices
|
||||
+
|
||||
+example:
|
||||
+
|
||||
+gpu-subsystem {
|
||||
+ compatible = "fsl,imx-gpu-subsystem";
|
||||
+ cores = <&gpu_2d>, <&gpu_3d>;
|
||||
+};
|
||||
+
|
||||
+
|
||||
+Vivante GPU core devices
|
||||
+========================
|
||||
+
|
||||
+Required properties:
|
||||
+- compatible: Should be "vivante,gc"
|
||||
+ A more specific compatible is not needed, as the cores contain chip
|
||||
+ identification registers at fixed locations, which provide all the
|
||||
+ necessary information to the driver.
|
||||
+- reg: should be register base and length as documented in the
|
||||
+ datasheet
|
||||
+- interrupts: Should contain the cores interrupt line
|
||||
+- clocks: should contain one clock for entry in clock-names
|
||||
+ see Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||
+- clock-names:
|
||||
+ - "bus": AXI/register clock
|
||||
+ - "core": GPU core clock
|
||||
+ - "shader": Shader clock (only required if GPU has feature PIPE_3D)
|
||||
+
|
||||
+Optional properties:
|
||||
+- power-domains: a power domain consumer specifier according to
|
||||
+ Documentation/devicetree/bindings/power/power_domain.txt
|
||||
+
|
||||
+example:
|
||||
+
|
||||
+gpu_3d: gpu@00130000 {
|
||||
+ compatible = "vivante,gc";
|
||||
+ reg = <0x00130000 0x4000>;
|
||||
+ interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&clks IMX6QDL_CLK_GPU3D_AXI>,
|
||||
+ <&clks IMX6QDL_CLK_GPU3D_CORE>,
|
||||
+ <&clks IMX6QDL_CLK_GPU3D_SHADER>;
|
||||
+ clock-names = "bus", "core", "shader";
|
||||
+ power-domains = <&gpc 1>;
|
||||
+};
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+7474
File diff suppressed because it is too large
Load Diff
+36
@@ -0,0 +1,36 @@
|
||||
From 8bb0bce92ec9330b0ea931df90f719fb5c4a5224 Mon Sep 17 00:00:00 2001
|
||||
From: Lucas Stach <l.stach@pengutronix.de>
|
||||
Date: Thu, 3 Dec 2015 17:12:07 +0100
|
||||
Subject: [PATCH 4/4] MAINTAINERS: add maintainer and reviewers for the etnaviv
|
||||
DRM driver
|
||||
|
||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
|
||||
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
Acked-by: Christian Gmeiner <christian.gmeiner@gmail.com>
|
||||
---
|
||||
MAINTAINERS | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index e9caa4b..9990a3b 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -3741,6 +3741,15 @@ S: Maintained
|
||||
F: drivers/gpu/drm/sti
|
||||
F: Documentation/devicetree/bindings/display/st,stih4xx.txt
|
||||
|
||||
+DRM DRIVERS FOR VIVANTE GPU IP
|
||||
+M: Lucas Stach <l.stach@pengutronix.de>
|
||||
+R: Russell King <linux+etnaviv@arm.linux.org.uk>
|
||||
+R: Christian Gmeiner <christian.gmeiner@gmail.com>
|
||||
+L: dri-devel@lists.freedesktop.org
|
||||
+S: Maintained
|
||||
+F: drivers/gpu/drm/etnaviv
|
||||
+F: Documentation/devicetree/bindings/display/etnaviv
|
||||
+
|
||||
DSBR100 USB FM RADIO DRIVER
|
||||
M: Alexey Klimov <klimov.linux@gmail.com>
|
||||
L: linux-media@vger.kernel.org
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
From ed94add00e290e675c36cef6767d7d1f51a02f28 Mon Sep 17 00:00:00 2001
|
||||
From: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Date: Mon, 4 Jan 2016 16:10:24 +0300
|
||||
Subject: [PATCH 1/2] drm/etnaviv: unlock on error in etnaviv_gem_get_iova()
|
||||
|
||||
We have to drop a lock before returning -ENOMEM here.
|
||||
|
||||
Fixes: a8c21a5451d8 ('drm/etnaviv: add initial etnaviv DRM driver')
|
||||
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
---
|
||||
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
|
||||
index 8d6f859..9f77c3b 100644
|
||||
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
|
||||
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
|
||||
@@ -305,8 +305,10 @@ int etnaviv_gem_get_iova(struct etnaviv_gpu *gpu,
|
||||
mapping = etnaviv_gem_get_vram_mapping(etnaviv_obj, NULL);
|
||||
if (!mapping) {
|
||||
mapping = kzalloc(sizeof(*mapping), GFP_KERNEL);
|
||||
- if (!mapping)
|
||||
- return -ENOMEM;
|
||||
+ if (!mapping) {
|
||||
+ ret = -ENOMEM;
|
||||
+ goto out;
|
||||
+ }
|
||||
|
||||
INIT_LIST_HEAD(&mapping->scan_node);
|
||||
mapping->object = etnaviv_obj;
|
||||
--
|
||||
2.7.0
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
From c33246d793b5bb9d8be7c67918136c310185c23d Mon Sep 17 00:00:00 2001
|
||||
From: Lucas Stach <l.stach@pengutronix.de>
|
||||
Date: Wed, 6 Jan 2016 14:36:40 +0100
|
||||
Subject: [PATCH 2/2] drm/etnaviv: fix workaround for GC500
|
||||
|
||||
The hardware description macros define the mask and shifts the wrong
|
||||
way around for the intended use, leading to the condition never being
|
||||
true and the chip revision ending up with the wrong value.
|
||||
|
||||
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
|
||||
Acked-by: Christian Gmeiner <christian.gmeiner@gmail.com>
|
||||
---
|
||||
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
|
||||
index d39093d..056a72e 100644
|
||||
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
|
||||
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
|
||||
@@ -251,9 +251,12 @@ static void etnaviv_hw_identify(struct etnaviv_gpu *gpu)
|
||||
chipIdentity = gpu_read(gpu, VIVS_HI_CHIP_IDENTITY);
|
||||
|
||||
/* Special case for older graphic cores. */
|
||||
- if (VIVS_HI_CHIP_IDENTITY_FAMILY(chipIdentity) == 0x01) {
|
||||
+ if (((chipIdentity & VIVS_HI_CHIP_IDENTITY_FAMILY__MASK)
|
||||
+ >> VIVS_HI_CHIP_IDENTITY_FAMILY__SHIFT) == 0x01) {
|
||||
gpu->identity.model = 0x500; /* gc500 */
|
||||
- gpu->identity.revision = VIVS_HI_CHIP_IDENTITY_REVISION(chipIdentity);
|
||||
+ gpu->identity.revision =
|
||||
+ (chipIdentity & VIVS_HI_CHIP_IDENTITY_REVISION__MASK)
|
||||
+ >> VIVS_HI_CHIP_IDENTITY_REVISION__SHIFT;
|
||||
} else {
|
||||
|
||||
gpu->identity.model = gpu_read(gpu, VIVS_HI_CHIP_MODEL);
|
||||
--
|
||||
2.7.0
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
From 10028c5ab107d3765c7fc282b6c45324d1602155 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Mon, 30 Nov 2015 10:55:13 -0800
|
||||
Subject: [PATCH 1/9] drm: Create a driver hook for allocating GEM object
|
||||
structs.
|
||||
|
||||
The CMA helpers had no way for a driver to extend the struct with its
|
||||
own fields. Since the CMA helpers are mostly "Allocate a
|
||||
drm_gem_cma_object, then fill in a few fields", it's hard to write as
|
||||
pure helpers without passing in a driver callback for the allocate
|
||||
step.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
---
|
||||
drivers/gpu/drm/drm_gem_cma_helper.c | 10 ++++++----
|
||||
include/drm/drmP.h | 7 +++++++
|
||||
2 files changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c
|
||||
index e109b49..0f7b00b 100644
|
||||
--- a/drivers/gpu/drm/drm_gem_cma_helper.c
|
||||
+++ b/drivers/gpu/drm/drm_gem_cma_helper.c
|
||||
@@ -59,11 +59,13 @@ __drm_gem_cma_create(struct drm_device *drm, size_t size)
|
||||
struct drm_gem_object *gem_obj;
|
||||
int ret;
|
||||
|
||||
- cma_obj = kzalloc(sizeof(*cma_obj), GFP_KERNEL);
|
||||
- if (!cma_obj)
|
||||
+ if (drm->driver->gem_create_object)
|
||||
+ gem_obj = drm->driver->gem_create_object(drm, size);
|
||||
+ else
|
||||
+ gem_obj = kzalloc(sizeof(*cma_obj), GFP_KERNEL);
|
||||
+ if (!gem_obj)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
-
|
||||
- gem_obj = &cma_obj->base;
|
||||
+ cma_obj = container_of(gem_obj, struct drm_gem_cma_object, base);
|
||||
|
||||
ret = drm_gem_object_init(drm, gem_obj, size);
|
||||
if (ret)
|
||||
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
|
||||
index 0b921ae..22ff162 100644
|
||||
--- a/include/drm/drmP.h
|
||||
+++ b/include/drm/drmP.h
|
||||
@@ -580,6 +580,13 @@ struct drm_driver {
|
||||
int (*gem_open_object) (struct drm_gem_object *, struct drm_file *);
|
||||
void (*gem_close_object) (struct drm_gem_object *, struct drm_file *);
|
||||
|
||||
+ /**
|
||||
+ * Hook for allocating the GEM object struct, for use by core
|
||||
+ * helpers.
|
||||
+ */
|
||||
+ struct drm_gem_object *(*gem_create_object)(struct drm_device *dev,
|
||||
+ size_t size);
|
||||
+
|
||||
/* prime: */
|
||||
/* export handle -> fd (see drm_gem_prime_handle_to_fd() helper) */
|
||||
int (*prime_handle_to_fd)(struct drm_device *dev, struct drm_file *file_priv,
|
||||
--
|
||||
2.6.4
|
||||
|
||||
@@ -0,0 +1,512 @@
|
||||
From c826a6e1064419f78855463cf29ce9e8b9d25bf4 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Fri, 9 Oct 2015 20:25:07 -0700
|
||||
Subject: [PATCH 2/9] drm/vc4: Add a BO cache.
|
||||
|
||||
We need to allocate new BOs in the kernel as part of each frame, but
|
||||
the CMA allocator is way too slow for that. As an optimization, keep
|
||||
track of recently-freed BOs and reuse them, with a 1 second timeout to
|
||||
fully free them back to the system.
|
||||
|
||||
This improves 3D performance by about 15%.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_bo.c | 336 +++++++++++++++++++++++++++++++++++++-
|
||||
drivers/gpu/drm/vc4/vc4_debugfs.c | 1 +
|
||||
drivers/gpu/drm/vc4/vc4_drv.c | 6 +-
|
||||
drivers/gpu/drm/vc4/vc4_drv.h | 49 +++++-
|
||||
4 files changed, 384 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
|
||||
index ab9f510..18faa5b 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_bo.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
|
||||
@@ -12,19 +12,229 @@
|
||||
* access to system memory with no MMU in between. To support it, we
|
||||
* use the GEM CMA helper functions to allocate contiguous ranges of
|
||||
* physical memory for our BOs.
|
||||
+ *
|
||||
+ * Since the CMA allocator is very slow, we keep a cache of recently
|
||||
+ * freed BOs around so that the kernel's allocation of objects for 3D
|
||||
+ * rendering can return quickly.
|
||||
*/
|
||||
|
||||
#include "vc4_drv.h"
|
||||
|
||||
-struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t size)
|
||||
+static void vc4_bo_stats_dump(struct vc4_dev *vc4)
|
||||
+{
|
||||
+ DRM_INFO("num bos allocated: %d\n",
|
||||
+ vc4->bo_stats.num_allocated);
|
||||
+ DRM_INFO("size bos allocated: %dkb\n",
|
||||
+ vc4->bo_stats.size_allocated / 1024);
|
||||
+ DRM_INFO("num bos used: %d\n",
|
||||
+ vc4->bo_stats.num_allocated - vc4->bo_stats.num_cached);
|
||||
+ DRM_INFO("size bos used: %dkb\n",
|
||||
+ (vc4->bo_stats.size_allocated -
|
||||
+ vc4->bo_stats.size_cached) / 1024);
|
||||
+ DRM_INFO("num bos cached: %d\n",
|
||||
+ vc4->bo_stats.num_cached);
|
||||
+ DRM_INFO("size bos cached: %dkb\n",
|
||||
+ vc4->bo_stats.size_cached / 1024);
|
||||
+}
|
||||
+
|
||||
+#ifdef CONFIG_DEBUG_FS
|
||||
+int vc4_bo_stats_debugfs(struct seq_file *m, void *unused)
|
||||
+{
|
||||
+ struct drm_info_node *node = (struct drm_info_node *)m->private;
|
||||
+ struct drm_device *dev = node->minor->dev;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ struct vc4_bo_stats stats;
|
||||
+
|
||||
+ /* Take a snapshot of the current stats with the lock held. */
|
||||
+ mutex_lock(&vc4->bo_lock);
|
||||
+ stats = vc4->bo_stats;
|
||||
+ mutex_unlock(&vc4->bo_lock);
|
||||
+
|
||||
+ seq_printf(m, "num bos allocated: %d\n",
|
||||
+ stats.num_allocated);
|
||||
+ seq_printf(m, "size bos allocated: %dkb\n",
|
||||
+ stats.size_allocated / 1024);
|
||||
+ seq_printf(m, "num bos used: %d\n",
|
||||
+ stats.num_allocated - stats.num_cached);
|
||||
+ seq_printf(m, "size bos used: %dkb\n",
|
||||
+ (stats.size_allocated - stats.size_cached) / 1024);
|
||||
+ seq_printf(m, "num bos cached: %d\n",
|
||||
+ stats.num_cached);
|
||||
+ seq_printf(m, "size bos cached: %dkb\n",
|
||||
+ stats.size_cached / 1024);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+static uint32_t bo_page_index(size_t size)
|
||||
+{
|
||||
+ return (size / PAGE_SIZE) - 1;
|
||||
+}
|
||||
+
|
||||
+/* Must be called with bo_lock held. */
|
||||
+static void vc4_bo_destroy(struct vc4_bo *bo)
|
||||
{
|
||||
+ struct drm_gem_object *obj = &bo->base.base;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(obj->dev);
|
||||
+
|
||||
+ vc4->bo_stats.num_allocated--;
|
||||
+ vc4->bo_stats.size_allocated -= obj->size;
|
||||
+ drm_gem_cma_free_object(obj);
|
||||
+}
|
||||
+
|
||||
+/* Must be called with bo_lock held. */
|
||||
+static void vc4_bo_remove_from_cache(struct vc4_bo *bo)
|
||||
+{
|
||||
+ struct drm_gem_object *obj = &bo->base.base;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(obj->dev);
|
||||
+
|
||||
+ vc4->bo_stats.num_cached--;
|
||||
+ vc4->bo_stats.size_cached -= obj->size;
|
||||
+
|
||||
+ list_del(&bo->unref_head);
|
||||
+ list_del(&bo->size_head);
|
||||
+}
|
||||
+
|
||||
+static struct list_head *vc4_get_cache_list_for_size(struct drm_device *dev,
|
||||
+ size_t size)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ uint32_t page_index = bo_page_index(size);
|
||||
+
|
||||
+ if (vc4->bo_cache.size_list_size <= page_index) {
|
||||
+ uint32_t new_size = max(vc4->bo_cache.size_list_size * 2,
|
||||
+ page_index + 1);
|
||||
+ struct list_head *new_list;
|
||||
+ uint32_t i;
|
||||
+
|
||||
+ new_list = kmalloc_array(new_size, sizeof(struct list_head),
|
||||
+ GFP_KERNEL);
|
||||
+ if (!new_list)
|
||||
+ return NULL;
|
||||
+
|
||||
+ /* Rebase the old cached BO lists to their new list
|
||||
+ * head locations.
|
||||
+ */
|
||||
+ for (i = 0; i < vc4->bo_cache.size_list_size; i++) {
|
||||
+ struct list_head *old_list =
|
||||
+ &vc4->bo_cache.size_list[i];
|
||||
+
|
||||
+ if (list_empty(old_list))
|
||||
+ INIT_LIST_HEAD(&new_list[i]);
|
||||
+ else
|
||||
+ list_replace(old_list, &new_list[i]);
|
||||
+ }
|
||||
+ /* And initialize the brand new BO list heads. */
|
||||
+ for (i = vc4->bo_cache.size_list_size; i < new_size; i++)
|
||||
+ INIT_LIST_HEAD(&new_list[i]);
|
||||
+
|
||||
+ kfree(vc4->bo_cache.size_list);
|
||||
+ vc4->bo_cache.size_list = new_list;
|
||||
+ vc4->bo_cache.size_list_size = new_size;
|
||||
+ }
|
||||
+
|
||||
+ return &vc4->bo_cache.size_list[page_index];
|
||||
+}
|
||||
+
|
||||
+void vc4_bo_cache_purge(struct drm_device *dev)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+
|
||||
+ mutex_lock(&vc4->bo_lock);
|
||||
+ while (!list_empty(&vc4->bo_cache.time_list)) {
|
||||
+ struct vc4_bo *bo = list_last_entry(&vc4->bo_cache.time_list,
|
||||
+ struct vc4_bo, unref_head);
|
||||
+ vc4_bo_remove_from_cache(bo);
|
||||
+ vc4_bo_destroy(bo);
|
||||
+ }
|
||||
+ mutex_unlock(&vc4->bo_lock);
|
||||
+}
|
||||
+
|
||||
+static struct vc4_bo *vc4_bo_get_from_cache(struct drm_device *dev,
|
||||
+ uint32_t size)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ uint32_t page_index = bo_page_index(size);
|
||||
+ struct vc4_bo *bo = NULL;
|
||||
+
|
||||
+ size = roundup(size, PAGE_SIZE);
|
||||
+
|
||||
+ mutex_lock(&vc4->bo_lock);
|
||||
+ if (page_index >= vc4->bo_cache.size_list_size)
|
||||
+ goto out;
|
||||
+
|
||||
+ if (list_empty(&vc4->bo_cache.size_list[page_index]))
|
||||
+ goto out;
|
||||
+
|
||||
+ bo = list_first_entry(&vc4->bo_cache.size_list[page_index],
|
||||
+ struct vc4_bo, size_head);
|
||||
+ vc4_bo_remove_from_cache(bo);
|
||||
+ kref_init(&bo->base.base.refcount);
|
||||
+
|
||||
+out:
|
||||
+ mutex_unlock(&vc4->bo_lock);
|
||||
+ return bo;
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * vc4_gem_create_object - Implementation of driver->gem_create_object.
|
||||
+ *
|
||||
+ * This lets the CMA helpers allocate object structs for us, and keep
|
||||
+ * our BO stats correct.
|
||||
+ */
|
||||
+struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ struct vc4_bo *bo;
|
||||
+
|
||||
+ bo = kzalloc(sizeof(*bo), GFP_KERNEL);
|
||||
+ if (!bo)
|
||||
+ return ERR_PTR(-ENOMEM);
|
||||
+
|
||||
+ mutex_lock(&vc4->bo_lock);
|
||||
+ vc4->bo_stats.num_allocated++;
|
||||
+ vc4->bo_stats.size_allocated += size;
|
||||
+ mutex_unlock(&vc4->bo_lock);
|
||||
+
|
||||
+ return &bo->base.base;
|
||||
+}
|
||||
+
|
||||
+struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
|
||||
+ bool from_cache)
|
||||
+{
|
||||
+ size_t size = roundup(unaligned_size, PAGE_SIZE);
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
struct drm_gem_cma_object *cma_obj;
|
||||
|
||||
- cma_obj = drm_gem_cma_create(dev, size);
|
||||
- if (IS_ERR(cma_obj))
|
||||
+ if (size == 0)
|
||||
return NULL;
|
||||
- else
|
||||
- return to_vc4_bo(&cma_obj->base);
|
||||
+
|
||||
+ /* First, try to get a vc4_bo from the kernel BO cache. */
|
||||
+ if (from_cache) {
|
||||
+ struct vc4_bo *bo = vc4_bo_get_from_cache(dev, size);
|
||||
+
|
||||
+ if (bo)
|
||||
+ return bo;
|
||||
+ }
|
||||
+
|
||||
+ cma_obj = drm_gem_cma_create(dev, size);
|
||||
+ if (IS_ERR(cma_obj)) {
|
||||
+ /*
|
||||
+ * If we've run out of CMA memory, kill the cache of
|
||||
+ * CMA allocations we've got laying around and try again.
|
||||
+ */
|
||||
+ vc4_bo_cache_purge(dev);
|
||||
+
|
||||
+ cma_obj = drm_gem_cma_create(dev, size);
|
||||
+ if (IS_ERR(cma_obj)) {
|
||||
+ DRM_ERROR("Failed to allocate from CMA:\n");
|
||||
+ vc4_bo_stats_dump(vc4);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return to_vc4_bo(&cma_obj->base);
|
||||
}
|
||||
|
||||
int vc4_dumb_create(struct drm_file *file_priv,
|
||||
@@ -41,7 +251,7 @@ int vc4_dumb_create(struct drm_file *file_priv,
|
||||
if (args->size < args->pitch * args->height)
|
||||
args->size = args->pitch * args->height;
|
||||
|
||||
- bo = vc4_bo_create(dev, roundup(args->size, PAGE_SIZE));
|
||||
+ bo = vc4_bo_create(dev, args->size, false);
|
||||
if (!bo)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -50,3 +260,117 @@ int vc4_dumb_create(struct drm_file *file_priv,
|
||||
|
||||
return ret;
|
||||
}
|
||||
+
|
||||
+/* Must be called with bo_lock held. */
|
||||
+static void vc4_bo_cache_free_old(struct drm_device *dev)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ unsigned long expire_time = jiffies - msecs_to_jiffies(1000);
|
||||
+
|
||||
+ while (!list_empty(&vc4->bo_cache.time_list)) {
|
||||
+ struct vc4_bo *bo = list_last_entry(&vc4->bo_cache.time_list,
|
||||
+ struct vc4_bo, unref_head);
|
||||
+ if (time_before(expire_time, bo->free_time)) {
|
||||
+ mod_timer(&vc4->bo_cache.time_timer,
|
||||
+ round_jiffies_up(jiffies +
|
||||
+ msecs_to_jiffies(1000)));
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ vc4_bo_remove_from_cache(bo);
|
||||
+ vc4_bo_destroy(bo);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/* Called on the last userspace/kernel unreference of the BO. Returns
|
||||
+ * it to the BO cache if possible, otherwise frees it.
|
||||
+ *
|
||||
+ * Note that this is called with the struct_mutex held.
|
||||
+ */
|
||||
+void vc4_free_object(struct drm_gem_object *gem_bo)
|
||||
+{
|
||||
+ struct drm_device *dev = gem_bo->dev;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ struct vc4_bo *bo = to_vc4_bo(gem_bo);
|
||||
+ struct list_head *cache_list;
|
||||
+
|
||||
+ mutex_lock(&vc4->bo_lock);
|
||||
+ /* If the object references someone else's memory, we can't cache it.
|
||||
+ */
|
||||
+ if (gem_bo->import_attach) {
|
||||
+ vc4_bo_destroy(bo);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ /* Don't cache if it was publicly named. */
|
||||
+ if (gem_bo->name) {
|
||||
+ vc4_bo_destroy(bo);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ cache_list = vc4_get_cache_list_for_size(dev, gem_bo->size);
|
||||
+ if (!cache_list) {
|
||||
+ vc4_bo_destroy(bo);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ bo->free_time = jiffies;
|
||||
+ list_add(&bo->size_head, cache_list);
|
||||
+ list_add(&bo->unref_head, &vc4->bo_cache.time_list);
|
||||
+
|
||||
+ vc4->bo_stats.num_cached++;
|
||||
+ vc4->bo_stats.size_cached += gem_bo->size;
|
||||
+
|
||||
+ vc4_bo_cache_free_old(dev);
|
||||
+
|
||||
+out:
|
||||
+ mutex_unlock(&vc4->bo_lock);
|
||||
+}
|
||||
+
|
||||
+static void vc4_bo_cache_time_work(struct work_struct *work)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 =
|
||||
+ container_of(work, struct vc4_dev, bo_cache.time_work);
|
||||
+ struct drm_device *dev = vc4->dev;
|
||||
+
|
||||
+ mutex_lock(&vc4->bo_lock);
|
||||
+ vc4_bo_cache_free_old(dev);
|
||||
+ mutex_unlock(&vc4->bo_lock);
|
||||
+}
|
||||
+
|
||||
+static void vc4_bo_cache_time_timer(unsigned long data)
|
||||
+{
|
||||
+ struct drm_device *dev = (struct drm_device *)data;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+
|
||||
+ schedule_work(&vc4->bo_cache.time_work);
|
||||
+}
|
||||
+
|
||||
+void vc4_bo_cache_init(struct drm_device *dev)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+
|
||||
+ mutex_init(&vc4->bo_lock);
|
||||
+
|
||||
+ INIT_LIST_HEAD(&vc4->bo_cache.time_list);
|
||||
+
|
||||
+ INIT_WORK(&vc4->bo_cache.time_work, vc4_bo_cache_time_work);
|
||||
+ setup_timer(&vc4->bo_cache.time_timer,
|
||||
+ vc4_bo_cache_time_timer,
|
||||
+ (unsigned long)dev);
|
||||
+}
|
||||
+
|
||||
+void vc4_bo_cache_destroy(struct drm_device *dev)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+
|
||||
+ del_timer(&vc4->bo_cache.time_timer);
|
||||
+ cancel_work_sync(&vc4->bo_cache.time_work);
|
||||
+
|
||||
+ vc4_bo_cache_purge(dev);
|
||||
+
|
||||
+ if (vc4->bo_stats.num_allocated) {
|
||||
+ DRM_ERROR("Destroying BO cache while BOs still allocated:\n");
|
||||
+ vc4_bo_stats_dump(vc4);
|
||||
+ }
|
||||
+}
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_debugfs.c b/drivers/gpu/drm/vc4/vc4_debugfs.c
|
||||
index 4297b0a5..6bcf96e 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_debugfs.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_debugfs.c
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "vc4_regs.h"
|
||||
|
||||
static const struct drm_info_list vc4_debugfs_list[] = {
|
||||
+ {"bo_stats", vc4_bo_stats_debugfs, 0},
|
||||
{"hdmi_regs", vc4_hdmi_debugfs_regs, 0},
|
||||
{"hvs_regs", vc4_hvs_debugfs_regs, 0},
|
||||
{"crtc0_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)0},
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
index 6e73060..da041fa 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
@@ -92,7 +92,8 @@ static struct drm_driver vc4_drm_driver = {
|
||||
.debugfs_cleanup = vc4_debugfs_cleanup,
|
||||
#endif
|
||||
|
||||
- .gem_free_object = drm_gem_cma_free_object,
|
||||
+ .gem_create_object = vc4_create_object,
|
||||
+ .gem_free_object = vc4_free_object,
|
||||
.gem_vm_ops = &drm_gem_cma_vm_ops,
|
||||
|
||||
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
||||
@@ -170,6 +171,8 @@ static int vc4_drm_bind(struct device *dev)
|
||||
|
||||
drm_dev_set_unique(drm, dev_name(dev));
|
||||
|
||||
+ vc4_bo_cache_init(drm);
|
||||
+
|
||||
drm_mode_config_init(drm);
|
||||
if (ret)
|
||||
goto unref;
|
||||
@@ -202,6 +205,7 @@ unbind_all:
|
||||
component_unbind_all(dev, drm);
|
||||
unref:
|
||||
drm_dev_unref(drm);
|
||||
+ vc4_bo_cache_destroy(drm);
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
index fd8319f..39a1ff5 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
@@ -17,6 +17,37 @@ struct vc4_dev {
|
||||
struct vc4_crtc *crtc[3];
|
||||
|
||||
struct drm_fbdev_cma *fbdev;
|
||||
+
|
||||
+ /* The kernel-space BO cache. Tracks buffers that have been
|
||||
+ * unreferenced by all other users (refcounts of 0!) but not
|
||||
+ * yet freed, so we can do cheap allocations.
|
||||
+ */
|
||||
+ struct vc4_bo_cache {
|
||||
+ /* Array of list heads for entries in the BO cache,
|
||||
+ * based on number of pages, so we can do O(1) lookups
|
||||
+ * in the cache when allocating.
|
||||
+ */
|
||||
+ struct list_head *size_list;
|
||||
+ uint32_t size_list_size;
|
||||
+
|
||||
+ /* List of all BOs in the cache, ordered by age, so we
|
||||
+ * can do O(1) lookups when trying to free old
|
||||
+ * buffers.
|
||||
+ */
|
||||
+ struct list_head time_list;
|
||||
+ struct work_struct time_work;
|
||||
+ struct timer_list time_timer;
|
||||
+ } bo_cache;
|
||||
+
|
||||
+ struct vc4_bo_stats {
|
||||
+ u32 num_allocated;
|
||||
+ u32 size_allocated;
|
||||
+ u32 num_cached;
|
||||
+ u32 size_cached;
|
||||
+ } bo_stats;
|
||||
+
|
||||
+ /* Protects bo_cache and the BO stats. */
|
||||
+ struct mutex bo_lock;
|
||||
};
|
||||
|
||||
static inline struct vc4_dev *
|
||||
@@ -27,6 +58,17 @@ to_vc4_dev(struct drm_device *dev)
|
||||
|
||||
struct vc4_bo {
|
||||
struct drm_gem_cma_object base;
|
||||
+
|
||||
+ /* List entry for the BO's position in either
|
||||
+ * vc4_exec_info->unref_list or vc4_dev->bo_cache.time_list
|
||||
+ */
|
||||
+ struct list_head unref_head;
|
||||
+
|
||||
+ /* Time in jiffies when the BO was put in vc4->bo_cache. */
|
||||
+ unsigned long free_time;
|
||||
+
|
||||
+ /* List entry for the BO's position in vc4_dev->bo_cache.size_list */
|
||||
+ struct list_head size_head;
|
||||
};
|
||||
|
||||
static inline struct vc4_bo *
|
||||
@@ -104,13 +146,18 @@ to_vc4_encoder(struct drm_encoder *encoder)
|
||||
#define wait_for(COND, MS) _wait_for(COND, MS, 1)
|
||||
|
||||
/* vc4_bo.c */
|
||||
+struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size);
|
||||
void vc4_free_object(struct drm_gem_object *gem_obj);
|
||||
-struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t size);
|
||||
+struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t size,
|
||||
+ bool from_cache);
|
||||
int vc4_dumb_create(struct drm_file *file_priv,
|
||||
struct drm_device *dev,
|
||||
struct drm_mode_create_dumb *args);
|
||||
struct dma_buf *vc4_prime_export(struct drm_device *dev,
|
||||
struct drm_gem_object *obj, int flags);
|
||||
+void vc4_bo_cache_init(struct drm_device *dev);
|
||||
+void vc4_bo_cache_destroy(struct drm_device *dev);
|
||||
+int vc4_bo_stats_debugfs(struct seq_file *m, void *arg);
|
||||
|
||||
/* vc4_crtc.c */
|
||||
extern struct platform_driver vc4_crtc_driver;
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+204
@@ -0,0 +1,204 @@
|
||||
From d5bc60f6ad05b3c676b057bec662cfafc3ee24dd Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Sun, 18 Jan 2015 09:33:17 +1300
|
||||
Subject: [PATCH 3/9] drm/vc4: Add create and map BO ioctls.
|
||||
|
||||
While there exist dumb APIs for creating and mapping BOs, one of the
|
||||
rules is that drivers doing 3D acceleration have to provide their own
|
||||
APIs for buffer allocation (besides, the pitch/height parameters of
|
||||
the dumb alloc don't really make sense for a lot of 3D allocations).
|
||||
|
||||
v2: Use __u32-style types, use "drm.h" instead of <drm/drm.h>.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_bo.c | 41 ++++++++++++++++++++++++++
|
||||
drivers/gpu/drm/vc4/vc4_drv.c | 3 ++
|
||||
drivers/gpu/drm/vc4/vc4_drv.h | 4 +++
|
||||
include/uapi/drm/Kbuild | 1 +
|
||||
include/uapi/drm/vc4_drm.h | 68 +++++++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 117 insertions(+)
|
||||
create mode 100644 include/uapi/drm/vc4_drm.h
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
|
||||
index 18faa5b..06cba26 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_bo.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
|
||||
@@ -19,6 +19,7 @@
|
||||
*/
|
||||
|
||||
#include "vc4_drv.h"
|
||||
+#include "uapi/drm/vc4_drm.h"
|
||||
|
||||
static void vc4_bo_stats_dump(struct vc4_dev *vc4)
|
||||
{
|
||||
@@ -346,6 +347,46 @@ static void vc4_bo_cache_time_timer(unsigned long data)
|
||||
schedule_work(&vc4->bo_cache.time_work);
|
||||
}
|
||||
|
||||
+int vc4_create_bo_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file_priv)
|
||||
+{
|
||||
+ struct drm_vc4_create_bo *args = data;
|
||||
+ struct vc4_bo *bo = NULL;
|
||||
+ int ret;
|
||||
+
|
||||
+ /*
|
||||
+ * We can't allocate from the BO cache, because the BOs don't
|
||||
+ * get zeroed, and that might leak data between users.
|
||||
+ */
|
||||
+ bo = vc4_bo_create(dev, args->size, false);
|
||||
+ if (!bo)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ ret = drm_gem_handle_create(file_priv, &bo->base.base, &args->handle);
|
||||
+ drm_gem_object_unreference_unlocked(&bo->base.base);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+int vc4_mmap_bo_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file_priv)
|
||||
+{
|
||||
+ struct drm_vc4_mmap_bo *args = data;
|
||||
+ struct drm_gem_object *gem_obj;
|
||||
+
|
||||
+ gem_obj = drm_gem_object_lookup(dev, file_priv, args->handle);
|
||||
+ if (!gem_obj) {
|
||||
+ DRM_ERROR("Failed to look up GEM BO %d\n", args->handle);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ /* The mmap offset was set up at BO allocation time. */
|
||||
+ args->offset = drm_vma_node_offset_addr(&gem_obj->vma_node);
|
||||
+
|
||||
+ drm_gem_object_unreference_unlocked(gem_obj);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
void vc4_bo_cache_init(struct drm_device *dev)
|
||||
{
|
||||
struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
index da041fa..5fa4688 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include "drm_fb_cma_helper.h"
|
||||
|
||||
+#include "uapi/drm/vc4_drm.h"
|
||||
#include "vc4_drv.h"
|
||||
#include "vc4_regs.h"
|
||||
|
||||
@@ -73,6 +74,8 @@ static const struct file_operations vc4_drm_fops = {
|
||||
};
|
||||
|
||||
static const struct drm_ioctl_desc vc4_drm_ioctls[] = {
|
||||
+ DRM_IOCTL_DEF_DRV(VC4_CREATE_BO, vc4_create_bo_ioctl, 0),
|
||||
+ DRM_IOCTL_DEF_DRV(VC4_MMAP_BO, vc4_mmap_bo_ioctl, 0),
|
||||
};
|
||||
|
||||
static struct drm_driver vc4_drm_driver = {
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
index 39a1ff5..fddb0a0 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
@@ -155,6 +155,10 @@ int vc4_dumb_create(struct drm_file *file_priv,
|
||||
struct drm_mode_create_dumb *args);
|
||||
struct dma_buf *vc4_prime_export(struct drm_device *dev,
|
||||
struct drm_gem_object *obj, int flags);
|
||||
+int vc4_create_bo_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file_priv);
|
||||
+int vc4_mmap_bo_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file_priv);
|
||||
void vc4_bo_cache_init(struct drm_device *dev);
|
||||
void vc4_bo_cache_destroy(struct drm_device *dev);
|
||||
int vc4_bo_stats_debugfs(struct seq_file *m, void *arg);
|
||||
diff --git a/include/uapi/drm/Kbuild b/include/uapi/drm/Kbuild
|
||||
index 38d4370..974fcd5 100644
|
||||
--- a/include/uapi/drm/Kbuild
|
||||
+++ b/include/uapi/drm/Kbuild
|
||||
@@ -17,4 +17,5 @@ header-y += tegra_drm.h
|
||||
header-y += via_drm.h
|
||||
header-y += vmwgfx_drm.h
|
||||
header-y += msm_drm.h
|
||||
+header-y += vc4_drm.h
|
||||
header-y += virtgpu_drm.h
|
||||
diff --git a/include/uapi/drm/vc4_drm.h b/include/uapi/drm/vc4_drm.h
|
||||
new file mode 100644
|
||||
index 0000000..219d34c
|
||||
--- /dev/null
|
||||
+++ b/include/uapi/drm/vc4_drm.h
|
||||
@@ -0,0 +1,68 @@
|
||||
+/*
|
||||
+ * Copyright © 2014-2015 Broadcom
|
||||
+ *
|
||||
+ * 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
|
||||
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
+ * and/or sell copies of the Software, and to permit persons to whom the
|
||||
+ * 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 MERCHANTABILITY,
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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 _UAPI_VC4_DRM_H_
|
||||
+#define _UAPI_VC4_DRM_H_
|
||||
+
|
||||
+#include "drm.h"
|
||||
+
|
||||
+#define DRM_VC4_CREATE_BO 0x03
|
||||
+#define DRM_VC4_MMAP_BO 0x04
|
||||
+
|
||||
+#define DRM_IOCTL_VC4_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_BO, struct drm_vc4_create_bo)
|
||||
+#define DRM_IOCTL_VC4_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_MMAP_BO, struct drm_vc4_mmap_bo)
|
||||
+
|
||||
+/**
|
||||
+ * struct drm_vc4_create_bo - ioctl argument for creating VC4 BOs.
|
||||
+ *
|
||||
+ * There are currently no values for the flags argument, but it may be
|
||||
+ * used in a future extension.
|
||||
+ */
|
||||
+struct drm_vc4_create_bo {
|
||||
+ __u32 size;
|
||||
+ __u32 flags;
|
||||
+ /** Returned GEM handle for the BO. */
|
||||
+ __u32 handle;
|
||||
+ __u32 pad;
|
||||
+};
|
||||
+
|
||||
+/**
|
||||
+ * struct drm_vc4_mmap_bo - ioctl argument for mapping VC4 BOs.
|
||||
+ *
|
||||
+ * This doesn't actually perform an mmap. Instead, it returns the
|
||||
+ * offset you need to use in an mmap on the DRM device node. This
|
||||
+ * means that tools like valgrind end up knowing about the mapped
|
||||
+ * memory.
|
||||
+ *
|
||||
+ * There are currently no values for the flags argument, but it may be
|
||||
+ * used in a future extension.
|
||||
+ */
|
||||
+struct drm_vc4_mmap_bo {
|
||||
+ /** Handle for the object being mapped. */
|
||||
+ __u32 handle;
|
||||
+ __u32 flags;
|
||||
+ /** offset into the drm node to use for subsequent mmap call. */
|
||||
+ __u64 offset;
|
||||
+};
|
||||
+
|
||||
+#endif /* _UAPI_VC4_DRM_H_ */
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+1168
File diff suppressed because it is too large
Load Diff
+26
@@ -0,0 +1,26 @@
|
||||
From 1fa81589bbac16af6baf153ccc9b3f38fb16a498 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Fri, 23 Oct 2015 14:57:22 +0100
|
||||
Subject: [PATCH 5/9] drm/vc4: Fix a typo in a V3D debug register.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_regs.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h
|
||||
index 9e4e904..4e52a0a 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_regs.h
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_regs.h
|
||||
@@ -154,7 +154,7 @@
|
||||
#define V3D_PCTRS14 0x006f4
|
||||
#define V3D_PCTR15 0x006f8
|
||||
#define V3D_PCTRS15 0x006fc
|
||||
-#define V3D_BGE 0x00f00
|
||||
+#define V3D_DBGE 0x00f00
|
||||
#define V3D_FDBGO 0x00f04
|
||||
#define V3D_FDBGB 0x00f08
|
||||
#define V3D_FDBGR 0x00f0c
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+333
@@ -0,0 +1,333 @@
|
||||
From d3f5168a0810005920e7a3d5ba83e249bd9a750c Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Mon, 2 Mar 2015 13:01:12 -0800
|
||||
Subject: [PATCH 6/9] drm/vc4: Bind and initialize the V3D engine.
|
||||
|
||||
This is the component of the GPU that does 3D rendering.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
drivers/gpu/drm/vc4/Makefile | 1 +
|
||||
drivers/gpu/drm/vc4/vc4_debugfs.c | 2 +
|
||||
drivers/gpu/drm/vc4/vc4_drv.c | 1 +
|
||||
drivers/gpu/drm/vc4/vc4_drv.h | 13 +++
|
||||
drivers/gpu/drm/vc4/vc4_v3d.c | 225 ++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 242 insertions(+)
|
||||
create mode 100644 drivers/gpu/drm/vc4/vc4_v3d.c
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/Makefile b/drivers/gpu/drm/vc4/Makefile
|
||||
index eb776a6..e87a6f2 100644
|
||||
--- a/drivers/gpu/drm/vc4/Makefile
|
||||
+++ b/drivers/gpu/drm/vc4/Makefile
|
||||
@@ -11,6 +11,7 @@ vc4-y := \
|
||||
vc4_hdmi.o \
|
||||
vc4_hvs.o \
|
||||
vc4_plane.o \
|
||||
+ vc4_v3d.o \
|
||||
vc4_validate_shaders.o
|
||||
|
||||
vc4-$(CONFIG_DEBUG_FS) += vc4_debugfs.o
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_debugfs.c b/drivers/gpu/drm/vc4/vc4_debugfs.c
|
||||
index 6bcf96e..d76ad10 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_debugfs.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_debugfs.c
|
||||
@@ -22,6 +22,8 @@ static const struct drm_info_list vc4_debugfs_list[] = {
|
||||
{"crtc0_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)0},
|
||||
{"crtc1_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)1},
|
||||
{"crtc2_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)2},
|
||||
+ {"v3d_ident", vc4_v3d_debugfs_ident, 0},
|
||||
+ {"v3d_regs", vc4_v3d_debugfs_regs, 0},
|
||||
};
|
||||
|
||||
#define VC4_DEBUGFS_ENTRIES ARRAY_SIZE(vc4_debugfs_list)
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
index da4be9c..db58d74 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
@@ -236,6 +236,7 @@ static struct platform_driver *const component_drivers[] = {
|
||||
&vc4_hdmi_driver,
|
||||
&vc4_crtc_driver,
|
||||
&vc4_hvs_driver,
|
||||
+ &vc4_v3d_driver,
|
||||
};
|
||||
|
||||
static int vc4_platform_drm_probe(struct platform_device *pdev)
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
index bd77d55..8945463 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
@@ -15,6 +15,7 @@ struct vc4_dev {
|
||||
struct vc4_hdmi *hdmi;
|
||||
struct vc4_hvs *hvs;
|
||||
struct vc4_crtc *crtc[3];
|
||||
+ struct vc4_v3d *v3d;
|
||||
|
||||
struct drm_fbdev_cma *fbdev;
|
||||
|
||||
@@ -82,6 +83,11 @@ to_vc4_bo(struct drm_gem_object *bo)
|
||||
return (struct vc4_bo *)bo;
|
||||
}
|
||||
|
||||
+struct vc4_v3d {
|
||||
+ struct platform_device *pdev;
|
||||
+ void __iomem *regs;
|
||||
+};
|
||||
+
|
||||
struct vc4_hvs {
|
||||
struct platform_device *pdev;
|
||||
void __iomem *regs;
|
||||
@@ -119,6 +125,8 @@ to_vc4_encoder(struct drm_encoder *encoder)
|
||||
return container_of(encoder, struct vc4_encoder, base);
|
||||
}
|
||||
|
||||
+#define V3D_READ(offset) readl(vc4->v3d->regs + offset)
|
||||
+#define V3D_WRITE(offset, val) writel(val, vc4->v3d->regs + offset)
|
||||
#define HVS_READ(offset) readl(vc4->hvs->regs + offset)
|
||||
#define HVS_WRITE(offset, val) writel(val, vc4->hvs->regs + offset)
|
||||
|
||||
@@ -241,6 +249,11 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev,
|
||||
u32 vc4_plane_write_dlist(struct drm_plane *plane, u32 __iomem *dlist);
|
||||
u32 vc4_plane_dlist_size(struct drm_plane_state *state);
|
||||
|
||||
+/* vc4_v3d.c */
|
||||
+extern struct platform_driver vc4_v3d_driver;
|
||||
+int vc4_v3d_debugfs_ident(struct seq_file *m, void *unused);
|
||||
+int vc4_v3d_debugfs_regs(struct seq_file *m, void *unused);
|
||||
+
|
||||
/* vc4_validate_shader.c */
|
||||
struct vc4_validated_shader_info *
|
||||
vc4_validate_shader(struct drm_gem_cma_object *shader_obj);
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c
|
||||
new file mode 100644
|
||||
index 0000000..040ad0d
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_v3d.c
|
||||
@@ -0,0 +1,225 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2014 The Linux Foundation. All rights reserved.
|
||||
+ * Copyright (C) 2013 Red Hat
|
||||
+ * Author: Rob Clark <robdclark@gmail.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.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
+ * more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License along with
|
||||
+ * this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#include "linux/component.h"
|
||||
+#include "vc4_drv.h"
|
||||
+#include "vc4_regs.h"
|
||||
+
|
||||
+#ifdef CONFIG_DEBUG_FS
|
||||
+#define REGDEF(reg) { reg, #reg }
|
||||
+static const struct {
|
||||
+ uint32_t reg;
|
||||
+ const char *name;
|
||||
+} vc4_reg_defs[] = {
|
||||
+ REGDEF(V3D_IDENT0),
|
||||
+ REGDEF(V3D_IDENT1),
|
||||
+ REGDEF(V3D_IDENT2),
|
||||
+ REGDEF(V3D_SCRATCH),
|
||||
+ REGDEF(V3D_L2CACTL),
|
||||
+ REGDEF(V3D_SLCACTL),
|
||||
+ REGDEF(V3D_INTCTL),
|
||||
+ REGDEF(V3D_INTENA),
|
||||
+ REGDEF(V3D_INTDIS),
|
||||
+ REGDEF(V3D_CT0CS),
|
||||
+ REGDEF(V3D_CT1CS),
|
||||
+ REGDEF(V3D_CT0EA),
|
||||
+ REGDEF(V3D_CT1EA),
|
||||
+ REGDEF(V3D_CT0CA),
|
||||
+ REGDEF(V3D_CT1CA),
|
||||
+ REGDEF(V3D_CT00RA0),
|
||||
+ REGDEF(V3D_CT01RA0),
|
||||
+ REGDEF(V3D_CT0LC),
|
||||
+ REGDEF(V3D_CT1LC),
|
||||
+ REGDEF(V3D_CT0PC),
|
||||
+ REGDEF(V3D_CT1PC),
|
||||
+ REGDEF(V3D_PCS),
|
||||
+ REGDEF(V3D_BFC),
|
||||
+ REGDEF(V3D_RFC),
|
||||
+ REGDEF(V3D_BPCA),
|
||||
+ REGDEF(V3D_BPCS),
|
||||
+ REGDEF(V3D_BPOA),
|
||||
+ REGDEF(V3D_BPOS),
|
||||
+ REGDEF(V3D_BXCF),
|
||||
+ REGDEF(V3D_SQRSV0),
|
||||
+ REGDEF(V3D_SQRSV1),
|
||||
+ REGDEF(V3D_SQCNTL),
|
||||
+ REGDEF(V3D_SRQPC),
|
||||
+ REGDEF(V3D_SRQUA),
|
||||
+ REGDEF(V3D_SRQUL),
|
||||
+ REGDEF(V3D_SRQCS),
|
||||
+ REGDEF(V3D_VPACNTL),
|
||||
+ REGDEF(V3D_VPMBASE),
|
||||
+ REGDEF(V3D_PCTRC),
|
||||
+ REGDEF(V3D_PCTRE),
|
||||
+ REGDEF(V3D_PCTR0),
|
||||
+ REGDEF(V3D_PCTRS0),
|
||||
+ REGDEF(V3D_PCTR1),
|
||||
+ REGDEF(V3D_PCTRS1),
|
||||
+ REGDEF(V3D_PCTR2),
|
||||
+ REGDEF(V3D_PCTRS2),
|
||||
+ REGDEF(V3D_PCTR3),
|
||||
+ REGDEF(V3D_PCTRS3),
|
||||
+ REGDEF(V3D_PCTR4),
|
||||
+ REGDEF(V3D_PCTRS4),
|
||||
+ REGDEF(V3D_PCTR5),
|
||||
+ REGDEF(V3D_PCTRS5),
|
||||
+ REGDEF(V3D_PCTR6),
|
||||
+ REGDEF(V3D_PCTRS6),
|
||||
+ REGDEF(V3D_PCTR7),
|
||||
+ REGDEF(V3D_PCTRS7),
|
||||
+ REGDEF(V3D_PCTR8),
|
||||
+ REGDEF(V3D_PCTRS8),
|
||||
+ REGDEF(V3D_PCTR9),
|
||||
+ REGDEF(V3D_PCTRS9),
|
||||
+ REGDEF(V3D_PCTR10),
|
||||
+ REGDEF(V3D_PCTRS10),
|
||||
+ REGDEF(V3D_PCTR11),
|
||||
+ REGDEF(V3D_PCTRS11),
|
||||
+ REGDEF(V3D_PCTR12),
|
||||
+ REGDEF(V3D_PCTRS12),
|
||||
+ REGDEF(V3D_PCTR13),
|
||||
+ REGDEF(V3D_PCTRS13),
|
||||
+ REGDEF(V3D_PCTR14),
|
||||
+ REGDEF(V3D_PCTRS14),
|
||||
+ REGDEF(V3D_PCTR15),
|
||||
+ REGDEF(V3D_PCTRS15),
|
||||
+ REGDEF(V3D_DBGE),
|
||||
+ REGDEF(V3D_FDBGO),
|
||||
+ REGDEF(V3D_FDBGB),
|
||||
+ REGDEF(V3D_FDBGR),
|
||||
+ REGDEF(V3D_FDBGS),
|
||||
+ REGDEF(V3D_ERRSTAT),
|
||||
+};
|
||||
+
|
||||
+int vc4_v3d_debugfs_regs(struct seq_file *m, void *unused)
|
||||
+{
|
||||
+ struct drm_info_node *node = (struct drm_info_node *)m->private;
|
||||
+ struct drm_device *dev = node->minor->dev;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(vc4_reg_defs); i++) {
|
||||
+ seq_printf(m, "%s (0x%04x): 0x%08x\n",
|
||||
+ vc4_reg_defs[i].name, vc4_reg_defs[i].reg,
|
||||
+ V3D_READ(vc4_reg_defs[i].reg));
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int vc4_v3d_debugfs_ident(struct seq_file *m, void *unused)
|
||||
+{
|
||||
+ struct drm_info_node *node = (struct drm_info_node *)m->private;
|
||||
+ struct drm_device *dev = node->minor->dev;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ uint32_t ident1 = V3D_READ(V3D_IDENT1);
|
||||
+ uint32_t nslc = VC4_GET_FIELD(ident1, V3D_IDENT1_NSLC);
|
||||
+ uint32_t tups = VC4_GET_FIELD(ident1, V3D_IDENT1_TUPS);
|
||||
+ uint32_t qups = VC4_GET_FIELD(ident1, V3D_IDENT1_QUPS);
|
||||
+
|
||||
+ seq_printf(m, "Revision: %d\n",
|
||||
+ VC4_GET_FIELD(ident1, V3D_IDENT1_REV));
|
||||
+ seq_printf(m, "Slices: %d\n", nslc);
|
||||
+ seq_printf(m, "TMUs: %d\n", nslc * tups);
|
||||
+ seq_printf(m, "QPUs: %d\n", nslc * qups);
|
||||
+ seq_printf(m, "Semaphores: %d\n",
|
||||
+ VC4_GET_FIELD(ident1, V3D_IDENT1_NSEM));
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif /* CONFIG_DEBUG_FS */
|
||||
+
|
||||
+static void vc4_v3d_init_hw(struct drm_device *dev)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+
|
||||
+ /* Take all the memory that would have been reserved for user
|
||||
+ * QPU programs, since we don't have an interface for running
|
||||
+ * them, anyway.
|
||||
+ */
|
||||
+ V3D_WRITE(V3D_VPMBASE, 0);
|
||||
+}
|
||||
+
|
||||
+static int vc4_v3d_bind(struct device *dev, struct device *master, void *data)
|
||||
+{
|
||||
+ struct platform_device *pdev = to_platform_device(dev);
|
||||
+ struct drm_device *drm = dev_get_drvdata(master);
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(drm);
|
||||
+ struct vc4_v3d *v3d = NULL;
|
||||
+
|
||||
+ v3d = devm_kzalloc(&pdev->dev, sizeof(*v3d), GFP_KERNEL);
|
||||
+ if (!v3d)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ v3d->pdev = pdev;
|
||||
+
|
||||
+ v3d->regs = vc4_ioremap_regs(pdev, 0);
|
||||
+ if (IS_ERR(v3d->regs))
|
||||
+ return PTR_ERR(v3d->regs);
|
||||
+
|
||||
+ vc4->v3d = v3d;
|
||||
+
|
||||
+ if (V3D_READ(V3D_IDENT0) != V3D_EXPECTED_IDENT0) {
|
||||
+ DRM_ERROR("V3D_IDENT0 read 0x%08x instead of 0x%08x\n",
|
||||
+ V3D_READ(V3D_IDENT0), V3D_EXPECTED_IDENT0);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ vc4_v3d_init_hw(drm);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void vc4_v3d_unbind(struct device *dev, struct device *master,
|
||||
+ void *data)
|
||||
+{
|
||||
+ struct drm_device *drm = dev_get_drvdata(master);
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(drm);
|
||||
+
|
||||
+ vc4->v3d = NULL;
|
||||
+}
|
||||
+
|
||||
+static const struct component_ops vc4_v3d_ops = {
|
||||
+ .bind = vc4_v3d_bind,
|
||||
+ .unbind = vc4_v3d_unbind,
|
||||
+};
|
||||
+
|
||||
+static int vc4_v3d_dev_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ return component_add(&pdev->dev, &vc4_v3d_ops);
|
||||
+}
|
||||
+
|
||||
+static int vc4_v3d_dev_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ component_del(&pdev->dev, &vc4_v3d_ops);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id vc4_v3d_dt_match[] = {
|
||||
+ { .compatible = "brcm,vc4-v3d" },
|
||||
+ {}
|
||||
+};
|
||||
+
|
||||
+struct platform_driver vc4_v3d_driver = {
|
||||
+ .probe = vc4_v3d_dev_probe,
|
||||
+ .remove = vc4_v3d_dev_remove,
|
||||
+ .driver = {
|
||||
+ .name = "vc4_v3d",
|
||||
+ .of_match_table = vc4_v3d_dt_match,
|
||||
+ },
|
||||
+};
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+3477
File diff suppressed because it is too large
Load Diff
+511
@@ -0,0 +1,511 @@
|
||||
From b501bacc6060fd62654b756469cc3091eb53de3a Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Mon, 30 Nov 2015 12:34:01 -0800
|
||||
Subject: [PATCH 8/9] drm/vc4: Add support for async pageflips.
|
||||
|
||||
An async pageflip stores the modeset to be done and executes it once
|
||||
the BOs are ready to be displayed. This gets us about 3x performance
|
||||
in full screen rendering with pageflipping.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_crtc.c | 99 +++++++++++++++++++++++++-
|
||||
drivers/gpu/drm/vc4/vc4_drv.h | 16 +++++
|
||||
drivers/gpu/drm/vc4/vc4_gem.c | 40 +++++++++++
|
||||
drivers/gpu/drm/vc4/vc4_kms.c | 149 +++++++++++++++++++++++++++++++++++++++-
|
||||
drivers/gpu/drm/vc4/vc4_plane.c | 40 +++++++++++
|
||||
5 files changed, 342 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
|
||||
index 7a9f476..a319332 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "drm_atomic_helper.h"
|
||||
#include "drm_crtc_helper.h"
|
||||
#include "linux/clk.h"
|
||||
+#include "drm_fb_cma_helper.h"
|
||||
#include "linux/component.h"
|
||||
#include "linux/of_device.h"
|
||||
#include "vc4_drv.h"
|
||||
@@ -475,10 +476,106 @@ static irqreturn_t vc4_crtc_irq_handler(int irq, void *data)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+struct vc4_async_flip_state {
|
||||
+ struct drm_crtc *crtc;
|
||||
+ struct drm_framebuffer *fb;
|
||||
+ struct drm_pending_vblank_event *event;
|
||||
+
|
||||
+ struct vc4_seqno_cb cb;
|
||||
+};
|
||||
+
|
||||
+/* Called when the V3D execution for the BO being flipped to is done, so that
|
||||
+ * we can actually update the plane's address to point to it.
|
||||
+ */
|
||||
+static void
|
||||
+vc4_async_page_flip_complete(struct vc4_seqno_cb *cb)
|
||||
+{
|
||||
+ struct vc4_async_flip_state *flip_state =
|
||||
+ container_of(cb, struct vc4_async_flip_state, cb);
|
||||
+ struct drm_crtc *crtc = flip_state->crtc;
|
||||
+ struct drm_device *dev = crtc->dev;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ struct drm_plane *plane = crtc->primary;
|
||||
+
|
||||
+ vc4_plane_async_set_fb(plane, flip_state->fb);
|
||||
+ if (flip_state->event) {
|
||||
+ unsigned long flags;
|
||||
+
|
||||
+ spin_lock_irqsave(&dev->event_lock, flags);
|
||||
+ drm_crtc_send_vblank_event(crtc, flip_state->event);
|
||||
+ spin_unlock_irqrestore(&dev->event_lock, flags);
|
||||
+ }
|
||||
+
|
||||
+ drm_framebuffer_unreference(flip_state->fb);
|
||||
+ kfree(flip_state);
|
||||
+
|
||||
+ up(&vc4->async_modeset);
|
||||
+}
|
||||
+
|
||||
+/* Implements async (non-vblank-synced) page flips.
|
||||
+ *
|
||||
+ * The page flip ioctl needs to return immediately, so we grab the
|
||||
+ * modeset semaphore on the pipe, and queue the address update for
|
||||
+ * when V3D is done with the BO being flipped to.
|
||||
+ */
|
||||
+static int vc4_async_page_flip(struct drm_crtc *crtc,
|
||||
+ struct drm_framebuffer *fb,
|
||||
+ struct drm_pending_vblank_event *event,
|
||||
+ uint32_t flags)
|
||||
+{
|
||||
+ struct drm_device *dev = crtc->dev;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ struct drm_plane *plane = crtc->primary;
|
||||
+ int ret = 0;
|
||||
+ struct vc4_async_flip_state *flip_state;
|
||||
+ struct drm_gem_cma_object *cma_bo = drm_fb_cma_get_gem_obj(fb, 0);
|
||||
+ struct vc4_bo *bo = to_vc4_bo(&cma_bo->base);
|
||||
+
|
||||
+ flip_state = kzalloc(sizeof(*flip_state), GFP_KERNEL);
|
||||
+ if (!flip_state)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ drm_framebuffer_reference(fb);
|
||||
+ flip_state->fb = fb;
|
||||
+ flip_state->crtc = crtc;
|
||||
+ flip_state->event = event;
|
||||
+
|
||||
+ /* Make sure all other async modesetes have landed. */
|
||||
+ ret = down_interruptible(&vc4->async_modeset);
|
||||
+ if (ret) {
|
||||
+ kfree(flip_state);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ /* Immediately update the plane's legacy fb pointer, so that later
|
||||
+ * modeset prep sees the state that will be present when the semaphore
|
||||
+ * is released.
|
||||
+ */
|
||||
+ drm_atomic_set_fb_for_plane(plane->state, fb);
|
||||
+ plane->fb = fb;
|
||||
+
|
||||
+ vc4_queue_seqno_cb(dev, &flip_state->cb, bo->seqno,
|
||||
+ vc4_async_page_flip_complete);
|
||||
+
|
||||
+ /* Driver takes ownership of state on successful async commit. */
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int vc4_page_flip(struct drm_crtc *crtc,
|
||||
+ struct drm_framebuffer *fb,
|
||||
+ struct drm_pending_vblank_event *event,
|
||||
+ uint32_t flags)
|
||||
+{
|
||||
+ if (flags & DRM_MODE_PAGE_FLIP_ASYNC)
|
||||
+ return vc4_async_page_flip(crtc, fb, event, flags);
|
||||
+ else
|
||||
+ return drm_atomic_helper_page_flip(crtc, fb, event, flags);
|
||||
+}
|
||||
+
|
||||
static const struct drm_crtc_funcs vc4_crtc_funcs = {
|
||||
.set_config = drm_atomic_helper_set_config,
|
||||
.destroy = vc4_crtc_destroy,
|
||||
- .page_flip = drm_atomic_helper_page_flip,
|
||||
+ .page_flip = vc4_page_flip,
|
||||
.set_property = NULL,
|
||||
.cursor_set = NULL, /* handled by drm_mode_cursor_universal */
|
||||
.cursor_move = NULL, /* handled by drm_mode_cursor_universal */
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
index 0bc8c57..f9927d8 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
@@ -76,6 +76,11 @@ struct vc4_dev {
|
||||
wait_queue_head_t job_wait_queue;
|
||||
struct work_struct job_done_work;
|
||||
|
||||
+ /* List of struct vc4_seqno_cb for callbacks to be made from a
|
||||
+ * workqueue when the given seqno is passed.
|
||||
+ */
|
||||
+ struct list_head seqno_cb_list;
|
||||
+
|
||||
/* The binner overflow memory that's currently set up in
|
||||
* BPOA/BPOS registers. When overflow occurs and a new one is
|
||||
* allocated, the previous one will be moved to
|
||||
@@ -128,6 +133,12 @@ to_vc4_bo(struct drm_gem_object *bo)
|
||||
return (struct vc4_bo *)bo;
|
||||
}
|
||||
|
||||
+struct vc4_seqno_cb {
|
||||
+ struct work_struct work;
|
||||
+ uint64_t seqno;
|
||||
+ void (*func)(struct vc4_seqno_cb *cb);
|
||||
+};
|
||||
+
|
||||
struct vc4_v3d {
|
||||
struct platform_device *pdev;
|
||||
void __iomem *regs;
|
||||
@@ -384,6 +395,9 @@ void vc4_submit_next_job(struct drm_device *dev);
|
||||
int vc4_wait_for_seqno(struct drm_device *dev, uint64_t seqno,
|
||||
uint64_t timeout_ns, bool interruptible);
|
||||
void vc4_job_handle_completed(struct vc4_dev *vc4);
|
||||
+int vc4_queue_seqno_cb(struct drm_device *dev,
|
||||
+ struct vc4_seqno_cb *cb, uint64_t seqno,
|
||||
+ void (*func)(struct vc4_seqno_cb *cb));
|
||||
|
||||
/* vc4_hdmi.c */
|
||||
extern struct platform_driver vc4_hdmi_driver;
|
||||
@@ -409,6 +423,8 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev,
|
||||
enum drm_plane_type type);
|
||||
u32 vc4_plane_write_dlist(struct drm_plane *plane, u32 __iomem *dlist);
|
||||
u32 vc4_plane_dlist_size(struct drm_plane_state *state);
|
||||
+void vc4_plane_async_set_fb(struct drm_plane *plane,
|
||||
+ struct drm_framebuffer *fb);
|
||||
|
||||
/* vc4_v3d.c */
|
||||
extern struct platform_driver vc4_v3d_driver;
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
index 936dddf..5fb0556 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
@@ -461,6 +461,7 @@ void
|
||||
vc4_job_handle_completed(struct vc4_dev *vc4)
|
||||
{
|
||||
unsigned long irqflags;
|
||||
+ struct vc4_seqno_cb *cb, *cb_temp;
|
||||
|
||||
spin_lock_irqsave(&vc4->job_lock, irqflags);
|
||||
while (!list_empty(&vc4->job_done_list)) {
|
||||
@@ -473,7 +474,45 @@ vc4_job_handle_completed(struct vc4_dev *vc4)
|
||||
vc4_complete_exec(vc4->dev, exec);
|
||||
spin_lock_irqsave(&vc4->job_lock, irqflags);
|
||||
}
|
||||
+
|
||||
+ list_for_each_entry_safe(cb, cb_temp, &vc4->seqno_cb_list, work.entry) {
|
||||
+ if (cb->seqno <= vc4->finished_seqno) {
|
||||
+ list_del_init(&cb->work.entry);
|
||||
+ schedule_work(&cb->work);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+}
|
||||
+
|
||||
+static void vc4_seqno_cb_work(struct work_struct *work)
|
||||
+{
|
||||
+ struct vc4_seqno_cb *cb = container_of(work, struct vc4_seqno_cb, work);
|
||||
+
|
||||
+ cb->func(cb);
|
||||
+}
|
||||
+
|
||||
+int vc4_queue_seqno_cb(struct drm_device *dev,
|
||||
+ struct vc4_seqno_cb *cb, uint64_t seqno,
|
||||
+ void (*func)(struct vc4_seqno_cb *cb))
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ int ret = 0;
|
||||
+ unsigned long irqflags;
|
||||
+
|
||||
+ cb->func = func;
|
||||
+ INIT_WORK(&cb->work, vc4_seqno_cb_work);
|
||||
+
|
||||
+ spin_lock_irqsave(&vc4->job_lock, irqflags);
|
||||
+ if (seqno > vc4->finished_seqno) {
|
||||
+ cb->seqno = seqno;
|
||||
+ list_add_tail(&cb->work.entry, &vc4->seqno_cb_list);
|
||||
+ } else {
|
||||
+ schedule_work(&cb->work);
|
||||
+ }
|
||||
spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
/* Scheduled when any job has been completed, this walks the list of
|
||||
@@ -610,6 +649,7 @@ vc4_gem_init(struct drm_device *dev)
|
||||
|
||||
INIT_LIST_HEAD(&vc4->job_list);
|
||||
INIT_LIST_HEAD(&vc4->job_done_list);
|
||||
+ INIT_LIST_HEAD(&vc4->seqno_cb_list);
|
||||
spin_lock_init(&vc4->job_lock);
|
||||
|
||||
INIT_WORK(&vc4->hangcheck.reset_work, vc4_reset_work);
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
|
||||
index 2e5597d..f95f2df 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_kms.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "drm_crtc.h"
|
||||
+#include "drm_atomic.h"
|
||||
#include "drm_atomic_helper.h"
|
||||
#include "drm_crtc_helper.h"
|
||||
#include "drm_plane_helper.h"
|
||||
@@ -29,10 +30,152 @@ static void vc4_output_poll_changed(struct drm_device *dev)
|
||||
drm_fbdev_cma_hotplug_event(vc4->fbdev);
|
||||
}
|
||||
|
||||
+struct vc4_commit {
|
||||
+ struct drm_device *dev;
|
||||
+ struct drm_atomic_state *state;
|
||||
+ struct vc4_seqno_cb cb;
|
||||
+};
|
||||
+
|
||||
+static void
|
||||
+vc4_atomic_complete_commit(struct vc4_commit *c)
|
||||
+{
|
||||
+ struct drm_atomic_state *state = c->state;
|
||||
+ struct drm_device *dev = state->dev;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+
|
||||
+ drm_atomic_helper_commit_modeset_disables(dev, state);
|
||||
+
|
||||
+ drm_atomic_helper_commit_planes(dev, state, false);
|
||||
+
|
||||
+ drm_atomic_helper_commit_modeset_enables(dev, state);
|
||||
+
|
||||
+ drm_atomic_helper_wait_for_vblanks(dev, state);
|
||||
+
|
||||
+ drm_atomic_helper_cleanup_planes(dev, state);
|
||||
+
|
||||
+ drm_atomic_state_free(state);
|
||||
+
|
||||
+ up(&vc4->async_modeset);
|
||||
+
|
||||
+ kfree(c);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+vc4_atomic_complete_commit_seqno_cb(struct vc4_seqno_cb *cb)
|
||||
+{
|
||||
+ struct vc4_commit *c = container_of(cb, struct vc4_commit, cb);
|
||||
+
|
||||
+ vc4_atomic_complete_commit(c);
|
||||
+}
|
||||
+
|
||||
+static struct vc4_commit *commit_init(struct drm_atomic_state *state)
|
||||
+{
|
||||
+ struct vc4_commit *c = kzalloc(sizeof(*c), GFP_KERNEL);
|
||||
+
|
||||
+ if (!c)
|
||||
+ return NULL;
|
||||
+ c->dev = state->dev;
|
||||
+ c->state = state;
|
||||
+
|
||||
+ return c;
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * vc4_atomic_commit - commit validated state object
|
||||
+ * @dev: DRM device
|
||||
+ * @state: the driver state object
|
||||
+ * @async: asynchronous commit
|
||||
+ *
|
||||
+ * This function commits a with drm_atomic_helper_check() pre-validated state
|
||||
+ * object. This can still fail when e.g. the framebuffer reservation fails. For
|
||||
+ * now this doesn't implement asynchronous commits.
|
||||
+ *
|
||||
+ * RETURNS
|
||||
+ * Zero for success or -errno.
|
||||
+ */
|
||||
+static int vc4_atomic_commit(struct drm_device *dev,
|
||||
+ struct drm_atomic_state *state,
|
||||
+ bool async)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ int ret;
|
||||
+ int i;
|
||||
+ uint64_t wait_seqno = 0;
|
||||
+ struct vc4_commit *c;
|
||||
+
|
||||
+ c = commit_init(state);
|
||||
+ if (!c)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ /* Make sure that any outstanding modesets have finished. */
|
||||
+ ret = down_interruptible(&vc4->async_modeset);
|
||||
+ if (ret) {
|
||||
+ kfree(c);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = drm_atomic_helper_prepare_planes(dev, state);
|
||||
+ if (ret) {
|
||||
+ kfree(c);
|
||||
+ up(&vc4->async_modeset);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < dev->mode_config.num_total_plane; i++) {
|
||||
+ struct drm_plane *plane = state->planes[i];
|
||||
+ struct drm_plane_state *new_state = state->plane_states[i];
|
||||
+
|
||||
+ if (!plane)
|
||||
+ continue;
|
||||
+
|
||||
+ if ((plane->state->fb != new_state->fb) && new_state->fb) {
|
||||
+ struct drm_gem_cma_object *cma_bo =
|
||||
+ drm_fb_cma_get_gem_obj(new_state->fb, 0);
|
||||
+ struct vc4_bo *bo = to_vc4_bo(&cma_bo->base);
|
||||
+
|
||||
+ wait_seqno = max(bo->seqno, wait_seqno);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * This is the point of no return - everything below never fails except
|
||||
+ * when the hw goes bonghits. Which means we can commit the new state on
|
||||
+ * the software side now.
|
||||
+ */
|
||||
+
|
||||
+ drm_atomic_helper_swap_state(dev, state);
|
||||
+
|
||||
+ /*
|
||||
+ * Everything below can be run asynchronously without the need to grab
|
||||
+ * any modeset locks at all under one condition: It must be guaranteed
|
||||
+ * that the asynchronous work has either been cancelled (if the driver
|
||||
+ * supports it, which at least requires that the framebuffers get
|
||||
+ * cleaned up with drm_atomic_helper_cleanup_planes()) or completed
|
||||
+ * before the new state gets committed on the software side with
|
||||
+ * drm_atomic_helper_swap_state().
|
||||
+ *
|
||||
+ * This scheme allows new atomic state updates to be prepared and
|
||||
+ * checked in parallel to the asynchronous completion of the previous
|
||||
+ * update. Which is important since compositors need to figure out the
|
||||
+ * composition of the next frame right after having submitted the
|
||||
+ * current layout.
|
||||
+ */
|
||||
+
|
||||
+ if (async) {
|
||||
+ vc4_queue_seqno_cb(dev, &c->cb, wait_seqno,
|
||||
+ vc4_atomic_complete_commit_seqno_cb);
|
||||
+ } else {
|
||||
+ vc4_wait_for_seqno(dev, wait_seqno, ~0ull, false);
|
||||
+ vc4_atomic_complete_commit(c);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static const struct drm_mode_config_funcs vc4_mode_funcs = {
|
||||
.output_poll_changed = vc4_output_poll_changed,
|
||||
.atomic_check = drm_atomic_helper_check,
|
||||
- .atomic_commit = drm_atomic_helper_commit,
|
||||
+ .atomic_commit = vc4_atomic_commit,
|
||||
.fb_create = drm_fb_cma_create,
|
||||
};
|
||||
|
||||
@@ -41,6 +184,8 @@ int vc4_kms_load(struct drm_device *dev)
|
||||
struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
int ret;
|
||||
|
||||
+ sema_init(&vc4->async_modeset, 1);
|
||||
+
|
||||
ret = drm_vblank_init(dev, dev->mode_config.num_crtc);
|
||||
if (ret < 0) {
|
||||
dev_err(dev->dev, "failed to initialize vblank\n");
|
||||
@@ -51,6 +196,8 @@ int vc4_kms_load(struct drm_device *dev)
|
||||
dev->mode_config.max_height = 2048;
|
||||
dev->mode_config.funcs = &vc4_mode_funcs;
|
||||
dev->mode_config.preferred_depth = 24;
|
||||
+ dev->mode_config.async_page_flip = true;
|
||||
+
|
||||
dev->vblank_disable_allowed = true;
|
||||
|
||||
drm_mode_config_reset(dev);
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
|
||||
index cdd8b10..db32c373 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_plane.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
|
||||
@@ -29,6 +29,14 @@ struct vc4_plane_state {
|
||||
u32 *dlist;
|
||||
u32 dlist_size; /* Number of dwords in allocated for the display list */
|
||||
u32 dlist_count; /* Number of used dwords in the display list. */
|
||||
+
|
||||
+ /* Offset in the dlist to pointer word 0. */
|
||||
+ u32 pw0_offset;
|
||||
+
|
||||
+ /* Offset where the plane's dlist was last stored in the
|
||||
+ hardware at vc4_crtc_atomic_flush() time.
|
||||
+ */
|
||||
+ u32 *hw_dlist;
|
||||
};
|
||||
|
||||
static inline struct vc4_plane_state *
|
||||
@@ -197,6 +205,8 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
|
||||
/* Position Word 3: Context. Written by the HVS. */
|
||||
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
|
||||
|
||||
+ vc4_state->pw0_offset = vc4_state->dlist_count;
|
||||
+
|
||||
/* Pointer Word 0: RGB / Y Pointer */
|
||||
vc4_dlist_write(vc4_state, bo->paddr + offset);
|
||||
|
||||
@@ -248,6 +258,8 @@ u32 vc4_plane_write_dlist(struct drm_plane *plane, u32 __iomem *dlist)
|
||||
struct vc4_plane_state *vc4_state = to_vc4_plane_state(plane->state);
|
||||
int i;
|
||||
|
||||
+ vc4_state->hw_dlist = dlist;
|
||||
+
|
||||
/* Can't memcpy_toio() because it needs to be 32-bit writes. */
|
||||
for (i = 0; i < vc4_state->dlist_count; i++)
|
||||
writel(vc4_state->dlist[i], &dlist[i]);
|
||||
@@ -262,6 +274,34 @@ u32 vc4_plane_dlist_size(struct drm_plane_state *state)
|
||||
return vc4_state->dlist_count;
|
||||
}
|
||||
|
||||
+/* Updates the plane to immediately (well, once the FIFO needs
|
||||
+ * refilling) scan out from at a new framebuffer.
|
||||
+ */
|
||||
+void vc4_plane_async_set_fb(struct drm_plane *plane, struct drm_framebuffer *fb)
|
||||
+{
|
||||
+ struct vc4_plane_state *vc4_state = to_vc4_plane_state(plane->state);
|
||||
+ struct drm_gem_cma_object *bo = drm_fb_cma_get_gem_obj(fb, 0);
|
||||
+ uint32_t addr;
|
||||
+
|
||||
+ /* We're skipping the address adjustment for negative origin,
|
||||
+ * because this is only called on the primary plane.
|
||||
+ */
|
||||
+ WARN_ON_ONCE(plane->state->crtc_x < 0 || plane->state->crtc_y < 0);
|
||||
+ addr = bo->paddr + fb->offsets[0];
|
||||
+
|
||||
+ /* Write the new address into the hardware immediately. The
|
||||
+ * scanout will start from this address as soon as the FIFO
|
||||
+ * needs to refill with pixels.
|
||||
+ */
|
||||
+ writel(addr, &vc4_state->hw_dlist[vc4_state->pw0_offset]);
|
||||
+
|
||||
+ /* Also update the CPU-side dlist copy, so that any later
|
||||
+ * atomic updates that don't do a new modeset on our plane
|
||||
+ * also use our updated address.
|
||||
+ */
|
||||
+ vc4_state->dlist[vc4_state->pw0_offset] = addr;
|
||||
+}
|
||||
+
|
||||
static const struct drm_plane_helper_funcs vc4_plane_helper_funcs = {
|
||||
.prepare_fb = NULL,
|
||||
.cleanup_fb = NULL,
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+333
@@ -0,0 +1,333 @@
|
||||
From 214613656b5179f0daab6e0a080814b5100d45f0 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Fri, 30 Oct 2015 10:09:02 -0700
|
||||
Subject: [PATCH 9/9] drm/vc4: Add an interface for capturing the GPU state
|
||||
after a hang.
|
||||
|
||||
This can be parsed with vc4-gpu-tools tools for trying to figure out
|
||||
what was going on.
|
||||
|
||||
v2: Use __u32-style types.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_drv.c | 2 +
|
||||
drivers/gpu/drm/vc4/vc4_drv.h | 4 +
|
||||
drivers/gpu/drm/vc4/vc4_gem.c | 185 ++++++++++++++++++++++++++++++++++++++++++
|
||||
include/uapi/drm/vc4_drm.h | 45 ++++++++++
|
||||
4 files changed, 236 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
index 2cfee59..97226b6 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||
@@ -80,6 +80,8 @@ static const struct drm_ioctl_desc vc4_drm_ioctls[] = {
|
||||
DRM_IOCTL_DEF_DRV(VC4_CREATE_BO, vc4_create_bo_ioctl, 0),
|
||||
DRM_IOCTL_DEF_DRV(VC4_MMAP_BO, vc4_mmap_bo_ioctl, 0),
|
||||
DRM_IOCTL_DEF_DRV(VC4_CREATE_SHADER_BO, vc4_create_shader_bo_ioctl, 0),
|
||||
+ DRM_IOCTL_DEF_DRV(VC4_GET_HANG_STATE, vc4_get_hang_state_ioctl,
|
||||
+ DRM_ROOT_ONLY),
|
||||
};
|
||||
|
||||
static struct drm_driver vc4_drm_driver = {
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
index f9927d8..080865e 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
|
||||
@@ -19,6 +19,8 @@ struct vc4_dev {
|
||||
|
||||
struct drm_fbdev_cma *fbdev;
|
||||
|
||||
+ struct vc4_hang_state *hang_state;
|
||||
+
|
||||
/* The kernel-space BO cache. Tracks buffers that have been
|
||||
* unreferenced by all other users (refcounts of 0!) but not
|
||||
* yet freed, so we can do cheap allocations.
|
||||
@@ -361,6 +363,8 @@ int vc4_create_shader_bo_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
int vc4_mmap_bo_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
+int vc4_get_hang_state_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file_priv);
|
||||
int vc4_mmap(struct file *filp, struct vm_area_struct *vma);
|
||||
int vc4_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
|
||||
void *vc4_prime_vmap(struct drm_gem_object *obj);
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
index 5fb0556..39f29e7 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
@@ -40,6 +40,186 @@ vc4_queue_hangcheck(struct drm_device *dev)
|
||||
round_jiffies_up(jiffies + msecs_to_jiffies(100)));
|
||||
}
|
||||
|
||||
+struct vc4_hang_state {
|
||||
+ struct drm_vc4_get_hang_state user_state;
|
||||
+
|
||||
+ u32 bo_count;
|
||||
+ struct drm_gem_object **bo;
|
||||
+};
|
||||
+
|
||||
+static void
|
||||
+vc4_free_hang_state(struct drm_device *dev, struct vc4_hang_state *state)
|
||||
+{
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ mutex_lock(&dev->struct_mutex);
|
||||
+ for (i = 0; i < state->user_state.bo_count; i++)
|
||||
+ drm_gem_object_unreference(state->bo[i]);
|
||||
+ mutex_unlock(&dev->struct_mutex);
|
||||
+
|
||||
+ kfree(state);
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+vc4_get_hang_state_ioctl(struct drm_device *dev, void *data,
|
||||
+ struct drm_file *file_priv)
|
||||
+{
|
||||
+ struct drm_vc4_get_hang_state *get_state = data;
|
||||
+ struct drm_vc4_get_hang_state_bo *bo_state;
|
||||
+ struct vc4_hang_state *kernel_state;
|
||||
+ struct drm_vc4_get_hang_state *state;
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ unsigned long irqflags;
|
||||
+ u32 i;
|
||||
+ int ret;
|
||||
+
|
||||
+ spin_lock_irqsave(&vc4->job_lock, irqflags);
|
||||
+ kernel_state = vc4->hang_state;
|
||||
+ if (!kernel_state) {
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+ return -ENOENT;
|
||||
+ }
|
||||
+ state = &kernel_state->user_state;
|
||||
+
|
||||
+ /* If the user's array isn't big enough, just return the
|
||||
+ * required array size.
|
||||
+ */
|
||||
+ if (get_state->bo_count < state->bo_count) {
|
||||
+ get_state->bo_count = state->bo_count;
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ vc4->hang_state = NULL;
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+
|
||||
+ /* Save the user's BO pointer, so we don't stomp it with the memcpy. */
|
||||
+ state->bo = get_state->bo;
|
||||
+ memcpy(get_state, state, sizeof(*state));
|
||||
+
|
||||
+ bo_state = kcalloc(state->bo_count, sizeof(*bo_state), GFP_KERNEL);
|
||||
+ if (!bo_state) {
|
||||
+ ret = -ENOMEM;
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < state->bo_count; i++) {
|
||||
+ struct vc4_bo *vc4_bo = to_vc4_bo(kernel_state->bo[i]);
|
||||
+ u32 handle;
|
||||
+
|
||||
+ ret = drm_gem_handle_create(file_priv, kernel_state->bo[i],
|
||||
+ &handle);
|
||||
+
|
||||
+ if (ret) {
|
||||
+ state->bo_count = i - 1;
|
||||
+ goto err;
|
||||
+ }
|
||||
+ bo_state[i].handle = handle;
|
||||
+ bo_state[i].paddr = vc4_bo->base.paddr;
|
||||
+ bo_state[i].size = vc4_bo->base.base.size;
|
||||
+ }
|
||||
+
|
||||
+ ret = copy_to_user((void __user *)(uintptr_t)get_state->bo,
|
||||
+ bo_state,
|
||||
+ state->bo_count * sizeof(*bo_state));
|
||||
+ kfree(bo_state);
|
||||
+
|
||||
+err_free:
|
||||
+
|
||||
+ vc4_free_hang_state(dev, kernel_state);
|
||||
+
|
||||
+err:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+vc4_save_hang_state(struct drm_device *dev)
|
||||
+{
|
||||
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
+ struct drm_vc4_get_hang_state *state;
|
||||
+ struct vc4_hang_state *kernel_state;
|
||||
+ struct vc4_exec_info *exec;
|
||||
+ struct vc4_bo *bo;
|
||||
+ unsigned long irqflags;
|
||||
+ unsigned int i, unref_list_count;
|
||||
+
|
||||
+ kernel_state = kcalloc(1, sizeof(*state), GFP_KERNEL);
|
||||
+ if (!kernel_state)
|
||||
+ return;
|
||||
+
|
||||
+ state = &kernel_state->user_state;
|
||||
+
|
||||
+ spin_lock_irqsave(&vc4->job_lock, irqflags);
|
||||
+ exec = vc4_first_job(vc4);
|
||||
+ if (!exec) {
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ unref_list_count = 0;
|
||||
+ list_for_each_entry(bo, &exec->unref_list, unref_head)
|
||||
+ unref_list_count++;
|
||||
+
|
||||
+ state->bo_count = exec->bo_count + unref_list_count;
|
||||
+ kernel_state->bo = kcalloc(state->bo_count, sizeof(*kernel_state->bo),
|
||||
+ GFP_ATOMIC);
|
||||
+ if (!kernel_state->bo) {
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < exec->bo_count; i++) {
|
||||
+ drm_gem_object_reference(&exec->bo[i]->base);
|
||||
+ kernel_state->bo[i] = &exec->bo[i]->base;
|
||||
+ }
|
||||
+
|
||||
+ list_for_each_entry(bo, &exec->unref_list, unref_head) {
|
||||
+ drm_gem_object_reference(&bo->base.base);
|
||||
+ kernel_state->bo[i] = &bo->base.base;
|
||||
+ i++;
|
||||
+ }
|
||||
+
|
||||
+ state->start_bin = exec->ct0ca;
|
||||
+ state->start_render = exec->ct1ca;
|
||||
+
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+
|
||||
+ state->ct0ca = V3D_READ(V3D_CTNCA(0));
|
||||
+ state->ct0ea = V3D_READ(V3D_CTNEA(0));
|
||||
+
|
||||
+ state->ct1ca = V3D_READ(V3D_CTNCA(1));
|
||||
+ state->ct1ea = V3D_READ(V3D_CTNEA(1));
|
||||
+
|
||||
+ state->ct0cs = V3D_READ(V3D_CTNCS(0));
|
||||
+ state->ct1cs = V3D_READ(V3D_CTNCS(1));
|
||||
+
|
||||
+ state->ct0ra0 = V3D_READ(V3D_CT00RA0);
|
||||
+ state->ct1ra0 = V3D_READ(V3D_CT01RA0);
|
||||
+
|
||||
+ state->bpca = V3D_READ(V3D_BPCA);
|
||||
+ state->bpcs = V3D_READ(V3D_BPCS);
|
||||
+ state->bpoa = V3D_READ(V3D_BPOA);
|
||||
+ state->bpos = V3D_READ(V3D_BPOS);
|
||||
+
|
||||
+ state->vpmbase = V3D_READ(V3D_VPMBASE);
|
||||
+
|
||||
+ state->dbge = V3D_READ(V3D_DBGE);
|
||||
+ state->fdbgo = V3D_READ(V3D_FDBGO);
|
||||
+ state->fdbgb = V3D_READ(V3D_FDBGB);
|
||||
+ state->fdbgr = V3D_READ(V3D_FDBGR);
|
||||
+ state->fdbgs = V3D_READ(V3D_FDBGS);
|
||||
+ state->errstat = V3D_READ(V3D_ERRSTAT);
|
||||
+
|
||||
+ spin_lock_irqsave(&vc4->job_lock, irqflags);
|
||||
+ if (vc4->hang_state) {
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+ vc4_free_hang_state(dev, kernel_state);
|
||||
+ } else {
|
||||
+ vc4->hang_state = kernel_state;
|
||||
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void
|
||||
vc4_reset(struct drm_device *dev)
|
||||
{
|
||||
@@ -64,6 +244,8 @@ vc4_reset_work(struct work_struct *work)
|
||||
struct vc4_dev *vc4 =
|
||||
container_of(work, struct vc4_dev, hangcheck.reset_work);
|
||||
|
||||
+ vc4_save_hang_state(vc4->dev);
|
||||
+
|
||||
vc4_reset(vc4->dev);
|
||||
}
|
||||
|
||||
@@ -679,4 +861,7 @@ vc4_gem_destroy(struct drm_device *dev)
|
||||
}
|
||||
|
||||
vc4_bo_cache_destroy(dev);
|
||||
+
|
||||
+ if (vc4->hang_state)
|
||||
+ vc4_free_hang_state(dev, vc4->hang_state);
|
||||
}
|
||||
diff --git a/include/uapi/drm/vc4_drm.h b/include/uapi/drm/vc4_drm.h
|
||||
index fe4161b..eeb37e3 100644
|
||||
--- a/include/uapi/drm/vc4_drm.h
|
||||
+++ b/include/uapi/drm/vc4_drm.h
|
||||
@@ -32,6 +32,7 @@
|
||||
#define DRM_VC4_CREATE_BO 0x03
|
||||
#define DRM_VC4_MMAP_BO 0x04
|
||||
#define DRM_VC4_CREATE_SHADER_BO 0x05
|
||||
+#define DRM_VC4_GET_HANG_STATE 0x06
|
||||
|
||||
#define DRM_IOCTL_VC4_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl)
|
||||
#define DRM_IOCTL_VC4_WAIT_SEQNO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno)
|
||||
@@ -39,6 +40,7 @@
|
||||
#define DRM_IOCTL_VC4_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_BO, struct drm_vc4_create_bo)
|
||||
#define DRM_IOCTL_VC4_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_MMAP_BO, struct drm_vc4_mmap_bo)
|
||||
#define DRM_IOCTL_VC4_CREATE_SHADER_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_SHADER_BO, struct drm_vc4_create_shader_bo)
|
||||
+#define DRM_IOCTL_VC4_GET_HANG_STATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_HANG_STATE, struct drm_vc4_get_hang_state)
|
||||
|
||||
struct drm_vc4_submit_rcl_surface {
|
||||
__u32 hindex; /* Handle index, or ~0 if not present. */
|
||||
@@ -231,4 +233,47 @@ struct drm_vc4_create_shader_bo {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
+struct drm_vc4_get_hang_state_bo {
|
||||
+ __u32 handle;
|
||||
+ __u32 paddr;
|
||||
+ __u32 size;
|
||||
+ __u32 pad;
|
||||
+};
|
||||
+
|
||||
+/**
|
||||
+ * struct drm_vc4_hang_state - ioctl argument for collecting state
|
||||
+ * from a GPU hang for analysis.
|
||||
+*/
|
||||
+struct drm_vc4_get_hang_state {
|
||||
+ /** Pointer to array of struct drm_vc4_get_hang_state_bo. */
|
||||
+ __u64 bo;
|
||||
+ /**
|
||||
+ * On input, the size of the bo array. Output is the number
|
||||
+ * of bos to be returned.
|
||||
+ */
|
||||
+ __u32 bo_count;
|
||||
+
|
||||
+ __u32 start_bin, start_render;
|
||||
+
|
||||
+ __u32 ct0ca, ct0ea;
|
||||
+ __u32 ct1ca, ct1ea;
|
||||
+ __u32 ct0cs, ct1cs;
|
||||
+ __u32 ct0ra0, ct1ra0;
|
||||
+
|
||||
+ __u32 bpca, bpcs;
|
||||
+ __u32 bpoa, bpos;
|
||||
+
|
||||
+ __u32 vpmbase;
|
||||
+
|
||||
+ __u32 dbge;
|
||||
+ __u32 fdbgo;
|
||||
+ __u32 fdbgb;
|
||||
+ __u32 fdbgr;
|
||||
+ __u32 fdbgs;
|
||||
+ __u32 errstat;
|
||||
+
|
||||
+ /* Pad that we may save more registers into in the future. */
|
||||
+ __u32 pad[16];
|
||||
+};
|
||||
+
|
||||
#endif /* _UAPI_VC4_DRM_H_ */
|
||||
--
|
||||
2.6.4
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Subject: [PATCH] drm/i915: Fix RPS pointer passed from wait_ioctl to i915_wait_request
|
||||
Date: Wed, 2 Dec 2015 09:13:46 +0000
|
||||
|
||||
In commit 2e1b873072dfe3bbcc158a9c21acde1ab0d36c55 [v4.2]
|
||||
Author: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Mon Apr 27 13:41:22 2015 +0100
|
||||
|
||||
drm/i915: Convert RPS tracking to a intel_rps_client struct
|
||||
|
||||
we converted the __i915_wait_request() to take a new intel_rps_client
|
||||
struct (rather than having to pass fake drm_i915_file_private structs).
|
||||
However, due to use of passing a void pointer, I didn't spot one
|
||||
callsite in wait-ioctl was passing the wrong pointer.
|
||||
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Cc: stable@vger.kernel.org
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_gem.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
|
||||
index f5aef48b93db..cd8c4024af92 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -3045,7 +3045,7 @@ i915_gem_wait_ioctl(struct drm_device *d
|
||||
if (ret == 0)
|
||||
ret = __i915_wait_request(req[i], reset_counter, true,
|
||||
args->timeout_ns > 0 ? &args->timeout_ns : NULL,
|
||||
- file->driver_priv);
|
||||
+ to_rps_client(file));
|
||||
i915_gem_request_unreference__unlocked(req[i]);
|
||||
}
|
||||
return ret;
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
From 85a21eafbc2218ffba59b1dda2ce9d7148bf43d2 Mon Sep 17 00:00:00 2001
|
||||
From: Thierry Reding <treding@nvidia.com>
|
||||
Date: Mon, 4 Jan 2016 18:19:12 +0100
|
||||
Subject: [PATCH] drm/radeon: Drop unnecessary unsigned int < 0 check
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Unsigned integers can never be negative, so drop this check.
|
||||
|
||||
Cc: Christian König <christian.koenig@amd.com>
|
||||
Cc: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Thierry Reding <treding@nvidia.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/radeon_kms.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
|
||||
index 4fab44e..414953c 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_kms.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
|
||||
@@ -759,7 +759,7 @@ u32 radeon_get_vblank_counter_kms(struct drm_device *dev, unsigned int pipe)
|
||||
u32 count;
|
||||
struct radeon_device *rdev = dev->dev_private;
|
||||
|
||||
- if (pipe < 0 || pipe >= rdev->num_crtc) {
|
||||
+ if (pipe >= rdev->num_crtc) {
|
||||
DRM_ERROR("Invalid crtc %u\n", pipe);
|
||||
return -EINVAL;
|
||||
}
|
||||
--
|
||||
2.3.10
|
||||
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
From 4e926d2db58244fca9845c78a5d6f873ac73795b Mon Sep 17 00:00:00 2001
|
||||
From: Thierry Reding <treding@nvidia.com>
|
||||
Date: Wed, 16 Dec 2015 15:31:47 +0100
|
||||
Subject: [PATCH] drm/radeon: Update radeon_get_vblank_counter_kms()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Commit 88e72717c2de ("drm/irq: Use unsigned int pipe in public API")
|
||||
updated the prototype of this function but not the implementation. This
|
||||
wasn't noticed even through compile tests because the prototype is part
|
||||
of the source file that uses it and hence the compiler won't know the
|
||||
prototype when it compiles the implementation.
|
||||
|
||||
The right thing would've been to move the prototype to a header that's
|
||||
included in radeon_kms.c so that the implementation signature could be
|
||||
checked against it, but the closest thing would've been radeon_drv.h
|
||||
and including that results in a lot of build errors, so we'll leave it
|
||||
as is for now.
|
||||
|
||||
Cc: Christian König <christian.koenig@amd.com>
|
||||
Cc: Alex Deucher <alexander.deucher@amd.com>
|
||||
Reviewed-by: Christian König <christian.koenig@amd.com>
|
||||
Signed-off-by: Thierry Reding <treding@nvidia.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/radeon_kms.c | 24 ++++++++++++------------
|
||||
1 file changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
|
||||
index d290a8a..4fab44e 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_kms.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
|
||||
@@ -748,19 +748,19 @@ void radeon_driver_preclose_kms(struct drm_device *dev,
|
||||
* radeon_get_vblank_counter_kms - get frame count
|
||||
*
|
||||
* @dev: drm dev pointer
|
||||
- * @crtc: crtc to get the frame count from
|
||||
+ * @pipe: crtc to get the frame count from
|
||||
*
|
||||
* Gets the frame count on the requested crtc (all asics).
|
||||
* Returns frame count on success, -EINVAL on failure.
|
||||
*/
|
||||
-u32 radeon_get_vblank_counter_kms(struct drm_device *dev, int crtc)
|
||||
+u32 radeon_get_vblank_counter_kms(struct drm_device *dev, unsigned int pipe)
|
||||
{
|
||||
int vpos, hpos, stat;
|
||||
u32 count;
|
||||
struct radeon_device *rdev = dev->dev_private;
|
||||
|
||||
- if (crtc < 0 || crtc >= rdev->num_crtc) {
|
||||
- DRM_ERROR("Invalid crtc %d\n", crtc);
|
||||
+ if (pipe < 0 || pipe >= rdev->num_crtc) {
|
||||
+ DRM_ERROR("Invalid crtc %u\n", pipe);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -772,29 +772,29 @@ u32 radeon_get_vblank_counter_kms(struct drm_device *dev, int crtc)
|
||||
* and start of vsync, so vpos >= 0 means to bump the hw frame counter
|
||||
* result by 1 to give the proper appearance to caller.
|
||||
*/
|
||||
- if (rdev->mode_info.crtcs[crtc]) {
|
||||
+ if (rdev->mode_info.crtcs[pipe]) {
|
||||
/* Repeat readout if needed to provide stable result if
|
||||
* we cross start of vsync during the queries.
|
||||
*/
|
||||
do {
|
||||
- count = radeon_get_vblank_counter(rdev, crtc);
|
||||
+ count = radeon_get_vblank_counter(rdev, pipe);
|
||||
/* Ask radeon_get_crtc_scanoutpos to return vpos as
|
||||
* distance to start of vblank, instead of regular
|
||||
* vertical scanout pos.
|
||||
*/
|
||||
stat = radeon_get_crtc_scanoutpos(
|
||||
- dev, crtc, GET_DISTANCE_TO_VBLANKSTART,
|
||||
+ dev, pipe, GET_DISTANCE_TO_VBLANKSTART,
|
||||
&vpos, &hpos, NULL, NULL,
|
||||
- &rdev->mode_info.crtcs[crtc]->base.hwmode);
|
||||
- } while (count != radeon_get_vblank_counter(rdev, crtc));
|
||||
+ &rdev->mode_info.crtcs[pipe]->base.hwmode);
|
||||
+ } while (count != radeon_get_vblank_counter(rdev, pipe));
|
||||
|
||||
if (((stat & (DRM_SCANOUTPOS_VALID | DRM_SCANOUTPOS_ACCURATE)) !=
|
||||
(DRM_SCANOUTPOS_VALID | DRM_SCANOUTPOS_ACCURATE))) {
|
||||
DRM_DEBUG_VBL("Query failed! stat %d\n", stat);
|
||||
}
|
||||
else {
|
||||
- DRM_DEBUG_VBL("crtc %d: dist from vblank start %d\n",
|
||||
- crtc, vpos);
|
||||
+ DRM_DEBUG_VBL("crtc %u: dist from vblank start %d\n",
|
||||
+ pipe, vpos);
|
||||
|
||||
/* Bump counter if we are at >= leading edge of vblank,
|
||||
* but before vsync where vpos would turn negative and
|
||||
@@ -806,7 +806,7 @@ u32 radeon_get_vblank_counter_kms(struct drm_device *dev, int crtc)
|
||||
}
|
||||
else {
|
||||
/* Fallback to use value as is. */
|
||||
- count = radeon_get_vblank_counter(rdev, crtc);
|
||||
+ count = radeon_get_vblank_counter(rdev, pipe);
|
||||
DRM_DEBUG_VBL("NULL mode info! Returned count may be wrong.\n");
|
||||
}
|
||||
|
||||
--
|
||||
2.3.10
|
||||
|
||||
-115
@@ -1,115 +0,0 @@
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Subject: [PATCH] alps: Only the Dell Latitude D420/430/620/630 have separate stick button bits
|
||||
Date: Wed, 21 Oct 2015 10:16:18 +0200
|
||||
|
||||
commit 92bac83dd79e ("Input: alps - non interleaved V2 dualpoint has
|
||||
separate stick button bits") assumes that all alps v2 non-interleaved
|
||||
dual point setups have the separate stick button bits.
|
||||
|
||||
Later we limited this to Dell laptops only because of reports that this
|
||||
broke things on non Dell laptops. Now it turns out that this breaks things
|
||||
on the Dell Latitude D600 too. So it seems that only the Dell Latitude
|
||||
D420/430/620/630, which all share the same touchpad / stick combo,
|
||||
have these separate bits.
|
||||
|
||||
This patch limits the checking of the separate bits to only these models
|
||||
fixing regressions with other models.
|
||||
|
||||
Reported-and-tested-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Cc: stable@vger.kernel.org
|
||||
Tested-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
drivers/input/mouse/alps.c | 48 ++++++++++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 42 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
|
||||
index 4d24686..41e6cb5 100644
|
||||
--- a/drivers/input/mouse/alps.c
|
||||
+++ b/drivers/input/mouse/alps.c
|
||||
@@ -100,7 +100,7 @@ static const struct alps_nibble_commands alps_v6_nibble_commands[] = {
|
||||
#define ALPS_FOUR_BUTTONS 0x40 /* 4 direction button present */
|
||||
#define ALPS_PS2_INTERLEAVED 0x80 /* 3-byte PS/2 packet interleaved with
|
||||
6-byte ALPS packet */
|
||||
-#define ALPS_DELL 0x100 /* device is a Dell laptop */
|
||||
+#define ALPS_STICK_BITS 0x100 /* separate stick button bits */
|
||||
#define ALPS_BUTTONPAD 0x200 /* device is a clickpad */
|
||||
|
||||
static const struct alps_model_info alps_model_data[] = {
|
||||
@@ -159,6 +159,43 @@ static const struct alps_protocol_info alps_v8_protocol_data = {
|
||||
ALPS_PROTO_V8, 0x18, 0x18, 0
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * Some v2 models report the stick buttons in separate bits
|
||||
+ */
|
||||
+static const struct dmi_system_id alps_dmi_has_separate_stick_buttons[] = {
|
||||
+#if defined(CONFIG_DMI) && defined(CONFIG_X86)
|
||||
+ {
|
||||
+ /* Extrapolated from other entries */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D420"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ /* Reported-by: Hans de Bruin <jmdebruin@xmsnet.nl> */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D430"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ /* Reported-by: Hans de Goede <hdegoede@redhat.com> */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D620"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ /* Extrapolated from other entries */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D630"),
|
||||
+ },
|
||||
+ },
|
||||
+#endif
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
static void alps_set_abs_params_st(struct alps_data *priv,
|
||||
struct input_dev *dev1);
|
||||
static void alps_set_abs_params_semi_mt(struct alps_data *priv,
|
||||
@@ -253,9 +290,8 @@ static void alps_process_packet_v1_v2(struct psmouse *psmouse)
|
||||
return;
|
||||
}
|
||||
|
||||
- /* Dell non interleaved V2 dualpoint has separate stick button bits */
|
||||
- if (priv->proto_version == ALPS_PROTO_V2 &&
|
||||
- priv->flags == (ALPS_DELL | ALPS_PASS | ALPS_DUALPOINT)) {
|
||||
+ /* Some models have separate stick button bits */
|
||||
+ if (priv->flags & ALPS_STICK_BITS) {
|
||||
left |= packet[0] & 1;
|
||||
right |= packet[0] & 2;
|
||||
middle |= packet[0] & 4;
|
||||
@@ -2552,8 +2588,6 @@ static int alps_set_protocol(struct psmouse *psmouse,
|
||||
priv->byte0 = protocol->byte0;
|
||||
priv->mask0 = protocol->mask0;
|
||||
priv->flags = protocol->flags;
|
||||
- if (dmi_name_in_vendors("Dell"))
|
||||
- priv->flags |= ALPS_DELL;
|
||||
|
||||
priv->x_max = 2000;
|
||||
priv->y_max = 1400;
|
||||
@@ -2568,6 +2602,8 @@ static int alps_set_protocol(struct psmouse *psmouse,
|
||||
priv->set_abs_params = alps_set_abs_params_st;
|
||||
priv->x_max = 1023;
|
||||
priv->y_max = 767;
|
||||
+ if (dmi_check_system(alps_dmi_has_separate_stick_buttons))
|
||||
+ priv->flags |= ALPS_STICK_BITS;
|
||||
break;
|
||||
|
||||
case ALPS_PROTO_V3:
|
||||
--
|
||||
2.5.0
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From 4ee34ea3a12396f35b26d90a094c75db95080baa Mon Sep 17 00:00:00 2001
|
||||
From: Harvey Hunt <harvey.hunt@imgtec.com>
|
||||
Date: Wed, 24 Feb 2016 15:16:43 +0000
|
||||
Subject: [PATCH] libata: Align ata_device's id on a cacheline
|
||||
|
||||
The id buffer in ata_device is a DMA target, but it isn't explicitly
|
||||
cacheline aligned. Due to this, adjacent fields can be overwritten with
|
||||
stale data from memory on non coherent architectures. As a result, the
|
||||
kernel is sometimes unable to communicate with an ATA device.
|
||||
|
||||
Fix this by ensuring that the id buffer is cacheline aligned.
|
||||
|
||||
This issue is similar to that fixed by Commit 84bda12af31f
|
||||
("libata: align ap->sector_buf").
|
||||
|
||||
Signed-off-by: Harvey Hunt <harvey.hunt@imgtec.com>
|
||||
Cc: linux-kernel@vger.kernel.org
|
||||
Cc: <stable@vger.kernel.org> # 2.6.18
|
||||
Signed-off-by: Tejun Heo <tj@kernel.org>
|
||||
---
|
||||
include/linux/libata.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/linux/libata.h b/include/linux/libata.h
|
||||
index bec2abb..2c4ebef 100644
|
||||
--- a/include/linux/libata.h
|
||||
+++ b/include/linux/libata.h
|
||||
@@ -720,7 +720,7 @@ struct ata_device {
|
||||
union {
|
||||
u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
|
||||
u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
|
||||
- };
|
||||
+ } ____cacheline_aligned;
|
||||
|
||||
/* DEVSLP Timing Variables from Identify Device Data Log */
|
||||
u8 devslp_timing[ATA_LOG_DEVSLP_SIZE];
|
||||
--
|
||||
2.7.2
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
From 287e6611ab1eac76c2c5ebf6e345e04c80ca9c61 Mon Sep 17 00:00:00 2001
|
||||
From: Arnd Bergmann <arnd@arndb.de>
|
||||
Date: Thu, 11 Feb 2016 14:16:27 +0100
|
||||
Subject: [PATCH] libata: fix HDIO_GET_32BIT ioctl
|
||||
|
||||
As reported by Soohoon Lee, the HDIO_GET_32BIT ioctl does not
|
||||
work correctly in compat mode with libata.
|
||||
|
||||
I have investigated the issue further and found multiple problems
|
||||
that all appeared with the same commit that originally introduced
|
||||
HDIO_GET_32BIT handling in libata back in linux-2.6.8 and presumably
|
||||
also linux-2.4, as the code uses "copy_to_user(arg, &val, 1)" to copy
|
||||
a 'long' variable containing either 0 or 1 to user space.
|
||||
|
||||
The problems with this are:
|
||||
|
||||
* On big-endian machines, this will always write a zero because it
|
||||
stores the wrong byte into user space.
|
||||
|
||||
* In compat mode, the upper three bytes of the variable are updated
|
||||
by the compat_hdio_ioctl() function, but they now contain
|
||||
uninitialized stack data.
|
||||
|
||||
* The hdparm tool calling this ioctl uses a 'static long' variable
|
||||
to store the result. This means at least the upper bytes are
|
||||
initialized to zero, but calling another ioctl like HDIO_GET_MULTCOUNT
|
||||
would fill them with data that remains stale when the low byte
|
||||
is overwritten. Fortunately libata doesn't implement any of the
|
||||
affected ioctl commands, so this would only happen when we query
|
||||
both an IDE and an ATA device in the same command such as
|
||||
"hdparm -N -c /dev/hda /dev/sda"
|
||||
|
||||
* The libata code for unknown reasons started using ATA_IOC_GET_IO32
|
||||
and ATA_IOC_SET_IO32 as aliases for HDIO_GET_32BIT and HDIO_SET_32BIT,
|
||||
while the ioctl commands that were added later use the normal
|
||||
HDIO_* names. This is harmless but rather confusing.
|
||||
|
||||
This addresses all four issues by changing the code to use put_user()
|
||||
on an 'unsigned long' variable in HDIO_GET_32BIT, like the IDE subsystem
|
||||
does, and by clarifying the names of the ioctl commands.
|
||||
|
||||
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||
Reported-by: Soohoon Lee <Soohoon.Lee@f5.com>
|
||||
Tested-by: Soohoon Lee <Soohoon.Lee@f5.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Tejun Heo <tj@kernel.org>
|
||||
---
|
||||
drivers/ata/libata-scsi.c | 11 +++++------
|
||||
include/linux/ata.h | 4 ++--
|
||||
2 files changed, 7 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
|
||||
index 7e959f9..e417e1a 100644
|
||||
--- a/drivers/ata/libata-scsi.c
|
||||
+++ b/drivers/ata/libata-scsi.c
|
||||
@@ -675,19 +675,18 @@ static int ata_ioc32(struct ata_port *ap)
|
||||
int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *scsidev,
|
||||
int cmd, void __user *arg)
|
||||
{
|
||||
- int val = -EINVAL, rc = -EINVAL;
|
||||
+ unsigned long val;
|
||||
+ int rc = -EINVAL;
|
||||
unsigned long flags;
|
||||
|
||||
switch (cmd) {
|
||||
- case ATA_IOC_GET_IO32:
|
||||
+ case HDIO_GET_32BIT:
|
||||
spin_lock_irqsave(ap->lock, flags);
|
||||
val = ata_ioc32(ap);
|
||||
spin_unlock_irqrestore(ap->lock, flags);
|
||||
- if (copy_to_user(arg, &val, 1))
|
||||
- return -EFAULT;
|
||||
- return 0;
|
||||
+ return put_user(val, (unsigned long __user *)arg);
|
||||
|
||||
- case ATA_IOC_SET_IO32:
|
||||
+ case HDIO_SET_32BIT:
|
||||
val = (unsigned long) arg;
|
||||
rc = 0;
|
||||
spin_lock_irqsave(ap->lock, flags);
|
||||
diff --git a/include/linux/ata.h b/include/linux/ata.h
|
||||
index d2992bf..c1a2f34 100644
|
||||
--- a/include/linux/ata.h
|
||||
+++ b/include/linux/ata.h
|
||||
@@ -487,8 +487,8 @@ enum ata_tf_protocols {
|
||||
};
|
||||
|
||||
enum ata_ioctls {
|
||||
- ATA_IOC_GET_IO32 = 0x309,
|
||||
- ATA_IOC_SET_IO32 = 0x324,
|
||||
+ ATA_IOC_GET_IO32 = 0x309, /* HDIO_GET_32BIT */
|
||||
+ ATA_IOC_SET_IO32 = 0x324, /* HDIO_SET_32BIT */
|
||||
};
|
||||
|
||||
/* core structures */
|
||||
--
|
||||
2.7.2
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- linux-4.4/net/ipv4/netfilter/ipt_IFWLOG.c~ 2016-01-24 13:19:13.233713998 +0100
|
||||
+++ linux-4.4/net/ipv4/netfilter/ipt_IFWLOG.c 2016-01-24 20:49:10.145823623 +0100
|
||||
@@ -74,7 +74,6 @@
|
||||
return;
|
||||
}
|
||||
|
||||
-nlmsg_failure:
|
||||
kfree_skb(skb);
|
||||
PRINTR(KERN_WARNING "IFWLOG: Error sending netlink packet\n");
|
||||
}
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
From b5a48134f8af08f5243328f8a0b05fc5ae7cf343 Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Tue, 22 Sep 2015 10:47:27 +0200
|
||||
Subject: [PATCH] iwlwifi: fix firmware filename for 3160
|
||||
|
||||
The MODULE_FIRMWARE() for 3160 should be using the 7260 version as
|
||||
it's done in the device configuration struct instead of referencing
|
||||
IWL3160_UCODE_API_OK which doesn't even exist.
|
||||
|
||||
Cc: <stable@vger.kernel.org> [3.8+]
|
||||
Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-7000.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-7000.c b/drivers/net/wireless/iwlwifi/iwl-7000.c
|
||||
index 6951aba..3fb327d 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-7000.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-7000.c
|
||||
@@ -348,6 +348,6 @@ const struct iwl_cfg iwl7265d_n_cfg = {
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL7260_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
-MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL3160_UCODE_API_OK));
|
||||
+MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
MODULE_FIRMWARE(IWL7265_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
MODULE_FIRMWARE(IWL7265D_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
--
|
||||
2.6.2
|
||||
|
||||
-148
@@ -1,148 +0,0 @@
|
||||
From: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Subject: [PATCH] rtlwifi: rtl8821ae: Fix system lockups on boot
|
||||
Date: Fri, 2 Oct 2015 11:44:30 -0500
|
||||
|
||||
In commit 1277fa2ab2f9, the code that cleared all interrupt enable
|
||||
bits before setting them was removed for all PCI drivers. This fixed an
|
||||
issue that caused TX to be blocked for 3-5 seconds. On some RTL8821AE units,
|
||||
this change causes soft lockups to occur on boot. For that reason, the portion
|
||||
of the earlier commit that applied to rtl8821ae is reverted. Kernels 4.1 and
|
||||
newer are affected.
|
||||
|
||||
See http://marc.info/?l=linux-wireless&m=144373370103285&w=2 and
|
||||
https://bugzilla.opensuse.org/show_bug.cgi?id=944978 for two cases where
|
||||
this regression affected user systems. Note that this bug does not appear on
|
||||
any of the developer's setups. For those users whose systems are affected
|
||||
by the TX blockage, but do not lock up on boot, a module parameter is added
|
||||
to disable the interrupt clear
|
||||
|
||||
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Cc: Stable <stable@vger.kernel.org> [V4.1+]
|
||||
---
|
||||
|
||||
Kalle,
|
||||
|
||||
If possible, please send this patch upstream for inclusion in kernel 4.3.
|
||||
As noted, the bug affects kernels 4.1 and newer.
|
||||
|
||||
This patch applies to wireless-drivers-next, and assumes that the patch that
|
||||
moved all the Realtek drivers into drivers/net/wireless/realtek has NOT been
|
||||
applied.
|
||||
|
||||
Thanks,
|
||||
|
||||
Larry
|
||||
---
|
||||
drivers/net/wireless/rtlwifi/pci.h | 2 ++
|
||||
drivers/net/wireless/rtlwifi/rtl8821ae/hw.c | 17 +++++++++++++++++
|
||||
drivers/net/wireless/rtlwifi/rtl8821ae/sw.c | 5 +++++
|
||||
drivers/net/wireless/rtlwifi/wifi.h | 3 +++
|
||||
4 files changed, 27 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/rtlwifi/pci.h b/drivers/net/wireless/rtlwifi/pci.h
|
||||
index d4567d1..5da6703 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/pci.h
|
||||
+++ b/drivers/net/wireless/rtlwifi/pci.h
|
||||
@@ -247,6 +247,8 @@ struct rtl_pci {
|
||||
/* MSI support */
|
||||
bool msi_support;
|
||||
bool using_msi;
|
||||
+ /* interrupt clear before set */
|
||||
+ bool int_clear;
|
||||
};
|
||||
|
||||
struct mp_adapter {
|
||||
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c b/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
index b7f18e21..6e9418e 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
@@ -2253,11 +2253,28 @@ void rtl8821ae_set_qos(struct ieee80211_hw *hw, int aci)
|
||||
}
|
||||
}
|
||||
|
||||
+static void rtl8821ae_clear_interrupt(struct ieee80211_hw *hw)
|
||||
+{
|
||||
+ struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
+ u32 tmp = rtl_read_dword(rtlpriv, REG_HISR);
|
||||
+
|
||||
+ rtl_write_dword(rtlpriv, REG_HISR, tmp);
|
||||
+
|
||||
+ tmp = rtl_read_dword(rtlpriv, REG_HISRE);
|
||||
+ rtl_write_dword(rtlpriv, REG_HISRE, tmp);
|
||||
+
|
||||
+ tmp = rtl_read_dword(rtlpriv, REG_HSISR);
|
||||
+ rtl_write_dword(rtlpriv, REG_HSISR, tmp);
|
||||
+}
|
||||
+
|
||||
void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
||||
+ if (!rtlpci->int_clear)
|
||||
+ rtl8821ae_clear_interrupt(hw);/*clear it here first*/
|
||||
+
|
||||
rtl_write_dword(rtlpriv, REG_HIMR, rtlpci->irq_mask[0] & 0xFFFFFFFF);
|
||||
rtl_write_dword(rtlpriv, REG_HIMRE, rtlpci->irq_mask[1] & 0xFFFFFFFF);
|
||||
rtlpci->irq_enabled = true;
|
||||
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
index a4988121..8ee141a 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
@@ -96,6 +96,7 @@ int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw)
|
||||
|
||||
rtl8821ae_bt_reg_init(hw);
|
||||
rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support;
|
||||
+ rtlpci->int_clear = rtlpriv->cfg->mod_params->int_clear;
|
||||
rtlpriv->btcoexist.btc_ops = rtl_btc_get_ops_pointer();
|
||||
|
||||
rtlpriv->dm.dm_initialgain_enable = 1;
|
||||
@@ -167,6 +168,7 @@ int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw)
|
||||
rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps;
|
||||
rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps;
|
||||
rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support;
|
||||
+ rtlpci->msi_support = rtlpriv->cfg->mod_params->int_clear;
|
||||
if (rtlpriv->cfg->mod_params->disable_watchdog)
|
||||
pr_info("watchdog disabled\n");
|
||||
rtlpriv->psc.reg_fwctrl_lps = 3;
|
||||
@@ -308,6 +310,7 @@ static struct rtl_mod_params rtl8821ae_mod_params = {
|
||||
.swctrl_lps = false,
|
||||
.fwctrl_lps = true,
|
||||
.msi_support = true,
|
||||
+ .int_clear = true,
|
||||
.debug = DBG_EMERG,
|
||||
.disable_watchdog = 0,
|
||||
};
|
||||
@@ -437,6 +440,7 @@ module_param_named(fwlps, rtl8821ae_mod_params.fwctrl_lps, bool, 0444);
|
||||
module_param_named(msi, rtl8821ae_mod_params.msi_support, bool, 0444);
|
||||
module_param_named(disable_watchdog, rtl8821ae_mod_params.disable_watchdog,
|
||||
bool, 0444);
|
||||
+module_param_named(int_clear, rtl8821ae_mod_params.int_clear, bool, 0444);
|
||||
MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n");
|
||||
MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n");
|
||||
MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
|
||||
@@ -444,6 +448,7 @@ MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
|
||||
MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 1)\n");
|
||||
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
|
||||
MODULE_PARM_DESC(disable_watchdog, "Set to 1 to disable the watchdog (default 0)\n");
|
||||
+MODULE_PARM_DESC(int_clear, "Set to 1 to disable interrupt clear before set (default 0)\n");
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
|
||||
|
||||
diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
|
||||
index b90ca61..4544752 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/wifi.h
|
||||
+++ b/drivers/net/wireless/rtlwifi/wifi.h
|
||||
@@ -2249,6 +2249,9 @@ struct rtl_mod_params {
|
||||
|
||||
/* default 0: 1 means disable */
|
||||
bool disable_watchdog;
|
||||
+
|
||||
+ /* default 0: 1 means do not disable interrupts */
|
||||
+ bool int_clear;
|
||||
};
|
||||
|
||||
struct rtl_hal_usbint_cfg {
|
||||
--
|
||||
2.1.4
|
||||
|
||||
-74
@@ -1,74 +0,0 @@
|
||||
SCSI: Fix NULL pointer dereference in RTPM of block layer
|
||||
|
||||
The routines in scsi_pm.c assume that if a runtime-PM callback is
|
||||
invoked for a SCSI device, it can only mean that the device's driver
|
||||
has asked the block layer to handle the runtime power management (by
|
||||
calling blk_pm_runtime_init(), which among other things sets q->dev).
|
||||
|
||||
However, this assumption turns out to be wrong for things like the ses
|
||||
driver. Normally ses devices are not allowed to do runtime PM, but
|
||||
userspace can override this setting. If this happens, the kernel gets
|
||||
a NULL pointer dereference when blk_post_runtime_resume() tries to use
|
||||
the uninitialized q->dev pointer.
|
||||
|
||||
This patch fixes the problem by checking q->dev in block layer before
|
||||
handle runtime PM. Since ses doesn't define any PM callbacks and call
|
||||
blk_pm_runtime_init(), the crash won't occur.
|
||||
|
||||
This fixes Bugzilla #101371.
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=101371
|
||||
|
||||
Signed-off-by: Ken Xue <Ken.Xue@amd.com>
|
||||
Acked-by: Alan Stern <stern@rowland.harvard.edu>
|
||||
Cc: stable@vger.kernel.org
|
||||
|
||||
---
|
||||
block/blk-core.c | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/block/blk-core.c b/block/blk-core.c
|
||||
index 60912e9..a07ab18 100644
|
||||
--- a/block/blk-core.c
|
||||
+++ b/block/blk-core.c
|
||||
@@ -3280,6 +3280,9 @@ int blk_pre_runtime_suspend(struct request_queue *q)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
+ if (!q->dev)
|
||||
+ return ret;
|
||||
+
|
||||
spin_lock_irq(q->queue_lock);
|
||||
if (q->nr_pending) {
|
||||
ret = -EBUSY;
|
||||
@@ -3307,6 +3310,9 @@ EXPORT_SYMBOL(blk_pre_runtime_suspend);
|
||||
*/
|
||||
void blk_post_runtime_suspend(struct request_queue *q, int err)
|
||||
{
|
||||
+ if (!q->dev)
|
||||
+ return;
|
||||
+
|
||||
spin_lock_irq(q->queue_lock);
|
||||
if (!err) {
|
||||
q->rpm_status = RPM_SUSPENDED;
|
||||
@@ -3331,6 +3337,9 @@ EXPORT_SYMBOL(blk_post_runtime_suspend);
|
||||
*/
|
||||
void blk_pre_runtime_resume(struct request_queue *q)
|
||||
{
|
||||
+ if (!q->dev)
|
||||
+ return;
|
||||
+
|
||||
spin_lock_irq(q->queue_lock);
|
||||
q->rpm_status = RPM_RESUMING;
|
||||
spin_unlock_irq(q->queue_lock);
|
||||
@@ -3353,6 +3362,9 @@ EXPORT_SYMBOL(blk_pre_runtime_resume);
|
||||
*/
|
||||
void blk_post_runtime_resume(struct request_queue *q, int err)
|
||||
{
|
||||
+ if (!q->dev)
|
||||
+ return;
|
||||
+
|
||||
spin_lock_irq(q->queue_lock);
|
||||
if (!err) {
|
||||
q->rpm_status = RPM_ACTIVE;
|
||||
--
|
||||
1.9.1
|
||||
-64
@@ -1,64 +0,0 @@
|
||||
Revert "SCSI: Fix NULL pointer dereference in runtime PM"
|
||||
|
||||
This reverts commit 49718f0fb8c9 ("SCSI: Fix NULL pointer dereference in
|
||||
runtime PM")
|
||||
|
||||
The old commit may lead to a issue that blk_{pre|post}_runtime_suspend and
|
||||
blk_{pre|post}_runtime_resume can not be called in pairs.
|
||||
|
||||
Take sr device as example, when sr device goes to runtime suspend,
|
||||
blk_{pre|post}_runtime_suspend will be called since sr device defined
|
||||
pm->runtime_suspend. But blk_{pre|post}_runtime_resume will not be called
|
||||
since sr device doesn't have pm->runtime_resume. Then sr device can not
|
||||
resume correctly anymore.
|
||||
|
||||
Signed-off-by: Ken Xue <Ken.Xue@amd.com>
|
||||
Acked-by: Alan Stern <stern@rowland.harvard.edu>
|
||||
Cc: stable@vger.kernel.org
|
||||
|
||||
---
|
||||
drivers/scsi/scsi_pm.c | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/scsi/scsi_pm.c b/drivers/scsi/scsi_pm.c
|
||||
index e4b7998..459abe1 100644
|
||||
--- a/drivers/scsi/scsi_pm.c
|
||||
+++ b/drivers/scsi/scsi_pm.c
|
||||
@@ -219,13 +219,13 @@ static int sdev_runtime_suspend(struct device *dev)
|
||||
struct scsi_device *sdev = to_scsi_device(dev);
|
||||
int err = 0;
|
||||
|
||||
- if (pm && pm->runtime_suspend) {
|
||||
- err = blk_pre_runtime_suspend(sdev->request_queue);
|
||||
- if (err)
|
||||
- return err;
|
||||
+ err = blk_pre_runtime_suspend(sdev->request_queue);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+ if (pm && pm->runtime_suspend)
|
||||
err = pm->runtime_suspend(dev);
|
||||
- blk_post_runtime_suspend(sdev->request_queue, err);
|
||||
- }
|
||||
+ blk_post_runtime_suspend(sdev->request_queue, err);
|
||||
+
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -248,11 +248,11 @@ static int sdev_runtime_resume(struct device *dev)
|
||||
const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
|
||||
int err = 0;
|
||||
|
||||
- if (pm && pm->runtime_resume) {
|
||||
- blk_pre_runtime_resume(sdev->request_queue);
|
||||
+ blk_pre_runtime_resume(sdev->request_queue);
|
||||
+ if (pm && pm->runtime_resume)
|
||||
err = pm->runtime_resume(dev);
|
||||
- blk_post_runtime_resume(sdev->request_queue, err);
|
||||
- }
|
||||
+ blk_post_runtime_resume(sdev->request_queue, err);
|
||||
+
|
||||
return err;
|
||||
}
|
||||
|
||||
--
|
||||
1.9.1
|
||||
@@ -14,9 +14,27 @@
|
||||
###
|
||||
### Stable Queue
|
||||
###
|
||||
stable-mac80211-fix-hwflags-debugfs-file-format.patch
|
||||
stable-ath9k-declare-required-extra-tx-headroom.patch
|
||||
stable-mmc-core-fix-init_card-in-52mhz.patch
|
||||
stable-use-d_seq-to-get-coherency-between-d_inode-and-d_flags.patch
|
||||
stable-drivers-sh-restore-legacy-clock-domain-on-superh-platforms.patch
|
||||
stable-btrfs-fix-deadlock-running-delayed-iputs-at-transaction-commit-time.patch
|
||||
stable-btrfs-fix-no_space-in-write-and-rm-loop.patch
|
||||
stable-btrfs-async-thread-fix-a-use-after-free-error-for-trace.patch
|
||||
stable-drm-amdgpu-mask-out-wc-from-bo-on-unsupported-arches.patch
|
||||
stable-block-initialize-max_dev_sectors-to-0.patch
|
||||
stable-pci-keystone-fix-msi-code-that-retrieves-struct-pcie_port-pointer.patch
|
||||
stable-parisc-fix-ptrace-syscall-number-and-return-value-modification.patch
|
||||
stable-mips-kvm-fix-ioctl-error-handling.patch
|
||||
stable-kvm-x86-update-tsc-multiplier-on-change.patch
|
||||
stable-fbcon-set-a-default-value-to-blink-interval.patch
|
||||
stable-cifs-fix-out-of-bounds-access-in-lease-parsing.patch
|
||||
stable-cifs-fix-smb2-interim-response-processing-for-read-requests.patch
|
||||
stable-fix-cifs_uniqueid_to_ino_t-function-for-s390x.patch
|
||||
stable-vfio-fix-ioctl-error-handling.patch
|
||||
stable-kvm-x86-fix-root-cause-for-missed-hardware-breakpoints.patch
|
||||
stable-arm-arm64-kvm-fix-ioctl-error-handling.patch
|
||||
stable-iommu-amd-apply-workaround-for-ats-write-permission-check.patch
|
||||
stable-iommu-amd-fix-boot-warning-when-device-00-00.0-is-not-iommu-covered.patch
|
||||
stable-iommu-vt-d-use-bus_notify_removed_device-in-hotplug-path.patch
|
||||
|
||||
###
|
||||
### Arch x86
|
||||
@@ -41,8 +59,8 @@ x86-increase-default-minimum-vmalloc-area-by-64MB-to-192MB.patch
|
||||
# slows down boot
|
||||
Revert-cpufreq-pcc-Enable-autoload-of-pcc-cpufreq-fo.patch
|
||||
|
||||
# EFI
|
||||
x86-efi-Fix-multiple-GOP-device-support.patch
|
||||
# breaks nvidia304
|
||||
Revert-x86-mm-mtrr-Remove-kernel-internal-MTRR-inter.patch
|
||||
|
||||
###
|
||||
### Core
|
||||
@@ -77,6 +95,9 @@ acpi-CLEVO-M360S-disable_acpi_irq.patch
|
||||
# Clevo M720SR freezes with C3
|
||||
acpi-processor-M720SR-limit-to-C2.patch
|
||||
|
||||
# backlight fixes
|
||||
ACPI-video-Add-a-quirk-to-force-acpi-video-backlight.patch
|
||||
|
||||
###
|
||||
### Block
|
||||
###
|
||||
@@ -119,20 +140,27 @@ ata-prefer-ata-drivers-over-ide-drivers-when-both-are-built.patch
|
||||
# Nice SSD speedup
|
||||
block-Make-CFQ-default-to-IOPS-mode-on-SSDs.patch
|
||||
|
||||
# properly fix null pointer deref introduced in 4.1.7
|
||||
scsi-Revert-SCSI-Fix-NULL-pointer-dereference-in-runtime-PM.patch
|
||||
scsi-Fix-NULL-pointer-dereference-in-RTPM-of-block-layer.patch
|
||||
# ahci ids
|
||||
ahci-add-new-Intel-device-IDs.patch
|
||||
ata-Adding-Intel-Lewisburg-device-IDs-for-SATA.patch
|
||||
|
||||
# fix unwanted automounting of partitions
|
||||
ata-ahci-don-t-mark-HotPlugCapable-Ports-as-external.patch
|
||||
|
||||
# libata fixes
|
||||
libata-Align-ata_device-s-id-on-a-cacheline.patch
|
||||
libata-fix-HDIO_GET_32BIT-ioctl.patch
|
||||
|
||||
###
|
||||
### File-system
|
||||
###
|
||||
|
||||
# aufs from: http://aufs.sourceforge.net/ (mga#8314)
|
||||
fs-aufs4.patch
|
||||
fs-aufs4-modular.patch
|
||||
fs-aufs-4.4.patch
|
||||
fs-aufs-4.4-modular.patch
|
||||
|
||||
# btrfs memleak
|
||||
fs-btrfs-fix-possible-leak-in-btrfs_ioctl_balance.patch
|
||||
# ovl fixes
|
||||
fs-ovl-move-super-block-magic-number-to-magic.h.patch
|
||||
|
||||
###
|
||||
### FireWire
|
||||
@@ -167,6 +195,32 @@ gpu-drm-mach64-linux-3.14-buildfix.patch
|
||||
gpu-drm-mach64-3.17-buildfix.patch
|
||||
gpu-drm-mach64-3.18-buildfix.patch
|
||||
|
||||
# drm fixes
|
||||
gpu-drm-i915-Fix-RPS-pointer-passed-from-wait_ioctl-to-i915_wait_request.patch
|
||||
|
||||
# etnaviv / vivante gpu
|
||||
gpu-drm-0001-devicetree-add-vendor-prefix-for-Vivante-Corporation.patch
|
||||
gpu-drm-0002-drm-etnaviv-add-devicetree-bindings.patch
|
||||
gpu-drm-0003-drm-etnaviv-add-initial-etnaviv-DRM-driver.patch
|
||||
gpu-drm-0004-MAINTAINERS-add-maintainer-and-reviewers-for-the-etn.patch
|
||||
gpu-drm-0005-drm-etnaviv-unlock-on-error-in-etnaviv_gem_get_iova.patch
|
||||
gpu-drm-0006-drm-etnaviv-fix-workaround-for-GC500.patch
|
||||
|
||||
# vc4 3d accel support
|
||||
gpu-drm-0101-drm-Create-a-driver-hook-for-allocating-GEM-object-s.patch
|
||||
gpu-drm-0102-drm-vc4-Add-a-BO-cache.patch
|
||||
gpu-drm-0103-drm-vc4-Add-create-and-map-BO-ioctls.patch
|
||||
gpu-drm-0104-drm-vc4-Add-an-API-for-creating-GPU-shaders-in-GEM-B.patch
|
||||
gpu-drm-0105-drm-vc4-Fix-a-typo-in-a-V3D-debug-register.patch
|
||||
gpu-drm-0106-drm-vc4-Bind-and-initialize-the-V3D-engine.patch
|
||||
gpu-drm-0107-drm-vc4-Add-support-for-drawing-3D-frames.patch
|
||||
gpu-drm-0108-drm-vc4-Add-support-for-async-pageflips.patch
|
||||
gpu-drm-0109-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch
|
||||
|
||||
# radeon breakage fixes
|
||||
gpu-drm-radeon-Update-radeon_get_vblank_counter_kms.patch
|
||||
gpu-drm-radeon-Drop-unnecessary-unsigned-int-0-check.patch
|
||||
|
||||
###
|
||||
### Hardware Monitoring
|
||||
###
|
||||
@@ -177,9 +231,6 @@ gpu-drm-mach64-3.18-buildfix.patch
|
||||
|
||||
input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch
|
||||
|
||||
# fix alps breakage
|
||||
input-alps-Only-the-Dell-Latitude-D420_430_620_630-have-separate-stick-button-bits.patch
|
||||
|
||||
###
|
||||
### idle
|
||||
###
|
||||
@@ -214,18 +265,13 @@ net-netfilter-IFWLOG-2.6.35-buildfix.patch
|
||||
net-netfilter-IFWLOG-2.6.37-buildfix.patch
|
||||
net-ipv4-netfilter-ipt_IFWLOG-3.6-buildfix.patch
|
||||
net-netfilter-IFWLOG-3.7-buildfix.patch
|
||||
net-netfilter-IFWLOG-remove-unused-label.patch
|
||||
|
||||
# netfilter psd support
|
||||
net-netfilter-psd.patch
|
||||
net-netfilter-psd-mdv.patch
|
||||
net-netfilter-psd-2.6.35-buildfix.patch
|
||||
|
||||
# wireless lockup
|
||||
net-wireless-rtlwifi-rtl8821ae-Fix-system-lockups-on-boot.patch
|
||||
|
||||
# iwlwifi borked fw reference
|
||||
net-wireless-iwlwifi-fix-firmware-filename-for-3160.patch
|
||||
|
||||
###
|
||||
### Platform drivers
|
||||
###
|
||||
@@ -261,8 +307,8 @@ include-kbuild-export-pci_ids.patch
|
||||
###
|
||||
|
||||
###
|
||||
### Thunderbolt
|
||||
thunderbolt-Allow-loading-of-module-on-recent-Apple-.patch
|
||||
###
|
||||
###
|
||||
|
||||
###
|
||||
### USB
|
||||
@@ -332,9 +378,6 @@ video-mageia-logo.patch
|
||||
|
||||
# add rtl8723bs support (mga#15874)
|
||||
3rd-rtl8723bs.patch
|
||||
3rd-rtl8723bs-buildfix.patch
|
||||
3rd-rtl8723bs-updates.patch
|
||||
3rd-rtl8723bs-4.2-buildfix.patch
|
||||
|
||||
###
|
||||
### Security
|
||||
@@ -352,6 +395,20 @@ video-mageia-logo.patch
|
||||
### ARM
|
||||
###
|
||||
|
||||
# RPi2 support
|
||||
arm-0001-dt-bindings-Add-root-properties-for-Raspberry-Pi-2.patch
|
||||
arm-0002-ARM-bcm2835-Add-a-compat-string-for-bcm2836-machine-.patch
|
||||
arm-0003-ARM-bcm2835-Add-Kconfig-support-for-bcm2836.patch
|
||||
arm-0011-ARM-bcm2835-Define-two-new-packets-from-the-latest-f.patch
|
||||
arm-0012-dt-bindings-add-rpi-power-domain-driver-bindings.patch
|
||||
arm-0013-ARM-bcm2835-add-rpi-power-domain-driver.patch
|
||||
arm-0021-ARM-bcm2835-Split-the-DT-for-peripherals-from-the-DT.patch
|
||||
arm-0022-ARM-bcm2835-Move-the-CPU-peripheral-include-out-of-c.patch
|
||||
arm-0023-ARM-bcm2835-Add-devicetree-for-bcm2836-and-Raspberry.patch
|
||||
arm-0024-ARM-bcm2835-Add-the-auxiliary-clocks-to-the-device-t.patch
|
||||
arm-0031-ARM-bcm2835-enable-all-bcm2835-relevant-in-defconfig.patch
|
||||
arm-0032-ARM-bcm2835-enable-auxiliary-spi-driver-in-defconfig.patch
|
||||
|
||||
###
|
||||
### IA64
|
||||
###
|
||||
@@ -359,3 +416,7 @@ video-mageia-logo.patch
|
||||
###
|
||||
### Tools
|
||||
###
|
||||
|
||||
###
|
||||
### UAPI
|
||||
###
|
||||
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
From 4cad67fca3fc952d6f2ed9e799621f07666a560f Mon Sep 17 00:00:00 2001
|
||||
From: "Michael S. Tsirkin" <mst@redhat.com>
|
||||
Date: Sun, 28 Feb 2016 17:32:07 +0200
|
||||
Subject: arm/arm64: KVM: Fix ioctl error handling
|
||||
|
||||
From: Michael S. Tsirkin <mst@redhat.com>
|
||||
|
||||
commit 4cad67fca3fc952d6f2ed9e799621f07666a560f upstream.
|
||||
|
||||
Calling return copy_to_user(...) in an ioctl will not
|
||||
do the right thing if there's a pagefault:
|
||||
copy_to_user returns the number of bytes not copied
|
||||
in this case.
|
||||
|
||||
Fix up kvm to do
|
||||
return copy_to_user(...)) ? -EFAULT : 0;
|
||||
|
||||
everywhere.
|
||||
|
||||
Acked-by: Christoffer Dall <christoffer.dall@linaro.org>
|
||||
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
arch/arm/kvm/guest.c | 2 +-
|
||||
arch/arm64/kvm/guest.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/arch/arm/kvm/guest.c
|
||||
+++ b/arch/arm/kvm/guest.c
|
||||
@@ -155,7 +155,7 @@ static int get_timer_reg(struct kvm_vcpu
|
||||
u64 val;
|
||||
|
||||
val = kvm_arm_timer_get_reg(vcpu, reg->id);
|
||||
- return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id));
|
||||
+ return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
static unsigned long num_core_regs(void)
|
||||
--- a/arch/arm64/kvm/guest.c
|
||||
+++ b/arch/arm64/kvm/guest.c
|
||||
@@ -186,7 +186,7 @@ static int get_timer_reg(struct kvm_vcpu
|
||||
u64 val;
|
||||
|
||||
val = kvm_arm_timer_get_reg(vcpu, reg->id);
|
||||
- return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id));
|
||||
+ return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
From 029cd0370241641eb70235d205aa0b90c84dce44 Mon Sep 17 00:00:00 2001
|
||||
From: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Thu, 24 Sep 2015 16:59:46 +0200
|
||||
Subject: ath9k: declare required extra tx headroom
|
||||
|
||||
From: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
commit 029cd0370241641eb70235d205aa0b90c84dce44 upstream.
|
||||
|
||||
ath9k inserts padding between the 802.11 header and the data area (to
|
||||
align it). Since it didn't declare this extra required headroom, this
|
||||
led to some nasty issues like randomly dropped packets in some setups.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/net/wireless/ath/ath9k/init.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -874,6 +874,7 @@ static void ath9k_set_hw_capab(struct at
|
||||
hw->max_rate_tries = 10;
|
||||
hw->sta_data_size = sizeof(struct ath_node);
|
||||
hw->vif_data_size = sizeof(struct ath_vif);
|
||||
+ hw->extra_tx_headroom = 4;
|
||||
|
||||
hw->wiphy->available_antennas_rx = BIT(ah->caps.max_rxchains) - 1;
|
||||
hw->wiphy->available_antennas_tx = BIT(ah->caps.max_txchains) - 1;
|
||||
@@ -0,0 +1,36 @@
|
||||
From 5f009d3f8e6685fe8c6215082c1696a08b411220 Mon Sep 17 00:00:00 2001
|
||||
From: Keith Busch <keith.busch@intel.com>
|
||||
Date: Wed, 10 Feb 2016 16:52:47 -0700
|
||||
Subject: block: Initialize max_dev_sectors to 0
|
||||
|
||||
From: Keith Busch <keith.busch@intel.com>
|
||||
|
||||
commit 5f009d3f8e6685fe8c6215082c1696a08b411220 upstream.
|
||||
|
||||
The new queue limit is not used by the majority of block drivers, and
|
||||
should be initialized to 0 for the driver's requested settings to be used.
|
||||
|
||||
Signed-off-by: Keith Busch <keith.busch@intel.com>
|
||||
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
|
||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
||||
Signed-off-by: Jens Axboe <axboe@fb.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
block/blk-settings.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/block/blk-settings.c
|
||||
+++ b/block/blk-settings.c
|
||||
@@ -91,8 +91,8 @@ void blk_set_default_limits(struct queue
|
||||
lim->seg_boundary_mask = BLK_SEG_BOUNDARY_MASK;
|
||||
lim->virt_boundary_mask = 0;
|
||||
lim->max_segment_size = BLK_MAX_SEGMENT_SIZE;
|
||||
- lim->max_sectors = lim->max_dev_sectors = lim->max_hw_sectors =
|
||||
- BLK_SAFE_MAX_SECTORS;
|
||||
+ lim->max_sectors = lim->max_hw_sectors = BLK_SAFE_MAX_SECTORS;
|
||||
+ lim->max_dev_sectors = 0;
|
||||
lim->chunk_sectors = 0;
|
||||
lim->max_write_same_sectors = 0;
|
||||
lim->max_discard_sectors = 0;
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
From 0a95b851370b84a4b9d92ee6d1fa0926901d0454 Mon Sep 17 00:00:00 2001
|
||||
From: Qu Wenruo <quwenruo@cn.fujitsu.com>
|
||||
Date: Fri, 22 Jan 2016 09:28:38 +0800
|
||||
Subject: btrfs: async-thread: Fix a use-after-free error for trace
|
||||
|
||||
From: Qu Wenruo <quwenruo@cn.fujitsu.com>
|
||||
|
||||
commit 0a95b851370b84a4b9d92ee6d1fa0926901d0454 upstream.
|
||||
|
||||
Parameter of trace_btrfs_work_queued() can be freed in its workqueue.
|
||||
So no one use use that pointer after queue_work().
|
||||
|
||||
Fix the user-after-free bug by move the trace line before queue_work().
|
||||
|
||||
Reported-by: Dave Jones <davej@codemonkey.org.uk>
|
||||
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
|
||||
Reviewed-by: David Sterba <dsterba@suse.com>
|
||||
Signed-off-by: Chris Mason <clm@fb.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
fs/btrfs/async-thread.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/fs/btrfs/async-thread.c
|
||||
+++ b/fs/btrfs/async-thread.c
|
||||
@@ -328,8 +328,8 @@ static inline void __btrfs_queue_work(st
|
||||
list_add_tail(&work->ordered_list, &wq->ordered_list);
|
||||
spin_unlock_irqrestore(&wq->list_lock, flags);
|
||||
}
|
||||
- queue_work(wq->normal_wq, &work->normal_work);
|
||||
trace_btrfs_work_queued(work);
|
||||
+ queue_work(wq->normal_wq, &work->normal_work);
|
||||
}
|
||||
|
||||
void btrfs_queue_work(struct btrfs_workqueue *wq,
|
||||
+238
@@ -0,0 +1,238 @@
|
||||
From c2d6cb1636d235257086f939a8194ef0bf93af6e Mon Sep 17 00:00:00 2001
|
||||
From: Filipe Manana <fdmanana@suse.com>
|
||||
Date: Fri, 15 Jan 2016 11:05:12 +0000
|
||||
Subject: Btrfs: fix deadlock running delayed iputs at transaction commit time
|
||||
|
||||
From: Filipe Manana <fdmanana@suse.com>
|
||||
|
||||
commit c2d6cb1636d235257086f939a8194ef0bf93af6e upstream.
|
||||
|
||||
While running a stress test I ran into a deadlock when running the delayed
|
||||
iputs at transaction time, which produced the following report and trace:
|
||||
|
||||
[ 886.399989] =============================================
|
||||
[ 886.400871] [ INFO: possible recursive locking detected ]
|
||||
[ 886.401663] 4.4.0-rc6-btrfs-next-18+ #1 Not tainted
|
||||
[ 886.402384] ---------------------------------------------
|
||||
[ 886.403182] fio/8277 is trying to acquire lock:
|
||||
[ 886.403568] (&fs_info->delayed_iput_sem){++++..}, at: [<ffffffffa0538823>] btrfs_run_delayed_iputs+0x36/0xbf [btrfs]
|
||||
[ 886.403568]
|
||||
[ 886.403568] but task is already holding lock:
|
||||
[ 886.403568] (&fs_info->delayed_iput_sem){++++..}, at: [<ffffffffa0538823>] btrfs_run_delayed_iputs+0x36/0xbf [btrfs]
|
||||
[ 886.403568]
|
||||
[ 886.403568] other info that might help us debug this:
|
||||
[ 886.403568] Possible unsafe locking scenario:
|
||||
[ 886.403568]
|
||||
[ 886.403568] CPU0
|
||||
[ 886.403568] ----
|
||||
[ 886.403568] lock(&fs_info->delayed_iput_sem);
|
||||
[ 886.403568] lock(&fs_info->delayed_iput_sem);
|
||||
[ 886.403568]
|
||||
[ 886.403568] *** DEADLOCK ***
|
||||
[ 886.403568]
|
||||
[ 886.403568] May be due to missing lock nesting notation
|
||||
[ 886.403568]
|
||||
[ 886.403568] 3 locks held by fio/8277:
|
||||
[ 886.403568] #0: (sb_writers#11){.+.+.+}, at: [<ffffffff81174c4c>] __sb_start_write+0x5f/0xb0
|
||||
[ 886.403568] #1: (&sb->s_type->i_mutex_key#15){+.+.+.}, at: [<ffffffffa054620d>] btrfs_file_write_iter+0x73/0x408 [btrfs]
|
||||
[ 886.403568] #2: (&fs_info->delayed_iput_sem){++++..}, at: [<ffffffffa0538823>] btrfs_run_delayed_iputs+0x36/0xbf [btrfs]
|
||||
[ 886.403568]
|
||||
[ 886.403568] stack backtrace:
|
||||
[ 886.403568] CPU: 6 PID: 8277 Comm: fio Not tainted 4.4.0-rc6-btrfs-next-18+ #1
|
||||
[ 886.403568] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014
|
||||
[ 886.403568] 0000000000000000 ffff88009f80f770 ffffffff8125d4fd ffffffff82af1fc0
|
||||
[ 886.403568] ffff88009f80f830 ffffffff8108e5f9 0000000200000000 ffff88009fd92290
|
||||
[ 886.403568] 0000000000000000 ffffffff82af1fc0 ffffffff829cfb01 00042b216d008804
|
||||
[ 886.403568] Call Trace:
|
||||
[ 886.403568] [<ffffffff8125d4fd>] dump_stack+0x4e/0x79
|
||||
[ 886.403568] [<ffffffff8108e5f9>] __lock_acquire+0xd42/0xf0b
|
||||
[ 886.403568] [<ffffffff810c22db>] ? __module_address+0xdf/0x108
|
||||
[ 886.403568] [<ffffffff8108eb77>] lock_acquire+0x10d/0x194
|
||||
[ 886.403568] [<ffffffff8108eb77>] ? lock_acquire+0x10d/0x194
|
||||
[ 886.403568] [<ffffffffa0538823>] ? btrfs_run_delayed_iputs+0x36/0xbf [btrfs]
|
||||
[ 886.489542] [<ffffffff8148556b>] down_read+0x3e/0x4d
|
||||
[ 886.489542] [<ffffffffa0538823>] ? btrfs_run_delayed_iputs+0x36/0xbf [btrfs]
|
||||
[ 886.489542] [<ffffffffa0538823>] btrfs_run_delayed_iputs+0x36/0xbf [btrfs]
|
||||
[ 886.489542] [<ffffffffa0533953>] btrfs_commit_transaction+0x8f5/0x96e [btrfs]
|
||||
[ 886.489542] [<ffffffffa0521d7a>] flush_space+0x435/0x44a [btrfs]
|
||||
[ 886.489542] [<ffffffffa052218b>] ? reserve_metadata_bytes+0x26a/0x384 [btrfs]
|
||||
[ 886.489542] [<ffffffffa05221ae>] reserve_metadata_bytes+0x28d/0x384 [btrfs]
|
||||
[ 886.489542] [<ffffffffa052256c>] ? btrfs_block_rsv_refill+0x58/0x96 [btrfs]
|
||||
[ 886.489542] [<ffffffffa0522584>] btrfs_block_rsv_refill+0x70/0x96 [btrfs]
|
||||
[ 886.489542] [<ffffffffa053d747>] btrfs_evict_inode+0x394/0x55a [btrfs]
|
||||
[ 886.489542] [<ffffffff81188e31>] evict+0xa7/0x15c
|
||||
[ 886.489542] [<ffffffff81189878>] iput+0x1d3/0x266
|
||||
[ 886.489542] [<ffffffffa053887c>] btrfs_run_delayed_iputs+0x8f/0xbf [btrfs]
|
||||
[ 886.489542] [<ffffffffa0533953>] btrfs_commit_transaction+0x8f5/0x96e [btrfs]
|
||||
[ 886.489542] [<ffffffff81085096>] ? signal_pending_state+0x31/0x31
|
||||
[ 886.489542] [<ffffffffa0521191>] btrfs_alloc_data_chunk_ondemand+0x1d7/0x288 [btrfs]
|
||||
[ 886.489542] [<ffffffffa0521282>] btrfs_check_data_free_space+0x40/0x59 [btrfs]
|
||||
[ 886.489542] [<ffffffffa05228f5>] btrfs_delalloc_reserve_space+0x1e/0x4e [btrfs]
|
||||
[ 886.489542] [<ffffffffa053620a>] btrfs_direct_IO+0x10c/0x27e [btrfs]
|
||||
[ 886.489542] [<ffffffff8111d9a1>] generic_file_direct_write+0xb3/0x128
|
||||
[ 886.489542] [<ffffffffa05463c3>] btrfs_file_write_iter+0x229/0x408 [btrfs]
|
||||
[ 886.489542] [<ffffffff8108ae38>] ? __lock_is_held+0x38/0x50
|
||||
[ 886.489542] [<ffffffff8117279e>] __vfs_write+0x7c/0xa5
|
||||
[ 886.489542] [<ffffffff81172cda>] vfs_write+0xa0/0xe4
|
||||
[ 886.489542] [<ffffffff811734cc>] SyS_write+0x50/0x7e
|
||||
[ 886.489542] [<ffffffff814872d7>] entry_SYSCALL_64_fastpath+0x12/0x6f
|
||||
[ 1081.852335] INFO: task fio:8244 blocked for more than 120 seconds.
|
||||
[ 1081.854348] Not tainted 4.4.0-rc6-btrfs-next-18+ #1
|
||||
[ 1081.857560] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
|
||||
[ 1081.863227] fio D ffff880213f9bb28 0 8244 8240 0x00000000
|
||||
[ 1081.868719] ffff880213f9bb28 00ffffff810fc6b0 ffffffff0000000a ffff88023ed55240
|
||||
[ 1081.872499] ffff880206b5d400 ffff880213f9c000 ffff88020a4d5318 ffff880206b5d400
|
||||
[ 1081.876834] ffffffff00000001 ffff880206b5d400 ffff880213f9bb40 ffffffff81482ba4
|
||||
[ 1081.880782] Call Trace:
|
||||
[ 1081.881793] [<ffffffff81482ba4>] schedule+0x7f/0x97
|
||||
[ 1081.883340] [<ffffffff81485eb5>] rwsem_down_write_failed+0x2d5/0x325
|
||||
[ 1081.895525] [<ffffffff8108d48d>] ? trace_hardirqs_on_caller+0x16/0x1ab
|
||||
[ 1081.897419] [<ffffffff81269723>] call_rwsem_down_write_failed+0x13/0x20
|
||||
[ 1081.899251] [<ffffffff81269723>] ? call_rwsem_down_write_failed+0x13/0x20
|
||||
[ 1081.901063] [<ffffffff81089fae>] ? __down_write_nested.isra.0+0x1f/0x21
|
||||
[ 1081.902365] [<ffffffff814855bd>] down_write+0x43/0x57
|
||||
[ 1081.903846] [<ffffffffa05211b0>] ? btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs]
|
||||
[ 1081.906078] [<ffffffffa05211b0>] btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs]
|
||||
[ 1081.908846] [<ffffffff8108d461>] ? mark_held_locks+0x56/0x6c
|
||||
[ 1081.910409] [<ffffffffa0521282>] btrfs_check_data_free_space+0x40/0x59 [btrfs]
|
||||
[ 1081.912482] [<ffffffffa05228f5>] btrfs_delalloc_reserve_space+0x1e/0x4e [btrfs]
|
||||
[ 1081.914597] [<ffffffffa053620a>] btrfs_direct_IO+0x10c/0x27e [btrfs]
|
||||
[ 1081.919037] [<ffffffff8111d9a1>] generic_file_direct_write+0xb3/0x128
|
||||
[ 1081.920754] [<ffffffffa05463c3>] btrfs_file_write_iter+0x229/0x408 [btrfs]
|
||||
[ 1081.922496] [<ffffffff8108ae38>] ? __lock_is_held+0x38/0x50
|
||||
[ 1081.923922] [<ffffffff8117279e>] __vfs_write+0x7c/0xa5
|
||||
[ 1081.925275] [<ffffffff81172cda>] vfs_write+0xa0/0xe4
|
||||
[ 1081.926584] [<ffffffff811734cc>] SyS_write+0x50/0x7e
|
||||
[ 1081.927968] [<ffffffff814872d7>] entry_SYSCALL_64_fastpath+0x12/0x6f
|
||||
[ 1081.985293] INFO: lockdep is turned off.
|
||||
[ 1081.986132] INFO: task fio:8249 blocked for more than 120 seconds.
|
||||
[ 1081.987434] Not tainted 4.4.0-rc6-btrfs-next-18+ #1
|
||||
[ 1081.988534] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
|
||||
[ 1081.990147] fio D ffff880218febbb8 0 8249 8240 0x00000000
|
||||
[ 1081.991626] ffff880218febbb8 00ffffff81486b8e ffff88020000000b ffff88023ed75240
|
||||
[ 1081.993258] ffff8802120a9a00 ffff880218fec000 ffff88020a4d5318 ffff8802120a9a00
|
||||
[ 1081.994850] ffffffff00000001 ffff8802120a9a00 ffff880218febbd0 ffffffff81482ba4
|
||||
[ 1081.996485] Call Trace:
|
||||
[ 1081.997037] [<ffffffff81482ba4>] schedule+0x7f/0x97
|
||||
[ 1081.998017] [<ffffffff81485eb5>] rwsem_down_write_failed+0x2d5/0x325
|
||||
[ 1081.999241] [<ffffffff810852a5>] ? finish_wait+0x6d/0x76
|
||||
[ 1082.000306] [<ffffffff81269723>] call_rwsem_down_write_failed+0x13/0x20
|
||||
[ 1082.001533] [<ffffffff81269723>] ? call_rwsem_down_write_failed+0x13/0x20
|
||||
[ 1082.002776] [<ffffffff81089fae>] ? __down_write_nested.isra.0+0x1f/0x21
|
||||
[ 1082.003995] [<ffffffff814855bd>] down_write+0x43/0x57
|
||||
[ 1082.005000] [<ffffffffa05211b0>] ? btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs]
|
||||
[ 1082.007403] [<ffffffffa05211b0>] btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs]
|
||||
[ 1082.008988] [<ffffffffa0545064>] btrfs_fallocate+0x7c1/0xc2f [btrfs]
|
||||
[ 1082.010193] [<ffffffff8108a1ba>] ? percpu_down_read+0x4e/0x77
|
||||
[ 1082.011280] [<ffffffff81174c4c>] ? __sb_start_write+0x5f/0xb0
|
||||
[ 1082.012265] [<ffffffff81174c4c>] ? __sb_start_write+0x5f/0xb0
|
||||
[ 1082.013021] [<ffffffff811712e4>] vfs_fallocate+0x170/0x1ff
|
||||
[ 1082.013738] [<ffffffff81181ebb>] ioctl_preallocate+0x89/0x9b
|
||||
[ 1082.014778] [<ffffffff811822d7>] do_vfs_ioctl+0x40a/0x4ea
|
||||
[ 1082.015778] [<ffffffff81176ea7>] ? SYSC_newfstat+0x25/0x2e
|
||||
[ 1082.016806] [<ffffffff8118b4de>] ? __fget_light+0x4d/0x71
|
||||
[ 1082.017789] [<ffffffff8118240e>] SyS_ioctl+0x57/0x79
|
||||
[ 1082.018706] [<ffffffff814872d7>] entry_SYSCALL_64_fastpath+0x12/0x6f
|
||||
|
||||
This happens because we can recursively acquire the semaphore
|
||||
fs_info->delayed_iput_sem when attempting to allocate space to satisfy
|
||||
a file write request as shown in the first trace above - when committing
|
||||
a transaction we acquire (down_read) the semaphore before running the
|
||||
delayed iputs, and when running a delayed iput() we can end up calling
|
||||
an inode's eviction handler, which in turn commits another transaction
|
||||
and attempts to acquire (down_read) again the semaphore to run more
|
||||
delayed iput operations.
|
||||
This results in a deadlock because if a task acquires multiple times a
|
||||
semaphore it should invoke down_read_nested() with a different lockdep
|
||||
class for each level of recursion.
|
||||
|
||||
Fix this by simplifying the implementation and use a mutex instead that
|
||||
is acquired by the cleaner kthread before it runs the delayed iputs
|
||||
instead of always acquiring a semaphore before delayed references are
|
||||
run from anywhere.
|
||||
|
||||
Fixes: d7c151717a1e (btrfs: Fix NO_SPACE bug caused by delayed-iput)
|
||||
Signed-off-by: Filipe Manana <fdmanana@suse.com>
|
||||
Signed-off-by: Chris Mason <clm@fb.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
fs/btrfs/ctree.h | 2 +-
|
||||
fs/btrfs/disk-io.c | 5 ++++-
|
||||
fs/btrfs/extent-tree.c | 9 +++++----
|
||||
fs/btrfs/inode.c | 4 ----
|
||||
4 files changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/fs/btrfs/ctree.h
|
||||
+++ b/fs/btrfs/ctree.h
|
||||
@@ -1572,7 +1572,7 @@ struct btrfs_fs_info {
|
||||
|
||||
spinlock_t delayed_iput_lock;
|
||||
struct list_head delayed_iputs;
|
||||
- struct rw_semaphore delayed_iput_sem;
|
||||
+ struct mutex cleaner_delayed_iput_mutex;
|
||||
|
||||
/* this protects tree_mod_seq_list */
|
||||
spinlock_t tree_mod_seq_lock;
|
||||
--- a/fs/btrfs/disk-io.c
|
||||
+++ b/fs/btrfs/disk-io.c
|
||||
@@ -1796,7 +1796,10 @@ static int cleaner_kthread(void *arg)
|
||||
goto sleep;
|
||||
}
|
||||
|
||||
+ mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex);
|
||||
btrfs_run_delayed_iputs(root);
|
||||
+ mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex);
|
||||
+
|
||||
again = btrfs_clean_one_deleted_snapshot(root);
|
||||
mutex_unlock(&root->fs_info->cleaner_mutex);
|
||||
|
||||
@@ -2556,8 +2559,8 @@ int open_ctree(struct super_block *sb,
|
||||
mutex_init(&fs_info->delete_unused_bgs_mutex);
|
||||
mutex_init(&fs_info->reloc_mutex);
|
||||
mutex_init(&fs_info->delalloc_root_mutex);
|
||||
+ mutex_init(&fs_info->cleaner_delayed_iput_mutex);
|
||||
seqlock_init(&fs_info->profiles_lock);
|
||||
- init_rwsem(&fs_info->delayed_iput_sem);
|
||||
|
||||
INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots);
|
||||
INIT_LIST_HEAD(&fs_info->space_info);
|
||||
--- a/fs/btrfs/extent-tree.c
|
||||
+++ b/fs/btrfs/extent-tree.c
|
||||
@@ -4100,11 +4100,12 @@ commit_trans:
|
||||
if (ret)
|
||||
return ret;
|
||||
/*
|
||||
- * make sure that all running delayed iput are
|
||||
- * done
|
||||
+ * The cleaner kthread might still be doing iput
|
||||
+ * operations. Wait for it to finish so that
|
||||
+ * more space is released.
|
||||
*/
|
||||
- down_write(&root->fs_info->delayed_iput_sem);
|
||||
- up_write(&root->fs_info->delayed_iput_sem);
|
||||
+ mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex);
|
||||
+ mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex);
|
||||
goto again;
|
||||
} else {
|
||||
btrfs_end_transaction(trans, root);
|
||||
--- a/fs/btrfs/inode.c
|
||||
+++ b/fs/btrfs/inode.c
|
||||
@@ -3142,8 +3142,6 @@ void btrfs_run_delayed_iputs(struct btrf
|
||||
if (empty)
|
||||
return;
|
||||
|
||||
- down_read(&fs_info->delayed_iput_sem);
|
||||
-
|
||||
spin_lock(&fs_info->delayed_iput_lock);
|
||||
list_splice_init(&fs_info->delayed_iputs, &list);
|
||||
spin_unlock(&fs_info->delayed_iput_lock);
|
||||
@@ -3154,8 +3152,6 @@ void btrfs_run_delayed_iputs(struct btrf
|
||||
iput(delayed->inode);
|
||||
kfree(delayed);
|
||||
}
|
||||
-
|
||||
- up_read(&root->fs_info->delayed_iput_sem);
|
||||
}
|
||||
|
||||
/*
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
From e1746e8381cd2af421f75557b5cae3604fc18b35 Mon Sep 17 00:00:00 2001
|
||||
From: Zhao Lei <zhaolei@cn.fujitsu.com>
|
||||
Date: Tue, 1 Dec 2015 18:39:40 +0800
|
||||
Subject: btrfs: Fix no_space in write and rm loop
|
||||
|
||||
From: Zhao Lei <zhaolei@cn.fujitsu.com>
|
||||
|
||||
commit e1746e8381cd2af421f75557b5cae3604fc18b35 upstream.
|
||||
|
||||
I see no_space in v4.4-rc1 again in xfstests generic/102.
|
||||
It happened randomly in some node only.
|
||||
(one of 4 phy-node, and a kvm with non-virtio block driver)
|
||||
|
||||
By bisect, we can found the first-bad is:
|
||||
commit bdced438acd8 ("block: setup bi_phys_segments after splitting")'
|
||||
But above patch only triggered the bug by making bio operation
|
||||
faster(or slower).
|
||||
|
||||
Main reason is in our space_allocating code, we need to commit
|
||||
page writeback before wait it complish, this patch fixed above
|
||||
bug.
|
||||
|
||||
BTW, there is another reason for generic/102 fail, caused by
|
||||
disable default mixed-blockgroup, I'll fix it in xfstests.
|
||||
|
||||
Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
|
||||
Signed-off-by: Chris Mason <clm@fb.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
fs/btrfs/extent-tree.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/fs/btrfs/extent-tree.c
|
||||
+++ b/fs/btrfs/extent-tree.c
|
||||
@@ -4086,8 +4086,10 @@ commit_trans:
|
||||
!atomic_read(&root->fs_info->open_ioctl_trans)) {
|
||||
need_commit--;
|
||||
|
||||
- if (need_commit > 0)
|
||||
+ if (need_commit > 0) {
|
||||
+ btrfs_start_delalloc_roots(fs_info, 0, -1);
|
||||
btrfs_wait_ordered_roots(fs_info, -1);
|
||||
+ }
|
||||
|
||||
trans = btrfs_join_transaction(root);
|
||||
if (IS_ERR(trans))
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
From deb7deff2f00bdbbcb3d560dad2a89ef37df837d Mon Sep 17 00:00:00 2001
|
||||
From: Justin Maggard <jmaggard10@gmail.com>
|
||||
Date: Tue, 9 Feb 2016 15:52:08 -0800
|
||||
Subject: cifs: fix out-of-bounds access in lease parsing
|
||||
|
||||
From: Justin Maggard <jmaggard10@gmail.com>
|
||||
|
||||
commit deb7deff2f00bdbbcb3d560dad2a89ef37df837d upstream.
|
||||
|
||||
When opening a file, SMB2_open() attempts to parse the lease state from the
|
||||
SMB2 CREATE Response. However, the parsing code was not careful to ensure
|
||||
that the create contexts are not empty or invalid, which can lead to out-
|
||||
of-bounds memory access. This can be seen easily by trying
|
||||
to read a file from a OSX 10.11 SMB3 server. Here is sample crash output:
|
||||
|
||||
BUG: unable to handle kernel paging request at ffff8800a1a77cc6
|
||||
IP: [<ffffffff8828a734>] SMB2_open+0x804/0x960
|
||||
PGD 8f77067 PUD 0
|
||||
Oops: 0000 [#1] SMP
|
||||
Modules linked in:
|
||||
CPU: 3 PID: 2876 Comm: cp Not tainted 4.5.0-rc3.x86_64.1+ #14
|
||||
Hardware name: NETGEAR ReadyNAS 314 /ReadyNAS 314 , BIOS 4.6.5 10/11/2012
|
||||
task: ffff880073cdc080 ti: ffff88005b31c000 task.ti: ffff88005b31c000
|
||||
RIP: 0010:[<ffffffff8828a734>] [<ffffffff8828a734>] SMB2_open+0x804/0x960
|
||||
RSP: 0018:ffff88005b31fa08 EFLAGS: 00010282
|
||||
RAX: 0000000000000015 RBX: 0000000000000000 RCX: 0000000000000006
|
||||
RDX: 0000000000000000 RSI: 0000000000000246 RDI: ffff88007eb8c8b0
|
||||
RBP: ffff88005b31fad8 R08: 666666203d206363 R09: 6131613030383866
|
||||
R10: 3030383866666666 R11: 00000000000002b0 R12: ffff8800660fd800
|
||||
R13: ffff8800a1a77cc2 R14: 00000000424d53fe R15: ffff88005f5a28c0
|
||||
FS: 00007f7c8a2897c0(0000) GS:ffff88007eb80000(0000) knlGS:0000000000000000
|
||||
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
|
||||
CR2: ffff8800a1a77cc6 CR3: 000000005b281000 CR4: 00000000000006e0
|
||||
Stack:
|
||||
ffff88005b31fa70 ffffffff88278789 00000000000001d3 ffff88005f5a2a80
|
||||
ffffffff00000003 ffff88005d029d00 ffff88006fde05a0 0000000000000000
|
||||
ffff88005b31fc78 ffff88006fde0780 ffff88005b31fb2f 0000000100000fe0
|
||||
Call Trace:
|
||||
[<ffffffff88278789>] ? cifsConvertToUTF16+0x159/0x2d0
|
||||
[<ffffffff8828cf68>] smb2_open_file+0x98/0x210
|
||||
[<ffffffff8811e80c>] ? __kmalloc+0x1c/0xe0
|
||||
[<ffffffff882685f4>] cifs_open+0x2a4/0x720
|
||||
[<ffffffff88122cef>] do_dentry_open+0x1ff/0x310
|
||||
[<ffffffff88268350>] ? cifsFileInfo_get+0x30/0x30
|
||||
[<ffffffff88123d92>] vfs_open+0x52/0x60
|
||||
[<ffffffff88131dd0>] path_openat+0x170/0xf70
|
||||
[<ffffffff88097d48>] ? remove_wait_queue+0x48/0x50
|
||||
[<ffffffff88133a29>] do_filp_open+0x79/0xd0
|
||||
[<ffffffff8813f2ca>] ? __alloc_fd+0x3a/0x170
|
||||
[<ffffffff881240c4>] do_sys_open+0x114/0x1e0
|
||||
[<ffffffff881241a9>] SyS_open+0x19/0x20
|
||||
[<ffffffff8896e257>] entry_SYSCALL_64_fastpath+0x12/0x6a
|
||||
Code: 4d 8d 6c 07 04 31 c0 4c 89 ee e8 47 6f e5 ff 31 c9 41 89 ce 44 89 f1 48 c7 c7 28 b1 bd 88 31 c0 49 01 cd 4c 89 ee e8 2b 6f e5 ff <45> 0f b7 75 04 48 c7 c7 31 b1 bd 88 31 c0 4d 01 ee 4c 89 f6 e8
|
||||
RIP [<ffffffff8828a734>] SMB2_open+0x804/0x960
|
||||
RSP <ffff88005b31fa08>
|
||||
CR2: ffff8800a1a77cc6
|
||||
---[ end trace d9f69ba64feee469 ]---
|
||||
|
||||
Signed-off-by: Justin Maggard <jmaggard@netgear.com>
|
||||
Signed-off-by: Steve French <smfrench@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
fs/cifs/smb2pdu.c | 24 ++++++++++++++----------
|
||||
1 file changed, 14 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/fs/cifs/smb2pdu.c
|
||||
+++ b/fs/cifs/smb2pdu.c
|
||||
@@ -1109,21 +1109,25 @@ parse_lease_state(struct TCP_Server_Info
|
||||
{
|
||||
char *data_offset;
|
||||
struct create_context *cc;
|
||||
- unsigned int next = 0;
|
||||
+ unsigned int next;
|
||||
+ unsigned int remaining;
|
||||
char *name;
|
||||
|
||||
data_offset = (char *)rsp + 4 + le32_to_cpu(rsp->CreateContextsOffset);
|
||||
+ remaining = le32_to_cpu(rsp->CreateContextsLength);
|
||||
cc = (struct create_context *)data_offset;
|
||||
- do {
|
||||
- cc = (struct create_context *)((char *)cc + next);
|
||||
+ while (remaining >= sizeof(struct create_context)) {
|
||||
name = le16_to_cpu(cc->NameOffset) + (char *)cc;
|
||||
- if (le16_to_cpu(cc->NameLength) != 4 ||
|
||||
- strncmp(name, "RqLs", 4)) {
|
||||
- next = le32_to_cpu(cc->Next);
|
||||
- continue;
|
||||
- }
|
||||
- return server->ops->parse_lease_buf(cc, epoch);
|
||||
- } while (next != 0);
|
||||
+ if (le16_to_cpu(cc->NameLength) == 4 &&
|
||||
+ strncmp(name, "RqLs", 4) == 0)
|
||||
+ return server->ops->parse_lease_buf(cc, epoch);
|
||||
+
|
||||
+ next = le32_to_cpu(cc->Next);
|
||||
+ if (!next)
|
||||
+ break;
|
||||
+ remaining -= next;
|
||||
+ cc = (struct create_context *)((char *)cc + next);
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
From 6cc3b24235929b54acd5ecc987ef11a425bd209e Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Shilovsky <pshilovsky@samba.org>
|
||||
Date: Sat, 27 Feb 2016 11:58:18 +0300
|
||||
Subject: CIFS: Fix SMB2+ interim response processing for read requests
|
||||
|
||||
From: Pavel Shilovsky <pshilovsky@samba.org>
|
||||
|
||||
commit 6cc3b24235929b54acd5ecc987ef11a425bd209e upstream.
|
||||
|
||||
For interim responses we only need to parse a header and update
|
||||
a number credits. Now it is done for all SMB2+ command except
|
||||
SMB2_READ which is wrong. Fix this by adding such processing.
|
||||
|
||||
Signed-off-by: Pavel Shilovsky <pshilovsky@samba.org>
|
||||
Tested-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
|
||||
Signed-off-by: Steve French <smfrench@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
fs/cifs/cifssmb.c | 21 ++++++++++++++++++---
|
||||
1 file changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/fs/cifs/cifssmb.c
|
||||
+++ b/fs/cifs/cifssmb.c
|
||||
@@ -1396,11 +1396,10 @@ openRetry:
|
||||
* current bigbuf.
|
||||
*/
|
||||
static int
|
||||
-cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid)
|
||||
+discard_remaining_data(struct TCP_Server_Info *server)
|
||||
{
|
||||
unsigned int rfclen = get_rfc1002_length(server->smallbuf);
|
||||
int remaining = rfclen + 4 - server->total_read;
|
||||
- struct cifs_readdata *rdata = mid->callback_data;
|
||||
|
||||
while (remaining > 0) {
|
||||
int length;
|
||||
@@ -1414,10 +1413,20 @@ cifs_readv_discard(struct TCP_Server_Inf
|
||||
remaining -= length;
|
||||
}
|
||||
|
||||
- dequeue_mid(mid, rdata->result);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int
|
||||
+cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid)
|
||||
+{
|
||||
+ int length;
|
||||
+ struct cifs_readdata *rdata = mid->callback_data;
|
||||
+
|
||||
+ length = discard_remaining_data(server);
|
||||
+ dequeue_mid(mid, rdata->result);
|
||||
+ return length;
|
||||
+}
|
||||
+
|
||||
int
|
||||
cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
|
||||
{
|
||||
@@ -1446,6 +1455,12 @@ cifs_readv_receive(struct TCP_Server_Inf
|
||||
return length;
|
||||
server->total_read += length;
|
||||
|
||||
+ if (server->ops->is_status_pending &&
|
||||
+ server->ops->is_status_pending(buf, server, 0)) {
|
||||
+ discard_remaining_data(server);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
/* Was the SMB read successful? */
|
||||
rdata->result = server->ops->map_error(buf, false);
|
||||
if (rdata->result != 0) {
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
From 0378ba4899d5fbd8494ed6580cbc81d7b44dbac6 Mon Sep 17 00:00:00 2001
|
||||
From: Geert Uytterhoeven <geert+renesas@glider.be>
|
||||
Date: Wed, 24 Feb 2016 09:43:23 +0100
|
||||
Subject: drivers: sh: Restore legacy clock domain on SuperH platforms
|
||||
|
||||
From: Geert Uytterhoeven <geert+renesas@glider.be>
|
||||
|
||||
commit 0378ba4899d5fbd8494ed6580cbc81d7b44dbac6 upstream.
|
||||
|
||||
CONFIG_ARCH_SHMOBILE is not only enabled for Renesas ARM platforms
|
||||
(which are DT based and multi-platform), but also on a select set of
|
||||
Renesas SuperH platforms (SH7722/SH7723/SH7724/SH7343/SH7366). Hence
|
||||
since commit 0ba58de231066e47 ("drivers: sh: Get rid of
|
||||
CONFIG_ARCH_SHMOBILE_MULTI"), the legacy clock domain is no longer
|
||||
installed on these SuperH platforms, and module clocks may not be
|
||||
enabled when needed, leading to driver failures.
|
||||
|
||||
To fix this, add an additional check for CONFIG_OF.
|
||||
|
||||
Fixes: 0ba58de231066e47 ("drivers: sh: Get rid of CONFIG_ARCH_SHMOBILE_MULTI").
|
||||
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
|
||||
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/sh/pm_runtime.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/sh/pm_runtime.c
|
||||
+++ b/drivers/sh/pm_runtime.c
|
||||
@@ -34,7 +34,7 @@ static struct pm_clk_notifier_block plat
|
||||
|
||||
static int __init sh_pm_runtime_init(void)
|
||||
{
|
||||
- if (IS_ENABLED(CONFIG_ARCH_SHMOBILE)) {
|
||||
+ if (IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_ARCH_SHMOBILE)) {
|
||||
if (!of_find_compatible_node(NULL, NULL,
|
||||
"renesas,cpg-mstp-clocks"))
|
||||
return 0;
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
From a187f17f0e15a046aa5d7263b35df55230d92779 Mon Sep 17 00:00:00 2001
|
||||
From: Oded Gabbay <oded.gabbay@gmail.com>
|
||||
Date: Sat, 30 Jan 2016 07:59:34 +0200
|
||||
Subject: drm/amdgpu: mask out WC from BO on unsupported arches
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
From: Oded Gabbay <oded.gabbay@gmail.com>
|
||||
|
||||
commit a187f17f0e15a046aa5d7263b35df55230d92779 upstream.
|
||||
|
||||
Reviewed-by: Christian König <christian.koenig@amd.com>
|
||||
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
|
||||
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
|
||||
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <linux/slab.h>
|
||||
#include <drm/drmP.h>
|
||||
#include <drm/amdgpu_drm.h>
|
||||
+#include <drm/drm_cache.h>
|
||||
#include "amdgpu.h"
|
||||
#include "amdgpu_trace.h"
|
||||
|
||||
@@ -261,6 +262,13 @@ int amdgpu_bo_create_restricted(struct a
|
||||
AMDGPU_GEM_DOMAIN_OA);
|
||||
|
||||
bo->flags = flags;
|
||||
+
|
||||
+ /* For architectures that don't support WC memory,
|
||||
+ * mask out the WC flag from the BO
|
||||
+ */
|
||||
+ if (!drm_arch_can_wc_memory())
|
||||
+ bo->flags &= ~AMDGPU_GEM_CREATE_CPU_GTT_USWC;
|
||||
+
|
||||
amdgpu_fill_placement_to_bo(bo, placement);
|
||||
/* Kernel allocation are uninterruptible */
|
||||
r = ttm_bo_init(&adev->mman.bdev, &bo->tbo, size, type,
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
From a1e533ec07d583d01349ef13c0c965b8633e1b91 Mon Sep 17 00:00:00 2001
|
||||
From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
|
||||
Date: Mon, 15 Feb 2016 18:41:33 +0000
|
||||
Subject: fbcon: set a default value to blink interval
|
||||
|
||||
From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
|
||||
|
||||
commit a1e533ec07d583d01349ef13c0c965b8633e1b91 upstream.
|
||||
|
||||
Since commit 27a4c827c34ac4256a190cc9d24607f953c1c459
|
||||
fbcon: use the cursor blink interval provided by vt
|
||||
|
||||
two attempts have been made at fixing a possible hang caused by
|
||||
cursor_timer_handler. That function registers a timer to be triggered at
|
||||
"jiffies + fbcon_ops.cur_blink_jiffies".
|
||||
|
||||
A new case had been encountered during initialisation of clcd-pl11x:
|
||||
|
||||
fbcon_fb_registered
|
||||
do_fbcon_takeover
|
||||
|
||||
-> do_register_con_driver
|
||||
fbcon_startup
|
||||
(A) add_cursor_timer (with cur_blink_jiffies = 0)
|
||||
|
||||
-> do_bind_con_driver
|
||||
visual_init
|
||||
fbcon_init
|
||||
(B) cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
|
||||
|
||||
If we take an softirq anywhere between A and B (and we do),
|
||||
cursor_timer_handler executes indefinitely.
|
||||
|
||||
Instead of patching all possible paths that lead to this case one at a
|
||||
time, fix the issue at the source and initialise cur_blink_jiffies to
|
||||
200ms when allocating fbcon_ops. This was its default value before
|
||||
aforesaid commit. fbcon_cursor or fbcon_init will refine this value
|
||||
downstream.
|
||||
|
||||
Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
|
||||
Tested-by: Scot Doyle <lkml14@scotdoyle.com>
|
||||
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/video/console/fbcon.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/video/console/fbcon.c
|
||||
+++ b/drivers/video/console/fbcon.c
|
||||
@@ -709,6 +709,7 @@ static int con2fb_acquire_newinfo(struct
|
||||
}
|
||||
|
||||
if (!err) {
|
||||
+ ops->cur_blink_jiffies = HZ / 5;
|
||||
info->fbcon_par = ops;
|
||||
|
||||
if (vc)
|
||||
@@ -956,6 +957,7 @@ static const char *fbcon_startup(void)
|
||||
ops->currcon = -1;
|
||||
ops->graphics = 1;
|
||||
ops->cur_rotate = -1;
|
||||
+ ops->cur_blink_jiffies = HZ / 5;
|
||||
info->fbcon_par = ops;
|
||||
p->con_rotate = initial_rotation;
|
||||
set_blitting_type(vc, info);
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
From 1ee9f4bd1a97026a7b2d7ae9f1f74b45680d0003 Mon Sep 17 00:00:00 2001
|
||||
From: Yadan Fan <ydfan@novell.com>
|
||||
Date: Mon, 29 Feb 2016 14:44:57 +0800
|
||||
Subject: Fix cifs_uniqueid_to_ino_t() function for s390x
|
||||
|
||||
From: Yadan Fan <ydfan@novell.com>
|
||||
|
||||
commit 1ee9f4bd1a97026a7b2d7ae9f1f74b45680d0003 upstream.
|
||||
|
||||
This issue is caused by commit 02323db17e3a7 ("cifs: fix
|
||||
cifs_uniqueid_to_ino_t not to ever return 0"), when BITS_PER_LONG
|
||||
is 64 on s390x, the corresponding cifs_uniqueid_to_ino_t()
|
||||
function will cast 64-bit fileid to 32-bit by using (ino_t)fileid,
|
||||
because ino_t (typdefed __kernel_ino_t) is int type.
|
||||
|
||||
It's defined in arch/s390/include/uapi/asm/posix_types.h
|
||||
|
||||
#ifndef __s390x__
|
||||
|
||||
typedef unsigned long __kernel_ino_t;
|
||||
...
|
||||
#else /* __s390x__ */
|
||||
|
||||
typedef unsigned int __kernel_ino_t;
|
||||
|
||||
So the #ifdef condition is wrong for s390x, we can just still use
|
||||
one cifs_uniqueid_to_ino_t() function with comparing sizeof(ino_t)
|
||||
and sizeof(u64) to choose the correct execution accordingly.
|
||||
|
||||
Signed-off-by: Yadan Fan <ydfan@suse.com>
|
||||
Signed-off-by: Steve French <smfrench@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
fs/cifs/cifsfs.h | 12 ++++--------
|
||||
1 file changed, 4 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/fs/cifs/cifsfs.h
|
||||
+++ b/fs/cifs/cifsfs.h
|
||||
@@ -31,19 +31,15 @@
|
||||
* so that it will fit. We use hash_64 to convert the value to 31 bits, and
|
||||
* then add 1, to ensure that we don't end up with a 0 as the value.
|
||||
*/
|
||||
-#if BITS_PER_LONG == 64
|
||||
static inline ino_t
|
||||
cifs_uniqueid_to_ino_t(u64 fileid)
|
||||
{
|
||||
+ if ((sizeof(ino_t)) < (sizeof(u64)))
|
||||
+ return (ino_t)hash_64(fileid, (sizeof(ino_t) * 8) - 1) + 1;
|
||||
+
|
||||
return (ino_t)fileid;
|
||||
+
|
||||
}
|
||||
-#else
|
||||
-static inline ino_t
|
||||
-cifs_uniqueid_to_ino_t(u64 fileid)
|
||||
-{
|
||||
- return (ino_t)hash_64(fileid, (sizeof(ino_t) * 8) - 1) + 1;
|
||||
-}
|
||||
-#endif
|
||||
|
||||
extern struct file_system_type cifs_fs_type;
|
||||
extern const struct address_space_operations cifs_addr_ops;
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
From 358875fd52ab8f00f66328cbf1a1d2486f265829 Mon Sep 17 00:00:00 2001
|
||||
From: Jay Cornwall <jay@jcornwall.me>
|
||||
Date: Wed, 10 Feb 2016 15:48:01 -0600
|
||||
Subject: iommu/amd: Apply workaround for ATS write permission check
|
||||
|
||||
From: Jay Cornwall <jay@jcornwall.me>
|
||||
|
||||
commit 358875fd52ab8f00f66328cbf1a1d2486f265829 upstream.
|
||||
|
||||
The AMD Family 15h Models 30h-3Fh (Kaveri) BIOS and Kernel Developer's
|
||||
Guide omitted part of the BIOS IOMMU L2 register setup specification.
|
||||
Without this setup the IOMMU L2 does not fully respect write permissions
|
||||
when handling an ATS translation request.
|
||||
|
||||
The IOMMU L2 will set PTE dirty bit when handling an ATS translation with
|
||||
write permission request, even when PTE RW bit is clear. This may occur by
|
||||
direct translation (which would cause a PPR) or by prefetch request from
|
||||
the ATC.
|
||||
|
||||
This is observed in practice when the IOMMU L2 modifies a PTE which maps a
|
||||
pagecache page. The ext4 filesystem driver BUGs when asked to writeback
|
||||
these (non-modified) pages.
|
||||
|
||||
Enable ATS write permission check in the Kaveri IOMMU L2 if BIOS has not.
|
||||
|
||||
Signed-off-by: Jay Cornwall <jay@jcornwall.me>
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/iommu/amd_iommu_init.c | 29 +++++++++++++++++++++++++++++
|
||||
1 file changed, 29 insertions(+)
|
||||
|
||||
--- a/drivers/iommu/amd_iommu_init.c
|
||||
+++ b/drivers/iommu/amd_iommu_init.c
|
||||
@@ -1016,6 +1016,34 @@ static void amd_iommu_erratum_746_workar
|
||||
}
|
||||
|
||||
/*
|
||||
+ * Family15h Model 30h-3fh (IOMMU Mishandles ATS Write Permission)
|
||||
+ * Workaround:
|
||||
+ * BIOS should enable ATS write permission check by setting
|
||||
+ * L2_DEBUG_3[AtsIgnoreIWDis](D0F2xF4_x47[0]) = 1b
|
||||
+ */
|
||||
+static void amd_iommu_ats_write_check_workaround(struct amd_iommu *iommu)
|
||||
+{
|
||||
+ u32 value;
|
||||
+
|
||||
+ if ((boot_cpu_data.x86 != 0x15) ||
|
||||
+ (boot_cpu_data.x86_model < 0x30) ||
|
||||
+ (boot_cpu_data.x86_model > 0x3f))
|
||||
+ return;
|
||||
+
|
||||
+ /* Test L2_DEBUG_3[AtsIgnoreIWDis] == 1 */
|
||||
+ value = iommu_read_l2(iommu, 0x47);
|
||||
+
|
||||
+ if (value & BIT(0))
|
||||
+ return;
|
||||
+
|
||||
+ /* Set L2_DEBUG_3[AtsIgnoreIWDis] = 1 */
|
||||
+ iommu_write_l2(iommu, 0x47, value | BIT(0));
|
||||
+
|
||||
+ pr_info("AMD-Vi: Applying ATS write check workaround for IOMMU at %s\n",
|
||||
+ dev_name(&iommu->dev->dev));
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
* This function clues the initialization function for one IOMMU
|
||||
* together and also allocates the command buffer and programs the
|
||||
* hardware. It does NOT enable the IOMMU. This is done afterwards.
|
||||
@@ -1284,6 +1312,7 @@ static int iommu_init_pci(struct amd_iom
|
||||
}
|
||||
|
||||
amd_iommu_erratum_746_workaround(iommu);
|
||||
+ amd_iommu_ats_write_check_workaround(iommu);
|
||||
|
||||
iommu->iommu_dev = iommu_device_create(&iommu->dev->dev, iommu,
|
||||
amd_iommu_groups, "ivhd%d",
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
From 38e45d02ea9f194b89d6bf41e52ccafc8e2c2b47 Mon Sep 17 00:00:00 2001
|
||||
From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
|
||||
Date: Tue, 23 Feb 2016 13:03:30 +0100
|
||||
Subject: iommu/amd: Fix boot warning when device 00:00.0 is not iommu covered
|
||||
|
||||
From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
|
||||
|
||||
commit 38e45d02ea9f194b89d6bf41e52ccafc8e2c2b47 upstream.
|
||||
|
||||
The setup code for the performance counters in the AMD IOMMU driver
|
||||
tests whether the counters can be written. It tests to setup a counter
|
||||
for device 00:00.0, which fails on systems where this particular device
|
||||
is not covered by the IOMMU.
|
||||
|
||||
Fix this by not relying on device 00:00.0 but only on the IOMMU being
|
||||
present.
|
||||
|
||||
Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/iommu/amd_iommu_init.c | 34 ++++++++++++++++++++++------------
|
||||
1 file changed, 22 insertions(+), 12 deletions(-)
|
||||
|
||||
--- a/drivers/iommu/amd_iommu_init.c
|
||||
+++ b/drivers/iommu/amd_iommu_init.c
|
||||
@@ -228,6 +228,10 @@ static int amd_iommu_enable_interrupts(v
|
||||
static int __init iommu_go_to_state(enum iommu_init_state state);
|
||||
static void init_device_table_dma(void);
|
||||
|
||||
+static int iommu_pc_get_set_reg_val(struct amd_iommu *iommu,
|
||||
+ u8 bank, u8 cntr, u8 fxn,
|
||||
+ u64 *value, bool is_write);
|
||||
+
|
||||
static inline void update_last_devid(u16 devid)
|
||||
{
|
||||
if (devid > amd_iommu_last_bdf)
|
||||
@@ -1170,8 +1174,8 @@ static void init_iommu_perf_ctr(struct a
|
||||
amd_iommu_pc_present = true;
|
||||
|
||||
/* Check if the performance counters can be written to */
|
||||
- if ((0 != amd_iommu_pc_get_set_reg_val(0, 0, 0, 0, &val, true)) ||
|
||||
- (0 != amd_iommu_pc_get_set_reg_val(0, 0, 0, 0, &val2, false)) ||
|
||||
+ if ((0 != iommu_pc_get_set_reg_val(iommu, 0, 0, 0, &val, true)) ||
|
||||
+ (0 != iommu_pc_get_set_reg_val(iommu, 0, 0, 0, &val2, false)) ||
|
||||
(val != val2)) {
|
||||
pr_err("AMD-Vi: Unable to write to IOMMU perf counter.\n");
|
||||
amd_iommu_pc_present = false;
|
||||
@@ -2312,22 +2316,15 @@ u8 amd_iommu_pc_get_max_counters(u16 dev
|
||||
}
|
||||
EXPORT_SYMBOL(amd_iommu_pc_get_max_counters);
|
||||
|
||||
-int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn,
|
||||
+static int iommu_pc_get_set_reg_val(struct amd_iommu *iommu,
|
||||
+ u8 bank, u8 cntr, u8 fxn,
|
||||
u64 *value, bool is_write)
|
||||
{
|
||||
- struct amd_iommu *iommu;
|
||||
u32 offset;
|
||||
u32 max_offset_lim;
|
||||
|
||||
- /* Make sure the IOMMU PC resource is available */
|
||||
- if (!amd_iommu_pc_present)
|
||||
- return -ENODEV;
|
||||
-
|
||||
- /* Locate the iommu associated with the device ID */
|
||||
- iommu = amd_iommu_rlookup_table[devid];
|
||||
-
|
||||
/* Check for valid iommu and pc register indexing */
|
||||
- if (WARN_ON((iommu == NULL) || (fxn > 0x28) || (fxn & 7)))
|
||||
+ if (WARN_ON((fxn > 0x28) || (fxn & 7)))
|
||||
return -ENODEV;
|
||||
|
||||
offset = (u32)(((0x40|bank) << 12) | (cntr << 8) | fxn);
|
||||
@@ -2351,3 +2348,16 @@ int amd_iommu_pc_get_set_reg_val(u16 dev
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(amd_iommu_pc_get_set_reg_val);
|
||||
+
|
||||
+int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn,
|
||||
+ u64 *value, bool is_write)
|
||||
+{
|
||||
+ struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
|
||||
+
|
||||
+ /* Make sure the IOMMU PC resource is available */
|
||||
+ if (!amd_iommu_pc_present || iommu == NULL)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ return iommu_pc_get_set_reg_val(iommu, bank, cntr, fxn,
|
||||
+ value, is_write);
|
||||
+}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
From e6a8c9b337eed56eb481e1b4dd2180c25a1e5310 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Mon, 29 Feb 2016 23:49:47 +0100
|
||||
Subject: iommu/vt-d: Use BUS_NOTIFY_REMOVED_DEVICE in hotplug path
|
||||
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
|
||||
commit e6a8c9b337eed56eb481e1b4dd2180c25a1e5310 upstream.
|
||||
|
||||
In the PCI hotplug path of the Intel IOMMU driver, replace
|
||||
the usage of the BUS_NOTIFY_DEL_DEVICE notifier, which is
|
||||
executed before the driver is unbound from the device, with
|
||||
BUS_NOTIFY_REMOVED_DEVICE, which runs after that.
|
||||
|
||||
This fixes a kernel BUG being triggered in the VT-d code
|
||||
when the device driver tries to unmap DMA buffers and the
|
||||
VT-d driver already destroyed all mappings.
|
||||
|
||||
Reported-by: Stefani Seibold <stefani@seibold.net>
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/iommu/dmar.c | 5 +++--
|
||||
drivers/iommu/intel-iommu.c | 4 ++--
|
||||
2 files changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/iommu/dmar.c
|
||||
+++ b/drivers/iommu/dmar.c
|
||||
@@ -329,7 +329,8 @@ static int dmar_pci_bus_notifier(struct
|
||||
/* Only care about add/remove events for physical functions */
|
||||
if (pdev->is_virtfn)
|
||||
return NOTIFY_DONE;
|
||||
- if (action != BUS_NOTIFY_ADD_DEVICE && action != BUS_NOTIFY_DEL_DEVICE)
|
||||
+ if (action != BUS_NOTIFY_ADD_DEVICE &&
|
||||
+ action != BUS_NOTIFY_REMOVED_DEVICE)
|
||||
return NOTIFY_DONE;
|
||||
|
||||
info = dmar_alloc_pci_notify_info(pdev, action);
|
||||
@@ -339,7 +340,7 @@ static int dmar_pci_bus_notifier(struct
|
||||
down_write(&dmar_global_lock);
|
||||
if (action == BUS_NOTIFY_ADD_DEVICE)
|
||||
dmar_pci_bus_add_dev(info);
|
||||
- else if (action == BUS_NOTIFY_DEL_DEVICE)
|
||||
+ else if (action == BUS_NOTIFY_REMOVED_DEVICE)
|
||||
dmar_pci_bus_del_dev(info);
|
||||
up_write(&dmar_global_lock);
|
||||
|
||||
--- a/drivers/iommu/intel-iommu.c
|
||||
+++ b/drivers/iommu/intel-iommu.c
|
||||
@@ -4367,7 +4367,7 @@ int dmar_iommu_notify_scope_dev(struct d
|
||||
rmrru->devices_cnt);
|
||||
if(ret < 0)
|
||||
return ret;
|
||||
- } else if (info->event == BUS_NOTIFY_DEL_DEVICE) {
|
||||
+ } else if (info->event == BUS_NOTIFY_REMOVED_DEVICE) {
|
||||
dmar_remove_dev_scope(info, rmrr->segment,
|
||||
rmrru->devices, rmrru->devices_cnt);
|
||||
}
|
||||
@@ -4387,7 +4387,7 @@ int dmar_iommu_notify_scope_dev(struct d
|
||||
break;
|
||||
else if(ret < 0)
|
||||
return ret;
|
||||
- } else if (info->event == BUS_NOTIFY_DEL_DEVICE) {
|
||||
+ } else if (info->event == BUS_NOTIFY_REMOVED_DEVICE) {
|
||||
if (dmar_remove_dev_scope(info, atsr->segment,
|
||||
atsru->devices, atsru->devices_cnt))
|
||||
break;
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
From 70e4da7a8ff62f2775337b705f45c804bb450454 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 26 Feb 2016 12:28:40 +0100
|
||||
Subject: KVM: x86: fix root cause for missed hardware breakpoints
|
||||
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
|
||||
commit 70e4da7a8ff62f2775337b705f45c804bb450454 upstream.
|
||||
|
||||
Commit 172b2386ed16 ("KVM: x86: fix missed hardware breakpoints",
|
||||
2016-02-10) worked around a case where the debug registers are not loaded
|
||||
correctly on preemption and on the first entry to KVM_RUN.
|
||||
|
||||
However, Xiao Guangrong pointed out that the root cause must be that
|
||||
KVM_DEBUGREG_BP_ENABLED is not being set correctly. This can indeed
|
||||
happen due to the lazy debug exit mechanism, which does not call
|
||||
kvm_update_dr7. Fix it by replacing the existing loop (more or less
|
||||
equivalent to kvm_update_dr0123) with calls to all the kvm_update_dr*
|
||||
functions.
|
||||
|
||||
Fixes: 172b2386ed16a9143d9a456aae5ec87275c61489
|
||||
Reviewed-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
arch/x86/kvm/x86.c | 9 ++++-----
|
||||
1 file changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/arch/x86/kvm/x86.c
|
||||
+++ b/arch/x86/kvm/x86.c
|
||||
@@ -2736,7 +2736,6 @@ void kvm_arch_vcpu_load(struct kvm_vcpu
|
||||
}
|
||||
|
||||
kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu);
|
||||
- vcpu->arch.switch_db_regs |= KVM_DEBUGREG_RELOAD;
|
||||
}
|
||||
|
||||
void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
|
||||
@@ -6545,12 +6544,12 @@ static int vcpu_enter_guest(struct kvm_v
|
||||
* KVM_DEBUGREG_WONT_EXIT again.
|
||||
*/
|
||||
if (unlikely(vcpu->arch.switch_db_regs & KVM_DEBUGREG_WONT_EXIT)) {
|
||||
- int i;
|
||||
-
|
||||
WARN_ON(vcpu->guest_debug & KVM_GUESTDBG_USE_HW_BP);
|
||||
kvm_x86_ops->sync_dirty_debug_regs(vcpu);
|
||||
- for (i = 0; i < KVM_NR_DB_REGS; i++)
|
||||
- vcpu->arch.eff_db[i] = vcpu->arch.db[i];
|
||||
+ kvm_update_dr0123(vcpu);
|
||||
+ kvm_update_dr6(vcpu);
|
||||
+ kvm_update_dr7(vcpu);
|
||||
+ vcpu->arch.switch_db_regs &= ~KVM_DEBUGREG_RELOAD;
|
||||
}
|
||||
|
||||
/*
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
From 2680d6da455b636dd006636780c0f235c6561d70 Mon Sep 17 00:00:00 2001
|
||||
From: Owen Hofmann <osh@google.com>
|
||||
Date: Tue, 1 Mar 2016 13:36:13 -0800
|
||||
Subject: kvm: x86: Update tsc multiplier on change.
|
||||
|
||||
From: Owen Hofmann <osh@google.com>
|
||||
|
||||
commit 2680d6da455b636dd006636780c0f235c6561d70 upstream.
|
||||
|
||||
vmx.c writes the TSC_MULTIPLIER field in vmx_vcpu_load, but only when a
|
||||
vcpu has migrated physical cpus. Record the last value written and
|
||||
update in vmx_vcpu_load on any change, otherwise a cpu migration must
|
||||
occur for TSC frequency scaling to take effect.
|
||||
|
||||
Fixes: ff2c3a1803775cc72dc6f624b59554956396b0ee
|
||||
Signed-off-by: Owen Hofmann <osh@google.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
arch/x86/kvm/vmx.c | 14 +++++++++-----
|
||||
1 file changed, 9 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/arch/x86/kvm/vmx.c
|
||||
+++ b/arch/x86/kvm/vmx.c
|
||||
@@ -595,6 +595,8 @@ struct vcpu_vmx {
|
||||
/* Support for PML */
|
||||
#define PML_ENTITY_NUM 512
|
||||
struct page *pml_pg;
|
||||
+
|
||||
+ u64 current_tsc_ratio;
|
||||
};
|
||||
|
||||
enum segment_cache_field {
|
||||
@@ -2062,14 +2064,16 @@ static void vmx_vcpu_load(struct kvm_vcp
|
||||
rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp);
|
||||
vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */
|
||||
|
||||
- /* Setup TSC multiplier */
|
||||
- if (cpu_has_vmx_tsc_scaling())
|
||||
- vmcs_write64(TSC_MULTIPLIER,
|
||||
- vcpu->arch.tsc_scaling_ratio);
|
||||
-
|
||||
vmx->loaded_vmcs->cpu = cpu;
|
||||
}
|
||||
|
||||
+ /* Setup TSC multiplier */
|
||||
+ if (kvm_has_tsc_control &&
|
||||
+ vmx->current_tsc_ratio != vcpu->arch.tsc_scaling_ratio) {
|
||||
+ vmx->current_tsc_ratio = vcpu->arch.tsc_scaling_ratio;
|
||||
+ vmcs_write64(TSC_MULTIPLIER, vmx->current_tsc_ratio);
|
||||
+ }
|
||||
+
|
||||
vmx_vcpu_pi_load(vcpu, cpu);
|
||||
}
|
||||
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
From 4633dfc32c0019bed2996de9bbdbe7f3b518a44e Mon Sep 17 00:00:00 2001
|
||||
From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
|
||||
Date: Thu, 8 Oct 2015 19:20:14 +0530
|
||||
Subject: mac80211: Fix hwflags debugfs file format
|
||||
|
||||
From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
|
||||
|
||||
commit 4633dfc32c0019bed2996de9bbdbe7f3b518a44e upstream.
|
||||
|
||||
Commit 30686bf7f5b3 ("mac80211: convert HW flags to unsigned long
|
||||
bitmap") accidentally removed the newline delimiter from the hwflags
|
||||
debugfs file. Fix this by adding back the newline between the HW flags.
|
||||
|
||||
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
|
||||
[fix commit log]
|
||||
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
net/mac80211/debugfs.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -148,7 +148,7 @@ static ssize_t hwflags_read(struct file
|
||||
|
||||
for (i = 0; i < NUM_IEEE80211_HW_FLAGS; i++) {
|
||||
if (test_bit(i, local->hw.flags))
|
||||
- pos += scnprintf(pos, end - pos, "%s",
|
||||
+ pos += scnprintf(pos, end - pos, "%s\n",
|
||||
hw_flag_names[i]);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
From 0178fd7dcc4451fcb90bec5e91226586962478d2 Mon Sep 17 00:00:00 2001
|
||||
From: "Michael S. Tsirkin" <mst@redhat.com>
|
||||
Date: Sun, 28 Feb 2016 17:35:59 +0200
|
||||
Subject: mips/kvm: fix ioctl error handling
|
||||
|
||||
From: Michael S. Tsirkin <mst@redhat.com>
|
||||
|
||||
commit 0178fd7dcc4451fcb90bec5e91226586962478d2 upstream.
|
||||
|
||||
Returning directly whatever copy_to_user(...) or copy_from_user(...)
|
||||
returns may not do the right thing if there's a pagefault:
|
||||
copy_to_user/copy_from_user return the number of bytes not copied in
|
||||
this case, but ioctls need to return -EFAULT instead.
|
||||
|
||||
Fix up kvm on mips to do
|
||||
return copy_to_user(...)) ? -EFAULT : 0;
|
||||
and
|
||||
return copy_from_user(...)) ? -EFAULT : 0;
|
||||
|
||||
everywhere.
|
||||
|
||||
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
arch/mips/kvm/mips.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/arch/mips/kvm/mips.c
|
||||
+++ b/arch/mips/kvm/mips.c
|
||||
@@ -702,7 +702,7 @@ static int kvm_mips_get_reg(struct kvm_v
|
||||
} else if ((reg->id & KVM_REG_SIZE_MASK) == KVM_REG_SIZE_U128) {
|
||||
void __user *uaddr = (void __user *)(long)reg->addr;
|
||||
|
||||
- return copy_to_user(uaddr, vs, 16);
|
||||
+ return copy_to_user(uaddr, vs, 16) ? -EFAULT : 0;
|
||||
} else {
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -732,7 +732,7 @@ static int kvm_mips_set_reg(struct kvm_v
|
||||
} else if ((reg->id & KVM_REG_SIZE_MASK) == KVM_REG_SIZE_U128) {
|
||||
void __user *uaddr = (void __user *)(long)reg->addr;
|
||||
|
||||
- return copy_from_user(vs, uaddr, 16);
|
||||
+ return copy_from_user(vs, uaddr, 16) ? -EFAULT : 0;
|
||||
} else {
|
||||
return -EINVAL;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user