857 Commits

Author SHA1 Message Date
Rmys 168de76bbc Merge pull request #915 from Rmys/master
grub2:revert 2.02 error boot/grub2/locale/*.mo
2019-10-13 17:59:38 +03:00
Rmys 2858f4f138 grub2:revert 2.02 error boot/grub2/locale/*.mo 2019-10-13 17:58:22 +03:00
Rmys b80e8a0dac Merge pull request #914 from Rmys/master
os-prober:ver. bump
2019-10-11 19:39:31 +03:00
Rmys 2238851e6d os-prober:ver. bump 2019-10-11 19:37:46 +03:00
Rmys 7068326e66 theme 2019-10-06 12:57:19 +03:00
Rmys c05db01e35 grub2 ver bumup 2019-10-06 09:24:01 +03:00
Rmys 3265602a72 Merge pull request #913 from Rmys/master
grub2:ver. bump
2019-10-06 09:13:28 +03:00
Rmys 266c7a7b1b grub2:ver. bump 2019-10-06 09:12:55 +03:00
Rmys 3d569db746 Merge pull request #912 from Rmys/master
grub2:ver. bump
2019-10-06 09:11:08 +03:00
Rmys fc8ddeeeb9 grub2:ver. bump 2019-10-06 09:09:53 +03:00
Rmys 2820e72f73 grub2 themes 2019-10-06 08:37:22 +03:00
Erkan IŞIK eb02fbfe34 add grub theme Pisilinux-Bluez 2019-10-05 20:24:00 +03:00
Erkan IŞIK dda738dec7 new theme add 2019-10-05 20:17:43 +03:00
Rmys a2425ba4e1 Merge pull request #911 from Rmys/master
module-virtualbox*:ver. bump
2019-09-29 18:19:27 +03:00
Rmys 7068dd7675 module-virtualbox*:ver. bump 2019-09-29 18:18:41 +03:00
Rmys b0b68186d2 Merge pull request #910 from Rmys/master
module-virtualbox:ver. bump
2019-08-05 17:31:02 +03:00
Rmys 591677447c module-virtualbox:ver. bump 2019-08-05 17:30:23 +03:00
Ertuğrul Erata 4d86888c65 Merge pull request #909 from ertugerata/master
fix symlinks
2019-08-03 22:50:39 +03:00
Ertuğrul Erata cb3a884d0c fix symlinks 2019-08-03 22:53:14 +03:00
Rmys 9d58e7c89d Merge pull request #908 from Rmys/master
freetype:ver. bump
2019-08-01 18:20:54 +03:00
Rmys 6e6051ddbb freetype:ver. bump 2019-08-01 18:19:54 +03:00
Ertuğrul Erata 231dbc7c66 Merge pull request #907 from ertugerata/kernel_4_19
Kernel 4.19.56
2019-06-28 21:29:06 +03:00
Ertuğrul Erata 6b33a1a00b modules rebuild 2019-06-26 22:06:12 +03:00
Ertuğrul Erata 9dce069e8b cpupowertools update 2019-06-26 00:22:34 +03:00
Ertuğrul Erata a5aeff76a1 w for kernel-4.19.56 2019-06-25 21:53:37 +03:00
Ertuğrul Erata ce019ee06e cpupowerools rebuild too 2019-06-18 23:47:48 +03:00
Ertuğrul Erata efd429838d works for kernel-4.19.52 2019-06-18 23:32:37 +03:00
Ertuğrul Erata 5e92ca7f33 Merge pull request #1 from pisilinux/master
3
2019-06-09 16:29:51 +03:00
Ertuğrul Erata d5a8e1fd8c Merge pull request #904 from ertugerata/dhcpcd_update
dhcpcd update and fix service.py
2019-06-08 10:40:22 +03:00
Ertuğrul Erata a58fc89c4c Merge pull request #905 from ertugerata/linux-firmware-new
update linux-firmware
2019-06-05 22:38:19 +03:00
Ertuğrul Erata f29b34de8a update linux-firmware 2019-06-05 20:29:40 +03:00
Ertuğrul Erata a4a0cf88b0 dhcpcd update and fix service.py 2019-06-02 11:46:27 +03:00
Ertuğrul Erata 91672c07f7 Merge pull request #903 from ertugerata/master
Update pspec.xml
2019-05-30 23:31:50 +03:00
Ertuğrul Erata 0d995ead67 Update pspec.xml 2019-05-30 23:31:29 +03:00
Rmys f19fd26fa8 Merge pull request #902 from Rmys/master
nspr sqlite:ver. bump firefox
2019-05-29 16:03:54 +03:00
Rmys f211df1c9d nspr sqlite:ver. bump firefox 2019-05-29 16:02:48 +03:00
Rmys 90daf6f2d5 Merge pull request #901 from Rmys/master
virtualbox:ver.bump
2019-05-28 18:39:18 +03:00
Rmys eb9248e0d6 virtualbox:ver.bump 2019-05-28 18:38:38 +03:00
Ertuğrul Erata 166a3b1bb7 Merge pull request #900 from ertugerata/master
disable patches
2019-05-12 00:08:02 +03:00
Ertuğrul Erata 92fbca9156 disable patches 2019-05-12 00:07:59 +03:00
Ertuğrul Erata c62591d26f Merge pull request #899 from ertugerata/dbus_new
Dbus update
2019-05-12 00:02:38 +03:00
Ertuğrul Erata 9b01fc0eb2 Merge pull request #898 from ertugerata/kernel_4_19
ndiswrapper update to 1.62
2019-05-12 00:01:58 +03:00
Ertuğrul Erata 0473bef1c0 ndiswrapper update to 1.62 2019-05-11 23:56:03 +03:00
Ertuğrul Erata f4cc0fe5fd HACKİNG file dont exist 2019-05-11 19:44:16 +03:00
Ertuğrul Erata 121d7ec173 Merge pull request #897 from ertugerata/kernel_4_19
Kernel 4 19 42
2019-05-11 19:21:13 +03:00
Ertuğrul Erata 09d44c1697 Merge branch 'master' into kernel_4_19 2019-05-11 19:04:19 +03:00
Ertuğrul Erata 8fbeb27183 rebuild cpupowertools and kernel drivers 2019-05-11 19:02:52 +03:00
Ertuğrul Erata 0a891ce4c0 dbus update 2019-05-11 18:35:24 +03:00
Ertuğrul Erata 5e6e346476 works for latest lts kernel is 4.19.42 2019-05-11 14:54:16 +03:00
Rmys 533768b514 Merge pull request #896 from Rmys/master
attr:rebuild java attr/xattr error
2019-04-29 20:06:26 +03:00
Rmys 16edc8fe0f attr:rebuild java attr/xattr error 2019-04-29 20:05:11 +03:00
Ertuğrul Erata 223783c39a Merge pull request #895 from ertugerata/master
elfutils update
2019-04-23 16:55:50 +03:00
Ertuğrul Erata 1626f290f5 elfutils update 2019-04-23 16:54:40 +03:00
Ertuğrul Erata a411322144 Merge pull request #894 from ertugerata/master
sil
2019-04-21 22:16:42 +03:00
Ertuğrul Erata ad005eaff9 Merge branch 'master' of https://github.com/pisilinux/core 2019-04-21 22:13:47 +03:00
Ertuğrul Erata a02f13843c deneme 2019-04-21 22:04:41 +03:00
Rmys 27bebca35a Merge pull request #893 from Rmys/master
module-virtualbox-*
2019-04-20 21:17:36 +03:00
Rmys 0396fc74c0 module-virtualbox-* 2019-04-20 21:16:24 +03:00
Rmys b80994f032 Merge pull request #892 from Rmys/master
plyvel:rebuild pip [Errno 13] Permission denied
2019-04-10 11:40:44 +03:00
Rmys 978dd85a0c plyvel:rebuild pip [Errno 13] Permission denied 2019-04-10 11:38:43 +03:00
Rmys c49984b9e0 Merge pull request #891 from Rmys/master
klibc:rebuild
2019-04-06 21:52:43 +03:00
Rmys 01d2fb10a0 klibc:rebuild 2019-04-06 21:41:23 +03:00
Rmys 4c156d88fa Merge pull request #890 from Rmys/master
kernel-4.19.36
2019-04-06 18:11:59 +03:00
Rmys 8e22789061 kernel-4.19.36 2019-04-06 18:11:19 +03:00
Rmys ab979771b4 Merge pull request #889 from ertugerata/kernel_4_19
for Kernel 4 19.34
2019-04-06 18:04:02 +03:00
Ertuğrul Erata 1f0ceb6560 module rebuild with new kerenel release 2019-04-06 16:29:53 +03:00
Ertuğrul Erata 7912d368a3 works for latest lts kernel relase 2019-04-06 16:09:13 +03:00
Ertuğrul Erata 5cd2e5e975 Merge branch 'master' into kernel_4_19 2019-04-06 13:35:52 +03:00
Rmys d5c8bdd4dc Merge pull request #888 from Rmys/master
glib2:rebuild deprecated-no-warn-patch
2019-04-05 15:55:50 +03:00
Rmys 682ae89c79 glib2:rebuild deprecated-no-warn-patch 2019-04-05 15:54:33 +03:00
Ertuğrul Erata 1450224825 pMerge branch 'master' of https://github.com/pisilinux/core 2019-03-30 12:04:45 +03:00
Rmys a969516cff Merge pull request #887 from Rmys/master
nasm:ver.bump
2019-03-28 22:54:48 +03:00
Rmys c717661549 nasm:ver.bump 2019-03-28 22:53:19 +03:00
Ertuğrul Erata 204090d7e2 Merge branch 'master' of https://github.com/pisilinux/core 2019-03-18 22:51:34 +03:00
Ertuğrul Erata f192398967 Merge branch 'master' of https://github.com/pisilinux/core into kernel_4_19 2019-03-18 22:31:36 +03:00
Rmys 2ff747ebe5 Merge pull request #886 from Rmys/master
util-linux:rebuild
2019-03-17 21:34:21 +03:00
Rmys ea4fd8ea14 util-linux:rebuild 2019-03-17 21:33:30 +03:00
Ertuğrul Erata 5bdb250045 Merge branch 'master' into kernel_4_19 2019-03-14 07:13:26 +03:00
Ertuğrul Erata 2a0f526883 Merge branch 'master' of https://github.com/pisilinux/core 2019-03-14 07:12:42 +03:00
Ertuğrul Erata f358a5c1c6 Merge branch 'master' of https://github.com/pisilinux/core into kernel_4_19 2019-03-14 07:12:12 +03:00
Rmys c4ec7c41fb Merge pull request #885 from Rmys/master
autoconf:rebuild perl patch
2019-03-11 11:48:16 +03:00
Rmys 7f197e6b6a autoconf:rebuild perl patch 2019-03-11 11:47:21 +03:00
Ertuğrul Erata 23e2660f78 works for new kernel release 2019-03-10 08:55:38 +03:00
Ertuğrul Erata e384642c55 sil 2019-03-10 08:46:35 +03:00
Ertuğrul Erata 9a6546660f works for new kernel version 2019-03-03 21:36:33 +03:00
Ertuğrul Erata 11eb4e1c3d remove unneden patches 2019-03-03 21:23:47 +03:00
Ertuğrul Erata 1977da2b5e remove 2019-03-03 21:22:02 +03:00
Erkan IŞIK 564756367b 2.1.1 update 2019-03-02 11:03:15 +03:00
Erkan IŞIK 465844abd7 Update pspec.xml 2019-02-12 11:53:37 +03:00
Erkan IŞIK 4012c3841b homepage update 2019-02-07 11:55:14 +03:00
Erkan IŞIK 9cc089d117 homepage update 2019-02-07 09:47:49 +03:00
Erkan IŞIK 163f95eeff homepage update 2019-02-07 09:45:19 +03:00
Rmys de76acf929 Merge pull request #882 from erkanisik1/patch-19
homepage update
2019-02-06 22:46:22 +03:00
Rmys 43471abf4d Merge pull request #883 from erkanisik1/patch-20
homepage update
2019-02-06 22:46:07 +03:00
Rmys 42d6464539 Merge pull request #884 from erkanisik1/patch-21
homepage update
2019-02-06 22:45:52 +03:00
Erkan IŞIK 28c962dab7 homepage update 2019-02-06 22:30:31 +03:00
Erkan IŞIK 8f27119308 homepage update 2019-02-06 22:25:10 +03:00
Erkan IŞIK 282f0cd384 homepage update 2019-02-06 22:22:16 +03:00
Rmys c755e0a1ab Merge pull request #881 from erkanisik1/patch-18
homepage update
2019-02-06 21:45:12 +03:00
Erkan IŞIK 3740de0ad9 homepage update 2019-02-06 21:43:25 +03:00
Rmys c20a063f6a Merge pull request #880 from erkanisik1/patch-17
homepage update
2019-02-06 21:32:41 +03:00
Erkan IŞIK fab757280a homepage update 2019-02-06 21:31:17 +03:00
Rmys ff6916d27e Merge pull request #879 from erkanisik1/patch-16
homepage update
2019-02-06 21:27:09 +03:00
Erkan IŞIK 712a3bdd41 homepage update 2019-02-06 21:18:58 +03:00
Rmys f3b16b7141 Merge pull request #878 from erkanisik1/patch-15
homepage update
2019-02-06 21:12:40 +03:00
Erkan IŞIK 74400d8700 homepage update 2019-02-06 21:07:33 +03:00
Rmys f76de670e7 Merge pull request #877 from erkanisik1/patch-14
homepage update
2019-02-06 20:58:11 +03:00
Erkan IŞIK ba4322cad4 homepage update 2019-02-06 20:54:28 +03:00
Rmys 32af02f0c2 Merge pull request #876 from erkanisik1/patch-13
homepage update
2019-02-06 20:49:45 +03:00
Erkan IŞIK 7cfe9147f0 homepage update 2019-02-06 20:47:38 +03:00
Rmys 5a42aa648f Merge pull request #874 from erkanisik1/patch-11
homepage update
2019-02-06 20:37:29 +03:00
Rmys dc9baa9b1d Merge pull request #875 from erkanisik1/patch-12
homepage update
2019-02-06 20:37:09 +03:00
Erkan IŞIK 79990d4a0d homepage update 2019-02-06 20:34:22 +03:00
Erkan IŞIK b978670a20 homepage update 2019-02-06 20:32:11 +03:00
Rmys f1659fe67b Merge pull request #873 from erkanisik1/patch-10
homepage update
2019-02-06 20:26:56 +03:00
Erkan IŞIK 1778e6189a yanlış adres yazılmıştı 2019-02-06 19:57:51 +03:00
Erkan IŞIK 2161b54cf5 homepage update 2019-02-06 19:56:23 +03:00
Rmys 09c53d36b8 Merge pull request #872 from erkanisik1/patch-9
homepage update
2019-02-06 19:46:06 +03:00
Erkan IŞIK b7473f1574 homepage update 2019-02-06 19:45:30 +03:00
Rmys c47ffc166f Merge pull request #871 from erkanisik1/patch-8
homepage update
2019-02-06 19:34:30 +03:00
Erkan IŞIK 6ecc019aea homepage 2019-02-06 19:29:55 +03:00
Rmys 723a9446b7 Merge pull request #870 from erkanisik1/patch-7
homepage update
2019-02-06 19:24:31 +03:00
Erkan IŞIK feee484bbd homepage update 2019-02-06 19:22:36 +03:00
Rmys ac5d7ddde2 Merge pull request #868 from erkanisik1/patch-5
homepage update
2019-02-06 19:16:17 +03:00
Rmys 3a49c2daaf Merge pull request #869 from erkanisik1/patch-6
homepage update
2019-02-06 19:15:54 +03:00
Erkan IŞIK c2b47ad25b homepage update 2019-02-06 19:11:10 +03:00
Erkan IŞIK 2505fcb178 homepage update 2019-02-06 19:09:42 +03:00
Rmys 855a46e187 Merge pull request #867 from erkanisik1/patch-4
homapage update
2019-02-06 19:02:33 +03:00
Erkan IŞIK 680a3bda40 homapage update 2019-02-06 19:01:08 +03:00
Rmys 526e0dd740 Merge pull request #866 from erkanisik1/patch-3
Homepage update
2019-02-06 18:47:23 +03:00
Erkan IŞIK 24cb59e626 Homepage update 2019-02-06 18:44:57 +03:00
Kamil ATLI e7e7ec0c67 Merge pull request #865 from erkanisik1/patch-2
Felus Catus version update
2019-02-06 12:42:20 +03:00
Erkan IŞIK b897d7783e Felus Catus version update 2019-02-06 11:45:47 +03:00
Ertuğrul Erata df1eb84d90 Merge pull request #863 from erkanisik1/patch-1
pisi 2.2 Felis catus güncellemesi
2019-02-02 10:19:15 +03:00
Erkan IŞIK e68dcde544 pisi 2.2 Felis catus güncellemesi 2019-02-02 01:30:48 +03:00
Rmys 59f7ff7c12 Merge pull request #862 from Rmys/master
module-virtualbox-6.0.4:ver.bump
2019-01-29 19:50:13 +03:00
Rmys b376a222ae module-virtualbox-6.0.4:ver.bump 2019-01-29 19:48:38 +03:00
Rmys 49999633e1 Merge pull request #861 from Rmys/master
ncurses:rebuild pkgconfig hatalı yerde oluşmuş kısayollar anlamsız ka…
2019-01-25 14:47:26 +03:00
Rmys 96d9e2646d ncurses:rebuild pkgconfig hatalı yerde oluşmuş kısayollar anlamsız kalmış 2019-01-25 14:46:22 +03:00
Rmys 93c0aa9838 Merge pull request #860 from Rmys/master
libxml2:rebuild XML2_INCLUDEDIR=-I/emul32/include/libxml2 32bit sh dos
2019-01-24 16:46:21 +03:00
Rmys f8cb2856ed libxml2:rebuild XML2_INCLUDEDIR=-I/emul32/include/libxml2 32bit sh dos 2019-01-24 16:45:21 +03:00
Rmys d6b9a612f0 Merge pull request #859 from Rmys/master
libxslt:rebuild XSLT_INCLUDEDIR=-I/emul32/include hata
2019-01-22 15:43:40 +03:00
Rmys b4a3a2e376 libxslt:rebuild XSLT_INCLUDEDIR=-I/emul32/include hata 2019-01-22 15:42:31 +03:00
Rmys 217420121f Merge pull request #858 from Rmys/master
module:rebuild kernel
2019-01-20 14:21:44 +03:00
Rmys 6eee9bdbb2 module:rebuild kernel 2019-01-20 14:21:02 +03:00
Rmys 89b5076295 Merge pull request #857 from Rmys/master
klibc:rebuild kernel
2019-01-20 14:09:36 +03:00
Rmys d5f9065961 klibc:rebuild kernel 2019-01-20 14:08:17 +03:00
Ertuğrul Erata 9d868df42b Merge pull request #856 from ertugerata/master
update kernel, cpupowertools and rebuild modules.
2019-01-20 09:56:57 +03:00
Ertuğrul Erata cf053c3b90 fix date 2019-01-20 09:53:18 +03:00
Ertuğrul Erata 41229e6b4a fix date 2019-01-20 09:52:40 +03:00
Ertuğrul Erata 8008a68682 fix date 2019-01-20 09:51:38 +03:00
Ertuğrul Erata 4659f7d81e fix date 2019-01-20 09:50:38 +03:00
Ertuğrul Erata 3dc2acf92a fix date 2019-01-20 09:50:01 +03:00
Ertuğrul Erata 8618d0fd83 rebuild 2019-01-20 09:44:29 +03:00
Ertuğrul Erata 0de347a26b Merge pull request #855 from ertugerata/kernel_4_19
pisi patched for kernel-4.19
2019-01-20 09:41:15 +03:00
Ertuğrul Erata c899604561 add patch for kernel-4.19 build 2019-01-20 09:38:43 +03:00
Ertuğrul Erata 7541047394 Merge pull request #854 from ertugerata/master
fix kmod deps, build wireless-regdb
2019-01-20 09:18:36 +03:00
Ertuğrul Erata 60dafbe84c index . 2019-01-20 09:23:53 +03:00
Ertuğrul Erata 9eef4d447b fix deps 2019-01-20 09:22:47 +03:00
Ertuğrul Erata 36f3fe26a1 cpupowertools 2019-01-20 08:48:02 +03:00
Ertuğrul Erata 5486d10245 opps, 2019-01-19 17:32:46 +03:00
Ertuğrul Erata c171050050 Merge branch 'master' into kernel_4_19 2019-01-17 23:06:34 +03:00
Ertuğrul Erata dec8a3b8af update 2019-01-17 22:49:09 +03:00
Rmys c70d3b568d Merge pull request #853 from Rmys/master
module-virtualbox-6.0.2:ver.bump
2019-01-16 20:10:00 +03:00
Rmys 9b9f7677fc module-virtualbox-6.0.2:ver.bump 2019-01-16 20:08:38 +03:00
Ertuğrul Erata 19c0bf30a9 minor fix 2019-01-16 18:58:11 +03:00
Ertuğrul Erata 0516287b93 wireless-regdb
for kernel
2019-01-16 18:38:56 +03:00
Rmys 03c61a7c12 Merge pull request #852 from Rmys/master
libpcre ver bump. libpcre2 First release
2019-01-15 11:23:23 +03:00
Rmys 9d2a0bab12 libpcre ver bump. libpcre2 First release 2019-01-15 11:22:08 +03:00
Ertuğrul Erata 561d397685 kerneltools patch for kernel-4.19
kernel-4.19 build, not ready
kernel-4.19 need crda.
2019-01-14 07:10:06 +03:00
Rmys 96896e6779 Merge pull request #851 from Rmys/master
docbook-xsl:rebuild smb.conf.5.xml error
2019-01-13 20:02:17 +03:00
Rmys eb23668e59 docbook-xsl:rebuild smb.conf.5.xml error 2019-01-13 20:00:14 +03:00
Rmys eacbb0aed1 readline patch sonrası rei edilmemiş 2019-01-10 22:34:05 +03:00
Rmys 1ab1a2709a Merge pull request #850 from Rmys/master
xtrans:rebuild
2019-01-07 13:38:57 +03:00
Rmys 0b3b009a1f xtrans:rebuild 2019-01-07 13:38:19 +03:00
Rmys 93ef000dcf Merge pull request #849 from Rmys/master
util-macros:ver.bump
2019-01-07 13:26:46 +03:00
Rmys 74a2cd1fbc util-macros:ver.bump 2019-01-07 13:26:09 +03:00
Rmys 27e1c32c2f Merge pull request #848 from Rmys/master
xorg-util:rebuild xorg-proto
2019-01-07 13:16:15 +03:00
Rmys f06962ff49 xorg-util:rebuild xorg-proto 2019-01-07 13:14:45 +03:00
Rmys e72c33ea1c Merge pull request #847 from Rmys/master
xorg-proto:rebuild printproto.pc
2019-01-06 22:52:56 +03:00
Rmys 72bcb3a4f0 xorg-proto:rebuild printproto.pc 2019-01-06 22:52:14 +03:00
Rmys 38b471accf Merge pull request #846 from Rmys/master
xorg-proto:rebuild printproto.pc
2019-01-06 22:44:56 +03:00
Rmys 3d9a91e47b xorg-proto:rebuild printproto.pc 2019-01-06 22:44:24 +03:00
Rmys cacc184bec Merge pull request #845 from Rmys/master
xorg-proto:rebuild printproto.pc
2019-01-06 22:40:28 +03:00
Rmys 2009f47d35 xorg-proto:rebuild printproto.pc 2019-01-06 22:39:13 +03:00
Rmys b09f32bb89 Merge pull request #844 from Rmys/master
cryptsetup libxslt:ver.bump
2019-01-01 19:34:28 +03:00
Rmys 04b4284e1f cryptsetup libxslt:ver.bump 2019-01-01 19:21:10 +03:00
Rmys ca2e85e618 Merge pull request #843 from Rmys/master
libgcrypt:ver.bump
2019-01-01 19:16:54 +03:00
Rmys 9d1a1293cf libgcrypt:ver.bump 2019-01-01 19:15:03 +03:00
Rmys 85834afa5e Merge pull request #842 from Rmys/master
libgpg-rerror, libxml2:ver.bump
2019-01-01 19:12:41 +03:00
Rmys ddc4a84da4 libgpg-rerror, libxml2:ver.bump 2019-01-01 19:10:35 +03:00
Rmys b2c5c58798 libarchive-3.3.3:ver.bump 2018-12-26 23:21:03 +03:00
Rmys 230f92a697 Merge pull request #841 from Rmys/master
pisi:rebuild qt5 qmake-qt5\n qt5 uzantısı silindi
2018-12-24 14:15:27 +03:00
Rmys c1a0a3eb9c pisi:rebuild qt5 qmake-qt5\n qt5 uzantısı silindi 2018-12-24 14:13:36 +03:00
Rmys 34bf329046 Merge pull request #840 from Rmys/master
klibc:rebuild kernel-module-headers kernel için konulmuş gerekli deği…
2018-12-23 20:00:09 +03:00
Rmys 759640c053 klibc:rebuild kernel-module-headers kernel için konulmuş gerekli değil gönüllüde ayarlı Kernel güncellemesi sonrasında klibc rei edilmeli 2018-12-23 19:59:11 +03:00
Rmys 96016a5e8a Merge pull request #839 from Rmys/master
module-virtualbox:rebuild
2018-12-22 21:44:18 +03:00
Rmys d35751f97a module-virtualbox:rebuild 2018-12-22 21:43:28 +03:00
Rmys bc0523930c Merge pull request #838 from Rmys/master
kernel
2018-12-22 21:00:42 +03:00
Rmys 7ee3069f2b kernel 2018-12-22 20:59:34 +03:00
Rmys 366c33d22d Merge pull request #836 from ertugerata/kernel_4_14
cpupowertools update
2018-12-22 20:58:01 +03:00
Rmys 826277ad5b Merge pull request #837 from Rmys/master
/module-virtualbox:ver.bump
2018-12-22 19:22:52 +03:00
Rmys afce404101 /module-virtualbox:ver.bump 2018-12-22 19:21:42 +03:00
Ertuğrul Erata 392cd3a3e1 update 2018-12-22 19:14:55 +03:00
Ertuğrul Erata b14ed80451 Merge pull request #835 from ertugerata/kernel_4_14
update Kernel 4.14.90
2018-12-22 19:06:19 +03:00
Ertuğrul Erata 6576345561 Merge branch 'master' into kernel_4_14 2018-12-22 18:37:53 +03:00
Ertuğrul Erata ac864a549e update 2 kernel-4.14.90 2018-12-22 18:12:41 +03:00
Rmys 529e0aca4d Merge pull request #834 from Rmys/master
sqlite:ver.bump
2018-12-11 16:20:05 +03:00
Rmys fb4bd0c1bb sqlite:ver.bump 2018-12-11 16:19:02 +03:00
Rmys 1067bd92b6 Merge pull request #833 from Rmys/master
index
2018-12-10 11:30:01 +03:00
Rmys f2eca7caf5 index 2018-12-10 11:29:00 +03:00
Rmys 9cd217f3b3 Merge pull request #832 from Rmys/master
procps:ver.bump
2018-12-10 11:19:18 +03:00
Rmys c08fa8900d procps:ver.bump 2018-12-10 11:18:03 +03:00
Rmys 107697f81d Merge pull request #831 from Rmys/master
audocious revert..
2018-12-10 11:14:02 +03:00
Rmys 05ef08671c audocious revert.. 2018-12-10 11:13:00 +03:00
Ertuğrul Erata a48f5cc0a5 Merge pull request #830 from ertugerata/master
os-release update
2018-12-08 22:49:26 +03:00
Ertuğrul Erata 9030c2b7a2 os-release updat
dont use ü.
2018-12-08 22:53:20 +03:00
Rmys d63d6b28ce Merge pull request #829 from Rmys/master
acl:rebuild
2018-11-29 22:30:24 +03:00
Rmys ff34565b46 acl:rebuild 2018-11-29 22:27:58 +03:00
Rmys d39aca7cd6 Merge pull request #828 from Rmys/master
attr:rebuild
2018-11-29 22:27:08 +03:00
Rmys f03ee49f25 attr:rebuild 2018-11-29 22:25:38 +03:00
Ertuğrul Erata 043a194f72 Merge pull request #827 from ertugerata/lfs_stable_update
man-db and man-pages update
2018-11-29 14:04:31 +03:00
Ertuğrul Erata 0410599eee update man-pages 2018-11-29 14:08:47 +03:00
Ertuğrul Erata 75b3405d6b man-db update to 2.8.4 2018-11-29 14:01:21 +03:00
Ertuğrul Erata b5a9e65b7e Merge pull request #826 from ertugerata/lfs_stable_update
elfutils update to 0.173
2018-11-29 12:25:05 +03:00
Ertuğrul Erata bfa32c4f21 elfutils update to 0.173 2018-11-29 12:28:58 +03:00
Ertuğrul Erata e57f4d9b18 bison update 2018-11-29 11:51:33 +03:00
Ertuğrul Erata 1ea1de241e Merge pull request #825 from ertugerata/lfs_stable_update
bison update
2018-11-29 11:47:56 +03:00
Ertuğrul Erata ea23f46b39 2018e 2018-11-29 11:34:10 +03:00
Ertuğrul Erata 2736eaffb7 Merge pull request #824 from ertugerata/lfs_stable_update
2018e
2018-11-29 11:30:24 +03:00
Ertuğrul Erata c822fa01d6 Merge pull request #823 from ertugerata/lfs_stable_update
bash update to 4.4.18
2018-11-28 23:38:18 +03:00
Ertuğrul Erata 55ea0fb002 bash update to 4.4.18 2018-11-28 23:42:33 +03:00
Ertuğrul Erata 37c6ebb67f Merge pull request #822 from ertugerata/lfs_stable_update
gawk and coreutils update
2018-11-28 23:10:48 +03:00
Ertuğrul Erata e57725a2d9 gawk update 2018-11-28 23:14:54 +03:00
Ertuğrul Erata 799cde4423 update coreutils 2018-11-28 23:05:02 +03:00
Ertuğrul Erata 899baa7d2d Merge pull request #821 from ertugerata/lfs_stable_update
Lfs stable update
2018-11-28 21:59:22 +03:00
Ertuğrul Erata 122f73b1c3 openssl update 2018-11-28 20:57:54 +03:00
Ertuğrul Erata 24e930e12a xz update 2018-11-28 20:27:21 +03:00
Ertuğrul Erata e7aea5284d shadow update 2018-11-28 20:19:59 +03:00
Ertuğrul Erata 0ae9008f02 sed update 2018-11-28 20:15:04 +03:00
Ertuğrul Erata b14b646274 procps update 2018-11-28 20:09:48 +03:00
Ertuğrul Erata 63745a38f8 expat update 2018-11-28 19:58:49 +03:00
Ertuğrul Erata 36eb7494e9 lfs_stable_sync1 2018-11-28 16:06:12 +03:00
Ertuğrul Erata df05c19922 Merge pull request #820 from ertugerata/master
add 2 group and os-release file
2018-11-28 14:12:53 +03:00
Ertuğrul Erata fb645b5490 add 2 group and os-release file 2018-11-28 14:15:58 +03:00
Ertuğrul Erata 0a69476d7f Merge pull request #819 from ertugerata/master
add builddep intltool and fix for build fast
2018-11-28 12:43:40 +03:00
Ertuğrul Erata 397a92e514 add builddep intltool and fix for build fast 2018-11-28 12:39:35 +03:00
Rmys 30fdcf68ff Merge pull request #818 from Rmys/master
module virtualbox:ver.bump
2018-11-23 17:19:14 +03:00
Rmys 5b84a62198 module virtualbox:ver.bump 2018-11-23 13:43:04 +03:00
Ertuğrul Erata aa2da80110 Merge pull request #817 from ertugerata/pciutils_update
pciutils update to 3.6.2
2018-11-22 14:12:48 +03:00
Ertuğrul Erata 8072c2d0ab pciutils update to 3.6.2 2018-11-21 12:48:11 +03:00
Ertuğrul Erata 47d36dde4f Merge pull request #816 from ertugerata/master
index .
2018-11-13 20:41:13 +00:00
Ertuğrul Erata 52123bad72 index . 2018-11-13 22:55:47 +03:00
Ertuğrul Erata 3b5b099107 Merge pull request #815 from ertugerata/master
2.1 Rebuid
2018-11-13 19:45:13 +00:00
Ertuğrul Erata 26a1a5e336 2.1 rebuild 2018-11-13 22:44:34 +03:00
Ertuğrul Erata 0dfb15dad0 2.1 rebuild 2018-11-13 22:43:36 +03:00
Ertuğrul Erata 2314eca4bc 2.1 2018-11-13 22:44:24 +03:00
Ertuğrul Erata 1b0a21e604 Merge branch 'master' of https://github.com/pisilinux/core 2018-11-13 22:43:51 +03:00
Ertuğrul Erata 841f2bda8d Merge pull request #814 from ertugerata/master
for 2.1
2018-11-13 19:40:07 +00:00
Ertuğrul Erata 83ede2cde1 Merge branch 'master' of https://github.com/pisilinux/core into kernel_4_14 2018-11-07 17:59:21 +03:00
Rmys e7a52c144f Merge pull request #813 from Rmys/master
module-virtualbox-guest:vboxsf
2018-11-07 10:38:17 +03:00
Rmys e58511274c module-virtualbox-guest:vboxsf 2018-11-07 10:36:43 +03:00
Rmys f4240ab51f Merge pull request #812 from Rmys/master
module-virtualbox-guest
2018-11-07 00:56:27 +03:00
Rmys 8c13db4903 module-virtualbox-guest 2018-11-07 00:44:04 +03:00
Rmys f9d2ac2a16 Merge pull request #811 from Rmys/master
virtualbox:ver.bump
2018-11-06 18:05:31 +03:00
Rmys 1725db6e49 virtualbox:ver.bump 2018-11-06 18:03:53 +03:00
Rmys 4cadf9b10c libunwind-32bit 2018-11-06 11:06:51 +03:00
Rmys 88b7914ba3 libunwind-32bit 2018-11-06 10:33:40 +03:00
Rmys e9aafdafe7 Merge pull request #810 from Rmys/master
libunwind:rebuild 32 bit
2018-11-06 03:00:23 +03:00
Rmys 2c40dd6bd2 libunwind:rebuild 32 bit 2018-11-06 02:57:12 +03:00
Rmys 687e794e00 Merge pull request #809 from Rmys/master
xcb-proto
2018-11-05 13:12:26 +03:00
Rmys 6725c49e10 xcb-proto 2018-11-05 13:10:50 +03:00
Ertuğrul Erata 760685570b Merge branch 'master' of https://github.com/pisilinux/core 2018-10-31 19:16:17 +03:00
Rmys fc76627d69 dbus-python:rebuild 2018-10-31 18:50:17 +03:00
Rmys 2a0318f72a polkit:rebuild 2018-10-31 18:35:41 +03:00
Rmys ef0fd409db dbus-glib:rebuild 2018-10-31 18:31:32 +03:00
Ertuğrul Erata 70bca8f75e index . 2018-10-10 07:18:55 +03:00
Ertuğrul Erata d3bf6c2cba Merge pull request #808 from ertugerata/kernel_4_14
Kernel- 4.14.73 and dbus enable-user-session
2018-10-05 21:17:54 +03:00
Ertuğrul Erata 71cf376842 enable-user-session 2018-10-05 21:19:02 +03:00
Ertuğrul Erata 388ab401f9 cpupowertools 2018-10-05 21:04:49 +03:00
Ertuğrul Erata 6f2fb3eda9 drivers is ready 2018-10-05 20:58:48 +03:00
Ertuğrul Erata 9fc1fb2f59 work for kernel-4.14.73
enable bfd for build bcc
2018-10-03 20:52:38 +03:00
Ertuğrul Erata d55f54d30d work for enable-user-session 2018-10-03 18:51:03 +03:00
Rmys 0e5d6be90a Merge pull request #807 from Rmys/master
mdadm:rebuild
2018-10-02 16:05:40 +03:00
Rmys 1fd1c7b457 mdadm:rebuild 2018-10-02 16:03:59 +03:00
Rmys db22e9cbed Merge pull request #806 from Rmys/master
mdadm:rebuild
2018-10-02 16:02:27 +03:00
Rmys 2d2e3a53b9 mdadm:rebuild 2018-10-02 16:00:43 +03:00
Rmys 3bad90c8f4 Merge pull request #805 from Rmys/master
wireless-tools:rebuild
2018-09-21 11:32:23 +03:00
Rmys 58f7f2768e wireless-tools:rebuild 2018-09-21 11:31:06 +03:00
Rmys 848099b342 Merge pull request #804 from Rmys/master
docbook-xml:rebuild
2018-09-19 14:17:10 +03:00
Rmys 936a1dbdff docbook-xml:rebuild 2018-09-19 14:16:23 +03:00
Rmys 9d061dabb3 Merge pull request #803 from Rmys/master
docbook-xml:rebuild
2018-09-19 14:11:14 +03:00
Rmys 3f16483167 docbook-xml:rebuild 2018-09-19 14:09:31 +03:00
Rmys 846151e2ab docbook-xml 2018-09-19 11:57:11 +03:00
Rmys e028f31d80 Merge pull request #802 from Rmys/master
docbook-xml:rebuild
2018-09-19 11:53:25 +03:00
Rmys c5cf773c78 docbook-xml:rebuild 2018-09-19 11:51:08 +03:00
Rmys a9cccb1ac4 Merge pull request #801 from Rmys/master
fuse:rebuild gettext
2018-09-18 16:55:30 +03:00
Rmys fb1e547993 fuse:rebuild gettext 2018-09-18 16:54:43 +03:00
Rmys e00e8e34f0 Merge pull request #800 from Rmys/master
e2fsprogs:rebuild util-linux
2018-09-18 16:45:51 +03:00
Rmys 05f38fd481 e2fsprogs:rebuild util-linux 2018-09-18 16:44:51 +03:00
Rmys 8d4f42b6ea libunistring:rebuild 2018-09-16 22:43:52 +03:00
Rmys 77747e64c2 Merge pull request #799 from Rmys/master
virtualbox:ver.bump
2018-09-16 20:35:55 +03:00
Rmys 45ee6cac8e virtualbox:ver.bump 2018-09-16 20:35:23 +03:00
Rmys 5bd40321bb Merge pull request #798 from Rmys/master
libtool:rebuild
2018-09-16 15:10:02 +03:00
Rmys ebebc1db9c libtool:rebuild 2018-09-16 15:09:24 +03:00
Rmys f5e63f1ea4 Merge pull request #797 from Rmys/master
xorg-proto-2018.4:ver.bump
2018-09-12 13:38:07 +03:00
Rmys b3b6b51230 xorg-proto-2018.4:ver.bump 2018-09-12 13:36:39 +03:00
Rmys 047ad44ce2 glibc:rebuild texinfo build dep 2018-09-06 17:59:19 +03:00
Rmys 97d20c5866 Merge pull request #796 from Rmys/master
glibc:rebuild
2018-09-06 15:45:26 +03:00
Rmys 2889d59927 glibc:rebuild 2018-09-06 15:44:21 +03:00
Rmys 16fcd9e4c9 Merge pull request #795 from Rmys/master
glibc:rebuild
2018-09-02 11:46:10 +03:00
Rmys fa5936ecbc glibc:rebuild 2018-09-02 11:44:48 +03:00
Rmys eeb929e473 Merge pull request #794 from Rmys/master
module-virtualbox-5.2.16:ver.bump
2018-08-18 12:47:14 +03:00
Rmys b830ec4abe module-virtualbox-5.2.16:ver.bump 2018-08-18 11:49:10 +03:00
Rmys b448940c2b Merge pull request #793 from Rmys/master
farmV3-paketler:rebuild
2018-08-16 17:50:26 +03:00
Rmys aea3123153 farmV3-paketler:rebuild 2018-08-16 17:49:15 +03:00
Rmys eb4bfd2b19 curl:rebuild 2018-08-16 01:04:36 +03:00
Rmys 40056d1594 libuv:rebuild python-sphinx new tol. 2018-08-16 00:21:13 +03:00
Kamil ATLI ca760b6e91 kernel 2018-08-15 18:35:49 +03:00
Rmys ee8b22e226 perl rebuild gdbm 2018-08-11 11:53:18 +03:00
Rmys a2c8db4b88 Merge pull request #792 from Rmys/master
readline:rebuild patch
2018-08-11 11:18:54 +03:00
Rmys c6a319b054 readline:rebuild patch 2018-08-11 11:17:47 +03:00
Rmys f603c87d70 openssl.rebuild sed 2018-08-11 10:59:33 +03:00
Ertuğrul Erata d1e9bfce97 Merge pull request #791 from ertugerata/master
index .
2018-08-10 23:11:17 +03:00
Ertuğrul Erata 1ef0cdce3d index . 2018-08-10 23:12:52 +03:00
Ertuğrul Erata 63f0c793b2 Merge pull request #790 from ertugerata/kernel-4.14
Kernel 4.14.61
2018-08-07 22:50:39 +03:00
Ertuğrul Erata 0f16a88e45 rebuild 2018-08-07 22:39:09 +03:00
Ertuğrul Erata 87ddc8dc71 new patch 2018-08-07 22:38:33 +03:00
Ertuğrul Erata 5c098ddfad rebuild 2018-08-07 22:37:44 +03:00
Ertuğrul Erata 7cb750dfd0 rebuild 2018-08-07 22:36:53 +03:00
Ertuğrul Erata c366d3dd8f rebuild 2018-08-07 22:36:10 +03:00
Ertuğrul Erata ee222422f9 rm 2018-08-07 22:35:35 +03:00
Ertuğrul Erata 1891eca7f0 rebuild for new kernel 2018-08-07 22:33:53 +03:00
Ertuğrul Erata 9fefc8f40b rebuild for new kernel release 2018-08-06 23:37:11 +03:00
Ertuğrul Erata 65b7795002 works for 4.14.61 2018-08-06 21:57:17 +03:00
Rmys 600e1bcdc6 Merge pull request #789 from Rmys/master
python-setuptools:Ver.Bump
2018-08-05 19:17:51 +03:00
Rmys e7aa0b692b python-setuptools:Ver.Bump 2018-08-05 19:16:54 +03:00
Ertuğrul Erata fcd4306a29 Merge branch 'master' of https://github.com/pisilinux/core 2018-08-05 08:45:09 +03:00
Rmys 82a3c3fe0a rsyslog 2018-08-05 02:15:53 +03:00
Rmys 4026194016 libxslt 2018-08-05 02:14:54 +03:00
Rmys d0266358ec cryptsetup 2018-08-05 02:06:11 +03:00
Rmys 59667fddcd Merge pull request #788 from Rmys/master
libgcrypt
2018-08-05 01:45:51 +03:00
Rmys eb6721206b libgcrypt 2018-08-05 01:44:51 +03:00
Rmys abb6b08216 Merge pull request #787 from Rmys/master
libgpg-error
2018-08-05 01:24:36 +03:00
Rmys 9e8a6a7144 libgpg-error 2018-08-05 01:23:38 +03:00
Ertuğrul Erata b7ead3442b Merge branch 'master' of https://github.com/pisilinux/core 2018-07-30 17:59:49 +03:00
Ertuğrul Erata 88cbb9d22e Merge branch 'master' of https://github.com/pisilinux/core 2018-07-30 17:59:26 +03:00
Ertuğrul Erata 21b1c7fe11 linux-firmware update 2018-07-30 13:24:37 +03:00
Ertuğrul Erata 651cbfc6b1 Merge pull request #786 from ertugerata/master
linux-firmware update
2018-07-30 13:23:18 +03:00
Rmys a2d78e4696 Merge pull request #785 from Rmys/master
bc:rebuild flex
2018-07-30 11:59:46 +03:00
Rmys 907ad47fe4 bc:rebuild flex 2018-07-30 11:58:51 +03:00
Rmys ad50ce10b1 Merge pull request #784 from Rmys/master
flex:rebuild help2man
2018-07-30 11:52:23 +03:00
Rmys 286e2674cf flex:rebuild help2man 2018-07-30 11:51:25 +03:00
Rmys 7466089959 glibc-2.26 sorunu 2018-07-30 02:30:27 +03:00
Rmys 0a445560f9 flex:rebuild 2018-07-30 02:08:45 +03:00
Rmys 0d25d690a6 m4:rebuild 2018-07-30 01:42:01 +03:00
Rmys eccd5b171f libarchive:rebuild 2018-07-30 00:30:44 +03:00
Rmys 8ecbde63c1 pisilinux-python:rebuild libX11 2018-07-24 00:03:33 +03:00
Rmys 1e979178fd dbus:rebuild libX11 2018-07-23 23:49:46 +03:00
Ertuğrul Erata 8dd8e2aa11 Merge pull request #783 from ertugerata/master
index last
2018-07-23 20:26:34 +03:00
Ertuğrul Erata 24f0e24010 index last 2018-07-23 20:27:11 +03:00
Ertuğrul Erata 352b8b0607 Merge pull request #782 from ertugerata/master
xmlto fix url
2018-07-23 20:21:55 +03:00
Ertuğrul Erata 81b4bec146 xmlto fix url 2018-07-23 20:23:32 +03:00
Ertuğrul Erata 8476a50e89 Merge pull request #781 from ertugerata/master
fix source url
2018-07-23 20:13:10 +03:00
Ertuğrul Erata 233f136790 fix source url 2018-07-23 20:14:49 +03:00
Ertuğrul Erata 25c9b415c9 Merge pull request #780 from ertugerata/master
rebuild
2018-07-23 20:05:10 +03:00
Ertuğrul Erata 5d15ad1d98 Merge branch 'master' of https://github.com/ertugerata/core 2018-07-23 20:06:39 +03:00
Ertuğrul Erata d9cffdc00c son 10 günde ellenmeyenler 2018-07-23 20:06:12 +03:00
Ertuğrul Erata 4966905b59 rebuild 2018-07-23 20:03:09 +03:00
Ertuğrul Erata 7bf49b6bf1 rebuild 2018-07-23 20:01:51 +03:00
Ertuğrul Erata 0789f494e5 rebuild 2018-07-23 20:00:40 +03:00
Ertuğrul Erata 206d2588ec index now 2018-07-23 18:18:06 +03:00
Ertuğrul Erata 4b9cac02fb Merge pull request #779 from ertugerata/master
index now
2018-07-23 18:16:51 +03:00
Rmys bccb454286 Merge pull request #778 from Rmys/master
find düzletmesi
2018-07-23 02:49:26 +03:00
Rmys f6df3676ac find düzletmesi 2018-07-23 02:48:30 +03:00
Rmys 3587f8929a Merge pull request #777 from Rmys/master
spidermonkey:rebuild
2018-07-22 23:32:14 +03:00
Rmys 15381934a5 spidermonkey:rebuild 2018-07-22 23:31:32 +03:00
Rmys 23c4e9de7f Merge pull request #776 from Rmys/master
sed:rebuild
2018-07-22 22:58:56 +03:00
Rmys 6e24f4aa0f sed:rebuild 2018-07-22 22:58:08 +03:00
Ertuğrul Erata 1e8d0e7115 Merge pull request #775 from ertugerata/master
update pspec file
2018-07-22 21:46:57 +03:00
Ertuğrul Erata 064dc43a01 update pspec file 2018-07-22 21:48:24 +03:00
Ertuğrul Erata 33738806a6 Merge pull request #774 from ertugerata/master
openssl remove patch
2018-07-22 21:35:50 +03:00
Ertuğrul Erata 8c7dbe7b06 openssl remove patch 2018-07-22 21:37:05 +03:00
Ertuğrul Erata 56fc7e6c68 Merge pull request #773 from ertugerata/master
rebuild openssl
2018-07-22 21:22:58 +03:00
Ertuğrul Erata ce84efe74e rebuild openssl 2018-07-22 21:24:13 +03:00
Rmys ff5654805d Merge pull request #772 from Rmys/master
spidermonkey:rebuild
2018-07-22 21:13:11 +03:00
Rmys b242d73402 spidermonkey:rebuild 2018-07-22 21:12:21 +03:00
Ertuğrul Erata 1f4e1652d3 opps 2018-07-22 12:08:23 +03:00
Ertuğrul Erata 3ce1f3303b Merge pull request #771 from ertugerata/master
ca-certificates rebuild
2018-07-22 12:08:18 +03:00
Rmys e59db9eaa8 Merge pull request #770 from Rmys/master
pypolkit-pkgconfig:rebuild glib2
2018-07-22 08:48:00 +03:00
Rmys 90666ee590 pypolkit-pkgconfig:rebuild glib2 2018-07-22 08:47:06 +03:00
Ertuğrul Erata a936144e9b index . 2018-07-22 01:26:52 +03:00
Rmys c9d09700ff Merge pull request #769 from Rmys/master
spidermonkey:rebuild
2018-07-21 15:06:14 +03:00
Rmys 9518671062 spidermonkey:rebuild 2018-07-21 15:04:37 +03:00
Rmys 3c577bf575 Merge pull request #768 from Rmys/master
spidermonkey:rebuild
2018-07-21 14:59:22 +03:00
Rmys 2506051933 spidermonkey:rebuild 2018-07-21 14:58:31 +03:00
Ertuğrul Erata 072b672ce0 Merge pull request #767 from ertugerata/master
fix
2018-07-21 10:06:13 +03:00
Ertuğrul Erata 5135fde627 fix 2018-07-21 10:07:55 +03:00
Ertuğrul Erata f7e4b2d642 Merge pull request #766 from ertugerata/spidermonkey_update
spidermonkey and polkit update
2018-07-21 09:59:40 +03:00
Ertuğrul Erata 90f11052f1 opps 2018-07-21 10:00:42 +03:00
Ertuğrul Erata 4637bb3cf3 spidermonkey and polkit update 2018-07-21 09:57:51 +03:00
Ertuğrul Erata d64a13221b update gobject-introspection 2018-07-21 00:00:10 +03:00
Ertuğrul Erata 694e3a88dd Merge pull request #765 from ertugerata/master
update gobject-introspection
2018-07-20 23:59:25 +03:00
Ertuğrul Erata c90882c562 Merge pull request #764 from ertugerata/master
rebuild for new glib2
2018-07-20 23:38:40 +03:00
Ertuğrul Erata 91c16e8549 rebuild 2018-07-20 23:30:50 +03:00
Ertuğrul Erata fb66afc45a rebuild 2018-07-20 23:27:36 +03:00
Ertuğrul Erata 73c98f91c3 rebuild 2018-07-20 23:27:04 +03:00
Ertuğrul Erata 13aee35ff0 rebuild 2018-07-20 23:26:38 +03:00
Ertuğrul Erata a73e67649e Merge pull request #763 from ertugerata/glib2_update
glib2 update
2018-07-20 23:25:19 +03:00
Ertuğrul Erata 96a9ee620d glib2 update 2018-07-20 23:26:58 +03:00
Ertuğrul Erata 65218ec990 Merge pull request #762 from ertugerata/openssl_rebuild
Openssl and ca-certificates rebuild
2018-07-20 22:41:55 +03:00
Ertuğrul Erata cccc65a201 ca-certificates rebuild 2018-07-20 22:41:13 +03:00
Ertuğrul Erata e5c4308f1b Merge branch 'master' into openssl_rebuild 2018-07-20 22:22:04 +03:00
Ertuğrul Erata 18ae5ae719 Merge pull request #761 from ertugerata/master
dbus-python rebuild
2018-07-20 22:10:29 +03:00
Ertuğrul Erata 95a514a20d rebuild for new dbus 2018-07-20 22:09:20 +03:00
Ertuğrul Erata 63b8444286 Merge branch 'master' of https://github.com/pisilinux/core 2018-07-20 21:37:14 +03:00
Ertuğrul Erata 73d9195d84 Merge branch 'master' of https://github.com/pisilinux/core into openssl_rebuild 2018-07-20 21:34:56 +03:00
Rmys 4989e3ee8f Merge pull request #760 from Rmys/master
dbus-gelib-comar:rebuild
2018-07-20 15:46:52 +03:00
Rmys ca08ad00cc dbus-gelib-comar:rebuild 2018-07-20 15:46:07 +03:00
Rmys f1766c4f92 Merge pull request #759 from Rmys/master
dbus-1.12.8:ver.bump
2018-07-20 15:33:43 +03:00
Rmys 1f2d7cdc54 dbus-1.12.8:ver.bump 2018-07-20 15:32:34 +03:00
Rmys 9a7c8386db Merge pull request #758 from Rmys/master
polkit:rebuild
2018-07-20 14:08:15 +03:00
Rmys 60539fedc0 polkit:rebuild 2018-07-20 14:06:25 +03:00
Rmys 350df35b8d Merge pull request #757 from Rmys/master
intltool:rebuild
2018-07-20 14:04:41 +03:00
Rmys 96a9cd64ae intltool:rebuild 2018-07-20 14:03:45 +03:00
Rmys ccf36ab2b3 Merge pull request #756 from pisilinux/Rmys-patch-3
make
2018-07-20 12:55:56 +03:00
Rmys a459dba350 Merge pull request #755 from pisilinux/Rmys-patch-2
autogen
2018-07-20 12:54:52 +03:00
Rmys 8967ea2e43 make 2018-07-20 12:35:17 +03:00
Rmys 3f0f569d5c autogen 2018-07-20 12:34:23 +03:00
Rmys cfb1a0c7f7 Merge pull request #754 from Rmys/master
make:rebuild
2018-07-20 12:02:28 +03:00
Rmys ff7f59c9c7 make:rebuild 2018-07-20 12:01:24 +03:00
Rmys 1b6652fcd3 gmp 2018-07-20 09:49:00 +03:00
Rmys 4d6d004693 gc:rebuild 2018-07-20 09:41:20 +03:00
Ertuğrul Erata 592f36cddf rebuild 2018-07-19 21:35:20 +03:00
Ertuğrul Erata 714828a4be openssl
thanks @pldlinux
2018-07-19 21:33:32 +03:00
Rmys 455734a482 Merge pull request #753 from Rmys/master
perl-Locale-gettext:rebuild
2018-07-19 20:29:15 +03:00
Rmys 49b75494a3 perl-Locale-gettext:rebuild 2018-07-19 20:28:28 +03:00
Rmys 0e1bfd60b1 Merge pull request #752 from Rmys/master
spidermonkey:rebuild
2018-07-19 20:27:05 +03:00
Rmys 7c06649ce7 spidermonkey:rebuild 2018-07-19 20:26:18 +03:00
Ertuğrul Erata 83655488c2 Merge branch 'master' of https://github.com/pisilinux/core 2018-07-19 20:19:59 +03:00
Rmys 522ca9b8d0 Merge pull request #751 from Rmys/master
mdadm:rebuild
2018-07-19 20:16:21 +03:00
Rmys dc3b1df0db Merge pull request #750 from Rmys/master
libee:rebuild
2018-07-19 20:15:39 +03:00
Rmys 8b4b52af82 mdadm:rebuild 2018-07-19 20:15:08 +03:00
Rmys 2d45aa85a7 libee:rebuild 2018-07-19 20:12:31 +03:00
Rmys d8635e66ea Merge pull request #749 from Rmys/master
rebuild
2018-07-19 20:10:48 +03:00
Rmys 18400c207b rebuild 2018-07-19 20:10:02 +03:00
Rmys c58b08d473 Merge pull request #748 from Rmys/master
bc:rebuild
2018-07-19 20:06:57 +03:00
Rmys d3ca0bae1b bc:rebuild 2018-07-19 20:06:13 +03:00
Rmys 955ae107dd Merge pull request #747 from Rmys/master
liblogging:rebuild
2018-07-19 20:05:42 +03:00
Rmys 3ba8cfa37d liblogging:rebuild 2018-07-19 20:04:49 +03:00
Rmys 4a1de37f8c Merge pull request #746 from Rmys/master
texinfo:rebuild
2018-07-19 19:57:24 +03:00
Rmys 8615e750a9 texinfo:rebuild 2018-07-19 19:56:23 +03:00
Rmys 123c555b7f Merge pull request #745 from Rmys/master
gdbm
2018-07-19 19:15:02 +03:00
Rmys 799c34bb3b gdbm 2018-07-19 19:14:07 +03:00
Rmys df083a4ce0 Merge pull request #744 from Rmys/master
pisi
2018-07-19 19:10:08 +03:00
Rmys b71d980b52 pisi 2018-07-19 19:08:29 +03:00
Rmys 94fd884aba Merge pull request #743 from Rmys/master
intltool
2018-07-19 19:06:12 +03:00
Rmys 6f77189809 intltool 2018-07-19 19:04:50 +03:00
Rmys 45578c883b Merge pull request #742 from Rmys/master
perl-XML-Parser
2018-07-19 19:01:03 +03:00
Rmys eea1a3bf4f perl-XML-Parser 2018-07-19 19:00:11 +03:00
Rmys 4dd5be6315 readline 2018-07-19 02:58:34 +03:00
Rmys 9413267978 guile:rebuild 2018-07-18 23:40:01 +03:00
Rmys dcddb6f1d3 make 2018-07-18 22:49:59 +03:00
Rmys d5c56720fe autogen 2018-07-18 15:00:29 +03:00
Rmys 8a452c41da m4 2018-07-18 13:28:34 +03:00
Rmys 66ee19231a libgcrypt 2018-07-18 13:27:31 +03:00
Rmys 7ebf784b27 klibc 2018-07-18 13:26:18 +03:00
Rmys 048c3dd7d4 libtool 2018-07-18 13:25:42 +03:00
Rmys 1d094bf577 Merge pull request #741 from Rmys/master
guile-2.0.14
2018-07-18 11:10:07 +03:00
Rmys c1364f0c43 guile-2.0.14 2018-07-18 11:09:14 +03:00
Ertuğrul Erata e55cde128f patch rebuild 2018-07-18 06:52:19 +03:00
Rmys b75207df79 Merge pull request #740 from Rmys/master
guile
2018-07-18 02:48:28 +03:00
Rmys a96a4a91cb guile 2018-07-18 02:47:32 +03:00
Kamil ATLI f21eda6dc0 Merge pull request #739 from suvari/master
make: patched
2018-07-18 02:20:28 +03:00
suvari 20e0753aa5 make: patched 2018-07-18 02:19:35 +03:00
Rmys 88a2d6d04c Merge pull request #738 from Rmys/master
guile-2.0.14
2018-07-18 02:18:38 +03:00
Rmys 57f9732197 guile-2.0.14 2018-07-18 01:00:17 +03:00
Ertuğrul Erata 5e76efce82 patch revert make build without guile 2018-07-17 22:53:46 +03:00
Ertuğrul Erata cb75a76876 make rebuild 2018-07-17 22:38:54 +03:00
Ertuğrul Erata f7e1781370 Merge pull request #737 from ertugerata/master
make rebuild
2018-07-17 22:37:44 +03:00
Ertuğrul Erata 00e6a9ccda Merge branch 'master' of https://github.com/pisilinux/core 2018-07-17 22:10:30 +03:00
Ertuğrul Erata 01693fc119 Merge branch 'master' of https://github.com/pisilinux/core 2018-07-17 22:07:49 +03:00
Ertuğrul Erata ad34710ff7 Merge pull request #736 from ertugerata/new_toolchain
rebuild slang
2018-07-17 22:07:25 +03:00
Ertuğrul Erata b0787429d5 rebuild slang 2018-07-17 22:07:16 +03:00
Ertuğrul Erata 52cd16181c rebuild 2018-07-17 22:03:17 +03:00
Ertuğrul Erata d65b80eb10 Merge pull request #735 from ertugerata/new_toolchain
rebuild
2018-07-17 22:02:14 +03:00
Ertuğrul Erata ad21a5499d Merge pull request #734 from ertugerata/new_toolchain
Merge pull request #13 from pisilinux/master
2018-07-17 21:48:37 +03:00
Ertuğrul Erata ce57105826 Merge pull request #13 from pisilinux/master
sync
2018-07-17 21:44:20 +03:00
Ertuğrul Erata b690bdbc72 Merge pull request #12 from pisilinux/master
sync
2018-07-17 21:40:40 +03:00
Rmys 26b0cc46b5 Python setuptools 2018-07-17 21:32:20 +03:00
Rmys 77a8ac4d5d numactl 2018-07-17 21:28:17 +03:00
Rmys d33d1bc2d4 libatomic_ops 2018-07-17 21:00:54 +03:00
Rmys 64455a10f1 gc:rebuild 2018-07-17 20:45:40 +03:00
Ertuğrul Erata 62e9dbd364 Merge pull request #732 from ertugerata/new_toolchain
system.devel and kernel rebuild
2018-07-17 18:29:13 +03:00
Ertuğrul Erata 10a32352fb Merge branch 'master' into new_toolchain 2018-07-17 18:29:04 +03:00
Rmys cff7f4506d Merge pull request #733 from Rmys/master
perl:rebuild
2018-07-17 16:54:30 +03:00
Rmys 01dd3fbc85 perl:rebuild 2018-07-17 16:53:31 +03:00
Rmys 84b97c6583 perl-XML-Parser 2018-07-17 16:28:16 +03:00
Ertuğrul Erata 4e06ea3d09 system.devel and kernel rebuild 2018-07-17 15:53:01 +03:00
Rmys 9cf2323de8 docbook-xsl:base bagımlılığı 2018-07-17 15:39:45 +03:00
Rmys 3777291ad0 mpfr:base bağımlılığı 2018-07-17 13:22:49 +03:00
Rmys 39df221e0c Merge pull request #731 from pisilinux/Rmys-patch-1
mpfr:base bağımlılığı gawk
2018-07-17 13:08:22 +03:00
Rmys f2d7fcd5c1 mpfr:base bağımlılığı gawk 2018-07-17 13:01:06 +03:00
Rmys 7d86197940 gmp:base bağımlılığı 2018-07-17 12:58:07 +03:00
Rmys dc836f07c7 Merge pull request #730 from Rmys/master
chrpath-flex:base bağımlılıkları
2018-07-17 12:45:33 +03:00
Rmys fae9cb4366 chrpath-flex:base bağımlılıkları 2018-07-17 12:44:35 +03:00
Rmys bf6a150ef4 ca-certificates 2018-07-17 01:40:45 +03:00
Rmys 0bfa3bffe3 gnuconfig:rebuild 2018-07-17 01:32:49 +03:00
Ertuğrul Erata 9f90607a5e libxslt rebuild 2018-07-17 00:40:49 +03:00
Ertuğrul Erata 61e8469f7a Merge pull request #729 from ertugerata/new_toolchain
libxslt rebuild
2018-07-17 00:39:16 +03:00
Rmys 652bde1847 perl-XML-Parser:rebuild 2018-07-16 23:49:05 +03:00
Rmys d494226e74 mailcap 2018-07-16 23:14:27 +03:00
Rmys a7c04bb83c run-parts 2018-07-16 23:07:55 +03:00
Rmys 80593e8db7 perl-Locale-gettext 2018-07-16 22:53:07 +03:00
Rmys 39feff04ad perl-Locale-gettext 2018-07-16 22:44:16 +03:00
Rmys 787e14b03c zip 2018-07-16 22:34:59 +03:00
Rmys 2487d00613 pciutils 2018-07-16 22:32:15 +03:00
Rmys ba04fc07c1 libpcre 2018-07-16 21:40:11 +03:00
Rmys e17fba2005 libgpg-error 2018-07-16 21:37:48 +03:00
Rmys 79ceb0e077 libgcrypt 2018-07-16 21:35:33 +03:00
Rmys 4776d3c53c libuser:rebuild 2018-07-16 21:30:11 +03:00
Rmys 55fcd47625 acl:rebuild 2018-07-16 20:04:19 +03:00
Rmys 55babc93c9 attr 2018-07-16 19:56:40 +03:00
Ertuğrul Erata 9d4831fd4c Merge pull request #728 from ertugerata/new_toolchain
rebuild with new toolchain
2018-07-16 19:47:10 +03:00
Ertuğrul Erata 5cf22583ea rebuild with new toolchain 2018-07-16 19:37:48 +03:00
Rmys 04dd540b94 Merge pull request #727 from Rmys/master
patch-2.7.6:index
2018-07-16 14:03:25 +03:00
Rmys ea4e68e572 patch-2.7.6:index 2018-07-16 14:02:31 +03:00
Rmys 2c4e1f5135 Merge pull request #726 from Rmys/master
patch-2.7.6:derlenmemiş
2018-07-16 13:46:27 +03:00
Rmys edba4f052e patch-2.7.6:derlenmemiş 2018-07-16 13:45:36 +03:00
Rmys 982a2bc731 patch:derlenmemiş 2018-07-16 13:39:25 +03:00
Rmys 761327443d timezone 2018-07-16 01:15:38 +03:00
Kamil ATLI 54d5d21831 test 2018-07-16 00:02:58 +03:00
Kamil ATLI 2ef79cde60 test 2018-07-15 23:54:43 +03:00
Rmys 4663cfb966 Merge pull request #725 from Rmys/master
time:rebuild
2018-07-15 20:13:19 +03:00
Rmys 894385775a time:rebuild 2018-07-15 20:12:31 +03:00
Kamil ATLI 3374e62529 gcc 2018-07-15 19:42:03 +03:00
Kamil ATLI f6c14ed355 gcc 2018-07-15 18:57:08 +03:00
Ertuğrul Erata 8959506b11 rebuild 2018-07-15 18:43:15 +03:00
Ertuğrul Erata 9fa8825470 Merge pull request #724 from ertugerata/new_toolchain
glibc gcc binutils updated
2018-07-15 17:24:12 +03:00
Ertuğrul Erata 782118c7f5 glibc gcc binutils updated 2018-07-15 14:37:47 +03:00
Rmys b7f888064c Merge pull request #723 from Rmys/master
cpupowertools:kernel-1.14.55
2018-07-13 12:39:16 +03:00
Rmys 13288814cd cpupowertools:kernel-1.14.55 2018-07-13 12:37:38 +03:00
Rmys f3082e05fd kernel-4.14.55 2018-07-13 12:31:26 +03:00
Rmys 708a870ff2 Merge pull request #722 from Rmys/master
kernel-4.14.55
2018-07-13 12:30:40 +03:00
Rmys d9d7577e2f kernel-4.14.55 2018-07-13 12:26:50 +03:00
Ertuğrul Erata b1a39bdffd Merge pull request #721 from ertugerata/kernel-4.14
Kernel 4.14.55 last LTS kernel
2018-07-12 20:50:46 +03:00
Ertuğrul Erata 51666d9724 works for kernel-4.14.55
not ready
2018-07-12 20:10:17 +03:00
Ertuğrul Erata d59cc98703 Merge branch 'master' into kernel-4.14 2018-07-12 19:05:01 +03:00
Ertuğrul Erata 83c1846dc7 Merge branch 'master' of https://github.com/pisilinux/core 2018-07-11 18:14:30 +03:00
Rmys 0184a57304 Merge pull request #720 from Rmys/master
util-linux:rfkill remove
2018-07-11 17:34:59 +03:00
Rmys 6a29f1794a util-linux:rfkill remove 2018-07-11 17:34:01 +03:00
Ertuğrul Erata fe8ed795d0 needed_build 2018-07-10 06:58:57 +03:00
Ertuğrul Erata 0ff80a13b7 Merge pull request #719 from ertugerata/master
index .
2018-07-10 06:55:00 +03:00
Ertuğrul Erata d9cb7624a3 index . 2018-07-10 06:55:17 +03:00
Rmys 1aad132954 Merge pull request #718 from Rmys/master
python:sqlite ver.bump
2018-07-09 15:56:33 +03:00
Rmys e9a7b160bc python:sqlite ver.bump 2018-07-09 15:56:05 +03:00
Rmys dc48a1ae8d Merge pull request #717 from Rmys/master
sqlite:ver.bump
2018-07-09 14:53:32 +03:00
Rmys 883cced078 sqlite:ver.bump 2018-07-09 13:37:31 +03:00
Ertuğrul Erata ac0ef35a1f Merge pull request #716 from ertugerata/sync_lfs_stable
rebuild python after readline update.
2018-07-07 19:11:25 +03:00
Ertuğrul Erata 1d9d18545f rebuild python after readline update. 2018-07-07 19:06:51 +03:00
Rmys 4527468f55 util-linux:rebuild 2018-07-06 23:13:48 +03:00
Ertuğrul Erata 34ace5f71f Merge pull request #715 from ertugerata/sync_lfs_stable
util-linux rebuild
2018-07-06 20:21:40 +03:00
Ertuğrul Erata d18f26c159 util-linux rebuild 2018-07-06 20:19:12 +03:00
Rmys f647ad5ad3 Merge pull request #714 from ertugerata/sync_lfs_stable
tar build fix
2018-07-06 20:00:12 +03:00
Ertuğrul Erata 05dc1d586b add texinfo buiddep for tar 2018-07-06 19:55:25 +03:00
Rmys e3f06314ae python:rebuild 2018-07-06 19:51:54 +03:00
Ertuğrul Erata 802774330a Merge branch 'master' of https://github.com/pisilinux/core into kernel-4.14 2018-07-06 19:51:12 +03:00
Rmys fd7b319386 openssl:perl 2018-07-06 19:28:19 +03:00
Rmys 3312a44e16 coreutils:perl 2018-07-06 19:27:38 +03:00
Rmys c0632865b2 man-db 2018-07-06 18:38:52 +03:00
Rmys 727d79dd1d check-part1 2018-07-06 18:31:05 +03:00
Ertuğrul Erata 929f7ea189 Merge branch 'master' into kernel-4.14 2018-07-04 19:23:57 +03:00
Ertuğrul Erata 7a8242dd27 Merge branch 'master' of https://github.com/ertugerata/core 2018-07-04 19:21:44 +03:00
Ertuğrul Erata 4e4529dad2 qMerge branch 'master' of https://github.com/pisilinux/core into kernel-4.14 2018-07-04 19:17:47 +03:00
Ertuğrul Erata 6bb551c02b Merge pull request #713 from ertugerata/sync_lfs_stable
Sync lfs stable
2018-07-04 19:15:22 +03:00
Ertuğrul Erata 7a0006dd76 fix date 2018-06-14 00:54:09 +03:00
Ertuğrul Erata 6b93486833 Merge pull request #11 from Rmys/patch-6
objtool
2018-06-13 21:51:17 +00:00
Rmys bda46a66bb objtool 2018-06-14 00:19:54 +03:00
Ertuğrul Erata 77d2015a9e ndiswrapper build 2018-06-13 14:21:02 +03:00
Ertuğrul Erata 12a0ea73f5 cpupowertools 2018-06-13 14:20:33 +03:00
Ertuğrul Erata 196dcaa6e1 kernel-4.14.19 2018-06-13 14:14:14 +03:00
Ertuğrul Erata 0340b692a5 ndiswrapper build
thanks @rmys
2018-06-12 00:38:01 +03:00
Ertuğrul Erata 04d1170057 Merge pull request #10 from Rmys/patch-5
linux-4.11.patch
2018-06-11 21:31:06 +00:00
Rmys 6f358c8ccb linux-4.11.patch 2018-06-12 00:30:32 +03:00
Ertuğrul Erata a46fbe6606 Merge pull request #9 from Rmys/patch-4
linux:patch
2018-06-11 21:28:01 +00:00
Ertuğrul Erata 4ece081e77 Merge pull request #8 from Rmys/patch-3
linux-4.15.patch
2018-06-11 21:27:46 +00:00
Ertuğrul Erata a8ead9c178 Merge pull request #6 from Rmys/patch-2
linux-4.13.patch
2018-06-11 21:27:34 +00:00
Ertuğrul Erata 81bd33b812 Merge pull request #7 from Rmys/patch-1
Patch 1
2018-06-11 21:27:22 +00:00
Rmys 2fb021b829 linux:patch 2018-06-12 00:24:59 +03:00
Rmys 754c71e34e linux-4.15.patch 2018-06-12 00:23:48 +03:00
Rmys e66f1d4136 linux-4.13.patch 2018-06-12 00:21:26 +03:00
Rmys 804504505a linux-4.11.patch 2018-06-12 00:19:58 +03:00
Ertuğrul Erata 1e65142e17 add objtool to kernel-module-headers package for external kernel module build 2018-06-10 11:50:18 +03:00
Ertuğrul Erata 199b4304d2 is not ready
kernel-4.14 series has dependency libelf?
2018-06-09 20:04:24 +03:00
Ertuğrul Erata d2b6e15a2e elfutils update 2018-06-09 20:02:44 +03:00
Ertuğrul Erata 665ecfceac opps 2018-06-09 19:31:58 +03:00
Ertuğrul Erata aa37b5a012 update dates 2018-06-09 14:03:11 +03:00
Ertuğrul Erata e2d36abad5 add patches 2018-06-09 13:49:13 +03:00
Ertuğrul Erata f1b6dc6350 kernel-4-14
add aufs pathes only
2018-06-09 13:33:31 +03:00
Ertuğrul Erata 0e8e8be278 Merge branch 'master' into kernel-4.14 2018-06-09 11:45:18 +03:00
Ertuğrul Erata e3db07a5f4 Merge branch 'master' of https://github.com/pisilinux/core into sync_lfs_stable 2018-05-24 23:00:36 +03:00
Ertuğrul Erata f52ec4a8e2 kmod update 2018-05-19 12:52:57 +03:00
Ertuğrul Erata 469c20a175 Merge branch 'master' into sync_lfs_stable 2018-05-19 12:52:38 +03:00
Rmys c1ca056967 xmlto:rebuild 2018-05-19 01:19:49 +03:00
Rmys f7de25197e cmake-3.11.1:ver.bump 2018-05-14 11:46:57 +03:00
Rmys ec3287c24b module-virtualbox 2018-05-12 16:03:12 +03:00
Rmys e67de669e4 module-virtualbox-guest 2018-05-12 15:04:20 +03:00
Rmys 8618bcbe65 module-virtualbox 2018-05-12 15:03:05 +03:00
Rmys 132bd5bc39 module-virtualbox-guest 2018-05-12 14:52:25 +03:00
Rmys b297748bbe module-virtualbox 2018-05-12 14:50:35 +03:00
Ertuğrul Erata 045acff959 update libmpc 2018-05-08 07:00:23 +03:00
Ertuğrul Erata c4a2170e7f update and fix deps 2018-05-08 06:47:21 +03:00
Rmys 3ae8137a67 Merge pull request #710 from pisilinux/Rmys-patch-7
sqlite-3.22.0
2018-05-05 22:17:13 +03:00
Rmys d2417e61cb Merge pull request #711 from pisilinux/Rmys-patch-8
sqlite-3.22.0
2018-05-05 22:17:02 +03:00
Rmys f69867b4b4 sqlite-3.22.0 2018-05-05 22:16:27 +03:00
Rmys eed033f508 sqlite-3.22.0 2018-05-05 22:15:32 +03:00
Rmys ef114aad8a nspr-4.19:ver.bump 2018-05-05 22:08:36 +03:00
Ertuğrul Erata 8c2b0f789a part4 2018-05-03 20:40:02 +03:00
Ertuğrul Erata 87599d0ae8 man-* updated 2018-05-03 20:13:46 +03:00
Ertuğrul Erata 15c77e83a5 part2
perl and python updated.
2018-05-03 20:02:30 +03:00
Ertuğrul Erata 478da3c1e2 part1
- rebuild or update perl and python( gdbm breaks)
- rebuild texinfo ?
2018-05-03 07:12:30 +03:00
Rmys 3591cafc99 module-bbswitch 2018-04-29 11:36:57 +03:00
Rmys 4befbd31df Merge pull request #709 from ertugerata/kernel_4_9
kernel-4.9.96
2018-04-29 10:00:28 +03:00
Ertuğrul Erata 7953b5de59 cpupowertools 2018-04-28 21:09:18 +03:00
Ertuğrul Erata 8370fda1da drivers 2018-04-28 21:01:44 +03:00
Ertuğrul Erata 44791ea5b0 kernel-4.9.96 2018-04-28 16:42:25 +03:00
Rmys 80d19760c3 libarchive:ver.bump 2018-04-25 10:35:37 +03:00
Rmys 7c95b19d47 rhash:rebuild 2018-04-22 17:26:09 +03:00
Rmys 872e5ae0d4 Merge pull request #707 from Rmys/master
rhash:rebuild
2018-04-22 17:02:11 +03:00
Rmys fda8d899c3 rhash:rebuild 2018-04-22 17:00:47 +03:00
Rmys 070bff7267 Merge pull request #706 from Rmys/master
rhash-1.3.6:Release Bump Cmake icin
2018-04-22 03:44:24 +03:00
Rmys 89afc1291c rhash-1.3.6:Release Bump Cmake icin 2018-04-22 03:42:56 +03:00
Rmys 6b60cbef49 module-virtualbox-guest-5.2.10:ver.bump 2018-04-19 15:14:24 +03:00
Rmys 8ca6d9fc27 module-virtualbox-5.2.10:ver.bump 2018-04-19 15:13:04 +03:00
Rmys 64babcb67b freetype-2.9:ver.bump 2018-04-18 11:05:22 +03:00
Rmys 7a9396617b gcc:rebuild 2018-04-14 19:06:07 +03:00
Rmys 6f30ae8cae gcc:rebuil 2018-04-14 18:27:28 +03:00
Rmys 3a1dbed578 Merge pull request #705 from Rmys/master
gcc:rebuild
2018-04-14 18:13:46 +03:00
Rmys 8470501c7e gcc:rebuild 2018-04-14 18:12:30 +03:00
Rmys f1e1ec917c slang-2.3.2:ver.bump 2018-04-09 17:44:12 +03:00
Ertuğrul Erata 5aa85b4b71 Merge pull request #703 from ertugerata/master
Pisi-2.0 Ataturk
2018-03-28 13:51:18 +03:00
Ertuğrul Erata e33b509b47 Ataturk 2018-03-28 13:55:12 +03:00
Ertuğrul Erata b8dba167d6 for 2.0 Stable
herkese gayreti için minnettarız.
2018-03-28 13:50:53 +03:00
Rmys becbc3ca51 module-virtualbox-guest:rebuild 2018-03-15 23:07:56 +03:00
Rmys aae4a7310e module-virtualbox:rebuild 2018-03-15 23:06:58 +03:00
Rmys d922905840 os-prober.1.71:grub hatsı tşk Hüsnü 2018-03-12 22:25:50 +03:00
Rmys 212a809865 os-prober.1.71:grub hatsı tşk Hüsnü 2018-03-12 22:12:17 +03:00
Rmys 25096f11d3 Merge pull request #702 from Rmys/master
kernel:drivers
2018-03-11 13:08:26 +03:00
Rmys eef7b6f639 kernel:drivers 2018-03-11 12:29:26 +03:00
Rmys fe97579bf7 cpupowertools-4.9.86 2018-03-11 11:16:35 +03:00
Rmys 877d3d8fd3 kernel:4.9.86 2018-03-11 11:14:19 +03:00
Rmys a880efa8a5 Merge pull request #701 from ertugerata/kernel_4_9
Kernel 4.9.86 ready
2018-03-11 10:59:54 +03:00
Ertuğrul Erata 2603f7d752 kernel-4.9.86 is ready 2018-03-11 09:34:40 +03:00
Ertuğrul Erata e237d02b1e Merge branch 'master' into kernel_4_9 2018-03-10 23:32:06 +03:00
Ertuğrul Erata eeb2286c8e Merge branch 'master' of github.com:pisilinux/core into kernel-4.14 2018-03-10 23:24:39 +03:00
Ertuğrul Erata edb50afaaa for build kernel-4.14.24 2018-03-09 23:08:15 +03:00
Ertuğrul Erata 9fe5969b2c Merge branch 'master' into kernel-4.14 2018-03-05 23:30:20 +03:00
Rmys 3374d843b1 pisi:rebuild 2018-03-05 19:38:20 +03:00
Rmys 93514b2529 urlgrabber:rebuild 2018-03-05 16:54:26 +03:00
Rmys ab05d7420b pycurl:rebuild 2018-03-05 16:51:50 +03:00
Rmys 954cc571f7 Merge pull request #700 from Rmys/master
os-prober:rebuild
2018-03-05 02:35:22 +03:00
Rmys 6082cbeb1c os-prober:rebuild 2018-03-05 02:32:44 +03:00
Rmys e7762db422 Merge pull request #699 from Rmys/master
libpsl:deleted
2018-03-05 00:18:39 +03:00
Rmys 148324e2f9 libpsl:deleted 2018-03-05 00:15:50 +03:00
Rmys 6ca76d7193 Merge pull request #698 from pisilinux/Rmys-patch-5
curl:rebuild
2018-03-05 00:12:58 +03:00
Rmys 3ada5ee987 curl:rebuild 2018-03-05 00:12:11 +03:00
Rmys 1839597aff curl:rebuild libpsl 2018-03-04 23:06:13 +03:00
Rmys 50ce3fdabd curl:rebuild libpsl 2018-03-04 23:03:30 +03:00
Rmys af182d5f7e Merge pull request #697 from Rmys/master
libpsl:First release
2018-03-04 21:48:39 +03:00
Rmys a42aff062c libpsl:First release 2018-03-04 21:46:02 +03:00
Ertuğrul Erata 5eadefaf39 Merge branch 'master' into kernel-4.14 2018-03-04 20:16:16 +03:00
Ertuğrul Erata ea3dc82ba1 cpupowertools is ready 2018-03-04 20:08:30 +03:00
Rmys da405e19b8 ncurses:rebuild 2018-03-04 12:55:39 +03:00
Ertuğrul Erata b814fe1a05 disable aes2501 module build. 2018-03-04 09:45:09 +03:00
Kamil ATLI aac4e73ea3 Merge pull request #696 from suvari/master
mkinitramfs: rebuild
2018-03-03 20:59:24 +03:00
suvari f9d6b7ccf6 mkinitramfs: rebuild 2018-03-03 20:58:40 +03:00
Kamil ATLI 3432d6bbf0 mkinitcpio: rebuild 2018-03-03 20:49:27 +03:00
Rmys e8617f821c libidn2:First release 2018-03-03 12:32:17 +03:00
Rmys d044ee5655 Merge pull request #695 from Rmys/master
libidn2:First release
2018-03-03 12:30:34 +03:00
Rmys 8db848b193 libidn2:First release 2018-03-03 12:28:18 +03:00
Rmys 51d5043d59 Merge pull request #694 from Rmys/master
libidn2:First release
2018-03-03 12:25:28 +03:00
Rmys bba75072da Merge pull request #1 from Rmys/Rmys-patch-1
libidn2
2018-03-03 12:22:46 +03:00
Rmys f58cf22fe3 Merge pull request #2 from Rmys/Rmys-patch-2
libidn2
2018-03-03 12:22:23 +03:00
Rmys 486924c984 Merge pull request #3 from Rmys/Rmys-patch-3
libidn2
2018-03-03 12:22:07 +03:00
Rmys b01c25971d Merge pull request #693 from pisilinux/Rmys-patch-4
module-virtualbox-guest-5.2.8
2018-03-03 12:13:12 +03:00
Rmys 8f693052e9 Merge pull request #692 from pisilinux/Rmys-patch-3
module-virtualbox-5.2.8
2018-03-03 12:13:01 +03:00
Rmys 7b391f2634 module-virtualbox-guest-5.2.8 2018-03-03 12:05:56 +03:00
Rmys 29bf478af3 module-virtualbox-5.2.8 2018-03-03 12:04:41 +03:00
Ertuğrul Erata 774a6f57df works for kernel-4.14.23 2018-03-03 09:02:12 +03:00
Kamil ATLI 21d65144e7 ndiswrapper 2018-03-03 02:12:51 +03:00
Rmys 17cb6a5c9e ndiswrapper 2018-03-03 02:04:31 +03:00
Rmys 5a1c63c189 ndiswrapper 2018-03-03 02:01:33 +03:00
Rmys 6efdb0f8b7 ndiswrapper 2018-03-03 01:59:02 +03:00
Rmys e6b25fa6b0 ndiswrapper 2018-03-03 01:41:20 +03:00
Kamil ATLI 9287aa1907 ndiswrapper 2018-03-03 00:28:00 +03:00
Kamil ATLI cab1e51b69 module-bbswitch 2018-03-03 00:25:58 +03:00
Kamil ATLI 44ffbc2982 module-broadcom-wl 2018-03-03 00:22:01 +03:00
Kamil ATLI 8e0c5c7437 cpupowertools 2018-03-03 00:16:34 +03:00
Kamil ATLI c607c127eb kernel: 4.9.80 2018-03-02 23:09:09 +03:00
Kamil ATLI f8931527cf Merge pull request #689 from suvari/master
ncurses
2018-03-02 21:47:59 +03:00
suvari f50b035682 ncurses 2018-03-02 21:47:57 +03:00
Kamil ATLI 1ceae85a66 glib2.. 2018-03-02 21:36:41 +03:00
Kamil ATLI 50528e4c5c glib2 2018-03-02 21:26:50 +03:00
Kamil ATLI 54f35aaf47 Merge pull request #688 from suvari/master
glib2: rebuild
2018-03-02 21:12:48 +03:00
suvari bdfda4b8dd glib2: rebuild 2018-03-02 21:12:41 +03:00
Kamil ATLI 038eb594b6 glib2 2018-03-02 20:53:48 +03:00
Kamil ATLI 8e84ec91ec Merge pull request #686 from Rmys/master
glib2:rebuild
2018-03-02 19:43:15 +03:00
Kamil ATLI 6f8191a62f Merge pull request #687 from yusufkeles/patch-1
Update README.md
2018-02-27 18:27:20 +03:00
yusufkeles 11569bc2b9 Update README.md 2018-02-26 19:53:26 +03:00
Rmys 4b9d2fcd3b glib2:rebuild 2018-02-25 00:59:34 +03:00
Rmys 9d05286d31 libidn2 2018-02-24 14:02:04 +03:00
Rmys a39dca7ee2 libidn2 2018-02-24 13:56:54 +03:00
Rmys a6668dc527 libidn2 2018-02-24 13:54:49 +03:00
Rmys 7f4bb56e71 Merge pull request #685 from ertugerata/kernel_4_9
Kernel 4.9.80 is ready
2018-02-12 23:50:50 +03:00
Ertuğrul Erata f3a456c1a5 sMerge branch 'master' of github.com:pisilinux/core into kernel_4_9 2018-02-12 23:30:41 +03:00
Ertuğrul Erata 2ac9d59a1f update drivers and cpupowertools 2018-02-11 21:37:11 +03:00
Ertuğrul Erata cb62a9a02c work for 4.14.18
scsi module build fail?
2018-02-11 21:10:13 +03:00
Ertuğrul Erata d5e3434b71 kernel-4.9.80 2018-02-11 14:41:12 +03:00
Rmys f7f5ccbad3 ncurses-6.1 2018-02-06 17:12:39 +03:00
Rmys d35c6aef19 Merge pull request #684 from ercanersoy/master
Update ncurses 6.0 to 6.1
2018-02-06 17:09:34 +03:00
Ercan Ersoy ec05d84305 Update ncurses 6.0 to 6.1 2018-02-06 14:52:09 +03:00
Ertuğrul Erata 1aeeaf31b2 kernel update to 4.9.78 2018-02-01 23:00:42 +03:00
Rmys 893d57ccc0 module-virtualbox-guest:rebuild 2018-01-06 13:21:51 +03:00
Rmys 7f7774c265 module-virtualbox:rebuild 2018-01-06 13:20:46 +03:00
Rmys e4a1c4d3d1 ndiswrapper:rebuild 2018-01-06 13:19:19 +03:00
Rmys cc950d8fe7 module-broadcom-wl:rebuild 2018-01-06 13:18:04 +03:00
Rmys cb80312f09 module-bbswitch:rebuild 2018-01-06 13:16:31 +03:00
Rmys 7ff787ea84 Merge pull request #683 from Rmys/master
cpupowertools-4.9.75
2018-01-06 13:13:55 +03:00
Rmys 0873e735b9 cpupowertools-4.9.75 2018-01-06 14:12:39 +03:00
Ertuğrul Erata bc174f29c9 Merge pull request #682 from ertugerata/kernel_4_9
update kernel to 4.9.75
2018-01-05 23:25:56 +03:00
Ertuğrul Erata 1007258b34 update kernel to 4.9.75 2018-01-05 19:49:12 +03:00
Kamil ATLI f113008446 Merge pull request #681 from suvari/master
grub: patch for ext234
2017-12-25 19:08:08 +03:00
suvari 8c6aa2e7f6 grub2: patch for ext234 2017-12-25 19:06:28 +03:00
suvari 365b788ecd grub: patch for ext234 and efi 2017-12-25 18:42:12 +03:00
Rmys 251151ad9a Merge pull request #679 from Rmys/master
kernel:driver
2017-12-20 01:54:25 +03:00
sss c6b4ed48f7 kernel-4.9.70:drivers 2017-12-20 01:51:00 +03:00
sss 1e97f454a2 cpupowertools-4.9.70 2017-12-20 01:49:25 +03:00
Ertuğrul Erata ad64e1e8d7 Merge pull request #678 from ertugerata/kernel_4_9
Kernel 4.9.70
2017-12-19 21:09:18 +00:00
Ertuğrul Erata 135f53bce5 add linux.preset file 2017-12-19 23:55:21 +03:00
Ertuğrul Erata 65732469e8 works for kernel-lts update,
add linux.preset for mkinitcpio
2017-12-19 23:17:14 +03:00
Ertuğrul Erata a22fd7e052 Merge pull request #676 from ertugerata/master
usbutils update
2017-12-13 16:14:43 +00:00
Ertuğrul Erata ca55de2bf5 usbutils update 2017-12-13 18:59:05 +03:00
Rmys fbec32928f Merge pull request #675 from Rmys/master
cpupowertools-4.9.66:ver.bump
2017-12-07 21:48:09 +03:00
sss 8e1d88b958 cpupowertools-4.9.66:ver.bump 2017-12-07 21:46:55 +03:00
Rmys 2b7efc6d7f Merge pull request #674 from ertugerata/grub_new
grub2 update
2017-12-06 16:18:22 +03:00
Ertuğrul Erata b7c0628ad5 grub2 update 2017-12-06 12:23:00 +03:00
Ertuğrul Erata 852adaeccb Update pspec.xml 2017-12-06 10:28:51 +03:00
Ertuğrul Erata 06265f8ac8 Merge pull request #673 from ertugerata/sync_lfs_stable
sync with lfs stable
2017-12-06 07:17:52 +00:00
Ertuğrul Erata b9b598143a sync with lfs stable 2017-12-06 10:19:17 +03:00
Rmys 8e95a280da ndiswrapper 2017-12-04 20:01:58 +03:00
Rmys 44bc3aa470 module-bbswitch 2017-12-04 19:09:01 +03:00
Ertuğrul Erata 7efc61b8df Merge pull request #672 from ertugerata/kernel_4_9
Kernel 4.9.66
2017-12-04 14:20:11 +00:00
Ertuğrul Erata 9a607f3724 drivers rebuild. 2017-12-04 17:21:21 +03:00
Ertuğrul Erata 83480c5a86 works for kernel-4.9.66 2017-12-04 13:05:29 +03:00
Ertuğrul Erata 1b2e99c75e Merge pull request #671 from ertugerata/sync_lfs_stable
pkgconfig update
2017-12-04 09:00:35 +00:00
Ertuğrul Erata 1cfc1f561f pkgconfig update 2017-12-04 12:02:28 +03:00
Ertuğrul Erata be7396b644 Merge pull request #670 from ertugerata/sync_lfs_stable
sync linux-firmware
2017-12-03 11:30:53 +02:00
Ertuğrul Erata 6d1f20ee0c sync linux-firmware 2017-12-03 12:32:51 +03:00
Ertuğrul Erata 2d8c7a0316 Merge pull request #669 from ertugerata/sync_lfs_stable
texinfo update
2017-12-03 01:19:26 +02:00
Ertuğrul Erata 95183e9855 texinfo update 2017-12-03 02:18:23 +03:00
Ertuğrul Erata 232d7b6f4d sed update 2017-12-03 02:13:43 +03:00
Ertuğrul Erata 22a3ceef70 Merge pull request #668 from ertugerata/sync_lfs_stable
sed update
2017-12-03 01:11:42 +02:00
Ertuğrul Erata d62b919128 bc update 2017-12-03 01:54:11 +03:00
Ertuğrul Erata 2ce7aab89a Merge pull request #667 from ertugerata/sync_lfs_stable
bc update
2017-12-03 00:52:16 +02:00
Ertuğrul Erata cebaa1b292 fix builddep 2017-12-03 01:37:11 +03:00
Ertuğrul Erata 175e4ba528 Merge pull request #666 from ertugerata/sync_lfs_stable
fix builddep
2017-12-03 00:35:31 +02:00
Ertuğrul Erata 5750182a99 Merge pull request #665 from ertugerata/sync_lfs_stable
sync with stable lfs
2017-12-03 00:06:34 +02:00
Ertuğrul Erata 1e053b6cb6 sync with stable lfs 2017-12-03 00:54:18 +03:00
Ertuğrul Erata 16eab1533a Merge pull request #664 from ertugerata/master
eudev - coreutils update
2017-12-01 22:52:37 +02:00
Ertuğrul Erata ac79245d33 eudev and coreutils update 2017-12-01 23:53:41 +03:00
Ertuğrul Erata a6035afaca Merge branch 'master' of github.com:pisilinux/core 2017-11-27 17:55:23 +03:00
Ertuğrul Erata b472701380 needed build ? 2017-11-26 11:16:51 +03:00
Ertuğrul Erata 2d9b961b2e index . 2017-11-26 11:14:58 +03:00
Ertuğrul Erata 88f753efee Merge pull request #663 from ertugerata/master
index .
2017-11-26 10:13:10 +02:00
Rmys eb870d0481 Merge pull request #662 from Rmys/master
module-virtualbox-5.2.2:ver.bump
2017-11-25 20:50:21 +03:00
sss 9b858b7c75 module-virtualbox-5.2.2:ver.bump 2017-11-25 20:49:11 +03:00
Rmys ff6739a1a2 module-bbswitch 2017-11-19 22:04:40 +03:00
Ertuğrul Erata 4673311ad3 Merge pull request #661 from ertugerata/kernel_4_9
Kernel 4.9.63
2017-11-19 20:12:53 +03:00
Ertuğrul Erata 7be68e8927 cpupowertools is ready 2017-11-19 20:14:29 +03:00
Ertuğrul Erata d2b6a036f4 drivers is ready 2017-11-19 20:08:41 +03:00
Ertuğrul Erata a20a3550c0 works for kernel-4.9.63 2017-11-19 18:07:04 +03:00
Ertuğrul Erata 1d040a585a Merge pull request #660 from ertugerata/master
index .
2017-11-04 22:12:55 +02:00
Ertuğrul Erata d0af373397 index . 2017-11-04 23:14:04 +03:00
Ertuğrul Erata ae73299320 remove replace 2017-11-04 22:51:14 +03:00
Ertuğrul Erata a296f5e3fd Merge pull request #659 from ertugerata/master
remove replace
2017-11-04 21:49:45 +02:00
Ertuğrul Erata b2d6fe0440 Merge pull request #658 from ertugerata/master
change partof
2017-11-04 21:33:30 +02:00
Ertuğrul Erata c3cb514e23 change partof 2017-11-04 22:34:51 +03:00
Ertuğrul Erata 393b70a138 Merge pull request #657 from ertugerata/master
mkinitramfs add conflicts
2017-11-04 18:13:51 +02:00
Ertuğrul Erata 821cff2f12 add conflicts 2017-11-04 19:13:45 +03:00
Ertuğrul Erata fa3fbed4c9 index . 2017-10-02 23:27:35 +03:00
Rmys 6b674976fb os-prober:rebuild 2017-09-26 18:11:09 +03:00
Rmys 22ba7820ab os-prober:rebuild 2017-09-26 15:04:30 +03:00
Rmys d89a7f2fba Merge pull request #656 from Rmys/master
nspr-sqlite:Ver:Bump
2017-09-26 03:17:35 +03:00
Rmys 6226510e1d nspr-sqlite:Ver:Bump 2017-09-26 03:14:47 +03:00
Rmys e75de0ff00 os-prober:rebuild 2017-09-21 16:08:45 +03:00
Rmys 32ac4b25ac Merge pull request #655 from Rmys/master
os-prober:rebuild
2017-09-21 15:33:06 +03:00
Rmys 849cd39ce4 os-prober:rebuild 2017-09-21 15:31:30 +03:00
Kamil ATLI f387e29e3e Merge pull request #653 from suvari/master
cloog
2017-09-20 21:51:03 +03:00
suvari 9acf8a4cf2 cloog 2017-09-20 21:50:31 +03:00
Kamil ATLI f63656c27d Merge pull request #652 from suvari/master
procps: fix pkgconfig
2017-09-20 20:39:20 +03:00
suvari 8ee551749f procps: fix pkgconfig 2017-09-20 20:38:49 +03:00
Kamil ATLI 2259a24269 Merge pull request #651 from suvari/master
libcap: fix pkgconfig
2017-09-20 20:24:49 +03:00
suvari 6428dc3a75 libcap: fix pkgconfig 2017-09-20 20:23:55 +03:00
Kamil ATLI 1a5e8fea9c Merge pull request #650 from suvari/master
cloog: fix pkgconfig
2017-09-20 20:20:06 +03:00
suvari 0699040219 cloog 2017-09-20 20:19:13 +03:00
suvari 2e2e1a07ae cloog: fix pkgconfig 2017-09-20 20:11:16 +03:00
Ertuğrul Erata 3eae1a6f9e Merge pull request #649 from ertugerata/new_os-prober
New os-prober
2017-09-20 13:30:00 +03:00
Ertuğrul Erata 1a5d9c5b02 os-prober fix pisi-check fail and update. 2017-09-20 13:29:06 +03:00
Ertuğrul Erata db327e54b6 opps 2017-09-18 16:30:59 +03:00
Ertuğrul Erata 2dfc7476c0 index now 2017-09-18 16:29:01 +03:00
Rmys a5fa85812d Merge pull request #648 from Rmys/master
readline:rebuild
2017-09-13 11:37:48 +03:00
Rmys be409c18a4 readline:rebuild 2017-09-13 11:34:04 +03:00
Rmys 229a51ba56 util-linux-2.30.1:Rebuild Derllenmemiş 2017-09-11 20:37:39 +03:00
Rmys c0c9e19083 xtrans:rebuild libxslt 2017-09-10 14:35:01 +03:00
Ertuğrul Erata e7109fce59 Merge pull request #647 from ertugerata/eudev_new
Eudev update
2017-09-06 21:29:35 +03:00
Ertuğrul Erata 6aa0a6874d eudev update 2017-09-06 21:27:53 +03:00
Ertuğrul Erata 638b3bf5f3 Merge branch 'master' of github.com:ertugerata/core 2017-08-22 15:18:36 +03:00
Rmys 021eac0899 Merge pull request #646 from ertugerata/kernel_4_9
Kernel- 4.9.44
2017-08-22 13:12:06 +03:00
Ertuğrul Erata 3ae4f5e123 cpupowertools ready 2017-08-21 21:13:57 +03:00
Ertuğrul Erata 47a41f8076 rebuild drivers 2017-08-21 14:30:34 +03:00
Ertuğrul Erata 58cbfea1fb work for 4.9.44 last LTS kernel 2017-08-21 11:22:18 +03:00
Ertuğrul Erata a3ed187b6d Merge pull request #5 from ertugerata/ertugerata-new_util_linux
V. bump
2017-07-24 10:52:21 +03:00
Ertuğrul Erata 457e24f26b V. bump 2017-07-24 10:51:39 +03:00
Kamil ATLI c44d596eeb module-virtualbox-guest 2017-07-04 08:32:20 +03:00
Kamil ATLI 0dbdf5c1e7 ndiswrapper 2017-07-04 08:31:05 +03:00
Kamil ATLI cf52121cde module-bbswitch 2017-07-04 08:29:51 +03:00
Kamil ATLI 1fec10c0d7 module-virtualbox 2017-07-04 08:28:39 +03:00
Kamil ATLI fe793ca1bd module-broadcom-wl 2017-07-04 08:26:50 +03:00
Kamil ATLI 9d60e4643e cpupowertools 2017-07-04 08:20:41 +03:00
Kamil ATLI 38ad05bf7c kernel 2017-07-04 01:47:24 +03:00
Kamil ATLI 5181efbb16 kernel 2017-07-04 01:19:45 +03:00
Kamil ATLI 2d8b8fb27d kernel 2017-07-03 11:15:59 +03:00
Kamil ATLI 93d2bf8094 Merge pull request #645 from suvari/master
kernel
2017-07-03 01:51:48 +03:00
suvari f1ec59394b kernel 2017-07-03 01:50:46 +03:00
Kamil ATLI 64786ad892 Merge pull request #644 from suvari/master
kernel
2017-07-03 00:41:21 +03:00
suvari 33e17f8d9c kernel 2017-07-03 00:33:37 +03:00
Ertuğrul Erata 424eaeb69c drivers build OK 2017-07-02 16:07:52 +03:00
Ertuğrul Erata a0a6e4b768 Merge pull request #643 from ertugerata/kernel_4_9
Kernel 4.9.35 ok
2017-07-02 16:07:04 +03:00
Ertuğrul Erata 9b4306b76a cpupowertools ready 2017-07-02 15:41:54 +03:00
Ertuğrul Erata 079547e662 pspec and config 2017-07-02 15:29:49 +03:00
Ertuğrul Erata f41d211a96 patches for 4.9.35 2017-07-02 12:15:07 +03:00
Ertuğrul Erata c570cbeeca Merge branch 'master' into kernel_4_9 2017-07-02 11:34:45 +03:00
Kamil ATLI 1fc4bc3255 Merge pull request #642 from aligulle1/master
grub
2017-06-19 11:41:22 +03:00
aligulle1 878f508448 grub 2017-06-19 10:51:06 +03:00
Ertuğrul Erata 11f695eee7 kernel-4.9.29 OK 2017-05-24 19:52:50 +03:00
Ertuğrul Erata 3842cba361 4.9.29 patches 2017-05-21 10:52:23 +03:00
Ertuğrul Erata 306316ba49 update 2017-05-10 15:41:42 +03:00
Ertuğrul Erata 6f90d0861b cpupowertools update 2017-05-10 11:39:55 +03:00
Ertuğrul Erata 618f68d441 add patches 2017-05-09 21:54:58 +03:00
Ertuğrul Erata 8d634eded9 add aufs posix_acl.patch 2017-04-09 09:43:20 +03:00
Ertuğrul Erata 97a2df58bc kernel-4.9.21 and patches 2017-04-08 21:48:10 +03:00
Ertuğrul Erata cf24bc6658 Merge branch 'master' into kernel_4_9 2017-04-08 21:30:19 +03:00
Ertuğrul Erata 242f3fb142 Merge pull request #641 from ertugerata/master
isl, fix ldconfig
2017-04-08 13:13:31 +03:00
Ertuğrul Erata 0efa7d4b3a isl fix ldconfig, fix #640 2017-04-08 13:12:56 +03:00
Ertuğrul Erata a4f763b806 update needed_build 2017-04-06 15:08:52 +03:00
Ertuğrul Erata efcca6c817 index 2017-04-06 15:07:29 +03:00
Ertuğrul Erata 136f09029d kernel 4.9.18 not ready 2017-03-30 11:58:10 +03:00
1005 changed files with 2584826 additions and 147463 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ Paketleme Kuralları;
1. Core kaynak deposunda minimum X bağımlılığı hedeflenmiştir.
1. configure seçeneklerinde belge oluşturmaya yönelik seçenekler açılmamalı, bağımlılıklar yazılamalıdır.
1. configure seçeneklerinde belge oluşturmaya yönelik seçenekler açılmamalı, bağımlılıklar yazılmalıdır.
1. configure seçeneklerinde pakete yeni bağımlılık getirecek değişiklikler için mutlaka issue açılmalı, tartışılmadan pull request istenmemelidir.
-2
View File
@@ -1,2 +0,0 @@
2016-04-27 /system/boot/busybox-mkinitcpio/pspec.xml
2016-04-27 /kernel/tools/mkinitcpio/pspec.xml
+2 -1
View File
@@ -11,7 +11,8 @@ from pisi.actionsapi import get
def setup():
autotools.configure("--disable-static \
--with-harfbuzz=no")
--with-harfbuzz=no \
--enable-freetype-config")
def build():
autotools.make()
+32 -4
View File
@@ -3,7 +3,7 @@
<PISI>
<Source>
<Name>freetype</Name>
<Homepage>http://www.freetype.org/</Homepage>
<Homepage>https://www.freetype.org/</Homepage>
<Packager>
<Name>PisiLinux Community</Name>
<Email>admins@pisilinux.org</Email>
@@ -13,7 +13,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="4d08a9a6567c6332d58e9a5f9a7e9e3fbce66789" type="tarbz2">mirrors://sourceforge/freetype/freetype-2.7.1.tar.bz2</Archive>
<Archive sha1sum="79874ef4eaa52025126b71d836453b8279bdd331" type="tarxz">mirrors://sourceforge/freetype/freetype-2.10.1.tar.xz</Archive>
<BuildDependencies>
<Dependency>zlib-devel</Dependency>
<Dependency>bzip2</Dependency>
@@ -46,8 +46,8 @@
<Files>
<Path fileType="executable">/usr/bin</Path>
<Path fileType="header">/usr/include</Path>
<Path fileType="data">/usr/lib/pkgconfig</Path>
<Path fileType="data">/usr/lib32/pkgconfig</Path>
<Path fileType="library">/usr/lib/pkgconfig</Path>
<Path fileType="library">/usr/lib32/pkgconfig</Path>
<Path fileType="data">/usr/share/aclocal</Path>
</Files>
</Package>
@@ -72,6 +72,34 @@
</Package>
<History>
<Update release="7">
<Date>2019-08-01</Date>
<Version>2.10.1</Version>
<Comment>Version bump</Comment>
<Name>Idris Kalp</Name>
<Email>idriskalp@gmail.com</Email>
</Update>
<Update release="6">
<Date>2019-06-09</Date>
<Version>2.10.0</Version>
<Comment>Version bump</Comment>
<Name>Idris Kalp</Name>
<Email>idriskalp@gmail.com</Email>
</Update>
<Update release="5">
<Date>2018-07-23</Date>
<Version>2.9</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="4">
<Date>2018-04-17</Date>
<Version>2.9</Version>
<Comment>Version Bump</Comment>
<Name>PisiLinux Community</Name>
<Email>admin@pisilinux.org</Email>
</Update>
<Update release="3">
<Date>2017-02-02</Date>
<Version>2.7.1</Version>
+1 -1
View File
@@ -15,7 +15,7 @@ import lzma
import piksemel
pisirepouri = "http://ciftlik.pisilinux.org/2.0-Beta.1/pisi-index.xml.xz"
pisirepouri = "file:///home/ertugerata/Works/2.0-Beta.1/pisi-index.xml.xz"
svnrepouri = "https://github.com/ertugerata/core/raw/master/pisi-index.xml.xz"
def getIndex(uri):
+7
View File
@@ -35,6 +35,13 @@
</Package>
<History>
<Update release="4">
<Date>2018-07-23</Date>
<Version>9</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="3">
<Date>2017-02-07</Date>
<Version>9</Version>
+7
View File
@@ -189,6 +189,13 @@
</Package>
<History>
<Update release="4">
<Date>2018-07-23</Date>
<Version>2.02.167</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="3">
<Date>2017-01-29</Date>
<Version>2.02.167</Version>
+77
View File
@@ -0,0 +1,77 @@
diff -Nuar a/crc32c.c b/crc32c.c
--- a/crc32c.c 2016-01-28 08:14:56.000000000 +0200
+++ b/crc32c.c 2018-10-01 21:34:33.000000000 +0300
@@ -27,6 +27,7 @@
*/
#include <sys/types.h>
+#include <sys/sysmacros.h>
#include <asm/types.h>
#include <stdlib.h>
diff -Nuar a/mdadm.h b/mdadm.h
--- a/mdadm.h 2016-01-28 08:14:56.000000000 +0200
+++ b/mdadm.h 2018-10-01 21:35:23.000000000 +0300
@@ -34,6 +34,7 @@
#endif
#include <sys/types.h>
+#include <sys/sysmacros.h>
#include <sys/stat.h>
#include <stdint.h>
#include <stdlib.h>
diff -Nuar a/mdmon.c b/mdmon.c
--- a/mdmon.c 2016-01-28 08:14:56.000000000 +0200
+++ b/mdmon.c 2018-10-01 21:35:42.000000000 +0300
@@ -46,6 +46,7 @@
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
+#include <sys/sysmacros.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/un.h>
diff -Nuar a/msg.c b/msg.c
--- a/msg.c 2016-01-28 08:14:56.000000000 +0200
+++ b/msg.c 2018-10-01 21:35:57.000000000 +0300
@@ -26,6 +26,7 @@
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
+#include <sys/sysmacros.h>
#include <sys/socket.h>
#include <sys/un.h>
#include "mdadm.h"
diff -Nuar a/platform-intel.c b/platform-intel.c
--- a/platform-intel.c 2016-01-28 08:14:56.000000000 +0200
+++ b/platform-intel.c 2018-10-01 21:36:16.000000000 +0300
@@ -27,6 +27,7 @@
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/types.h>
+#include <sys/sysmacros.h>
#include <sys/stat.h>
#include <limits.h>
diff -Nuar a/probe_roms.c b/probe_roms.c
--- a/probe_roms.c 2016-01-28 08:14:56.000000000 +0200
+++ b/probe_roms.c 2018-10-01 21:36:27.000000000 +0300
@@ -27,6 +27,7 @@
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
+#include <sys/sysmacros.h>
#include <asm/types.h>
static void *rom_mem = MAP_FAILED;
diff -Nuar a/sha1.h b/sha1.h
--- a/sha1.h 2016-01-28 08:14:56.000000000 +0200
+++ b/sha1.h 2018-10-01 21:36:43.000000000 +0300
@@ -35,6 +35,7 @@
#ifdef _LIBC
# include <sys/types.h>
+#include <sys/sysmacros.h>
typedef u_int32_t sha1_uint32;
typedef uintptr_t sha1_uintptr;
#else
+17
View File
@@ -16,6 +16,9 @@
<BuildDependencies>
<Dependency>dietlibc</Dependency>
</BuildDependencies>
<Patches>
<Patch level="1">sysmacros.patch</Patch>
</Patches>
</Source>
<Package>
@@ -54,6 +57,20 @@
</Package>
<History>
<Update release="5">
<Date>2018-10-02</Date>
<Version>3.4</Version>
<Comment>Rebuild</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="4">
<Date>2018-07-19</Date>
<Version>3.4</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="3">
<Date>2017-01-29</Date>
<Version>3.4</Version>
+7
View File
@@ -27,6 +27,13 @@
</Package>
<History>
<Update release="4">
<Date>2018-07-15</Date>
<Version>4.0.18</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="3">
<Date>2017-01-29</Date>
<Version>4.0.18</Version>
+38 -10
View File
@@ -17,16 +17,16 @@
<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: 3ef7857d511ce6a91c5ce609da76c4702651cfa5 2016-06-24 -->
<Archive sha1sum="06c03884d5e2540d0bb4918c1f348a7c46f6a496" type="tarbz2">https://sourceforge.net/projects/pisilinux/files/source/linux-firmware-20170113.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="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>
<!-- linux-firmware commit: 711d3297bac870af42088a467459a0634c1970ca 2019-05-14 -->
<Archive sha1sum="4711d2c3125580edf46161694439a2eef4fc0cec" type="tarxz">https://sourceforge.net/projects/pisilinux/files/source/linux-firmware-20190514.tar.xz</Archive>
<Archive sha1sum="dd685266f7bc0acb0d455462637d23e3e895bc96" type="tarxz" target="linux-firmware/mix">http://source.pisilinux.org/common-fw/common-fw.tar.xz</Archive>
<Archive sha1sum="b2bb7fce3ea67d131f543a48134f7a65f2a8d834" type="tarxz" target="linux-firmware/mix">http://source.pisilinux.org/firmware-ipw/firmware-ipw.tar.xz</Archive>
<Archive sha1sum="a5a616a9f765cf9cbb224deb7ccefdc82a7fe4d9" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/firmware-nonfreebox/firmware-nonfreebox-2-tar.bz2</Archive>
<Archive sha1sum="6c18b28e62637fb809eaff89fff623ae1d470500" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/ar9170/ar9170.tar.bz2</Archive>
<Archive sha1sum="aa3b414c2948be5f226a25fa5f37e56fd659a3bb" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/ipw2x00-firmware/ipw2x00-firmware.tar.bz2</Archive>
<Archive sha1sum="f7ecf5412b7818871fa2798f1b314f8ddddb494e" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/aic94xx/aic94xx-seq.tar.bz2</Archive>
<Archive sha1sum="16d5f4dcc90f978732a9a5b3b0347672a6cc4c36" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/accessrunner/accessrunner-firmware.tar.bz2</Archive>
<Archive sha1sum="e40729d30ad6d7a6c88b90ee7bc5fbaeb9458cb7" type="tarbz2" target="linux-firmware/mix">http://source.pisilinux.org/rtl8192se/rtl8192se-firmware.tar.bz2</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>
@@ -49,6 +49,34 @@
</Package>
<History>
<Update release="8">
<Date>2019-06-05</Date>
<Version>20190514</Version>
<Comment>Update</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="7">
<Date>2018-07-29</Date>
<Version>20180722</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="6">
<Date>2018-07-15</Date>
<Version>20171123</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="5">
<Date>2017-11-23</Date>
<Version>20171123</Version>
<Comment>Release Bump</Comment>
<Name>PisiLinux Community</Name>
<Email>admin@pisilinux.org</Email>
</Update>
<Update release="4">
<Date>2017-02-11</Date>
<Version>20170113</Version>
@@ -0,0 +1,17 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Copyright 2019 TUBITAK/UEKAE
# Licensed under the GNU General Public License, version 2.
# See the file http://www.gnu.org/copyleft/gpl.txt.
from pisi.actionsapi import pisitools
def install():
pisitools.insinto("/usr/lib/crda/", "regulatory.bin")
pisitools.insinto("/lib/firmware", "regulatory.db*")
pisitools.insinto("/etc/wireless-regdb/pubkeys", "sforshee.key.pub.pem")
pisitools.doman("regulatory.db.5")
pisitools.dodoc("LICENSE", "README", "CONTRIBUTING")
@@ -0,0 +1,39 @@
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pardus.org.tr/projeler/pisi/pisi-spec.dtd">
<PISI>
<Source>
<Name>wireless-regdb</Name>
<Homepage>https://wireless.wiki.kernel.org/en/developers/Regulatory</Homepage>
<Packager>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Packager>
<License>ISC</License>
<Icon>wireless-regdb</Icon>
<IsA>app:console</IsA>
<Summary>This package contains the wireless regulatory database used by all cfg80211 based Linux wireless drivers</Summary>
<Description>This package contains the wireless regulatory database used by all cfg80211 based Linux wireless drivers</Description>
<Archive sha1sum="a4a541f4ef81985e919b15477253f16df997e8d9" type="tarxz">https://mirrors.edge.kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2018.10.24.tar.xz</Archive>
</Source>
<Package>
<Name>wireless-regdb</Name>
<Files>
<Path fileType="conf">/etc/wireless-regdb</Path>
<Path fileType="data">/usr/lib/crda</Path>
<Path fileType="data">/lib/firmware</Path>
<Path fileType="man">/usr/share/man</Path>
<Path fileType="doc">/usr/share/doc</Path>
</Files>
</Package>
<History>
<Update release="1">
<Date>2019-01-15</Date>
<Version>2018.10.24</Version>
<Comment>First release</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
</History>
</PISI>
+133 -5
View File
@@ -1,17 +1,19 @@
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
<Source>
<Name>module-bbswitch</Name>
<Homepage>https://github.com/Bumblebee-Project/bbswitch</Homepage>
<Packager>
<Name>Serdar Soytetir</Name>
<Email>kaptan@pisilinux.org</Email>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Packager>
<License>GPL</License>
<IsA>app:gui</IsA>
<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.9.6">kernel-module-headers</Dependency>
<Dependency version="4.19.56">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 +22,7 @@
<Package>
<Name>module-bbswitch</Name>
<RuntimeDependencies>
<Dependency version="4.9.6">kernel</Dependency>
<Dependency version="4.19.56">kernel</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="library" permanent="true">/lib/modules</Path>
@@ -34,6 +36,132 @@
</Package>
<History>
<Update release="26">
<Date>2019-06-26</Date>
<Version>0.8</Version>
<Comment>Rebuild.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="25">
<Date>2019-05-11</Date>
<Version>0.8</Version>
<Comment>Rebuild.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="24">
<Date>2019-04-06</Date>
<Version>0.8</Version>
<Comment>Rebuild.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="23">
<Date>2019-01-20</Date>
<Version>0.8</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="22">
<Date>2018-12-22</Date>
<Version>0.8</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="21">
<Date>2018-10-05</Date>
<Version>0.8</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="20">
<Date>2018-07-07</Date>
<Version>0.8</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="19">
<Date>2018-07-15</Date>
<Version>0.8</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="18">
<Date>2018-07-12</Date>
<Version>0.8</Version>
<Comment>Version bump</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="17">
<Date>2018-04-28</Date>
<Version>0.8</Version>
<Comment>Version bump</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="16">
<Date>2018-03-11</Date>
<Version>0.8</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="15">
<Date>2018-03-03</Date>
<Version>0.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="14">
<Date>2018-01-06</Date>
<Version>0.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="13">
<Date>2017-12-20</Date>
<Version>0.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="12">
<Date>2017-12-04</Date>
<Version>0.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="11">
<Date>2017-11-19</Date>
<Version>0.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="10">
<Date>2017-08-21</Date>
<Version>0.8</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="9">
<Date>2017-07-04</Date>
<Version>0.8</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="8">
<Date>2017-02-01</Date>
<Version>0.8</Version>
@@ -91,4 +219,4 @@
<Email>ertugrulerata@gmail.com</Email>
</Update>
</History>
</PISI>
</PISI>
+1 -1
View File
@@ -20,4 +20,4 @@ def build():
def install():
pisitools.insinto("/lib/modules/%s/extra" % KDIR, "wl.ko")
pisitools.dodoc("lib/LICENSE.txt")
pisitools.dodoc("lib/LICENSE.txt")
View File
View File
+52
View File
@@ -0,0 +1,52 @@
diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
index a9671e2..da36405 100644
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -30,6 +30,9 @@
#include <linux/kthread.h>
#include <linux/netdevice.h>
#include <linux/ieee80211.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+#include <linux/sched/signal.h>
+#endif
#include <net/cfg80211.h>
#include <linux/nl80211.h>
#include <net/rtnetlink.h>
diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index 489c9f5..f8278ad 100644
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -117,6 +117,9 @@ int wl_found = 0;
typedef struct priv_link {
wl_if_t *wlif;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+ unsigned long last_rx;
+#endif
} priv_link_t;
#define WL_DEV_IF(dev) ((wl_if_t*)((priv_link_t*)DEV_PRIV(dev))->wlif)
@@ -2450,6 +2453,9 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rxsts, void *p)
{
struct sk_buff *oskb = (struct sk_buff *)p;
struct sk_buff *skb;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+ priv_link_t *priv_link;
+#endif
uchar *pdata;
uint len;
@@ -2916,7 +2922,13 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rxsts, void *p)
if (skb == NULL) return;
skb->dev = wl->monitor_dev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+ priv_link = MALLOC(wl->osh, sizeof(priv_link_t));
+ priv_link = netdev_priv(skb->dev);
+ priv_link->last_rx = jiffies;
+#else
skb->dev->last_rx = jiffies;
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
skb_reset_mac_header(skb);
#else
+64
View File
@@ -0,0 +1,64 @@
diff -ru work.orig/src/wl/sys/wl_cfg80211_hybrid.c work.patched/src/wl/sys/wl_cfg80211_hybrid.c
--- work.orig/src/wl/sys/wl_cfg80211_hybrid.c 2017-06-10 15:50:27.328823384 -0700
+++ work.patched/src/wl/sys/wl_cfg80211_hybrid.c 2017-06-10 15:52:40.540809187 -0700
@@ -52,8 +52,13 @@
u32 wl_dbg_level = WL_DBG_ERR;
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
+ enum nl80211_iftype type, struct vif_params *params);
+#else
static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
enum nl80211_iftype type, u32 *flags, struct vif_params *params);
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
static s32
wl_cfg80211_scan(struct wiphy *wiphy,
@@ -466,7 +471,11 @@
static s32
wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ enum nl80211_iftype type,
+#else
enum nl80211_iftype type, u32 *flags,
+#endif
struct vif_params *params)
{
struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy);
@@ -2361,12 +2370,26 @@
const wl_event_msg_t *e, void *data)
{
struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ struct cfg80211_roam_info roam_info = {};
+#endif
s32 err = 0;
wl_get_assoc_ies(wl);
memcpy(wl->profile->bssid, &e->addr, ETHER_ADDR_LEN);
memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
wl_update_bss_info(wl);
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ roam_info.channel = &wl->conf->channel,
+ roam_info.bssid = (u8 *)&wl->bssid,
+ roam_info.req_ie = conn_info->req_ie,
+ roam_info.req_ie_len = conn_info->req_ie_len,
+ roam_info.resp_ie = conn_info->resp_ie,
+ roam_info.resp_ie_len = conn_info->resp_ie_len,
+
+ cfg80211_roamed(ndev, &roam_info, GFP_KERNEL);
+#else
cfg80211_roamed(ndev,
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
&wl->conf->channel,
@@ -2374,6 +2397,7 @@
(u8 *)&wl->bssid,
conn_info->req_ie, conn_info->req_ie_len,
conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL);
+#endif
WL_DBG(("Report roaming result\n"));
set_bit(WL_STATUS_CONNECTED, &wl->status);
+63
View File
@@ -0,0 +1,63 @@
diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index 489c9f5..f8278ad 100644
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -93,7 +93,11 @@
#include <wlc_wowl.h>
+#ifdef HAVE_TIMER_SETUP
+static void wl_timer(struct timer_list *list);
+#else
static void wl_timer(ulong data);
+#endif
static void _wl_timer(wl_timer_t *t);
static struct net_device *wl_alloc_linux_if(wl_if_t *wlif);
@@ -2296,12 +2300,17 @@
atomic_dec(&t->wl->callbacks);
}
-
+#ifdef HAVE_TIMER_SETUP
+static void
+wl_timer(struct timer_list *list)
+{
+ wl_timer_t *t = from_timer(t,list,timer);
+#else
static void
wl_timer(ulong data)
{
wl_timer_t *t = (wl_timer_t *)data;
-
+#endif
if (!WL_ALL_PASSIVE_ENAB(t->wl))
_wl_timer(t);
else
@@ -2351,10 +2360,13 @@
}
bzero(t, sizeof(wl_timer_t));
-
+#ifdef HAVE_TIMER_SETUP
+ timer_setup(&t->timer, wl_timer,0);
+#else
init_timer(&t->timer);
t->timer.data = (ulong) t;
t->timer.function = wl_timer;
+#endif
t->wl = wl;
t->fn = fn;
t->arg = arg;
diff --git a/src/wl/sys/wl_linux.h b/src/wl/sys/wl_linux.h
index 489c9f5..f8278ad 100644
--- a/src/wl/sys/wl_linux.h
+++ b/src/wl/sys/wl_linux.h
@@ -190,3 +190,7 @@
extern struct net_device * wl_netdev_get(wl_info_t *wl);
#endif
+
+#if defined(timer_setup) && defined(from_timer)
+#define HAVE_TIMER_SETUP
+#endif
View File
View File
View File
View File
+126 -4
View File
@@ -5,8 +5,8 @@
<Name>module-broadcom-wl</Name>
<Homepage>http://www.broadcom.com/support/802.11/linux_sta.php</Homepage>
<Packager>
<Name>PisiLinux Community</Name>
<Email>admin@pisilinux.org</Email>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Packager>
<License>freedist</License>
<IsA>driver</IsA>
@@ -15,20 +15,23 @@
<Archive sha1sum="8acbdbb4ab4ab4123d1773b616904798fbef9277" type="targz" target="i686">https://docs.broadcom.com/docs-and-downloads/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_271.tar.gz</Archive>
<Archive sha1sum="1f568bb989d175813c5631c6629d9479eae6f3be" type="targz" target="x86_64">https://docs.broadcom.com/docs-and-downloads/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz</Archive>
<BuildDependencies>
<Dependency version="4.9.6">kernel-module-headers</Dependency>
<Dependency version="4.19.56">kernel-module-headers</Dependency>
</BuildDependencies>
<Patches>
<Patch level="1">patch/license.patch</Patch>
<Patch level="1">patch/wl_linux.c.patch</Patch>
<Patch level="1">patch/linux47.patch</Patch>
<Patch level="1">patch/linux48.patch</Patch>
<Patch level="1">linux-4.11.patch</Patch>
<Patch level="1">linux-4.12.patch</Patch>
<Patch level="1">linux-4.15.patch</Patch>
</Patches>
</Source>
<Package>
<Name>module-broadcom-wl</Name>
<RuntimeDependencies>
<Dependency version="4.9.6">kernel</Dependency>
<Dependency version="4.19.56">kernel</Dependency>
<Dependency release="current">module-broadcom-wl-userspace</Dependency>
</RuntimeDependencies>
<Files>
@@ -57,6 +60,125 @@
</Package>
<History>
<Update release="25">
<Date>2019-06-26</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="24">
<Date>2019-05-11</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="23">
<Date>2019-01-20</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="22">
<Date>2018-12-22</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="21">
<Date>2018-10-05</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="20">
<Date>2018-08-07</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="19">
<Date>2018-07-15</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="18">
<Date>2018-07-12</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="17">
<Date>2018-04-28</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="16">
<Date>2018-03-11</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="15">
<Date>2018-03-03</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="14">
<Date>2018-01-06</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="13">
<Date>2017-12-20</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="12">
<Date>2017-12-04</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="11">
<Date>2017-11-19</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="10">
<Date>2017-08-21</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="9">
<Date>2017-07-04</Date>
<Version>6.30.223.271</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="8">
<Date>2017-02-01</Date>
<Version>6.30.223.271</Version>
View File
@@ -11,6 +11,7 @@ KDIR = kerneltools.getKernelVersion()
def build():
autotools.make("KERN_DIR=/lib/modules/%s/build" % KDIR)
#autotools.make("-C vboxsf KERN_DIR=/lib/modules/%s/build" % KDIR)
autotools.make("-C vboxvideo KERN_DIR=/lib/modules/%s/build" % KDIR)
def install():
@@ -0,0 +1,39 @@
diff -Nuar a/Makefile b/Makefile
--- a/Makefile 2018-10-15 17:25:07.000000000 +0300
+++ b/Makefile 2018-08-14 14:38:32.000000000 +0300
@@ -25,7 +25,7 @@
KBUILD_VERBOSE =
-vboxguest:
+all:
@echo "=== Building 'vboxguest' module ==="
@$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxguest
@if [ -f vboxguest/vboxguest.ko ]; then \
@@ -34,8 +34,6 @@
cp vboxguest/vboxguest.o .; \
fi
@echo
-
-vboxsf: vboxguest
@if [ -d vboxsf ]; then \
if [ -f vboxguest/Module.symvers ]; then \
cp vboxguest/Module.symvers vboxsf; \
@@ -49,8 +47,6 @@
fi; \
echo; \
fi
-
-vboxvideo:
@if [ -d vboxvideo ]; then \
if [ -f vboxguest/Module.symvers ]; then \
cp vboxguest/Module.symvers vboxvideo; \
@@ -65,8 +61,6 @@
echo; \
fi
-all: vboxguest vboxsf vboxvideo
-
install:
@$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxguest install
@if [ -d vboxsf ]; then \
@@ -3,7 +3,7 @@
<PISI>
<Source>
<Name>module-virtualbox-guest</Name>
<Homepage>http://www.virtualbox.org</Homepage>
<Homepage>https://www.virtualbox.org</Homepage>
<Packager>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
@@ -12,16 +12,19 @@
<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="87b355193a306ed5516e8d348f7eb83854e08ac1" type="tarxz">https://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-guest-5.1.14.tar.xz</Archive>
<Archive sha1sum="474ced834f7ce95ae9db5fec8a924f9285077bc3" type="tarxz">https://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-guest-6.0.12.tar.xz</Archive>
<BuildDependencies>
<Dependency version="4.9.6">kernel-module-headers</Dependency>
<Dependency version="4.19.56">kernel-module-headers</Dependency>
</BuildDependencies>
<Patches>
<!-- <Patch>vboxsf-make.patch</Patch> -->
</Patches>
</Source>
<Package>
<Name>module-virtualbox-guest</Name>
<RuntimeDependencies>
<Dependency version="4.9.6">kernel</Dependency>
<Dependency version="4.19.56">kernel</Dependency>
<Dependency>baselayout</Dependency>
<Dependency version="current">module-virtualbox-guest-userspace</Dependency>
</RuntimeDependencies>
@@ -52,6 +55,223 @@
</Package>
<History>
<Update release="45">
<Date>2019-09-29</Date>
<Version>6.0.12</Version>
<Comment>Version bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="44">
<Date>2019-08-04</Date>
<Version>6.0.10</Version>
<Comment>Version Bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="43">
<Date>2019-06-26</Date>
<Version>6.0.8</Version>
<Comment>Rebuild drivers</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="42">
<Date>2019-05-17</Date>
<Version>6.0.8</Version>
<Comment>Version Bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="41">
<Date>2019-05-11</Date>
<Version>6.0.6</Version>
<Comment>Rebuild drivers</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="40">
<Date>2019-04-20</Date>
<Version>6.0.6</Version>
<Comment>Version Bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="39">
<Date>2019-04-06</Date>
<Version>6.0.4</Version>
<Comment>Version Bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="38">
<Date>2019-01-29</Date>
<Version>6.0.4</Version>
<Comment>Version Bump</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="37">
<Date>2019-01-20</Date>
<Version>6.0.2</Version>
<Comment>Version Bump</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="36">
<Date>2019-01-16</Date>
<Version>6.0.2</Version>
<Comment>Version Bump</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="35">
<Date>2018-12-22</Date>
<Version>6.0.0</Version>
<Comment>Version Bump</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="34">
<Date>2018-11-23</Date>
<Version>5.2.22</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="33">
<Date>2018-10-05</Date>
<Version>5.2.18</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="32">
<Date>2018-09-16</Date>
<Version>5.2.18</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="31">
<Date>2018-08-17</Date>
<Version>5.2.16</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="30">
<Date>2018-08-06</Date>
<Version>5.2.12</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="29">
<Date>2018-07-15</Date>
<Version>5.2.12</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="28">
<Date>2018-07-12</Date>
<Version>5.2.12</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="27">
<Date>2018-05-10</Date>
<Version>5.2.12</Version>
<Comment>Version bump</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="26">
<Date>2018-04-28</Date>
<Version>5.2.10</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="25">
<Date>2018-04-18</Date>
<Version>5.2.10</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="24">
<Date>2018-03-15</Date>
<Version>5.2.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="23">
<Date>2018-03-11</Date>
<Version>5.2.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="22">
<Date>2018-03-03</Date>
<Version>5.2.8</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="21">
<Date>2018-01-06</Date>
<Version>5.2.2</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="20">
<Date>2017-12-20</Date>
<Version>5.2.2</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="19">
<Date>2017-12-04</Date>
<Version>5.2.2</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="18">
<Date>2017-11-25</Date>
<Version>5.2.2</Version>
<Comment>Version bump</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="17">
<Date>2017-11-19</Date>
<Version>5.1.14</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="16">
<Date>2017-08-21</Date>
<Version>5.1.14</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="15">
<Date>2017-07-04</Date>
<Version>5.1.14</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="14">
<Date>2017-02-01</Date>
<Version>5.1.14</Version>
@@ -151,4 +371,4 @@
<Email>ertugrulerata@gmail.com</Email>
</Update>
</History>
</PISI>
</PISI>
+222 -5
View File
@@ -3,7 +3,7 @@
<PISI>
<Source>
<Name>module-virtualbox</Name>
<Homepage>http://www.virtualbox.org</Homepage>
<Homepage>https://www.virtualbox.org</Homepage>
<Packager>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
@@ -12,9 +12,9 @@
<IsA>driver</IsA>
<Summary>Kernel modules for VirtualBox</Summary>
<Description>This package provides the kernel support for VirtualBox.</Description>
<Archive sha1sum="7489ae3b501407d5ca2826e6ef1d5b2000e06154" type="tarxz">https://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-5.1.14.tar.xz</Archive>
<Archive sha1sum="5c9309d901ed24e4cd484dfd9b79367973df8151" type="tarxz">https://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-6.0.12.tar.xz</Archive>
<BuildDependencies>
<Dependency version="4.9.6">kernel-module-headers</Dependency>
<Dependency version="4.19.56">kernel-module-headers</Dependency>
</BuildDependencies>
<!--Patches>
<Patch>vbox_linux-4.3.diff</Patch>
@@ -24,7 +24,7 @@
<Package>
<Name>module-virtualbox</Name>
<RuntimeDependencies>
<Dependency version="4.9.6">kernel</Dependency>
<Dependency version="4.19.56">kernel</Dependency>
<Dependency version="current">module-virtualbox-userspace</Dependency>
</RuntimeDependencies>
<Files>
@@ -50,6 +50,223 @@
</Package>
<History>
<Update release="45">
<Date>2019-09-29</Date>
<Version>6.0.12</Version>
<Comment>Version bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="44">
<Date>2019-08-04</Date>
<Version>6.0.10</Version>
<Comment>Version Bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="43">
<Date>2019-06-26</Date>
<Version>6.0.8</Version>
<Comment>Rebuild drivers</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="42">
<Date>2019-05-17</Date>
<Version>6.0.8</Version>
<Comment>Version Bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="41">
<Date>2019-05-11</Date>
<Version>6.0.6</Version>
<Comment>Rebuild drivers</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="40">
<Date>2019-04-20</Date>
<Version>6.0.6</Version>
<Comment>Version Bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="39">
<Date>2019-04-06</Date>
<Version>6.0.4</Version>
<Comment>Version Bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="38">
<Date>2019-01-29</Date>
<Version>6.0.4</Version>
<Comment>Version Bump</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="37">
<Date>2019-01-20</Date>
<Version>6.0.2</Version>
<Comment>Version Bump</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="36">
<Date>2019-01-16</Date>
<Version>6.0.2</Version>
<Comment>Version Bump</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="35">
<Date>2018-12-22</Date>
<Version>6.0.0</Version>
<Comment>Version Bump</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="34">
<Date>2018-11-23</Date>
<Version>5.2.22</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="33">
<Date>2018-10-05</Date>
<Version>5.2.18</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="32">
<Date>2018-09-16</Date>
<Version>5.2.18</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="31">
<Date>2018-08-17</Date>
<Version>5.2.16</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="30">
<Date>2018-08-06</Date>
<Version>5.2.12</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="29">
<Date>2018-07-15</Date>
<Version>5.2.12</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="28">
<Date>2018-07-12</Date>
<Version>5.2.12</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="27">
<Date>2018-05-10</Date>
<Version>5.2.12</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="26">
<Date>2018-04-28</Date>
<Version>5.2.10</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="25">
<Date>2018-04-18</Date>
<Version>5.2.10</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="24">
<Date>2018-03-15</Date>
<Version>5.2.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="23">
<Date>2018-03-11</Date>
<Version>5.2.8</Version>
<Comment>Rebuild for new kernel</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="22">
<Date>2018-03-03</Date>
<Version>5.2.8</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="21">
<Date>2018-01-06</Date>
<Version>5.2.2</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="20">
<Date>2017-12-20</Date>
<Version>5.2.2</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="19">
<Date>2017-12-04</Date>
<Version>5.2.2</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="18">
<Date>2017-11-25</Date>
<Version>5.2.2</Version>
<Comment>Version bump</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="17">
<Date>2017-11-19</Date>
<Version>5.1.14</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="16">
<Date>2017-08-21</Date>
<Version>5.1.14</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="15">
<Date>2017-07-04</Date>
<Version>5.1.14</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Kamil Atlı</Name>
<Email>suvari@pisilinux.org</Email>
</Update>
<Update release="14">
<Date>2017-02-01</Date>
<Version>5.1.14</Version>
@@ -149,4 +366,4 @@
<Email>ertugrulerata@gmail.com</Email>
</Update>
</History>
</PISI>
</PISI>
@@ -0,0 +1,55 @@
commit fa2aeeccd5366378ca2eb83c6daee64b511fe792
Author: Felix Yan <felixonmars@archlinux.org>
Date: Tue May 16 01:32:56 2017 +0800
Add support for Linux 4.11+
diff --git a/ndiswrapper/driver/ndis.c b/ndiswrapper/driver/ndis.c
index c1913a05..2ab4dd21 100644
--- a/ndiswrapper/driver/ndis.c
+++ b/ndiswrapper/driver/ndis.c
@@ -2258,7 +2258,9 @@ wstdcall void NdisMIndicateReceivePacket(struct ndis_mp_block *nmb,
WARNING("empty packet ignored");
continue;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
wnd->net_dev->last_rx = jiffies;
+#endif
/* get total number of bytes in packet */
NdisGetFirstBufferFromPacketSafe(packet, &buffer, &virt,
&length, &total_length,
@@ -2346,7 +2348,9 @@ wstdcall void EthRxIndicateHandler(struct ndis_mp_block *nmb, void *rx_ctx,
ERROR("nmb is NULL");
EXIT3(return);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
wnd->net_dev->last_rx = jiffies;
+#endif
if (look_ahead_size < packet_size) {
struct ndis_packet *packet;
@@ -2461,7 +2465,9 @@ wstdcall void NdisMTransferDataComplete(struct ndis_mp_block *nmb,
WARNING("illegal packet");
EXIT3(return);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
wnd->net_dev->last_rx = jiffies;
+#endif
oob_data = NDIS_PACKET_OOB_DATA(packet);
skb_size = sizeof(oob_data->header) + oob_data->look_ahead_size +
bytes_txed;
diff --git a/ndiswrapper/driver/ntoskernel.h b/ndiswrapper/driver/ntoskernel.h
index 3c4c6ff0..f1c52e51 100644
--- a/ndiswrapper/driver/ntoskernel.h
+++ b/ndiswrapper/driver/ntoskernel.h
@@ -296,6 +296,10 @@ static inline void (INIT_WORK)(struct work_struct *work, work_func_t func)
#define add_taint(flag, lockdep_ok) add_taint(flag)
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+#include <linux/sched/signal.h>
+#endif
+
#include "winnt_types.h"
#include "ndiswrapper.h"
#include "pe_linker.h"
@@ -0,0 +1,27 @@
commit eeac7ab831b3097005dadc64dd323f54ade30323
Author: Felix Yan <felixonmars@archlinux.org>
Date: Mon Sep 11 12:52:36 2017 +0800
Add support for linux 4.13+
diff --git a/ndiswrapper/driver/ntoskernel.h b/ndiswrapper/driver/ntoskernel.h
index f1c52e51..1422bd4d 100644
--- a/ndiswrapper/driver/ntoskernel.h
+++ b/ndiswrapper/driver/ntoskernel.h
@@ -119,9 +119,16 @@ static cpumask_t cpumasks[NR_CPUS];
*/
#include <asm/dma-mapping.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
#define PCI_DMA_ALLOC_COHERENT(pci_dev,size,dma_handle) \
dma_alloc_coherent(&pci_dev->dev,size,dma_handle, \
GFP_KERNEL | __GFP_REPEAT)
+#else
+#define PCI_DMA_ALLOC_COHERENT(pci_dev,size,dma_handle) \
+ dma_alloc_coherent(&pci_dev->dev,size,dma_handle, \
+ GFP_KERNEL | __GFP_RETRY_MAYFAIL)
+#endif
+
#define PCI_DMA_FREE_COHERENT(pci_dev,size,cpu_addr,dma_handle) \
dma_free_coherent(&pci_dev->dev,size,cpu_addr,dma_handle)
#define PCI_DMA_MAP_SINGLE(pci_dev,addr,size,direction) \
@@ -0,0 +1,199 @@
From: Seth Forshee <seth.forshee@canonical.com>
Date: Wed, 13 Dec 2017 15:53:31 -0600
Subject: [PATCH] Build fixes for Linux 4.15
Fixes two build issues for 4.15:
- init_timer() was eliminated in 4.15, and all callers were
converted to using timer_setup(). The callback prototype has
also changed to pass a timer_list argument instead of callback
data, and from_timer() must be used to get to the object in
which the timer is embedded.
- usb_get_status() was changed to take an additional argument,
and usb_get_std_status() was added as a wrapper for callers to
use as a replacment. Call the wrapper in 4.15 and later.
LP: #1737749
---
driver/ntoskernel.c | 19 ++++++++++++++++++-
driver/usb.c | 10 ++++++++--
driver/wrapndis.c | 28 ++++++++++++++++++++++++++++
3 files changed, 54 insertions(+), 3 deletions(-)
diff --git a/driver/ntoskernel.c b/driver/ntoskernel.c
index 4fe0dc1..156c688 100644
--- a/driver/ntoskernel.c
+++ b/driver/ntoskernel.c
@@ -77,7 +77,6 @@ u64 wrap_ticks_to_boot;
#if defined(CONFIG_X86_64)
static struct timer_list shared_data_timer;
struct kuser_shared_data kuser_shared_data;
-static void update_user_shared_data_proc(unsigned long data);
#endif
WIN_SYMBOL_MAP("KeTickCount", &jiffies)
@@ -91,7 +90,11 @@ DEFINE_PER_CPU(struct irql_info, irql_info);
#endif
#if defined(CONFIG_X86_64)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
static void update_user_shared_data_proc(unsigned long data)
+#else
+static void update_user_shared_data_proc(struct timer_list *t)
+#endif
{
/* timer is supposed to be scheduled every 10ms, but bigger
* intervals seem to work (tried up to 50ms) */
@@ -407,9 +410,15 @@ static void initialize_object(struct dispatcher_header *dh, enum dh_type type,
InitializeListHead(&dh->wait_blocks);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
static void timer_proc(unsigned long data)
{
struct wrap_timer *wrap_timer = (struct wrap_timer *)data;
+#else
+static void timer_proc(struct timer_list *t)
+{
+ struct wrap_timer *wrap_timer = from_timer(wrap_timer, t, timer);
+#endif
struct nt_timer *nt_timer;
struct kdpc *kdpc;
@@ -452,9 +461,13 @@ void wrap_init_timer(struct nt_timer *nt_timer, enum timer_type type,
return;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
init_timer(&wrap_timer->timer);
wrap_timer->timer.data = (unsigned long)wrap_timer;
wrap_timer->timer.function = timer_proc;
+#else
+ timer_setup(&wrap_timer->timer, timer_proc, 0);
+#endif
wrap_timer->nt_timer = nt_timer;
#ifdef TIMER_DEBUG
wrap_timer->wrap_timer_magic = WRAP_TIMER_MAGIC;
@@ -2559,9 +2572,13 @@ int ntoskernel_init(void)
#if defined(CONFIG_X86_64)
memset(&kuser_shared_data, 0, sizeof(kuser_shared_data));
*((ULONG64 *)&kuser_shared_data.system_time) = ticks_1601();
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
init_timer(&shared_data_timer);
shared_data_timer.function = update_user_shared_data_proc;
shared_data_timer.data = 0;
+#else
+ timer_setup(&shared_data_timer, update_user_shared_data_proc, 0);
+#endif
#endif
return 0;
}
diff --git a/driver/usb.c b/driver/usb.c
index 3e7021a..e55c2c6 100644
--- a/driver/usb.c
+++ b/driver/usb.c
@@ -750,6 +750,12 @@ static USBD_STATUS wrap_set_clear_feature(struct usb_device *udev,
USBEXIT(return NT_URB_STATUS(nt_urb));
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
+#define wrap_usb_get_status usb_get_status
+#else
+#define wrap_usb_get_status usb_get_std_status
+#endif
+
static USBD_STATUS wrap_get_status_request(struct usb_device *udev,
struct irp *irp)
{
@@ -776,8 +782,8 @@ static USBD_STATUS wrap_get_status_request(struct usb_device *udev,
return NT_URB_STATUS(nt_urb);
}
assert(status_req->transfer_buffer_length == sizeof(u16));
- ret = usb_get_status(udev, type, status_req->index,
- status_req->transfer_buffer);
+ ret = wrap_usb_get_status(udev, type, status_req->index,
+ status_req->transfer_buffer);
if (ret >= 0) {
assert(ret <= status_req->transfer_buffer_length);
status_req->transfer_buffer_length = ret;
diff --git a/driver/wrapndis.c b/driver/wrapndis.c
index 870e4c2..f653440 100644
--- a/driver/wrapndis.c
+++ b/driver/wrapndis.c
@@ -1093,9 +1093,15 @@ send_assoc_event:
EXIT2(return);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
static void iw_stats_timer_proc(unsigned long data)
{
struct ndis_device *wnd = (struct ndis_device *)data;
+#else
+static void iw_stats_timer_proc(struct timer_list *t)
+{
+ struct ndis_device *wnd = from_timer(wnd, t, iw_stats_timer);
+#endif
ENTER2("%d", wnd->iw_stats_interval);
if (wnd->iw_stats_interval > 0) {
@@ -1111,8 +1117,12 @@ static void add_iw_stats_timer(struct ndis_device *wnd)
return;
if (wnd->iw_stats_interval < 0)
wnd->iw_stats_interval *= -1;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
wnd->iw_stats_timer.data = (unsigned long)wnd;
wnd->iw_stats_timer.function = iw_stats_timer_proc;
+#else
+ timer_setup(&wnd->iw_stats_timer, iw_stats_timer_proc, 0);
+#endif
mod_timer(&wnd->iw_stats_timer, jiffies + wnd->iw_stats_interval);
}
@@ -1124,9 +1134,15 @@ static void del_iw_stats_timer(struct ndis_device *wnd)
EXIT2(return);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
static void hangcheck_proc(unsigned long data)
{
struct ndis_device *wnd = (struct ndis_device *)data;
+#else
+static void hangcheck_proc(struct timer_list *t)
+{
+ struct ndis_device *wnd = from_timer(wnd, t, hangcheck_timer);
+#endif
ENTER3("%d", wnd->hangcheck_interval);
if (wnd->hangcheck_interval > 0) {
@@ -1147,8 +1163,12 @@ void hangcheck_add(struct ndis_device *wnd)
wnd->hangcheck_interval = hangcheck_interval * HZ;
if (wnd->hangcheck_interval < 0)
wnd->hangcheck_interval *= -1;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
wnd->hangcheck_timer.data = (unsigned long)wnd;
wnd->hangcheck_timer.function = hangcheck_proc;
+#else
+ timer_setup(&wnd->hangcheck_timer, hangcheck_proc, 0);
+#endif
mod_timer(&wnd->hangcheck_timer, jiffies + wnd->hangcheck_interval);
EXIT2(return);
}
@@ -2138,9 +2158,17 @@ static NTSTATUS ndis_add_device(struct driver_object *drv_obj,
wnd->dma_map_count = 0;
wnd->dma_map_addr = NULL;
wnd->nick[0] = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
init_timer(&wnd->hangcheck_timer);
+#else
+ timer_setup(&wnd->hangcheck_timer, NULL, 0);
+#endif
wnd->scan_timestamp = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
init_timer(&wnd->iw_stats_timer);
+#else
+ timer_setup(&wnd->iw_stats_timer, NULL, 0);
+#endif
wnd->iw_stats_interval = 10 * HZ;
wnd->ndis_pending_work = 0;
memset(&wnd->essid, 0, sizeof(wnd->essid));
+143 -8
View File
@@ -5,27 +5,29 @@
<Name>ndiswrapper</Name>
<Homepage>http://ndiswrapper.sourceforge.net/</Homepage>
<Packager>
<Name>PisiLinux Community</Name>
<Email>admins@pisilinux.org</Email>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Packager>
<License>GPLv2</License>
<IsA>app:console</IsA>
<IsA>driver</IsA>
<Summary>A network driver wrapper</Summary>
<Description>module-ndiswrapper allows you to use Windows XP drivers for WLAN cards without proper Linux drivers.</Description>
<Archive sha1sum="20998237cf6d37b86391dc8736c10031110db578" type="targz">http://download.sourceforge.net/ndiswrapper/ndiswrapper-1.60.tar.gz</Archive>
<Archive sha1sum="d98b97ff7e88d39b7966b4a3e7b7deeb7dc6e192" type="targz">http://download.sourceforge.net/ndiswrapper/ndiswrapper-1.62.tar.gz</Archive>
<BuildDependencies>
<Dependency version="4.9.6">kernel-module-headers</Dependency>
<Dependency version="4.19.56">kernel-module-headers</Dependency>
</BuildDependencies>
<Patches>
<Patch>upstream.patch</Patch>
</Patches>
<!--Patches>
<Patch>linux-4.11.patch</Patch>
<Patch>linux-4.13.patch</Patch>
<Patch>linux-4.15.patch</Patch>
</Patches-->
</Source>
<Package>
<Name>ndiswrapper</Name>
<RuntimeDependencies>
<Dependency version="4.9.6">kernel</Dependency>
<Dependency version="4.19.56">kernel</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="library" permanent="true">/lib/modules</Path>
@@ -41,6 +43,139 @@
</Package>
<History>
<Update release="26">
<Date>2019-06-26</Date>
<Version>1.62</Version>
<Comment>Rebuild drivers</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="25">
<Date>2019-05-11</Date>
<Version>1.62</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="24">
<Date>2019-05-11</Date>
<Version>1.61</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="23">
<Date>2019-04-06</Date>
<Version>1.61</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="22">
<Date>2019-01-20</Date>
<Version>1.61</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="21">
<Date>2018-12-22</Date>
<Version>1.61</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="20">
<Date>2018-10-05</Date>
<Version>1.61</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="19">
<Date>2018-08-07</Date>
<Version>1.61</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="18">
<Date>2018-07-15</Date>
<Version>1.61</Version>
<Comment>Rebuild</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="17">
<Date>2018-07-12</Date>
<Version>1.61</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="16">
<Date>2018-04-28</Date>
<Version>1.61</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="15">
<Date>2018-03-11</Date>
<Version>1.61</Version>
<Comment>Version bump</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="14">
<Date>2018-03-03</Date>
<Version>1.61</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="13">
<Date>2018-01-06</Date>
<Version>1.61</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="12">
<Date>2017-12-20</Date>
<Version>1.61</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="11">
<Date>2017-12-04</Date>
<Version>1.61</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="10">
<Date>2017-11-19</Date>
<Version>1.60</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>PisiLinux Community</Name>
<Email>admin@pisilinux.org</Email>
</Update>
<Update release="9">
<Date>2017-08-21</Date>
<Version>1.60</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>PisiLinux Community</Name>
<Email>admin@pisilinux.org</Email>
</Update>
<Update release="8">
<Date>2017-07-04</Date>
<Version>1.60</Version>
<Comment>Rebuild for new kernel.</Comment>
<Name>PisiLinux Community</Name>
<Email>admin@pisilinux.org</Email>
</Update>
<Update release="7">
<Date>2017-02-07</Date>
<Version>1.60</Version>
+5 -5
View File
@@ -24,8 +24,12 @@ def setup():
def build():
kerneltools.build(debugSymbols=False)
def install():
kerneltools.install()
# add objtool for external module building and enabled VALIDATION_STACK option
pisitools.insinto("/usr/src/linux-headers-%s/tools/objtool" % get.srcVERSION(), "%s/tools/objtool/objtool" % get.curDIR())
# Install kernel headers needed for out-of-tree module compilation
kerneltools.installHeaders()
@@ -35,13 +39,10 @@ def install():
# Generate some module lists to use within mkinitramfs
shelltools.system("./generate-module-list %s/lib/modules/%s" % (get.installDIR(), kerneltools.__getSuffix()))
#mkinitcpio default config
pisitools.dodir("/etc/mkinitcpio.d")
shelltools.touch("linux.preset")
shelltools.echo("linux.preset", "# mkinitcpio preset file for the 'linux' package\n" +
'ALL_config="/etc/mkinitcpio.conf"\n'+
@@ -49,7 +50,6 @@ def install():
'ALL_kver="/boot/kernel-%s"\n\n'% get.srcVERSION() +
"PRESETS=('default' 'fallback') \n\n" +
'#default_config="/etc/mkinitcpio.conf"\n' +
'default_image="/boot/initramfs-%s.img"\n'% get.srcVERSION() +
'#default_options=""\n\n' +
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,86 @@
diff -Nuar linux-4.9.orig/fs/aufs/posix_acl.c linux-4.9/fs/aufs/posix_acl.c
--- linux-4.9.orig/fs/aufs/posix_acl.c 2017-04-09 09:33:00.155052337 +0300
+++ linux-4.9/fs/aufs/posix_acl.c 2017-04-09 09:34:03.760053849 +0300
@@ -1,5 +1,18 @@
/*
* Copyright (C) 2014-2016 Junjiro R. Okajima
+ *
+ * This program, aufs is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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/>.
*/
/*
@@ -36,6 +49,8 @@
/* always topmost only */
acl = get_acl(h_inode, type);
+ if (!IS_ERR_OR_NULL(acl))
+ set_cached_acl(inode, type, acl);
out:
ii_read_unlock(inode);
@@ -77,8 +92,10 @@
ssz = au_sxattr(dentry, inode, &arg);
dput(dentry);
err = ssz;
- if (ssz >= 0)
+ if (ssz >= 0) {
err = 0;
+ set_cached_acl(inode, type, acl);
+ }
out:
return err;
diff -Nuar linux-4.9.orig/fs/aufs/xattr.c linux-4.9/fs/aufs/xattr.c
--- linux-4.9.orig/fs/aufs/xattr.c 2017-04-09 09:33:00.160052337 +0300
+++ linux-4.9/fs/aufs/xattr.c 2017-04-09 09:34:08.757053967 +0300
@@ -1,11 +1,26 @@
/*
* Copyright (C) 2014-2016 Junjiro R. Okajima
+ *
+ * This program, aufs is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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/>.
*/
/*
* handling xattr functions
*/
+#include <linux/fs.h>
+#include <linux/posix_acl_xattr.h>
#include <linux/xattr.h>
#include "aufs.h"
@@ -309,7 +324,11 @@
};
static const struct xattr_handler *au_xattr_handlers[] = {
- &au_xattr_handler,
+#ifdef CONFIG_FS_POSIX_ACL
+ &posix_acl_access_xattr_handler,
+ &posix_acl_default_xattr_handler,
+#endif
+ &au_xattr_handler, /* must be last */
NULL
};
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -83,10 +83,10 @@ 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.9/scripts/kconfig/Makefile linux-4.9-3rd/scripts/kconfig/Makefile
--- linux-4.9/scripts/kconfig/Makefile
+++ linux-4.9-3rd/scripts/kconfig/Makefile
@@ -18,28 +18,28 @@ endif
diff -Nurp linux-4.14/scripts/kconfig/Makefile linux-4.14-3rd/scripts/kconfig/Makefile
--- linux-4.14/scripts/kconfig/Makefile
+++ linux-4.14-3rd/scripts/kconfig/Makefile
@@ -19,28 +19,28 @@ endif
# We need this, in case the user has it in its environment
unexport CONFIG_
@@ -122,7 +122,7 @@ diff -Nurp linux-4.9/scripts/kconfig/Makefile linux-4.9-3rd/scripts/kconfig/Make
$(Q)mkdir -p include/config include/generated
$(Q)perl $< --$@ $(srctree) $(Kconfig) > .tmp.config
$(Q)if [ -f .config ]; then \
@@ -82,7 +82,7 @@ simple-targets := oldconfig allnoconfig
@@ -83,7 +83,7 @@ simple-targets := oldconfig allnoconfig
alldefconfig randconfig listnewconfig olddefconfig
PHONY += $(simple-targets)
@@ -131,7 +131,7 @@ diff -Nurp linux-4.9/scripts/kconfig/Makefile linux-4.9-3rd/scripts/kconfig/Make
$< $(silent) --$@ $(Kconfig)
PHONY += oldnoconfig savedefconfig defconfig
@@ -90,12 +90,12 @@ PHONY += oldnoconfig savedefconfig defco
@@ -91,12 +91,12 @@ PHONY += oldnoconfig savedefconfig defco
# oldnoconfig is an alias of olddefconfig, because people already are dependent
# on its behavior (sets new symbols to their default value but not 'n') with the
# counter-intuitive name.
@@ -147,7 +147,7 @@ diff -Nurp linux-4.9/scripts/kconfig/Makefile linux-4.9-3rd/scripts/kconfig/Make
ifeq ($(KBUILD_DEFCONFIG),)
$< $(silent) --defconfig $(Kconfig)
else
@@ -108,26 +108,26 @@ else
@@ -109,26 +109,26 @@ else
endif
endif
@@ -179,7 +179,7 @@ diff -Nurp linux-4.9/scripts/kconfig/Makefile linux-4.9-3rd/scripts/kconfig/Make
$(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config
# Help text used by make help
@@ -190,6 +190,9 @@ gconf-objs := gconf.o zconf.tab.o
@@ -191,6 +191,9 @@ gconf-objs := gconf.o zconf.tab.o
hostprogs-y := conf nconf mconf kxgettext qconf gconf
@@ -187,5 +187,5 @@ diff -Nurp linux-4.9/scripts/kconfig/Makefile linux-4.9-3rd/scripts/kconfig/Make
+ pushd $(srctree)/3rdparty ; $(PERL) ./mkbuild.pl ; popd
+
clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck
clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h
clean-files += zconf.tab.c zconf.lex.c gconf.glade.h
clean-files += config.pot linux.pot
@@ -1,6 +1,6 @@
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/crt.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/crt.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/crt.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/crt.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/crt.c linux-4.12.4-3rd/3rdparty/ndiswrapper/crt.c
--- linux-4.12.4/3rdparty/ndiswrapper/crt.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/crt.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,589 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -591,9 +591,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/crt.c linux-4.6-rc6-ndis/3rdparty/
+ printk(KERN_DEBUG "%s: %p: %s\n", ctx, from, buf);
+ kfree(buf);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/divdi3.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/divdi3.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/divdi3.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/divdi3.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/divdi3.c linux-4.12.4-3rd/3rdparty/ndiswrapper/divdi3.c
--- linux-4.12.4/3rdparty/ndiswrapper/divdi3.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/divdi3.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,329 @@
+/* 64-bit multiplication and division
+ Copyright (C) 1989, 1992-1999, 2000, 2001, 2002, 2003
@@ -924,9 +924,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/divdi3.c linux-4.6-rc6-ndis/3rdpar
+ __udivmoddi4 (u, v, &w);
+ return w;
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/hal.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/hal.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/hal.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/hal.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/hal.c linux-4.12.4-3rd/3rdparty/ndiswrapper/hal.c
--- linux-4.12.4/3rdparty/ndiswrapper/hal.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/hal.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -1085,9 +1085,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/hal.c linux-4.6-rc6-ndis/3rdparty/
+#endif
+ nt_spin_unlock(lock);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/iw_ndis.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/iw_ndis.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/iw_ndis.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/iw_ndis.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/iw_ndis.c linux-4.12.4-3rd/3rdparty/ndiswrapper/iw_ndis.c
--- linux-4.12.4/3rdparty/ndiswrapper/iw_ndis.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/iw_ndis.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,2001 @@
+ /*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -3090,9 +3090,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/iw_ndis.c linux-4.6-rc6-ndis/3rdpa
+};
+
+#endif
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/iw_ndis.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/iw_ndis.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/iw_ndis.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/iw_ndis.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/iw_ndis.h linux-4.12.4-3rd/3rdparty/ndiswrapper/iw_ndis.h
--- linux-4.12.4/3rdparty/ndiswrapper/iw_ndis.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/iw_ndis.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -3288,9 +3288,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/iw_ndis.h linux-4.6-rc6-ndis/3rdpa
+ KEY_MGMT_802_1X_NO_WPA, KEY_MGMT_WPA_NONE };
+
+#endif // IW_NDIS_H
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/lin2win.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/lin2win.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/lin2win.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/lin2win.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/lin2win.h linux-4.12.4-3rd/3rdparty/ndiswrapper/lin2win.h
--- linux-4.12.4/3rdparty/ndiswrapper/lin2win.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/lin2win.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2006 Giridhar Pemmasani
@@ -3403,9 +3403,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/lin2win.h linux-4.6-rc6-ndis/3rdpa
+})
+
+#endif // CONFIG_X86_64
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/lin2win.S linux-4.6-rc6-ndis/3rdparty/ndiswrapper/lin2win.S
--- linux-4.6-rc6/3rdparty/ndiswrapper/lin2win.S 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/lin2win.S 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/lin2win.S linux-4.12.4-3rd/3rdparty/ndiswrapper/lin2win.S
--- linux-4.12.4/3rdparty/ndiswrapper/lin2win.S 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/lin2win.S 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2011 Pavel Roskin
@@ -3545,9 +3545,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/lin2win.S linux-4.6-rc6-ndis/3rdpa
+lin2win lin2win4, 4
+lin2win lin2win5, 5
+lin2win lin2win6, 6
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/loader.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/loader.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/loader.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/loader.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/loader.c linux-4.12.4-3rd/3rdparty/ndiswrapper/loader.c
--- linux-4.12.4/3rdparty/ndiswrapper/loader.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/loader.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,967 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -4516,10 +4516,10 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/loader.c linux-4.6-rc6-ndis/3rdpar
+ mutex_unlock(&loader_mutex);
+ EXIT1(return);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/loader.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/loader.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/loader.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/loader.h 2016-05-01 18:25:43.000000000 +0300
@@ -0,0 +1,112 @@
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/loader.h linux-4.12.4-3rd/3rdparty/ndiswrapper/loader.h
--- linux-4.12.4/3rdparty/ndiswrapper/loader.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/loader.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
+ *
@@ -4538,10 +4538,6 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/loader.h linux-4.6-rc6-ndis/3rdpar
+#ifndef _LOADER_H_
+#define _LOADER_H_
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(4,0,0)
+#include <linux/vmalloc.h>
+#endif
+
+#include "ndiswrapper.h"
+
+#ifndef __KERNEL__
@@ -4632,9 +4628,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/loader.h linux-4.6-rc6-ndis/3rdpar
+#endif
+
+#endif /* LOADER_H */
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/longlong.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/longlong.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/longlong.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/longlong.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/longlong.h linux-4.12.4-3rd/3rdparty/ndiswrapper/longlong.h
--- linux-4.12.4/3rdparty/ndiswrapper/longlong.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/longlong.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,1333 @@
+/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
+ Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000
@@ -5969,9 +5965,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/longlong.h linux-4.6-rc6-ndis/3rdp
+#ifndef UDIV_NEEDS_NORMALIZATION
+#define UDIV_NEEDS_NORMALIZATION 0
+#endif
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/Makefile linux-4.6-rc6-ndis/3rdparty/ndiswrapper/Makefile
--- linux-4.6-rc6/3rdparty/ndiswrapper/Makefile 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/Makefile 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/Makefile linux-4.12.4-3rd/3rdparty/ndiswrapper/Makefile
--- linux-4.12.4/3rdparty/ndiswrapper/Makefile 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/Makefile 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,213 @@
+# Name of the module
+MODNAME = ndiswrapper
@@ -6186,9 +6182,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/Makefile linux-4.6-rc6-ndis/3rdpar
+ done
+
+.PHONY: all modules clean install config_check dist
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/mkexport.sh linux-4.6-rc6-ndis/3rdparty/ndiswrapper/mkexport.sh
--- linux-4.6-rc6/3rdparty/ndiswrapper/mkexport.sh 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/mkexport.sh 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/mkexport.sh linux-4.12.4-3rd/3rdparty/ndiswrapper/mkexport.sh
--- linux-4.12.4/3rdparty/ndiswrapper/mkexport.sh 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/mkexport.sh 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,42 @@
+#! /bin/sh
+
@@ -6232,9 +6228,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/mkexport.sh linux-4.6-rc6-ndis/3rd
+
+echo " {NULL, NULL}"
+echo "};"
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/mkstubs.sh linux-4.6-rc6-ndis/3rdparty/ndiswrapper/mkstubs.sh
--- linux-4.6-rc6/3rdparty/ndiswrapper/mkstubs.sh 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/mkstubs.sh 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/mkstubs.sh linux-4.12.4-3rd/3rdparty/ndiswrapper/mkstubs.sh
--- linux-4.12.4/3rdparty/ndiswrapper/mkstubs.sh 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/mkstubs.sh 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,12 @@
+#! /bin/sh
+
@@ -6248,9 +6244,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/mkstubs.sh linux-4.6-rc6-ndis/3rdp
+ win2lin(\1, \2)/p' \
+ $file | sed -e 's/[ \t ]\+//' | sort -u; \
+done
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ndis.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ndis.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/ndis.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ndis.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/ndis.c linux-4.12.4-3rd/3rdparty/ndiswrapper/ndis.c
--- linux-4.12.4/3rdparty/ndiswrapper/ndis.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/ndis.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,3025 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -9277,9 +9273,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ndis.c linux-4.6-rc6-ndis/3rdparty
+ destroy_workqueue(ndis_wq);
+ EXIT1(return);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ndis.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ndis.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/ndis.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ndis.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/ndis.h linux-4.12.4-3rd/3rdparty/ndiswrapper/ndis.h
--- linux-4.12.4/3rdparty/ndiswrapper/ndis.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/ndis.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,1309 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -10590,9 +10586,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ndis.h linux-4.6-rc6-ndis/3rdparty
+}
+
+#endif /* NDIS_H */
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ndiswrapper.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ndiswrapper.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/ndiswrapper.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ndiswrapper.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/ndiswrapper.h linux-4.12.4-3rd/3rdparty/ndiswrapper/ndiswrapper.h
--- linux-4.12.4/3rdparty/ndiswrapper/ndiswrapper.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/ndiswrapper.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -10612,7 +10608,7 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ndiswrapper.h linux-4.6-rc6-ndis/3
+#ifndef _NDISWRAPPER_H_
+#define _NDISWRAPPER_H_
+
+#define DRIVER_VERSION "1.60"
+#define DRIVER_VERSION "1.61"
+#define UTILS_VERSION "1.9"
+
+#define DRIVER_NAME "ndiswrapper"
@@ -10813,9 +10809,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ndiswrapper.h linux-4.6-rc6-ndis/3
+#endif // __KERNEL__
+
+#endif // NDISWRAPPER_H
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ntoskernel.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ntoskernel.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/ntoskernel.c linux-4.12.4-3rd/3rdparty/ndiswrapper/ntoskernel.c
--- linux-4.12.4/3rdparty/ndiswrapper/ntoskernel.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/ntoskernel.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,2677 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -13494,10 +13490,10 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel.c linux-4.6-rc6-ndis/3r
+
+ EXIT2(return);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ntoskernel.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ntoskernel.h 2016-05-01 18:25:43.000000000 +0300
@@ -0,0 +1,1090 @@
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/ntoskernel.h linux-4.12.4-3rd/3rdparty/ndiswrapper/ntoskernel.h
--- linux-4.12.4/3rdparty/ndiswrapper/ntoskernel.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/ntoskernel.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,1102 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
+ *
@@ -13546,6 +13542,8 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel.h linux-4.6-rc6-ndis/3r
+#include <linux/percpu.h>
+#include <linux/kthread.h>
+#include <linux/workqueue.h>
+#include <linux/vmalloc.h>
+
+
+#if !defined(CONFIG_X86) && !defined(CONFIG_X86_64)
+#error "this module is for x86 or x86_64 architectures only"
@@ -13858,8 +13856,18 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel.h linux-4.6-rc6-ndis/3r
+#define prandom_seed(seed) net_srandom(seed)
+#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0)
+#define strncasecmp strnicmp
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
+static int strncasecmp(const char *s1, const char *s2, size_t n)
+{
+ strnicmp(s1, s2, n);
+}
+#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0)
+static inline void netif_trans_update(struct net_device *dev)
+{
+ dev->trans_start = jiffies;
+}
+#endif
+
+/* TICK is 100ns */
@@ -14588,9 +14596,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel.h linux-4.6-rc6-ndis/3r
+#endif
+
+#endif // _NTOSKERNEL_H_
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel_io.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ntoskernel_io.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel_io.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/ntoskernel_io.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/ntoskernel_io.c linux-4.12.4-3rd/3rdparty/ndiswrapper/ntoskernel_io.c
--- linux-4.12.4/3rdparty/ndiswrapper/ntoskernel_io.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/ntoskernel_io.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,1161 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -15753,9 +15761,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/ntoskernel_io.c linux-4.6-rc6-ndis
+ IOTRACE("LowLimit: 0x%lx, HighLimit: 0x%lx", *LowLimit, *HighLimit);
+ IOEXIT(return);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/pe_linker.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/pe_linker.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/pe_linker.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/pe_linker.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/pe_linker.c linux-4.12.4-3rd/3rdparty/ndiswrapper/pe_linker.c
--- linux-4.12.4/3rdparty/ndiswrapper/pe_linker.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/pe_linker.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,600 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -16357,9 +16365,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/pe_linker.c linux-4.6-rc6-ndis/3rd
+ }
+ return 0;
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/pe_linker.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/pe_linker.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/pe_linker.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/pe_linker.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/pe_linker.h linux-4.12.4-3rd/3rdparty/ndiswrapper/pe_linker.h
--- linux-4.12.4/3rdparty/ndiswrapper/pe_linker.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/pe_linker.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,992 @@
+/*
+ * This file is an excerpt of winnt.h from WINE, which bears the
@@ -17353,9 +17361,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/pe_linker.h linux-4.6-rc6-ndis/3rd
+ WORD Length;
+ CHAR NameString[ 1 ];
+} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/pnp.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/pnp.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/pnp.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/pnp.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/pnp.c linux-4.12.4-3rd/3rdparty/ndiswrapper/pnp.c
--- linux-4.12.4/3rdparty/ndiswrapper/pnp.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/pnp.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,697 @@
+/*
+ * Copyright (C) 2005 Giridhar Pemmasani
@@ -18054,9 +18062,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/pnp.c linux-4.6-rc6-ndis/3rdparty/
+}
+
+#endif // USB
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/pnp.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/pnp.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/pnp.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/pnp.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/pnp.h linux-4.12.4-3rd/3rdparty/ndiswrapper/pnp.h
--- linux-4.12.4/3rdparty/ndiswrapper/pnp.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/pnp.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005 Giridhar Pemmasani
@@ -18094,9 +18102,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/pnp.h linux-4.6-rc6-ndis/3rdparty/
+int wrap_pnp_resume_usb_device(struct usb_interface *intf);
+
+#endif
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/proc.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/proc.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/proc.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/proc.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/proc.c linux-4.12.4-3rd/3rdparty/ndiswrapper/proc.c
--- linux-4.12.4/3rdparty/ndiswrapper/proc.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/proc.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,588 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -18686,9 +18694,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/proc.c linux-4.6-rc6-ndis/3rdparty
+ remove_proc_entry("debug", wrap_procfs_entry);
+ proc_remove(wrap_procfs_entry);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/rtl.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/rtl.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/rtl.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/rtl.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/rtl.c linux-4.12.4-3rd/3rdparty/ndiswrapper/rtl.c
--- linux-4.12.4/3rdparty/ndiswrapper/rtl.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/rtl.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,715 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -19405,9 +19413,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/rtl.c linux-4.6-rc6-ndis/3rdparty/
+ TRACE1("version: %d", version);
+ return TRUE;
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/usb.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/usb.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/usb.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/usb.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/usb.c linux-4.12.4-3rd/3rdparty/ndiswrapper/usb.c
--- linux-4.12.4/3rdparty/ndiswrapper/usb.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/usb.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,1496 @@
+/*
+ * Copyright (C) 2004 Jan Kiszka
@@ -20905,9 +20913,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/usb.c linux-4.6-rc6-ndis/3rdparty/
+ kill_all_urbs(wd, 0);
+ USBEXIT(return);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/usb.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/usb.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/usb.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/usb.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/usb.h linux-4.12.4-3rd/3rdparty/ndiswrapper/usb.h
--- linux-4.12.4/3rdparty/ndiswrapper/usb.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/usb.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,360 @@
+/*
+ * Copyright (C) 2004 Jan Kiszka
@@ -21269,9 +21277,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/usb.h linux-4.6-rc6-ndis/3rdparty/
+ struct io_stack_location *irp_sl);
+
+#endif /* USB_H */
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/win2lin_stubs.S linux-4.6-rc6-ndis/3rdparty/ndiswrapper/win2lin_stubs.S
--- linux-4.6-rc6/3rdparty/ndiswrapper/win2lin_stubs.S 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/win2lin_stubs.S 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/win2lin_stubs.S linux-4.12.4-3rd/3rdparty/ndiswrapper/win2lin_stubs.S
--- linux-4.12.4/3rdparty/ndiswrapper/win2lin_stubs.S 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/win2lin_stubs.S 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,253 @@
+/*
+ * Copyright (C) 2005 Karl Vogel, Giridhar Pemmasani
@@ -21526,9 +21534,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/win2lin_stubs.S linux-4.6-rc6-ndis
+#include "win2lin_stubs.h"
+
+#endif /* CONFIG_X86_64 */
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/winnt_types.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/winnt_types.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/winnt_types.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/winnt_types.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/winnt_types.h linux-4.12.4-3rd/3rdparty/ndiswrapper/winnt_types.h
--- linux-4.12.4/3rdparty/ndiswrapper/winnt_types.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/winnt_types.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,1701 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -23231,9 +23239,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/winnt_types.h linux-4.6-rc6-ndis/3
+
+
+#endif /* WINNT_TYPES_H */
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/workqueue.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/workqueue.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/workqueue.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/workqueue.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/workqueue.c linux-4.12.4-3rd/3rdparty/ndiswrapper/workqueue.c
--- linux-4.12.4/3rdparty/ndiswrapper/workqueue.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/workqueue.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,279 @@
+/*
+ * Copyright (C) 2006 Giridhar Pemmasani
@@ -23514,9 +23522,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/workqueue.c linux-4.6-rc6-ndis/3rd
+ wrap_destroy_wq_on(workq, i);
+ kfree(workq);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapmem.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapmem.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/wrapmem.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapmem.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/wrapmem.c linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapmem.c
--- linux-4.12.4/3rdparty/ndiswrapper/wrapmem.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapmem.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,366 @@
+/*
+ * Copyright (C) 2006 Giridhar Pemmasani
@@ -23884,9 +23892,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapmem.c linux-4.6-rc6-ndis/3rdpa
+#endif
+ return;
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapmem.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapmem.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/wrapmem.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapmem.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/wrapmem.h linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapmem.h
--- linux-4.12.4/3rdparty/ndiswrapper/wrapmem.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapmem.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2006 Giridhar Pemmasani
@@ -23985,9 +23993,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapmem.h linux-4.6-rc6-ndis/3rdpa
+#endif // ALLOC_DEBUG
+
+#endif
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapndis.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapndis.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/wrapndis.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapndis.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/wrapndis.c linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapndis.c
--- linux-4.12.4/3rdparty/ndiswrapper/wrapndis.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapndis.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,2186 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -24695,7 +24703,7 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapndis.c linux-4.6-rc6-ndis/3rdp
+ n = wnd->max_tx_packets;
+ n = mp_tx_packets(wnd, wnd->tx_ring_start, n);
+ if (n) {
+ wnd->net_dev->trans_start = jiffies;
+ netif_trans_update(wnd->net_dev);
+ wnd->tx_ring_start =
+ (wnd->tx_ring_start + n) % TX_RING_SIZE;
+ wnd->is_tx_ring_full = 0;
@@ -26175,9 +26183,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapndis.c linux-4.6-rc6-ndis/3rdp
+ if (wrapndis_wq)
+ destroy_workqueue(wrapndis_wq);
+}
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapndis.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapndis.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/wrapndis.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapndis.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/wrapndis.h linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapndis.h
--- linux-4.12.4/3rdparty/ndiswrapper/wrapndis.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapndis.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -26265,9 +26273,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapndis.h linux-4.6-rc6-ndis/3rdp
+struct iw_statistics *get_iw_stats(struct net_device *dev);
+
+#endif
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapper.c linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapper.c
--- linux-4.6-rc6/3rdparty/ndiswrapper/wrapper.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapper.c 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/wrapper.c linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapper.c
--- linux-4.12.4/3rdparty/ndiswrapper/wrapper.c 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapper.c 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -26380,9 +26388,9 @@ diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapper.c linux-4.6-rc6-ndis/3rdpa
+
+module_init(wrapper_init);
+module_exit(wrapper_exit);
diff -Nurp linux-4.6-rc6/3rdparty/ndiswrapper/wrapper.h linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapper.h
--- linux-4.6-rc6/3rdparty/ndiswrapper/wrapper.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.6-rc6-ndis/3rdparty/ndiswrapper/wrapper.h 2016-05-01 18:25:43.000000000 +0300
diff -Nurp linux-4.12.4/3rdparty/ndiswrapper/wrapper.h linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapper.h
--- linux-4.12.4/3rdparty/ndiswrapper/wrapper.h 1970-01-01 02:00:00.000000000 +0200
+++ linux-4.12.4-3rd/3rdparty/ndiswrapper/wrapper.h 2016-10-09 18:45:08.027226096 +0300
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
@@ -0,0 +1,43 @@
last_rx is gone, most drivers does not really need/use it anyway.
Also, include signal.h to fix implicit deklaration of function ”signal_pending”
Signed-off-by: Thomas Backlund <tmb@mageia.org>
--- linux/3rdparty/ndiswrapper/ndis.c.orig 2016-10-09 18:45:08.027226096 +0300
+++ linux/3rdparty/ndiswrapper/ndis.c 2017-08-04 00:09:49.264110609 +0300
@@ -2258,7 +2258,6 @@ wstdcall void NdisMIndicateReceivePacket
WARNING("empty packet ignored");
continue;
}
- wnd->net_dev->last_rx = jiffies;
/* get total number of bytes in packet */
NdisGetFirstBufferFromPacketSafe(packet, &buffer, &virt,
&length, &total_length,
@@ -2346,7 +2345,6 @@ wstdcall void EthRxIndicateHandler(struc
ERROR("nmb is NULL");
EXIT3(return);
}
- wnd->net_dev->last_rx = jiffies;
if (look_ahead_size < packet_size) {
struct ndis_packet *packet;
@@ -2461,7 +2459,6 @@ wstdcall void NdisMTransferDataComplete(
WARNING("illegal packet");
EXIT3(return);
}
- wnd->net_dev->last_rx = jiffies;
oob_data = NDIS_PACKET_OOB_DATA(packet);
skb_size = sizeof(oob_data->header) + oob_data->look_ahead_size +
bytes_txed;
--- linux/3rdparty/ndiswrapper/ntoskernel.h.orig 2017-08-03 23:52:29.015367906 +0300
+++ linux/3rdparty/ndiswrapper/ntoskernel.h 2017-08-04 00:17:41.334914691 +0300
@@ -33,6 +33,7 @@
#include <linux/ctype.h>
#include <linux/list.h>
#include <linux/sched.h>
+#include <linux/sched/signal.h>
#include <linux/usb.h>
#include <linux/spinlock.h>
#include <asm/mman.h>
@@ -0,0 +1,16 @@
__GFP_REPEAT is now __GFP_RETRY_MAYFAIL
Signed-off-by: Thomas Backlund <tmb@mageia.org>
--- linux/3rdparty/ndiswrapper/ntoskernel.h.orig 2017-10-15 01:11:56.041892449 +0300
+++ linux/3rdparty/ndiswrapper/ntoskernel.h 2017-10-15 01:11:06.159204294 +0300
@@ -122,7 +122,7 @@ static cpumask_t cpumasks[NR_CPUS];
#define PCI_DMA_ALLOC_COHERENT(pci_dev,size,dma_handle) \
dma_alloc_coherent(&pci_dev->dev,size,dma_handle, \
- GFP_KERNEL | __GFP_REPEAT)
+ GFP_KERNEL | __GFP_RETRY_MAYFAIL)
#define PCI_DMA_FREE_COHERENT(pci_dev,size,cpu_addr,dma_handle) \
dma_free_coherent(&pci_dev->dev,size,cpu_addr,dma_handle)
#define PCI_DMA_MAP_SINGLE(pci_dev,addr,size,direction) \
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,34 @@
From: Hans de Goede <hdegoede@redhat.com>
Subject: [PATCH 2/2] PCI: Add function 1 DMA alias quirk for Highpoint RocketRAID 644L
Date: Fri, 2 Mar 2018 11:36:33 +0100
The Highpoint RocketRAID 644L uses a Marvel 88SE9235 controller, as with
other Marvel controllers this needs a function 1 DMA alias quirk.
Note the RocketRAID 642L uses the same Marvel 88SE9235 controller and
already is listed with a function 1 DMA alias quirk.
Cc: stable@vger.kernel.org
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1534106
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/pci/quirks.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 8b14bd326d4a..46d47bd6ca1f 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3908,6 +3908,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9230,
quirk_dma_func1_alias);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TTI, 0x0642,
quirk_dma_func1_alias);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TTI, 0x0645,
+ quirk_dma_func1_alias);
/* https://bugs.gentoo.org/show_bug.cgi?id=497630 */
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_JMICRON,
PCI_DEVICE_ID_JMICRON_JMB388_ESD,
--
2.14.3
@@ -1,70 +0,0 @@
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,49 @@
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Subject: [PATCH] ACPI / EC: Restore polling during noirq suspend/resume phases
Date: Fri, 09 Feb 2018 22:55:28 +0100
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Commit 662591461c4b (ACPI / EC: Drop EC noirq hooks to fix a
regression) modified the ACPI EC driver so that it doesn't switch
over to busy polling mode during noirq stages of system suspend and
resume in an attempt to fix an issue resulting from that behavior.
However, that modification introduced a system resume regression on
Thinkpad X240, so make the EC driver switch over to the polling mode
during noirq stages of system suspend and resume again, which
effectively reverts the problematic commit.
Fixes: 662591461c4b (ACPI / EC: Drop EC noirq hooks to fix a regression)
Link: https://bugzilla.kernel.org/show_bug.cgi?id=197863
Reported-by: Markus Demleitner <m@tfiu.de>
Tested-by: Markus Demleitner <m@tfiu.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/acpi/ec.c | 6 ++++++
1 file changed, 6 insertions(+)
Index: linux-pm/drivers/acpi/ec.c
===================================================================
--- linux-pm.orig/drivers/acpi/ec.c
+++ linux-pm/drivers/acpi/ec.c
@@ -1927,6 +1927,9 @@ static int acpi_ec_suspend_noirq(struct
ec->reference_count >= 1)
acpi_set_gpe(NULL, ec->gpe, ACPI_GPE_DISABLE);
+ if (acpi_sleep_no_ec_events())
+ acpi_ec_enter_noirq(ec);
+
return 0;
}
@@ -1934,6 +1937,9 @@ static int acpi_ec_resume_noirq(struct d
{
struct acpi_ec *ec = acpi_driver_data(to_acpi_device(dev));
+ if (acpi_sleep_no_ec_events())
+ acpi_ec_leave_noirq(ec);
+
if (ec_no_wakeup && test_bit(EC_FLAGS_STARTED, &ec->flags) &&
ec->reference_count >= 1)
acpi_set_gpe(NULL, ec->gpe, ACPI_GPE_ENABLE);
@@ -0,0 +1,46 @@
From 863204cfdae98626a92535ac928ad79f4d6b74ff Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <arnd@arndb.de>
Date: Wed, 6 Dec 2017 14:17:17 +0100
Subject: [PATCH] ARM: omap2: hide omap3_save_secure_ram on non-OMAP3 builds
In configurations without CONFIG_OMAP3 but with secure RAM support,
we now run into a link failure:
arch/arm/mach-omap2/omap-secure.o: In function `omap3_save_secure_ram':
omap-secure.c:(.text+0x130): undefined reference to `save_secure_ram_context'
The omap3_save_secure_ram() function is only called from the OMAP34xx
power management code, so we can simply hide that function in the
appropriate #ifdef.
Fixes: d09220a887f7 ("ARM: OMAP2+: Fix SRAM virt to phys translation for save_secure_ram_context")
Acked-by: Tony Lindgren <tony@atomide.com>
Tested-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/arm/mach-omap2/omap-secure.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/mach-omap2/omap-secure.c b/arch/arm/mach-omap2/omap-secure.c
index 9ff92050053c..fa7f308c9027 100644
--- a/arch/arm/mach-omap2/omap-secure.c
+++ b/arch/arm/mach-omap2/omap-secure.c
@@ -73,6 +73,7 @@ phys_addr_t omap_secure_ram_mempool_base(void)
return omap_secure_memblock_base;
}
+#if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM)
u32 omap3_save_secure_ram(void __iomem *addr, int size)
{
u32 ret;
@@ -91,6 +92,7 @@ u32 omap3_save_secure_ram(void __iomem *addr, int size)
return ret;
}
+#endif
/**
* rx51_secure_dispatcher: Routine to dispatch secure PPA API calls
--
2.16.2
@@ -0,0 +1,37 @@
From: Hans de Goede <hdegoede@redhat.com>
Subject: [PATCH 1/2] ahci: Add PCI-id for the Highpoint Rocketraid 644L card
Date: Fri, 2 Mar 2018 11:36:32 +0100
Like the Highpoint Rocketraid 642L and cards using a Marvel 88SE9235
controller in general, this RAID card also supports AHCI mode and short
of a custom driver, this is the only way to make it work under Linux.
Note that even though the card is called to 644L, it has a product-id
of 0x0645.
Cc: stable@vger.kernel.org
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1534106
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/ata/ahci.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 355a95a83a34..1ff17799769d 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -550,7 +550,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
.driver_data = board_ahci_yes_fbs },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9230),
.driver_data = board_ahci_yes_fbs },
- { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0642),
+ { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0642), /* highpoint rocketraid 642L */
+ .driver_data = board_ahci_yes_fbs },
+ { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0645), /* highpoint rocketraid 644L */
.driver_data = board_ahci_yes_fbs },
/* Promise */
--
2.14.3
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,107 @@
From 614822f81f606e0064acdae11d9ec1efd3db4190 Mon Sep 17 00:00:00 2001
From: Luca Miccio <lucmiccio@gmail.com>
Date: Mon, 13 Nov 2017 07:34:08 +0100
Subject: [PATCH] block, bfq: add missing invocations of
bfqg_stats_update_io_add/remove
bfqg_stats_update_io_add and bfqg_stats_update_io_remove are to be
invoked, respectively, when an I/O request enters and when an I/O
request exits the scheduler. Unfortunately, bfq does not fully comply
with this scheme, because it does not invoke these functions for
requests that are inserted into or extracted from its priority
dispatch list. This commit fixes this mistake.
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 889a8549d97f..91703eba63f0 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -1359,7 +1359,6 @@ static void bfq_bfqq_handle_idle_busy_switch(struct bfq_data *bfqd,
bfqq->ttime.last_end_request +
bfqd->bfq_slice_idle * 3;
- bfqg_stats_update_io_add(bfqq_group(RQ_BFQQ(rq)), bfqq, rq->cmd_flags);
/*
* bfqq deserves to be weight-raised if:
@@ -1633,7 +1632,6 @@ static void bfq_remove_request(struct request_queue *q,
if (rq->cmd_flags & REQ_META)
bfqq->meta_pending--;
- bfqg_stats_update_io_remove(bfqq_group(bfqq), rq->cmd_flags);
}
static bool bfq_bio_merge(struct blk_mq_hw_ctx *hctx, struct bio *bio)
@@ -1746,6 +1744,7 @@ static void bfq_requests_merged(struct request_queue *q, struct request *rq,
bfqq->next_rq = rq;
bfq_remove_request(q, next);
+ bfqg_stats_update_io_remove(bfqq_group(bfqq), next->cmd_flags);
spin_unlock_irq(&bfqq->bfqd->lock);
end:
@@ -3700,6 +3699,9 @@ static struct request *bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
spin_lock_irq(&bfqd->lock);
rq = __bfq_dispatch_request(hctx);
+ if (rq && RQ_BFQQ(rq))
+ bfqg_stats_update_io_remove(bfqq_group(RQ_BFQQ(rq)),
+ rq->cmd_flags);
spin_unlock_irq(&bfqd->lock);
return rq;
@@ -4224,6 +4226,7 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
{
struct request_queue *q = hctx->queue;
struct bfq_data *bfqd = q->elevator->elevator_data;
+ struct bfq_queue *bfqq = RQ_BFQQ(rq);
spin_lock_irq(&bfqd->lock);
if (blk_mq_sched_try_insert_merge(q, rq)) {
@@ -4243,6 +4246,12 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
list_add_tail(&rq->queuelist, &bfqd->dispatch);
} else {
__bfq_insert_request(bfqd, rq);
+ /*
+ * Update bfqq, because, if a queue merge has occurred
+ * in __bfq_insert_request, then rq has been
+ * redirected into a new queue.
+ */
+ bfqq = RQ_BFQQ(rq);
if (rq_mergeable(rq)) {
elv_rqhash_add(q, rq);
@@ -4251,6 +4260,9 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
}
}
+ if (bfqq)
+ bfqg_stats_update_io_add(bfqq_group(bfqq), bfqq, rq->cmd_flags);
+
spin_unlock_irq(&bfqd->lock);
}
@@ -4428,8 +4440,11 @@ static void bfq_finish_request(struct request *rq)
* lock is held.
*/
- if (!RB_EMPTY_NODE(&rq->rb_node))
+ if (!RB_EMPTY_NODE(&rq->rb_node)) {
bfq_remove_request(rq->q, rq);
+ bfqg_stats_update_io_remove(bfqq_group(bfqq),
+ rq->cmd_flags);
+ }
bfq_put_rq_priv_body(bfqq);
}
--
2.15.1
@@ -0,0 +1,41 @@
From 05e90283561648301e30232fe0c91bd345ceba03 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Wed, 20 Dec 2017 12:38:31 +0100
Subject: [PATCH] block, bfq: add missing rq_pos_tree update on rq removal
If two processes do I/O close to each other, then BFQ merges the
bfq_queues associated with these processes, to get a more sequential
I/O, and thus a higher throughput. In this respect, to detect whether
two processes are doing I/O close to each other, BFQ keeps a list of
the head-of-line I/O requests of all active bfq_queues. The list is
ordered by initial sectors, and implemented through a red-black tree
(rq_pos_tree).
Unfortunately, the update of the rq_pos_tree was incomplete, because
the tree was not updated on the removal of the head-of-line I/O
request of a bfq_queue, in case the queue did not remain empty. This
commit adds the missing update.
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 0f48583b9380..fa395a260a23 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -1627,6 +1627,8 @@ static void bfq_remove_request(struct request_queue *q,
rb_erase(&bfqq->pos_node, bfqq->pos_root);
bfqq->pos_root = NULL;
}
+ } else {
+ bfq_pos_tree_add_move(bfqd, bfqq);
}
if (rq->cmd_flags & REQ_META)
--
2.15.1
@@ -0,0 +1,224 @@
From a7877390614770965a6925dfed79cbd3eeeb61e0 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Wed, 7 Feb 2018 22:19:20 +0100
Subject: [PATCH] block, bfq: add requeue-request hook
Commit 'a6a252e64914 ("blk-mq-sched: decide how to handle flush rq via
RQF_FLUSH_SEQ")' makes all non-flush re-prepared requests for a device
be re-inserted into the active I/O scheduler for that device. As a
consequence, I/O schedulers may get the same request inserted again,
even several times, without a finish_request invoked on that request
before each re-insertion.
This fact is the cause of the failure reported in [1]. For an I/O
scheduler, every re-insertion of the same re-prepared request is
equivalent to the insertion of a new request. For schedulers like
mq-deadline or kyber, this fact causes no harm. In contrast, it
confuses a stateful scheduler like BFQ, which keeps state for an I/O
request, until the finish_request hook is invoked on the request. In
particular, BFQ may get stuck, waiting forever for the number of
request dispatches, of the same request, to be balanced by an equal
number of request completions (while there will be one completion for
that request). In this state, BFQ may refuse to serve I/O requests
from other bfq_queues. The hang reported in [1] then follows.
However, the above re-prepared requests undergo a requeue, thus the
requeue_request hook of the active elevator is invoked for these
requests, if set. This commit then addresses the above issue by
properly implementing the hook requeue_request in BFQ.
[1] https://marc.info/?l=linux-block&m=151211117608676
Reported-by: Ivan Kozik <ivan@ludios.org>
Reported-by: Alban Browaeys <alban.browaeys@gmail.com>
Tested-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Serena Ziviani <ziviani.serena@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 107 ++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 82 insertions(+), 25 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 47e6ec7427c4..aeca22d91101 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -3823,24 +3823,26 @@ static struct request *__bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
}
/*
- * We exploit the bfq_finish_request hook to decrement
- * rq_in_driver, but bfq_finish_request will not be
- * invoked on this request. So, to avoid unbalance,
- * just start this request, without incrementing
- * rq_in_driver. As a negative consequence,
- * rq_in_driver is deceptively lower than it should be
- * while this request is in service. This may cause
- * bfq_schedule_dispatch to be invoked uselessly.
+ * We exploit the bfq_finish_requeue_request hook to
+ * decrement rq_in_driver, but
+ * bfq_finish_requeue_request will not be invoked on
+ * this request. So, to avoid unbalance, just start
+ * this request, without incrementing rq_in_driver. As
+ * a negative consequence, rq_in_driver is deceptively
+ * lower than it should be while this request is in
+ * service. This may cause bfq_schedule_dispatch to be
+ * invoked uselessly.
*
* As for implementing an exact solution, the
- * bfq_finish_request hook, if defined, is probably
- * invoked also on this request. So, by exploiting
- * this hook, we could 1) increment rq_in_driver here,
- * and 2) decrement it in bfq_finish_request. Such a
- * solution would let the value of the counter be
- * always accurate, but it would entail using an extra
- * interface function. This cost seems higher than the
- * benefit, being the frequency of non-elevator-private
+ * bfq_finish_requeue_request hook, if defined, is
+ * probably invoked also on this request. So, by
+ * exploiting this hook, we could 1) increment
+ * rq_in_driver here, and 2) decrement it in
+ * bfq_finish_requeue_request. Such a solution would
+ * let the value of the counter be always accurate,
+ * but it would entail using an extra interface
+ * function. This cost seems higher than the benefit,
+ * being the frequency of non-elevator-private
* requests very low.
*/
goto start_rq;
@@ -4515,6 +4517,8 @@ static inline void bfq_update_insert_stats(struct request_queue *q,
unsigned int cmd_flags) {}
#endif
+static void bfq_prepare_request(struct request *rq, struct bio *bio);
+
static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
bool at_head)
{
@@ -4541,6 +4545,18 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
else
list_add_tail(&rq->queuelist, &bfqd->dispatch);
} else {
+ if (WARN_ON_ONCE(!bfqq)) {
+ /*
+ * This should never happen. Most likely rq is
+ * a requeued regular request, being
+ * re-inserted without being first
+ * re-prepared. Do a prepare, to avoid
+ * failure.
+ */
+ bfq_prepare_request(rq, rq->bio);
+ bfqq = RQ_BFQQ(rq);
+ }
+
idle_timer_disabled = __bfq_insert_request(bfqd, rq);
/*
* Update bfqq, because, if a queue merge has occurred
@@ -4697,22 +4713,44 @@ static void bfq_completed_request(struct bfq_queue *bfqq, struct bfq_data *bfqd)
bfq_schedule_dispatch(bfqd);
}
-static void bfq_finish_request_body(struct bfq_queue *bfqq)
+static void bfq_finish_requeue_request_body(struct bfq_queue *bfqq)
{
bfqq->allocated--;
bfq_put_queue(bfqq);
}
-static void bfq_finish_request(struct request *rq)
+/*
+ * Handle either a requeue or a finish for rq. The things to do are
+ * the same in both cases: all references to rq are to be dropped. In
+ * particular, rq is considered completed from the point of view of
+ * the scheduler.
+ */
+static void bfq_finish_requeue_request(struct request *rq)
{
- struct bfq_queue *bfqq;
+ struct bfq_queue *bfqq = RQ_BFQQ(rq);
struct bfq_data *bfqd;
- if (!rq->elv.icq)
+ /*
+ * Requeue and finish hooks are invoked in blk-mq without
+ * checking whether the involved request is actually still
+ * referenced in the scheduler. To handle this fact, the
+ * following two checks make this function exit in case of
+ * spurious invocations, for which there is nothing to do.
+ *
+ * First, check whether rq has nothing to do with an elevator.
+ */
+ if (unlikely(!(rq->rq_flags & RQF_ELVPRIV)))
+ return;
+
+ /*
+ * rq either is not associated with any icq, or is an already
+ * requeued request that has not (yet) been re-inserted into
+ * a bfq_queue.
+ */
+ if (!rq->elv.icq || !bfqq)
return;
- bfqq = RQ_BFQQ(rq);
bfqd = bfqq->bfqd;
if (rq->rq_flags & RQF_STARTED)
@@ -4727,13 +4765,14 @@ static void bfq_finish_request(struct request *rq)
spin_lock_irqsave(&bfqd->lock, flags);
bfq_completed_request(bfqq, bfqd);
- bfq_finish_request_body(bfqq);
+ bfq_finish_requeue_request_body(bfqq);
spin_unlock_irqrestore(&bfqd->lock, flags);
} else {
/*
* Request rq may be still/already in the scheduler,
- * in which case we need to remove it. And we cannot
+ * in which case we need to remove it (this should
+ * never happen in case of requeue). And we cannot
* defer such a check and removal, to avoid
* inconsistencies in the time interval from the end
* of this function to the start of the deferred work.
@@ -4748,9 +4787,26 @@ static void bfq_finish_request(struct request *rq)
bfqg_stats_update_io_remove(bfqq_group(bfqq),
rq->cmd_flags);
}
- bfq_finish_request_body(bfqq);
+ bfq_finish_requeue_request_body(bfqq);
}
+ /*
+ * Reset private fields. In case of a requeue, this allows
+ * this function to correctly do nothing if it is spuriously
+ * invoked again on this same request (see the check at the
+ * beginning of the function). Probably, a better general
+ * design would be to prevent blk-mq from invoking the requeue
+ * or finish hooks of an elevator, for a request that is not
+ * referred by that elevator.
+ *
+ * Resetting the following fields would break the
+ * request-insertion logic if rq is re-inserted into a bfq
+ * internal queue, without a re-preparation. Here we assume
+ * that re-insertions of requeued requests, without
+ * re-preparation, can happen only for pass_through or at_head
+ * requests (which are not re-inserted into bfq internal
+ * queues).
+ */
rq->elv.priv[0] = NULL;
rq->elv.priv[1] = NULL;
}
@@ -5426,7 +5482,8 @@ static struct elevator_type iosched_bfq_mq = {
.ops.mq = {
.limit_depth = bfq_limit_depth,
.prepare_request = bfq_prepare_request,
- .finish_request = bfq_finish_request,
+ .requeue_request = bfq_finish_requeue_request,
+ .finish_request = bfq_finish_requeue_request,
.exit_icq = bfq_exit_icq,
.insert_requests = bfq_insert_requests,
.dispatch_request = bfq_dispatch_request,
--
2.16.1
@@ -0,0 +1,163 @@
From 3e2bdd6dff239afd8386e8758eee69ad61e5a3d6 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Thu, 21 Sep 2017 11:04:01 +0200
Subject: [PATCH] block, bfq: check and switch back to interactive wr also on
queue split
As already explained in the message of commit "block, bfq: fix
wrong init of saved start time for weight raising", if a soft
real-time weight-raising period happens to be nested in a larger
interactive weight-raising period, then BFQ restores the interactive
weight raising at the end of the soft real-time weight raising. In
particular, BFQ checks whether the latter has ended only on request
dispatches.
Unfortunately, the above scheme fails to restore interactive weight
raising in the following corner case: if a bfq_queue, say Q,
1) Is merged with another bfq_queue while it is in a nested soft
real-time weight-raising period. The weight-raising state of Q is
then saved, and not considered any longer until a split occurs.
2) Is split from the other bfq_queue(s) at a time instant when its
soft real-time weight raising is already finished.
On the split, while resuming the previous, soft real-time
weight-raised state of the bfq_queue Q, BFQ checks whether the
current soft real-time weight-raising period is actually over. If so,
BFQ switches weight raising off for Q, *without* checking whether the
soft real-time period was actually nested in a non-yet-finished
interactive weight-raising period.
This commit addresses this issue by adding the above missing check in
bfq_queue splits, and restoring interactive weight raising if needed.
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Tested-by: Angelo Ruocco <angeloruocco90@gmail.com>
Tested-by: Mirko Montanari <mirkomontanari91@gmail.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 87 ++++++++++++++++++++++++++++++-----------------------
1 file changed, 49 insertions(+), 38 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index c25955c25e03..33b63bc4a64b 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -724,6 +724,44 @@ static void bfq_updated_next_req(struct bfq_data *bfqd,
}
}
+static unsigned int bfq_wr_duration(struct bfq_data *bfqd)
+{
+ u64 dur;
+
+ if (bfqd->bfq_wr_max_time > 0)
+ return bfqd->bfq_wr_max_time;
+
+ dur = bfqd->RT_prod;
+ do_div(dur, bfqd->peak_rate);
+
+ /*
+ * Limit duration between 3 and 13 seconds. Tests show that
+ * higher values than 13 seconds often yield the opposite of
+ * the desired result, i.e., worsen responsiveness by letting
+ * non-interactive and non-soft-real-time applications
+ * preserve weight raising for a too long time interval.
+ *
+ * On the other end, lower values than 3 seconds make it
+ * difficult for most interactive tasks to complete their jobs
+ * before weight-raising finishes.
+ */
+ if (dur > msecs_to_jiffies(13000))
+ dur = msecs_to_jiffies(13000);
+ else if (dur < msecs_to_jiffies(3000))
+ dur = msecs_to_jiffies(3000);
+
+ return dur;
+}
+
+/* switch back from soft real-time to interactive weight raising */
+static void switch_back_to_interactive_wr(struct bfq_queue *bfqq,
+ struct bfq_data *bfqd)
+{
+ bfqq->wr_coeff = bfqd->bfq_wr_coeff;
+ bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
+ bfqq->last_wr_start_finish = bfqq->wr_start_at_switch_to_srt;
+}
+
static void
bfq_bfqq_resume_state(struct bfq_queue *bfqq, struct bfq_data *bfqd,
struct bfq_io_cq *bic, bool bfq_already_existing)
@@ -750,10 +788,16 @@ bfq_bfqq_resume_state(struct bfq_queue *bfqq, struct bfq_data *bfqd,
if (bfqq->wr_coeff > 1 && (bfq_bfqq_in_large_burst(bfqq) ||
time_is_before_jiffies(bfqq->last_wr_start_finish +
bfqq->wr_cur_max_time))) {
- bfq_log_bfqq(bfqq->bfqd, bfqq,
- "resume state: switching off wr");
-
- bfqq->wr_coeff = 1;
+ if (bfqq->wr_cur_max_time == bfqd->bfq_wr_rt_max_time &&
+ !bfq_bfqq_in_large_burst(bfqq) &&
+ time_is_after_eq_jiffies(bfqq->wr_start_at_switch_to_srt +
+ bfq_wr_duration(bfqd))) {
+ switch_back_to_interactive_wr(bfqq, bfqd);
+ } else {
+ bfqq->wr_coeff = 1;
+ bfq_log_bfqq(bfqq->bfqd, bfqq,
+ "resume state: switching off wr");
+ }
}
/* make sure weight will be updated, however we got here */
@@ -1173,35 +1217,6 @@ static bool bfq_bfqq_update_budg_for_activation(struct bfq_data *bfqd,
return wr_or_deserves_wr;
}
-static unsigned int bfq_wr_duration(struct bfq_data *bfqd)
-{
- u64 dur;
-
- if (bfqd->bfq_wr_max_time > 0)
- return bfqd->bfq_wr_max_time;
-
- dur = bfqd->RT_prod;
- do_div(dur, bfqd->peak_rate);
-
- /*
- * Limit duration between 3 and 13 seconds. Tests show that
- * higher values than 13 seconds often yield the opposite of
- * the desired result, i.e., worsen responsiveness by letting
- * non-interactive and non-soft-real-time applications
- * preserve weight raising for a too long time interval.
- *
- * On the other end, lower values than 3 seconds make it
- * difficult for most interactive tasks to complete their jobs
- * before weight-raising finishes.
- */
- if (dur > msecs_to_jiffies(13000))
- dur = msecs_to_jiffies(13000);
- else if (dur < msecs_to_jiffies(3000))
- dur = msecs_to_jiffies(3000);
-
- return dur;
-}
-
/*
* Return the farthest future time instant according to jiffies
* macros.
@@ -3501,11 +3516,7 @@ static void bfq_update_wr_data(struct bfq_data *bfqd, struct bfq_queue *bfqq)
bfq_wr_duration(bfqd)))
bfq_bfqq_end_wr(bfqq);
else {
- /* switch back to interactive wr */
- bfqq->wr_coeff = bfqd->bfq_wr_coeff;
- bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
- bfqq->last_wr_start_finish =
- bfqq->wr_start_at_switch_to_srt;
+ switch_back_to_interactive_wr(bfqq, bfqd);
bfqq->entity.prio_changed = 1;
}
}
--
2.15.1
@@ -0,0 +1,48 @@
From 1be6e8a964ee9aa8d4daac523ce29e5f486dd756 Mon Sep 17 00:00:00 2001
From: Angelo Ruocco <angeloruocco90@gmail.com>
Date: Wed, 20 Dec 2017 12:38:32 +0100
Subject: [PATCH] block, bfq: check low_latency flag in bfq_bfqq_save_state()
A just-created bfq_queue will certainly be deemed as interactive on
the arrival of its first I/O request, if the low_latency flag is
set. Yet, if the queue is merged with another queue on the arrival of
its first I/O request, it will not have the chance to be flagged as
interactive. Nevertheless, if the queue is then split soon enough, it
has to be flagged as interactive after the split.
To handle this early-merge scenario correctly, BFQ saves the state of
the queue, on the merge, as if the latter had already been deemed
interactive. So, if the queue is split soon, it will get
weight-raised, because the previous state of the queue is resumed on
the split.
Unfortunately, in the act of saving the state of the newly-created
queue, BFQ doesn't check whether the low_latency flag is set, and this
causes early-merged queues to be then weight-raised, on queue splits,
even if low_latency is off. This commit addresses this problem by
adding the missing check.
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index fa395a260a23..2cf395daee80 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -2064,7 +2064,8 @@ static void bfq_bfqq_save_state(struct bfq_queue *bfqq)
bic->saved_in_large_burst = bfq_bfqq_in_large_burst(bfqq);
bic->was_in_burst_list = !hlist_unhashed(&bfqq->burst_list_node);
if (unlikely(bfq_bfqq_just_created(bfqq) &&
- !bfq_bfqq_in_large_burst(bfqq))) {
+ !bfq_bfqq_in_large_burst(bfqq) &&
+ bfqq->bfqd->low_latency)) {
/*
* bfqq being merged right after being created: bfqq
* would have deserved interactive weight raising, but
--
2.15.1
@@ -0,0 +1,206 @@
From a34b024448eb71b0e51ad011fa1862236e366034 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Fri, 15 Dec 2017 07:23:12 +0100
Subject: [PATCH] block, bfq: consider also past I/O in soft real-time
detection
BFQ privileges the I/O of soft real-time applications, such as video
players, to guarantee to these application a high bandwidth and a low
latency. In this respect, it is not easy to correctly detect when an
application is soft real-time. A particularly nasty false positive is
that of an I/O-bound application that occasionally happens to meet all
requirements to be deemed as soft real-time. After being detected as
soft real-time, such an application monopolizes the device. Fortunately,
BFQ will realize soon that the application is actually not soft
real-time and suspend every privilege. Yet, the application may happen
again to be wrongly detected as soft real-time, and so on.
As highlighted by our tests, this problem causes BFQ to occasionally
fail to guarantee a high responsiveness, in the presence of heavy
background I/O workloads. The reason is that the background workload
happens to be detected as soft real-time, more or less frequently,
during the execution of the interactive task under test. To give an
idea, because of this problem, Libreoffice Writer occasionally takes 8
seconds, instead of 3, to start up, if there are sequential reads and
writes in the background, on a Kingston SSDNow V300.
This commit addresses this issue by leveraging the following facts.
The reason why some applications are detected as soft real-time despite
all BFQ checks to avoid false positives, is simply that, during high
CPU or storage-device load, I/O-bound applications may happen to do
I/O slowly enough to meet all soft real-time requirements, and pass
all BFQ extra checks. Yet, this happens only for limited time periods:
slow-speed time intervals are usually interspersed between other time
intervals during which these applications do I/O at a very high speed.
To exploit these facts, this commit introduces a little change, in the
detection of soft real-time behavior, to systematically consider also
the recent past: the higher the speed was in the recent past, the
later next I/O should arrive for the application to be considered as
soft real-time. At the beginning of a slow-speed interval, the minimum
arrival time allowed for the next I/O usually happens to still be so
high, to fall *after* the end of the slow-speed period itself. As a
consequence, the application does not risk to be deemed as soft
real-time during the slow-speed interval. Then, during the next
high-speed interval, the application cannot, evidently, be deemed as
soft real-time (exactly because of its speed), and so on.
This extra filtering proved to be rather effective: in the above test,
the frequency of false positives became so low that the start-up time
was 3 seconds in all iterations (apart from occasional outliers,
caused by page-cache-management issues, which are out of the scope of
this commit, and cannot be solved by an I/O scheduler).
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 115 ++++++++++++++++++++++++++++++++++++----------------
1 file changed, 81 insertions(+), 34 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 9625550b2f85..e33c5c4c9856 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -2940,45 +2940,87 @@ static bool bfq_bfqq_is_slow(struct bfq_data *bfqd, struct bfq_queue *bfqq,
* whereas soft_rt_next_start is set to infinity for applications that do
* not.
*
- * Unfortunately, even a greedy application may happen to behave in an
- * isochronous way if the CPU load is high. In fact, the application may
- * stop issuing requests while the CPUs are busy serving other processes,
- * then restart, then stop again for a while, and so on. In addition, if
- * the disk achieves a low enough throughput with the request pattern
- * issued by the application (e.g., because the request pattern is random
- * and/or the device is slow), then the application may meet the above
- * bandwidth requirement too. To prevent such a greedy application to be
- * deemed as soft real-time, a further rule is used in the computation of
- * soft_rt_next_start: soft_rt_next_start must be higher than the current
- * time plus the maximum time for which the arrival of a request is waited
- * for when a sync queue becomes idle, namely bfqd->bfq_slice_idle.
- * This filters out greedy applications, as the latter issue instead their
- * next request as soon as possible after the last one has been completed
- * (in contrast, when a batch of requests is completed, a soft real-time
- * application spends some time processing data).
+ * Unfortunately, even a greedy (i.e., I/O-bound) application may
+ * happen to meet, occasionally or systematically, both the above
+ * bandwidth and isochrony requirements. This may happen at least in
+ * the following circumstances. First, if the CPU load is high. The
+ * application may stop issuing requests while the CPUs are busy
+ * serving other processes, then restart, then stop again for a while,
+ * and so on. The other circumstances are related to the storage
+ * device: the storage device is highly loaded or reaches a low-enough
+ * throughput with the I/O of the application (e.g., because the I/O
+ * is random and/or the device is slow). In all these cases, the
+ * I/O of the application may be simply slowed down enough to meet
+ * the bandwidth and isochrony requirements. To reduce the probability
+ * that greedy applications are deemed as soft real-time in these
+ * corner cases, a further rule is used in the computation of
+ * soft_rt_next_start: the return value of this function is forced to
+ * be higher than the maximum between the following two quantities.
*
- * Unfortunately, the last filter may easily generate false positives if
- * only bfqd->bfq_slice_idle is used as a reference time interval and one
- * or both the following cases occur:
- * 1) HZ is so low that the duration of a jiffy is comparable to or higher
- * than bfqd->bfq_slice_idle. This happens, e.g., on slow devices with
- * HZ=100.
+ * (a) Current time plus: (1) the maximum time for which the arrival
+ * of a request is waited for when a sync queue becomes idle,
+ * namely bfqd->bfq_slice_idle, and (2) a few extra jiffies. We
+ * postpone for a moment the reason for adding a few extra
+ * jiffies; we get back to it after next item (b). Lower-bounding
+ * the return value of this function with the current time plus
+ * bfqd->bfq_slice_idle tends to filter out greedy applications,
+ * because the latter issue their next request as soon as possible
+ * after the last one has been completed. In contrast, a soft
+ * real-time application spends some time processing data, after a
+ * batch of its requests has been completed.
+ *
+ * (b) Current value of bfqq->soft_rt_next_start. As pointed out
+ * above, greedy applications may happen to meet both the
+ * bandwidth and isochrony requirements under heavy CPU or
+ * storage-device load. In more detail, in these scenarios, these
+ * applications happen, only for limited time periods, to do I/O
+ * slowly enough to meet all the requirements described so far,
+ * including the filtering in above item (a). These slow-speed
+ * time intervals are usually interspersed between other time
+ * intervals during which these applications do I/O at a very high
+ * speed. Fortunately, exactly because of the high speed of the
+ * I/O in the high-speed intervals, the values returned by this
+ * function happen to be so high, near the end of any such
+ * high-speed interval, to be likely to fall *after* the end of
+ * the low-speed time interval that follows. These high values are
+ * stored in bfqq->soft_rt_next_start after each invocation of
+ * this function. As a consequence, if the last value of
+ * bfqq->soft_rt_next_start is constantly used to lower-bound the
+ * next value that this function may return, then, from the very
+ * beginning of a low-speed interval, bfqq->soft_rt_next_start is
+ * likely to be constantly kept so high that any I/O request
+ * issued during the low-speed interval is considered as arriving
+ * to soon for the application to be deemed as soft
+ * real-time. Then, in the high-speed interval that follows, the
+ * application will not be deemed as soft real-time, just because
+ * it will do I/O at a high speed. And so on.
+ *
+ * Getting back to the filtering in item (a), in the following two
+ * cases this filtering might be easily passed by a greedy
+ * application, if the reference quantity was just
+ * bfqd->bfq_slice_idle:
+ * 1) HZ is so low that the duration of a jiffy is comparable to or
+ * higher than bfqd->bfq_slice_idle. This happens, e.g., on slow
+ * devices with HZ=100. The time granularity may be so coarse
+ * that the approximation, in jiffies, of bfqd->bfq_slice_idle
+ * is rather lower than the exact value.
* 2) jiffies, instead of increasing at a constant rate, may stop increasing
* for a while, then suddenly 'jump' by several units to recover the lost
* increments. This seems to happen, e.g., inside virtual machines.
- * To address this issue, we do not use as a reference time interval just
- * bfqd->bfq_slice_idle, but bfqd->bfq_slice_idle plus a few jiffies. In
- * particular we add the minimum number of jiffies for which the filter
- * seems to be quite precise also in embedded systems and KVM/QEMU virtual
- * machines.
+ * To address this issue, in the filtering in (a) we do not use as a
+ * reference time interval just bfqd->bfq_slice_idle, but
+ * bfqd->bfq_slice_idle plus a few jiffies. In particular, we add the
+ * minimum number of jiffies for which the filter seems to be quite
+ * precise also in embedded systems and KVM/QEMU virtual machines.
*/
static unsigned long bfq_bfqq_softrt_next_start(struct bfq_data *bfqd,
struct bfq_queue *bfqq)
{
- return max(bfqq->last_idle_bklogged +
- HZ * bfqq->service_from_backlogged /
- bfqd->bfq_wr_max_softrt_rate,
- jiffies + nsecs_to_jiffies(bfqq->bfqd->bfq_slice_idle) + 4);
+ return max3(bfqq->soft_rt_next_start,
+ bfqq->last_idle_bklogged +
+ HZ * bfqq->service_from_backlogged /
+ bfqd->bfq_wr_max_softrt_rate,
+ jiffies + nsecs_to_jiffies(bfqq->bfqd->bfq_slice_idle) + 4);
}
/**
@@ -4014,10 +4056,15 @@ static void bfq_init_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
bfqq->split_time = bfq_smallest_from_now();
/*
- * Set to the value for which bfqq will not be deemed as
- * soft rt when it becomes backlogged.
+ * To not forget the possibly high bandwidth consumed by a
+ * process/queue in the recent past,
+ * bfq_bfqq_softrt_next_start() returns a value at least equal
+ * to the current value of bfqq->soft_rt_next_start (see
+ * comments on bfq_bfqq_softrt_next_start). Set
+ * soft_rt_next_start to now, to mean that bfqq has consumed
+ * no bandwidth so far.
*/
- bfqq->soft_rt_next_start = bfq_greatest_from_now();
+ bfqq->soft_rt_next_start = jiffies;
/* first request is almost certainly seeky */
bfqq->seek_history = 1;
--
2.15.1
@@ -0,0 +1,82 @@
From 7cb04004fa371a626c1a5ebe6d977f70285759ed Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Thu, 21 Sep 2017 11:04:03 +0200
Subject: [PATCH] block, bfq: decrease burst size when queues in burst exit
If many queues belonging to the same group happen to be created
shortly after each other, then the concurrent processes associated
with these queues have typically a common goal, and they get it done
as soon as possible if not hampered by device idling. Examples are
processes spawned by git grep, or by systemd during boot. As for
device idling, this mechanism is currently necessary for weight
raising to succeed in its goal: privileging I/O. In view of these
facts, BFQ does not provide the above queues with either weight
raising or device idling.
On the other hand, a burst of queue creations may be caused also by
the start-up of a complex application. In this case, these queues need
usually to be served one after the other, and as quickly as possible,
to maximise responsiveness. Therefore, in this case the best strategy
is to weight-raise all the queues created during the burst, i.e., the
exact opposite of the strategy for the above case.
To distinguish between the two cases, BFQ uses an empirical burst-size
threshold, found through extensive tests and monitoring of daily
usage. Only large bursts, i.e., burst with a size above this
threshold, are considered as generated by a high number of parallel
processes. In this respect, upstart-based boot proved to be rather
hard to detect as generating a large burst of queue creations, because
with upstart most of the queues created in a burst exit *before* the
next queues in the same burst are created. To address this issue, I
changed the burst-detection mechanism so as to not decrease the size
of the current burst even if one of the queues in the burst is
eliminated.
Unfortunately, this missing decrease causes false positives on very
fast systems: on the start-up of a complex application, such as
libreoffice writer, so many queues are created, served and exited
shortly after each other, that a large burst of queue creations is
wrongly detected as occurring. These false positives just disappear if
the size of a burst is decreased when one of the queues in the burst
exits. This commit restores the missing burst-size decrease, relying
of the fact that upstart is apparently unlikely to be used on systems
running this and future versions of the kernel.
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Mauro Andreolini <mauro.andreolini@unimore.it>
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Tested-by: Mirko Montanari <mirkomontanari91@gmail.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 115747fe43c8..70f9177c4f5b 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -3725,16 +3725,10 @@ void bfq_put_queue(struct bfq_queue *bfqq)
if (bfqq->ref)
return;
- if (bfq_bfqq_sync(bfqq))
- /*
- * The fact that this queue is being destroyed does not
- * invalidate the fact that this queue may have been
- * activated during the current burst. As a consequence,
- * although the queue does not exist anymore, and hence
- * needs to be removed from the burst list if there,
- * the burst size has not to be decremented.
- */
+ if (bfq_bfqq_sync(bfqq) && !hlist_unhashed(&bfqq->burst_list_node)) {
hlist_del_init(&bfqq->burst_list_node);
+ bfqq->bfqd->burst_size--;
+ }
kmem_cache_free(bfq_pool, bfqq);
#ifdef CONFIG_BFQ_GROUP_IOSCHED
--
2.15.1
@@ -0,0 +1,91 @@
From 8993d445df388e3541f48920a2353cfc904b220a Mon Sep 17 00:00:00 2001
From: Chiara Bruschi <bruschi.chiara@outlook.it>
Date: Mon, 18 Dec 2017 16:21:59 +0000
Subject: [PATCH] block, bfq: fix occurrences of request finish method's old
name
Commit '7b9e93616399' ("blk-mq-sched: unify request finished methods")
changed the old name of current bfq_finish_request method, but left it
unchanged elsewhere in the code (related comments, part of function
name bfq_put_rq_priv_body).
This commit fixes all occurrences of the old name of this method by
changing them into the current name.
Fixes: 7b9e93616399 ("blk-mq-sched: unify request finished methods")
Reviewed-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Federico Motta <federico@willer.it>
Signed-off-by: Chiara Bruschi <bruschi.chiara@outlook.it>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 5e6f837f663e..f352b1677143 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -3684,8 +3684,8 @@ static struct request *__bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
}
/*
- * We exploit the put_rq_private hook to decrement
- * rq_in_driver, but put_rq_private will not be
+ * We exploit the bfq_finish_request hook to decrement
+ * rq_in_driver, but bfq_finish_request will not be
* invoked on this request. So, to avoid unbalance,
* just start this request, without incrementing
* rq_in_driver. As a negative consequence,
@@ -3694,14 +3694,14 @@ static struct request *__bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
* bfq_schedule_dispatch to be invoked uselessly.
*
* As for implementing an exact solution, the
- * put_request hook, if defined, is probably invoked
- * also on this request. So, by exploiting this hook,
- * we could 1) increment rq_in_driver here, and 2)
- * decrement it in put_request. Such a solution would
- * let the value of the counter be always accurate,
- * but it would entail using an extra interface
- * function. This cost seems higher than the benefit,
- * being the frequency of non-elevator-private
+ * bfq_finish_request hook, if defined, is probably
+ * invoked also on this request. So, by exploiting
+ * this hook, we could 1) increment rq_in_driver here,
+ * and 2) decrement it in bfq_finish_request. Such a
+ * solution would let the value of the counter be
+ * always accurate, but it would entail using an extra
+ * interface function. This cost seems higher than the
+ * benefit, being the frequency of non-elevator-private
* requests very low.
*/
goto start_rq;
@@ -4558,7 +4558,7 @@ static void bfq_completed_request(struct bfq_queue *bfqq, struct bfq_data *bfqd)
bfq_schedule_dispatch(bfqd);
}
-static void bfq_put_rq_priv_body(struct bfq_queue *bfqq)
+static void bfq_finish_request_body(struct bfq_queue *bfqq)
{
bfqq->allocated--;
@@ -4588,7 +4588,7 @@ static void bfq_finish_request(struct request *rq)
spin_lock_irqsave(&bfqd->lock, flags);
bfq_completed_request(bfqq, bfqd);
- bfq_put_rq_priv_body(bfqq);
+ bfq_finish_request_body(bfqq);
spin_unlock_irqrestore(&bfqd->lock, flags);
} else {
@@ -4609,7 +4609,7 @@ static void bfq_finish_request(struct request *rq)
bfqg_stats_update_io_remove(bfqq_group(bfqq),
rq->cmd_flags);
}
- bfq_put_rq_priv_body(bfqq);
+ bfq_finish_request_body(bfqq);
}
rq->elv.priv[0] = NULL;
--
2.16.1
@@ -0,0 +1,141 @@
From 99fead8d38e5302b1be9403d4de815ce9174a3df Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Mon, 9 Oct 2017 13:11:23 +0200
Subject: [PATCH] block, bfq: fix unbalanced decrements of burst size
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The commit "block, bfq: decrease burst size when queues in burst
exit" introduced the decrement of burst_size on the removal of a
bfq_queue from the burst list. Unfortunately, this decrement can
happen to be performed even when burst size is already equal to 0,
because of unbalanced decrements. A description follows of the cause
of these unbalanced decrements, namely a wrong assumption, and of the
way how this wrong assumption leads to unbalanced decrements.
The wrong assumption is that a bfq_queue can exit only if the process
associated with the bfq_queue has exited. This is false, because a
bfq_queue, say Q, may exit also as a consequence of a merge with
another bfq_queue. In this case, Q exits because the I/O of its
associated process has been redirected to another bfq_queue.
The decrement unbalance occurs because Q may then be re-created after
a split, and added back to the current burst list, *without*
incrementing burst_size. burst_size is not incremented because Q is
not a new bfq_queue added to the burst list, but a bfq_queue only
temporarily removed from the list, and, before the commit "bfq-sq,
bfq-mq: decrease burst size when queues in burst exit", burst_size was
not decremented when Q was removed.
This commit addresses this issue by just checking whether the exiting
bfq_queue is a merged bfq_queue, and, in that case, not decrementing
burst_size. Unfortunately, this still leaves room for unbalanced
decrements, in the following rarer case: on a split, the bfq_queue
happens to be inserted into a different burst list than that it was
removed from when merged. If this happens, the number of elements in
the new burst list becomes higher than burst_size (by one). When the
bfq_queue then exits, it is of course not in a merged state any
longer, thus burst_size is decremented, which results in an unbalanced
decrement. To handle this sporadic, unlucky case in a simple way,
this commit also checks that burst_size is larger than 0 before
decrementing it.
Finally, this commit removes an useless, extra check: the check that
the bfq_queue is sync, performed before checking whether the bfq_queue
is in the burst list. This extra check is redundant, because only sync
bfq_queues can be inserted into the burst list.
Fixes: 7cb04004fa37 ("block, bfq: decrease burst size when queues in burst exit")
Reported-by: Philip Müller <philm@manjaro.org>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Tested-by: Philip Müller <philm@manjaro.org>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 57 insertions(+), 2 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 261f98695910..889a8549d97f 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -3726,9 +3726,36 @@ void bfq_put_queue(struct bfq_queue *bfqq)
if (bfqq->ref)
return;
- if (bfq_bfqq_sync(bfqq) && !hlist_unhashed(&bfqq->burst_list_node)) {
+ if (!hlist_unhashed(&bfqq->burst_list_node)) {
hlist_del_init(&bfqq->burst_list_node);
- bfqq->bfqd->burst_size--;
+ /*
+ * Decrement also burst size after the removal, if the
+ * process associated with bfqq is exiting, and thus
+ * does not contribute to the burst any longer. This
+ * decrement helps filter out false positives of large
+ * bursts, when some short-lived process (often due to
+ * the execution of commands by some service) happens
+ * to start and exit while a complex application is
+ * starting, and thus spawning several processes that
+ * do I/O (and that *must not* be treated as a large
+ * burst, see comments on bfq_handle_burst).
+ *
+ * In particular, the decrement is performed only if:
+ * 1) bfqq is not a merged queue, because, if it is,
+ * then this free of bfqq is not triggered by the exit
+ * of the process bfqq is associated with, but exactly
+ * by the fact that bfqq has just been merged.
+ * 2) burst_size is greater than 0, to handle
+ * unbalanced decrements. Unbalanced decrements may
+ * happen in te following case: bfqq is inserted into
+ * the current burst list--without incrementing
+ * bust_size--because of a split, but the current
+ * burst list is not the burst list bfqq belonged to
+ * (see comments on the case of a split in
+ * bfq_set_request).
+ */
+ if (bfqq->bic && bfqq->bfqd->burst_size > 0)
+ bfqq->bfqd->burst_size--;
}
kmem_cache_free(bfq_pool, bfqq);
@@ -4460,6 +4487,34 @@ static struct bfq_queue *bfq_get_bfqq_handle_split(struct bfq_data *bfqd,
else {
bfq_clear_bfqq_in_large_burst(bfqq);
if (bic->was_in_burst_list)
+ /*
+ * If bfqq was in the current
+ * burst list before being
+ * merged, then we have to add
+ * it back. And we do not need
+ * to increase burst_size, as
+ * we did not decrement
+ * burst_size when we removed
+ * bfqq from the burst list as
+ * a consequence of a merge
+ * (see comments in
+ * bfq_put_queue). In this
+ * respect, it would be rather
+ * costly to know whether the
+ * current burst list is still
+ * the same burst list from
+ * which bfqq was removed on
+ * the merge. To avoid this
+ * cost, if bfqq was in a
+ * burst list, then we add
+ * bfqq to the current burst
+ * list without any further
+ * check. This can cause
+ * inappropriate insertions,
+ * but rarely enough to not
+ * harm the detection of large
+ * bursts significantly.
+ */
hlist_add_head(&bfqq->burst_list_node,
&bfqd->burst_list);
}
--
2.15.1
@@ -0,0 +1,146 @@
From 4baa8bb13f41307f3eb62fe91f93a1a798ebef53 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Thu, 21 Sep 2017 11:04:00 +0200
Subject: [PATCH] block, bfq: fix wrong init of saved start time for weight
raising
This commit fixes a bug that causes bfq to fail to guarantee a high
responsiveness on some drives, if there is heavy random read+write I/O
in the background. More precisely, such a failure allowed this bug to
be found [1], but the bug may well cause other yet unreported
anomalies.
BFQ raises the weight of the bfq_queues associated with soft real-time
applications, to privilege the I/O, and thus reduce latency, for these
applications. This mechanism is named soft-real-time weight raising in
BFQ. A soft real-time period may happen to be nested into an
interactive weight raising period, i.e., it may happen that, when a
bfq_queue switches to a soft real-time weight-raised state, the
bfq_queue is already being weight-raised because deemed interactive
too. In this case, BFQ saves in a special variable
wr_start_at_switch_to_srt, the time instant when the interactive
weight-raising period started for the bfq_queue, i.e., the time
instant when BFQ started to deem the bfq_queue interactive. This value
is then used to check whether the interactive weight-raising period
would still be in progress when the soft real-time weight-raising
period ends. If so, interactive weight raising is restored for the
bfq_queue. This restore is useful, in particular, because it prevents
bfq_queues from losing their interactive weight raising prematurely,
as a consequence of spurious, short-lived soft real-time
weight-raising periods caused by wrong detections as soft real-time.
If, instead, a bfq_queue switches to soft-real-time weight raising
while it *is not* already in an interactive weight-raising period,
then the variable wr_start_at_switch_to_srt has no meaning during the
following soft real-time weight-raising period. Unfortunately the
handling of this case is wrong in BFQ: not only the variable is not
flagged somehow as meaningless, but it is also set to the time when
the switch to soft real-time weight-raising occurs. This may cause an
interactive weight-raising period to be considered mistakenly as still
in progress, and thus a spurious interactive weight-raising period to
start for the bfq_queue, at the end of the soft-real-time
weight-raising period. In particular the spurious interactive
weight-raising period will be considered as still in progress, if the
soft-real-time weight-raising period does not last very long. The
bfq_queue will then be wrongly privileged and, if I/O bound, will
unjustly steal bandwidth to truly interactive or soft real-time
bfq_queues, harming responsiveness and low latency.
This commit fixes this issue by just setting wr_start_at_switch_to_srt
to minus infinity (farthest past time instant according to jiffies
macros): when the soft-real-time weight-raising period ends, certainly
no interactive weight-raising period will be considered as still in
progress.
[1] Background I/O Type: Random - Background I/O mix: Reads and writes
- Application to start: LibreOffice Writer in
http://www.phoronix.com/scan.php?page=news_item&px=Linux-4.13-IO-Laptop
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Tested-by: Mirko Montanari <mirkomontanari91@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 50 +++++++++++++++++++++++++++++++-------------------
1 file changed, 31 insertions(+), 19 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index a4783da90ba8..c25955c25e03 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -1202,6 +1202,24 @@ static unsigned int bfq_wr_duration(struct bfq_data *bfqd)
return dur;
}
+/*
+ * Return the farthest future time instant according to jiffies
+ * macros.
+ */
+static unsigned long bfq_greatest_from_now(void)
+{
+ return jiffies + MAX_JIFFY_OFFSET;
+}
+
+/*
+ * Return the farthest past time instant according to jiffies
+ * macros.
+ */
+static unsigned long bfq_smallest_from_now(void)
+{
+ return jiffies - MAX_JIFFY_OFFSET;
+}
+
static void bfq_update_bfqq_wr_on_rq_arrival(struct bfq_data *bfqd,
struct bfq_queue *bfqq,
unsigned int old_wr_coeff,
@@ -1216,7 +1234,19 @@ static void bfq_update_bfqq_wr_on_rq_arrival(struct bfq_data *bfqd,
bfqq->wr_coeff = bfqd->bfq_wr_coeff;
bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
} else {
- bfqq->wr_start_at_switch_to_srt = jiffies;
+ /*
+ * No interactive weight raising in progress
+ * here: assign minus infinity to
+ * wr_start_at_switch_to_srt, to make sure
+ * that, at the end of the soft-real-time
+ * weight raising periods that is starting
+ * now, no interactive weight-raising period
+ * may be wrongly considered as still in
+ * progress (and thus actually started by
+ * mistake).
+ */
+ bfqq->wr_start_at_switch_to_srt =
+ bfq_smallest_from_now();
bfqq->wr_coeff = bfqd->bfq_wr_coeff *
BFQ_SOFTRT_WEIGHT_FACTOR;
bfqq->wr_cur_max_time =
@@ -2897,24 +2927,6 @@ static unsigned long bfq_bfqq_softrt_next_start(struct bfq_data *bfqd,
jiffies + nsecs_to_jiffies(bfqq->bfqd->bfq_slice_idle) + 4);
}
-/*
- * Return the farthest future time instant according to jiffies
- * macros.
- */
-static unsigned long bfq_greatest_from_now(void)
-{
- return jiffies + MAX_JIFFY_OFFSET;
-}
-
-/*
- * Return the farthest past time instant according to jiffies
- * macros.
- */
-static unsigned long bfq_smallest_from_now(void)
-{
- return jiffies - MAX_JIFFY_OFFSET;
-}
-
/**
* bfq_bfqq_expire - expire a queue.
* @bfqd: device owning the queue.
--
2.15.1
@@ -0,0 +1,68 @@
From f0ba5ea2fe45c0ad24a7dedae84a97f7aa046494 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Wed, 20 Dec 2017 17:27:36 +0100
Subject: [PATCH] block, bfq: increase threshold to deem I/O as random
If two processes do I/O close to each other, i.e., are cooperating
processes in BFQ (and CFQ'S) nomenclature, then BFQ merges their
associated bfq_queues, so as to get sequential I/O from the union of
the I/O requests of the processes, and thus reach a higher
throughput. A merged queue is then split if its I/O stops being
sequential. In this respect, BFQ deems the I/O of a bfq_queue as
(mostly) sequential only if less than 4 I/O requests are random, out
of the last 32 requests inserted into the queue.
Unfortunately, extensive testing (with the interleaved_io benchmark of
the S suite [1], and with real applications spawning cooperating
processes) has clearly shown that, with such a low threshold, only a
rather low I/O throughput may be reached when several cooperating
processes do I/O. In particular, the outcome of each test run was
bimodal: if queue merging occurred and was stable during the test,
then the throughput was close to the peak rate of the storage device,
otherwise the throughput was arbitrarily low (usually around 1/10 of
the peak rate with a rotational device). The probability to get the
unlucky outcomes grew with the number of cooperating processes: it was
already significant with 5 processes, and close to one with 7 or more
processes.
The cause of the low throughput in the unlucky runs was that the
merged queues containing the I/O of these cooperating processes were
soon split, because they contained more random I/O requests than those
tolerated by the 4/32 threshold, but
- that I/O would have however allowed the storage device to reach
peak throughput or almost peak throughput;
- in contrast, the I/O of these processes, if served individually
(from separate queues) yielded a rather low throughput.
So we repeated our tests with increasing values of the threshold,
until we found the minimum value (19) for which we obtained maximum
throughput, reliably, with at least up to 9 cooperating
processes. Then we checked that the use of that higher threshold value
did not cause any regression for any other benchmark in the suite [1].
This commit raises the threshold to such a higher value.
[1] https://github.com/Algodev-github/S
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index bcb6d21baf12..0f48583b9380 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -178,7 +178,7 @@ static struct kmem_cache *bfq_pool;
#define BFQQ_SEEK_THR (sector_t)(8 * 100)
#define BFQQ_SECT_THR_NONROT (sector_t)(2 * 32)
#define BFQQ_CLOSE_THR (sector_t)(8 * 1024)
-#define BFQQ_SEEKY(bfqq) (hweight32(bfqq->seek_history) > 32/8)
+#define BFQQ_SEEKY(bfqq) (hweight32(bfqq->seek_history) > 19)
/* Min number of samples required to perform peak-rate update */
#define BFQ_RATE_MIN_SAMPLES 32
--
2.15.1
@@ -0,0 +1,34 @@
From 8abef10b3de1144cfe968f454946f13eb1ac3d0a Mon Sep 17 00:00:00 2001
From: Jens Axboe <axboe@kernel.dk>
Date: Tue, 9 Jan 2018 12:20:51 -0700
Subject: [PATCH] bfq-iosched: don't call bfqg_and_blkg_put for
!CONFIG_BFQ_GROUP_IOSCHED
It's not available if we don't have group io scheduling set, and
there's no need to call it.
Fixes: 0d52af590552 ("block, bfq: release oom-queue ref to root group on exit")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 7c0b7f60811c..5e6f837f663e 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -4893,10 +4893,10 @@ static void bfq_exit_queue(struct elevator_queue *e)
hrtimer_cancel(&bfqd->idle_slice_timer);
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
/* release oom-queue reference to root group */
bfqg_and_blkg_put(bfqd->root_group);
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
blkcg_deactivate_policy(bfqd->queue, &blkcg_policy_bfq);
#else
spin_lock_irq(&bfqd->lock);
--
2.16.1
@@ -0,0 +1,186 @@
From 7b8fa3b900a087bc03b11329a92398fde563ba37 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Wed, 20 Dec 2017 12:38:33 +0100
Subject: [PATCH] block, bfq: let a queue be merged only shortly after starting
I/O
In BFQ and CFQ, two processes are said to be cooperating if they do
I/O in such a way that the union of their I/O requests yields a
sequential I/O pattern. To get such a sequential I/O pattern out of
the non-sequential pattern of each cooperating process, BFQ and CFQ
merge the queues associated with these processes. In more detail,
cooperating processes, and thus their associated queues, usually
start, or restart, to do I/O shortly after each other. This is the
case, e.g., for the I/O threads of KVM/QEMU and of the dump
utility. Basing on this assumption, this commit allows a bfq_queue to
be merged only during a short time interval (100ms) after it starts,
or re-starts, to do I/O. This filtering provides two important
benefits.
First, it greatly reduces the probability that two non-cooperating
processes have their queues merged by mistake, if they just happen to
do I/O close to each other for a short time interval. These spurious
merges cause loss of service guarantees. A low-weight bfq_queue may
unjustly get more than its expected share of the throughput: if such a
low-weight queue is merged with a high-weight queue, then the I/O for
the low-weight queue is served as if the queue had a high weight. This
may damage other high-weight queues unexpectedly. For instance,
because of this issue, lxterminal occasionally took 7.5 seconds to
start, instead of 6.5 seconds, when some sequential readers and
writers did I/O in the background on a FUJITSU MHX2300BT HDD. The
reason is that the bfq_queues associated with some of the readers or
the writers were merged with the high-weight queues of some processes
that had to do some urgent but little I/O. The readers then exploited
the inherited high weight for all or most of their I/O, during the
start-up of terminal. The filtering introduced by this commit
eliminated any outlier caused by spurious queue merges in our start-up
time tests.
This filtering also provides a little boost of the throughput
sustainable by BFQ: 3-4%, depending on the CPU. The reason is that,
once a bfq_queue cannot be merged any longer, this commit makes BFQ
stop updating the data needed to handle merging for the queue.
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 57 ++++++++++++++++++++++++++++++++++++++++++-----------
block/bfq-iosched.h | 2 ++
block/bfq-wf2q.c | 4 ++++
3 files changed, 52 insertions(+), 11 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 2cf395daee80..7066d90f09df 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -166,6 +166,20 @@ static const int bfq_async_charge_factor = 10;
/* Default timeout values, in jiffies, approximating CFQ defaults. */
const int bfq_timeout = HZ / 8;
+/*
+ * Time limit for merging (see comments in bfq_setup_cooperator). Set
+ * to the slowest value that, in our tests, proved to be effective in
+ * removing false positives, while not causing true positives to miss
+ * queue merging.
+ *
+ * As can be deduced from the low time limit below, queue merging, if
+ * successful, happens at the very beggining of the I/O of the involved
+ * cooperating processes, as a consequence of the arrival of the very
+ * first requests from each cooperator. After that, there is very
+ * little chance to find cooperators.
+ */
+static const unsigned long bfq_merge_time_limit = HZ/10;
+
static struct kmem_cache *bfq_pool;
/* Below this threshold (in ns), we consider thinktime immediate. */
@@ -444,6 +458,13 @@ bfq_rq_pos_tree_lookup(struct bfq_data *bfqd, struct rb_root *root,
return bfqq;
}
+static bool bfq_too_late_for_merging(struct bfq_queue *bfqq)
+{
+ return bfqq->service_from_backlogged > 0 &&
+ time_is_before_jiffies(bfqq->first_IO_time +
+ bfq_merge_time_limit);
+}
+
void bfq_pos_tree_add_move(struct bfq_data *bfqd, struct bfq_queue *bfqq)
{
struct rb_node **p, *parent;
@@ -454,6 +475,14 @@ void bfq_pos_tree_add_move(struct bfq_data *bfqd, struct bfq_queue *bfqq)
bfqq->pos_root = NULL;
}
+ /*
+ * bfqq cannot be merged any longer (see comments in
+ * bfq_setup_cooperator): no point in adding bfqq into the
+ * position tree.
+ */
+ if (bfq_too_late_for_merging(bfqq))
+ return;
+
if (bfq_class_idle(bfqq))
return;
if (!bfqq->next_rq)
@@ -1935,6 +1964,9 @@ bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
static bool bfq_may_be_close_cooperator(struct bfq_queue *bfqq,
struct bfq_queue *new_bfqq)
{
+ if (bfq_too_late_for_merging(new_bfqq))
+ return false;
+
if (bfq_class_idle(bfqq) || bfq_class_idle(new_bfqq) ||
(bfqq->ioprio_class != new_bfqq->ioprio_class))
return false;
@@ -2003,6 +2035,20 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
{
struct bfq_queue *in_service_bfqq, *new_bfqq;
+ /*
+ * Prevent bfqq from being merged if it has been created too
+ * long ago. The idea is that true cooperating processes, and
+ * thus their associated bfq_queues, are supposed to be
+ * created shortly after each other. This is the case, e.g.,
+ * for KVM/QEMU and dump I/O threads. Basing on this
+ * assumption, the following filtering greatly reduces the
+ * probability that two non-cooperating processes, which just
+ * happen to do close I/O for some short time interval, have
+ * their queues merged by mistake.
+ */
+ if (bfq_too_late_for_merging(bfqq))
+ return NULL;
+
if (bfqq->new_bfqq)
return bfqq->new_bfqq;
@@ -3002,17 +3048,6 @@ void bfq_bfqq_expire(struct bfq_data *bfqd,
*/
slow = bfq_bfqq_is_slow(bfqd, bfqq, compensate, reason, &delta);
- /*
- * Increase service_from_backlogged before next statement,
- * because the possible next invocation of
- * bfq_bfqq_charge_time would likely inflate
- * entity->service. In contrast, service_from_backlogged must
- * contain real service, to enable the soft real-time
- * heuristic to correctly compute the bandwidth consumed by
- * bfqq.
- */
- bfqq->service_from_backlogged += entity->service;
-
/*
* As above explained, charge slow (typically seeky) and
* timed-out queues with the time and not the service
diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h
index 91c4390903a1..5d47b58d5fc8 100644
--- a/block/bfq-iosched.h
+++ b/block/bfq-iosched.h
@@ -344,6 +344,8 @@ struct bfq_queue {
unsigned long wr_start_at_switch_to_srt;
unsigned long split_time; /* time of last split */
+
+ unsigned long first_IO_time; /* time of first I/O for this queue */
};
/**
diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c
index e495d3f9b4b0..4456eda34e48 100644
--- a/block/bfq-wf2q.c
+++ b/block/bfq-wf2q.c
@@ -835,6 +835,10 @@ void bfq_bfqq_served(struct bfq_queue *bfqq, int served)
struct bfq_entity *entity = &bfqq->entity;
struct bfq_service_tree *st;
+ if (!bfqq->service_from_backlogged)
+ bfqq->first_IO_time = jiffies;
+
+ bfqq->service_from_backlogged += served;
for_each_entity(entity) {
st = bfq_entity_service_tree(entity);
--
2.15.1
@@ -0,0 +1,89 @@
From 894df937e06a56ed6f054a75a416aff84147c5a2 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Thu, 21 Sep 2017 11:04:02 +0200
Subject: [PATCH] block, bfq: let early-merged queues be weight-raised on split
too
A just-created bfq_queue, say Q, may happen to be merged with another
bfq_queue on the very first invocation of the function
__bfq_insert_request. In such a case, even if Q would clearly deserve
interactive weight raising (as it has just been created), the function
bfq_add_request does not make it to be invoked for Q, and thus to
activate weight raising for Q. As a consequence, when the state of Q
is saved for a possible future restore, after a split of Q from the
other bfq_queue(s), such a state happens to be (unjustly)
non-weight-raised. Then the bfq_queue will not enjoy any weight
raising on the split, even if should still be in an interactive
weight-raising period when the split occurs.
This commit solves this problem as follows, for a just-created
bfq_queue that is being early-merged: it stores directly, in the saved
state of the bfq_queue, the weight-raising state that would have been
assigned to the bfq_queue if not early-merged.
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Tested-by: Angelo Ruocco <angeloruocco90@gmail.com>
Tested-by: Mirko Montanari <mirkomontanari91@gmail.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 33b63bc4a64b..115747fe43c8 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -2061,10 +2061,27 @@ static void bfq_bfqq_save_state(struct bfq_queue *bfqq)
bic->saved_IO_bound = bfq_bfqq_IO_bound(bfqq);
bic->saved_in_large_burst = bfq_bfqq_in_large_burst(bfqq);
bic->was_in_burst_list = !hlist_unhashed(&bfqq->burst_list_node);
- bic->saved_wr_coeff = bfqq->wr_coeff;
- bic->saved_wr_start_at_switch_to_srt = bfqq->wr_start_at_switch_to_srt;
- bic->saved_last_wr_start_finish = bfqq->last_wr_start_finish;
- bic->saved_wr_cur_max_time = bfqq->wr_cur_max_time;
+ if (unlikely(bfq_bfqq_just_created(bfqq) &&
+ !bfq_bfqq_in_large_burst(bfqq))) {
+ /*
+ * bfqq being merged right after being created: bfqq
+ * would have deserved interactive weight raising, but
+ * did not make it to be set in a weight-raised state,
+ * because of this early merge. Store directly the
+ * weight-raising state that would have been assigned
+ * to bfqq, so that to avoid that bfqq unjustly fails
+ * to enjoy weight raising if split soon.
+ */
+ bic->saved_wr_coeff = bfqq->bfqd->bfq_wr_coeff;
+ bic->saved_wr_cur_max_time = bfq_wr_duration(bfqq->bfqd);
+ bic->saved_last_wr_start_finish = jiffies;
+ } else {
+ bic->saved_wr_coeff = bfqq->wr_coeff;
+ bic->saved_wr_start_at_switch_to_srt =
+ bfqq->wr_start_at_switch_to_srt;
+ bic->saved_last_wr_start_finish = bfqq->last_wr_start_finish;
+ bic->saved_wr_cur_max_time = bfqq->wr_cur_max_time;
+ }
}
static void
@@ -4150,7 +4167,6 @@ static void __bfq_insert_request(struct bfq_data *bfqd, struct request *rq)
new_bfqq->allocated++;
bfqq->allocated--;
new_bfqq->ref++;
- bfq_clear_bfqq_just_created(bfqq);
/*
* If the bic associated with the process
* issuing this request still points to bfqq
@@ -4162,6 +4178,8 @@ static void __bfq_insert_request(struct bfq_data *bfqd, struct request *rq)
if (bic_to_bfqq(RQ_BIC(rq), 1) == bfqq)
bfq_merge_bfqqs(bfqd, RQ_BIC(rq),
bfqq, new_bfqq);
+
+ bfq_clear_bfqq_just_created(bfqq);
/*
* rq is about to be enqueued into new_bfqq,
* release rq reference on bfqq
--
2.15.1
@@ -0,0 +1,202 @@
From 8a8747dc01cee6f92a52c03ba686e9f60cb46c87 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Sat, 13 Jan 2018 12:05:18 +0100
Subject: [PATCH] block, bfq: limit sectors served with interactive weight
raising
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
To maximise responsiveness, BFQ raises the weight, and performs device
idling, for bfq_queues associated with processes deemed as
interactive. In particular, weight raising has a maximum duration,
equal to the time needed to start a large application. If a
weight-raised process goes on doing I/O beyond this maximum duration,
it loses weight-raising.
This mechanism is evidently vulnerable to the following false
positives: I/O-bound applications that will go on doing I/O for much
longer than the duration of weight-raising. These applications have
basically no benefit from being weight-raised at the beginning of
their I/O. On the opposite end, while being weight-raised, these
applications
a) unjustly steal throughput to applications that may truly need
low latency;
b) make BFQ uselessly perform device idling; device idling results
in loss of device throughput with most flash-based storage, and may
increase latencies when used purposelessly.
This commit adds a countermeasure to reduce both the above
problems. To introduce this countermeasure, we provide the following
extra piece of information (full details in the comments added by this
commit). During the start-up of the large application used as a
reference to set the duration of weight-raising, involved processes
transfer at most ~110K sectors each. Accordingly, a process initially
deemed as interactive has no right to be weight-raised any longer,
once transferred 110K sectors or more.
Basing on this consideration, this commit early-ends weight-raising
for a bfq_queue if the latter happens to have received an amount of
service at least equal to 110K sectors (actually, a little bit more,
to keep a safety margin). I/O-bound applications that reach a high
throughput, such as file copy, get to this threshold much before the
allowed weight-raising period finishes. Thus this early ending of
weight-raising reduces the amount of time during which these
applications cause the problems described above.
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++------
block/bfq-iosched.h | 5 ++++
block/bfq-wf2q.c | 3 ++
3 files changed, 80 insertions(+), 9 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index a7ab0cb50733..47e6ec7427c4 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -209,15 +209,17 @@ static struct kmem_cache *bfq_pool;
* interactive applications automatically, using the following formula:
* duration = (R / r) * T, where r is the peak rate of the device, and
* R and T are two reference parameters.
- * In particular, R is the peak rate of the reference device (see below),
- * and T is a reference time: given the systems that are likely to be
- * installed on the reference device according to its speed class, T is
- * about the maximum time needed, under BFQ and while reading two files in
- * parallel, to load typical large applications on these systems.
- * In practice, the slower/faster the device at hand is, the more/less it
- * takes to load applications with respect to the reference device.
- * Accordingly, the longer/shorter BFQ grants weight raising to interactive
- * applications.
+ * In particular, R is the peak rate of the reference device (see
+ * below), and T is a reference time: given the systems that are
+ * likely to be installed on the reference device according to its
+ * speed class, T is about the maximum time needed, under BFQ and
+ * while reading two files in parallel, to load typical large
+ * applications on these systems (see the comments on
+ * max_service_from_wr below, for more details on how T is obtained).
+ * In practice, the slower/faster the device at hand is, the more/less
+ * it takes to load applications with respect to the reference device.
+ * Accordingly, the longer/shorter BFQ grants weight raising to
+ * interactive applications.
*
* BFQ uses four different reference pairs (R, T), depending on:
* . whether the device is rotational or non-rotational;
@@ -254,6 +256,60 @@ static int T_slow[2];
static int T_fast[2];
static int device_speed_thresh[2];
+/*
+ * BFQ uses the above-detailed, time-based weight-raising mechanism to
+ * privilege interactive tasks. This mechanism is vulnerable to the
+ * following false positives: I/O-bound applications that will go on
+ * doing I/O for much longer than the duration of weight
+ * raising. These applications have basically no benefit from being
+ * weight-raised at the beginning of their I/O. On the opposite end,
+ * while being weight-raised, these applications
+ * a) unjustly steal throughput to applications that may actually need
+ * low latency;
+ * b) make BFQ uselessly perform device idling; device idling results
+ * in loss of device throughput with most flash-based storage, and may
+ * increase latencies when used purposelessly.
+ *
+ * BFQ tries to reduce these problems, by adopting the following
+ * countermeasure. To introduce this countermeasure, we need first to
+ * finish explaining how the duration of weight-raising for
+ * interactive tasks is computed.
+ *
+ * For a bfq_queue deemed as interactive, the duration of weight
+ * raising is dynamically adjusted, as a function of the estimated
+ * peak rate of the device, so as to be equal to the time needed to
+ * execute the 'largest' interactive task we benchmarked so far. By
+ * largest task, we mean the task for which each involved process has
+ * to do more I/O than for any of the other tasks we benchmarked. This
+ * reference interactive task is the start-up of LibreOffice Writer,
+ * and in this task each process/bfq_queue needs to have at most ~110K
+ * sectors transferred.
+ *
+ * This last piece of information enables BFQ to reduce the actual
+ * duration of weight-raising for at least one class of I/O-bound
+ * applications: those doing sequential or quasi-sequential I/O. An
+ * example is file copy. In fact, once started, the main I/O-bound
+ * processes of these applications usually consume the above 110K
+ * sectors in much less time than the processes of an application that
+ * is starting, because these I/O-bound processes will greedily devote
+ * almost all their CPU cycles only to their target,
+ * throughput-friendly I/O operations. This is even more true if BFQ
+ * happens to be underestimating the device peak rate, and thus
+ * overestimating the duration of weight raising. But, according to
+ * our measurements, once transferred 110K sectors, these processes
+ * have no right to be weight-raised any longer.
+ *
+ * Basing on the last consideration, BFQ ends weight-raising for a
+ * bfq_queue if the latter happens to have received an amount of
+ * service at least equal to the following constant. The constant is
+ * set to slightly more than 110K, to have a minimum safety margin.
+ *
+ * This early ending of weight-raising reduces the amount of time
+ * during which interactive false positives cause the two problems
+ * described at the beginning of these comments.
+ */
+static const unsigned long max_service_from_wr = 120000;
+
#define RQ_BIC(rq) icq_to_bic((rq)->elv.priv[0])
#define RQ_BFQQ(rq) ((rq)->elv.priv[1])
@@ -1352,6 +1408,7 @@ static void bfq_update_bfqq_wr_on_rq_arrival(struct bfq_data *bfqd,
if (old_wr_coeff == 1 && wr_or_deserves_wr) {
/* start a weight-raising period */
if (interactive) {
+ bfqq->service_from_wr = 0;
bfqq->wr_coeff = bfqd->bfq_wr_coeff;
bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
} else {
@@ -3665,6 +3722,12 @@ static void bfq_update_wr_data(struct bfq_data *bfqd, struct bfq_queue *bfqq)
bfqq->entity.prio_changed = 1;
}
}
+ if (bfqq->wr_coeff > 1 &&
+ bfqq->wr_cur_max_time != bfqd->bfq_wr_rt_max_time &&
+ bfqq->service_from_wr > max_service_from_wr) {
+ /* see comments on max_service_from_wr */
+ bfq_bfqq_end_wr(bfqq);
+ }
}
/*
* To improve latency (for this or other queues), immediately
diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h
index fcd941008127..350c39ae2896 100644
--- a/block/bfq-iosched.h
+++ b/block/bfq-iosched.h
@@ -337,6 +337,11 @@ struct bfq_queue {
* last transition from idle to backlogged.
*/
unsigned long service_from_backlogged;
+ /*
+ * Cumulative service received from the @bfq_queue since its
+ * last transition to weight-raised state.
+ */
+ unsigned long service_from_wr;
/*
* Value of wr start time when switching to soft rt
diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c
index 4456eda34e48..4498c43245e2 100644
--- a/block/bfq-wf2q.c
+++ b/block/bfq-wf2q.c
@@ -838,6 +838,9 @@ void bfq_bfqq_served(struct bfq_queue *bfqq, int served)
if (!bfqq->service_from_backlogged)
bfqq->first_IO_time = jiffies;
+ if (bfqq->wr_coeff > 1)
+ bfqq->service_from_wr += served;
+
bfqq->service_from_backlogged += served;
for_each_entity(entity) {
st = bfq_entity_service_tree(entity);
--
2.16.1
@@ -0,0 +1,162 @@
From a52a69ea89dc12e6f4572f554940789c1ab23c7a Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Sat, 13 Jan 2018 12:05:17 +0100
Subject: [PATCH] block, bfq: limit tags for writes and async I/O
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Asynchronous I/O can easily starve synchronous I/O (both sync reads
and sync writes), by consuming all request tags. Similarly, storms of
synchronous writes, such as those that sync(2) may trigger, can starve
synchronous reads. In their turn, these two problems may also cause
BFQ to loose control on latency for interactive and soft real-time
applications. For example, on a PLEXTOR PX-256M5S SSD, LibreOffice
Writer takes 0.6 seconds to start if the device is idle, but it takes
more than 45 seconds (!) if there are sequential writes in the
background.
This commit addresses this issue by limiting the maximum percentage of
tags that asynchronous I/O requests and synchronous write requests can
consume. In particular, this commit grants a higher threshold to
synchronous writes, to prevent the latter from being starved by
asynchronous I/O.
According to the above test, LibreOffice Writer now starts in about
1.2 seconds on average, regardless of the background workload, and
apart from some rare outlier. To check this improvement, run, e.g.,
sudo ./comm_startup_lat.sh bfq 5 5 seq 10 "lowriter --terminate_after_init"
for the comm_startup_lat benchmark in the S suite [1].
[1] https://github.com/Algodev-github/S
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++
block/bfq-iosched.h | 12 +++++++++
2 files changed, 89 insertions(+)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index f352b1677143..a7ab0cb50733 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -417,6 +417,82 @@ static struct request *bfq_choose_req(struct bfq_data *bfqd,
}
}
+/*
+ * See the comments on bfq_limit_depth for the purpose of
+ * the depths set in the function.
+ */
+static void bfq_update_depths(struct bfq_data *bfqd, struct sbitmap_queue *bt)
+{
+ bfqd->sb_shift = bt->sb.shift;
+
+ /*
+ * In-word depths if no bfq_queue is being weight-raised:
+ * leaving 25% of tags only for sync reads.
+ *
+ * In next formulas, right-shift the value
+ * (1U<<bfqd->sb_shift), instead of computing directly
+ * (1U<<(bfqd->sb_shift - something)), to be robust against
+ * any possible value of bfqd->sb_shift, without having to
+ * limit 'something'.
+ */
+ /* no more than 50% of tags for async I/O */
+ bfqd->word_depths[0][0] = max((1U<<bfqd->sb_shift)>>1, 1U);
+ /*
+ * no more than 75% of tags for sync writes (25% extra tags
+ * w.r.t. async I/O, to prevent async I/O from starving sync
+ * writes)
+ */
+ bfqd->word_depths[0][1] = max(((1U<<bfqd->sb_shift) * 3)>>2, 1U);
+
+ /*
+ * In-word depths in case some bfq_queue is being weight-
+ * raised: leaving ~63% of tags for sync reads. This is the
+ * highest percentage for which, in our tests, application
+ * start-up times didn't suffer from any regression due to tag
+ * shortage.
+ */
+ /* no more than ~18% of tags for async I/O */
+ bfqd->word_depths[1][0] = max(((1U<<bfqd->sb_shift) * 3)>>4, 1U);
+ /* no more than ~37% of tags for sync writes (~20% extra tags) */
+ bfqd->word_depths[1][1] = max(((1U<<bfqd->sb_shift) * 6)>>4, 1U);
+}
+
+/*
+ * Async I/O can easily starve sync I/O (both sync reads and sync
+ * writes), by consuming all tags. Similarly, storms of sync writes,
+ * such as those that sync(2) may trigger, can starve sync reads.
+ * Limit depths of async I/O and sync writes so as to counter both
+ * problems.
+ */
+static void bfq_limit_depth(unsigned int op, struct blk_mq_alloc_data *data)
+{
+ struct blk_mq_tags *tags = blk_mq_tags_from_data(data);
+ struct bfq_data *bfqd = data->q->elevator->elevator_data;
+ struct sbitmap_queue *bt;
+
+ if (op_is_sync(op) && !op_is_write(op))
+ return;
+
+ if (data->flags & BLK_MQ_REQ_RESERVED) {
+ if (unlikely(!tags->nr_reserved_tags)) {
+ WARN_ON_ONCE(1);
+ return;
+ }
+ bt = &tags->breserved_tags;
+ } else
+ bt = &tags->bitmap_tags;
+
+ if (unlikely(bfqd->sb_shift != bt->sb.shift))
+ bfq_update_depths(bfqd, bt);
+
+ data->shallow_depth =
+ bfqd->word_depths[!!bfqd->wr_busy_queues][op_is_sync(op)];
+
+ bfq_log(bfqd, "[%s] wr_busy %d sync %d depth %u",
+ __func__, bfqd->wr_busy_queues, op_is_sync(op),
+ data->shallow_depth);
+}
+
static struct bfq_queue *
bfq_rq_pos_tree_lookup(struct bfq_data *bfqd, struct rb_root *root,
sector_t sector, struct rb_node **ret_parent,
@@ -5285,6 +5361,7 @@ static struct elv_fs_entry bfq_attrs[] = {
static struct elevator_type iosched_bfq_mq = {
.ops.mq = {
+ .limit_depth = bfq_limit_depth,
.prepare_request = bfq_prepare_request,
.finish_request = bfq_finish_request,
.exit_icq = bfq_exit_icq,
diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h
index 5d47b58d5fc8..fcd941008127 100644
--- a/block/bfq-iosched.h
+++ b/block/bfq-iosched.h
@@ -629,6 +629,18 @@ struct bfq_data {
struct bfq_io_cq *bio_bic;
/* bfqq associated with the task issuing current bio for merging */
struct bfq_queue *bio_bfqq;
+
+ /*
+ * Cached sbitmap shift, used to compute depth limits in
+ * bfq_update_depths.
+ */
+ unsigned int sb_shift;
+
+ /*
+ * Depth limits used in bfq_limit_depth (see comments on the
+ * function)
+ */
+ unsigned int word_depths[2][2];
};
enum bfqq_state_flags {
--
2.16.1
@@ -0,0 +1,467 @@
From a33801e8b4735b8d473f963e5854172f9cde3e8b Mon Sep 17 00:00:00 2001
From: Luca Miccio <lucmiccio@gmail.com>
Date: Mon, 13 Nov 2017 07:34:10 +0100
Subject: [PATCH] block, bfq: move debug blkio stats behind
CONFIG_DEBUG_BLK_CGROUP
BFQ currently creates, and updates, its own instance of the whole
set of blkio statistics that cfq creates. Yet, from the comments
of Tejun Heo in [1], it turned out that most of these statistics
are meant/useful only for debugging. This commit makes BFQ create
the latter, debugging statistics only if the option
CONFIG_DEBUG_BLK_CGROUP is set.
By doing so, this commit also enables BFQ to enjoy a high perfomance
boost. The reason is that, if CONFIG_DEBUG_BLK_CGROUP is not set, then
BFQ has to update far fewer statistics, and, in particular, not the
heaviest to update. To give an idea of the benefits, if
CONFIG_DEBUG_BLK_CGROUP is not set, then, on an Intel i7-4850HQ, and
with 8 threads doing random I/O in parallel on null_blk (configured
with 0 latency), the throughput of BFQ grows from 310 to 400 KIOPS
(+30%). We have measured similar or even much higher boosts with other
CPUs: e.g., +45% with an ARM CortexTM-A53 Octa-core. Our results have
been obtained and can be reproduced very easily with the script in [1].
[1] https://www.spinics.net/lists/linux-block/msg18943.html
Suggested-by: Tejun Heo <tj@kernel.org>
Suggested-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
Documentation/block/bfq-iosched.txt | 38 +++++++--
block/bfq-cgroup.c | 148 ++++++++++++++++++++----------------
block/bfq-iosched.c | 14 ++--
block/bfq-iosched.h | 4 +-
4 files changed, 125 insertions(+), 79 deletions(-)
diff --git a/Documentation/block/bfq-iosched.txt b/Documentation/block/bfq-iosched.txt
index 7fad6c061470..8d8d8f06cab2 100644
--- a/Documentation/block/bfq-iosched.txt
+++ b/Documentation/block/bfq-iosched.txt
@@ -20,12 +20,22 @@ for that device, by setting low_latency to 0. See Section 3 for
details on how to configure BFQ for the desired tradeoff between
latency and throughput, or on how to maximize throughput.
-BFQ has a non-null overhead, which limits the maximum IOPS that the
-CPU can process for a device scheduled with BFQ. To give an idea of
-the limits on slow or average CPUs, here are BFQ limits for three
-different CPUs, on, respectively, an average laptop, an old desktop,
-and a cheap embedded system, in case full hierarchical support is
-enabled (i.e., CONFIG_BFQ_GROUP_IOSCHED is set):
+BFQ has a non-null overhead, which limits the maximum IOPS that a CPU
+can process for a device scheduled with BFQ. To give an idea of the
+limits on slow or average CPUs, here are, first, the limits of BFQ for
+three different CPUs, on, respectively, an average laptop, an old
+desktop, and a cheap embedded system, in case full hierarchical
+support is enabled (i.e., CONFIG_BFQ_GROUP_IOSCHED is set), but
+CONFIG_DEBUG_BLK_CGROUP is not set (Section 4-2):
+- Intel i7-4850HQ: 400 KIOPS
+- AMD A8-3850: 250 KIOPS
+- ARM CortexTM-A53 Octa-core: 80 KIOPS
+
+If CONFIG_DEBUG_BLK_CGROUP is set (and of course full hierarchical
+support is enabled), then the sustainable throughput with BFQ
+decreases, because all blkio.bfq* statistics are created and updated
+(Section 4-2). For BFQ, this leads to the following maximum
+sustainable throughputs, on the same systems as above:
- Intel i7-4850HQ: 310 KIOPS
- AMD A8-3850: 200 KIOPS
- ARM CortexTM-A53 Octa-core: 56 KIOPS
@@ -505,6 +515,22 @@ BFQ-specific files is "blkio.bfq." or "io.bfq." For example, the group
parameter to set the weight of a group with BFQ is blkio.bfq.weight
or io.bfq.weight.
+As for cgroups-v1 (blkio controller), the exact set of stat files
+created, and kept up-to-date by bfq, depends on whether
+CONFIG_DEBUG_BLK_CGROUP is set. If it is set, then bfq creates all
+the stat files documented in
+Documentation/cgroup-v1/blkio-controller.txt. If, instead,
+CONFIG_DEBUG_BLK_CGROUP is not set, then bfq creates only the files
+blkio.bfq.io_service_bytes
+blkio.bfq.io_service_bytes_recursive
+blkio.bfq.io_serviced
+blkio.bfq.io_serviced_recursive
+
+The value of CONFIG_DEBUG_BLK_CGROUP greatly influences the maximum
+throughput sustainable with bfq, because updating the blkio.bfq.*
+stats is rather costly, especially for some of the stats enabled by
+CONFIG_DEBUG_BLK_CGROUP.
+
Parameters to set
-----------------
diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
index ceefb9a706d6..da1525ec4c87 100644
--- a/block/bfq-cgroup.c
+++ b/block/bfq-cgroup.c
@@ -24,7 +24,7 @@
#include "bfq-iosched.h"
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
/* bfqg stats flags */
enum bfqg_stats_flags {
@@ -152,6 +152,57 @@ void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg)
bfqg_stats_update_group_wait_time(stats);
}
+void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
+ unsigned int op)
+{
+ blkg_rwstat_add(&bfqg->stats.queued, op, 1);
+ bfqg_stats_end_empty_time(&bfqg->stats);
+ if (!(bfqq == ((struct bfq_data *)bfqg->bfqd)->in_service_queue))
+ bfqg_stats_set_start_group_wait_time(bfqg, bfqq_group(bfqq));
+}
+
+void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op)
+{
+ blkg_rwstat_add(&bfqg->stats.queued, op, -1);
+}
+
+void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op)
+{
+ blkg_rwstat_add(&bfqg->stats.merged, op, 1);
+}
+
+void bfqg_stats_update_completion(struct bfq_group *bfqg, uint64_t start_time,
+ uint64_t io_start_time, unsigned int op)
+{
+ struct bfqg_stats *stats = &bfqg->stats;
+ unsigned long long now = sched_clock();
+
+ if (time_after64(now, io_start_time))
+ blkg_rwstat_add(&stats->service_time, op,
+ now - io_start_time);
+ if (time_after64(io_start_time, start_time))
+ blkg_rwstat_add(&stats->wait_time, op,
+ io_start_time - start_time);
+}
+
+#else /* CONFIG_BFQ_GROUP_IOSCHED && CONFIG_DEBUG_BLK_CGROUP */
+
+void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
+ unsigned int op) { }
+void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op) { }
+void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op) { }
+void bfqg_stats_update_completion(struct bfq_group *bfqg, uint64_t start_time,
+ uint64_t io_start_time, unsigned int op) { }
+void bfqg_stats_update_dequeue(struct bfq_group *bfqg) { }
+void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg) { }
+void bfqg_stats_update_idle_time(struct bfq_group *bfqg) { }
+void bfqg_stats_set_start_idle_time(struct bfq_group *bfqg) { }
+void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg) { }
+
+#endif /* CONFIG_BFQ_GROUP_IOSCHED && CONFIG_DEBUG_BLK_CGROUP */
+
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
+
/*
* blk-cgroup policy-related handlers
* The following functions help in converting between blk-cgroup
@@ -229,42 +280,10 @@ void bfqg_and_blkg_put(struct bfq_group *bfqg)
blkg_put(bfqg_to_blkg(bfqg));
}
-void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
- unsigned int op)
-{
- blkg_rwstat_add(&bfqg->stats.queued, op, 1);
- bfqg_stats_end_empty_time(&bfqg->stats);
- if (!(bfqq == ((struct bfq_data *)bfqg->bfqd)->in_service_queue))
- bfqg_stats_set_start_group_wait_time(bfqg, bfqq_group(bfqq));
-}
-
-void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op)
-{
- blkg_rwstat_add(&bfqg->stats.queued, op, -1);
-}
-
-void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op)
-{
- blkg_rwstat_add(&bfqg->stats.merged, op, 1);
-}
-
-void bfqg_stats_update_completion(struct bfq_group *bfqg, uint64_t start_time,
- uint64_t io_start_time, unsigned int op)
-{
- struct bfqg_stats *stats = &bfqg->stats;
- unsigned long long now = sched_clock();
-
- if (time_after64(now, io_start_time))
- blkg_rwstat_add(&stats->service_time, op,
- now - io_start_time);
- if (time_after64(io_start_time, start_time))
- blkg_rwstat_add(&stats->wait_time, op,
- io_start_time - start_time);
-}
-
/* @stats = 0 */
static void bfqg_stats_reset(struct bfqg_stats *stats)
{
+#ifdef CONFIG_DEBUG_BLK_CGROUP
/* queued stats shouldn't be cleared */
blkg_rwstat_reset(&stats->merged);
blkg_rwstat_reset(&stats->service_time);
@@ -276,6 +295,7 @@ static void bfqg_stats_reset(struct bfqg_stats *stats)
blkg_stat_reset(&stats->group_wait_time);
blkg_stat_reset(&stats->idle_time);
blkg_stat_reset(&stats->empty_time);
+#endif
}
/* @to += @from */
@@ -284,6 +304,7 @@ static void bfqg_stats_add_aux(struct bfqg_stats *to, struct bfqg_stats *from)
if (!to || !from)
return;
+#ifdef CONFIG_DEBUG_BLK_CGROUP
/* queued stats shouldn't be cleared */
blkg_rwstat_add_aux(&to->merged, &from->merged);
blkg_rwstat_add_aux(&to->service_time, &from->service_time);
@@ -296,6 +317,7 @@ static void bfqg_stats_add_aux(struct bfqg_stats *to, struct bfqg_stats *from)
blkg_stat_add_aux(&to->group_wait_time, &from->group_wait_time);
blkg_stat_add_aux(&to->idle_time, &from->idle_time);
blkg_stat_add_aux(&to->empty_time, &from->empty_time);
+#endif
}
/*
@@ -342,6 +364,7 @@ void bfq_init_entity(struct bfq_entity *entity, struct bfq_group *bfqg)
static void bfqg_stats_exit(struct bfqg_stats *stats)
{
+#ifdef CONFIG_DEBUG_BLK_CGROUP
blkg_rwstat_exit(&stats->merged);
blkg_rwstat_exit(&stats->service_time);
blkg_rwstat_exit(&stats->wait_time);
@@ -353,10 +376,12 @@ static void bfqg_stats_exit(struct bfqg_stats *stats)
blkg_stat_exit(&stats->group_wait_time);
blkg_stat_exit(&stats->idle_time);
blkg_stat_exit(&stats->empty_time);
+#endif
}
static int bfqg_stats_init(struct bfqg_stats *stats, gfp_t gfp)
{
+#ifdef CONFIG_DEBUG_BLK_CGROUP
if (blkg_rwstat_init(&stats->merged, gfp) ||
blkg_rwstat_init(&stats->service_time, gfp) ||
blkg_rwstat_init(&stats->wait_time, gfp) ||
@@ -371,6 +396,7 @@ static int bfqg_stats_init(struct bfqg_stats *stats, gfp_t gfp)
bfqg_stats_exit(stats);
return -ENOMEM;
}
+#endif
return 0;
}
@@ -887,6 +913,7 @@ static ssize_t bfq_io_set_weight(struct kernfs_open_file *of,
return bfq_io_set_weight_legacy(of_css(of), NULL, weight);
}
+#ifdef CONFIG_DEBUG_BLK_CGROUP
static int bfqg_print_stat(struct seq_file *sf, void *v)
{
blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), blkg_prfill_stat,
@@ -991,6 +1018,7 @@ static int bfqg_print_avg_queue_size(struct seq_file *sf, void *v)
0, false);
return 0;
}
+#endif /* CONFIG_DEBUG_BLK_CGROUP */
struct bfq_group *bfq_create_group_hierarchy(struct bfq_data *bfqd, int node)
{
@@ -1028,15 +1056,6 @@ struct cftype bfq_blkcg_legacy_files[] = {
},
/* statistics, covers only the tasks in the bfqg */
- {
- .name = "bfq.time",
- .private = offsetof(struct bfq_group, stats.time),
- .seq_show = bfqg_print_stat,
- },
- {
- .name = "bfq.sectors",
- .seq_show = bfqg_print_stat_sectors,
- },
{
.name = "bfq.io_service_bytes",
.private = (unsigned long)&blkcg_policy_bfq,
@@ -1047,6 +1066,16 @@ struct cftype bfq_blkcg_legacy_files[] = {
.private = (unsigned long)&blkcg_policy_bfq,
.seq_show = blkg_print_stat_ios,
},
+#ifdef CONFIG_DEBUG_BLK_CGROUP
+ {
+ .name = "bfq.time",
+ .private = offsetof(struct bfq_group, stats.time),
+ .seq_show = bfqg_print_stat,
+ },
+ {
+ .name = "bfq.sectors",
+ .seq_show = bfqg_print_stat_sectors,
+ },
{
.name = "bfq.io_service_time",
.private = offsetof(struct bfq_group, stats.service_time),
@@ -1067,17 +1096,9 @@ struct cftype bfq_blkcg_legacy_files[] = {
.private = offsetof(struct bfq_group, stats.queued),
.seq_show = bfqg_print_rwstat,
},
+#endif /* CONFIG_DEBUG_BLK_CGROUP */
/* the same statictics which cover the bfqg and its descendants */
- {
- .name = "bfq.time_recursive",
- .private = offsetof(struct bfq_group, stats.time),
- .seq_show = bfqg_print_stat_recursive,
- },
- {
- .name = "bfq.sectors_recursive",
- .seq_show = bfqg_print_stat_sectors_recursive,
- },
{
.name = "bfq.io_service_bytes_recursive",
.private = (unsigned long)&blkcg_policy_bfq,
@@ -1088,6 +1109,16 @@ struct cftype bfq_blkcg_legacy_files[] = {
.private = (unsigned long)&blkcg_policy_bfq,
.seq_show = blkg_print_stat_ios_recursive,
},
+#ifdef CONFIG_DEBUG_BLK_CGROUP
+ {
+ .name = "bfq.time_recursive",
+ .private = offsetof(struct bfq_group, stats.time),
+ .seq_show = bfqg_print_stat_recursive,
+ },
+ {
+ .name = "bfq.sectors_recursive",
+ .seq_show = bfqg_print_stat_sectors_recursive,
+ },
{
.name = "bfq.io_service_time_recursive",
.private = offsetof(struct bfq_group, stats.service_time),
@@ -1132,6 +1163,7 @@ struct cftype bfq_blkcg_legacy_files[] = {
.private = offsetof(struct bfq_group, stats.dequeue),
.seq_show = bfqg_print_stat,
},
+#endif /* CONFIG_DEBUG_BLK_CGROUP */
{ } /* terminate */
};
@@ -1147,18 +1179,6 @@ struct cftype bfq_blkg_files[] = {
#else /* CONFIG_BFQ_GROUP_IOSCHED */
-void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
- unsigned int op) { }
-void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op) { }
-void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op) { }
-void bfqg_stats_update_completion(struct bfq_group *bfqg, uint64_t start_time,
- uint64_t io_start_time, unsigned int op) { }
-void bfqg_stats_update_dequeue(struct bfq_group *bfqg) { }
-void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg) { }
-void bfqg_stats_update_idle_time(struct bfq_group *bfqg) { }
-void bfqg_stats_set_start_idle_time(struct bfq_group *bfqg) { }
-void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg) { }
-
void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,
struct bfq_group *bfqg) {}
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 69e05f861daf..bcb6d21baf12 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -3693,14 +3693,14 @@ static struct request *bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
{
struct bfq_data *bfqd = hctx->queue->elevator->elevator_data;
struct request *rq;
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
struct bfq_queue *in_serv_queue, *bfqq;
bool waiting_rq, idle_timer_disabled;
#endif
spin_lock_irq(&bfqd->lock);
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
in_serv_queue = bfqd->in_service_queue;
waiting_rq = in_serv_queue && bfq_bfqq_wait_request(in_serv_queue);
@@ -3714,7 +3714,7 @@ static struct request *bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
#endif
spin_unlock_irq(&bfqd->lock);
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
bfqq = rq ? RQ_BFQQ(rq) : NULL;
if (!idle_timer_disabled && !bfqq)
return rq;
@@ -4281,7 +4281,7 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
{
struct request_queue *q = hctx->queue;
struct bfq_data *bfqd = q->elevator->elevator_data;
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
struct bfq_queue *bfqq = RQ_BFQQ(rq);
bool idle_timer_disabled = false;
unsigned int cmd_flags;
@@ -4304,7 +4304,7 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
else
list_add_tail(&rq->queuelist, &bfqd->dispatch);
} else {
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
idle_timer_disabled = __bfq_insert_request(bfqd, rq);
/*
* Update bfqq, because, if a queue merge has occurred
@@ -4323,7 +4323,7 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
}
}
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
/*
* Cache cmd_flags before releasing scheduler lock, because rq
* may disappear afterwards (for example, because of a request
@@ -4333,7 +4333,7 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
#endif
spin_unlock_irq(&bfqd->lock);
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
if (!bfqq)
return;
/*
diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h
index ac0809c72c98..91c4390903a1 100644
--- a/block/bfq-iosched.h
+++ b/block/bfq-iosched.h
@@ -689,7 +689,7 @@ enum bfqq_expiration {
};
struct bfqg_stats {
-#ifdef CONFIG_BFQ_GROUP_IOSCHED
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
/* number of ios merged */
struct blkg_rwstat merged;
/* total time spent on device in ns, may not be accurate w/ queueing */
@@ -717,7 +717,7 @@ struct bfqg_stats {
uint64_t start_idle_time;
uint64_t start_empty_time;
uint16_t flags;
-#endif /* CONFIG_BFQ_GROUP_IOSCHED */
+#endif /* CONFIG_BFQ_GROUP_IOSCHED && CONFIG_DEBUG_BLK_CGROUP */
};
#ifdef CONFIG_BFQ_GROUP_IOSCHED
--
2.15.1
@@ -0,0 +1,67 @@
From 52257ffbfcaf58d247b13fb148e27ed17c33e526 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Tue, 9 Jan 2018 10:27:58 +0100
Subject: [PATCH] block, bfq: put async queues for root bfq groups too
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
For each pair [device for which bfq is selected as I/O scheduler,
group in blkio/io], bfq maintains a corresponding bfq group. Each such
bfq group contains a set of async queues, with each async queue
created on demand, i.e., when some I/O request arrives for it. On
creation, an async queue gets an extra reference, to make sure that
the queue is not freed as long as its bfq group exists. Accordingly,
to allow the queue to be freed after the group exited, this extra
reference must released on group exit.
The above holds also for a bfq root group, i.e., for the bfq group
corresponding to the root blkio/io root for a given device. Yet, by
mistake, the references to the existing async queues of a root group
are not released when the latter exits. This causes a memory leak when
the instance of bfq for a given device exits. In a similar vein,
bfqg_stats_xfer_dead is not executed for a root group.
This commit fixes bfq_pd_offline so that the latter executes the above
missing operations for a root group too.
Reported-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Reported-by: Guoqing Jiang <gqjiang@suse.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Signed-off-by: Davide Ferrari <davideferrari8@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-cgroup.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
index da1525ec4c87..d819dc77fe65 100644
--- a/block/bfq-cgroup.c
+++ b/block/bfq-cgroup.c
@@ -775,10 +775,11 @@ static void bfq_pd_offline(struct blkg_policy_data *pd)
unsigned long flags;
int i;
+ spin_lock_irqsave(&bfqd->lock, flags);
+
if (!entity) /* root group */
- return;
+ goto put_async_queues;
- spin_lock_irqsave(&bfqd->lock, flags);
/*
* Empty all service_trees belonging to this group before
* deactivating the group itself.
@@ -809,6 +810,8 @@ static void bfq_pd_offline(struct blkg_policy_data *pd)
}
__bfq_deactivate_entity(entity, false);
+
+put_async_queues:
bfq_put_async_queues(bfqd, bfqg);
spin_unlock_irqrestore(&bfqd->lock, flags);
--
2.16.1
@@ -0,0 +1,39 @@
From 0d52af590552473666da5b6111e7182d6cd23f92 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Tue, 9 Jan 2018 10:27:59 +0100
Subject: [PATCH] block, bfq: release oom-queue ref to root group on exit
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
On scheduler init, a reference to the root group, and a reference to
its corresponding blkg are taken for the oom queue. Yet these
references are not released on scheduler exit, which prevents these
objects from be freed. This commit adds the missing reference
releases.
Reported-by: Davide Ferrari <davideferrari8@gmail.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 7bd789da7a29..7c0b7f60811c 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -4893,6 +4893,9 @@ static void bfq_exit_queue(struct elevator_queue *e)
hrtimer_cancel(&bfqd->idle_slice_timer);
+ /* release oom-queue reference to root group */
+ bfqg_and_blkg_put(bfqd->root_group);
+
#ifdef CONFIG_BFQ_GROUP_IOSCHED
blkcg_deactivate_policy(bfqd->queue, &blkcg_policy_bfq);
#else
--
2.16.1
@@ -0,0 +1,225 @@
From 9b25bd0368d562d1929059e8eb9de4102567b923 Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Mon, 4 Dec 2017 11:42:05 +0100
Subject: [PATCH] block, bfq: remove batches of confusing ifdefs
Commit a33801e8b473 ("block, bfq: move debug blkio stats behind
CONFIG_DEBUG_BLK_CGROUP") introduced two batches of confusing ifdefs:
one reported in [1], plus a similar one in another function. This
commit removes both batches, in the way suggested in [1].
[1] https://www.spinics.net/lists/linux-block/msg20043.html
Fixes: a33801e8b473 ("block, bfq: move debug blkio stats behind CONFIG_DEBUG_BLK_CGROUP")
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Tested-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 127 +++++++++++++++++++++++++++++-----------------------
1 file changed, 72 insertions(+), 55 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index e33c5c4c9856..7bd789da7a29 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -3743,35 +3743,16 @@ static struct request *__bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
return rq;
}
-static struct request *bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
-{
- struct bfq_data *bfqd = hctx->queue->elevator->elevator_data;
- struct request *rq;
#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
- struct bfq_queue *in_serv_queue, *bfqq;
- bool waiting_rq, idle_timer_disabled;
-#endif
-
- spin_lock_irq(&bfqd->lock);
-
-#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
- in_serv_queue = bfqd->in_service_queue;
- waiting_rq = in_serv_queue && bfq_bfqq_wait_request(in_serv_queue);
-
- rq = __bfq_dispatch_request(hctx);
-
- idle_timer_disabled =
- waiting_rq && !bfq_bfqq_wait_request(in_serv_queue);
-
-#else
- rq = __bfq_dispatch_request(hctx);
-#endif
- spin_unlock_irq(&bfqd->lock);
+static void bfq_update_dispatch_stats(struct request_queue *q,
+ struct request *rq,
+ struct bfq_queue *in_serv_queue,
+ bool idle_timer_disabled)
+{
+ struct bfq_queue *bfqq = rq ? RQ_BFQQ(rq) : NULL;
-#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
- bfqq = rq ? RQ_BFQQ(rq) : NULL;
if (!idle_timer_disabled && !bfqq)
- return rq;
+ return;
/*
* rq and bfqq are guaranteed to exist until this function
@@ -3786,7 +3767,7 @@ static struct request *bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
* In addition, the following queue lock guarantees that
* bfqq_group(bfqq) exists as well.
*/
- spin_lock_irq(hctx->queue->queue_lock);
+ spin_lock_irq(q->queue_lock);
if (idle_timer_disabled)
/*
* Since the idle timer has been disabled,
@@ -3805,9 +3786,37 @@ static struct request *bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
bfqg_stats_set_start_empty_time(bfqg);
bfqg_stats_update_io_remove(bfqg, rq->cmd_flags);
}
- spin_unlock_irq(hctx->queue->queue_lock);
+ spin_unlock_irq(q->queue_lock);
+}
+#else
+static inline void bfq_update_dispatch_stats(struct request_queue *q,
+ struct request *rq,
+ struct bfq_queue *in_serv_queue,
+ bool idle_timer_disabled) {}
#endif
+static struct request *bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
+{
+ struct bfq_data *bfqd = hctx->queue->elevator->elevator_data;
+ struct request *rq;
+ struct bfq_queue *in_serv_queue;
+ bool waiting_rq, idle_timer_disabled;
+
+ spin_lock_irq(&bfqd->lock);
+
+ in_serv_queue = bfqd->in_service_queue;
+ waiting_rq = in_serv_queue && bfq_bfqq_wait_request(in_serv_queue);
+
+ rq = __bfq_dispatch_request(hctx);
+
+ idle_timer_disabled =
+ waiting_rq && !bfq_bfqq_wait_request(in_serv_queue);
+
+ spin_unlock_irq(&bfqd->lock);
+
+ bfq_update_dispatch_stats(hctx->queue, rq, in_serv_queue,
+ idle_timer_disabled);
+
return rq;
}
@@ -4335,16 +4344,46 @@ static bool __bfq_insert_request(struct bfq_data *bfqd, struct request *rq)
return idle_timer_disabled;
}
+#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
+static void bfq_update_insert_stats(struct request_queue *q,
+ struct bfq_queue *bfqq,
+ bool idle_timer_disabled,
+ unsigned int cmd_flags)
+{
+ if (!bfqq)
+ return;
+
+ /*
+ * bfqq still exists, because it can disappear only after
+ * either it is merged with another queue, or the process it
+ * is associated with exits. But both actions must be taken by
+ * the same process currently executing this flow of
+ * instructions.
+ *
+ * In addition, the following queue lock guarantees that
+ * bfqq_group(bfqq) exists as well.
+ */
+ spin_lock_irq(q->queue_lock);
+ bfqg_stats_update_io_add(bfqq_group(bfqq), bfqq, cmd_flags);
+ if (idle_timer_disabled)
+ bfqg_stats_update_idle_time(bfqq_group(bfqq));
+ spin_unlock_irq(q->queue_lock);
+}
+#else
+static inline void bfq_update_insert_stats(struct request_queue *q,
+ struct bfq_queue *bfqq,
+ bool idle_timer_disabled,
+ unsigned int cmd_flags) {}
+#endif
+
static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
bool at_head)
{
struct request_queue *q = hctx->queue;
struct bfq_data *bfqd = q->elevator->elevator_data;
-#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
struct bfq_queue *bfqq = RQ_BFQQ(rq);
bool idle_timer_disabled = false;
unsigned int cmd_flags;
-#endif
spin_lock_irq(&bfqd->lock);
if (blk_mq_sched_try_insert_merge(q, rq)) {
@@ -4363,7 +4402,6 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
else
list_add_tail(&rq->queuelist, &bfqd->dispatch);
} else {
-#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
idle_timer_disabled = __bfq_insert_request(bfqd, rq);
/*
* Update bfqq, because, if a queue merge has occurred
@@ -4371,9 +4409,6 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
* redirected into a new queue.
*/
bfqq = RQ_BFQQ(rq);
-#else
- __bfq_insert_request(bfqd, rq);
-#endif
if (rq_mergeable(rq)) {
elv_rqhash_add(q, rq);
@@ -4382,35 +4417,17 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
}
}
-#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
/*
* Cache cmd_flags before releasing scheduler lock, because rq
* may disappear afterwards (for example, because of a request
* merge).
*/
cmd_flags = rq->cmd_flags;
-#endif
+
spin_unlock_irq(&bfqd->lock);
-#if defined(CONFIG_BFQ_GROUP_IOSCHED) && defined(CONFIG_DEBUG_BLK_CGROUP)
- if (!bfqq)
- return;
- /*
- * bfqq still exists, because it can disappear only after
- * either it is merged with another queue, or the process it
- * is associated with exits. But both actions must be taken by
- * the same process currently executing this flow of
- * instruction.
- *
- * In addition, the following queue lock guarantees that
- * bfqq_group(bfqq) exists as well.
- */
- spin_lock_irq(q->queue_lock);
- bfqg_stats_update_io_add(bfqq_group(bfqq), bfqq, cmd_flags);
- if (idle_timer_disabled)
- bfqg_stats_update_idle_time(bfqq_group(bfqq));
- spin_unlock_irq(q->queue_lock);
-#endif
+ bfq_update_insert_stats(q, bfqq, idle_timer_disabled,
+ cmd_flags);
}
static void bfq_insert_requests(struct blk_mq_hw_ctx *hctx,
--
2.15.1
@@ -0,0 +1,112 @@
From 4403e4e467c365b4189e3e3d3ad35cf67b8c36ed Mon Sep 17 00:00:00 2001
From: Angelo Ruocco <angeloruocco90@gmail.com>
Date: Wed, 20 Dec 2017 12:38:34 +0100
Subject: [PATCH] block, bfq: remove superfluous check in queue-merging setup
When two or more processes do I/O in a way that the their requests are
sequential in respect to one another, BFQ merges the bfq_queues associated
with the processes. This way the overall I/O pattern becomes sequential,
and thus there is a boost in througput.
These cooperating processes usually start or restart to do I/O shortly
after each other. So, in order to avoid merging non-cooperating processes,
BFQ ensures that none of these queues has been in weight raising for too
long.
In this respect, from commit "block, bfq-sq, bfq-mq: let a queue be merged
only shortly after being created", BFQ checks whether any queue (and not
only weight-raised ones) is doing I/O continuously from too long to be
merged.
This new additional check makes the first one useless: a queue doing
I/O from long enough, if being weight-raised, is also a queue in
weight raising for too long to be merged. Accordingly, this commit
removes the first check.
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/bfq-iosched.c | 36 +++++-------------------------------
1 file changed, 5 insertions(+), 31 deletions(-)
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 7066d90f09df..9625550b2f85 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -1990,20 +1990,6 @@ static bool bfq_may_be_close_cooperator(struct bfq_queue *bfqq,
return true;
}
-/*
- * If this function returns true, then bfqq cannot be merged. The idea
- * is that true cooperation happens very early after processes start
- * to do I/O. Usually, late cooperations are just accidental false
- * positives. In case bfqq is weight-raised, such false positives
- * would evidently degrade latency guarantees for bfqq.
- */
-static bool wr_from_too_long(struct bfq_queue *bfqq)
-{
- return bfqq->wr_coeff > 1 &&
- time_is_before_jiffies(bfqq->last_wr_start_finish +
- msecs_to_jiffies(100));
-}
-
/*
* Attempt to schedule a merge of bfqq with the currently in-service
* queue or with a close queue among the scheduled queues. Return
@@ -2017,11 +2003,6 @@ static bool wr_from_too_long(struct bfq_queue *bfqq)
* to maintain. Besides, in such a critical condition as an out of memory,
* the benefits of queue merging may be little relevant, or even negligible.
*
- * Weight-raised queues can be merged only if their weight-raising
- * period has just started. In fact cooperating processes are usually
- * started together. Thus, with this filter we avoid false positives
- * that would jeopardize low-latency guarantees.
- *
* WARNING: queue merging may impair fairness among non-weight raised
* queues, for at least two reasons: 1) the original weight of a
* merged queue may change during the merged state, 2) even being the
@@ -2052,9 +2033,7 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
if (bfqq->new_bfqq)
return bfqq->new_bfqq;
- if (!io_struct ||
- wr_from_too_long(bfqq) ||
- unlikely(bfqq == &bfqd->oom_bfqq))
+ if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq))
return NULL;
/* If there is only one backlogged queue, don't search. */
@@ -2063,12 +2042,9 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
in_service_bfqq = bfqd->in_service_queue;
- if (!in_service_bfqq || in_service_bfqq == bfqq
- || wr_from_too_long(in_service_bfqq) ||
- unlikely(in_service_bfqq == &bfqd->oom_bfqq))
- goto check_scheduled;
-
- if (bfq_rq_close_to_sector(io_struct, request, bfqd->last_position) &&
+ if (in_service_bfqq && in_service_bfqq != bfqq &&
+ likely(in_service_bfqq != &bfqd->oom_bfqq) &&
+ bfq_rq_close_to_sector(io_struct, request, bfqd->last_position) &&
bfqq->entity.parent == in_service_bfqq->entity.parent &&
bfq_may_be_close_cooperator(bfqq, in_service_bfqq)) {
new_bfqq = bfq_setup_merge(bfqq, in_service_bfqq);
@@ -2080,12 +2056,10 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
* queues. The only thing we need is that the bio/request is not
* NULL, as we need it to establish whether a cooperator exists.
*/
-check_scheduled:
new_bfqq = bfq_find_close_cooperator(bfqd, bfqq,
bfq_io_struct_pos(io_struct, request));
- if (new_bfqq && !wr_from_too_long(new_bfqq) &&
- likely(new_bfqq != &bfqd->oom_bfqq) &&
+ if (new_bfqq && likely(new_bfqq != &bfqd->oom_bfqq) &&
bfq_may_be_close_cooperator(bfqq, new_bfqq))
return bfq_setup_merge(bfqq, new_bfqq);
--
2.15.1
@@ -0,0 +1,283 @@
From 24bfd19bb7890255693ee5cb6dc100d8d215d00b Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Mon, 13 Nov 2017 07:34:09 +0100
Subject: [PATCH] block, bfq: update blkio stats outside the scheduler lock
bfq invokes various blkg_*stats_* functions to update the statistics
contained in the special files blkio.bfq.* in the blkio controller
groups, i.e., the I/O accounting related to the proportional-share
policy provided by bfq. The execution of these functions takes a
considerable percentage, about 40%, of the total per-request execution
time of bfq (i.e., of the sum of the execution time of all the bfq
functions that have to be executed to process an I/O request from its
creation to its destruction). This reduces the request-processing
rate sustainable by bfq noticeably, even on a multicore CPU. In fact,
the bfq functions that invoke blkg_*stats_* functions cannot be
executed in parallel with the rest of the code of bfq, because both
are executed under the same same per-device scheduler lock.
To reduce this slowdown, this commit moves, wherever possible, the
invocation of these functions (more precisely, of the bfq functions
that invoke blkg_*stats_* functions) outside the critical sections
protected by the scheduler lock.
With this change, and with all blkio.bfq.* statistics enabled, the
throughput grows, e.g., from 250 to 310 KIOPS (+25%) on an Intel
i7-4850HQ, in case of 8 threads doing random I/O in parallel on
null_blk, with the latter configured with 0 latency. We obtained the
same or higher throughput boosts, up to +30%, with other processors
(some figures are reported in the documentation). For our tests, we
used the script [1], with which our results can be easily reproduced.
NOTE. This commit still protects the invocation of blkg_*stats_*
functions with the request_queue lock, because the group these
functions are invoked on may otherwise disappear before or while these
functions are executed. Fortunately, tests without even this lock
show, by difference, that the serialization caused by this lock has a
little impact (at most ~5% of throughput reduction).
[1] https://github.com/Algodev-github/IOSpeed
Tested-by: Lee Tibbert <lee.tibbert@gmail.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
Documentation/block/bfq-iosched.txt | 6 +-
block/bfq-iosched.c | 110 ++++++++++++++++++++++++++++++++----
block/bfq-wf2q.c | 1 -
3 files changed, 102 insertions(+), 15 deletions(-)
diff --git a/Documentation/block/bfq-iosched.txt b/Documentation/block/bfq-iosched.txt
index 7a9361508157..7fad6c061470 100644
--- a/Documentation/block/bfq-iosched.txt
+++ b/Documentation/block/bfq-iosched.txt
@@ -26,9 +26,9 @@ the limits on slow or average CPUs, here are BFQ limits for three
different CPUs, on, respectively, an average laptop, an old desktop,
and a cheap embedded system, in case full hierarchical support is
enabled (i.e., CONFIG_BFQ_GROUP_IOSCHED is set):
-- Intel i7-4850HQ: 250 KIOPS
-- AMD A8-3850: 170 KIOPS
-- ARM CortexTM-A53 Octa-core: 45 KIOPS
+- Intel i7-4850HQ: 310 KIOPS
+- AMD A8-3850: 200 KIOPS
+- ARM CortexTM-A53 Octa-core: 56 KIOPS
BFQ works for multi-queue devices too.
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 91703eba63f0..69e05f861daf 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -2228,7 +2228,6 @@ static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
struct bfq_queue *bfqq)
{
if (bfqq) {
- bfqg_stats_update_avg_queue_size(bfqq_group(bfqq));
bfq_clear_bfqq_fifo_expire(bfqq);
bfqd->budgets_assigned = (bfqd->budgets_assigned * 7 + 256) / 8;
@@ -3469,7 +3468,6 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
*/
bfq_clear_bfqq_wait_request(bfqq);
hrtimer_try_to_cancel(&bfqd->idle_slice_timer);
- bfqg_stats_update_idle_time(bfqq_group(bfqq));
}
goto keep_queue;
}
@@ -3695,15 +3693,67 @@ static struct request *bfq_dispatch_request(struct blk_mq_hw_ctx *hctx)
{
struct bfq_data *bfqd = hctx->queue->elevator->elevator_data;
struct request *rq;
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
+ struct bfq_queue *in_serv_queue, *bfqq;
+ bool waiting_rq, idle_timer_disabled;
+#endif
spin_lock_irq(&bfqd->lock);
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
+ in_serv_queue = bfqd->in_service_queue;
+ waiting_rq = in_serv_queue && bfq_bfqq_wait_request(in_serv_queue);
+
+ rq = __bfq_dispatch_request(hctx);
+
+ idle_timer_disabled =
+ waiting_rq && !bfq_bfqq_wait_request(in_serv_queue);
+
+#else
rq = __bfq_dispatch_request(hctx);
- if (rq && RQ_BFQQ(rq))
- bfqg_stats_update_io_remove(bfqq_group(RQ_BFQQ(rq)),
- rq->cmd_flags);
+#endif
spin_unlock_irq(&bfqd->lock);
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
+ bfqq = rq ? RQ_BFQQ(rq) : NULL;
+ if (!idle_timer_disabled && !bfqq)
+ return rq;
+
+ /*
+ * rq and bfqq are guaranteed to exist until this function
+ * ends, for the following reasons. First, rq can be
+ * dispatched to the device, and then can be completed and
+ * freed, only after this function ends. Second, rq cannot be
+ * merged (and thus freed because of a merge) any longer,
+ * because it has already started. Thus rq cannot be freed
+ * before this function ends, and, since rq has a reference to
+ * bfqq, the same guarantee holds for bfqq too.
+ *
+ * In addition, the following queue lock guarantees that
+ * bfqq_group(bfqq) exists as well.
+ */
+ spin_lock_irq(hctx->queue->queue_lock);
+ if (idle_timer_disabled)
+ /*
+ * Since the idle timer has been disabled,
+ * in_serv_queue contained some request when
+ * __bfq_dispatch_request was invoked above, which
+ * implies that rq was picked exactly from
+ * in_serv_queue. Thus in_serv_queue == bfqq, and is
+ * therefore guaranteed to exist because of the above
+ * arguments.
+ */
+ bfqg_stats_update_idle_time(bfqq_group(in_serv_queue));
+ if (bfqq) {
+ struct bfq_group *bfqg = bfqq_group(bfqq);
+
+ bfqg_stats_update_avg_queue_size(bfqg);
+ bfqg_stats_set_start_empty_time(bfqg);
+ bfqg_stats_update_io_remove(bfqg, rq->cmd_flags);
+ }
+ spin_unlock_irq(hctx->queue->queue_lock);
+#endif
+
return rq;
}
@@ -4161,7 +4211,6 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
*/
bfq_clear_bfqq_wait_request(bfqq);
hrtimer_try_to_cancel(&bfqd->idle_slice_timer);
- bfqg_stats_update_idle_time(bfqq_group(bfqq));
/*
* The queue is not empty, because a new request just
@@ -4176,10 +4225,12 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
}
}
-static void __bfq_insert_request(struct bfq_data *bfqd, struct request *rq)
+/* returns true if it causes the idle timer to be disabled */
+static bool __bfq_insert_request(struct bfq_data *bfqd, struct request *rq)
{
struct bfq_queue *bfqq = RQ_BFQQ(rq),
*new_bfqq = bfq_setup_cooperator(bfqd, bfqq, rq, true);
+ bool waiting, idle_timer_disabled = false;
if (new_bfqq) {
if (bic_to_bfqq(RQ_BIC(rq), 1) != bfqq)
@@ -4213,12 +4264,16 @@ static void __bfq_insert_request(struct bfq_data *bfqd, struct request *rq)
bfqq = new_bfqq;
}
+ waiting = bfqq && bfq_bfqq_wait_request(bfqq);
bfq_add_request(rq);
+ idle_timer_disabled = waiting && !bfq_bfqq_wait_request(bfqq);
rq->fifo_time = ktime_get_ns() + bfqd->bfq_fifo_expire[rq_is_sync(rq)];
list_add_tail(&rq->queuelist, &bfqq->fifo);
bfq_rq_enqueued(bfqd, bfqq, rq);
+
+ return idle_timer_disabled;
}
static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
@@ -4226,7 +4281,11 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
{
struct request_queue *q = hctx->queue;
struct bfq_data *bfqd = q->elevator->elevator_data;
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
struct bfq_queue *bfqq = RQ_BFQQ(rq);
+ bool idle_timer_disabled = false;
+ unsigned int cmd_flags;
+#endif
spin_lock_irq(&bfqd->lock);
if (blk_mq_sched_try_insert_merge(q, rq)) {
@@ -4245,13 +4304,17 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
else
list_add_tail(&rq->queuelist, &bfqd->dispatch);
} else {
- __bfq_insert_request(bfqd, rq);
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
+ idle_timer_disabled = __bfq_insert_request(bfqd, rq);
/*
* Update bfqq, because, if a queue merge has occurred
* in __bfq_insert_request, then rq has been
* redirected into a new queue.
*/
bfqq = RQ_BFQQ(rq);
+#else
+ __bfq_insert_request(bfqd, rq);
+#endif
if (rq_mergeable(rq)) {
elv_rqhash_add(q, rq);
@@ -4260,10 +4323,35 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
}
}
- if (bfqq)
- bfqg_stats_update_io_add(bfqq_group(bfqq), bfqq, rq->cmd_flags);
-
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
+ /*
+ * Cache cmd_flags before releasing scheduler lock, because rq
+ * may disappear afterwards (for example, because of a request
+ * merge).
+ */
+ cmd_flags = rq->cmd_flags;
+#endif
spin_unlock_irq(&bfqd->lock);
+
+#ifdef CONFIG_BFQ_GROUP_IOSCHED
+ if (!bfqq)
+ return;
+ /*
+ * bfqq still exists, because it can disappear only after
+ * either it is merged with another queue, or the process it
+ * is associated with exits. But both actions must be taken by
+ * the same process currently executing this flow of
+ * instruction.
+ *
+ * In addition, the following queue lock guarantees that
+ * bfqq_group(bfqq) exists as well.
+ */
+ spin_lock_irq(q->queue_lock);
+ bfqg_stats_update_io_add(bfqq_group(bfqq), bfqq, cmd_flags);
+ if (idle_timer_disabled)
+ bfqg_stats_update_idle_time(bfqq_group(bfqq));
+ spin_unlock_irq(q->queue_lock);
+#endif
}
static void bfq_insert_requests(struct blk_mq_hw_ctx *hctx,
diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c
index 414ba686a847..e495d3f9b4b0 100644
--- a/block/bfq-wf2q.c
+++ b/block/bfq-wf2q.c
@@ -843,7 +843,6 @@ void bfq_bfqq_served(struct bfq_queue *bfqq, int served)
st->vtime += bfq_delta(served, st->wsum);
bfq_forget_idle(st);
}
- bfqg_stats_set_start_empty_time(bfqq_group(bfqq));
bfq_log_bfqq(bfqq->bfqd, bfqq, "bfqq_served %d secs", served);
}
--
2.15.1
@@ -0,0 +1,61 @@
From 68017e5d87a2477d40476f1a0a06f202ee79316b Mon Sep 17 00:00:00 2001
From: Paolo Valente <paolo.valente@linaro.org>
Date: Mon, 13 Nov 2017 07:34:07 +0100
Subject: [PATCH] doc, block, bfq: update max IOPS sustainable with BFQ
We have investigated more deeply the performance of BFQ, in terms of
number of IOPS that can be processed by the CPU when BFQ is used as
I/O scheduler. In more detail, using the script [1], we have measured
the number of IOPS reached on top of a null block device configured
with zero latency, as a function of the workload (sequential read,
sequential write, random read, random write) and of the system (we
considered desktops, laptops and embedded systems).
Basing on the resulting figures, with this commit we update the
current, conservative IOPS range reported in BFQ documentation. In
particular, the documentation now reports, for each of three different
systems, the lowest number of IOPS obtained for that system with the
above test (namely, the value obtained with the workload leading to
the lowest IOPS).
[1] https://github.com/Algodev-github/IOSpeed
Reviewed-by: Lee Tibbert <lee.tibbert@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
Documentation/block/bfq-iosched.txt | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/Documentation/block/bfq-iosched.txt b/Documentation/block/bfq-iosched.txt
index 3d6951d63489..7a9361508157 100644
--- a/Documentation/block/bfq-iosched.txt
+++ b/Documentation/block/bfq-iosched.txt
@@ -20,12 +20,17 @@ for that device, by setting low_latency to 0. See Section 3 for
details on how to configure BFQ for the desired tradeoff between
latency and throughput, or on how to maximize throughput.
-On average CPUs, the current version of BFQ can handle devices
-performing at most ~30K IOPS; at most ~50 KIOPS on faster CPUs. As a
-reference, 30-50 KIOPS correspond to very high bandwidths with
-sequential I/O (e.g., 8-12 GB/s if I/O requests are 256 KB large), and
-to 120-200 MB/s with 4KB random I/O. BFQ is currently being tested on
-multi-queue devices too.
+BFQ has a non-null overhead, which limits the maximum IOPS that the
+CPU can process for a device scheduled with BFQ. To give an idea of
+the limits on slow or average CPUs, here are BFQ limits for three
+different CPUs, on, respectively, an average laptop, an old desktop,
+and a cheap embedded system, in case full hierarchical support is
+enabled (i.e., CONFIG_BFQ_GROUP_IOSCHED is set):
+- Intel i7-4850HQ: 250 KIOPS
+- AMD A8-3850: 170 KIOPS
+- ARM CortexTM-A53 Octa-core: 45 KIOPS
+
+BFQ works for multi-queue devices too.
The table of contents follow. Impatients can just jump to Section 3.
--
2.13.6
@@ -0,0 +1,431 @@
fs/aufs/Kconfig | 2 +-
fs/dcache.c | 2 ++
fs/exec.c | 1 +
fs/fcntl.c | 1 +
fs/file_table.c | 4 ++++
fs/inode.c | 1 +
fs/namespace.c | 2 ++
fs/notify/group.c | 4 ++++
fs/notify/mark.c | 4 ++++
fs/open.c | 2 ++
fs/read_write.c | 4 ++++
fs/splice.c | 2 ++
fs/sync.c | 1 +
fs/xattr.c | 1 +
kernel/task_work.c | 1 +
security/commoncap.c | 2 ++
security/device_cgroup.c | 2 ++
security/security.c | 10 ++++++++++
18 files changed, 45 insertions(+), 1 deletion(-)
diff -Nurp linux-4.14.14-aufs/fs/aufs/Kconfig linux-4.14.14-aufs.mod/fs/aufs/Kconfig
--- linux-4.14.14-aufs/fs/aufs/Kconfig 2018-01-17 11:17:42.191975391 +0200
+++ linux-4.14.14-aufs.mod/fs/aufs/Kconfig 2018-01-17 11:18:22.784556755 +0200
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
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.14.14-aufs/fs/dcache.c linux-4.14.14-aufs.mod/fs/dcache.c
--- linux-4.14.14-aufs/fs/dcache.c 2018-01-17 11:17:42.200975519 +0200
+++ linux-4.14.14-aufs.mod/fs/dcache.c 2018-01-17 11:18:22.784556755 +0200
@@ -1305,6 +1305,7 @@ rename_retry:
seq = 1;
goto again;
}
+EXPORT_SYMBOL_GPL(d_walk);
struct check_mount {
struct vfsmount *mnt;
@@ -2894,6 +2895,7 @@ void d_exchange(struct dentry *dentry1,
write_sequnlock(&rename_lock);
}
+EXPORT_SYMBOL_GPL(d_exchange);
/**
* d_ancestor - search for an ancestor
diff -Nurp linux-4.14.14-aufs/fs/exec.c linux-4.14.14-aufs.mod/fs/exec.c
--- linux-4.14.14-aufs/fs/exec.c 2018-01-17 11:08:18.957908605 +0200
+++ linux-4.14.14-aufs.mod/fs/exec.c 2018-01-17 11:18:22.785556770 +0200
@@ -109,6 +109,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.14.14-aufs/fs/fcntl.c linux-4.14.14-aufs.mod/fs/fcntl.c
--- linux-4.14.14-aufs/fs/fcntl.c 2018-01-17 11:17:42.200975519 +0200
+++ linux-4.14.14-aufs.mod/fs/fcntl.c 2018-01-17 11:18:22.785556770 +0200
@@ -85,6 +85,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.14.14-aufs/fs/file_table.c linux-4.14.14-aufs.mod/fs/file_table.c
--- linux-4.14.14-aufs/fs/file_table.c 2017-11-12 20:46:13.000000000 +0200
+++ linux-4.14.14-aufs.mod/fs/file_table.c 2018-01-17 11:18:22.785556770 +0200
@@ -148,6 +148,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.14.14-aufs/fs/inode.c linux-4.14.14-aufs.mod/fs/inode.c
--- linux-4.14.14-aufs/fs/inode.c 2018-01-17 11:17:42.200975519 +0200
+++ linux-4.14.14-aufs.mod/fs/inode.c 2018-01-17 11:18:22.785556770 +0200
@@ -1664,6 +1664,7 @@ int update_time(struct inode *inode, str
return update_time(inode, time, flags);
}
+EXPORT_SYMBOL_GPL(update_time);
/**
* touch_atime - update the access time
diff -Nurp linux-4.14.14-aufs/fs/namespace.c linux-4.14.14-aufs.mod/fs/namespace.c
--- linux-4.14.14-aufs/fs/namespace.c 2018-01-17 11:17:42.201975534 +0200
+++ linux-4.14.14-aufs.mod/fs/namespace.c 2018-01-17 11:18:22.785556770 +0200
@@ -517,6 +517,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
@@ -1887,6 +1888,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.14.14-aufs/fs/notify/group.c linux-4.14.14-aufs.mod/fs/notify/group.c
--- linux-4.14.14-aufs/fs/notify/group.c 2017-11-12 20:46:13.000000000 +0200
+++ linux-4.14.14-aufs.mod/fs/notify/group.c 2018-01-17 11:18:22.786556784 +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"
@@ -109,6 +110,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.
@@ -118,6 +120,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.
@@ -147,6 +150,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.14.14-aufs/fs/notify/mark.c linux-4.14.14-aufs.mod/fs/notify/mark.c
--- linux-4.14.14-aufs/fs/notify/mark.c 2018-01-17 11:08:18.963908691 +0200
+++ linux-4.14.14-aufs.mod/fs/notify/mark.c 2018-01-17 11:18:22.786556784 +0200
@@ -124,6 +124,7 @@ static void __fsnotify_recalc_mask(struc
else if (conn->flags & FSNOTIFY_OBJ_TYPE_VFSMOUNT)
real_mount(conn->mnt)->mnt_fsnotify_mask = new_mask;
}
+EXPORT_SYMBOL_GPL(fsnotify_put_mark);
/*
* Calculate mask of events for a list of marks. The caller must make sure
@@ -271,6 +272,7 @@ static bool fsnotify_get_mark_safe(struc
}
return false;
}
+EXPORT_SYMBOL_GPL(fsnotify_destroy_mark);
/*
* Puts marks and wakes up group destruction if necessary.
@@ -428,6 +430,7 @@ int fsnotify_compare_groups(struct fsnot
return 1;
return -1;
}
+EXPORT_SYMBOL_GPL(fsnotify_add_mark);
static int fsnotify_attach_connector_to_object(
struct fsnotify_mark_connector __rcu **connp,
@@ -557,6 +560,7 @@ out_err:
spin_unlock(&mark->lock);
return err;
}
+EXPORT_SYMBOL_GPL(fsnotify_init_mark);
/*
* Attach an initialized mark to a given group and fs object.
diff -Nurp linux-4.14.14-aufs/fs/open.c linux-4.14.14-aufs.mod/fs/open.c
--- linux-4.14.14-aufs/fs/open.c 2017-11-12 20:46:13.000000000 +0200
+++ linux-4.14.14-aufs.mod/fs/open.c 2018-01-17 11:18:22.786556784 +0200
@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, l
inode_unlock(dentry->d_inode);
return ret;
}
+EXPORT_SYMBOL_GPL(do_truncate);
long vfs_truncate(const struct path *path, loff_t length)
{
@@ -691,6 +692,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.14.14-aufs/fs/read_write.c linux-4.14.14-aufs.mod/fs/read_write.c
--- linux-4.14.14-aufs/fs/read_write.c 2018-01-17 11:17:42.201975534 +0200
+++ linux-4.14.14-aufs.mod/fs/read_write.c 2018-01-17 11:18:22.790556841 +0200
@@ -454,6 +454,7 @@ ssize_t vfs_read(struct file *file, char
return ret;
}
+EXPORT_SYMBOL_GPL(vfs_read);
static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
{
@@ -494,6 +495,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)
{
@@ -505,6 +507,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 void *buf, size_t count, loff_t *pos)
{
@@ -574,6 +577,7 @@ ssize_t vfs_write(struct file *file, con
return ret;
}
+EXPORT_SYMBOL_GPL(vfs_write);
static inline loff_t file_pos_read(struct file *file)
{
diff -Nurp linux-4.14.14-aufs/fs/splice.c linux-4.14.14-aufs.mod/fs/splice.c
--- linux-4.14.14-aufs/fs/splice.c 2018-01-17 11:17:42.201975534 +0200
+++ linux-4.14.14-aufs.mod/fs/splice.c 2018-01-17 11:18:22.791556855 +0200
@@ -850,6 +850,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.
@@ -879,6 +880,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.14.14-aufs/fs/sync.c linux-4.14.14-aufs.mod/fs/sync.c
--- linux-4.14.14-aufs/fs/sync.c 2018-01-17 11:17:42.201975534 +0200
+++ linux-4.14.14-aufs.mod/fs/sync.c 2018-01-17 11:18:22.791556855 +0200
@@ -39,6 +39,7 @@ int __sync_filesystem(struct super_block
sb->s_op->sync_fs(sb, wait);
return __sync_blockdev(sb->s_bdev, wait);
}
+EXPORT_SYMBOL_GPL(__sync_filesystem);
/*
* Write out and wait upon all dirty data associated with this
diff -Nurp linux-4.14.14-aufs/fs/xattr.c linux-4.14.14-aufs.mod/fs/xattr.c
--- linux-4.14.14-aufs/fs/xattr.c 2017-11-12 20:46:13.000000000 +0200
+++ linux-4.14.14-aufs.mod/fs/xattr.c 2018-01-17 11:18:22.791556855 +0200
@@ -297,6 +297,7 @@ vfs_getxattr_alloc(struct dentry *dentry
*xattr_value = value;
return error;
}
+EXPORT_SYMBOL_GPL(vfs_getxattr_alloc);
ssize_t
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
diff -Nurp linux-4.14.14-aufs/kernel/task_work.c linux-4.14.14-aufs.mod/kernel/task_work.c
--- linux-4.14.14-aufs/kernel/task_work.c 2018-01-17 11:08:18.979908919 +0200
+++ linux-4.14.14-aufs.mod/kernel/task_work.c 2018-01-17 11:18:22.791556855 +0200
@@ -116,3 +116,4 @@ void task_work_run(void)
} while (work);
}
}
+EXPORT_SYMBOL_GPL(task_work_run);
diff -Nurp linux-4.14.14-aufs/security/commoncap.c linux-4.14.14-aufs.mod/security/commoncap.c
--- linux-4.14.14-aufs/security/commoncap.c 2018-01-17 11:08:18.999909204 +0200
+++ linux-4.14.14-aufs.mod/security/commoncap.c 2018-01-17 11:18:22.791556855 +0200
@@ -1267,12 +1267,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.14.14-aufs/security/device_cgroup.c linux-4.14.14-aufs.mod/security/device_cgroup.c
--- linux-4.14.14-aufs/security/device_cgroup.c 2017-11-12 20:46:13.000000000 +0200
+++ linux-4.14.14-aufs.mod/security/device_cgroup.c 2018-01-17 11:18:22.791556855 +0200
@@ -8,6 +8,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>
@@ -850,6 +851,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.14.14-aufs/security/security.c linux-4.14.14-aufs.mod/security/security.c
--- linux-4.14.14-aufs/security/security.c 2017-11-12 20:46:13.000000000 +0200
+++ linux-4.14.14-aufs.mod/security/security.c 2018-01-17 11:18:22.791556855 +0200
@@ -530,6 +530,7 @@ int security_path_rmdir(const struct pat
return 0;
return call_int_hook(path_rmdir, 0, dir, dentry);
}
+EXPORT_SYMBOL_GPL(security_path_rmdir);
int security_path_unlink(const struct path *dir, struct dentry *dentry)
{
@@ -546,6 +547,7 @@ int security_path_symlink(const struct p
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, const struct path *new_dir,
struct dentry *new_dentry)
@@ -554,6 +556,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(const struct path *old_dir, struct dentry *old_dentry,
const struct path *new_dir, struct dentry *new_dentry,
@@ -581,6 +584,7 @@ int security_path_truncate(const struct
return 0;
return call_int_hook(path_truncate, 0, path);
}
+EXPORT_SYMBOL_GPL(security_path_truncate);
int security_path_chmod(const struct path *path, umode_t mode)
{
@@ -588,6 +592,7 @@ int security_path_chmod(const struct pat
return 0;
return call_int_hook(path_chmod, 0, path, mode);
}
+EXPORT_SYMBOL_GPL(security_path_chmod);
int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
{
@@ -595,6 +600,7 @@ int security_path_chown(const struct pat
return 0;
return call_int_hook(path_chown, 0, path, uid, gid);
}
+EXPORT_SYMBOL_GPL(security_path_chown);
int security_path_chroot(const struct path *path)
{
@@ -680,6 +686,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)
@@ -695,6 +702,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)
{
@@ -866,6 +874,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)
{
@@ -925,6 +934,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)
{
@@ -0,0 +1,27 @@
arm build fails with:
n file included from fs/aufs/aufs.h:31:0,
from fs/aufs/module.c:11:
fs/aufs/file.h: In function 'au_do_vm_file_reset':
fs/aufs/file.h:273:9: error: dereferencing pointer to incomplete type 'struct vm_area_struct'
f = vma->vm_file;
^
on x86(64) we seem to get covered by implict inclusion.
So explicitly include it to avoid subtle breakage
Signed-off-by: Thomas Backlund <tmb@mageia.org>
---
--- ./fs/aufs/file.h.orig
+++ ./fs/aufs/file.h
@@ -15,6 +15,7 @@
#include <linux/fs.h>
#include <linux/mm_types.h>
#include <linux/poll.h>
+#include <linux/vmalloc.h>
#include "rwsem.h"
struct au_branch;
@@ -1,97 +0,0 @@
From 8726f2faa371514fba2f594d799db95203dfeee0 Mon Sep 17 00:00:00 2001
From: Francisco Jerez <currojerez@riseup.net>
Date: Thu, 12 Jan 2017 12:44:54 +0200
Subject: drm/i915: Remove WaDisableLSQCROPERFforOCL KBL workaround.
The WaDisableLSQCROPERFforOCL workaround has the side effect of
disabling an L3SQ optimization that has huge performance implications
and is unlikely to be necessary for the correct functioning of usual
graphic workloads. Userspace is free to re-enable the workaround on
demand, and is generally in a better position to determine whether the
workaround is necessary than the DRM is (e.g. only during the
execution of compute kernels that rely on both L3 fences and HDC R/W
requests).
The same workaround seems to apply to BDW (at least to production
stepping G1) and SKL as well (the internal workaround database claims
that it does for all steppings, while the BSpec workaround table only
mentions pre-production steppings), but the DRM doesn't do anything
beyond whitelisting the L3SQCREG4 register so userspace can enable it
when it sees fit. Do the same on KBL platforms.
Improves performance of the GFXBench4 gl_manhattan31 benchmark by 60%,
and gl_4 (AKA car chase) by 14% on a KBL GT2 running Mesa master --
This is followed by a regression of 35% and 10% respectively for the
same benchmarks and platform caused by my recent patch series
switching userspace to use the dataport constant cache instead of the
sampler to implement uniform pull constant loads, which caused us to
hit more heavily the L3 cache (and on platforms other than KBL had the
opposite effect of improving performance of the same two benchmarks).
The overall effect on KBL of this change combined with the recent
userspace change is respectively 4.6% and 2.6%. SynMark2 OglShMapPcf
was affected by the constant cache changes (though it improved as it
did on other platforms rather than regressing), but is not
significantly affected by this patch (with statistical significance of
5% and sample size 20).
v2: Drop some more code to avoid unused variable warning.
Fixes: 738fa1b3123f ("drm/i915/kbl: Add WaDisableLSQCROPERFforOCL")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99256
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Cc: Eero Tamminen <eero.t.tamminen@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Cc: beignet@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v4.7+
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
[Removed double Fixes tag]
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1484217894-20505-1-git-send-email-mika.kuoppala@intel.com
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index db714dc..8acab87 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -970,18 +970,8 @@ static inline int gen8_emit_flush_coherentl3_wa(struct intel_engine_cs *engine,
uint32_t *batch,
uint32_t index)
{
- struct drm_i915_private *dev_priv = engine->i915;
uint32_t l3sqc4_flush = (0x40400000 | GEN8_LQSC_FLUSH_COHERENT_LINES);
- /*
- * WaDisableLSQCROPERFforOCL:kbl
- * This WA is implemented in skl_init_clock_gating() but since
- * this batch updates GEN8_L3SQCREG4 with default value we need to
- * set this bit here to retain the WA during flush.
- */
- if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_E0))
- l3sqc4_flush |= GEN8_LQSC_RO_PERF_DIS;
-
wa_ctx_emit(batch, index, (MI_STORE_REGISTER_MEM_GEN8 |
MI_SRM_LRM_GLOBAL_GTT));
wa_ctx_emit_reg(batch, index, GEN8_L3SQCREG4);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index ab83fc2..49fa800 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1095,14 +1095,6 @@ static int kbl_init_workarounds(struct intel_engine_cs *engine)
WA_SET_BIT_MASKED(HDC_CHICKEN0,
HDC_FENCE_DEST_SLM_DISABLE);
- /* GEN8_L3SQCREG4 has a dependency with WA batch so any new changes
- * involving this register should also be added to WA batch as required.
- */
- if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_E0))
- /* WaDisableLSQCROPERFforOCL:kbl */
- I915_WRITE(GEN8_L3SQCREG4, I915_READ(GEN8_L3SQCREG4) |
- GEN8_LQSC_RO_PERF_DIS);
-
/* WaToEnableHwFixForPushConstHWBug:kbl */
if (IS_KBL_REVID(dev_priv, KBL_REVID_C0, REVID_FOREVER))
WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
--
cgit v0.10.2
@@ -1,127 +0,0 @@
From a117f378f44150e6d13d2f19740fb757425b651f Mon Sep 17 00:00:00 2001
From: Jani Nikula <jani.nikula@intel.com>
Date: Fri, 16 Sep 2016 16:59:44 +0300
Subject: drm/i915/skl: drop workarounds for A0 and B0 revisions
Pre-production hardware is not supported.
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/7929af62a68504c84038a8db1625bd96ebaa9e6f.1474034059.git.jani.nikula@intel.com
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 0568fb5..57da2b7 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1299,10 +1299,6 @@ bool intel_dp_source_supports_hbr2(struct intel_dp *intel_dp)
struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
struct drm_device *dev = dig_port->base.base.dev;
- /* WaDisableHBR2:skl */
- if (IS_SKL_REVID(dev, 0, SKL_REVID_B0))
- return false;
-
if ((IS_HASWELL(dev) && !IS_HSW_ULX(dev)) || IS_BROADWELL(dev) ||
(INTEL_INFO(dev)->gen >= 9))
return true;
diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
index c438b02..0048b52 100644
--- a/drivers/gpu/drm/i915/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
@@ -225,9 +225,6 @@ static u32 intel_dp_training_pattern(struct intel_dp *intel_dp)
* Intel platforms that support HBR2 also support TPS3. TPS3 support is
* also mandatory for downstream devices that support HBR2. However, not
* all sinks follow the spec.
- *
- * Due to WaDisableHBR2 SKL < B0 is the only exception where TPS3 is
- * supported in source but still not enabled.
*/
source_tps3 = intel_dp_source_supports_hbr2(intel_dp);
sink_tps3 = drm_dp_tps3_supported(intel_dp->dpcd);
diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
index 6fd39ef..acc1dbd 100644
--- a/drivers/gpu/drm/i915/intel_guc_loader.c
+++ b/drivers/gpu/drm/i915/intel_guc_loader.c
@@ -375,9 +375,8 @@ static int guc_ucode_xfer(struct drm_i915_private *dev_priv)
/* Enable MIA caching. GuC clock gating is disabled. */
I915_WRITE(GUC_SHIM_CONTROL, GUC_SHIM_CONTROL_VALUE);
- /* WaDisableMinuteIaClockGating:skl,bxt */
- if (IS_SKL_REVID(dev, 0, SKL_REVID_B0) ||
- IS_BXT_REVID(dev, 0, BXT_REVID_A1)) {
+ /* WaDisableMinuteIaClockGating:bxt */
+ if (IS_BXT_REVID(dev, 0, BXT_REVID_A1)) {
I915_WRITE(GUC_SHIM_CONTROL, (I915_READ(GUC_SHIM_CONTROL) &
~GUC_ENABLE_MIA_CLOCK_GATING));
}
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 39417b7..47f7afa 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -269,8 +269,7 @@ logical_ring_init_platform_invariants(struct intel_engine_cs *engine)
struct drm_i915_private *dev_priv = engine->i915;
engine->disable_lite_restore_wa =
- (IS_SKL_REVID(dev_priv, 0, SKL_REVID_B0) ||
- IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1)) &&
+ IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1) &&
(engine->id == VCS || engine->id == VCS2);
engine->ctx_desc_template = GEN8_CTX_VALID;
@@ -1068,9 +1067,8 @@ static int gen9_init_perctx_bb(struct intel_engine_cs *engine,
{
uint32_t index = wa_ctx_start(wa_ctx, *offset, CACHELINE_DWORDS);
- /* WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken:skl,bxt */
- if (IS_SKL_REVID(engine->i915, 0, SKL_REVID_B0) ||
- IS_BXT_REVID(engine->i915, 0, BXT_REVID_A1)) {
+ /* WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken:bxt */
+ if (IS_BXT_REVID(engine->i915, 0, BXT_REVID_A1)) {
wa_ctx_emit(batch, index, MI_LOAD_REGISTER_IMM(1));
wa_ctx_emit_reg(batch, index, GEN9_SLICE_COMMON_ECO_CHICKEN0);
wa_ctx_emit(batch, index,
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 7a74750..2faf64f 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -851,15 +851,13 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
GEN9_DISABLE_OCL_OOB_SUPPRESS_LOGIC);
- /* WaDisableDgMirrorFixInHalfSliceChicken5:skl,bxt */
- if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_B0) ||
- IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1))
+ /* WaDisableDgMirrorFixInHalfSliceChicken5:bxt */
+ if (IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1))
WA_CLR_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN5,
GEN9_DG_MIRROR_FIX_ENABLE);
- /* WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken:skl,bxt */
- if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_B0) ||
- IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1)) {
+ /* WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken:bxt */
+ if (IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1)) {
WA_SET_BIT_MASKED(GEN7_COMMON_SLICE_CHICKEN1,
GEN9_RHWO_OPTIMIZATION_DISABLE);
/*
@@ -1023,15 +1021,8 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
GEN8_LQSC_RO_PERF_DIS);
/* WaEnableGapsTsvCreditFix:skl */
- if (IS_SKL_REVID(dev_priv, SKL_REVID_C0, REVID_FOREVER)) {
- I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
- GEN9_GAPS_TSV_CREDIT_DISABLE));
- }
-
- /* WaDisablePowerCompilerClockGating:skl */
- if (IS_SKL_REVID(dev_priv, SKL_REVID_B0, SKL_REVID_B0))
- WA_SET_BIT_MASKED(HIZ_CHICKEN,
- BDW_HIZ_POWER_COMPILER_CLOCK_GATING_DISABLE);
+ I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
+ GEN9_GAPS_TSV_CREDIT_DISABLE));
/* WaBarrierPerformanceFixDisable:skl */
if (IS_SKL_REVID(dev_priv, SKL_REVID_C0, SKL_REVID_D0))
--
cgit v0.10.2
@@ -1,86 +0,0 @@
From 9fc736e833d226853fd53843e35d6a1d542394ed Mon Sep 17 00:00:00 2001
From: Jani Nikula <jani.nikula@intel.com>
Date: Fri, 16 Sep 2016 16:59:46 +0300
Subject: drm/i915/skl: drop workarounds for D0 revision
Pre-production hardware is not supported.
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/d28d21ceddeec226b5d1a20a7382bee9a72709a4.1474034059.git.jani.nikula@intel.com
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 47f7afa..ca649cc 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -994,9 +994,8 @@ static int gen9_init_indirectctx_bb(struct intel_engine_cs *engine,
struct drm_i915_private *dev_priv = engine->i915;
uint32_t index = wa_ctx_start(wa_ctx, *offset, CACHELINE_DWORDS);
- /* WaDisableCtxRestoreArbitration:skl,bxt */
- if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_D0) ||
- IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1))
+ /* WaDisableCtxRestoreArbitration:bxt */
+ if (IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1))
wa_ctx_emit(batch, index, MI_ARB_ON_OFF | MI_ARB_DISABLE);
/* WaFlushCoherentL3CacheLinesAtContextSwitch:skl,bxt */
@@ -1095,9 +1094,8 @@ static int gen9_init_perctx_bb(struct intel_engine_cs *engine,
wa_ctx_emit(batch, index, MI_NOOP);
}
- /* WaDisableCtxRestoreArbitration:skl,bxt */
- if (IS_SKL_REVID(engine->i915, 0, SKL_REVID_D0) ||
- IS_BXT_REVID(engine->i915, 0, BXT_REVID_A1))
+ /* WaDisableCtxRestoreArbitration:bxt */
+ if (IS_BXT_REVID(engine->i915, 0, BXT_REVID_A1))
wa_ctx_emit(batch, index, MI_ARB_ON_OFF | MI_ARB_ENABLE);
wa_ctx_emit(batch, index, MI_BATCH_BUFFER_END);
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 2df06b7..a860c40 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5335,8 +5335,7 @@ static void gen9_enable_rc6(struct drm_i915_private *dev_priv)
rc6_mask = GEN6_RC_CTL_RC6_ENABLE;
DRM_INFO("RC6 %s\n", onoff(rc6_mask & GEN6_RC_CTL_RC6_ENABLE));
/* WaRsUseTimeoutMode */
- if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_D0) ||
- IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1)) {
+ if (IS_BXT_REVID(dev_priv, 0, BXT_REVID_A1)) {
I915_WRITE(GEN6_RC6_THRESHOLD, 625); /* 800us */
I915_WRITE(GEN6_RC_CONTROL, GEN6_RC_CTL_HW_ENABLE |
GEN7_RC_CTL_TO_MODE |
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 474ce84..6880082 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1000,10 +1000,8 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
* until D0 which is the default case so this is equivalent to
* !WaDisablePerCtxtPreemptionGranularityControl:skl
*/
- if (IS_SKL_REVID(dev_priv, SKL_REVID_E0, REVID_FOREVER)) {
- I915_WRITE(GEN7_FF_SLICE_CS_CHICKEN1,
- _MASKED_BIT_ENABLE(GEN9_FFSC_PERCTX_PREEMPT_CTRL));
- }
+ I915_WRITE(GEN7_FF_SLICE_CS_CHICKEN1,
+ _MASKED_BIT_ENABLE(GEN9_FFSC_PERCTX_PREEMPT_CTRL));
if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_E0)) {
/* WaDisableChickenBitTSGBarrierAckForFFSliceCS:skl */
@@ -1023,12 +1021,6 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
GEN9_GAPS_TSV_CREDIT_DISABLE));
- /* WaBarrierPerformanceFixDisable:skl */
- if (IS_SKL_REVID(dev_priv, SKL_REVID_C0, SKL_REVID_D0))
- WA_SET_BIT_MASKED(HDC_CHICKEN0,
- HDC_FENCE_DEST_SLM_DISABLE |
- HDC_BARRIER_PERFORMANCE_DISABLE);
-
/* WaDisableSbeCacheDispatchPortSharing:skl */
if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_F0))
WA_SET_BIT_MASKED(
--
cgit v0.10.2
@@ -1,59 +0,0 @@
From 3be192e92ddcad15f7bf6b4b9e3f195eb8c1fe76 Mon Sep 17 00:00:00 2001
From: Jani Nikula <jani.nikula@intel.com>
Date: Fri, 16 Sep 2016 16:59:47 +0300
Subject: drm/i915/skl: drop workarounds for E0 revision
Pre-production hardware is not supported.
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/0633a02177195703502ef2396aab03efc0314334.1474034059.git.jani.nikula@intel.com
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index ca649cc..2d8eb2e 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -845,13 +845,12 @@ static inline int gen8_emit_flush_coherentl3_wa(struct intel_engine_cs *engine,
uint32_t l3sqc4_flush = (0x40400000 | GEN8_LQSC_FLUSH_COHERENT_LINES);
/*
- * WaDisableLSQCROPERFforOCL:skl,kbl
+ * WaDisableLSQCROPERFforOCL:kbl
* This WA is implemented in skl_init_clock_gating() but since
* this batch updates GEN8_L3SQCREG4 with default value we need to
* set this bit here to retain the WA during flush.
*/
- if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_E0) ||
- IS_KBL_REVID(dev_priv, 0, KBL_REVID_E0))
+ if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_E0))
l3sqc4_flush |= GEN8_LQSC_RO_PERF_DIS;
wa_ctx_emit(batch, index, (MI_STORE_REGISTER_MEM_GEN8 |
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 6880082..68dc27f 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1003,20 +1003,6 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
I915_WRITE(GEN7_FF_SLICE_CS_CHICKEN1,
_MASKED_BIT_ENABLE(GEN9_FFSC_PERCTX_PREEMPT_CTRL));
- if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_E0)) {
- /* WaDisableChickenBitTSGBarrierAckForFFSliceCS:skl */
- I915_WRITE(FF_SLICE_CS_CHICKEN2,
- _MASKED_BIT_ENABLE(GEN9_TSG_BARRIER_ACK_DISABLE));
- }
-
- /* GEN8_L3SQCREG4 has a dependency with WA batch so any new changes
- * involving this register should also be added to WA batch as required.
- */
- if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_E0))
- /* WaDisableLSQCROPERFforOCL:skl */
- I915_WRITE(GEN8_L3SQCREG4, I915_READ(GEN8_L3SQCREG4) |
- GEN8_LQSC_RO_PERF_DIS);
-
/* WaEnableGapsTsvCreditFix:skl */
I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
GEN9_GAPS_TSV_CREDIT_DISABLE));
--
cgit v0.10.2
@@ -0,0 +1,70 @@
From 9af0a9aecdb945cd5513941ffdcbcc031009b402 Mon Sep 17 00:00:00 2001
From: Guenter Roeck <linux@roeck-us.net>
Date: Mon, 4 Sep 2017 18:33:53 -0700
Subject: hwmon: (k10temp) Add support for family 17h
Add support for temperature sensors on Family 17h (Ryzen) processors.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
drivers/hwmon/k10temp.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
index fc8076c..c4dac53 100644
--- a/drivers/hwmon/k10temp.c
+++ b/drivers/hwmon/k10temp.c
@@ -36,6 +36,10 @@ MODULE_PARM_DESC(force, "force loading on processors with erratum 319");
/* Provide lock for writing to NB_SMU_IND_ADDR */
static DEFINE_MUTEX(nb_smu_ind_mutex);
+#ifndef PCI_DEVICE_ID_AMD_17H_DF_F3
+#define PCI_DEVICE_ID_AMD_17H_DF_F3 0x1463
+#endif
+
/* CPUID function 0x80000001, ebx */
#define CPUID_PKGTYPE_MASK 0xf0000000
#define CPUID_PKGTYPE_F 0x00000000
@@ -61,6 +65,9 @@ static DEFINE_MUTEX(nb_smu_ind_mutex);
*/
#define F15H_M60H_REPORTED_TEMP_CTRL_OFFSET 0xd8200ca4
+/* F17h M01h Access througn SMN */
+#define F17H_M01H_REPORTED_TEMP_CTRL_OFFSET 0x00059800
+
struct k10temp_data {
struct pci_dev *pdev;
void (*read_tempreg)(struct pci_dev *pdev, u32 *regval);
@@ -88,6 +95,12 @@ static void read_tempreg_nb_f15(struct pci_dev *pdev, u32 *regval)
F15H_M60H_REPORTED_TEMP_CTRL_OFFSET, regval);
}
+static void read_tempreg_nb_f17(struct pci_dev *pdev, u32 *regval)
+{
+ amd_nb_index_read(pdev, PCI_DEVFN(0, 0), 0x60,
+ F17H_M01H_REPORTED_TEMP_CTRL_OFFSET, regval);
+}
+
static ssize_t temp1_input_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@ -224,6 +237,8 @@ static int k10temp_probe(struct pci_dev *pdev,
if (boot_cpu_data.x86 == 0x15 && (boot_cpu_data.x86_model == 0x60 ||
boot_cpu_data.x86_model == 0x70))
data->read_tempreg = read_tempreg_nb_f15;
+ else if (boot_cpu_data.x86 == 0x17)
+ data->read_tempreg = read_tempreg_nb_f17;
else
data->read_tempreg = read_tempreg_pci;
@@ -242,6 +257,7 @@ static const struct pci_device_id k10temp_id_table[] = {
{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M60H_NB_F3) },
{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) },
{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F3) },
+ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_DF_F3) },
{}
};
MODULE_DEVICE_TABLE(pci, k10temp_id_table);
--
cgit v1.1
@@ -0,0 +1,80 @@
From 1b50b776355fa6c6d7b3281a63c275d5c18d629d Mon Sep 17 00:00:00 2001
From: Guenter Roeck <linux@roeck-us.net>
Date: Mon, 4 Sep 2017 18:33:53 -0700
Subject: hwmon: (k10temp) Add support for temperature offsets
Add support for handling temperature offset values for various AMD CPUs,
similar to the code used in the coretemp driver for Intel CPUs. This is
primarily for Ryzen CPUs (which has documented temperature offsets),
but the code is kept generic to simplify adding additional CPUs.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
drivers/hwmon/k10temp.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
index c4dac53..46a54ed 100644
--- a/drivers/hwmon/k10temp.c
+++ b/drivers/hwmon/k10temp.c
@@ -71,6 +71,24 @@ static DEFINE_MUTEX(nb_smu_ind_mutex);
struct k10temp_data {
struct pci_dev *pdev;
void (*read_tempreg)(struct pci_dev *pdev, u32 *regval);
+ int temp_offset;
+};
+
+struct tctl_offset {
+ u8 model;
+ char const *id;
+ int offset;
+};
+
+static const struct tctl_offset tctl_offset_table[] = {
+ { 0x17, "AMD Ryzen 7 1600X", 20000 },
+ { 0x17, "AMD Ryzen 7 1700X", 20000 },
+ { 0x17, "AMD Ryzen 7 1800X", 20000 },
+ { 0x17, "AMD Ryzen Threadripper 1950X", 27000 },
+ { 0x17, "AMD Ryzen Threadripper 1920X", 27000 },
+ { 0x17, "AMD Ryzen Threadripper 1950", 10000 },
+ { 0x17, "AMD Ryzen Threadripper 1920", 10000 },
+ { 0x17, "AMD Ryzen Threadripper 1910", 10000 },
};
static void read_tempreg_pci(struct pci_dev *pdev, u32 *regval)
@@ -110,6 +128,7 @@ static ssize_t temp1_input_show(struct device *dev,
data->read_tempreg(data->pdev, &regval);
temp = (regval >> 21) * 125;
+ temp -= data->temp_offset;
return sprintf(buf, "%u\n", temp);
}
@@ -217,6 +236,7 @@ static int k10temp_probe(struct pci_dev *pdev,
struct device *dev = &pdev->dev;
struct k10temp_data *data;
struct device *hwmon_dev;
+ int i;
if (unreliable) {
if (!force) {
@@ -242,6 +262,16 @@ static int k10temp_probe(struct pci_dev *pdev,
else
data->read_tempreg = read_tempreg_pci;
+ for (i = 0; i < ARRAY_SIZE(tctl_offset_table); i++) {
+ const struct tctl_offset *entry = &tctl_offset_table[i];
+
+ if (boot_cpu_data.x86 == entry->model &&
+ strstr(boot_cpu_data.x86_model_id, entry->id)) {
+ data->temp_offset = entry->offset;
+ break;
+ }
+ }
+
hwmon_dev = devm_hwmon_device_register_with_groups(dev, "k10temp", data,
k10temp_groups);
return PTR_ERR_OR_ZERO(hwmon_dev);
--
cgit v1.1

Some files were not shown because too many files have changed in this diff Show More