From cae510af262e1e9d60b8f2979fc55edc28cec5b2 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Mon, 11 Feb 2013 13:26:53 +0000 Subject: [PATCH] [sys-kernel/*ec2*] bump ebuilds, drop old, add CONFIG_DEVTMPFS --- sys-kernel/ec2-sources/Manifest | 22 +- ....4-r8.ebuild => ec2-sources-3.4-r9.ebuild} | 0 .../ec2-sources/ec2-sources-3.5-r3.ebuild | 16 - .../ec2-sources/ec2-sources-3.5-r4.ebuild | 24 - .../ec2-sources/ec2-sources-3.5-r5.ebuild | 24 - .../ec2-sources/ec2-sources-3.5-r6.ebuild | 24 - .../ec2-sources/ec2-sources-3.5-r7.ebuild | 16 - .../ec2-sources/ec2-sources-3.5-r8.ebuild | 16 - ....5-r1.ebuild => ec2-sources-3.5-r9.ebuild} | 0 sys-kernel/ec2-sources/ec2-sources-3.5.ebuild | 16 - .../ec2-sources/ec2-sources-3.6-r1.ebuild | 16 - .../ec2-sources/ec2-sources-3.6-r2.ebuild | 16 - .../ec2-sources/ec2-sources-3.6-r3.ebuild | 16 - ....5-r2.ebuild => ec2-sources-3.6-r4.ebuild} | 0 sys-kernel/ec2-sources/ec2-sources-3.6.ebuild | 16 - .../ec2-sources/ec2-sources-3.7-r1.ebuild | 16 - .../ec2-sources/ec2-sources-3.7-r2.ebuild | 16 - .../ec2-sources/ec2-sources-3.7-r3.ebuild | 16 - .../ec2-sources/ec2-sources-3.7.3.ebuild | 1 + .../ec2-sources/ec2-sources-3.7.4.ebuild | 17 - sys-kernel/ec2-sources/ec2-sources-3.7.ebuild | 16 - ...__pte_alloc_kernel-gentoo-bug-416685.patch | 1456 ----------------- .../files/ec2-sources-3.7.3-devtmpfs.patch | 26 + sys-kernel/linux-ec2/Manifest | 21 +- ...__pte_alloc_kernel-gentoo-bug-416685.patch | 1456 ----------------- .../files/linux-ec2-3.7.3-devtmpfs.patch | 26 + ...-3.4-r8.ebuild => linux-ec2-3.4-r9.ebuild} | 0 sys-kernel/linux-ec2/linux-ec2-3.5-r2.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.5-r3.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.5-r4.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.5-r5.ebuild | 19 - sys-kernel/linux-ec2/linux-ec2-3.5-r6.ebuild | 19 - sys-kernel/linux-ec2/linux-ec2-3.5-r7.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.5-r8.ebuild | 11 - ...-3.5-r1.ebuild => linux-ec2-3.5-r9.ebuild} | 0 sys-kernel/linux-ec2/linux-ec2-3.5.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.6-r2.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.6-r3.ebuild | 11 - ...-3.6-r1.ebuild => linux-ec2-3.6-r4.ebuild} | 0 sys-kernel/linux-ec2/linux-ec2-3.7-r1.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.7-r2.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.7-r3.ebuild | 11 - sys-kernel/linux-ec2/linux-ec2-3.7.3.ebuild | 1 + sys-kernel/linux-ec2/linux-ec2-3.7.4.ebuild | 12 - sys-kernel/linux-ec2/linux-ec2-3.7.ebuild | 11 - 45 files changed, 60 insertions(+), 3412 deletions(-) rename sys-kernel/ec2-sources/{ec2-sources-3.4-r8.ebuild => ec2-sources-3.4-r9.ebuild} (100%) delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.5-r3.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.5-r4.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.5-r5.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.5-r6.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.5-r7.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.5-r8.ebuild rename sys-kernel/ec2-sources/{ec2-sources-3.5-r1.ebuild => ec2-sources-3.5-r9.ebuild} (100%) delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.5.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.6-r1.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.6-r2.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.6-r3.ebuild rename sys-kernel/ec2-sources/{ec2-sources-3.5-r2.ebuild => ec2-sources-3.6-r4.ebuild} (100%) delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.6.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.7-r1.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.7-r2.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.7-r3.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.7.4.ebuild delete mode 100644 sys-kernel/ec2-sources/ec2-sources-3.7.ebuild delete mode 100644 sys-kernel/ec2-sources/files/__pte_alloc_kernel-gentoo-bug-416685.patch create mode 100644 sys-kernel/ec2-sources/files/ec2-sources-3.7.3-devtmpfs.patch delete mode 100644 sys-kernel/linux-ec2/files/__pte_alloc_kernel-gentoo-bug-416685.patch create mode 100644 sys-kernel/linux-ec2/files/linux-ec2-3.7.3-devtmpfs.patch rename sys-kernel/linux-ec2/{linux-ec2-3.4-r8.ebuild => linux-ec2-3.4-r9.ebuild} (100%) delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.5-r2.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.5-r3.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.5-r4.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.5-r5.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.5-r6.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.5-r7.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.5-r8.ebuild rename sys-kernel/linux-ec2/{linux-ec2-3.5-r1.ebuild => linux-ec2-3.5-r9.ebuild} (100%) delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.5.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.6-r2.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.6-r3.ebuild rename sys-kernel/linux-ec2/{linux-ec2-3.6-r1.ebuild => linux-ec2-3.6-r4.ebuild} (100%) delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.7-r1.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.7-r2.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.7-r3.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.7.4.ebuild delete mode 100644 sys-kernel/linux-ec2/linux-ec2-3.7.ebuild diff --git a/sys-kernel/ec2-sources/Manifest b/sys-kernel/ec2-sources/Manifest index 3f5dc1819..e7a3aebb2 100644 --- a/sys-kernel/ec2-sources/Manifest +++ b/sys-kernel/ec2-sources/Manifest @@ -1,20 +1,4 @@ -DIST linux-3.4-r8+sabayon.tar.bz2 80497923 SHA256 419090691f78842f1841c472db40c6aab8130997f843b1c9dd495c840b801131 SHA512 917c3d9fd98caed25215bbdd6944e2e97ca02e38099df91fd155da2de0f980ec6b656bd435fb100ee75dd34a3e5521dfc48d6ff29b1696007c31ac8da4db4b6c WHIRLPOOL e811e3f398cf8372921ae797c23d3ba5ee54400d28b1d4051fd34c4380bf2058b742c50f215d10ed7787af1dfb33944b0eeb4c2da070bdc262a0eba5a7872308 -DIST linux-3.5+sabayon.tar.bz2 81434151 SHA256 c9567f3038ff3a7d4896a28ed87f889108c05eda36f37f8f2145ce0e5a869499 -DIST linux-3.5-r1+sabayon.tar.bz2 82414827 SHA256 b24102642ad9f47d13507f5c7170231520ffff31f59ad70edcdf072b5c3a4831 -DIST linux-3.5-r2+sabayon.tar.bz2 82413462 SHA256 96f0796c49b09197e371e32fdd7dfeb36d136cec12edfb6121c8d8e0ed48c812 -DIST linux-3.5-r3+sabayon.tar.bz2 82419132 SHA256 6a2c1e6ade660d8be0aed46ce1fc4c9e9959fed4b9e6fbac4823a347de15988e -DIST linux-3.5-r4+sabayon.tar.bz2 82419945 SHA256 8cb8b6518e859f3a9aa12d040989d69e335b4932944d81b6ca2851db76e705df -DIST linux-3.5-r5+sabayon.tar.bz2 82418175 SHA256 9376647822023489be49abc09fe0a8ef1432820b2a4052d3bd1bdbfaedeb1bb3 SHA512 c82ab2b81514a995385556b98c42230a4e5fd709ad045efd6a93f0473e1e90d82409a971e03a7a5ec160379da88d565f9b01014d590d909a56c9ca575c854904 WHIRLPOOL c60d6f5b903809ccc31562e685ac44c14590bfb86d500458e1d02d8c1ca70878f7b124f148f45ef02e80fb5a481fab9bad1b9d8384f91058ac88b9f9cf43404d -DIST linux-3.5-r6+sabayon.tar.bz2 82386314 SHA256 93f1dbe351665af7e381fc9004c5f15c8c5d105577e1c1cc1f837629e8d328c4 SHA512 99dc132b02d1f3d7b837ff1f2943023455dde494ea41d7eb6c475fcfe145f5fd20af7600235119c49aea5e03cdf14c3598af14a30e878b3cfc8763a8f72cb8a6 WHIRLPOOL cbd59f1592057c6c1dc934013806fbe1aa2334f17dbb3b6b36dc0f65271dbbfe889a45d83583edbac6b4a4cf72923d462c83b44d41445ceb8cf066c3498c8f6b -DIST linux-3.5-r7+sabayon.tar.bz2 82380933 SHA256 f36d23c7f450f83899f3624fb1a7fe7439a836f9d5a9ac77bb6e4bead169b606 SHA512 70d94c6cad85f39c715b92ee0310271dbe033760e664e1d7fb156029534dcb2335aa2dccdaf50db139683ad0cdeb44cefd8d3d029b9af0ee680b29dcb32cc6a9 WHIRLPOOL c5d6938a68dd515a88a3b7df8c1abd6888bb807a35b7139cc08606b297a69a1b608acf524b2ec129cb6017f9a303f171f1975dd8c7486ecbf7ef5e62451e08b5 -DIST linux-3.5-r8+sabayon.tar.bz2 82379753 SHA256 25cfb465961bc186ce79f29d0a0dcb5288ef89876019afdbe2014a4893af4e23 SHA512 442732217c02a3cd930ef04f6f539c2c364291e48fb427d863b009dd484e3a17f7b1877db5798bab9303aa66a64688e98106e8a57639f651618b41f6c58c1b8c WHIRLPOOL 8e6917ff0ef11c2a9f569128209b24c072d5e1dde9adb366b832844c92955b859d39f8e3872ac1a3e8b1c8fa49920eb0262af4d4316650a3fbd072d75dce8a49 -DIST linux-3.6+sabayon.tar.bz2 83625528 SHA256 a36a93aee910b2bbe1bcb61f298de5be5441cf49d77e07459a9996db58ad1831 SHA512 f864699e10c235cd12baa790b4b7c41a5a00584e47a63a7983512d72503a81c6a2f4b2d51b15ea87a884a8327b080dc03ace39006f61033de89bea29d6ac97ab WHIRLPOOL fa98a7d07ca70057650c1344729b99c8cfbf6d172f8af0a5b93ee0c2022838882fa2defa90cde01ca8fbec869d2c8a011fb7cadd274b6b26b94732302290521c -DIST linux-3.6-r1+sabayon.tar.bz2 83636499 SHA256 3d7962c60bcd26233927fa962a0864807e1c19364e234844ec2bfefa51a3789b SHA512 bff82ef5d134ddc630cf34262fd7485e8029c8ff92ee32f3a4fb91765fcefc1516ad2e7f7c1430843009db0659f015f71a9f21cf0e4ad00c85415174ba56a723 WHIRLPOOL 29ffad7dfe1301f8de8118bb8c33c48a8ea1012a758853ead282ac47e4afb127bf3725146b6ef7cbcaccbc07f0861672f929c7e9ba4d11f15694f3211abff71e -DIST linux-3.6-r2+sabayon.tar.bz2 83634335 SHA256 be871ef9b3aa25ef20e8286acf8f970223cb090e65eea23ed0f8af8febc0180b SHA512 b2719ae8f52e0876b05892e4c0d4100991a7e263876a33a9dd95f97b1cc88a43f05ff9d57f7d9ba9e69bbad7daa458988e34d443fa1e4197c30169be9f92dc4f WHIRLPOOL 18785c0a0a39600eb7981ce13e2f4c3be938ae6ba8b090b136704b137d598130750a3f9d05602d347034d39c495982274125339c1c19a9b1f0da559f51e2411e -DIST linux-3.6-r3+sabayon.tar.bz2 83630612 SHA256 f833b290ac42374336c080596b0c9b39c71d4e16bceddb33a7a2e7038a8e085e SHA512 0573338755cbe1035fbca79b83893b1a46f480f2ffa99699a045509a19275197c578a598a477c29bcdf3711236866658dd5db9a409300ef72574ca55adf6564d WHIRLPOOL b65fd1518f98af15f0a84ddede7824fc06f9b22f3ca5bf7d6bbe83b1b9f679c9177fc1de0d2475a800cdeb492529c6b582c8008dfbc3df4021a5d47f8f584911 -DIST linux-3.7+sabayon.tar.bz2 84761659 SHA256 302e8a11943eed4ec2f346583b9ea1cb5ebd2b1aef43ed5e8559fcaa662103fe SHA512 4d1db89a9088d3a21e0f1937e8a9b0f49d25de56a90fefd1023ae87894a3f53127903792e34fb105c99493405265db80536d1c3a80f99b96af381b2679fa7714 WHIRLPOOL c44deb7fc1611cf80895b9486dc6be3067f8420962a29f53b391eb3312a3ae4390b508c48e40bac7d3f0f767949e89d221ca65506d3755aedbaa80ab17ca1c06 -DIST linux-3.7-r1+sabayon.tar.bz2 84768329 SHA256 e717c079863992fbeb3b999b67081b481392f92679a1062802043ebb4d9fa244 SHA512 323f3669d35c34c50b47ef1b16c88a739d137d3db723b89d565331c80a03269da82025f9c2a36c12fb1470a1fa9925c0cf268a88a9199ce4b8bf83f74b1fbeb5 WHIRLPOOL 52ae6a2a6a7cd7ddac7fa93477fe4df63f6481fb403f5a54ee41dfb94a4d62acd53e821a7b16d980f0bd1216ce1efd581433d0d58f01fa862e478b087856ead4 -DIST linux-3.7-r2+sabayon.tar.bz2 84773257 SHA256 50bc0c130a41f3b8dd6f089030d1a53640c5e446468b52b6236b4e54ba4cdba6 SHA512 bed39c28888af1f8206b39b7a450d8fc016088a26fcb2bb07a12f0334657c237b542f0395c343ce210947c1d55cd1471690b8be1b27ccd8149a2806837e40648 WHIRLPOOL af4bd5b33a2c09c099c6d3e99c7be0855e9f7a4d83c5885e9a411310d252314c30b7bf8587569c8d26acfb68422fbf93b56f0c6d70f9c9b6e7156bff73312007 -DIST linux-3.7-r3+sabayon.tar.bz2 84775155 SHA256 3c4b5f42033eb0b2be2a1168af6f3a9f059763ac0d34e9b22c9982d731c92c27 SHA512 c14cbcae90ebb55703438d0a0d179949b3e7b63821576b62c6cc07ae5763beb95b3f7274e181b1a787cf722b59768a5bed37d616a0aca22029fd521680904d39 WHIRLPOOL 322e837580a11abf0da600858707242aca96cc6d87a441b348487393c4bac3d102c7f5df60b526077b52737911bc9bb552cdf9657f6471e9056b9f3942687ffb +DIST linux-3.4-r9+sabayon.tar.bz2 80500636 SHA256 c399252fd365c4253cce66903ff579beef000b249b50e8e50fadefd013f585a3 SHA512 d7da856452020cfe093231d95a6459d27a48864083fe0775aae11e0e3de62381b9b356f2a455699fb9563e44cc3f531e086634931966125a40f597cc711a6f4d WHIRLPOOL d8e0c3241ebfe3aa8e7bafb15a13eb5adad21711600206aadb4b86cddb6c6a54c481bce1635ef24730c008ad669e85ec426ea6d31f1e4112b9e92f33c2fa71a7 +DIST linux-3.5-r9+sabayon.tar.bz2 82384401 SHA256 39cd4c5c0f2956219c44d60d3fb32d65489dd896b2533531066c67ce93cbce55 SHA512 00b176a09a2bc6c796bc7b2bd1ead085037367b75d5fcafe8cdb64a5df3cc482addcd751f5db784712635d6fcf846713675b544a546fbeea22d4881b7bd488b5 WHIRLPOOL bcba5d3f205ff14530fdb98e4664031dd2ac396752dab134e41f148c2258244c87c8e3e76ed541fb51d576f82be702a1b4f8e4847d7ec0e09a90f6707343c846 +DIST linux-3.6-r4+sabayon.tar.bz2 83644423 SHA256 9a772b63a0841179a649b5af3b6d68adf67f6c58ec9a1398271e702f7f06660a SHA512 c294046393bd5a071ea70fe542577dba00c3f812e3422aa7af8583de95df0a4afda72e0b53153603ebcd8bfe25161126849dd262b8f9ed39ffb9048914b06520 WHIRLPOOL fb5e32732ffea150cb994b27222dc8329c9118097c279916dd7e5fc4e9ce934a503ba58edb7a727f45bd79a1d57951ef3de7020cf92058d2bdd89ad9d5b0f9b9 DIST linux-3.7.3+sabayon.tar.bz2 84787938 SHA256 eb9f7dda8c81b27d1bc931f41209c77bda8fcae5e444d11b2b073cf8b20cee3c SHA512 3c899e5a5c5747315c1a1508c57e2409a7393dd90c5c472c78944aab4b1a66bc0bf62d4fdab5b6bcb1ff1664243f1fd846a66970b409b4678674d37c3c96fd98 WHIRLPOOL 35a62746a42079cae1c8bc73d5083a99da2492271611ebc019c78cb801dce4179ea7bf9528e0184bf794b543ad1d7e1b800091387b2b86f47b3d3fe253d1bf85 -DIST linux-3.7.4+sabayon.tar.bz2 84787421 SHA256 d7cf0d5c307774ee4f9a032fea206c5b4833b2242060547af00e59c9af26201d SHA512 6d6b5bd0399f8f71eaed25d3cd65dc4531ed3a4cce6d5218f266e3b55a8285ee327f6f9ff777fd0bc643aff0495728acf864991a48b663163ddb95e0bc00c075 WHIRLPOOL f06934db26f29476f79c926425a2a7e474a772fabed6527a92442f206212b56e8b5dab5ef1c6359caf494099a032aeab220eefce5b82fca9bd35b88d0365308a diff --git a/sys-kernel/ec2-sources/ec2-sources-3.4-r8.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.4-r9.ebuild similarity index 100% rename from sys-kernel/ec2-sources/ec2-sources-3.4-r8.ebuild rename to sys-kernel/ec2-sources/ec2-sources-3.4-r9.ebuild diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5-r3.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.5-r3.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.5-r3.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5-r4.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.5-r4.ebuild deleted file mode 100644 index 3fd66be12..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.5-r4.ebuild +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" - -src_unpack() { - sabayon-kernel_src_unpack - # workaround config bug - for config in "${S}"/sabayon/config/*-x86.config; do - echo "CONFIG_SPL=n" >> "${config}" || die - done -} diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5-r5.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.5-r5.ebuild deleted file mode 100644 index da4b5bfa6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.5-r5.ebuild +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" - -src_unpack() { - sabayon-kernel_src_unpack - if use amd64; then - cd "${S}" || die - epatch "${FILESDIR}/__pte_alloc_kernel-gentoo-bug-416685.patch" - fi -} diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5-r6.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.5-r6.ebuild deleted file mode 100644 index da4b5bfa6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.5-r6.ebuild +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" - -src_unpack() { - sabayon-kernel_src_unpack - if use amd64; then - cd "${S}" || die - epatch "${FILESDIR}/__pte_alloc_kernel-gentoo-bug-416685.patch" - fi -} diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5-r7.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.5-r7.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.5-r7.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5-r8.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.5-r8.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.5-r8.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5-r1.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.5-r9.ebuild similarity index 100% rename from sys-kernel/ec2-sources/ec2-sources-3.5-r1.ebuild rename to sys-kernel/ec2-sources/ec2-sources-3.5-r9.ebuild diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.5.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.5.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.6-r1.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.6-r1.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.6-r1.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.6-r2.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.6-r2.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.6-r2.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.6-r3.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.6-r3.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.6-r3.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.5-r2.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.6-r4.ebuild similarity index 100% rename from sys-kernel/ec2-sources/ec2-sources-3.5-r2.ebuild rename to sys-kernel/ec2-sources/ec2-sources-3.6-r4.ebuild diff --git a/sys-kernel/ec2-sources/ec2-sources-3.6.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.6.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.6.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.7-r1.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.7-r1.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.7-r1.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.7-r2.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.7-r2.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.7-r2.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.7-r3.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.7-r3.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.7-r3.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.7.3.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.7.3.ebuild index 92c8b3efb..1eecab250 100644 --- a/sys-kernel/ec2-sources/ec2-sources-3.7.3.ebuild +++ b/sys-kernel/ec2-sources/ec2-sources-3.7.3.ebuild @@ -6,6 +6,7 @@ K_SABKERNEL_NAME="ec2" K_ONLY_SOURCES="1" K_SABKERNEL_FORCE_SUBLEVEL="0" K_KERNEL_NEW_VERSIONING="1" +K_KERNEL_PATCH_HOTFIXES="${FILESDIR}/${P}-devtmpfs.patch" inherit sabayon-kernel KEYWORDS="~amd64 ~x86" DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.7.4.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.7.4.ebuild deleted file mode 100644 index 92c8b3efb..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.7.4.ebuild +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -K_KERNEL_NEW_VERSIONING="1" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/ec2-sources-3.7.ebuild b/sys-kernel/ec2-sources/ec2-sources-3.7.ebuild deleted file mode 100644 index e6388f9e6..000000000 --- a/sys-kernel/ec2-sources/ec2-sources-3.7.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_SABKERNEL_NAME="ec2" -K_ONLY_SOURCES="1" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux kernel for Amazon EC2 AMI (S3/EBS)" -RESTRICT="mirror" -IUSE="sources_standalone" - -DEPEND="${DEPEND} - sources_standalone? ( !=sys-kernel/linux-ec2-${PVR} ) - !sources_standalone? ( =sys-kernel/linux-ec2-${PVR} )" diff --git a/sys-kernel/ec2-sources/files/__pte_alloc_kernel-gentoo-bug-416685.patch b/sys-kernel/ec2-sources/files/__pte_alloc_kernel-gentoo-bug-416685.patch deleted file mode 100644 index b7d0af2f4..000000000 --- a/sys-kernel/ec2-sources/files/__pte_alloc_kernel-gentoo-bug-416685.patch +++ /dev/null @@ -1,1456 +0,0 @@ -commit 35906966f3dc93f59957d2933bece603d0a2a57e -Author: Fabio Erculiani -Date: Sun Jul 29 15:04:54 2012 +0200 - - sabayon: add __pte_alloc_kernel() patch as per Gentoo Bug #416685 - -diff --git a/arch/alpha/include/asm/pgalloc.h b/arch/alpha/include/asm/pgalloc.h -index bc2a0da..d05dfc2 100644 ---- a/arch/alpha/include/asm/pgalloc.h -+++ b/arch/alpha/include/asm/pgalloc.h -@@ -38,10 +38,15 @@ pgd_free(struct mm_struct *mm, pgd_t *pgd) - } - - static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return (pmd_t *)__get_free_page(gfp_mask | __GFP_ZERO); -+} -+ -+static inline pmd_t * - pmd_alloc_one(struct mm_struct *mm, unsigned long address) - { -- pmd_t *ret = (pmd_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -- return ret; -+ return __pmd_alloc_one(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void -@@ -51,10 +56,15 @@ pmd_free(struct mm_struct *mm, pmd_t *pmd) - } - - static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addressi, gfp_t gfp_mask) -+{ -+ return (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); -+} -+ -+static inline pte_t * - pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void -diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h -index 943504f..6052b12 100644 ---- a/arch/arm/include/asm/pgalloc.h -+++ b/arch/arm/include/asm/pgalloc.h -@@ -48,6 +48,7 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) - /* - * Since we have only two-level page tables, these are trivial - */ -+#define __pmd_alloc_one(mm,addr,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(mm, pmd) do { } while (0) - #define pud_populate(mm,pmd,pte) BUG() -@@ -81,17 +82,23 @@ static inline void clean_pte_table(pte_t *pte) - * +------------+ - */ - static inline pte_t * --pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr) -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) - { - pte_t *pte; - -- pte = (pte_t *)__get_free_page(PGALLOC_GFP); -+ pte = (pte_t *)__get_free_page(gfp_mask | __GFP_NOTRACK | __GFP_ZERO); - if (pte) - clean_pte_table(pte); - - return pte; - } - -+static inline pte_t * -+pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr) -+{ -+ return __pte_alloc_one_kernel(mm, addr, GFP_KERNEL | __GFP_REPEAT); -+} -+ - static inline pgtable_t - pte_alloc_one(struct mm_struct *mm, unsigned long addr) - { -diff --git a/arch/avr32/include/asm/pgalloc.h b/arch/avr32/include/asm/pgalloc.h -index bc7e8ae..cb88080 100644 ---- a/arch/avr32/include/asm/pgalloc.h -+++ b/arch/avr32/include/asm/pgalloc.h -@@ -51,10 +51,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - quicklist_free(QUICK_PGD, NULL, pgd); - } - -+static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(QUICK_PT, gfp_mask, NULL); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- return quicklist_alloc(QUICK_PT, GFP_KERNEL | __GFP_REPEAT, NULL); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, -diff --git a/arch/cris/include/asm/pgalloc.h b/arch/cris/include/asm/pgalloc.h -index 6da975d..20254ee 100644 ---- a/arch/cris/include/asm/pgalloc.h -+++ b/arch/cris/include/asm/pgalloc.h -@@ -22,10 +22,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_page((unsigned long)pgd); - } - -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) -+{ -+ return (pte_t *) __get_free_page(gfp_mask | __GFP_ZERO); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) -diff --git a/arch/frv/include/asm/pgalloc.h b/arch/frv/include/asm/pgalloc.h -index 416d19a..bfc4f7c 100644 ---- a/arch/frv/include/asm/pgalloc.h -+++ b/arch/frv/include/asm/pgalloc.h -@@ -35,8 +35,10 @@ extern pgd_t *pgd_alloc(struct mm_struct *); - extern void pgd_free(struct mm_struct *mm, pgd_t *); - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); - - extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long); -+extern pgtable_t __pte_alloc_one(struct mm_struct *, unsigned long, gfp_t); - - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) - { -@@ -60,6 +62,7 @@ do { \ - * inside the pgd, so has no extra memory associated with it. - * (In the PAE case we free the pmds as part of the pgd.) - */ -+#define __pmd_alloc_one(mm, addr,mask) ({ BUG(); ((pmd_t *) 2); }) - #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *) 2); }) - #define pmd_free(mm, x) do { } while (0) - #define __pmd_free_tlb(tlb,x,a) do { } while (0) -diff --git a/arch/frv/include/asm/pgtable.h b/arch/frv/include/asm/pgtable.h -index 6bc241e..698e280 100644 ---- a/arch/frv/include/asm/pgtable.h -+++ b/arch/frv/include/asm/pgtable.h -@@ -223,6 +223,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) - * allocating and freeing a pud is trivial: the 1-entry pud is - * inside the pgd, so has no extra memory associated with it. - */ -+#define __pud_alloc_one(mm, address, mask) NULL - #define pud_alloc_one(mm, address) NULL - #define pud_free(mm, x) do { } while (0) - #define __pud_free_tlb(tlb, x, address) do { } while (0) -diff --git a/arch/frv/mm/pgalloc.c b/arch/frv/mm/pgalloc.c -index 4fb63a3..1237a54 100644 ---- a/arch/frv/mm/pgalloc.c -+++ b/arch/frv/mm/pgalloc.c -@@ -20,14 +20,19 @@ - - pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((aligned(PAGE_SIZE))); - --pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT); -+ pte_t *pte = (pte_t *)__get_free_page(gfp_mask); - if (pte) - clear_page(pte); - return pte; - } - -+pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) - { - struct page *page; -diff --git a/arch/ia64/include/asm/pgalloc.h b/arch/ia64/include/asm/pgalloc.h -index 96a8d92..0e46e47 100644 ---- a/arch/ia64/include/asm/pgalloc.h -+++ b/arch/ia64/include/asm/pgalloc.h -@@ -39,9 +39,15 @@ pgd_populate(struct mm_struct *mm, pgd_t * pgd_entry, pud_t * pud) - pgd_val(*pgd_entry) = __pa(pud); - } - -+static inline pud_t * -+__pud_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(0, gfp_mask, NULL); -+} -+ - static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) - { -- return quicklist_alloc(0, GFP_KERNEL, NULL); -+ return __pud_alloc_one(mm, addr, GFP_KERNEL); - } - - static inline void pud_free(struct mm_struct *mm, pud_t *pud) -@@ -57,9 +63,15 @@ pud_populate(struct mm_struct *mm, pud_t * pud_entry, pmd_t * pmd) - pud_val(*pud_entry) = __pa(pmd); - } - -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(0, gfp_mask, NULL); -+} -+ - static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr) - { -- return quicklist_alloc(0, GFP_KERNEL, NULL); -+ return __pmd_alloc_one(mm, addr, GFP_KERNEL); - } - - static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) -@@ -95,10 +107,16 @@ static inline pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long addr) - return page; - } - -+static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long addr, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(0, gfp_mask, NULL); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long addr) - { -- return quicklist_alloc(0, GFP_KERNEL, NULL); -+ return __pte_alloc_one_kernel(mm, addr, GFP_KERNEL); - } - - static inline void pte_free(struct mm_struct *mm, pgtable_t pte) -diff --git a/arch/m32r/include/asm/pgalloc.h b/arch/m32r/include/asm/pgalloc.h -index 0fc7361..0c1e4ae 100644 ---- a/arch/m32r/include/asm/pgalloc.h -+++ b/arch/m32r/include/asm/pgalloc.h -@@ -30,12 +30,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_page((unsigned long)pgd); - } - -+static __inline__ pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); -+} -+ - static __inline__ pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO); -- -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL); - } - - static __inline__ pgtable_t pte_alloc_one(struct mm_struct *mm, -@@ -66,6 +70,7 @@ static inline void pte_free(struct mm_struct *mm, pgtable_t pte) - * (In the PAE case we free the pmds as part of the pgd.) - */ - -+#define __pmd_alloc_one(mm, addr,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(mm, x) do { } while (0) - #define __pmd_free_tlb(tlb, x, addr) do { } while (0) -diff --git a/arch/m68k/include/asm/motorola_pgalloc.h b/arch/m68k/include/asm/motorola_pgalloc.h -index 2f02f26..0d345e6 100644 ---- a/arch/m68k/include/asm/motorola_pgalloc.h -+++ b/arch/m68k/include/asm/motorola_pgalloc.h -@@ -5,13 +5,16 @@ - #include - - extern pmd_t *get_pointer_table(void); -+extern pmd_t *__get_pointer_table (gfp_t); - extern int free_pointer_table(pmd_t *); - --static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) - { - pte_t *pte; - -- pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -+ pte = (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); - if (pte) { - __flush_page_to_ram(pte); - flush_tlb_kernel_page(pte); -@@ -21,6 +24,12 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long ad - return pte; - } - -+static inline pte_t * -+pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) - { - cache_page(pte); -@@ -61,10 +70,15 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t page, - __free_page(page); - } - -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return __get_pointer_table(gfp_mask); -+} - - static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) - { -- return get_pointer_table(); -+ return __pmd_alloc_one(mm, address, GFP_KERNEL); - } - - static inline int pmd_free(struct mm_struct *mm, pmd_t *pmd) -diff --git a/arch/m68k/include/asm/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h -index 48d80d5..29cddb6 100644 ---- a/arch/m68k/include/asm/sun3_pgalloc.h -+++ b/arch/m68k/include/asm/sun3_pgalloc.h -@@ -18,6 +18,7 @@ - - extern const char bad_pmd_string[]; - -+#define __pmd_alloc_one(mm,address,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm,address) ({ BUG(); ((pmd_t *)2); }) - - -@@ -38,10 +39,11 @@ do { \ - tlb_remove_page((tlb), pte); \ - } while (0) - --static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, -- unsigned long address) -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) - { -- unsigned long page = __get_free_page(GFP_KERNEL|__GFP_REPEAT); -+ unsigned long page = __get_free_page(gfp_mask); - - if (!page) - return NULL; -@@ -50,6 +52,12 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - return (pte_t *) (page); - } - -+static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, - unsigned long address) - { -diff --git a/arch/m68k/mm/memory.c b/arch/m68k/mm/memory.c -index 250b8b7..2a9390e 100644 ---- a/arch/m68k/mm/memory.c -+++ b/arch/m68k/mm/memory.c -@@ -58,7 +58,7 @@ void __init init_pointer_table(unsigned long ptable) - return; - } - --pmd_t *get_pointer_table (void) -+pmd_t *__get_pointer_table (gfp_t gfp_mask) - { - ptable_desc *dp = ptable_list.next; - unsigned char mask = PD_MARKBITS (dp); -@@ -75,7 +75,7 @@ pmd_t *get_pointer_table (void) - void *page; - ptable_desc *new; - -- if (!(page = (void *)get_zeroed_page(GFP_KERNEL))) -+ if (!(page = (void *)get_zeroed_page(gfp_mask))) - return NULL; - - flush_tlb_kernel_page(page); -@@ -98,6 +98,11 @@ pmd_t *get_pointer_table (void) - return (pmd_t *) (page_address(PD_PAGE(dp)) + off); - } - -+pmd_t *get_pointer_table (void) -+{ -+ return __get_pointer_table(GFP_KERNEL); -+} -+ - int free_pointer_table (pmd_t *ptable) - { - ptable_desc *dp; -diff --git a/arch/microblaze/include/asm/pgalloc.h b/arch/microblaze/include/asm/pgalloc.h -index ebd3579..7df761f 100644 ---- a/arch/microblaze/include/asm/pgalloc.h -+++ b/arch/microblaze/include/asm/pgalloc.h -@@ -106,9 +106,11 @@ extern inline void free_pgd_slow(pgd_t *pgd) - * the pgd will always be present.. - */ - #define pmd_alloc_one_fast(mm, address) ({ BUG(); ((pmd_t *)1); }) -+#define __pmd_alloc_one(mm, address,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm, address) ({ BUG(); ((pmd_t *)2); }) - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); - - static inline struct page *pte_alloc_one(struct mm_struct *mm, - unsigned long address) -@@ -175,6 +177,7 @@ extern inline void pte_free(struct mm_struct *mm, struct page *ptepage) - * We don't have any real pmd's, and this code never triggers because - * the pgd will always be present.. - */ -+#define __pmd_alloc_one(mm, address,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm, address) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(mm, x) do { } while (0) - #define __pmd_free_tlb(tlb, x, addr) pmd_free((tlb)->mm, x) -diff --git a/arch/microblaze/mm/pgtable.c b/arch/microblaze/mm/pgtable.c -index d1c06d0..a61be2a 100644 ---- a/arch/microblaze/mm/pgtable.c -+++ b/arch/microblaze/mm/pgtable.c -@@ -236,13 +236,12 @@ unsigned long iopa(unsigned long addr) - return pa; - } - --__init_refok pte_t *pte_alloc_one_kernel(struct mm_struct *mm, -- unsigned long address) -+__init_refok pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) - { - pte_t *pte; - if (mem_init_done) { -- pte = (pte_t *)__get_free_page(GFP_KERNEL | -- __GFP_REPEAT | __GFP_ZERO); -+ pte = (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); - } else { - pte = (pte_t *)early_get_page(); - if (pte) -@@ -260,3 +259,9 @@ void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags) - - map_page(address, phys, pgprot_val(flags)); - } -+ -+__init_refok pte_t *pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h -index 881d18b..f2c5439 100644 ---- a/arch/mips/include/asm/pgalloc.h -+++ b/arch/mips/include/asm/pgalloc.h -@@ -64,14 +64,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_pages((unsigned long)pgd, PGD_ORDER); - } - -+static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return (pte_t *) __get_free_pages(gfp_mask | __GFP_ZERO, PTE_ORDER); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- pte_t *pte; -- -- pte = (pte_t *) __get_free_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, PTE_ORDER); -- -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline struct page *pte_alloc_one(struct mm_struct *mm, -@@ -106,16 +108,22 @@ do { \ - - #ifndef __PAGETABLE_PMD_FOLDED - --static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { - pmd_t *pmd; - -- pmd = (pmd_t *) __get_free_pages(GFP_KERNEL|__GFP_REPEAT, PMD_ORDER); -+ pmd = (pmd_t *) __get_free_pages(gfp_mask, PMD_ORDER); - if (pmd) - pmd_init((unsigned long)pmd, (unsigned long)invalid_pte_table); - return pmd; - } - -+static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+{ -+ return __pmd_alloc_one(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) - { - free_pages((unsigned long)pmd, PMD_ORDER); -diff --git a/arch/mn10300/include/asm/pgalloc.h b/arch/mn10300/include/asm/pgalloc.h -index 146bacf..35150ae 100644 ---- a/arch/mn10300/include/asm/pgalloc.h -+++ b/arch/mn10300/include/asm/pgalloc.h -@@ -37,6 +37,8 @@ extern pgd_t *pgd_alloc(struct mm_struct *); - extern void pgd_free(struct mm_struct *, pgd_t *); - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); -+ - extern struct page *pte_alloc_one(struct mm_struct *, unsigned long); - - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) -diff --git a/arch/mn10300/mm/pgtable.c b/arch/mn10300/mm/pgtable.c -index 4ebf117..8ed94e8 100644 ---- a/arch/mn10300/mm/pgtable.c -+++ b/arch/mn10300/mm/pgtable.c -@@ -61,14 +61,20 @@ void set_pmd_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags) - local_flush_tlb_one(vaddr); - } - --pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT); -+ pte_t *pte = (pte_t *)__get_free_page(gfp_mask); - if (pte) - clear_page(pte); - return pte; - } - -+pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) - { - struct page *pte; -diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h -index fc987a1..0284a43 100644 ---- a/arch/parisc/include/asm/pgalloc.h -+++ b/arch/parisc/include/asm/pgalloc.h -@@ -61,15 +61,20 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd) - (__u32)(__pa((unsigned long)pmd) >> PxD_VALUE_SHIFT)); - } - --static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- pmd_t *pmd = (pmd_t *)__get_free_pages(GFP_KERNEL|__GFP_REPEAT, -- PMD_ORDER); -+ pmd_t *pmd = (pmd_t *)__get_free_pages(gfp_mask, PMD_ORDER); - if (pmd) - memset(pmd, 0, PAGE_SIZE< - - unsigned long *crst_table_alloc(struct mm_struct *); -+unsigned long * __crst_table_alloc(struct mm_struct *, int , gfp_t); - void crst_table_free(struct mm_struct *, unsigned long *); - - unsigned long *page_table_alloc(struct mm_struct *, unsigned long); -+unsigned long *__page_table_alloc(struct mm_struct *, gfp_t); - void page_table_free(struct mm_struct *, unsigned long *); - void page_table_free_rcu(struct mmu_gather *, unsigned long *); - -@@ -55,9 +57,11 @@ static inline unsigned long pgd_entry_type(struct mm_struct *mm) - return _SEGMENT_ENTRY_EMPTY; - } - -+#define __pud_alloc_one(mm,address,mask) ({ BUG(); ((pud_t *)2); }) - #define pud_alloc_one(mm,address) ({ BUG(); ((pud_t *)2); }) - #define pud_free(mm, x) do { } while (0) - -+#define __pmd_alloc_one(mm,address,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm,address) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(mm, x) do { } while (0) - -@@ -78,22 +82,34 @@ static inline unsigned long pgd_entry_type(struct mm_struct *mm) - int crst_table_upgrade(struct mm_struct *, unsigned long limit); - void crst_table_downgrade(struct mm_struct *, unsigned long limit); - --static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address) -+static inline pud_t * -+__pud_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- unsigned long *table = crst_table_alloc(mm); -+ unsigned long *table = __crst_table_alloc(mm, mm->context.noexec, gfp_mask); - if (table) - crst_table_init(table, _REGION3_ENTRY_EMPTY); - return (pud_t *) table; - } -+ -+static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address) -+{ -+ return __pud_alloc_one(mm, address, GFP_KERNEL); -+} - #define pud_free(mm, pud) crst_table_free(mm, (unsigned long *) pud) - --static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long vmaddr) -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long vmaddr, gfp_t gfp_mask) - { -- unsigned long *table = crst_table_alloc(mm); -+ unsigned long *table = __crst_table_alloc(mm, mm->context.noexec, gfp_mask); - if (table) - crst_table_init(table, _SEGMENT_ENTRY_EMPTY); - return (pmd_t *) table; - } -+ -+static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long vmaddr) -+{ -+ return __pmd_alloc_one(mm, vmaddr, GFP_KERNEL); -+} - #define pmd_free(mm, pmd) crst_table_free(mm, (unsigned long *) pmd) - - static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) -@@ -131,7 +147,11 @@ static inline void pmd_populate(struct mm_struct *mm, - /* - * page table entry allocation/free routines. - */ --#define pte_alloc_one_kernel(mm, vmaddr) ((pte_t *) page_table_alloc(mm, vmaddr)) -+#define __pte_alloc_one_kernel(mm, vmaddr, mask) \ -+ ((pte_t *) __page_table_alloc((mm), (mask))) -+#define pte_alloc_one_kernel(mm, vmaddr) \ -+ ((pte_t *) __pte_alloc_one_kernel((mm), (vmaddr), GFP_KERNEL|__GFP_REPEAT) -+ - #define pte_alloc_one(mm, vmaddr) ((pte_t *) page_table_alloc(mm, vmaddr)) - - #define pte_free_kernel(mm, pte) page_table_free(mm, (unsigned long *) pte) -diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c -index a3db5a3..04cbea3 100644 ---- a/arch/s390/mm/pgtable.c -+++ b/arch/s390/mm/pgtable.c -@@ -33,15 +33,21 @@ - #endif - - --unsigned long *crst_table_alloc(struct mm_struct *mm) -+unsigned long * -+__crst_table_alloc(struct mm_struct *mm, int noexec, gfp_t gfp_mask) - { -- struct page *page = alloc_pages(GFP_KERNEL, ALLOC_ORDER); -+ struct page *page = alloc_pages(gfp_mask, ALLOC_ORDER); - - if (!page) - return NULL; - return (unsigned long *) page_to_phys(page); - } - -+unsigned long *crst_table_alloc(struct mm_struct *mm, int noexec) -+{ -+ return __crst_table_alloc(mm, noexec, GFP_KERNEL); -+} -+ - void crst_table_free(struct mm_struct *mm, unsigned long *table) - { - free_pages((unsigned long) table, ALLOC_ORDER); -@@ -612,7 +618,7 @@ static inline unsigned int atomic_xor_bits(atomic_t *v, unsigned int bits) - /* - * page table entry allocation/free routines. - */ --unsigned long *page_table_alloc(struct mm_struct *mm, unsigned long vmaddr) -+unsigned long *__page_table_alloc(struct mm_struct *mm, gfp_t gfp_mask) - { - struct page *page; - unsigned long *table; -@@ -632,7 +638,7 @@ unsigned long *page_table_alloc(struct mm_struct *mm, unsigned long vmaddr) - } - if ((mask & FRAG_MASK) == FRAG_MASK) { - spin_unlock_bh(&mm->context.list_lock); -- page = alloc_page(GFP_KERNEL|__GFP_REPEAT); -+ page = alloc_page(gfp_mask); - if (!page) - return NULL; - pgtable_page_ctor(page); -@@ -652,6 +658,11 @@ unsigned long *page_table_alloc(struct mm_struct *mm, unsigned long vmaddr) - return table; - } - -+unsigned long *page_table_alloc(struct mm_struct *mm) -+{ -+ return __page_table_alloc(mm, GFP_KERNEL | __GFP_REPEAT); -+} -+ - void page_table_free(struct mm_struct *mm, unsigned long *table) - { - struct page *page; -diff --git a/arch/score/include/asm/pgalloc.h b/arch/score/include/asm/pgalloc.h -index 059a61b..1a0a3a5 100644 ---- a/arch/score/include/asm/pgalloc.h -+++ b/arch/score/include/asm/pgalloc.h -@@ -37,15 +37,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_pages((unsigned long)pgd, PGD_ORDER); - } - -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return (pte_t *) __get_free_pages(gfp_mask | __GFP_ZERO, PTE_ORDER); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- pte_t *pte; -- -- pte = (pte_t *) __get_free_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, -- PTE_ORDER); -- -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline struct page *pte_alloc_one(struct mm_struct *mm, -diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h -index 8c00785..aaed989 100644 ---- a/arch/sh/include/asm/pgalloc.h -+++ b/arch/sh/include/asm/pgalloc.h -@@ -31,10 +31,16 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, - /* - * Allocate and free page tables. - */ -+static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(QUICK_PT, gfp_mask, NULL); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- return quicklist_alloc(QUICK_PT, GFP_KERNEL | __GFP_REPEAT, NULL); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, -diff --git a/arch/sh/mm/pgtable.c b/arch/sh/mm/pgtable.c -index 26e03a1..b938eb8 100644 ---- a/arch/sh/mm/pgtable.c -+++ b/arch/sh/mm/pgtable.c -@@ -45,9 +45,15 @@ void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) - set_pud(pud, __pud((unsigned long)pmd)); - } - -+pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return kmem_cache_alloc(pmd_cachep, gfp_mask | __GFP_ZERO); -+} -+ - pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) - { -- return kmem_cache_alloc(pmd_cachep, PGALLOC_GFP); -+ return __pmd_alloc_one(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - void pmd_free(struct mm_struct *mm, pmd_t *pmd) -diff --git a/arch/tile/include/asm/pgalloc.h b/arch/tile/include/asm/pgalloc.h -index 1b90250..0d12a51 100644 ---- a/arch/tile/include/asm/pgalloc.h -+++ b/arch/tile/include/asm/pgalloc.h -@@ -86,9 +86,16 @@ static inline void pte_free(struct mm_struct *mm, struct page *pte) - #define pmd_pgtable(pmd) pmd_page(pmd) - - static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) -+{ -+ return pfn_to_kaddr(page_to_pfn(__pte_alloc_one(mm, address, gfp_mask))); -+} -+ -+static inline pte_t * - pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) - { -- return pfn_to_kaddr(page_to_pfn(pte_alloc_one(mm, address))); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) -diff --git a/arch/tile/mm/pgtable.c b/arch/tile/mm/pgtable.c -index 345edfe..6ce0ef6 100644 ---- a/arch/tile/mm/pgtable.c -+++ b/arch/tile/mm/pgtable.c -@@ -280,10 +280,11 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd) - - #define L2_USER_PGTABLE_PAGES (1 << L2_USER_PGTABLE_ORDER) - --struct page *pgtable_alloc_one(struct mm_struct *mm, unsigned long address, -- int order) -+struct page * -+__pte_alloc_one(struct mm_struct *mm, unsigned long address, int order, -+ gfp_t gfp_mask) - { -- gfp_t flags = GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO; -+ gfp_t flags = gfp_mask|__GFP_REPEAT|__GFP_ZERO; - struct page *p; - int i; - -@@ -305,6 +306,11 @@ struct page *pgtable_alloc_one(struct mm_struct *mm, unsigned long address, - return p; - } - -+struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address, int order) -+{ -+ return __pte_alloc_one(mm, address, GFP_KERNEL); -+} -+ - /* - * Free page immediately (used in __pte_alloc if we raced with another - * process). We have to correct whatever pte_alloc_one() did before -diff --git a/arch/um/include/asm/pgalloc.h b/arch/um/include/asm/pgalloc.h -index bf90b2a..8d0507b 100644 ---- a/arch/um/include/asm/pgalloc.h -+++ b/arch/um/include/asm/pgalloc.h -@@ -26,6 +26,7 @@ extern pgd_t *pgd_alloc(struct mm_struct *); - extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); - extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long); - - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) -diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c -index ebb86b2..41be7e8 100644 ---- a/arch/um/kernel/mem.c -+++ b/arch/um/kernel/mem.c -@@ -286,12 +286,15 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_page((unsigned long) pgd); - } - --pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- pte_t *pte; -+ return (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); -+} - -- pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -- return pte; -+pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) -@@ -305,15 +308,21 @@ pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) - } - - #ifdef CONFIG_3_LEVEL_PGTABLES --pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- pmd_t *pmd = (pmd_t *) __get_free_page(GFP_KERNEL); -+ pmd_t *pmd = (pmd_t *) __get_free_page(gfp_mask); - - if (pmd) - memset(pmd, 0, PAGE_SIZE); - - return pmd; - } -+ -+pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+{ -+ return __pmd_alloc_one(mm, address, GFP_KERNEL); -+} - #endif - - void *uml_kmalloc(int size, int flags) -diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h -index b4389a4..db83bd4 100644 ---- a/arch/x86/include/asm/pgalloc.h -+++ b/arch/x86/include/asm/pgalloc.h -@@ -34,6 +34,7 @@ extern pgd_t *pgd_alloc(struct mm_struct *); - extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); - extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long); - - /* Should really implement gc for free page table pages. This could be -@@ -78,9 +79,15 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, - #define pmd_pgtable(pmd) pmd_page(pmd) - - #if PAGETABLE_LEVELS > 2 -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) -+{ -+ return (pmd_t *)get_zeroed_page(gfp_mask); -+} -+ - static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr) - { -- return (pmd_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT); -+ return __pmd_alloc_one(mm, addr, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) -@@ -114,9 +121,15 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) - set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud))); - } - -+static inline pud_t * -+__pud_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) -+{ -+ return (pud_t *)get_zeroed_page(gfp_mask); -+} -+ - static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) - { -- return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT); -+ return __pud_alloc_one(mm, addr, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void pud_free(struct mm_struct *mm, pud_t *pud) -diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c -index 8573b83..62a4f63 100644 ---- a/arch/x86/mm/pgtable.c -+++ b/arch/x86/mm/pgtable.c -@@ -15,9 +15,15 @@ - - gfp_t __userpte_alloc_gfp = PGALLOC_GFP | PGALLOC_USER_GFP; - -+pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return (pte_t *)__get_free_page(gfp_mask | __GFP_NOTRACK | __GFP_ZERO); -+} -+ - pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) - { -- return (pte_t *)__get_free_page(PGALLOC_GFP); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) -diff --git a/arch/xtensa/include/asm/pgalloc.h b/arch/xtensa/include/asm/pgalloc.h -index 40cf9bc..d5a23ae 100644 ---- a/arch/xtensa/include/asm/pgalloc.h -+++ b/arch/xtensa/include/asm/pgalloc.h -@@ -42,10 +42,17 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - - extern struct kmem_cache *pgtable_cache; - -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) -+{ -+ return kmem_cache_alloc(pgtable_cache, gfp_mask); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- return kmem_cache_alloc(pgtable_cache, GFP_KERNEL|__GFP_REPEAT); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, -diff --git a/include/asm-generic/4level-fixup.h b/include/asm-generic/4level-fixup.h -index 77ff547..f638309 100644 ---- a/include/asm-generic/4level-fixup.h -+++ b/include/asm-generic/4level-fixup.h -@@ -10,10 +10,14 @@ - - #define pud_t pgd_t - --#define pmd_alloc(mm, pud, address) \ -- ((unlikely(pgd_none(*(pud))) && __pmd_alloc(mm, pud, address))? \ -+#define pmd_alloc_with_mask(mm, pud, address, mask) \ -+ ((unlikely(pgd_none(*(pud))) && __pmd_alloc(mm, pud, address, mask))? \ - NULL: pmd_offset(pud, address)) - -+#define pmd_alloc(mm, pud, address) \ -+ pmd_alloc_with_mask(mm, pud, address, GFP_KERNEL) -+ -+#define pud_alloc_with_mask(mm, pgd, address, mask) (pgd) - #define pud_alloc(mm, pgd, address) (pgd) - #define pud_offset(pgd, start) (pgd) - #define pud_none(pud) 0 -diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h -index 725612b..96ca8da 100644 ---- a/include/asm-generic/pgtable-nopmd.h -+++ b/include/asm-generic/pgtable-nopmd.h -@@ -55,7 +55,8 @@ static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address) - * allocating and freeing a pmd is trivial: the 1-entry pmd is - * inside the pud, so has no extra memory associated with it. - */ --#define pmd_alloc_one(mm, address) NULL -+#define __pmd_alloc_one(mm, address, mask) NULL -+#define pmd_alloc_one(mm, address) NULL - static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) - { - } -diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgtable-nopud.h -index 810431d..5a21868 100644 ---- a/include/asm-generic/pgtable-nopud.h -+++ b/include/asm-generic/pgtable-nopud.h -@@ -50,6 +50,7 @@ static inline pud_t * pud_offset(pgd_t * pgd, unsigned long address) - * allocating and freeing a pud is trivial: the 1-entry pud is - * inside the pgd, so has no extra memory associated with it. - */ -+#define __pud_alloc_one(mm, address, mask) NULL - #define pud_alloc_one(mm, address) NULL - #define pud_free(mm, x) do { } while (0) - #define __pud_free_tlb(tlb, x, a) do { } while (0) -diff --git a/include/linux/mm.h b/include/linux/mm.h -index b36d08c..aeda962 100644 ---- a/include/linux/mm.h -+++ b/include/linux/mm.h -@@ -1149,44 +1149,60 @@ static inline pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, - - #ifdef __PAGETABLE_PUD_FOLDED - static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, -- unsigned long address) -+ unsigned long address, gfp_t gfp_mask) - { - return 0; - } - #else --int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address); -+int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address, -+ gfp_t gfp_mask); - #endif - - #ifdef __PAGETABLE_PMD_FOLDED - static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, -- unsigned long address) -+ unsigned long address, gfp_t gfp_mask) - { - return 0; - } - #else --int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); -+int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address, -+ gfp_t gfp_mask); - #endif - - int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, - pmd_t *pmd, unsigned long address); --int __pte_alloc_kernel(pmd_t *pmd, unsigned long address); -+int __pte_alloc_kernel(pmd_t *pmd, unsigned long address, gfp_t gfp_mask); - - /* - * The following ifdef needed to get the 4level-fixup.h header to work. - * Remove it when 4level-fixup.h has been removed. - */ - #if defined(CONFIG_MMU) && !defined(__ARCH_HAS_4LEVEL_HACK) --static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) -+static inline pud_t *pud_alloc_with_mask(struct mm_struct *mm, pgd_t *pgd, -+ unsigned long address, gfp_t gfp_mask) - { -- return (unlikely(pgd_none(*pgd)) && __pud_alloc(mm, pgd, address))? -+ return (unlikely(pgd_none(*pgd)) && __pud_alloc(mm, pgd, address, gfp_mask))? - NULL: pud_offset(pgd, address); - } - --static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) -+static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, -+ unsigned long address) - { -- return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address))? -+ return pud_alloc_with_mask(mm, pgd, address, GFP_KERNEL); -+} -+ -+static inline pmd_t *pmd_alloc_with_mask(struct mm_struct *mm, pud_t *pud, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address, gfp_mask))? - NULL: pmd_offset(pud, address); - } -+ -+static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, -+ unsigned long address) -+{ -+ return pmd_alloc_with_mask(mm, pud, address, GFP_KERNEL); -+} - #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ - - #if USE_SPLIT_PTLOCKS -@@ -1247,8 +1263,12 @@ static inline void pgtable_page_dtor(struct page *page) - pmd, address))? \ - NULL: pte_offset_map_lock(mm, pmd, address, ptlp)) - -+#define pte_alloc_kernel_with_mask(pmd, address, mask) \ -+ ((unlikely(pmd_none(*(pmd))) && __pte_alloc_kernel(pmd, address, mask))? \ -+ NULL: pte_offset_kernel(pmd, address)) -+ - #define pte_alloc_kernel(pmd, address) \ -- ((unlikely(pmd_none(*(pmd))) && __pte_alloc_kernel(pmd, address))? \ -+ ((unlikely(pmd_none(*(pmd))) && __pte_alloc_kernel(pmd, address, GFP_KERNEL))? \ - NULL: pte_offset_kernel(pmd, address)) - - extern void free_area_init(unsigned long * zones_size); -diff --git a/mm/memory.c b/mm/memory.c -index 906bc23..ed06ba2 100644 ---- a/mm/memory.c -+++ b/mm/memory.c -@@ -608,9 +608,9 @@ int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, - return 0; - } - --int __pte_alloc_kernel(pmd_t *pmd, unsigned long address) -+int __pte_alloc_kernel(pmd_t *pmd, unsigned long address, gfp_t gfp_mask) - { -- pte_t *new = pte_alloc_one_kernel(&init_mm, address); -+ pte_t *new = __pte_alloc_one_kernel(&init_mm, address, gfp_mask); - if (!new) - return -ENOMEM; - -@@ -3560,9 +3560,10 @@ retry: - * Allocate page upper directory. - * We've already handled the fast-path in-line. - */ --int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) -+int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address, -+ gfp_t gfp_mask) - { -- pud_t *new = pud_alloc_one(mm, address); -+ pud_t *new = __pud_alloc_one(mm, address, gfp_mask); - if (!new) - return -ENOMEM; - -@@ -3583,9 +3584,10 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) - * Allocate page middle directory. - * We've already handled the fast-path in-line. - */ --int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) -+int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address, -+ gfp_t gfp_mask) - { -- pmd_t *new = pmd_alloc_one(mm, address); -+ pmd_t *new = __pmd_alloc_one(mm, address, gfp_mask); - if (!new) - return -ENOMEM; - -diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index 2aad499..85f0e13 100644 ---- a/mm/vmalloc.c -+++ b/mm/vmalloc.c -@@ -87,8 +87,8 @@ static void vunmap_page_range(unsigned long addr, unsigned long end) - } while (pgd++, addr = next, addr != end); - } - --static int vmap_pte_range(pmd_t *pmd, unsigned long addr, -- unsigned long end, pgprot_t prot, struct page **pages, int *nr) -+static int vmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, -+ pgprot_t prot, struct page **pages, int *nr, gfp_t gfp_mask) - { - pte_t *pte; - -@@ -97,7 +97,7 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, - * callers keep track of where we're up to. - */ - -- pte = pte_alloc_kernel(pmd, addr); -+ pte = pte_alloc_kernel_with_mask(pmd, addr, gfp_mask); - if (!pte) - return -ENOMEM; - do { -@@ -114,34 +114,34 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, - } - - static int vmap_pmd_range(pud_t *pud, unsigned long addr, -- unsigned long end, pgprot_t prot, struct page **pages, int *nr) -+ unsigned long end, pgprot_t prot, struct page **pages, int *nr, gfp_t gfp_mask) - { - pmd_t *pmd; - unsigned long next; - -- pmd = pmd_alloc(&init_mm, pud, addr); -+ pmd = pmd_alloc_with_mask(&init_mm, pud, addr, gfp_mask); - if (!pmd) - return -ENOMEM; - do { - next = pmd_addr_end(addr, end); -- if (vmap_pte_range(pmd, addr, next, prot, pages, nr)) -+ if (vmap_pte_range(pmd, addr, next, prot, pages, nr, gfp_mask)) - return -ENOMEM; - } while (pmd++, addr = next, addr != end); - return 0; - } - --static int vmap_pud_range(pgd_t *pgd, unsigned long addr, -- unsigned long end, pgprot_t prot, struct page **pages, int *nr) -+static int vmap_pud_range(pgd_t *pgd, unsigned long addr, unsigned long end, -+ pgprot_t prot, struct page **pages, int *nr, gfp_t gfp_mask) - { - pud_t *pud; - unsigned long next; - -- pud = pud_alloc(&init_mm, pgd, addr); -+ pud = pud_alloc_with_mask(&init_mm, pgd, addr, gfp_mask); - if (!pud) - return -ENOMEM; - do { - next = pud_addr_end(addr, end); -- if (vmap_pmd_range(pud, addr, next, prot, pages, nr)) -+ if (vmap_pmd_range(pud, addr, next, prot, pages, nr, gfp_mask)) - return -ENOMEM; - } while (pud++, addr = next, addr != end); - return 0; -@@ -153,8 +153,8 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr, - * - * Ie. pte at addr+N*PAGE_SIZE shall point to pfn corresponding to pages[N] - */ --static int vmap_page_range_noflush(unsigned long start, unsigned long end, -- pgprot_t prot, struct page **pages) -+static int __vmap_page_range_noflush(unsigned long start, unsigned long end, -+ pgprot_t prot, struct page **pages, gfp_t gfp_mask) - { - pgd_t *pgd; - unsigned long next; -@@ -166,7 +166,7 @@ static int vmap_page_range_noflush(unsigned long start, unsigned long end, - pgd = pgd_offset_k(addr); - do { - next = pgd_addr_end(addr, end); -- err = vmap_pud_range(pgd, addr, next, prot, pages, &nr); -+ err = vmap_pud_range(pgd, addr, next, prot, pages, &nr, gfp_mask); - if (err) - return err; - } while (pgd++, addr = next, addr != end); -@@ -174,16 +174,29 @@ static int vmap_page_range_noflush(unsigned long start, unsigned long end, - return nr; - } - --static int vmap_page_range(unsigned long start, unsigned long end, -- pgprot_t prot, struct page **pages) -+ -+static int vmap_page_range_noflush(unsigned long start, unsigned long end, -+ pgprot_t prot, struct page **pages) -+{ -+ return __vmap_page_range_noflush(start, end, prot, pages, GFP_KERNEL); -+} -+ -+static int __vmap_page_range(unsigned long start, unsigned long end, -+ pgprot_t prot, struct page **pages, gfp_t gfp_mask) - { - int ret; - -- ret = vmap_page_range_noflush(start, end, prot, pages); -+ ret = __vmap_page_range_noflush(start, end, prot, pages, gfp_mask); - flush_cache_vmap(start, end); - return ret; - } - -+static int vmap_page_range(unsigned long start, unsigned long end, -+ pgprot_t prot, struct page **pages) -+{ -+ return __vmap_page_range(start, end, prot, pages, GFP_KERNEL); -+} -+ - int is_vmalloc_or_module_addr(const void *x) - { - /* -@@ -1259,13 +1272,14 @@ void unmap_kernel_range(unsigned long addr, unsigned long size) - flush_tlb_kernel_range(addr, end); - } - --int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) -+int __map_vm_area(struct vm_struct *area, pgprot_t prot, -+ struct page ***pages, gfp_t gfp_mask) - { - unsigned long addr = (unsigned long)area->addr; - unsigned long end = addr + area->size - PAGE_SIZE; - int err; - -- err = vmap_page_range(addr, end, prot, *pages); -+ err = __vmap_page_range(addr, end, prot, *pages, gfp_mask); - if (err > 0) { - *pages += err; - err = 0; -@@ -1273,6 +1287,11 @@ int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) - - return err; - } -+ -+int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) -+{ -+ return __map_vm_area(area, prot, pages, GFP_KERNEL); -+} - EXPORT_SYMBOL_GPL(map_vm_area); - - /*** Old vmalloc interfaces ***/ -@@ -1614,7 +1633,7 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, - area->pages[i] = page; - } - -- if (map_vm_area(area, prot, &pages)) -+ if (__map_vm_area(area, prot, &pages, gfp_mask)) - goto fail; - return area->addr; - diff --git a/sys-kernel/ec2-sources/files/ec2-sources-3.7.3-devtmpfs.patch b/sys-kernel/ec2-sources/files/ec2-sources-3.7.3-devtmpfs.patch new file mode 100644 index 000000000..783ebf741 --- /dev/null +++ b/sys-kernel/ec2-sources/files/ec2-sources-3.7.3-devtmpfs.patch @@ -0,0 +1,26 @@ +diff -Nurp sabayon/config.old/ec2-3.7-amd64.config sabayon/config/ec2-3.7-amd64.config +--- sabayon/config.old/ec2-3.7-amd64.config 2013-01-20 15:17:20.000000000 +0000 ++++ sabayon/config/ec2-3.7-amd64.config 2013-02-11 13:16:15.000000000 +0000 +@@ -785,7 +785,8 @@ CONFIG_HAVE_BPF_JIT=y + # Generic Driver Options + # + CONFIG_UEVENT_HELPER_PATH="" +-# CONFIG_DEVTMPFS is not set ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y + CONFIG_STANDALONE=y + CONFIG_PREVENT_FIRMWARE_BUILD=y + CONFIG_FW_LOADER=y +diff -Nurp sabayon/config.old/ec2-3.7-x86.config sabayon/config/ec2-3.7-x86.config +--- sabayon/config.old/ec2-3.7-x86.config 2013-01-20 15:17:20.000000000 +0000 ++++ sabayon/config/ec2-3.7-x86.config 2013-02-11 13:16:27.000000000 +0000 +@@ -808,7 +808,8 @@ CONFIG_WIRELESS=y + # Generic Driver Options + # + CONFIG_UEVENT_HELPER_PATH="" +-# CONFIG_DEVTMPFS is not set ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y + CONFIG_STANDALONE=y + CONFIG_PREVENT_FIRMWARE_BUILD=y + CONFIG_FW_LOADER=y diff --git a/sys-kernel/linux-ec2/Manifest b/sys-kernel/linux-ec2/Manifest index 3f5dc1819..a6ca2cadc 100644 --- a/sys-kernel/linux-ec2/Manifest +++ b/sys-kernel/linux-ec2/Manifest @@ -1,20 +1,5 @@ -DIST linux-3.4-r8+sabayon.tar.bz2 80497923 SHA256 419090691f78842f1841c472db40c6aab8130997f843b1c9dd495c840b801131 SHA512 917c3d9fd98caed25215bbdd6944e2e97ca02e38099df91fd155da2de0f980ec6b656bd435fb100ee75dd34a3e5521dfc48d6ff29b1696007c31ac8da4db4b6c WHIRLPOOL e811e3f398cf8372921ae797c23d3ba5ee54400d28b1d4051fd34c4380bf2058b742c50f215d10ed7787af1dfb33944b0eeb4c2da070bdc262a0eba5a7872308 -DIST linux-3.5+sabayon.tar.bz2 81434151 SHA256 c9567f3038ff3a7d4896a28ed87f889108c05eda36f37f8f2145ce0e5a869499 -DIST linux-3.5-r1+sabayon.tar.bz2 82414827 SHA256 b24102642ad9f47d13507f5c7170231520ffff31f59ad70edcdf072b5c3a4831 -DIST linux-3.5-r2+sabayon.tar.bz2 82413462 SHA256 96f0796c49b09197e371e32fdd7dfeb36d136cec12edfb6121c8d8e0ed48c812 -DIST linux-3.5-r3+sabayon.tar.bz2 82419132 SHA256 6a2c1e6ade660d8be0aed46ce1fc4c9e9959fed4b9e6fbac4823a347de15988e -DIST linux-3.5-r4+sabayon.tar.bz2 82419945 SHA256 8cb8b6518e859f3a9aa12d040989d69e335b4932944d81b6ca2851db76e705df -DIST linux-3.5-r5+sabayon.tar.bz2 82418175 SHA256 9376647822023489be49abc09fe0a8ef1432820b2a4052d3bd1bdbfaedeb1bb3 SHA512 c82ab2b81514a995385556b98c42230a4e5fd709ad045efd6a93f0473e1e90d82409a971e03a7a5ec160379da88d565f9b01014d590d909a56c9ca575c854904 WHIRLPOOL c60d6f5b903809ccc31562e685ac44c14590bfb86d500458e1d02d8c1ca70878f7b124f148f45ef02e80fb5a481fab9bad1b9d8384f91058ac88b9f9cf43404d -DIST linux-3.5-r6+sabayon.tar.bz2 82386314 SHA256 93f1dbe351665af7e381fc9004c5f15c8c5d105577e1c1cc1f837629e8d328c4 SHA512 99dc132b02d1f3d7b837ff1f2943023455dde494ea41d7eb6c475fcfe145f5fd20af7600235119c49aea5e03cdf14c3598af14a30e878b3cfc8763a8f72cb8a6 WHIRLPOOL cbd59f1592057c6c1dc934013806fbe1aa2334f17dbb3b6b36dc0f65271dbbfe889a45d83583edbac6b4a4cf72923d462c83b44d41445ceb8cf066c3498c8f6b -DIST linux-3.5-r7+sabayon.tar.bz2 82380933 SHA256 f36d23c7f450f83899f3624fb1a7fe7439a836f9d5a9ac77bb6e4bead169b606 SHA512 70d94c6cad85f39c715b92ee0310271dbe033760e664e1d7fb156029534dcb2335aa2dccdaf50db139683ad0cdeb44cefd8d3d029b9af0ee680b29dcb32cc6a9 WHIRLPOOL c5d6938a68dd515a88a3b7df8c1abd6888bb807a35b7139cc08606b297a69a1b608acf524b2ec129cb6017f9a303f171f1975dd8c7486ecbf7ef5e62451e08b5 -DIST linux-3.5-r8+sabayon.tar.bz2 82379753 SHA256 25cfb465961bc186ce79f29d0a0dcb5288ef89876019afdbe2014a4893af4e23 SHA512 442732217c02a3cd930ef04f6f539c2c364291e48fb427d863b009dd484e3a17f7b1877db5798bab9303aa66a64688e98106e8a57639f651618b41f6c58c1b8c WHIRLPOOL 8e6917ff0ef11c2a9f569128209b24c072d5e1dde9adb366b832844c92955b859d39f8e3872ac1a3e8b1c8fa49920eb0262af4d4316650a3fbd072d75dce8a49 +DIST linux-3.4-r9+sabayon.tar.bz2 80500636 SHA256 c399252fd365c4253cce66903ff579beef000b249b50e8e50fadefd013f585a3 SHA512 d7da856452020cfe093231d95a6459d27a48864083fe0775aae11e0e3de62381b9b356f2a455699fb9563e44cc3f531e086634931966125a40f597cc711a6f4d WHIRLPOOL d8e0c3241ebfe3aa8e7bafb15a13eb5adad21711600206aadb4b86cddb6c6a54c481bce1635ef24730c008ad669e85ec426ea6d31f1e4112b9e92f33c2fa71a7 +DIST linux-3.5-r9+sabayon.tar.bz2 82384401 SHA256 39cd4c5c0f2956219c44d60d3fb32d65489dd896b2533531066c67ce93cbce55 SHA512 00b176a09a2bc6c796bc7b2bd1ead085037367b75d5fcafe8cdb64a5df3cc482addcd751f5db784712635d6fcf846713675b544a546fbeea22d4881b7bd488b5 WHIRLPOOL bcba5d3f205ff14530fdb98e4664031dd2ac396752dab134e41f148c2258244c87c8e3e76ed541fb51d576f82be702a1b4f8e4847d7ec0e09a90f6707343c846 DIST linux-3.6+sabayon.tar.bz2 83625528 SHA256 a36a93aee910b2bbe1bcb61f298de5be5441cf49d77e07459a9996db58ad1831 SHA512 f864699e10c235cd12baa790b4b7c41a5a00584e47a63a7983512d72503a81c6a2f4b2d51b15ea87a884a8327b080dc03ace39006f61033de89bea29d6ac97ab WHIRLPOOL fa98a7d07ca70057650c1344729b99c8cfbf6d172f8af0a5b93ee0c2022838882fa2defa90cde01ca8fbec869d2c8a011fb7cadd274b6b26b94732302290521c -DIST linux-3.6-r1+sabayon.tar.bz2 83636499 SHA256 3d7962c60bcd26233927fa962a0864807e1c19364e234844ec2bfefa51a3789b SHA512 bff82ef5d134ddc630cf34262fd7485e8029c8ff92ee32f3a4fb91765fcefc1516ad2e7f7c1430843009db0659f015f71a9f21cf0e4ad00c85415174ba56a723 WHIRLPOOL 29ffad7dfe1301f8de8118bb8c33c48a8ea1012a758853ead282ac47e4afb127bf3725146b6ef7cbcaccbc07f0861672f929c7e9ba4d11f15694f3211abff71e -DIST linux-3.6-r2+sabayon.tar.bz2 83634335 SHA256 be871ef9b3aa25ef20e8286acf8f970223cb090e65eea23ed0f8af8febc0180b SHA512 b2719ae8f52e0876b05892e4c0d4100991a7e263876a33a9dd95f97b1cc88a43f05ff9d57f7d9ba9e69bbad7daa458988e34d443fa1e4197c30169be9f92dc4f WHIRLPOOL 18785c0a0a39600eb7981ce13e2f4c3be938ae6ba8b090b136704b137d598130750a3f9d05602d347034d39c495982274125339c1c19a9b1f0da559f51e2411e -DIST linux-3.6-r3+sabayon.tar.bz2 83630612 SHA256 f833b290ac42374336c080596b0c9b39c71d4e16bceddb33a7a2e7038a8e085e SHA512 0573338755cbe1035fbca79b83893b1a46f480f2ffa99699a045509a19275197c578a598a477c29bcdf3711236866658dd5db9a409300ef72574ca55adf6564d WHIRLPOOL b65fd1518f98af15f0a84ddede7824fc06f9b22f3ca5bf7d6bbe83b1b9f679c9177fc1de0d2475a800cdeb492529c6b582c8008dfbc3df4021a5d47f8f584911 -DIST linux-3.7+sabayon.tar.bz2 84761659 SHA256 302e8a11943eed4ec2f346583b9ea1cb5ebd2b1aef43ed5e8559fcaa662103fe SHA512 4d1db89a9088d3a21e0f1937e8a9b0f49d25de56a90fefd1023ae87894a3f53127903792e34fb105c99493405265db80536d1c3a80f99b96af381b2679fa7714 WHIRLPOOL c44deb7fc1611cf80895b9486dc6be3067f8420962a29f53b391eb3312a3ae4390b508c48e40bac7d3f0f767949e89d221ca65506d3755aedbaa80ab17ca1c06 -DIST linux-3.7-r1+sabayon.tar.bz2 84768329 SHA256 e717c079863992fbeb3b999b67081b481392f92679a1062802043ebb4d9fa244 SHA512 323f3669d35c34c50b47ef1b16c88a739d137d3db723b89d565331c80a03269da82025f9c2a36c12fb1470a1fa9925c0cf268a88a9199ce4b8bf83f74b1fbeb5 WHIRLPOOL 52ae6a2a6a7cd7ddac7fa93477fe4df63f6481fb403f5a54ee41dfb94a4d62acd53e821a7b16d980f0bd1216ce1efd581433d0d58f01fa862e478b087856ead4 -DIST linux-3.7-r2+sabayon.tar.bz2 84773257 SHA256 50bc0c130a41f3b8dd6f089030d1a53640c5e446468b52b6236b4e54ba4cdba6 SHA512 bed39c28888af1f8206b39b7a450d8fc016088a26fcb2bb07a12f0334657c237b542f0395c343ce210947c1d55cd1471690b8be1b27ccd8149a2806837e40648 WHIRLPOOL af4bd5b33a2c09c099c6d3e99c7be0855e9f7a4d83c5885e9a411310d252314c30b7bf8587569c8d26acfb68422fbf93b56f0c6d70f9c9b6e7156bff73312007 -DIST linux-3.7-r3+sabayon.tar.bz2 84775155 SHA256 3c4b5f42033eb0b2be2a1168af6f3a9f059763ac0d34e9b22c9982d731c92c27 SHA512 c14cbcae90ebb55703438d0a0d179949b3e7b63821576b62c6cc07ae5763beb95b3f7274e181b1a787cf722b59768a5bed37d616a0aca22029fd521680904d39 WHIRLPOOL 322e837580a11abf0da600858707242aca96cc6d87a441b348487393c4bac3d102c7f5df60b526077b52737911bc9bb552cdf9657f6471e9056b9f3942687ffb +DIST linux-3.6-r4+sabayon.tar.bz2 83644423 SHA256 9a772b63a0841179a649b5af3b6d68adf67f6c58ec9a1398271e702f7f06660a SHA512 c294046393bd5a071ea70fe542577dba00c3f812e3422aa7af8583de95df0a4afda72e0b53153603ebcd8bfe25161126849dd262b8f9ed39ffb9048914b06520 WHIRLPOOL fb5e32732ffea150cb994b27222dc8329c9118097c279916dd7e5fc4e9ce934a503ba58edb7a727f45bd79a1d57951ef3de7020cf92058d2bdd89ad9d5b0f9b9 DIST linux-3.7.3+sabayon.tar.bz2 84787938 SHA256 eb9f7dda8c81b27d1bc931f41209c77bda8fcae5e444d11b2b073cf8b20cee3c SHA512 3c899e5a5c5747315c1a1508c57e2409a7393dd90c5c472c78944aab4b1a66bc0bf62d4fdab5b6bcb1ff1664243f1fd846a66970b409b4678674d37c3c96fd98 WHIRLPOOL 35a62746a42079cae1c8bc73d5083a99da2492271611ebc019c78cb801dce4179ea7bf9528e0184bf794b543ad1d7e1b800091387b2b86f47b3d3fe253d1bf85 -DIST linux-3.7.4+sabayon.tar.bz2 84787421 SHA256 d7cf0d5c307774ee4f9a032fea206c5b4833b2242060547af00e59c9af26201d SHA512 6d6b5bd0399f8f71eaed25d3cd65dc4531ed3a4cce6d5218f266e3b55a8285ee327f6f9ff777fd0bc643aff0495728acf864991a48b663163ddb95e0bc00c075 WHIRLPOOL f06934db26f29476f79c926425a2a7e474a772fabed6527a92442f206212b56e8b5dab5ef1c6359caf494099a032aeab220eefce5b82fca9bd35b88d0365308a diff --git a/sys-kernel/linux-ec2/files/__pte_alloc_kernel-gentoo-bug-416685.patch b/sys-kernel/linux-ec2/files/__pte_alloc_kernel-gentoo-bug-416685.patch deleted file mode 100644 index b7d0af2f4..000000000 --- a/sys-kernel/linux-ec2/files/__pte_alloc_kernel-gentoo-bug-416685.patch +++ /dev/null @@ -1,1456 +0,0 @@ -commit 35906966f3dc93f59957d2933bece603d0a2a57e -Author: Fabio Erculiani -Date: Sun Jul 29 15:04:54 2012 +0200 - - sabayon: add __pte_alloc_kernel() patch as per Gentoo Bug #416685 - -diff --git a/arch/alpha/include/asm/pgalloc.h b/arch/alpha/include/asm/pgalloc.h -index bc2a0da..d05dfc2 100644 ---- a/arch/alpha/include/asm/pgalloc.h -+++ b/arch/alpha/include/asm/pgalloc.h -@@ -38,10 +38,15 @@ pgd_free(struct mm_struct *mm, pgd_t *pgd) - } - - static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return (pmd_t *)__get_free_page(gfp_mask | __GFP_ZERO); -+} -+ -+static inline pmd_t * - pmd_alloc_one(struct mm_struct *mm, unsigned long address) - { -- pmd_t *ret = (pmd_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -- return ret; -+ return __pmd_alloc_one(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void -@@ -51,10 +56,15 @@ pmd_free(struct mm_struct *mm, pmd_t *pmd) - } - - static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addressi, gfp_t gfp_mask) -+{ -+ return (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); -+} -+ -+static inline pte_t * - pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void -diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h -index 943504f..6052b12 100644 ---- a/arch/arm/include/asm/pgalloc.h -+++ b/arch/arm/include/asm/pgalloc.h -@@ -48,6 +48,7 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) - /* - * Since we have only two-level page tables, these are trivial - */ -+#define __pmd_alloc_one(mm,addr,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(mm, pmd) do { } while (0) - #define pud_populate(mm,pmd,pte) BUG() -@@ -81,17 +82,23 @@ static inline void clean_pte_table(pte_t *pte) - * +------------+ - */ - static inline pte_t * --pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr) -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) - { - pte_t *pte; - -- pte = (pte_t *)__get_free_page(PGALLOC_GFP); -+ pte = (pte_t *)__get_free_page(gfp_mask | __GFP_NOTRACK | __GFP_ZERO); - if (pte) - clean_pte_table(pte); - - return pte; - } - -+static inline pte_t * -+pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr) -+{ -+ return __pte_alloc_one_kernel(mm, addr, GFP_KERNEL | __GFP_REPEAT); -+} -+ - static inline pgtable_t - pte_alloc_one(struct mm_struct *mm, unsigned long addr) - { -diff --git a/arch/avr32/include/asm/pgalloc.h b/arch/avr32/include/asm/pgalloc.h -index bc7e8ae..cb88080 100644 ---- a/arch/avr32/include/asm/pgalloc.h -+++ b/arch/avr32/include/asm/pgalloc.h -@@ -51,10 +51,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - quicklist_free(QUICK_PGD, NULL, pgd); - } - -+static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(QUICK_PT, gfp_mask, NULL); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- return quicklist_alloc(QUICK_PT, GFP_KERNEL | __GFP_REPEAT, NULL); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, -diff --git a/arch/cris/include/asm/pgalloc.h b/arch/cris/include/asm/pgalloc.h -index 6da975d..20254ee 100644 ---- a/arch/cris/include/asm/pgalloc.h -+++ b/arch/cris/include/asm/pgalloc.h -@@ -22,10 +22,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_page((unsigned long)pgd); - } - -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) -+{ -+ return (pte_t *) __get_free_page(gfp_mask | __GFP_ZERO); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) -diff --git a/arch/frv/include/asm/pgalloc.h b/arch/frv/include/asm/pgalloc.h -index 416d19a..bfc4f7c 100644 ---- a/arch/frv/include/asm/pgalloc.h -+++ b/arch/frv/include/asm/pgalloc.h -@@ -35,8 +35,10 @@ extern pgd_t *pgd_alloc(struct mm_struct *); - extern void pgd_free(struct mm_struct *mm, pgd_t *); - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); - - extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long); -+extern pgtable_t __pte_alloc_one(struct mm_struct *, unsigned long, gfp_t); - - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) - { -@@ -60,6 +62,7 @@ do { \ - * inside the pgd, so has no extra memory associated with it. - * (In the PAE case we free the pmds as part of the pgd.) - */ -+#define __pmd_alloc_one(mm, addr,mask) ({ BUG(); ((pmd_t *) 2); }) - #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *) 2); }) - #define pmd_free(mm, x) do { } while (0) - #define __pmd_free_tlb(tlb,x,a) do { } while (0) -diff --git a/arch/frv/include/asm/pgtable.h b/arch/frv/include/asm/pgtable.h -index 6bc241e..698e280 100644 ---- a/arch/frv/include/asm/pgtable.h -+++ b/arch/frv/include/asm/pgtable.h -@@ -223,6 +223,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) - * allocating and freeing a pud is trivial: the 1-entry pud is - * inside the pgd, so has no extra memory associated with it. - */ -+#define __pud_alloc_one(mm, address, mask) NULL - #define pud_alloc_one(mm, address) NULL - #define pud_free(mm, x) do { } while (0) - #define __pud_free_tlb(tlb, x, address) do { } while (0) -diff --git a/arch/frv/mm/pgalloc.c b/arch/frv/mm/pgalloc.c -index 4fb63a3..1237a54 100644 ---- a/arch/frv/mm/pgalloc.c -+++ b/arch/frv/mm/pgalloc.c -@@ -20,14 +20,19 @@ - - pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((aligned(PAGE_SIZE))); - --pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT); -+ pte_t *pte = (pte_t *)__get_free_page(gfp_mask); - if (pte) - clear_page(pte); - return pte; - } - -+pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) - { - struct page *page; -diff --git a/arch/ia64/include/asm/pgalloc.h b/arch/ia64/include/asm/pgalloc.h -index 96a8d92..0e46e47 100644 ---- a/arch/ia64/include/asm/pgalloc.h -+++ b/arch/ia64/include/asm/pgalloc.h -@@ -39,9 +39,15 @@ pgd_populate(struct mm_struct *mm, pgd_t * pgd_entry, pud_t * pud) - pgd_val(*pgd_entry) = __pa(pud); - } - -+static inline pud_t * -+__pud_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(0, gfp_mask, NULL); -+} -+ - static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) - { -- return quicklist_alloc(0, GFP_KERNEL, NULL); -+ return __pud_alloc_one(mm, addr, GFP_KERNEL); - } - - static inline void pud_free(struct mm_struct *mm, pud_t *pud) -@@ -57,9 +63,15 @@ pud_populate(struct mm_struct *mm, pud_t * pud_entry, pmd_t * pmd) - pud_val(*pud_entry) = __pa(pmd); - } - -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(0, gfp_mask, NULL); -+} -+ - static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr) - { -- return quicklist_alloc(0, GFP_KERNEL, NULL); -+ return __pmd_alloc_one(mm, addr, GFP_KERNEL); - } - - static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) -@@ -95,10 +107,16 @@ static inline pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long addr) - return page; - } - -+static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long addr, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(0, gfp_mask, NULL); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long addr) - { -- return quicklist_alloc(0, GFP_KERNEL, NULL); -+ return __pte_alloc_one_kernel(mm, addr, GFP_KERNEL); - } - - static inline void pte_free(struct mm_struct *mm, pgtable_t pte) -diff --git a/arch/m32r/include/asm/pgalloc.h b/arch/m32r/include/asm/pgalloc.h -index 0fc7361..0c1e4ae 100644 ---- a/arch/m32r/include/asm/pgalloc.h -+++ b/arch/m32r/include/asm/pgalloc.h -@@ -30,12 +30,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_page((unsigned long)pgd); - } - -+static __inline__ pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); -+} -+ - static __inline__ pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO); -- -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL); - } - - static __inline__ pgtable_t pte_alloc_one(struct mm_struct *mm, -@@ -66,6 +70,7 @@ static inline void pte_free(struct mm_struct *mm, pgtable_t pte) - * (In the PAE case we free the pmds as part of the pgd.) - */ - -+#define __pmd_alloc_one(mm, addr,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(mm, x) do { } while (0) - #define __pmd_free_tlb(tlb, x, addr) do { } while (0) -diff --git a/arch/m68k/include/asm/motorola_pgalloc.h b/arch/m68k/include/asm/motorola_pgalloc.h -index 2f02f26..0d345e6 100644 ---- a/arch/m68k/include/asm/motorola_pgalloc.h -+++ b/arch/m68k/include/asm/motorola_pgalloc.h -@@ -5,13 +5,16 @@ - #include - - extern pmd_t *get_pointer_table(void); -+extern pmd_t *__get_pointer_table (gfp_t); - extern int free_pointer_table(pmd_t *); - --static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) - { - pte_t *pte; - -- pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -+ pte = (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); - if (pte) { - __flush_page_to_ram(pte); - flush_tlb_kernel_page(pte); -@@ -21,6 +24,12 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long ad - return pte; - } - -+static inline pte_t * -+pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) - { - cache_page(pte); -@@ -61,10 +70,15 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t page, - __free_page(page); - } - -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return __get_pointer_table(gfp_mask); -+} - - static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) - { -- return get_pointer_table(); -+ return __pmd_alloc_one(mm, address, GFP_KERNEL); - } - - static inline int pmd_free(struct mm_struct *mm, pmd_t *pmd) -diff --git a/arch/m68k/include/asm/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h -index 48d80d5..29cddb6 100644 ---- a/arch/m68k/include/asm/sun3_pgalloc.h -+++ b/arch/m68k/include/asm/sun3_pgalloc.h -@@ -18,6 +18,7 @@ - - extern const char bad_pmd_string[]; - -+#define __pmd_alloc_one(mm,address,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm,address) ({ BUG(); ((pmd_t *)2); }) - - -@@ -38,10 +39,11 @@ do { \ - tlb_remove_page((tlb), pte); \ - } while (0) - --static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, -- unsigned long address) -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) - { -- unsigned long page = __get_free_page(GFP_KERNEL|__GFP_REPEAT); -+ unsigned long page = __get_free_page(gfp_mask); - - if (!page) - return NULL; -@@ -50,6 +52,12 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - return (pte_t *) (page); - } - -+static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, - unsigned long address) - { -diff --git a/arch/m68k/mm/memory.c b/arch/m68k/mm/memory.c -index 250b8b7..2a9390e 100644 ---- a/arch/m68k/mm/memory.c -+++ b/arch/m68k/mm/memory.c -@@ -58,7 +58,7 @@ void __init init_pointer_table(unsigned long ptable) - return; - } - --pmd_t *get_pointer_table (void) -+pmd_t *__get_pointer_table (gfp_t gfp_mask) - { - ptable_desc *dp = ptable_list.next; - unsigned char mask = PD_MARKBITS (dp); -@@ -75,7 +75,7 @@ pmd_t *get_pointer_table (void) - void *page; - ptable_desc *new; - -- if (!(page = (void *)get_zeroed_page(GFP_KERNEL))) -+ if (!(page = (void *)get_zeroed_page(gfp_mask))) - return NULL; - - flush_tlb_kernel_page(page); -@@ -98,6 +98,11 @@ pmd_t *get_pointer_table (void) - return (pmd_t *) (page_address(PD_PAGE(dp)) + off); - } - -+pmd_t *get_pointer_table (void) -+{ -+ return __get_pointer_table(GFP_KERNEL); -+} -+ - int free_pointer_table (pmd_t *ptable) - { - ptable_desc *dp; -diff --git a/arch/microblaze/include/asm/pgalloc.h b/arch/microblaze/include/asm/pgalloc.h -index ebd3579..7df761f 100644 ---- a/arch/microblaze/include/asm/pgalloc.h -+++ b/arch/microblaze/include/asm/pgalloc.h -@@ -106,9 +106,11 @@ extern inline void free_pgd_slow(pgd_t *pgd) - * the pgd will always be present.. - */ - #define pmd_alloc_one_fast(mm, address) ({ BUG(); ((pmd_t *)1); }) -+#define __pmd_alloc_one(mm, address,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm, address) ({ BUG(); ((pmd_t *)2); }) - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); - - static inline struct page *pte_alloc_one(struct mm_struct *mm, - unsigned long address) -@@ -175,6 +177,7 @@ extern inline void pte_free(struct mm_struct *mm, struct page *ptepage) - * We don't have any real pmd's, and this code never triggers because - * the pgd will always be present.. - */ -+#define __pmd_alloc_one(mm, address,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm, address) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(mm, x) do { } while (0) - #define __pmd_free_tlb(tlb, x, addr) pmd_free((tlb)->mm, x) -diff --git a/arch/microblaze/mm/pgtable.c b/arch/microblaze/mm/pgtable.c -index d1c06d0..a61be2a 100644 ---- a/arch/microblaze/mm/pgtable.c -+++ b/arch/microblaze/mm/pgtable.c -@@ -236,13 +236,12 @@ unsigned long iopa(unsigned long addr) - return pa; - } - --__init_refok pte_t *pte_alloc_one_kernel(struct mm_struct *mm, -- unsigned long address) -+__init_refok pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) - { - pte_t *pte; - if (mem_init_done) { -- pte = (pte_t *)__get_free_page(GFP_KERNEL | -- __GFP_REPEAT | __GFP_ZERO); -+ pte = (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); - } else { - pte = (pte_t *)early_get_page(); - if (pte) -@@ -260,3 +259,9 @@ void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags) - - map_page(address, phys, pgprot_val(flags)); - } -+ -+__init_refok pte_t *pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h -index 881d18b..f2c5439 100644 ---- a/arch/mips/include/asm/pgalloc.h -+++ b/arch/mips/include/asm/pgalloc.h -@@ -64,14 +64,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_pages((unsigned long)pgd, PGD_ORDER); - } - -+static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return (pte_t *) __get_free_pages(gfp_mask | __GFP_ZERO, PTE_ORDER); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- pte_t *pte; -- -- pte = (pte_t *) __get_free_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, PTE_ORDER); -- -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline struct page *pte_alloc_one(struct mm_struct *mm, -@@ -106,16 +108,22 @@ do { \ - - #ifndef __PAGETABLE_PMD_FOLDED - --static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { - pmd_t *pmd; - -- pmd = (pmd_t *) __get_free_pages(GFP_KERNEL|__GFP_REPEAT, PMD_ORDER); -+ pmd = (pmd_t *) __get_free_pages(gfp_mask, PMD_ORDER); - if (pmd) - pmd_init((unsigned long)pmd, (unsigned long)invalid_pte_table); - return pmd; - } - -+static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+{ -+ return __pmd_alloc_one(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) - { - free_pages((unsigned long)pmd, PMD_ORDER); -diff --git a/arch/mn10300/include/asm/pgalloc.h b/arch/mn10300/include/asm/pgalloc.h -index 146bacf..35150ae 100644 ---- a/arch/mn10300/include/asm/pgalloc.h -+++ b/arch/mn10300/include/asm/pgalloc.h -@@ -37,6 +37,8 @@ extern pgd_t *pgd_alloc(struct mm_struct *); - extern void pgd_free(struct mm_struct *, pgd_t *); - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); -+ - extern struct page *pte_alloc_one(struct mm_struct *, unsigned long); - - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) -diff --git a/arch/mn10300/mm/pgtable.c b/arch/mn10300/mm/pgtable.c -index 4ebf117..8ed94e8 100644 ---- a/arch/mn10300/mm/pgtable.c -+++ b/arch/mn10300/mm/pgtable.c -@@ -61,14 +61,20 @@ void set_pmd_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags) - local_flush_tlb_one(vaddr); - } - --pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) - { -- pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT); -+ pte_t *pte = (pte_t *)__get_free_page(gfp_mask); - if (pte) - clear_page(pte); - return pte; - } - -+pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); -+} -+ - struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) - { - struct page *pte; -diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h -index fc987a1..0284a43 100644 ---- a/arch/parisc/include/asm/pgalloc.h -+++ b/arch/parisc/include/asm/pgalloc.h -@@ -61,15 +61,20 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd) - (__u32)(__pa((unsigned long)pmd) >> PxD_VALUE_SHIFT)); - } - --static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- pmd_t *pmd = (pmd_t *)__get_free_pages(GFP_KERNEL|__GFP_REPEAT, -- PMD_ORDER); -+ pmd_t *pmd = (pmd_t *)__get_free_pages(gfp_mask, PMD_ORDER); - if (pmd) - memset(pmd, 0, PAGE_SIZE< - - unsigned long *crst_table_alloc(struct mm_struct *); -+unsigned long * __crst_table_alloc(struct mm_struct *, int , gfp_t); - void crst_table_free(struct mm_struct *, unsigned long *); - - unsigned long *page_table_alloc(struct mm_struct *, unsigned long); -+unsigned long *__page_table_alloc(struct mm_struct *, gfp_t); - void page_table_free(struct mm_struct *, unsigned long *); - void page_table_free_rcu(struct mmu_gather *, unsigned long *); - -@@ -55,9 +57,11 @@ static inline unsigned long pgd_entry_type(struct mm_struct *mm) - return _SEGMENT_ENTRY_EMPTY; - } - -+#define __pud_alloc_one(mm,address,mask) ({ BUG(); ((pud_t *)2); }) - #define pud_alloc_one(mm,address) ({ BUG(); ((pud_t *)2); }) - #define pud_free(mm, x) do { } while (0) - -+#define __pmd_alloc_one(mm,address,mask) ({ BUG(); ((pmd_t *)2); }) - #define pmd_alloc_one(mm,address) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(mm, x) do { } while (0) - -@@ -78,22 +82,34 @@ static inline unsigned long pgd_entry_type(struct mm_struct *mm) - int crst_table_upgrade(struct mm_struct *, unsigned long limit); - void crst_table_downgrade(struct mm_struct *, unsigned long limit); - --static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address) -+static inline pud_t * -+__pud_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- unsigned long *table = crst_table_alloc(mm); -+ unsigned long *table = __crst_table_alloc(mm, mm->context.noexec, gfp_mask); - if (table) - crst_table_init(table, _REGION3_ENTRY_EMPTY); - return (pud_t *) table; - } -+ -+static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address) -+{ -+ return __pud_alloc_one(mm, address, GFP_KERNEL); -+} - #define pud_free(mm, pud) crst_table_free(mm, (unsigned long *) pud) - --static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long vmaddr) -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long vmaddr, gfp_t gfp_mask) - { -- unsigned long *table = crst_table_alloc(mm); -+ unsigned long *table = __crst_table_alloc(mm, mm->context.noexec, gfp_mask); - if (table) - crst_table_init(table, _SEGMENT_ENTRY_EMPTY); - return (pmd_t *) table; - } -+ -+static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long vmaddr) -+{ -+ return __pmd_alloc_one(mm, vmaddr, GFP_KERNEL); -+} - #define pmd_free(mm, pmd) crst_table_free(mm, (unsigned long *) pmd) - - static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) -@@ -131,7 +147,11 @@ static inline void pmd_populate(struct mm_struct *mm, - /* - * page table entry allocation/free routines. - */ --#define pte_alloc_one_kernel(mm, vmaddr) ((pte_t *) page_table_alloc(mm, vmaddr)) -+#define __pte_alloc_one_kernel(mm, vmaddr, mask) \ -+ ((pte_t *) __page_table_alloc((mm), (mask))) -+#define pte_alloc_one_kernel(mm, vmaddr) \ -+ ((pte_t *) __pte_alloc_one_kernel((mm), (vmaddr), GFP_KERNEL|__GFP_REPEAT) -+ - #define pte_alloc_one(mm, vmaddr) ((pte_t *) page_table_alloc(mm, vmaddr)) - - #define pte_free_kernel(mm, pte) page_table_free(mm, (unsigned long *) pte) -diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c -index a3db5a3..04cbea3 100644 ---- a/arch/s390/mm/pgtable.c -+++ b/arch/s390/mm/pgtable.c -@@ -33,15 +33,21 @@ - #endif - - --unsigned long *crst_table_alloc(struct mm_struct *mm) -+unsigned long * -+__crst_table_alloc(struct mm_struct *mm, int noexec, gfp_t gfp_mask) - { -- struct page *page = alloc_pages(GFP_KERNEL, ALLOC_ORDER); -+ struct page *page = alloc_pages(gfp_mask, ALLOC_ORDER); - - if (!page) - return NULL; - return (unsigned long *) page_to_phys(page); - } - -+unsigned long *crst_table_alloc(struct mm_struct *mm, int noexec) -+{ -+ return __crst_table_alloc(mm, noexec, GFP_KERNEL); -+} -+ - void crst_table_free(struct mm_struct *mm, unsigned long *table) - { - free_pages((unsigned long) table, ALLOC_ORDER); -@@ -612,7 +618,7 @@ static inline unsigned int atomic_xor_bits(atomic_t *v, unsigned int bits) - /* - * page table entry allocation/free routines. - */ --unsigned long *page_table_alloc(struct mm_struct *mm, unsigned long vmaddr) -+unsigned long *__page_table_alloc(struct mm_struct *mm, gfp_t gfp_mask) - { - struct page *page; - unsigned long *table; -@@ -632,7 +638,7 @@ unsigned long *page_table_alloc(struct mm_struct *mm, unsigned long vmaddr) - } - if ((mask & FRAG_MASK) == FRAG_MASK) { - spin_unlock_bh(&mm->context.list_lock); -- page = alloc_page(GFP_KERNEL|__GFP_REPEAT); -+ page = alloc_page(gfp_mask); - if (!page) - return NULL; - pgtable_page_ctor(page); -@@ -652,6 +658,11 @@ unsigned long *page_table_alloc(struct mm_struct *mm, unsigned long vmaddr) - return table; - } - -+unsigned long *page_table_alloc(struct mm_struct *mm) -+{ -+ return __page_table_alloc(mm, GFP_KERNEL | __GFP_REPEAT); -+} -+ - void page_table_free(struct mm_struct *mm, unsigned long *table) - { - struct page *page; -diff --git a/arch/score/include/asm/pgalloc.h b/arch/score/include/asm/pgalloc.h -index 059a61b..1a0a3a5 100644 ---- a/arch/score/include/asm/pgalloc.h -+++ b/arch/score/include/asm/pgalloc.h -@@ -37,15 +37,16 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_pages((unsigned long)pgd, PGD_ORDER); - } - -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return (pte_t *) __get_free_pages(gfp_mask | __GFP_ZERO, PTE_ORDER); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- pte_t *pte; -- -- pte = (pte_t *) __get_free_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, -- PTE_ORDER); -- -- return pte; -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline struct page *pte_alloc_one(struct mm_struct *mm, -diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h -index 8c00785..aaed989 100644 ---- a/arch/sh/include/asm/pgalloc.h -+++ b/arch/sh/include/asm/pgalloc.h -@@ -31,10 +31,16 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, - /* - * Allocate and free page tables. - */ -+static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return quicklist_alloc(QUICK_PT, gfp_mask, NULL); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- return quicklist_alloc(QUICK_PT, GFP_KERNEL | __GFP_REPEAT, NULL); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, -diff --git a/arch/sh/mm/pgtable.c b/arch/sh/mm/pgtable.c -index 26e03a1..b938eb8 100644 ---- a/arch/sh/mm/pgtable.c -+++ b/arch/sh/mm/pgtable.c -@@ -45,9 +45,15 @@ void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) - set_pud(pud, __pud((unsigned long)pmd)); - } - -+pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return kmem_cache_alloc(pmd_cachep, gfp_mask | __GFP_ZERO); -+} -+ - pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) - { -- return kmem_cache_alloc(pmd_cachep, PGALLOC_GFP); -+ return __pmd_alloc_one(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - void pmd_free(struct mm_struct *mm, pmd_t *pmd) -diff --git a/arch/tile/include/asm/pgalloc.h b/arch/tile/include/asm/pgalloc.h -index 1b90250..0d12a51 100644 ---- a/arch/tile/include/asm/pgalloc.h -+++ b/arch/tile/include/asm/pgalloc.h -@@ -86,9 +86,16 @@ static inline void pte_free(struct mm_struct *mm, struct page *pte) - #define pmd_pgtable(pmd) pmd_page(pmd) - - static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) -+{ -+ return pfn_to_kaddr(page_to_pfn(__pte_alloc_one(mm, address, gfp_mask))); -+} -+ -+static inline pte_t * - pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) - { -- return pfn_to_kaddr(page_to_pfn(pte_alloc_one(mm, address))); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) -diff --git a/arch/tile/mm/pgtable.c b/arch/tile/mm/pgtable.c -index 345edfe..6ce0ef6 100644 ---- a/arch/tile/mm/pgtable.c -+++ b/arch/tile/mm/pgtable.c -@@ -280,10 +280,11 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd) - - #define L2_USER_PGTABLE_PAGES (1 << L2_USER_PGTABLE_ORDER) - --struct page *pgtable_alloc_one(struct mm_struct *mm, unsigned long address, -- int order) -+struct page * -+__pte_alloc_one(struct mm_struct *mm, unsigned long address, int order, -+ gfp_t gfp_mask) - { -- gfp_t flags = GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO; -+ gfp_t flags = gfp_mask|__GFP_REPEAT|__GFP_ZERO; - struct page *p; - int i; - -@@ -305,6 +306,11 @@ struct page *pgtable_alloc_one(struct mm_struct *mm, unsigned long address, - return p; - } - -+struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address, int order) -+{ -+ return __pte_alloc_one(mm, address, GFP_KERNEL); -+} -+ - /* - * Free page immediately (used in __pte_alloc if we raced with another - * process). We have to correct whatever pte_alloc_one() did before -diff --git a/arch/um/include/asm/pgalloc.h b/arch/um/include/asm/pgalloc.h -index bf90b2a..8d0507b 100644 ---- a/arch/um/include/asm/pgalloc.h -+++ b/arch/um/include/asm/pgalloc.h -@@ -26,6 +26,7 @@ extern pgd_t *pgd_alloc(struct mm_struct *); - extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); - extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long); - - static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) -diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c -index ebb86b2..41be7e8 100644 ---- a/arch/um/kernel/mem.c -+++ b/arch/um/kernel/mem.c -@@ -286,12 +286,15 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd) - free_page((unsigned long) pgd); - } - --pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- pte_t *pte; -+ return (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); -+} - -- pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -- return pte; -+pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) -+{ -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) -@@ -305,15 +308,21 @@ pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) - } - - #ifdef CONFIG_3_LEVEL_PGTABLES --pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) - { -- pmd_t *pmd = (pmd_t *) __get_free_page(GFP_KERNEL); -+ pmd_t *pmd = (pmd_t *) __get_free_page(gfp_mask); - - if (pmd) - memset(pmd, 0, PAGE_SIZE); - - return pmd; - } -+ -+pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) -+{ -+ return __pmd_alloc_one(mm, address, GFP_KERNEL); -+} - #endif - - void *uml_kmalloc(int size, int flags) -diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h -index b4389a4..db83bd4 100644 ---- a/arch/x86/include/asm/pgalloc.h -+++ b/arch/x86/include/asm/pgalloc.h -@@ -34,6 +34,7 @@ extern pgd_t *pgd_alloc(struct mm_struct *); - extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); - - extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -+extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); - extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long); - - /* Should really implement gc for free page table pages. This could be -@@ -78,9 +79,15 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, - #define pmd_pgtable(pmd) pmd_page(pmd) - - #if PAGETABLE_LEVELS > 2 -+static inline pmd_t * -+__pmd_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) -+{ -+ return (pmd_t *)get_zeroed_page(gfp_mask); -+} -+ - static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr) - { -- return (pmd_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT); -+ return __pmd_alloc_one(mm, addr, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) -@@ -114,9 +121,15 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) - set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud))); - } - -+static inline pud_t * -+__pud_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) -+{ -+ return (pud_t *)get_zeroed_page(gfp_mask); -+} -+ - static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) - { -- return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT); -+ return __pud_alloc_one(mm, addr, GFP_KERNEL | __GFP_REPEAT); - } - - static inline void pud_free(struct mm_struct *mm, pud_t *pud) -diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c -index 8573b83..62a4f63 100644 ---- a/arch/x86/mm/pgtable.c -+++ b/arch/x86/mm/pgtable.c -@@ -15,9 +15,15 @@ - - gfp_t __userpte_alloc_gfp = PGALLOC_GFP | PGALLOC_USER_GFP; - -+pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) -+{ -+ return (pte_t *)__get_free_page(gfp_mask | __GFP_NOTRACK | __GFP_ZERO); -+} -+ - pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) - { -- return (pte_t *)__get_free_page(PGALLOC_GFP); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) -diff --git a/arch/xtensa/include/asm/pgalloc.h b/arch/xtensa/include/asm/pgalloc.h -index 40cf9bc..d5a23ae 100644 ---- a/arch/xtensa/include/asm/pgalloc.h -+++ b/arch/xtensa/include/asm/pgalloc.h -@@ -42,10 +42,17 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) - - extern struct kmem_cache *pgtable_cache; - -+static inline pte_t * -+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, -+ gfp_t gfp_mask) -+{ -+ return kmem_cache_alloc(pgtable_cache, gfp_mask); -+} -+ - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- return kmem_cache_alloc(pgtable_cache, GFP_KERNEL|__GFP_REPEAT); -+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); - } - - static inline pgtable_t pte_alloc_one(struct mm_struct *mm, -diff --git a/include/asm-generic/4level-fixup.h b/include/asm-generic/4level-fixup.h -index 77ff547..f638309 100644 ---- a/include/asm-generic/4level-fixup.h -+++ b/include/asm-generic/4level-fixup.h -@@ -10,10 +10,14 @@ - - #define pud_t pgd_t - --#define pmd_alloc(mm, pud, address) \ -- ((unlikely(pgd_none(*(pud))) && __pmd_alloc(mm, pud, address))? \ -+#define pmd_alloc_with_mask(mm, pud, address, mask) \ -+ ((unlikely(pgd_none(*(pud))) && __pmd_alloc(mm, pud, address, mask))? \ - NULL: pmd_offset(pud, address)) - -+#define pmd_alloc(mm, pud, address) \ -+ pmd_alloc_with_mask(mm, pud, address, GFP_KERNEL) -+ -+#define pud_alloc_with_mask(mm, pgd, address, mask) (pgd) - #define pud_alloc(mm, pgd, address) (pgd) - #define pud_offset(pgd, start) (pgd) - #define pud_none(pud) 0 -diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h -index 725612b..96ca8da 100644 ---- a/include/asm-generic/pgtable-nopmd.h -+++ b/include/asm-generic/pgtable-nopmd.h -@@ -55,7 +55,8 @@ static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address) - * allocating and freeing a pmd is trivial: the 1-entry pmd is - * inside the pud, so has no extra memory associated with it. - */ --#define pmd_alloc_one(mm, address) NULL -+#define __pmd_alloc_one(mm, address, mask) NULL -+#define pmd_alloc_one(mm, address) NULL - static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) - { - } -diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgtable-nopud.h -index 810431d..5a21868 100644 ---- a/include/asm-generic/pgtable-nopud.h -+++ b/include/asm-generic/pgtable-nopud.h -@@ -50,6 +50,7 @@ static inline pud_t * pud_offset(pgd_t * pgd, unsigned long address) - * allocating and freeing a pud is trivial: the 1-entry pud is - * inside the pgd, so has no extra memory associated with it. - */ -+#define __pud_alloc_one(mm, address, mask) NULL - #define pud_alloc_one(mm, address) NULL - #define pud_free(mm, x) do { } while (0) - #define __pud_free_tlb(tlb, x, a) do { } while (0) -diff --git a/include/linux/mm.h b/include/linux/mm.h -index b36d08c..aeda962 100644 ---- a/include/linux/mm.h -+++ b/include/linux/mm.h -@@ -1149,44 +1149,60 @@ static inline pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, - - #ifdef __PAGETABLE_PUD_FOLDED - static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, -- unsigned long address) -+ unsigned long address, gfp_t gfp_mask) - { - return 0; - } - #else --int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address); -+int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address, -+ gfp_t gfp_mask); - #endif - - #ifdef __PAGETABLE_PMD_FOLDED - static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, -- unsigned long address) -+ unsigned long address, gfp_t gfp_mask) - { - return 0; - } - #else --int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); -+int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address, -+ gfp_t gfp_mask); - #endif - - int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, - pmd_t *pmd, unsigned long address); --int __pte_alloc_kernel(pmd_t *pmd, unsigned long address); -+int __pte_alloc_kernel(pmd_t *pmd, unsigned long address, gfp_t gfp_mask); - - /* - * The following ifdef needed to get the 4level-fixup.h header to work. - * Remove it when 4level-fixup.h has been removed. - */ - #if defined(CONFIG_MMU) && !defined(__ARCH_HAS_4LEVEL_HACK) --static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) -+static inline pud_t *pud_alloc_with_mask(struct mm_struct *mm, pgd_t *pgd, -+ unsigned long address, gfp_t gfp_mask) - { -- return (unlikely(pgd_none(*pgd)) && __pud_alloc(mm, pgd, address))? -+ return (unlikely(pgd_none(*pgd)) && __pud_alloc(mm, pgd, address, gfp_mask))? - NULL: pud_offset(pgd, address); - } - --static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) -+static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, -+ unsigned long address) - { -- return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address))? -+ return pud_alloc_with_mask(mm, pgd, address, GFP_KERNEL); -+} -+ -+static inline pmd_t *pmd_alloc_with_mask(struct mm_struct *mm, pud_t *pud, -+ unsigned long address, gfp_t gfp_mask) -+{ -+ return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address, gfp_mask))? - NULL: pmd_offset(pud, address); - } -+ -+static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, -+ unsigned long address) -+{ -+ return pmd_alloc_with_mask(mm, pud, address, GFP_KERNEL); -+} - #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ - - #if USE_SPLIT_PTLOCKS -@@ -1247,8 +1263,12 @@ static inline void pgtable_page_dtor(struct page *page) - pmd, address))? \ - NULL: pte_offset_map_lock(mm, pmd, address, ptlp)) - -+#define pte_alloc_kernel_with_mask(pmd, address, mask) \ -+ ((unlikely(pmd_none(*(pmd))) && __pte_alloc_kernel(pmd, address, mask))? \ -+ NULL: pte_offset_kernel(pmd, address)) -+ - #define pte_alloc_kernel(pmd, address) \ -- ((unlikely(pmd_none(*(pmd))) && __pte_alloc_kernel(pmd, address))? \ -+ ((unlikely(pmd_none(*(pmd))) && __pte_alloc_kernel(pmd, address, GFP_KERNEL))? \ - NULL: pte_offset_kernel(pmd, address)) - - extern void free_area_init(unsigned long * zones_size); -diff --git a/mm/memory.c b/mm/memory.c -index 906bc23..ed06ba2 100644 ---- a/mm/memory.c -+++ b/mm/memory.c -@@ -608,9 +608,9 @@ int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, - return 0; - } - --int __pte_alloc_kernel(pmd_t *pmd, unsigned long address) -+int __pte_alloc_kernel(pmd_t *pmd, unsigned long address, gfp_t gfp_mask) - { -- pte_t *new = pte_alloc_one_kernel(&init_mm, address); -+ pte_t *new = __pte_alloc_one_kernel(&init_mm, address, gfp_mask); - if (!new) - return -ENOMEM; - -@@ -3560,9 +3560,10 @@ retry: - * Allocate page upper directory. - * We've already handled the fast-path in-line. - */ --int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) -+int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address, -+ gfp_t gfp_mask) - { -- pud_t *new = pud_alloc_one(mm, address); -+ pud_t *new = __pud_alloc_one(mm, address, gfp_mask); - if (!new) - return -ENOMEM; - -@@ -3583,9 +3584,10 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) - * Allocate page middle directory. - * We've already handled the fast-path in-line. - */ --int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) -+int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address, -+ gfp_t gfp_mask) - { -- pmd_t *new = pmd_alloc_one(mm, address); -+ pmd_t *new = __pmd_alloc_one(mm, address, gfp_mask); - if (!new) - return -ENOMEM; - -diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index 2aad499..85f0e13 100644 ---- a/mm/vmalloc.c -+++ b/mm/vmalloc.c -@@ -87,8 +87,8 @@ static void vunmap_page_range(unsigned long addr, unsigned long end) - } while (pgd++, addr = next, addr != end); - } - --static int vmap_pte_range(pmd_t *pmd, unsigned long addr, -- unsigned long end, pgprot_t prot, struct page **pages, int *nr) -+static int vmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, -+ pgprot_t prot, struct page **pages, int *nr, gfp_t gfp_mask) - { - pte_t *pte; - -@@ -97,7 +97,7 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, - * callers keep track of where we're up to. - */ - -- pte = pte_alloc_kernel(pmd, addr); -+ pte = pte_alloc_kernel_with_mask(pmd, addr, gfp_mask); - if (!pte) - return -ENOMEM; - do { -@@ -114,34 +114,34 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, - } - - static int vmap_pmd_range(pud_t *pud, unsigned long addr, -- unsigned long end, pgprot_t prot, struct page **pages, int *nr) -+ unsigned long end, pgprot_t prot, struct page **pages, int *nr, gfp_t gfp_mask) - { - pmd_t *pmd; - unsigned long next; - -- pmd = pmd_alloc(&init_mm, pud, addr); -+ pmd = pmd_alloc_with_mask(&init_mm, pud, addr, gfp_mask); - if (!pmd) - return -ENOMEM; - do { - next = pmd_addr_end(addr, end); -- if (vmap_pte_range(pmd, addr, next, prot, pages, nr)) -+ if (vmap_pte_range(pmd, addr, next, prot, pages, nr, gfp_mask)) - return -ENOMEM; - } while (pmd++, addr = next, addr != end); - return 0; - } - --static int vmap_pud_range(pgd_t *pgd, unsigned long addr, -- unsigned long end, pgprot_t prot, struct page **pages, int *nr) -+static int vmap_pud_range(pgd_t *pgd, unsigned long addr, unsigned long end, -+ pgprot_t prot, struct page **pages, int *nr, gfp_t gfp_mask) - { - pud_t *pud; - unsigned long next; - -- pud = pud_alloc(&init_mm, pgd, addr); -+ pud = pud_alloc_with_mask(&init_mm, pgd, addr, gfp_mask); - if (!pud) - return -ENOMEM; - do { - next = pud_addr_end(addr, end); -- if (vmap_pmd_range(pud, addr, next, prot, pages, nr)) -+ if (vmap_pmd_range(pud, addr, next, prot, pages, nr, gfp_mask)) - return -ENOMEM; - } while (pud++, addr = next, addr != end); - return 0; -@@ -153,8 +153,8 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr, - * - * Ie. pte at addr+N*PAGE_SIZE shall point to pfn corresponding to pages[N] - */ --static int vmap_page_range_noflush(unsigned long start, unsigned long end, -- pgprot_t prot, struct page **pages) -+static int __vmap_page_range_noflush(unsigned long start, unsigned long end, -+ pgprot_t prot, struct page **pages, gfp_t gfp_mask) - { - pgd_t *pgd; - unsigned long next; -@@ -166,7 +166,7 @@ static int vmap_page_range_noflush(unsigned long start, unsigned long end, - pgd = pgd_offset_k(addr); - do { - next = pgd_addr_end(addr, end); -- err = vmap_pud_range(pgd, addr, next, prot, pages, &nr); -+ err = vmap_pud_range(pgd, addr, next, prot, pages, &nr, gfp_mask); - if (err) - return err; - } while (pgd++, addr = next, addr != end); -@@ -174,16 +174,29 @@ static int vmap_page_range_noflush(unsigned long start, unsigned long end, - return nr; - } - --static int vmap_page_range(unsigned long start, unsigned long end, -- pgprot_t prot, struct page **pages) -+ -+static int vmap_page_range_noflush(unsigned long start, unsigned long end, -+ pgprot_t prot, struct page **pages) -+{ -+ return __vmap_page_range_noflush(start, end, prot, pages, GFP_KERNEL); -+} -+ -+static int __vmap_page_range(unsigned long start, unsigned long end, -+ pgprot_t prot, struct page **pages, gfp_t gfp_mask) - { - int ret; - -- ret = vmap_page_range_noflush(start, end, prot, pages); -+ ret = __vmap_page_range_noflush(start, end, prot, pages, gfp_mask); - flush_cache_vmap(start, end); - return ret; - } - -+static int vmap_page_range(unsigned long start, unsigned long end, -+ pgprot_t prot, struct page **pages) -+{ -+ return __vmap_page_range(start, end, prot, pages, GFP_KERNEL); -+} -+ - int is_vmalloc_or_module_addr(const void *x) - { - /* -@@ -1259,13 +1272,14 @@ void unmap_kernel_range(unsigned long addr, unsigned long size) - flush_tlb_kernel_range(addr, end); - } - --int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) -+int __map_vm_area(struct vm_struct *area, pgprot_t prot, -+ struct page ***pages, gfp_t gfp_mask) - { - unsigned long addr = (unsigned long)area->addr; - unsigned long end = addr + area->size - PAGE_SIZE; - int err; - -- err = vmap_page_range(addr, end, prot, *pages); -+ err = __vmap_page_range(addr, end, prot, *pages, gfp_mask); - if (err > 0) { - *pages += err; - err = 0; -@@ -1273,6 +1287,11 @@ int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) - - return err; - } -+ -+int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) -+{ -+ return __map_vm_area(area, prot, pages, GFP_KERNEL); -+} - EXPORT_SYMBOL_GPL(map_vm_area); - - /*** Old vmalloc interfaces ***/ -@@ -1614,7 +1633,7 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, - area->pages[i] = page; - } - -- if (map_vm_area(area, prot, &pages)) -+ if (__map_vm_area(area, prot, &pages, gfp_mask)) - goto fail; - return area->addr; - diff --git a/sys-kernel/linux-ec2/files/linux-ec2-3.7.3-devtmpfs.patch b/sys-kernel/linux-ec2/files/linux-ec2-3.7.3-devtmpfs.patch new file mode 100644 index 000000000..783ebf741 --- /dev/null +++ b/sys-kernel/linux-ec2/files/linux-ec2-3.7.3-devtmpfs.patch @@ -0,0 +1,26 @@ +diff -Nurp sabayon/config.old/ec2-3.7-amd64.config sabayon/config/ec2-3.7-amd64.config +--- sabayon/config.old/ec2-3.7-amd64.config 2013-01-20 15:17:20.000000000 +0000 ++++ sabayon/config/ec2-3.7-amd64.config 2013-02-11 13:16:15.000000000 +0000 +@@ -785,7 +785,8 @@ CONFIG_HAVE_BPF_JIT=y + # Generic Driver Options + # + CONFIG_UEVENT_HELPER_PATH="" +-# CONFIG_DEVTMPFS is not set ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y + CONFIG_STANDALONE=y + CONFIG_PREVENT_FIRMWARE_BUILD=y + CONFIG_FW_LOADER=y +diff -Nurp sabayon/config.old/ec2-3.7-x86.config sabayon/config/ec2-3.7-x86.config +--- sabayon/config.old/ec2-3.7-x86.config 2013-01-20 15:17:20.000000000 +0000 ++++ sabayon/config/ec2-3.7-x86.config 2013-02-11 13:16:27.000000000 +0000 +@@ -808,7 +808,8 @@ CONFIG_WIRELESS=y + # Generic Driver Options + # + CONFIG_UEVENT_HELPER_PATH="" +-# CONFIG_DEVTMPFS is not set ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y + CONFIG_STANDALONE=y + CONFIG_PREVENT_FIRMWARE_BUILD=y + CONFIG_FW_LOADER=y diff --git a/sys-kernel/linux-ec2/linux-ec2-3.4-r8.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.4-r9.ebuild similarity index 100% rename from sys-kernel/linux-ec2/linux-ec2-3.4-r8.ebuild rename to sys-kernel/linux-ec2/linux-ec2-3.4-r9.ebuild diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5-r2.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5-r2.ebuild deleted file mode 100644 index 78c029c6f..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.5-r2.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120219" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5-r3.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5-r3.ebuild deleted file mode 100644 index 78c029c6f..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.5-r3.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120219" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5-r4.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5-r4.ebuild deleted file mode 100644 index 78c029c6f..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.5-r4.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120219" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5-r5.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5-r5.ebuild deleted file mode 100644 index 9bb69bff6..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.5-r5.ebuild +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120219" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" - -src_unpack() { - sabayon-kernel_src_unpack - if use amd64; then - cd "${S}" || die - epatch "${FILESDIR}/__pte_alloc_kernel-gentoo-bug-416685.patch" - fi -} diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5-r6.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5-r6.ebuild deleted file mode 100644 index 9bb69bff6..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.5-r6.ebuild +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120219" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" - -src_unpack() { - sabayon-kernel_src_unpack - if use amd64; then - cd "${S}" || die - epatch "${FILESDIR}/__pte_alloc_kernel-gentoo-bug-416685.patch" - fi -} diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5-r7.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5-r7.ebuild deleted file mode 100644 index 78c029c6f..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.5-r7.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120219" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5-r8.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5-r8.ebuild deleted file mode 100644 index 78c029c6f..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.5-r8.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120219" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5-r1.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5-r9.ebuild similarity index 100% rename from sys-kernel/linux-ec2/linux-ec2-3.5-r1.ebuild rename to sys-kernel/linux-ec2/linux-ec2-3.5-r9.ebuild diff --git a/sys-kernel/linux-ec2/linux-ec2-3.5.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.5.ebuild deleted file mode 100644 index 78c029c6f..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.5.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120219" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.6-r2.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.6-r2.ebuild deleted file mode 100644 index 0f5ebc97f..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.6-r2.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120924" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.6-r3.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.6-r3.ebuild deleted file mode 100644 index 0f5ebc97f..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.6-r3.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20120924" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.6-r1.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.6-r4.ebuild similarity index 100% rename from sys-kernel/linux-ec2/linux-ec2-3.6-r1.ebuild rename to sys-kernel/linux-ec2/linux-ec2-3.6-r4.ebuild diff --git a/sys-kernel/linux-ec2/linux-ec2-3.7-r1.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.7-r1.ebuild deleted file mode 100644 index 1caf3e7ac..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.7-r1.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20121030" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.7-r2.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.7-r2.ebuild deleted file mode 100644 index 1caf3e7ac..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.7-r2.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20121030" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.7-r3.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.7-r3.ebuild deleted file mode 100644 index 1caf3e7ac..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.7-r3.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20121030" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.7.3.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.7.3.ebuild index c03fc0658..0fa3284db 100644 --- a/sys-kernel/linux-ec2/linux-ec2-3.7.3.ebuild +++ b/sys-kernel/linux-ec2/linux-ec2-3.7.3.ebuild @@ -6,6 +6,7 @@ K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" K_REQUIRED_LINUX_FIRMWARE_VER="20121030" K_SABKERNEL_FORCE_SUBLEVEL="0" K_KERNEL_NEW_VERSIONING="1" +K_KERNEL_PATCH_HOTFIXES="${FILESDIR}/${P}-devtmpfs.patch" inherit sabayon-kernel KEYWORDS="~amd64 ~x86" DESCRIPTION="Official Sabayon Linux Server kernel image" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.7.4.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.7.4.ebuild deleted file mode 100644 index c03fc0658..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.7.4.ebuild +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20121030" -K_SABKERNEL_FORCE_SUBLEVEL="0" -K_KERNEL_NEW_VERSIONING="1" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror" diff --git a/sys-kernel/linux-ec2/linux-ec2-3.7.ebuild b/sys-kernel/linux-ec2/linux-ec2-3.7.ebuild deleted file mode 100644 index 1caf3e7ac..000000000 --- a/sys-kernel/linux-ec2/linux-ec2-3.7.ebuild +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2004-2010 Sabayon Linux -# Distributed under the terms of the GNU General Public License v2 - -K_SABKERNEL_SELF_TARBALL_NAME="sabayon" -K_KERNEL_SOURCES_PKG="sys-kernel/ec2-sources-${PVR}" -K_REQUIRED_LINUX_FIRMWARE_VER="20121030" -K_SABKERNEL_FORCE_SUBLEVEL="0" -inherit sabayon-kernel -KEYWORDS="~amd64 ~x86" -DESCRIPTION="Official Sabayon Linux Server kernel image" -RESTRICT="mirror"