Compare commits
399 Commits
Author | SHA1 | Date |
---|---|---|
Josh Boyer | 9638c875dc | |
Josh Boyer | c23f8db71c | |
Dave Jones | 8cd38153da | |
Josh Boyer | 1ab88d2f92 | |
Josh Boyer | f9d1ef9da6 | |
Josh Boyer | 32cdc846dd | |
Justin M. Forbes | 763835f054 | |
Josh Boyer | af7453a806 | |
Josh Boyer | ea6941cbff | |
Justin M. Forbes | 5502301335 | |
Josh Boyer | 1b8756327b | |
Justin M. Forbes | 9520d51b59 | |
Mauro Carvalho Chehab | 29201d8820 | |
Josh Boyer | 851e38799e | |
Josh Boyer | b4b239926d | |
Josh Boyer | de33fd2fea | |
Dave Jones | c4a5c01e74 | |
Justin M. Forbes | 5b71df1e00 | |
Josh Boyer | 9583a84612 | |
Josh Boyer | 0b9442a5b4 | |
Josh Boyer | 6b7781c7dd | |
Peter Hutterer | 11834d2d28 | |
Josh Boyer | ffb669c977 | |
Josh Boyer | d4c69c56b0 | |
Justin M. Forbes | c54adc8eef | |
Justin M. Forbes | 0f5390a921 | |
Josh Boyer | 735ab18071 | |
Josh Boyer | e417ace608 | |
Josh Boyer | 58daa35024 | |
Josh Boyer | 0f21eed9f4 | |
Josh Boyer | 210099fb2c | |
Josh Boyer | b8614ae383 | |
Josh Boyer | 51e2b3d120 | |
Dave Jones | c44648089e | |
Dave Jones | 549bc3181c | |
Dave Jones | 16f6b7e04b | |
Dennis Gilmore | 0b98ebd8f6 | |
Josh Boyer | af29089acc | |
Mauro Carvalho Chehab | c7fc574893 | |
Josh Boyer | 91f796e3da | |
Josh Boyer | 961ef7f50d | |
Dave Jones | 446e33ca6d | |
Josh Boyer | a1fee212e7 | |
Josh Boyer | 8df928e24a | |
Josh Boyer | dd5b515ac7 | |
Josh Boyer | 77ab0813b6 | |
Josh Boyer | 295a916d88 | |
Josh Boyer | 99bedf074a | |
Dave Jones | 5f8cac2df4 | |
Dave Jones | 5710fe27ee | |
Dave Jones | 7954e4a201 | |
Josh Boyer | 77c32d730a | |
Josh Boyer | 09037335b6 | |
Josh Boyer | f4908601bf | |
Dave Jones | db8452b1c5 | |
Justin M. Forbes | 5da4893716 | |
Justin M. Forbes | b52c1627ff | |
Justin M. Forbes | a5904b156a | |
Josh Boyer | bf487c0089 | |
Justin M. Forbes | 262c908385 | |
Josh Boyer | e8229fb9d2 | |
Justin M. Forbes | 2a92931ecc | |
Josh Boyer | 9e8b42e8ea | |
Dave Jones | 58fb9ef4a5 | |
Justin M. Forbes | 2eb45048c7 | |
Josh Boyer | e95ee579d9 | |
Josh Boyer | ad6cae5b9e | |
Dave Jones | fcf71737a1 | |
Josh Boyer | 761d970eca | |
Josh Boyer | e250736266 | |
Josh Boyer | d826f97738 | |
Josh Boyer | 3bb94782bd | |
Dave Jones | be72cc46b5 | |
Justin M. Forbes | 93f9c95edb | |
Adam Jackson | b2fb454be9 | |
Justin M. Forbes | 48010561b5 | |
Dave Jones | 4f70627e9e | |
Dave Jones | 1fbb428f2e | |
Josh Boyer | d76ff50e7f | |
Justin M. Forbes | 5c51b136d3 | |
Josh Boyer | 853703eece | |
Dave Jones | a36c81d3a6 | |
Dave Jones | 15ac9dc02a | |
Dave Jones | 361557c29f | |
Dave Jones | 14843a4634 | |
Dave Jones | 7052360844 | |
Dave Jones | 8559739b7b | |
Dave Jones | 90bc499fe8 | |
Josh Boyer | 3ee3622a67 | |
Dave Jones | 2d5a4c92f5 | |
Josh Boyer | 0b719f3d4a | |
Dave Jones | aef732d8e5 | |
Dave Jones | c93c7e5a02 | |
Josh Boyer | 71aea6e1f7 | |
Josh Boyer | c2a76c7eaf | |
Josh Boyer | 9f1f3a3c63 | |
Dave Jones | ebc6e50a98 | |
Dave Jones | 85243fee59 | |
Dennis Gilmore | 8b0318d553 | |
Dave Jones | 2c860b02ae | |
Dave Jones | 1648faf090 | |
Dennis Gilmore | 327c797955 | |
Dennis Gilmore | 49cb1746ef | |
Dennis Gilmore | 4fc891d8e3 | |
Dennis Gilmore | c24ab00680 | |
Dave Jones | d8fd9cb2c8 | |
Dave Jones | 2984100a2b | |
John W. Linville | 652c2c141d | |
Dave Jones | 8c3a2d06dc | |
Josh Boyer | b25c4b32fc | |
Josh Boyer | c0e19331fb | |
Josh Boyer | 11fe6a0fc7 | |
Josh Boyer | c6aa69ef87 | |
Josh Boyer | 386367acf4 | |
Josh Boyer | 64fa2d2b43 | |
Josh Boyer | 7655e85b74 | |
Josh Boyer | cd4ffd10e8 | |
Dennis Gilmore | e76e70cc41 | |
Josh Boyer | 304903f42d | |
Josh Boyer | 94aa5a9c60 | |
Josh Boyer | aebb47b0ee | |
Josh Boyer | 63af6b006b | |
Josh Boyer | a7fae8fdfc | |
Josh Boyer | dc54a7e0f4 | |
Josh Boyer | d45e462d4b | |
Josh Boyer | 5e42663853 | |
Josh Boyer | dba7dc5d3e | |
Josh Boyer | 0456a2e199 | |
Josh Boyer | 4537a47c89 | |
Josh Boyer | 63b6893795 | |
Josh Boyer | 97d02603ce | |
Dave Jones | d4809cb073 | |
Josh Boyer | 12b320b806 | |
Dave Jones | 2ec5a5f81d | |
Dave Jones | 0ae65ec719 | |
Dave Jones | 3454da3121 | |
Dennis Gilmore | 218e731170 | |
Dennis Gilmore | a4de26481e | |
Josh Boyer | 4c6625aa8f | |
Josh Boyer | 2d4a348a91 | |
Dave Jones | e23ae9fdfc | |
Dennis Gilmore | 2d997358bb | |
Dennis Gilmore | 5085a82dca | |
Dennis Gilmore | 1462c71ad9 | |
Dennis Gilmore | 01b44d5ba0 | |
Josh Boyer | ddeb23923b | |
Josh Boyer | 340d8afdfe | |
Josh Boyer | 504b3ab58d | |
Dave Jones | 94f063e126 | |
Dennis Gilmore | d02fa968e9 | |
Dennis Gilmore | 2205d2ae37 | |
Josh Boyer | de6db0d55b | |
Josh Boyer | f906e021ea | |
Chuck Ebbert | 2da231f40c | |
Chuck Ebbert | 8b4e9aeab7 | |
Chuck Ebbert | 16571df650 | |
Chuck Ebbert | 1d542ed4c2 | |
Josh Boyer | 428eca2b0c | |
Josh Boyer | 2fcc12a9e0 | |
Dave Jones | 0564a40600 | |
Josh Boyer | e3f3ee30cb | |
Josh Boyer | 5ff2da42ee | |
Josh Boyer | ef5737b662 | |
Josh Boyer | 8eb2e2e1af | |
Josh Boyer | 0b706c8bb0 | |
Josh Boyer | ce96d758e2 | |
Chuck Ebbert | 650b778c4a | |
Chuck Ebbert | 238fde149d | |
Ben Skeggs | 27ec4e1df2 | |
Chuck Ebbert | 1dfe369259 | |
Chuck Ebbert | c959f366ca | |
Chuck Ebbert | 74c0f68a13 | |
Chuck Ebbert | 99b2575085 | |
Josh Boyer | 03734ddcf2 | |
Chuck Ebbert | 73d229109d | |
Chuck Ebbert | 1933ff1b6a | |
Dennis Gilmore | 202bf795d8 | |
Dennis Gilmore | 8491a17675 | |
Dave Jones | eab9ba1eb4 | |
Dave Jones | f42441ac99 | |
Kyle McMartin | c8de25547e | |
Kyle McMartin | a770668d85 | |
Dave Jones | b4cf83d3b8 | |
Josh Boyer | 12d4c0b4e0 | |
Josh Boyer | 824676c8c8 | |
Josh Boyer | 14a0317175 | |
Josh Boyer | c98134264b | |
Josh Boyer | 8edf5c6af4 | |
Chuck Ebbert | 97c2a18ca6 | |
Josh Boyer | 8ee8a6ff8c | |
John W. Linville | b480412500 | |
Chuck Ebbert | 37120dd539 | |
Chuck Ebbert | e6f683f900 | |
John W. Linville | d836bc7c95 | |
Dave Jones | 1f93f04e23 | |
Josh Boyer | c7fa63c78c | |
Josh Boyer | 6bb8ae898a | |
Dave Jones | 5937336acb | |
Josh Boyer | e517e6666b | |
Dave Jones | 158235aeb9 | |
Josh Boyer | 2c7438bdcc | |
Josh Boyer | 38450608c9 | |
Josh Boyer | 08e5f61909 | |
Josh Boyer | d40de0083f | |
Josh Boyer | ae6e0e8643 | |
Josh Boyer | 2725a26b33 | |
Josh Boyer | 8cbfe5c222 | |
Josh Boyer | 45fb06294a | |
Josh Boyer | 1c1043840b | |
Chuck Ebbert | 5d467e53f1 | |
Dave Jones | a38747fb2e | |
Josh Boyer | 7eb4ded021 | |
Josh Boyer | 4ab6a85e89 | |
Dave Jones | 70cad0483d | |
Josh Boyer | 73fbe46367 | |
Dave Jones | e8a2ce7b99 | |
Josh Boyer | f6d62efb23 | |
Josh Boyer | a7fc75d2d8 | |
Josh Boyer | 7be21bba89 | |
Josh Boyer | bcd1989f6e | |
Josh Boyer | ab000f377f | |
Adam Jackson | 4b7f4d32b3 | |
Josh Boyer | 38f975149b | |
Dave Jones | 7ba24c33e7 | |
Josh Boyer | 71ac22df47 | |
Josh Boyer | 9788e320b3 | |
Josh Boyer | e0adc28e63 | |
Josh Boyer | ea166942be | |
Josh Boyer | cd7408621e | |
Josh Boyer | 74f5c02455 | |
Josh Boyer | e1bdb5078c | |
Chuck Ebbert | 41645d5020 | |
Chuck Ebbert | a2573a13a2 | |
Josh Boyer | a949670cf0 | |
Josh Boyer | bbc0f03b30 | |
Dennis Gilmore | eae267fb04 | |
Josh Boyer | 8aa7f7a647 | |
Josh Boyer | 13db1541cb | |
Dave Jones | 144f5a9a82 | |
Josh Boyer | 1c814032e0 | |
Chuck Ebbert | 5b15064ed1 | |
Chuck Ebbert | d6189c7ffd | |
Josh Boyer | f2b0200bfa | |
Chuck Ebbert | 9c11a5058e | |
Dave Jones | 333fe2ae43 | |
Chuck Ebbert | bd7673d363 | |
Chuck Ebbert | fbbfcd6a27 | |
Chuck Ebbert | 802d512561 | |
Chuck Ebbert | 51b4bd8666 | |
Chuck Ebbert | 8b2df4baf0 | |
Ben Skeggs | a22cd81f84 | |
Chuck Ebbert | 8728f9c48f | |
Ben Skeggs | 7acacb7383 | |
Ben Skeggs | 98ae7131a4 | |
Dave Jones | 3f743de566 | |
Chuck Ebbert | a6590c7efe | |
Dave Jones | 2b8c61a6bf | |
Josh Boyer | 449d91f7c4 | |
Dennis Gilmore | 24d01a8934 | |
Dennis Gilmore | 51219927a8 | |
Dennis Gilmore | fc919d08c4 | |
Dave Jones | 9fe2f4befc | |
Dave Jones | 8f238d3c73 | |
Dave Jones | 6c34be7b20 | |
Dave Jones | 5d9335e883 | |
Dennis Gilmore | a0b4a6a9a9 | |
Dave Jones | a81be4733d | |
Dennis Gilmore | 31e0bc8c16 | |
Dennis Gilmore | 82a003a4a4 | |
Dennis Gilmore | 7c90685c8f | |
Dennis Gilmore | 92be6ab41b | |
Dennis Gilmore | bfb05f22a7 | |
Josh Boyer | c1dc3d8679 | |
Dave Jones | d1998c6a8a | |
Josh Boyer | 408089c858 | |
Dave Jones | 1c75faa7b2 | |
Dave Jones | a9f639a8c2 | |
Dave Jones | ad04a02c69 | |
Dave Jones | d2714557b2 | |
Dave Jones | a75a12cf59 | |
Dave Jones | 8b85353061 | |
Dave Jones | 13393fc3c2 | |
Dave Jones | e447dfbbdd | |
Dave Jones | a40673ffda | |
Dave Jones | 85b3aab0f0 | |
Dave Jones | 3205070880 | |
Dave Jones | 2a94216ed5 | |
Dave Jones | 3082e89bfa | |
John W. Linville | bdcd61e44a | |
Josh Boyer | a9cca766eb | |
Josh Boyer | 52aef13a2d | |
Josh Boyer | c309d3128d | |
Dave Jones | d988a172b0 | |
Josh Boyer | 2d60cadcce | |
Dave Jones | 725a196dd6 | |
Dave Jones | 3530e89574 | |
Dave Jones | 89cbb55202 | |
Dave Jones | 7f4ef57b34 | |
John W. Linville | 523da4bf9a | |
John W. Linville | af3abd43a5 | |
Chuck Ebbert | c2a198def5 | |
Chuck Ebbert | 5d1e28000d | |
Chuck Ebbert | 10aa0c1bf7 | |
Chuck Ebbert | 58f6f59b9e | |
Chuck Ebbert | a9318c93e6 | |
Chuck Ebbert | 54043246c1 | |
Dave Jones | 8bc042555b | |
Chuck Ebbert | be7c8ca14b | |
Chuck Ebbert | 0dd8943dd9 | |
Chuck Ebbert | 198deb8acf | |
Chuck Ebbert | b67156cd9e | |
Chuck Ebbert | d111c750cc | |
Chuck Ebbert | 1d95757421 | |
Chuck Ebbert | 1412b6df72 | |
Chuck Ebbert | ced86e1611 | |
Chuck Ebbert | 7562ee4726 | |
Chuck Ebbert | 8744fb36ce | |
Chuck Ebbert | ce8c067136 | |
Dave Airlie | 797a5eb619 | |
Dave Airlie | bc6617c233 | |
Dave Airlie | 9a9eea3502 | |
Dave Jones | 7bbc91a67d | |
Kyle McMartin | 622985637b | |
Kyle McMartin | aa53a627e5 | |
Kyle McMartin | bfdadc2f0b | |
Kyle McMartin | 8dba4a6f78 | |
Dave Jones | b97a14431d | |
Dave Jones | 0b2fda5000 | |
Chuck Ebbert | f6de3b4340 | |
Chuck Ebbert | 18dd18f538 | |
Adam Jackson | f91329b1ad | |
Adam Jackson | 53392f03f5 | |
Dave Airlie | de4207af71 | |
Ben Skeggs | 5e40603daf | |
Ben Skeggs | 1c2a2024ce | |
Dave Airlie | f6fc553f93 | |
Chuck Ebbert | b1f66838e6 | |
Kyle McMartin | e56d281126 | |
Chuck Ebbert | fcfc30ed64 | |
Chuck Ebbert | 3cc5871fa6 | |
Chuck Ebbert | 7a131a574f | |
Chuck Ebbert | cdf695a919 | |
Kyle McMartin | 6c43c19fb8 | |
Kyle McMartin | 3c5f6df32d | |
Chuck Ebbert | 8d4bec9c02 | |
Kyle McMartin | 34f3a6f6cf | |
Chuck Ebbert | 49be14f7fd | |
Chuck Ebbert | ac4b917a22 | |
Kyle McMartin | 5c3a39fd9a | |
Kyle McMartin | ee720e9539 | |
Chuck Ebbert | d470023c15 | |
Dave Airlie | 7f205bd485 | |
Chuck Ebbert | 9057ac9c23 | |
Dave Airlie | 9da2734a4b | |
Dave Airlie | 3bcf43a573 | |
Chuck Ebbert | 50ffc6fec5 | |
Chuck Ebbert | e883ed16c1 | |
Chuck Ebbert | 6034fb773e | |
Kyle McMartin | 4102971164 | |
Kyle McMartin | 19b3eb0b8a | |
Kyle McMartin | da9a09fb91 | |
Chuck Ebbert | 915385f9f0 | |
Jarod Wilson | caf1c2222c | |
Neil Horman | cb4a4c8907 | |
Kyle McMartin | 9fd0d88656 | |
Kyle McMartin | 36dff6f30f | |
Kyle McMartin | 05118fa9b4 | |
Jarod Wilson | 78e43cbafc | |
Kyle McMartin | 36477ddc42 | |
Chuck Ebbert | 1e374f7f2b | |
Chuck Ebbert | 894d7acd63 | |
Kyle McMartin | 9dde67c33a | |
Ben Skeggs | e92d339e55 | |
Ben Skeggs | 6747df9c31 | |
Dave Airlie | 7666e4b3f3 | |
Ben Skeggs | 304107e3d0 | |
Hans de Goede | aef9f10724 | |
Ben Skeggs | 91fab41dfb | |
Ben Skeggs | f3e795d08b | |
Ben Skeggs | abe10d7eb7 | |
Kyle McMartin | 86c0bad77a | |
Kyle McMartin | 755fd341e7 | |
Kyle McMartin | 1862e7dee1 | |
Kyle McMartin | 1d3db7f8fb | |
Chuck Ebbert | 7a46f6afe6 | |
Chuck Ebbert | 75edc04edd | |
Chuck Ebbert | 3312da328f | |
Chuck Ebbert | 073133a682 | |
Chuck Ebbert | 1590df9db8 | |
Chuck Ebbert | b0e7478b71 | |
Chuck Ebbert | 535b4d942d | |
Chuck Ebbert | 06ad6a4c25 | |
Chuck Ebbert | 6236c85dc6 | |
Kyle McMartin | a13914ae1e | |
Dave Airlie | e04a1dcc80 | |
Ben Skeggs | 1abc854706 | |
Chuck Ebbert | c5e062a0ef | |
Matthew Garrett | 93c9d72918 | |
Dennis Gilmore | e53e7fadc2 |
|
@ -1,5 +1,6 @@
|
|||
linux-*.tar.bz2
|
||||
patch-*.bz2
|
||||
clog
|
||||
*.xz
|
||||
*.bz2
|
||||
*.rpm
|
||||
kernel-2.6.*/
|
||||
*.orig
|
||||
kernel-[23].*/
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
From a9e1e167d934aa74f48008393ade4f09fc587432 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@redhat.com>
|
||||
Date: Thu, 12 Apr 2012 13:55:36 -0400
|
||||
Subject: [PATCH] ALSA: hda/realtek - Add quirk for Mac Pro 5,1 machines
|
||||
|
||||
A user reported that setting model=imac24 used to allow sound to work on their
|
||||
Mac Pro 5,1 machine. Commit 5671087ffa "Move ALC885 macpro and imac24 models
|
||||
to auto-parser" removed this model option. All Mac machines are now explicitly
|
||||
handled with a quirk and the auto-parser. This adds a quirk for the device
|
||||
found on the Mac Pro 5,1 machines.
|
||||
|
||||
This (partially) fixes https://bugzilla.redhat.com/show_bug.cgi?id=808559
|
||||
|
||||
[sorted the new entry in the ID number order by tiwai]
|
||||
|
||||
Reported-by: Gabriel Somlo <somlo@cmu.edu>
|
||||
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
sound/pci/hda/patch_realtek.c | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
|
||||
index 22c73b7..bd34b51 100644
|
||||
--- a/sound/pci/hda/patch_realtek.c
|
||||
+++ b/sound/pci/hda/patch_realtek.c
|
||||
@@ -4659,6 +4659,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x106b, 0x2800, "AppleTV", ALC885_FIXUP_MACPRO_GPIO),
|
||||
SND_PCI_QUIRK(0x106b, 0x3200, "iMac 7,1 Aluminum", ALC882_FIXUP_EAPD),
|
||||
SND_PCI_QUIRK(0x106b, 0x3e00, "iMac 24 Aluminum", ALC885_FIXUP_MACPRO_GPIO),
|
||||
+ SND_PCI_QUIRK(0x106b, 0x4200, "Mac Pro 5,1", ALC885_FIXUP_MACPRO_GPIO),
|
||||
|
||||
SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC882_FIXUP_EAPD),
|
||||
SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3),
|
||||
--
|
||||
1.7.7.6
|
||||
|
32
Makefile
32
Makefile
|
@ -36,13 +36,11 @@ debug:
|
|||
@perl -pi -e 's/# CONFIG_DEBUG_SLAB is not set/CONFIG_DEBUG_SLAB=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_MUTEXES is not set/CONFIG_DEBUG_MUTEXES=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_RT_MUTEXES is not set/CONFIG_DEBUG_RT_MUTEXES=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_RWSEMS is not set/CONFIG_DEBUG_RWSEMS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_LOCK_ALLOC is not set/CONFIG_DEBUG_LOCK_ALLOC=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_PROVE_LOCKING is not set/CONFIG_PROVE_LOCKING=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_PROVE_RCU is not set/CONFIG_PROVE_RCU=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_SPINLOCK is not set/CONFIG_DEBUG_SPINLOCK=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_VM is not set/CONFIG_DEBUG_VM=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_SLEEP_IN_IRQ is not set/CONFIG_DEBUG_SLEEP_IN_IRQ=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAULT_INJECTION is not set/CONFIG_FAULT_INJECTION=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAILSLAB is not set/CONFIG_FAILSLAB=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_FAIL_PAGE_ALLOC is not set/CONFIG_FAIL_PAGE_ALLOC=y/' config-nodebug
|
||||
|
@ -55,6 +53,9 @@ debug:
|
|||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS is not set/CONFIG_DEBUG_OBJECTS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_FREE is not set/CONFIG_DEBUG_OBJECTS_FREE=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_TIMERS is not set/CONFIG_DEBUG_OBJECTS_TIMERS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_WORK is not set/CONFIG_DEBUG_OBJECTS_WORK=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set/CONFIG_DEBUG_OBJECTS_RCU_HEAD=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_X86_PTDUMP is not set/CONFIG_X86_PTDUMP=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_CAN_DEBUG_DEVICES is not set/CONFIG_CAN_DEBUG_DEVICES=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_MODULE_FORCE_UNLOAD is not set/CONFIG_MODULE_FORCE_UNLOAD=y/' config-nodebug
|
||||
|
@ -63,7 +64,6 @@ debug:
|
|||
@perl -pi -e 's/# CONFIG_DMA_API_DEBUG is not set/CONFIG_DMA_API_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_PM_TEST_SUSPEND is not set/CONFIG_PM_TEST_SUSPEND=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_PM_ADVANCED_DEBUG is not set/CONFIG_PM_ADVANCED_DEBUG=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_BOOT_TRACER is not set/CONFIG_BOOT_TRACER=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_B43_DEBUG is not set/CONFIG_B43_DEBUG=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_B43LEGACY_DEBUG is not set/CONFIG_B43LEGACY_DEBUG=y/' config-generic
|
||||
@perl -pi -e 's/# CONFIG_MMIOTRACE is not set/CONFIG_MMIOTRACE=y/' config-nodebug
|
||||
|
@ -74,12 +74,11 @@ debug:
|
|||
@perl -pi -e 's/# CONFIG_EXT4_DEBUG is not set/CONFIG_EXT4_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_PERF_USE_VMALLOC is not set/CONFIG_DEBUG_PERF_USE_VMALLOC=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_JBD2_DEBUG is not set/CONFIG_JBD2_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_CFQ_IOSCHED is not set/CONFIG_DEBUG_CFQ_IOSCHED=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_BLK_CGROUP is not set/CONFIG_DEBUG_BLK_CGROUP=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DRBD_FAULT_INJECTION is not set/CONFIG_DRBD_FAULT_INJECTION=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_ATH_DEBUG is not set/CONFIG_ATH_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_CARL9170_DEBUGFS is not set/CONFIG_CARL9170_DEBUGFS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_IWLWIFI_DEVICE_TRACING is not set/CONFIG_IWLWIFI_DEVICE_TRACING=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_WORK is not set/CONFIG_DEBUG_OBJECTS_WORK=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set/CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DMADEVICES_DEBUG is not set/CONFIG_DMADEVICES_DEBUG=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DMADEVICES_VDEBUG is not set/CONFIG_DMADEVICES_VDEBUG=y/' config-nodebug
|
||||
|
@ -89,10 +88,9 @@ debug:
|
|||
@perl -pi -e 's/# CONFIG_KDB_KEYBOARD is not set/CONFIG_KDB_KEYBOARD=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set/CONFIG_CPU_NOTIFIER_ERROR_INJECT=m/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_PER_CPU_MAPS is not set/CONFIG_DEBUG_PER_CPU_MAPS=y/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y/# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set/' config-nodebug
|
||||
#@perl -pi -e 's/# CONFIG_PCI_DEFAULT_USE_CRS is not set/CONFIG_PCI_DEFAULT_USE_CRS=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_TEST_LIST_SORT is not set/CONFIG_TEST_LIST_SORT=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_ATOMIC_SLEEP is not set/CONFIG_DEBUG_ATOMIC_SLEEP=y/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_DETECT_HUNG_TASK is not set/CONFIG_DETECT_HUNG_TASK=y/' config-nodebug
|
||||
|
||||
@perl -pi -e 's/# CONFIG_DEBUG_SET_MODULE_RONX is not set/CONFIG_DEBUG_SET_MODULE_RONX=y/' config-nodebug
|
||||
|
||||
|
@ -115,13 +113,11 @@ release:
|
|||
@perl -pi -e 's/CONFIG_DEBUG_SLAB=y/# CONFIG_DEBUG_SLAB is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_MUTEXES=y/# CONFIG_DEBUG_MUTEXES is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_RT_MUTEXES=y/# CONFIG_DEBUG_RT_MUTEXES is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_RWSEMS=y/# CONFIG_DEBUG_RWSEMS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_LOCK_ALLOC=y/# CONFIG_DEBUG_LOCK_ALLOC is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_PROVE_LOCKING=y/# CONFIG_PROVE_LOCKING is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_PROVE_RCU=y/# CONFIG_PROVE_RCU is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_SPINLOCK=y/# CONFIG_DEBUG_SPINLOCK is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_VM=y/# CONFIG_DEBUG_VM is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_SLEEP_IN_IRQ=y/# CONFIG_DEBUG_SLEEP_IN_IRQ is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAULT_INJECTION=y/# CONFIG_FAULT_INJECTION is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAILSLAB=y/# CONFIG_FAILSLAB is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_FAIL_PAGE_ALLOC=y/# CONFIG_FAIL_PAGE_ALLOC is not set/' config-nodebug
|
||||
|
@ -134,15 +130,17 @@ release:
|
|||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS=y/# CONFIG_DEBUG_OBJECTS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_FREE=y/# CONFIG_DEBUG_OBJECTS_FREE is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_TIMERS=y/# CONFIG_DEBUG_OBJECTS_TIMERS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_WORK=y/# CONFIG_DEBUG_OBJECTS_WORK is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y/# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_RCU_HEAD=y/# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_X86_PTDUMP=y/# CONFIG_X86_PTDUMP is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_CAN_DEBUG_DEVICES=y/# CONFIG_CAN_DEBUG_DEVICES is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_MODULE_FORCE_UNLOAD=y/# CONFIG_MODULE_FORCE_UNLOAD is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_SYSCTL_SYSCALL_CHECK=y/# CONFIG_SYSCTL_SYSCALL_CHECK is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_NOTIFIERS=y/# CONFIG_DEBUG_NOTIFIERS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DMA_API_DEBUG=y/# CONFIG_DMA_API_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_PM_TEST_SUSPEND=y/#\ CONFIG_PM_TEST_SUSPEND\ is\ not\ set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_PM_ADVANCED_DEBUG=y/#\ CONFIG_PM_ADVANCED_DEBUG\ is\ not\ set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_BOOT_TRACER=y/#\ CONFIG_BOOT_TRACER\ is\ not\ set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_PM_TEST_SUSPEND=y/# CONFIG_PM_TEST_SUSPEND is not set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_PM_ADVANCED_DEBUG=y/# CONFIG_PM_ADVANCED_DEBUG is not set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_B43_DEBUG=y/# CONFIG_B43_DEBUG is not set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_B43LEGACY_DEBUG=y/# CONFIG_B43LEGACY_DEBUG is not set/' config-generic
|
||||
@perl -pi -e 's/CONFIG_MMIOTRACE=y/# CONFIG_MMIOTRACE is not set/' config-nodebug
|
||||
|
@ -153,12 +151,11 @@ release:
|
|||
@perl -pi -e 's/CONFIG_EXT4_DEBUG=y/# CONFIG_EXT4_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_PERF_USE_VMALLOC=y/# CONFIG_DEBUG_PERF_USE_VMALLOC is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_JBD2_DEBUG=y/# CONFIG_JBD2_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_CFQ_IOSCHED=y/# CONFIG_DEBUG_CFQ_IOSCHED is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_BLK_CGROUP=y/# CONFIG_DEBUG_BLK_CGROUP is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DRBD_FAULT_INJECTION=y/# CONFIG_DRBD_FAULT_INJECTION is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_ATH_DEBUG=y/# CONFIG_ATH_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_CARL9170_DEBUGFS=y/# CONFIG_CARL9170_DEBUGFS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_IWLWIFI_DEVICE_TRACING=y/# CONFIG_IWLWIFI_DEVICE_TRACING is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_WORK=y/# CONFIG_DEBUG_OBJECTS_WORK is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y/# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DMADEVICES_DEBUG=y/# CONFIG_DMADEVICES_DEBUG is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DMADEVICES_VDEBUG=y/# CONFIG_DMADEVICES_VDEBUG is not set/' config-nodebug
|
||||
|
@ -168,10 +165,9 @@ release:
|
|||
#@perl -pi -e 's/CONFIG_KGDB_KDB=y/# CONFIG_KGDB_KDB is not set/' config-nodebug
|
||||
#@perl -pi -e 's/CONFIG_KDB_KEYBOARD=y/# CONFIG_KDB_KEYBOARD is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_PER_CPU_MAPS=y/# CONFIG_DEBUG_PER_CPU_MAPS is not set/' config-nodebug
|
||||
@perl -pi -e 's/# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set/CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y/' config-nodebug
|
||||
#@perl -pi -e 's/CONFIG_PCI_DEFAULT_USE_CRS=y/# CONFIG_PCI_DEFAULT_USE_CRS is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y/# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_TEST_LIST_SORT=y/# CONFIG_TEST_LIST_SORT is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DEBUG_ATOMIC_SLEEP=y/# CONFIG_DEBUG_ATOMIC_SLEEP is not set/' config-nodebug
|
||||
@perl -pi -e 's/CONFIG_DETECT_HUNG_TASK=y/# CONFIG_DETECT_HUNG_TASK is not set/' config-nodebug
|
||||
|
||||
@perl -pi -e 's/CONFIG_DEBUG_SET_MODULE_RONX=y/# CONFIG_DEBUG_SET_MODULE_RONX is not set/' config-nodebug
|
||||
|
||||
|
|
|
@ -8,13 +8,18 @@ CONFIGFILES = \
|
|||
$(CFG)-i686.config $(CFG)-i686-debug.config \
|
||||
$(CFG)-i686-PAE.config $(CFG)-i686-PAEdebug.config \
|
||||
$(CFG)-x86_64.config $(CFG)-x86_64-debug.config \
|
||||
$(CFG)-s390x.config $(CFG)-arm.config \
|
||||
$(CFG)-s390x.config \
|
||||
$(CFG)-arm.config $(CFG)-armv5tel.config \
|
||||
$(CFG)-armv5tel-kirkwood.config \
|
||||
$(CFG)-armv7l-imx.config $(CFG)-armv7l-highbank.config \
|
||||
$(CFG)-armv7l-omap.config $(CFG)-armv7l-tegra.config \
|
||||
$(CFG)-armv7hl-imx.config $(CFG)-armv7hl-highbank.config \
|
||||
$(CFG)-armv7hl-omap.config $(CFG)-armv7hl-tegra.config \
|
||||
$(CFG)-ppc.config $(CFG)-ppc-smp.config \
|
||||
$(CFG)-sparc64.config \
|
||||
$(CFG)-ppc64.config $(CFG)-ppc64-debug.config \
|
||||
$(CFG)-ia64.config
|
||||
$(CFG)-ppc64.config $(CFG)-ppc64-debug.config
|
||||
|
||||
PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x ia64 sparc64
|
||||
PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x sparc64
|
||||
TEMPFILES = $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS)))
|
||||
|
||||
configs: $(CONFIGFILES)
|
||||
|
@ -32,16 +37,40 @@ temp-generic: config-generic
|
|||
temp-debug-generic: config-generic
|
||||
cat config-generic config-debug > temp-debug-generic
|
||||
|
||||
temp-x86-generic: config-x86-generic temp-generic
|
||||
temp-arm-generic: config-arm-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86-debug-generic: config-x86-generic temp-debug-generic
|
||||
temp-armv7l-omap-generic: config-arm-omap-generic temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86_64-generic: config-x86_64-generic temp-generic
|
||||
temp-armv7l-tegra: config-arm-tegra temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86_64-debug-generic: config-x86_64-generic temp-debug-generic
|
||||
temp-armv5tel-kirkwood: config-arm-kirkwood temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv7l-imx: config-arm-imx temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-armv7l-highbank: config-arm-highbank temp-arm-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86-32: config-x86-32-generic config-x86-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86-32-generic: temp-x86-32 temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86-debug-generic: temp-x86-32 temp-debug-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86-64: config-x86_64-generic config-x86-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86_64-generic: temp-x86-64 temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-x86_64-debug-generic: temp-x86-64 temp-debug-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-sparc64-generic: config-sparc64-generic temp-generic
|
||||
|
@ -59,16 +88,13 @@ temp-powerpc32-generic: config-powerpc32-generic temp-powerpc-generic
|
|||
temp-s390-generic: config-s390x temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
temp-ia64-generic: config-ia64-generic temp-generic
|
||||
perl merge.pl $^ > $@
|
||||
|
||||
kernel-$(VERSION)-i686-PAE.config: config-i686-PAE temp-x86-generic
|
||||
kernel-$(VERSION)-i686-PAE.config: config-i686-PAE temp-x86-32-generic
|
||||
perl merge.pl $^ i386 > $@
|
||||
|
||||
kernel-$(VERSION)-i686-PAEdebug.config: config-i686-PAE temp-x86-debug-generic
|
||||
perl merge.pl $^ i386 > $@
|
||||
|
||||
kernel-$(VERSION)-i686.config: /dev/null temp-x86-generic
|
||||
kernel-$(VERSION)-i686.config: /dev/null temp-x86-32-generic
|
||||
perl merge.pl $^ i386 > $@
|
||||
|
||||
kernel-$(VERSION)-i686-debug.config: /dev/null temp-x86-debug-generic
|
||||
|
@ -92,7 +118,37 @@ kernel-$(VERSION)-ppc64-debug.config: config-powerpc64 temp-powerpc-debug-generi
|
|||
kernel-$(VERSION)-s390x.config: config-s390x temp-s390-generic
|
||||
perl merge.pl $^ s390 > $@
|
||||
|
||||
kernel-$(VERSION)-arm.config: config-arm temp-generic
|
||||
kernel-$(VERSION)-arm.config: /dev/null temp-arm-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv5tel.config: /dev/null temp-arm-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv5tel-kirkwood.config: /dev/null temp-armv5tel-kirkwood
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7l-imx.config: /dev/null temp-armv7l-imx
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7l-highbank.config: /dev/null temp-armv7l-highbank
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7l-omap.config: /dev/null temp-armv7l-omap-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7l-tegra.config: /dev/null temp-armv7l-tegra
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl-imx.config: /dev/null temp-armv7l-imx
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl-highbank.config: /dev/null temp-armv7l-highbank
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl-omap.config: /dev/null temp-armv7l-omap-generic
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-armv7hl-tegra.config: /dev/null temp-armv7l-tegra
|
||||
perl merge.pl $^ arm > $@
|
||||
|
||||
kernel-$(VERSION)-ppc.config: /dev/null temp-powerpc32-generic
|
||||
|
@ -100,6 +156,3 @@ kernel-$(VERSION)-ppc.config: /dev/null temp-powerpc32-generic
|
|||
|
||||
kernel-$(VERSION)-ppc-smp.config: config-powerpc32-smp temp-powerpc32-generic
|
||||
perl merge.pl $^ powerpc > $@
|
||||
|
||||
kernel-$(VERSION)-ia64.config: /dev/null temp-ia64-generic
|
||||
perl merge.pl $^ ia64 > $@
|
||||
|
|
|
@ -0,0 +1,109 @@
|
|||
diff -up linux-3.2.noarch/fs/nfs/idmap.c.orig linux-3.2.noarch/fs/nfs/idmap.c
|
||||
--- linux-3.2.noarch/fs/nfs/idmap.c.orig 2012-03-14 13:08:37.462928792 -0400
|
||||
+++ linux-3.2.noarch/fs/nfs/idmap.c 2012-03-14 13:10:17.076030982 -0400
|
||||
@@ -365,7 +365,7 @@ struct idmap_hashent {
|
||||
|
||||
struct idmap_hashtable {
|
||||
__u8 h_type;
|
||||
- struct idmap_hashent h_entries[IDMAP_HASH_SZ];
|
||||
+ struct idmap_hashent *h_entries;
|
||||
};
|
||||
|
||||
struct idmap {
|
||||
@@ -420,20 +420,39 @@ nfs_idmap_new(struct nfs_client *clp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static void
|
||||
+idmap_alloc_hashtable(struct idmap_hashtable *h)
|
||||
+{
|
||||
+ if (h->h_entries != NULL)
|
||||
+ return;
|
||||
+ h->h_entries = kcalloc(IDMAP_HASH_SZ,
|
||||
+ sizeof(*h->h_entries),
|
||||
+ GFP_KERNEL);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+idmap_free_hashtable(struct idmap_hashtable *h)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ if (h->h_entries == NULL)
|
||||
+ return;
|
||||
+ for (i = 0; i < IDMAP_HASH_SZ; i++)
|
||||
+ kfree(h->h_entries[i].ih_name);
|
||||
+ kfree(h->h_entries);
|
||||
+}
|
||||
+
|
||||
void
|
||||
nfs_idmap_delete(struct nfs_client *clp)
|
||||
{
|
||||
struct idmap *idmap = clp->cl_idmap;
|
||||
- int i;
|
||||
|
||||
if (!idmap)
|
||||
return;
|
||||
rpc_unlink(idmap->idmap_dentry);
|
||||
clp->cl_idmap = NULL;
|
||||
- for (i = 0; i < ARRAY_SIZE(idmap->idmap_user_hash.h_entries); i++)
|
||||
- kfree(idmap->idmap_user_hash.h_entries[i].ih_name);
|
||||
- for (i = 0; i < ARRAY_SIZE(idmap->idmap_group_hash.h_entries); i++)
|
||||
- kfree(idmap->idmap_group_hash.h_entries[i].ih_name);
|
||||
+ idmap_free_hashtable(&idmap->idmap_user_hash);
|
||||
+ idmap_free_hashtable(&idmap->idmap_group_hash);
|
||||
kfree(idmap);
|
||||
}
|
||||
|
||||
@@ -443,6 +462,8 @@ nfs_idmap_delete(struct nfs_client *clp)
|
||||
static inline struct idmap_hashent *
|
||||
idmap_name_hash(struct idmap_hashtable* h, const char *name, size_t len)
|
||||
{
|
||||
+ if (h->h_entries == NULL)
|
||||
+ return NULL;
|
||||
return &h->h_entries[fnvhash32(name, len) % IDMAP_HASH_SZ];
|
||||
}
|
||||
|
||||
@@ -451,6 +472,8 @@ idmap_lookup_name(struct idmap_hashtable
|
||||
{
|
||||
struct idmap_hashent *he = idmap_name_hash(h, name, len);
|
||||
|
||||
+ if (he == NULL)
|
||||
+ return NULL;
|
||||
if (he->ih_namelen != len || memcmp(he->ih_name, name, len) != 0)
|
||||
return NULL;
|
||||
if (time_after(jiffies, he->ih_expires))
|
||||
@@ -461,6 +484,8 @@ idmap_lookup_name(struct idmap_hashtable
|
||||
static inline struct idmap_hashent *
|
||||
idmap_id_hash(struct idmap_hashtable* h, __u32 id)
|
||||
{
|
||||
+ if (h->h_entries == NULL)
|
||||
+ return NULL;
|
||||
return &h->h_entries[fnvhash32(&id, sizeof(id)) % IDMAP_HASH_SZ];
|
||||
}
|
||||
|
||||
@@ -468,6 +493,9 @@ static struct idmap_hashent *
|
||||
idmap_lookup_id(struct idmap_hashtable *h, __u32 id)
|
||||
{
|
||||
struct idmap_hashent *he = idmap_id_hash(h, id);
|
||||
+
|
||||
+ if (he == NULL)
|
||||
+ return NULL;
|
||||
if (he->ih_id != id || he->ih_namelen == 0)
|
||||
return NULL;
|
||||
if (time_after(jiffies, he->ih_expires))
|
||||
@@ -483,12 +511,14 @@ idmap_lookup_id(struct idmap_hashtable *
|
||||
static inline struct idmap_hashent *
|
||||
idmap_alloc_name(struct idmap_hashtable *h, char *name, size_t len)
|
||||
{
|
||||
+ idmap_alloc_hashtable(h);
|
||||
return idmap_name_hash(h, name, len);
|
||||
}
|
||||
|
||||
static inline struct idmap_hashent *
|
||||
idmap_alloc_id(struct idmap_hashtable *h, __u32 id)
|
||||
{
|
||||
+ idmap_alloc_hashtable(h);
|
||||
return idmap_id_hash(h, id);
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
From 14977489ffdb80d4caf5a184ba41b23b02fbacd9 Mon Sep 17 00:00:00 2001
|
||||
From: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
Date: Tue, 27 Mar 2012 18:31:25 -0400
|
||||
Subject: [PATCH] NFSv4: Minor cleanups for nfs4_handle_exception and
|
||||
nfs4_async_handle_error
|
||||
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
---
|
||||
fs/nfs/nfs4proc.c | 10 +++++-----
|
||||
1 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
|
||||
index 1933e67..f82bde0 100644
|
||||
--- a/fs/nfs/nfs4proc.c
|
||||
+++ b/fs/nfs/nfs4proc.c
|
||||
@@ -270,7 +270,7 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc
|
||||
case 0:
|
||||
return 0;
|
||||
case -NFS4ERR_OPENMODE:
|
||||
- if (nfs_have_delegation(inode, FMODE_READ)) {
|
||||
+ if (inode && nfs_have_delegation(inode, FMODE_READ)) {
|
||||
nfs_inode_return_delegation(inode);
|
||||
exception->retry = 1;
|
||||
return 0;
|
||||
@@ -282,10 +282,9 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc
|
||||
case -NFS4ERR_DELEG_REVOKED:
|
||||
case -NFS4ERR_ADMIN_REVOKED:
|
||||
case -NFS4ERR_BAD_STATEID:
|
||||
- if (state != NULL)
|
||||
- nfs_remove_bad_delegation(state->inode);
|
||||
if (state == NULL)
|
||||
break;
|
||||
+ nfs_remove_bad_delegation(state->inode);
|
||||
nfs4_schedule_stateid_recovery(server, state);
|
||||
goto wait_on_recovery;
|
||||
case -NFS4ERR_EXPIRED:
|
||||
@@ -3825,8 +3824,9 @@ nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,
|
||||
case -NFS4ERR_DELEG_REVOKED:
|
||||
case -NFS4ERR_ADMIN_REVOKED:
|
||||
case -NFS4ERR_BAD_STATEID:
|
||||
- if (state != NULL)
|
||||
- nfs_remove_bad_delegation(state->inode);
|
||||
+ if (state == NULL)
|
||||
+ break;
|
||||
+ nfs_remove_bad_delegation(state->inode);
|
||||
case -NFS4ERR_OPENMODE:
|
||||
if (state == NULL)
|
||||
break;
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
From 34d91cfbc163c6e2a136a27c96918fc35de06341 Mon Sep 17 00:00:00 2001
|
||||
From: William Dauchy <wdauchy@gmail.com>
|
||||
Date: Wed, 14 Mar 2012 12:32:04 +0100
|
||||
Subject: [PATCH] NFSv4: Rate limit the state manager for lock reclaim warning
|
||||
messages
|
||||
|
||||
Adding rate limit on `Lock reclaim failed` messages since it could fill
|
||||
up system logs
|
||||
Signed-off-by: William Dauchy <wdauchy@gmail.com>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
|
||||
Conflicts:
|
||||
|
||||
fs/nfs/nfs4state.c
|
||||
---
|
||||
fs/nfs/nfs4state.c | 5 +++--
|
||||
1 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
|
||||
index bacb271..3676b5c 100644
|
||||
--- a/fs/nfs/nfs4state.c
|
||||
+++ b/fs/nfs/nfs4state.c
|
||||
@@ -1247,8 +1247,9 @@ restart:
|
||||
spin_lock(&state->state_lock);
|
||||
list_for_each_entry(lock, &state->lock_states, ls_locks) {
|
||||
if (!(lock->ls_flags & NFS_LOCK_INITIALIZED))
|
||||
- printk("%s: Lock reclaim failed!\n",
|
||||
- __func__);
|
||||
+ pr_warn_ratelimited("NFS: "
|
||||
+ "%s: Lock reclaim "
|
||||
+ "failed!\n", __func__);
|
||||
}
|
||||
spin_unlock(&state->state_lock);
|
||||
nfs4_put_open_state(state);
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
diff -up linux-3.2.noarch/fs/nfs/idmap.c.orig linux-3.2.noarch/fs/nfs/idmap.c
|
||||
--- linux-3.2.noarch/fs/nfs/idmap.c.orig 2012-02-07 07:12:52.585471833 -0500
|
||||
+++ linux-3.2.noarch/fs/nfs/idmap.c 2012-03-14 13:08:37.462928792 -0400
|
||||
@@ -360,7 +360,7 @@ struct idmap_hashent {
|
||||
unsigned long ih_expires;
|
||||
__u32 ih_id;
|
||||
size_t ih_namelen;
|
||||
- char ih_name[IDMAP_NAMESZ];
|
||||
+ const char *ih_name;
|
||||
};
|
||||
|
||||
struct idmap_hashtable {
|
||||
@@ -424,11 +424,16 @@ void
|
||||
nfs_idmap_delete(struct nfs_client *clp)
|
||||
{
|
||||
struct idmap *idmap = clp->cl_idmap;
|
||||
+ int i;
|
||||
|
||||
if (!idmap)
|
||||
return;
|
||||
rpc_unlink(idmap->idmap_dentry);
|
||||
clp->cl_idmap = NULL;
|
||||
+ for (i = 0; i < ARRAY_SIZE(idmap->idmap_user_hash.h_entries); i++)
|
||||
+ kfree(idmap->idmap_user_hash.h_entries[i].ih_name);
|
||||
+ for (i = 0; i < ARRAY_SIZE(idmap->idmap_group_hash.h_entries); i++)
|
||||
+ kfree(idmap->idmap_group_hash.h_entries[i].ih_name);
|
||||
kfree(idmap);
|
||||
}
|
||||
|
||||
@@ -491,9 +496,14 @@ static void
|
||||
idmap_update_entry(struct idmap_hashent *he, const char *name,
|
||||
size_t namelen, __u32 id)
|
||||
{
|
||||
+ char *str = kmalloc(namelen + 1, GFP_KERNEL);
|
||||
+ if (str == NULL)
|
||||
+ return;
|
||||
+ kfree(he->ih_name);
|
||||
he->ih_id = id;
|
||||
- memcpy(he->ih_name, name, namelen);
|
||||
- he->ih_name[namelen] = '\0';
|
||||
+ memcpy(str, name, namelen);
|
||||
+ str[namelen] = '\0';
|
||||
+ he->ih_name = str;
|
||||
he->ih_namelen = namelen;
|
||||
he->ih_expires = jiffies + nfs_idmap_cache_timeout;
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
From 350268c1de71490d5e803a81e609191034a55560 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Courbon <thcourbon@gmail.com>
|
||||
Date: Wed, 20 Jul 2011 22:57:44 +0200
|
||||
Subject: [PATCH] Platform: fix samsung-laptop DMI identification for
|
||||
N150/N210/220/N230
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Some samsung latop of the N150/N2{10,20,30} serie are badly detected by the samsung-laptop platform driver, see bug # 36082.
|
||||
It appears that N230 identifies itself as N150/N210/N220/N230 whereas the other identify themselves as N150/N210/220.
|
||||
This patch attemtp fix #36082 allowing correct identification for all the said netbook model.
|
||||
|
||||
Reported-by: Daniel Eklöf <daniel@ekloef.se>
|
||||
Signed-off-by: Thomas Courbon <thcourbon@gmail.com>
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
---
|
||||
drivers/platform/x86/samsung-laptop.c | 10 ++++++++++
|
||||
1 files changed, 10 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
|
||||
index d347116..1658575 100644
|
||||
--- a/drivers/platform/x86/samsung-laptop.c
|
||||
+++ b/drivers/platform/x86/samsung-laptop.c
|
||||
@@ -601,6 +601,16 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = {
|
||||
.callback = dmi_check_cb,
|
||||
},
|
||||
{
|
||||
+ .ident = "N150/N210/N220",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR,
|
||||
+ "SAMSUNG ELECTRONICS CO., LTD."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220"),
|
||||
+ },
|
||||
+ .callback = dmi_check_cb,
|
||||
+ },
|
||||
+ {
|
||||
.ident = "N150/N210/N220/N230",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR,
|
||||
--
|
||||
1.7.6
|
||||
|
93
TODO
93
TODO
|
@ -1,57 +1,33 @@
|
|||
# Put stuff likely to go upstream (in decreasing likelyhood) at the top.
|
||||
#
|
||||
|
||||
* linux-2.6-firewire-git-update.patch
|
||||
perpetual updates from git trees.
|
||||
|
||||
* linux-2.6-compile-fixes.patch
|
||||
* linux-2.6-hotfixes.patch
|
||||
Empty
|
||||
|
||||
* linux-2.6-build-nonintconfig.patch
|
||||
* linux-2.6-debug-nmi-timeout.patch
|
||||
* linux-2.6-debug-spinlock-taint.patch
|
||||
* linux-2.6-debug-taint-vm.patch
|
||||
* linux-2.6-debug-vm-would-have-oomkilled.patch
|
||||
TODO: Push upstream
|
||||
|
||||
* linux-2.6-acpi-video-dos.patch
|
||||
* linux-2.6-defaults-acpi-video.patch
|
||||
* linux-2.6-defaults-aspm.patch
|
||||
Fedora policy decisions
|
||||
Turn into CONFIG_ options and upstream ?
|
||||
|
||||
* linux-2.6-crash-driver.patch
|
||||
Unlikely to go upstream.
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=492803
|
||||
|
||||
* linux-2.6-debug-always-inline-kzalloc.patch
|
||||
Sent upstream Sep 25 2008
|
||||
|
||||
* linux-2.6-debug-sizeof-structs.patch
|
||||
Fedora local debug stuff.
|
||||
|
||||
* linux-2.6-utrace.patch
|
||||
utrace
|
||||
|
||||
* linux-2.6-defaults-pci_no_msi.patch
|
||||
Fedora local choices uninteresting to upstream
|
||||
|
||||
* linux-2.6-input-kill-stupid-messages.patch
|
||||
* linux-2.6-silence-acpi-blacklist.patch
|
||||
* linux-2.6-silence-fbcon-logo.patch
|
||||
* linux-2.6-silence-noise.patch
|
||||
Fedora local 'hush' patches. (Some will go upstream next time)
|
||||
|
||||
* linux-2.6-execshield.patch
|
||||
Not interesting to upstream.
|
||||
* linux-2.6-makefile-after_link.patch
|
||||
Rolandware that is used by the debuginfo generation.
|
||||
Possibly upstreamable ?
|
||||
|
||||
* lirc-2.6.33.patch
|
||||
* hdpvr-ir-enable.patch
|
||||
jarod working on upstreaming
|
||||
* linux-2.6.29-sparc-IOC_TYPECHECK.patch
|
||||
Responsible: Spot/Dennis.
|
||||
|
||||
* linux-2.6-selinux-mprotect-checks.patch
|
||||
* linux-2.6-sparc-selinux-mprotect-checks.patch
|
||||
Newer version might go upstream at some point.
|
||||
* linux-2.6-v4l-dvb-uvcvideo-update.patch
|
||||
Responsible: Hans.
|
||||
|
||||
* linux-2.6-serial-460800.patch
|
||||
Probably not upstreamable.
|
||||
|
@ -59,3 +35,56 @@
|
|||
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=126403
|
||||
http://lkml.org/lkml/2006/8/2/208
|
||||
|
||||
* linux-2.6-crash-driver.patch
|
||||
Unlikely to go upstream.
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=492803
|
||||
|
||||
* linux-2.6-32bit-mmap-exec-randomization.patch
|
||||
One half of the remaining exec-shield diff.
|
||||
davej bugged Ingo again on Jun 17 2011 about upstreaming.
|
||||
|
||||
* runtime_pm_fixups.patch
|
||||
* linux-2.6-usb-pci-autosuspend.patch
|
||||
* linux-2.6-enable-more-pci-autosuspend.patch
|
||||
* linux-2.6-acpi-debug-infinite-loop.patch
|
||||
* acpi-ec-add-delay-before-write.patch
|
||||
Responsible: mjg59
|
||||
|
||||
* linux-2.6-v4l-dvb-experimental.patch
|
||||
* linux-2.6-v4l-dvb-fixes.patch
|
||||
* linux-2.6-v4l-dvb-update.patch
|
||||
Empty.
|
||||
|
||||
* fix_xen_guest_on_old_EC2.patch
|
||||
Ugly for upstream. It's a hack to make old HV's work optimally.
|
||||
Eventually we can drop it, but probably not until fixed HV's
|
||||
are commonplace. (When?)
|
||||
Responsible: Justin.
|
||||
|
||||
* linux-2.6-i386-nx-emulation.patch
|
||||
The ugly segment hack part of exec-shield that Linus hates.
|
||||
Unlikely to ever go upstream.
|
||||
|
||||
* linux-2.6-e1000-ich9-montevina.patch
|
||||
Intel hates it. Davej has an SDV that needs it.
|
||||
Low maintenence, and worth hanging onto until it gets replaced
|
||||
with something that fails in a different way.
|
||||
|
||||
--------
|
||||
currently undocumented:
|
||||
|
||||
add-appleir-usb-driver.patch
|
||||
die-floppy-die.patch
|
||||
disable-i8042-check-on-apple-mac.patch
|
||||
dmar-disable-when-ricoh-multifunction.patch
|
||||
drm-intel-make-lvds-work.patch
|
||||
drm-intel-next.patch
|
||||
drm-nouveau-updates.patch
|
||||
hda_intel-prealloc-4mb-dmabuffer.patch
|
||||
linux-2.6.30-no-pcspkr-modalias.patch
|
||||
linux-2.6-input-kill-stupid-messages.patch
|
||||
linux-2.6-intel-iommu-igfx.patch
|
||||
linux-2.6-upstream-reverts.patch
|
||||
linux-3.0-fix-uts-release.patch
|
||||
neuter_intel_microcode_load.patch
|
||||
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
https://bugzilla.kernel.org/show_bug.cgi?id=14733#c41
|
||||
|
||||
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
|
||||
index 27e0b92..09fbb69 100644
|
||||
--- a/drivers/acpi/ec.c
|
||||
+++ b/drivers/acpi/ec.c
|
||||
@@ -226,6 +226,7 @@ static int ec_poll(struct acpi_ec *ec)
|
||||
if (ec_transaction_done(ec))
|
||||
return 0;
|
||||
} else {
|
||||
+ msleep(1);
|
||||
if (wait_event_timeout(ec->wait,
|
||||
ec_transaction_done(ec),
|
||||
msecs_to_jiffies(1)))
|
||||
@@ -233,8 +234,8 @@ static int ec_poll(struct acpi_ec *ec)
|
||||
}
|
||||
advance_transaction(ec, acpi_ec_read_status(ec));
|
||||
} while (time_before(jiffies, delay));
|
||||
- if (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF)
|
||||
- break;
|
||||
+// if (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF)
|
||||
+// break;
|
||||
pr_debug(PREFIX "controller reset, restart transaction\n");
|
||||
spin_lock_irqsave(&ec->curr_lock, flags);
|
||||
start_transaction(ec);
|
||||
@@ -271,15 +272,24 @@ static int ec_check_ibf0(struct acpi_ec *ec)
|
||||
return (status & ACPI_EC_FLAG_IBF) == 0;
|
||||
}
|
||||
|
||||
+/* try to clean input buffer with burst_disable transaction */
|
||||
+static int acpi_ec_clean_buffer(struct acpi_ec *ec)
|
||||
+{
|
||||
+ struct transaction t = {.command = ACPI_EC_BURST_DISABLE,
|
||||
+ .wdata = NULL, .rdata = NULL,
|
||||
+ .wlen = 0, .rlen = 0};
|
||||
+ return acpi_ec_transaction_unlocked(ec, &t);
|
||||
+}
|
||||
+
|
||||
static int ec_wait_ibf0(struct acpi_ec *ec)
|
||||
{
|
||||
unsigned long delay = jiffies + msecs_to_jiffies(ec_delay);
|
||||
/* interrupt wait manually if GPE mode is not active */
|
||||
while (time_before(jiffies, delay))
|
||||
if (wait_event_timeout(ec->wait, ec_check_ibf0(ec),
|
||||
msecs_to_jiffies(1)))
|
||||
return 0;
|
||||
- return -ETIME;
|
||||
+ return acpi_ec_clean_buffer(ec);
|
||||
}
|
||||
|
||||
static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
|
|
@ -0,0 +1,38 @@
|
|||
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
|
||||
index 3ed80b2..17fc718 100644
|
||||
--- a/drivers/acpi/sleep.c
|
||||
+++ b/drivers/acpi/sleep.c
|
||||
@@ -390,6 +390,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
|
||||
},
|
||||
{
|
||||
.callback = init_nvs_nosave,
|
||||
+ .ident = "Sony Vaio VGN-FW21E",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW21E"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .callback = init_nvs_nosave,
|
||||
.ident = "Sony Vaio VGN-SR11M",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
||||
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
|
||||
index 0e46fae..6d9a3ab 100644
|
||||
--- a/drivers/acpi/sleep.c
|
||||
+++ b/drivers/acpi/sleep.c
|
||||
@@ -398,6 +398,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
|
||||
},
|
||||
{
|
||||
.callback = init_nvs_nosave,
|
||||
+ .ident = "Sony Vaio VPCEB17FX",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB17FX"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .callback = init_nvs_nosave,
|
||||
.ident = "Sony Vaio VGN-SR11M",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
|
@ -1,102 +0,0 @@
|
|||
Improve our reboot handling for compatibility with Windows. Upstream in .38?
|
||||
|
||||
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
|
||||
index c495aa8..c770e66 100644
|
||||
--- a/arch/x86/kernel/reboot.c
|
||||
+++ b/arch/x86/kernel/reboot.c
|
||||
@@ -34,7 +34,7 @@ EXPORT_SYMBOL(pm_power_off);
|
||||
|
||||
static const struct desc_ptr no_idt = {};
|
||||
static int reboot_mode;
|
||||
-enum reboot_type reboot_type = BOOT_KBD;
|
||||
+enum reboot_type reboot_type = BOOT_ACPI;
|
||||
int reboot_force;
|
||||
|
||||
#if defined(CONFIG_X86_32) && defined(CONFIG_SMP)
|
||||
@@ -538,9 +538,23 @@ void __attribute__((weak)) mach_reboot_fixups(void)
|
||||
{
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Windows does the following on reboot:
|
||||
+ * 1) If the FADT has the ACPI reboot register flag set, try it
|
||||
+ * 2) If still alive, write to the keyboard controller
|
||||
+ * 3) If still alive, write to the ACPI reboot register again
|
||||
+ * 4) Ig still alive, write to the keyboard controller again
|
||||
+ *
|
||||
+ * If the machine is still alive at this stage, it gives up. We default to
|
||||
+ * following the same pattern, except that if we're still alive after (4) we'll
|
||||
+ * try to force a triple fault and then cycle between hitting the keyboard
|
||||
+ * controller and doing that
|
||||
+ */
|
||||
static void native_machine_emergency_restart(void)
|
||||
{
|
||||
int i;
|
||||
+ int attempt = 0;
|
||||
+ int orig_reboot_type = reboot_type;
|
||||
|
||||
if (reboot_emergency)
|
||||
emergency_vmx_disable_all();
|
||||
@@ -562,6 +576,13 @@ static void native_machine_emergency_restart(void)
|
||||
outb(0xfe, 0x64); /* pulse reset low */
|
||||
udelay(50);
|
||||
}
|
||||
+ if (attempt == 0 && orig_reboot_type == BOOT_ACPI) {
|
||||
+ attempt = 1;
|
||||
+ reboot_type = BOOT_ACPI;
|
||||
+ } else {
|
||||
+ reboot_type = BOOT_TRIPLE;
|
||||
+ }
|
||||
+ break;
|
||||
|
||||
case BOOT_TRIPLE:
|
||||
load_idt(&no_idt);
|
||||
diff --git a/drivers/acpi/acpica/hwxface.c b/drivers/acpi/acpica/hwxface.c
|
||||
index 50cc3be..c6a4e63 100644
|
||||
--- a/drivers/acpi/acpica/hwxface.c
|
||||
+++ b/drivers/acpi/acpica/hwxface.c
|
||||
@@ -82,12 +82,11 @@ acpi_status acpi_reset(void)
|
||||
/*
|
||||
* For I/O space, write directly to the OSL. This bypasses the port
|
||||
* validation mechanism, which may block a valid write to the reset
|
||||
- * register.
|
||||
+ * register. Spec section 4.7.3.6 requires register width to be 8.
|
||||
*/
|
||||
status =
|
||||
acpi_os_write_port((acpi_io_address) reset_reg->address,
|
||||
- acpi_gbl_FADT.reset_value,
|
||||
- reset_reg->bit_width);
|
||||
+ acpi_gbl_FADT.reset_value, 8);
|
||||
} else {
|
||||
/* Write the reset value to the reset register */
|
||||
|
||||
diff --git a/drivers/acpi/reboot.c b/drivers/acpi/reboot.c
|
||||
index 93f9114..a6c77e8b 100644
|
||||
--- a/drivers/acpi/reboot.c
|
||||
+++ b/drivers/acpi/reboot.c
|
||||
@@ -15,9 +15,15 @@ void acpi_reboot(void)
|
||||
|
||||
rr = &acpi_gbl_FADT.reset_register;
|
||||
|
||||
- /* Is the reset register supported? */
|
||||
- if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER) ||
|
||||
- rr->bit_width != 8 || rr->bit_offset != 0)
|
||||
+ /* ACPI reset register was only introduced with v2 of the FADT */
|
||||
+
|
||||
+ if (acpi_gbl_FADT.header.revision < 2)
|
||||
+ return;
|
||||
+
|
||||
+ /* Is the reset register supported? The spec says we should be
|
||||
+ * checking the bit width and bit offset, but Windows ignores
|
||||
+ * these fields */
|
||||
+ if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER))
|
||||
return;
|
||||
|
||||
reset_value = acpi_gbl_FADT.reset_value;
|
||||
@@ -45,6 +51,4 @@ void acpi_reboot(void)
|
||||
acpi_reset();
|
||||
break;
|
||||
}
|
||||
- /* Wait ten seconds */
|
||||
- acpi_os_stall(10000000);
|
||||
}
|
|
@ -1,702 +0,0 @@
|
|||
From e11e9e78799a7641fe0dc5289f35f2604a4b71a3 Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Sun, 17 Jan 2010 00:40:15 +0000
|
||||
Subject: [PATCH] Input: add appleir USB driver
|
||||
|
||||
This driver was originally written by James McKenzie, updated by
|
||||
Greg Kroah-Hartman, further updated by myself, with suspend support
|
||||
added.
|
||||
|
||||
More recent versions of the IR receiver are also supported through
|
||||
a patch by Alex Karpenko. The patch also adds support for the 2nd
|
||||
and 5th generation of the controller, and the menu key on newer
|
||||
brushed metal remotes.
|
||||
|
||||
Tested on a MacbookAir1,1
|
||||
|
||||
Signed-off-by: Bastien Nocera <hadess@hadess.net>
|
||||
---
|
||||
Documentation/input/appleir.txt | 46 ++++
|
||||
drivers/hid/hid-apple.c | 4 -
|
||||
drivers/hid/hid-core.c | 7 +-
|
||||
drivers/hid/hid-ids.h | 5 +-
|
||||
drivers/input/misc/Kconfig | 13 +
|
||||
drivers/input/misc/Makefile | 1 +
|
||||
drivers/input/misc/appleir.c | 519 +++++++++++++++++++++++++++++++++++++++
|
||||
7 files changed, 588 insertions(+), 7 deletions(-)
|
||||
create mode 100644 Documentation/input/appleir.txt
|
||||
create mode 100644 drivers/input/misc/appleir.c
|
||||
|
||||
diff --git a/Documentation/input/appleir.txt b/Documentation/input/appleir.txt
|
||||
new file mode 100644
|
||||
index 0000000..db637fb
|
||||
--- /dev/null
|
||||
+++ b/Documentation/input/appleir.txt
|
||||
@@ -0,0 +1,46 @@
|
||||
+Apple IR receiver Driver (appleir)
|
||||
+----------------------------------
|
||||
+ Copyright (C) 2009 Bastien Nocera <hadess@hadess.net>
|
||||
+
|
||||
+The appleir driver is a kernel input driver to handle Apple's IR
|
||||
+receivers (and associated remotes) in the kernel.
|
||||
+
|
||||
+The driver is an input driver which only handles "official" remotes
|
||||
+as built and sold by Apple.
|
||||
+
|
||||
+Authors
|
||||
+-------
|
||||
+
|
||||
+James McKenzie (original driver)
|
||||
+Alex Karpenko (05ac:8242 support)
|
||||
+Greg Kroah-Hartman (cleanups and original submission)
|
||||
+Bastien Nocera (further cleanups, brushed metal "enter"
|
||||
+button support and suspend support)
|
||||
+
|
||||
+Supported hardware
|
||||
+------------------
|
||||
+
|
||||
+- All Apple laptops and desktops from 2005 onwards, except:
|
||||
+ - the unibody Macbook (2009)
|
||||
+ - Mac Pro (all versions)
|
||||
+- Apple TV (all revisions prior to September 2010)
|
||||
+
|
||||
+The remote will only support the 6 (old white) or 7 (brushed metal) buttons
|
||||
+of the remotes as sold by Apple. See the next section if you want to use
|
||||
+other remotes or want to use lirc with the device instead of the kernel driver.
|
||||
+
|
||||
+Using lirc (native) instead of the kernel driver
|
||||
+------------------------------------------------
|
||||
+
|
||||
+First, you will need to disable the kernel driver for the receiver.
|
||||
+
|
||||
+This can be achieved by passing quirks to the usbhid driver.
|
||||
+The quirk line would be:
|
||||
+usbhid.quirks=0x05ac:0x8242:0x40000010
|
||||
+
|
||||
+With 0x05ac being the vendor ID (Apple, you shouldn't need to change this)
|
||||
+With 0x8242 being the product ID (check the output of lsusb for your hardware)
|
||||
+And 0x10 being "HID_QUIRK_HIDDEV_FORCE" and 0x40000000 being "HID_QUIRK_NO_IGNORE"
|
||||
+
|
||||
+This should force the creation of a hiddev device for the receiver, and
|
||||
+make it usable under lirc.
|
||||
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
|
||||
index bba05d0..0059d5a 100644
|
||||
--- a/drivers/hid/hid-apple.c
|
||||
+++ b/drivers/hid/hid-apple.c
|
||||
@@ -361,10 +361,6 @@ static void apple_remove(struct hid_device *hdev)
|
||||
}
|
||||
|
||||
static const struct hid_device_id apple_devices[] = {
|
||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL),
|
||||
- .driver_data = APPLE_HIDDEV | APPLE_IGNORE_HIDINPUT },
|
||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4),
|
||||
- .driver_data = APPLE_HIDDEV | APPLE_IGNORE_HIDINPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE),
|
||||
.driver_data = APPLE_MIGHTYMOUSE | APPLE_INVERT_HWHEEL },
|
||||
|
||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
||||
index baa25ad..abc5bd7 100644
|
||||
--- a/drivers/hid/hid-core.c
|
||||
+++ b/drivers/hid/hid-core.c
|
||||
@@ -1244,8 +1244,6 @@ static const struct hid_device_id hid_blacklist[] = {
|
||||
#if defined(CONFIG_HID_ACRUX_FF) || defined(CONFIG_HID_ACRUX_FF_MODULE)
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0x0802) },
|
||||
#endif
|
||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
|
||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) },
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) },
|
||||
@@ -1577,6 +1575,11 @@ static const struct hid_device_id hid_ignore_list[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL2) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL3) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL5) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM)},
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM2)},
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) },
|
||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
||||
index 11af537..360a5ca 100644
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -100,8 +100,11 @@
|
||||
#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
|
||||
#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
|
||||
#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
|
||||
-#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL2 0x1440
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL3 0x8241
|
||||
#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL5 0x8243
|
||||
|
||||
#define USB_VENDOR_ID_ASUS 0x0486
|
||||
#define USB_DEVICE_ID_ASUS_T91MT 0x0185
|
||||
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
|
||||
index 60de906..2f2f2e7 100644
|
||||
--- a/drivers/input/misc/Kconfig
|
||||
+++ b/drivers/input/misc/Kconfig
|
||||
@@ -209,6 +209,19 @@ config INPUT_KEYSPAN_REMOTE
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called keyspan_remote.
|
||||
|
||||
+config INPUT_APPLEIR
|
||||
+ tristate "Apple infrared receiver (built in)"
|
||||
+ depends on USB_ARCH_HAS_HCD
|
||||
+ select USB
|
||||
+ help
|
||||
+ Say Y here if you want to use a Apple infrared remote control. All
|
||||
+ the Apple computers from 2005 onwards include such a port, except
|
||||
+ the unibody Macbook (2009), and Mac Pros. This receiver is also
|
||||
+ used in the Apple TV set-top box prior to the 2010 model.
|
||||
+
|
||||
+ To compile this driver as a module, choose M here: the module will
|
||||
+ be called appleir.
|
||||
+
|
||||
config INPUT_POWERMATE
|
||||
tristate "Griffin PowerMate and Contour Jog support"
|
||||
depends on USB_ARCH_HAS_HCD
|
||||
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
|
||||
index 1fe1f6c..d5ef2b9 100644
|
||||
--- a/drivers/input/misc/Makefile
|
||||
+++ b/drivers/input/misc/Makefile
|
||||
@@ -13,6 +13,7 @@ obj-$(CONFIG_INPUT_ADXL34X) += adxl34x.o
|
||||
obj-$(CONFIG_INPUT_ADXL34X_I2C) += adxl34x-i2c.o
|
||||
obj-$(CONFIG_INPUT_ADXL34X_SPI) += adxl34x-spi.o
|
||||
obj-$(CONFIG_INPUT_APANEL) += apanel.o
|
||||
+obj-$(CONFIG_INPUT_APPLEIR) += appleir.o
|
||||
obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o
|
||||
obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o
|
||||
obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
|
||||
diff --git a/drivers/input/misc/appleir.c b/drivers/input/misc/appleir.c
|
||||
new file mode 100644
|
||||
index 0000000..3817a3c
|
||||
--- /dev/null
|
||||
+++ b/drivers/input/misc/appleir.c
|
||||
@@ -0,0 +1,519 @@
|
||||
+/*
|
||||
+ * appleir: USB driver for the apple ir device
|
||||
+ *
|
||||
+ * Original driver written by James McKenzie
|
||||
+ * Ported to recent 2.6 kernel versions by Greg Kroah-Hartman <gregkh@suse.de>
|
||||
+ *
|
||||
+ * Copyright (C) 2006 James McKenzie
|
||||
+ * Copyright (C) 2008 Greg Kroah-Hartman <greg@kroah.com>
|
||||
+ * Copyright (C) 2008 Novell Inc.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License as published by the Free
|
||||
+ * Software Foundation, version 2.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/input.h>
|
||||
+#include <linux/usb/input.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/usb.h>
|
||||
+#include <linux/usb/input.h>
|
||||
+#include <asm/unaligned.h>
|
||||
+#include <asm/byteorder.h>
|
||||
+
|
||||
+#define DRIVER_VERSION "v1.2"
|
||||
+#define DRIVER_AUTHOR "James McKenzie"
|
||||
+#define DRIVER_DESC "Apple infrared receiver driver"
|
||||
+#define DRIVER_LICENSE "GPL"
|
||||
+
|
||||
+MODULE_AUTHOR(DRIVER_AUTHOR);
|
||||
+MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
+MODULE_LICENSE(DRIVER_LICENSE);
|
||||
+
|
||||
+#define USB_VENDOR_ID_APPLE 0x05ac
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL2 0x1440
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL3 0x8241
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
|
||||
+#define USB_DEVICE_ID_APPLE_IRCONTROL5 0x8243
|
||||
+
|
||||
+#define URB_SIZE 32
|
||||
+
|
||||
+#define MAX_KEYS 9
|
||||
+#define MAX_KEYS_MASK (MAX_KEYS - 1)
|
||||
+
|
||||
+#define dbginfo(dev, format, arg...) do { if (debug) dev_info(dev , format , ## arg); } while (0)
|
||||
+
|
||||
+static int debug;
|
||||
+module_param(debug, int, 0644);
|
||||
+MODULE_PARM_DESC(debug, "Enable extra debug messages and information");
|
||||
+
|
||||
+/* I have two devices both of which report the following */
|
||||
+/* 25 87 ee 83 0a + */
|
||||
+/* 25 87 ee 83 0c - */
|
||||
+/* 25 87 ee 83 09 << */
|
||||
+/* 25 87 ee 83 06 >> */
|
||||
+/* 25 87 ee 83 05 >" */
|
||||
+/* 25 87 ee 83 03 menu */
|
||||
+/* 26 00 00 00 00 for key repeat*/
|
||||
+
|
||||
+/* Thomas Glanzmann reports the following responses */
|
||||
+/* 25 87 ee ca 0b + */
|
||||
+/* 25 87 ee ca 0d - */
|
||||
+/* 25 87 ee ca 08 << */
|
||||
+/* 25 87 ee ca 07 >> */
|
||||
+/* 25 87 ee ca 04 >" */
|
||||
+/* 25 87 ee ca 02 menu */
|
||||
+/* 26 00 00 00 00 for key repeat*/
|
||||
+/* He also observes the following event sometimes */
|
||||
+/* sent after a key is release, which I interpret */
|
||||
+/* as a flat battery message */
|
||||
+/* 25 87 e0 ca 06 flat battery */
|
||||
+
|
||||
+/* Alexandre Karpenko reports the following responses for Device ID 0x8242 */
|
||||
+/* 25 87 ee 47 0b + */
|
||||
+/* 25 87 ee 47 0d - */
|
||||
+/* 25 87 ee 47 08 << */
|
||||
+/* 25 87 ee 47 07 >> */
|
||||
+/* 25 87 ee 47 04 >" */
|
||||
+/* 25 87 ee 47 02 menu */
|
||||
+/* 26 87 ee 47 ** for key repeat (** is the code of the key being held) */
|
||||
+
|
||||
+/* Bastien Nocera's "new" remote */
|
||||
+/* 25 87 ee 91 5f followed by
|
||||
+ * 25 87 ee 91 05 gives you >"
|
||||
+ *
|
||||
+ * 25 87 ee 91 5c followed by
|
||||
+ * 25 87 ee 91 05 gives you the middle button */
|
||||
+
|
||||
+static const unsigned short appleir_key_table[] = {
|
||||
+ KEY_RESERVED,
|
||||
+ KEY_MENU,
|
||||
+ KEY_PLAYPAUSE,
|
||||
+ KEY_FORWARD,
|
||||
+ KEY_BACK,
|
||||
+ KEY_VOLUMEUP,
|
||||
+ KEY_VOLUMEDOWN,
|
||||
+ KEY_ENTER,
|
||||
+ KEY_RESERVED,
|
||||
+};
|
||||
+
|
||||
+struct appleir {
|
||||
+ struct input_dev *input_dev;
|
||||
+ unsigned short keymap[ARRAY_SIZE(appleir_key_table)];
|
||||
+ u8 *data;
|
||||
+ dma_addr_t dma_buf;
|
||||
+ struct usb_device *usbdev;
|
||||
+ unsigned int flags;
|
||||
+ struct urb *urb;
|
||||
+ struct timer_list key_up_timer;
|
||||
+ int current_key;
|
||||
+ int prev_key_idx;
|
||||
+ char phys[32];
|
||||
+};
|
||||
+
|
||||
+static DEFINE_MUTEX(appleir_mutex);
|
||||
+
|
||||
+enum {
|
||||
+ APPLEIR_OPENED = 0x1,
|
||||
+ APPLEIR_SUSPENDED = 0x2,
|
||||
+};
|
||||
+
|
||||
+static struct usb_device_id appleir_ids[] = {
|
||||
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
|
||||
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL2) },
|
||||
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL3) },
|
||||
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
|
||||
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL5) },
|
||||
+ {}
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(usb, appleir_ids);
|
||||
+
|
||||
+static void dump_packet(struct appleir *appleir, char *msg, u8 *data, int len)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ printk(KERN_ERR "appleir: %s (%d bytes)", msg, len);
|
||||
+
|
||||
+ for (i = 0; i < len; ++i)
|
||||
+ printk(" %02x", data[i]);
|
||||
+ printk(" (should be command %d)\n", (data[4] >> 1) & MAX_KEYS_MASK);
|
||||
+}
|
||||
+
|
||||
+static int get_key(int data)
|
||||
+{
|
||||
+ switch (data) {
|
||||
+ case 0x02:
|
||||
+ case 0x03:
|
||||
+ /* menu */
|
||||
+ return 1;
|
||||
+ case 0x04:
|
||||
+ case 0x05:
|
||||
+ /* >" */
|
||||
+ return 2;
|
||||
+ case 0x06:
|
||||
+ case 0x07:
|
||||
+ /* >> */
|
||||
+ return 3;
|
||||
+ case 0x08:
|
||||
+ case 0x09:
|
||||
+ /* << */
|
||||
+ return 4;
|
||||
+ case 0x0a:
|
||||
+ case 0x0b:
|
||||
+ /* + */
|
||||
+ return 5;
|
||||
+ case 0x0c:
|
||||
+ case 0x0d:
|
||||
+ /* - */
|
||||
+ return 6;
|
||||
+ case 0x5c:
|
||||
+ /* Middle button, on newer remotes,
|
||||
+ * part of a 2 packet-command */
|
||||
+ return -7;
|
||||
+ default:
|
||||
+ return -1;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void key_up(struct appleir *appleir, int key)
|
||||
+{
|
||||
+ dbginfo(&appleir->input_dev->dev, "key %d up\n", key);
|
||||
+ input_report_key(appleir->input_dev, key, 0);
|
||||
+ input_sync(appleir->input_dev);
|
||||
+}
|
||||
+
|
||||
+static void key_down(struct appleir *appleir, int key)
|
||||
+{
|
||||
+ dbginfo(&appleir->input_dev->dev, "key %d down\n", key);
|
||||
+ input_report_key(appleir->input_dev, key, 1);
|
||||
+ input_sync(appleir->input_dev);
|
||||
+}
|
||||
+
|
||||
+static void battery_flat(struct appleir *appleir)
|
||||
+{
|
||||
+ dev_err(&appleir->input_dev->dev, "possible flat battery?\n");
|
||||
+}
|
||||
+
|
||||
+static void key_up_tick(unsigned long data)
|
||||
+{
|
||||
+ struct appleir *appleir = (struct appleir *)data;
|
||||
+
|
||||
+ if (appleir->current_key) {
|
||||
+ key_up(appleir, appleir->current_key);
|
||||
+ appleir->current_key = 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void new_data(struct appleir *appleir, u8 *data, int len)
|
||||
+{
|
||||
+ static const u8 keydown[] = { 0x25, 0x87, 0xee };
|
||||
+ static const u8 keyrepeat[] = { 0x26, };
|
||||
+ static const u8 flatbattery[] = { 0x25, 0x87, 0xe0 };
|
||||
+
|
||||
+ if (debug)
|
||||
+ dump_packet(appleir, "received", data, len);
|
||||
+
|
||||
+ if (len != 5)
|
||||
+ return;
|
||||
+
|
||||
+ if (!memcmp(data, keydown, sizeof(keydown))) {
|
||||
+ int index;
|
||||
+
|
||||
+ /* If we already have a key down, take it up before marking
|
||||
+ this one down */
|
||||
+ if (appleir->current_key)
|
||||
+ key_up(appleir, appleir->current_key);
|
||||
+
|
||||
+ /* Handle dual packet commands */
|
||||
+ if (appleir->prev_key_idx > 0)
|
||||
+ index = appleir->prev_key_idx;
|
||||
+ else
|
||||
+ index = get_key(data[4]);
|
||||
+
|
||||
+ if (index > 0) {
|
||||
+ appleir->current_key = appleir->keymap[index];
|
||||
+
|
||||
+ key_down(appleir, appleir->current_key);
|
||||
+ /* Remote doesn't do key up, either pull them up, in the test
|
||||
+ above, or here set a timer which pulls them up after 1/8 s */
|
||||
+ mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
|
||||
+ appleir->prev_key_idx = 0;
|
||||
+ return;
|
||||
+ } else if (index == -7) {
|
||||
+ /* Remember key for next packet */
|
||||
+ appleir->prev_key_idx = 0 - index;
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ appleir->prev_key_idx = 0;
|
||||
+
|
||||
+ if (!memcmp(data, keyrepeat, sizeof(keyrepeat))) {
|
||||
+ key_down(appleir, appleir->current_key);
|
||||
+ /* Remote doesn't do key up, either pull them up, in the test
|
||||
+ above, or here set a timer which pulls them up after 1/8 s */
|
||||
+ mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!memcmp(data, flatbattery, sizeof(flatbattery))) {
|
||||
+ battery_flat(appleir);
|
||||
+ /* Fall through */
|
||||
+ }
|
||||
+
|
||||
+ dump_packet(appleir, "unknown packet", data, len);
|
||||
+}
|
||||
+
|
||||
+static void appleir_urb(struct urb *urb)
|
||||
+{
|
||||
+ struct appleir *appleir = urb->context;
|
||||
+ int status = urb->status;
|
||||
+ int retval;
|
||||
+
|
||||
+ switch (status) {
|
||||
+ case 0:
|
||||
+ new_data(appleir, urb->transfer_buffer, urb->actual_length);
|
||||
+ break;
|
||||
+ case -ECONNRESET:
|
||||
+ case -ENOENT:
|
||||
+ case -ESHUTDOWN:
|
||||
+ /* This urb is terminated, clean up */
|
||||
+ dbginfo(&appleir->input_dev->dev, "%s - urb shutting down with status: %d", __func__,
|
||||
+ urb->status);
|
||||
+ return;
|
||||
+ default:
|
||||
+ dbginfo(&appleir->input_dev->dev, "%s - nonzero urb status received: %d", __func__,
|
||||
+ urb->status);
|
||||
+ }
|
||||
+
|
||||
+ retval = usb_submit_urb(urb, GFP_ATOMIC);
|
||||
+ if (retval)
|
||||
+ err("%s - usb_submit_urb failed with result %d", __func__,
|
||||
+ retval);
|
||||
+}
|
||||
+
|
||||
+static int appleir_open(struct input_dev *dev)
|
||||
+{
|
||||
+ struct appleir *appleir = input_get_drvdata(dev);
|
||||
+ struct usb_interface *intf = usb_ifnum_to_if(appleir->usbdev, 0);
|
||||
+ int r;
|
||||
+
|
||||
+ r = usb_autopm_get_interface(intf);
|
||||
+ if (r) {
|
||||
+ dev_err(&intf->dev,
|
||||
+ "%s(): usb_autopm_get_interface() = %d\n", __func__, r);
|
||||
+ return r;
|
||||
+ }
|
||||
+
|
||||
+ mutex_lock(&appleir_mutex);
|
||||
+
|
||||
+ if (usb_submit_urb(appleir->urb, GFP_ATOMIC)) {
|
||||
+ r = -EIO;
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ appleir->flags |= APPLEIR_OPENED;
|
||||
+
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+
|
||||
+ usb_autopm_put_interface(intf);
|
||||
+
|
||||
+ return 0;
|
||||
+fail:
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+ usb_autopm_put_interface(intf);
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
+static void appleir_close(struct input_dev *dev)
|
||||
+{
|
||||
+ struct appleir *appleir = input_get_drvdata(dev);
|
||||
+
|
||||
+ mutex_lock(&appleir_mutex);
|
||||
+
|
||||
+ if (!(appleir->flags & APPLEIR_SUSPENDED)) {
|
||||
+ usb_kill_urb(appleir->urb);
|
||||
+ del_timer_sync(&appleir->key_up_timer);
|
||||
+ }
|
||||
+
|
||||
+ appleir->flags &= ~APPLEIR_OPENED;
|
||||
+
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+}
|
||||
+
|
||||
+static int appleir_probe(struct usb_interface *intf,
|
||||
+ const struct usb_device_id *id)
|
||||
+{
|
||||
+ struct usb_device *dev = interface_to_usbdev(intf);
|
||||
+ struct usb_endpoint_descriptor *endpoint;
|
||||
+ struct appleir *appleir = NULL;
|
||||
+ struct input_dev *input_dev;
|
||||
+ int retval = -ENOMEM;
|
||||
+ int i;
|
||||
+
|
||||
+ appleir = kzalloc(sizeof(struct appleir), GFP_KERNEL);
|
||||
+ if (!appleir)
|
||||
+ goto allocfail;
|
||||
+
|
||||
+ appleir->data = usb_alloc_coherent(dev, URB_SIZE, GFP_KERNEL,
|
||||
+ &appleir->dma_buf);
|
||||
+ if (!appleir->data)
|
||||
+ goto usbfail;
|
||||
+
|
||||
+ appleir->urb = usb_alloc_urb(0, GFP_KERNEL);
|
||||
+ if (!appleir->urb)
|
||||
+ goto urbfail;
|
||||
+
|
||||
+ appleir->usbdev = dev;
|
||||
+
|
||||
+ input_dev = input_allocate_device();
|
||||
+ if (!input_dev)
|
||||
+ goto inputfail;
|
||||
+
|
||||
+ appleir->input_dev = input_dev;
|
||||
+
|
||||
+ usb_make_path(dev, appleir->phys, sizeof(appleir->phys));
|
||||
+ strlcpy(appleir->phys, "/input0", sizeof(appleir->phys));
|
||||
+
|
||||
+ input_dev->name = "Apple Infrared Remote Controller";
|
||||
+ input_dev->phys = appleir->phys;
|
||||
+ usb_to_input_id(dev, &input_dev->id);
|
||||
+ input_dev->dev.parent = &intf->dev;
|
||||
+ input_dev->keycode = appleir->keymap;
|
||||
+ input_dev->keycodesize = sizeof(unsigned short);
|
||||
+ input_dev->keycodemax = ARRAY_SIZE(appleir->keymap);
|
||||
+
|
||||
+ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
|
||||
+
|
||||
+ memcpy(appleir->keymap, appleir_key_table, sizeof(appleir->keymap));
|
||||
+ for (i = 0; i < ARRAY_SIZE(appleir_key_table); i++)
|
||||
+ set_bit(appleir->keymap[i], input_dev->keybit);
|
||||
+ clear_bit(KEY_RESERVED, input_dev->keybit);
|
||||
+
|
||||
+ input_set_drvdata(input_dev, appleir);
|
||||
+ input_dev->open = appleir_open;
|
||||
+ input_dev->close = appleir_close;
|
||||
+
|
||||
+ endpoint = &intf->cur_altsetting->endpoint[0].desc;
|
||||
+
|
||||
+ usb_fill_int_urb(appleir->urb, dev,
|
||||
+ usb_rcvintpipe(dev, endpoint->bEndpointAddress),
|
||||
+ appleir->data, 8,
|
||||
+ appleir_urb, appleir, endpoint->bInterval);
|
||||
+
|
||||
+ appleir->urb->transfer_dma = appleir->dma_buf;
|
||||
+ appleir->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
||||
+
|
||||
+ setup_timer(&appleir->key_up_timer,
|
||||
+ key_up_tick, (unsigned long) appleir);
|
||||
+
|
||||
+ retval = input_register_device(appleir->input_dev);
|
||||
+ if (retval)
|
||||
+ goto inputfail;
|
||||
+
|
||||
+ usb_set_intfdata(intf, appleir);
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+inputfail:
|
||||
+ input_free_device(appleir->input_dev);
|
||||
+
|
||||
+urbfail:
|
||||
+ usb_free_urb(appleir->urb);
|
||||
+
|
||||
+usbfail:
|
||||
+ usb_free_coherent(dev, URB_SIZE, appleir->data,
|
||||
+ appleir->dma_buf);
|
||||
+
|
||||
+allocfail:
|
||||
+ kfree(appleir);
|
||||
+
|
||||
+ return retval;
|
||||
+}
|
||||
+
|
||||
+static void appleir_disconnect(struct usb_interface *intf)
|
||||
+{
|
||||
+ struct appleir *appleir = usb_get_intfdata(intf);
|
||||
+
|
||||
+ usb_set_intfdata(intf, NULL);
|
||||
+ input_unregister_device(appleir->input_dev);
|
||||
+ usb_free_urb(appleir->urb);
|
||||
+ usb_free_coherent(interface_to_usbdev(intf), URB_SIZE,
|
||||
+ appleir->data, appleir->dma_buf);
|
||||
+ kfree(appleir);
|
||||
+}
|
||||
+
|
||||
+static int appleir_suspend(struct usb_interface *interface,
|
||||
+ pm_message_t message)
|
||||
+{
|
||||
+ struct appleir *appleir = usb_get_intfdata(interface);
|
||||
+
|
||||
+ mutex_lock(&appleir_mutex);
|
||||
+ if (appleir->flags & APPLEIR_OPENED)
|
||||
+ usb_kill_urb(appleir->urb);
|
||||
+
|
||||
+ appleir->flags |= APPLEIR_SUSPENDED;
|
||||
+
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int appleir_resume(struct usb_interface *interface)
|
||||
+{
|
||||
+ struct appleir *appleir;
|
||||
+ int r = 0;
|
||||
+
|
||||
+ appleir = usb_get_intfdata(interface);
|
||||
+
|
||||
+ mutex_lock(&appleir_mutex);
|
||||
+ if (appleir->flags & APPLEIR_OPENED) {
|
||||
+ struct usb_endpoint_descriptor *endpoint;
|
||||
+
|
||||
+ endpoint = &interface->cur_altsetting->endpoint[0].desc;
|
||||
+ usb_fill_int_urb(appleir->urb, appleir->usbdev,
|
||||
+ usb_rcvintpipe(appleir->usbdev, endpoint->bEndpointAddress),
|
||||
+ appleir->data, 8,
|
||||
+ appleir_urb, appleir, endpoint->bInterval);
|
||||
+ appleir->urb->transfer_dma = appleir->dma_buf;
|
||||
+ appleir->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
||||
+
|
||||
+ /* And reset the USB device */
|
||||
+ if (usb_submit_urb(appleir->urb, GFP_ATOMIC))
|
||||
+ r = -EIO;
|
||||
+ }
|
||||
+
|
||||
+ appleir->flags &= ~APPLEIR_SUSPENDED;
|
||||
+
|
||||
+ mutex_unlock(&appleir_mutex);
|
||||
+
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
+static struct usb_driver appleir_driver = {
|
||||
+ .name = "appleir",
|
||||
+ .probe = appleir_probe,
|
||||
+ .disconnect = appleir_disconnect,
|
||||
+ .suspend = appleir_suspend,
|
||||
+ .resume = appleir_resume,
|
||||
+ .reset_resume = appleir_resume,
|
||||
+ .id_table = appleir_ids,
|
||||
+};
|
||||
+
|
||||
+static int __init appleir_init(void)
|
||||
+{
|
||||
+ return usb_register(&appleir_driver);
|
||||
+}
|
||||
+
|
||||
+static void __exit appleir_exit(void)
|
||||
+{
|
||||
+ usb_deregister(&appleir_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(appleir_init);
|
||||
+module_exit(appleir_exit);
|
||||
--
|
||||
1.7.2.2
|
||||
|
|
@ -0,0 +1,393 @@
|
|||
commit 626cf236608505d376e4799adb4f7eb00a8594af
|
||||
Author: Hans Verkuil <hans.verkuil@cisco.com>
|
||||
Date: Fri Mar 23 15:02:27 2012 -0700
|
||||
|
||||
poll: add poll_requested_events() and poll_does_not_wait() functions
|
||||
|
||||
In some cases the poll() implementation in a driver has to do different
|
||||
things depending on the events the caller wants to poll for. An example
|
||||
is when a driver needs to start a DMA engine if the caller polls for
|
||||
POLLIN, but doesn't want to do that if POLLIN is not requested but instead
|
||||
only POLLOUT or POLLPRI is requested. This is something that can happen
|
||||
in the video4linux subsystem among others.
|
||||
|
||||
Unfortunately, the current epoll/poll/select implementation doesn't
|
||||
provide that information reliably. The poll_table_struct does have it: it
|
||||
has a key field with the event mask. But once a poll() call matches one
|
||||
or more bits of that mask any following poll() calls are passed a NULL
|
||||
poll_table pointer.
|
||||
|
||||
Also, the eventpoll implementation always left the key field at ~0 instead
|
||||
of using the requested events mask.
|
||||
|
||||
This was changed in eventpoll.c so the key field now contains the actual
|
||||
events that should be polled for as set by the caller.
|
||||
|
||||
The solution to the NULL poll_table pointer is to set the qproc field to
|
||||
NULL in poll_table once poll() matches the events, not the poll_table
|
||||
pointer itself. That way drivers can obtain the mask through a new
|
||||
poll_requested_events inline.
|
||||
|
||||
The poll_table_struct can still be NULL since some kernel code calls it
|
||||
internally (netfs_state_poll() in ./drivers/staging/pohmelfs/netfs.h). In
|
||||
that case poll_requested_events() returns ~0 (i.e. all events).
|
||||
|
||||
Very rarely drivers might want to know whether poll_wait will actually
|
||||
wait. If another earlier file descriptor in the set already matched the
|
||||
events the caller wanted to wait for, then the kernel will return from the
|
||||
select() call without waiting. This might be useful information in order
|
||||
to avoid doing expensive work.
|
||||
|
||||
A new helper function poll_does_not_wait() is added that drivers can use
|
||||
to detect this situation. This is now used in sock_poll_wait() in
|
||||
include/net/sock.h. This was the only place in the kernel that needed
|
||||
this information.
|
||||
|
||||
Drivers should no longer access any of the poll_table internals, but use
|
||||
the poll_requested_events() and poll_does_not_wait() access functions
|
||||
instead. In order to enforce that the poll_table fields are now prepended
|
||||
with an underscore and a comment was added warning against using them
|
||||
directly.
|
||||
|
||||
This required a change in unix_dgram_poll() in unix/af_unix.c which used
|
||||
the key field to get the requested events. It's been replaced by a call
|
||||
to poll_requested_events().
|
||||
|
||||
For qproc it was especially important to change its name since the
|
||||
behavior of that field changes with this patch since this function pointer
|
||||
can now be NULL when that wasn't possible in the past.
|
||||
|
||||
Any driver accessing the qproc or key fields directly will now fail to compile.
|
||||
|
||||
Some notes regarding the correctness of this patch: the driver's poll()
|
||||
function is called with a 'struct poll_table_struct *wait' argument. This
|
||||
pointer may or may not be NULL, drivers can never rely on it being one or
|
||||
the other as that depends on whether or not an earlier file descriptor in
|
||||
the select()'s fdset matched the requested events.
|
||||
|
||||
There are only three things a driver can do with the wait argument:
|
||||
|
||||
1) obtain the key field:
|
||||
|
||||
events = wait ? wait->key : ~0;
|
||||
|
||||
This will still work although it should be replaced with the new
|
||||
poll_requested_events() function (which does exactly the same).
|
||||
This will now even work better, since wait is no longer set to NULL
|
||||
unnecessarily.
|
||||
|
||||
2) use the qproc callback. This could be deadly since qproc can now be
|
||||
NULL. Renaming qproc should prevent this from happening. There are no
|
||||
kernel drivers that actually access this callback directly, BTW.
|
||||
|
||||
3) test whether wait == NULL to determine whether poll would return without
|
||||
waiting. This is no longer sufficient as the correct test is now
|
||||
wait == NULL || wait->_qproc == NULL.
|
||||
|
||||
However, the worst that can happen here is a slight performance hit in
|
||||
the case where wait != NULL and wait->_qproc == NULL. In that case the
|
||||
driver will assume that poll_wait() will actually add the fd to the set
|
||||
of waiting file descriptors. Of course, poll_wait() will not do that
|
||||
since it tests for wait->_qproc. This will not break anything, though.
|
||||
|
||||
There is only one place in the whole kernel where this happens
|
||||
(sock_poll_wait() in include/net/sock.h) and that code will be replaced
|
||||
by a call to poll_does_not_wait() in the next patch.
|
||||
|
||||
Note that even if wait->_qproc != NULL drivers cannot rely on poll_wait()
|
||||
actually waiting. The next file descriptor from the set might match the
|
||||
event mask and thus any possible waits will never happen.
|
||||
|
||||
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
|
||||
Reviewed-by: Jonathan Corbet <corbet@lwn.net>
|
||||
Reviewed-by: Al Viro <viro@zeniv.linux.org.uk>
|
||||
Cc: Davide Libenzi <davidel@xmailserver.org>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
|
||||
Cc: David Miller <davem@davemloft.net>
|
||||
Cc: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
|
||||
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
|
||||
index 4d9d3a4..ca30007 100644
|
||||
--- a/fs/eventpoll.c
|
||||
+++ b/fs/eventpoll.c
|
||||
@@ -699,9 +699,12 @@ static int ep_read_events_proc(struct eventpoll *ep, struct list_head *head,
|
||||
void *priv)
|
||||
{
|
||||
struct epitem *epi, *tmp;
|
||||
+ poll_table pt;
|
||||
|
||||
+ init_poll_funcptr(&pt, NULL);
|
||||
list_for_each_entry_safe(epi, tmp, head, rdllink) {
|
||||
- if (epi->ffd.file->f_op->poll(epi->ffd.file, NULL) &
|
||||
+ pt._key = epi->event.events;
|
||||
+ if (epi->ffd.file->f_op->poll(epi->ffd.file, &pt) &
|
||||
epi->event.events)
|
||||
return POLLIN | POLLRDNORM;
|
||||
else {
|
||||
@@ -1097,6 +1100,7 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
|
||||
/* Initialize the poll table using the queue callback */
|
||||
epq.epi = epi;
|
||||
init_poll_funcptr(&epq.pt, ep_ptable_queue_proc);
|
||||
+ epq.pt._key = event->events;
|
||||
|
||||
/*
|
||||
* Attach the item to the poll hooks and get current event bits.
|
||||
@@ -1191,6 +1195,9 @@ static int ep_modify(struct eventpoll *ep, struct epitem *epi, struct epoll_even
|
||||
{
|
||||
int pwake = 0;
|
||||
unsigned int revents;
|
||||
+ poll_table pt;
|
||||
+
|
||||
+ init_poll_funcptr(&pt, NULL);
|
||||
|
||||
/*
|
||||
* Set the new event interest mask before calling f_op->poll();
|
||||
@@ -1198,13 +1205,14 @@ static int ep_modify(struct eventpoll *ep, struct epitem *epi, struct epoll_even
|
||||
* f_op->poll() call and the new event set registering.
|
||||
*/
|
||||
epi->event.events = event->events;
|
||||
+ pt._key = event->events;
|
||||
epi->event.data = event->data; /* protected by mtx */
|
||||
|
||||
/*
|
||||
* Get current event bits. We can safely use the file* here because
|
||||
* its usage count has been increased by the caller of this function.
|
||||
*/
|
||||
- revents = epi->ffd.file->f_op->poll(epi->ffd.file, NULL);
|
||||
+ revents = epi->ffd.file->f_op->poll(epi->ffd.file, &pt);
|
||||
|
||||
/*
|
||||
* If the item is "hot" and it is not registered inside the ready
|
||||
@@ -1239,6 +1247,9 @@ static int ep_send_events_proc(struct eventpoll *ep, struct list_head *head,
|
||||
unsigned int revents;
|
||||
struct epitem *epi;
|
||||
struct epoll_event __user *uevent;
|
||||
+ poll_table pt;
|
||||
+
|
||||
+ init_poll_funcptr(&pt, NULL);
|
||||
|
||||
/*
|
||||
* We can loop without lock because we are passed a task private list.
|
||||
@@ -1251,7 +1262,8 @@ static int ep_send_events_proc(struct eventpoll *ep, struct list_head *head,
|
||||
|
||||
list_del_init(&epi->rdllink);
|
||||
|
||||
- revents = epi->ffd.file->f_op->poll(epi->ffd.file, NULL) &
|
||||
+ pt._key = epi->event.events;
|
||||
+ revents = epi->ffd.file->f_op->poll(epi->ffd.file, &pt) &
|
||||
epi->event.events;
|
||||
|
||||
/*
|
||||
diff --git a/fs/select.c b/fs/select.c
|
||||
index e782258..ecfd0b1 100644
|
||||
--- a/fs/select.c
|
||||
+++ b/fs/select.c
|
||||
@@ -223,7 +223,7 @@ static void __pollwait(struct file *filp, wait_queue_head_t *wait_address,
|
||||
get_file(filp);
|
||||
entry->filp = filp;
|
||||
entry->wait_address = wait_address;
|
||||
- entry->key = p->key;
|
||||
+ entry->key = p->_key;
|
||||
init_waitqueue_func_entry(&entry->wait, pollwake);
|
||||
entry->wait.private = pwq;
|
||||
add_wait_queue(wait_address, &entry->wait);
|
||||
@@ -386,13 +386,11 @@ get_max:
|
||||
static inline void wait_key_set(poll_table *wait, unsigned long in,
|
||||
unsigned long out, unsigned long bit)
|
||||
{
|
||||
- if (wait) {
|
||||
- wait->key = POLLEX_SET;
|
||||
- if (in & bit)
|
||||
- wait->key |= POLLIN_SET;
|
||||
- if (out & bit)
|
||||
- wait->key |= POLLOUT_SET;
|
||||
- }
|
||||
+ wait->_key = POLLEX_SET;
|
||||
+ if (in & bit)
|
||||
+ wait->_key |= POLLIN_SET;
|
||||
+ if (out & bit)
|
||||
+ wait->_key |= POLLOUT_SET;
|
||||
}
|
||||
|
||||
int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
|
||||
@@ -414,7 +412,7 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
|
||||
poll_initwait(&table);
|
||||
wait = &table.pt;
|
||||
if (end_time && !end_time->tv_sec && !end_time->tv_nsec) {
|
||||
- wait = NULL;
|
||||
+ wait->_qproc = NULL;
|
||||
timed_out = 1;
|
||||
}
|
||||
|
||||
@@ -459,17 +457,17 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
|
||||
if ((mask & POLLIN_SET) && (in & bit)) {
|
||||
res_in |= bit;
|
||||
retval++;
|
||||
- wait = NULL;
|
||||
+ wait->_qproc = NULL;
|
||||
}
|
||||
if ((mask & POLLOUT_SET) && (out & bit)) {
|
||||
res_out |= bit;
|
||||
retval++;
|
||||
- wait = NULL;
|
||||
+ wait->_qproc = NULL;
|
||||
}
|
||||
if ((mask & POLLEX_SET) && (ex & bit)) {
|
||||
res_ex |= bit;
|
||||
retval++;
|
||||
- wait = NULL;
|
||||
+ wait->_qproc = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -481,7 +479,7 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
|
||||
*rexp = res_ex;
|
||||
cond_resched();
|
||||
}
|
||||
- wait = NULL;
|
||||
+ wait->_qproc = NULL;
|
||||
if (retval || timed_out || signal_pending(current))
|
||||
break;
|
||||
if (table.error) {
|
||||
@@ -720,7 +718,7 @@ struct poll_list {
|
||||
* interested in events matching the pollfd->events mask, and the result
|
||||
* matching that mask is both recorded in pollfd->revents and returned. The
|
||||
* pwait poll_table will be used by the fd-provided poll handler for waiting,
|
||||
- * if non-NULL.
|
||||
+ * if pwait->_qproc is non-NULL.
|
||||
*/
|
||||
static inline unsigned int do_pollfd(struct pollfd *pollfd, poll_table *pwait)
|
||||
{
|
||||
@@ -738,9 +736,7 @@ static inline unsigned int do_pollfd(struct pollfd *pollfd, poll_table *pwait)
|
||||
if (file != NULL) {
|
||||
mask = DEFAULT_POLLMASK;
|
||||
if (file->f_op && file->f_op->poll) {
|
||||
- if (pwait)
|
||||
- pwait->key = pollfd->events |
|
||||
- POLLERR | POLLHUP;
|
||||
+ pwait->_key = pollfd->events|POLLERR|POLLHUP;
|
||||
mask = file->f_op->poll(file, pwait);
|
||||
}
|
||||
/* Mask out unneeded events. */
|
||||
@@ -763,7 +759,7 @@ static int do_poll(unsigned int nfds, struct poll_list *list,
|
||||
|
||||
/* Optimise the no-wait case */
|
||||
if (end_time && !end_time->tv_sec && !end_time->tv_nsec) {
|
||||
- pt = NULL;
|
||||
+ pt->_qproc = NULL;
|
||||
timed_out = 1;
|
||||
}
|
||||
|
||||
@@ -781,22 +777,22 @@ static int do_poll(unsigned int nfds, struct poll_list *list,
|
||||
for (; pfd != pfd_end; pfd++) {
|
||||
/*
|
||||
* Fish for events. If we found one, record it
|
||||
- * and kill the poll_table, so we don't
|
||||
+ * and kill poll_table->_qproc, so we don't
|
||||
* needlessly register any other waiters after
|
||||
* this. They'll get immediately deregistered
|
||||
* when we break out and return.
|
||||
*/
|
||||
if (do_pollfd(pfd, pt)) {
|
||||
count++;
|
||||
- pt = NULL;
|
||||
+ pt->_qproc = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* All waiters have already been registered, so don't provide
|
||||
- * a poll_table to them on the next loop iteration.
|
||||
+ * a poll_table->_qproc to them on the next loop iteration.
|
||||
*/
|
||||
- pt = NULL;
|
||||
+ pt->_qproc = NULL;
|
||||
if (!count) {
|
||||
count = wait->error;
|
||||
if (signal_pending(current))
|
||||
diff --git a/include/linux/poll.h b/include/linux/poll.h
|
||||
index cf40010..48fe8bc 100644
|
||||
--- a/include/linux/poll.h
|
||||
+++ b/include/linux/poll.h
|
||||
@@ -32,21 +32,46 @@ struct poll_table_struct;
|
||||
*/
|
||||
typedef void (*poll_queue_proc)(struct file *, wait_queue_head_t *, struct poll_table_struct *);
|
||||
|
||||
+/*
|
||||
+ * Do not touch the structure directly, use the access functions
|
||||
+ * poll_does_not_wait() and poll_requested_events() instead.
|
||||
+ */
|
||||
typedef struct poll_table_struct {
|
||||
- poll_queue_proc qproc;
|
||||
- unsigned long key;
|
||||
+ poll_queue_proc _qproc;
|
||||
+ unsigned long _key;
|
||||
} poll_table;
|
||||
|
||||
static inline void poll_wait(struct file * filp, wait_queue_head_t * wait_address, poll_table *p)
|
||||
{
|
||||
- if (p && wait_address)
|
||||
- p->qproc(filp, wait_address, p);
|
||||
+ if (p && p->_qproc && wait_address)
|
||||
+ p->_qproc(filp, wait_address, p);
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Return true if it is guaranteed that poll will not wait. This is the case
|
||||
+ * if the poll() of another file descriptor in the set got an event, so there
|
||||
+ * is no need for waiting.
|
||||
+ */
|
||||
+static inline bool poll_does_not_wait(const poll_table *p)
|
||||
+{
|
||||
+ return p == NULL || p->_qproc == NULL;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Return the set of events that the application wants to poll for.
|
||||
+ * This is useful for drivers that need to know whether a DMA transfer has
|
||||
+ * to be started implicitly on poll(). You typically only want to do that
|
||||
+ * if the application is actually polling for POLLIN and/or POLLOUT.
|
||||
+ */
|
||||
+static inline unsigned long poll_requested_events(const poll_table *p)
|
||||
+{
|
||||
+ return p ? p->_key : ~0UL;
|
||||
}
|
||||
|
||||
static inline void init_poll_funcptr(poll_table *pt, poll_queue_proc qproc)
|
||||
{
|
||||
- pt->qproc = qproc;
|
||||
- pt->key = ~0UL; /* all events enabled */
|
||||
+ pt->_qproc = qproc;
|
||||
+ pt->_key = ~0UL; /* all events enabled */
|
||||
}
|
||||
|
||||
struct poll_table_entry {
|
||||
diff --git a/include/net/sock.h b/include/net/sock.h
|
||||
index 04bc0b3..a6ba1f8 100644
|
||||
--- a/include/net/sock.h
|
||||
+++ b/include/net/sock.h
|
||||
@@ -1854,7 +1854,7 @@ static inline bool wq_has_sleeper(struct socket_wq *wq)
|
||||
static inline void sock_poll_wait(struct file *filp,
|
||||
wait_queue_head_t *wait_address, poll_table *p)
|
||||
{
|
||||
- if (p && wait_address) {
|
||||
+ if (!poll_does_not_wait(p) && wait_address) {
|
||||
poll_wait(filp, wait_address, p);
|
||||
/*
|
||||
* We need to be sure we are in sync with the
|
||||
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
|
||||
index eb4277c..d510353 100644
|
||||
--- a/net/unix/af_unix.c
|
||||
+++ b/net/unix/af_unix.c
|
||||
@@ -2206,7 +2206,7 @@ static unsigned int unix_dgram_poll(struct file *file, struct socket *sock,
|
||||
}
|
||||
|
||||
/* No write status requested, avoid expensive OUT tests. */
|
||||
- if (wait && !(wait->key & (POLLWRBAND | POLLWRNORM | POLLOUT)))
|
||||
+ if (!(poll_requested_events(wait) & (POLLWRBAND|POLLWRNORM|POLLOUT)))
|
||||
return mask;
|
||||
|
||||
writable = unix_writable(sk);
|
|
@ -1,688 +0,0 @@
|
|||
Various fixes to the Apple backlight driver. Upstream in .38?
|
||||
|
||||
diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
|
||||
index e54a337..fb5df46 100644
|
||||
--- a/drivers/video/backlight/Kconfig
|
||||
+++ b/drivers/video/backlight/Kconfig
|
||||
@@ -236,12 +236,12 @@ config BACKLIGHT_MAX8925
|
||||
If you have a LCD backlight connected to the WLED output of MAX8925
|
||||
WLED output, say Y here to enable this driver.
|
||||
|
||||
-config BACKLIGHT_MBP_NVIDIA
|
||||
- tristate "MacBook Pro Nvidia Backlight Driver"
|
||||
+config BACKLIGHT_APPLE
|
||||
+ tristate "Apple Backlight Driver"
|
||||
depends on X86
|
||||
help
|
||||
- If you have an Apple Macbook Pro with Nvidia graphics hardware say Y
|
||||
- to enable a driver for its backlight
|
||||
+ If you have an Intel-based Apple say Y to enable a driver for its
|
||||
+ backlight
|
||||
|
||||
config BACKLIGHT_TOSA
|
||||
tristate "Sharp SL-6000 Backlight Driver"
|
||||
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
|
||||
index 44c0f81..ebaecc0 100644
|
||||
--- a/drivers/video/backlight/Makefile
|
||||
+++ b/drivers/video/backlight/Makefile
|
||||
@@ -26,7 +26,7 @@ obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH) += cr_bllcd.o
|
||||
obj-$(CONFIG_BACKLIGHT_PWM) += pwm_bl.o
|
||||
obj-$(CONFIG_BACKLIGHT_DA903X) += da903x_bl.o
|
||||
obj-$(CONFIG_BACKLIGHT_MAX8925) += max8925_bl.o
|
||||
-obj-$(CONFIG_BACKLIGHT_MBP_NVIDIA) += mbp_nvidia_bl.o
|
||||
+obj-$(CONFIG_BACKLIGHT_APPLE) += apple_bl.o
|
||||
obj-$(CONFIG_BACKLIGHT_TOSA) += tosa_bl.o
|
||||
obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886_bl.o
|
||||
obj-$(CONFIG_BACKLIGHT_WM831X) += wm831x_bl.o
|
||||
diff --git a/drivers/video/backlight/apple_bl.c b/drivers/video/backlight/apple_bl.c
|
||||
new file mode 100644
|
||||
index 0000000..8f808c7
|
||||
--- /dev/null
|
||||
+++ b/drivers/video/backlight/apple_bl.c
|
||||
@@ -0,0 +1,240 @@
|
||||
+/*
|
||||
+ * Backlight Driver for Intel-based Apples
|
||||
+ *
|
||||
+ * Copyright (c) Red Hat <mjg@redhat.com>
|
||||
+ * Based on code from Pommed:
|
||||
+ * Copyright (C) 2006 Nicolas Boichat <nicolas @boichat.ch>
|
||||
+ * Copyright (C) 2006 Felipe Alfaro Solana <felipe_alfaro @linuxmail.org>
|
||||
+ * Copyright (C) 2007 Julien BLACHE <jb@jblache.org>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This driver triggers SMIs which cause the firmware to change the
|
||||
+ * backlight brightness. This is icky in many ways, but it's impractical to
|
||||
+ * get at the firmware code in order to figure out what it's actually doing.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/backlight.h>
|
||||
+#include <linux/err.h>
|
||||
+#include <linux/io.h>
|
||||
+#include <linux/pci.h>
|
||||
+#include <linux/acpi.h>
|
||||
+
|
||||
+static struct backlight_device *apple_backlight_device;
|
||||
+
|
||||
+struct hw_data {
|
||||
+ /* I/O resource to allocate. */
|
||||
+ unsigned long iostart;
|
||||
+ unsigned long iolen;
|
||||
+ /* Backlight operations structure. */
|
||||
+ const struct backlight_ops backlight_ops;
|
||||
+ void (*set_brightness)(int);
|
||||
+};
|
||||
+
|
||||
+static const struct hw_data *hw_data;
|
||||
+
|
||||
+#define DRIVER "apple_backlight: "
|
||||
+
|
||||
+/* Module parameters. */
|
||||
+static int debug;
|
||||
+module_param_named(debug, debug, int, 0644);
|
||||
+MODULE_PARM_DESC(debug, "Set to one to enable debugging messages.");
|
||||
+
|
||||
+/*
|
||||
+ * Implementation for machines with Intel chipset.
|
||||
+ */
|
||||
+static void intel_chipset_set_brightness(int intensity)
|
||||
+{
|
||||
+ outb(0x04 | (intensity << 4), 0xb3);
|
||||
+ outb(0xbf, 0xb2);
|
||||
+}
|
||||
+
|
||||
+static int intel_chipset_send_intensity(struct backlight_device *bd)
|
||||
+{
|
||||
+ int intensity = bd->props.brightness;
|
||||
+
|
||||
+ if (debug)
|
||||
+ printk(KERN_DEBUG DRIVER "setting brightness to %d\n",
|
||||
+ intensity);
|
||||
+
|
||||
+ intel_chipset_set_brightness(intensity);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int intel_chipset_get_intensity(struct backlight_device *bd)
|
||||
+{
|
||||
+ int intensity;
|
||||
+
|
||||
+ outb(0x03, 0xb3);
|
||||
+ outb(0xbf, 0xb2);
|
||||
+ intensity = inb(0xb3) >> 4;
|
||||
+
|
||||
+ if (debug)
|
||||
+ printk(KERN_DEBUG DRIVER "read brightness of %d\n",
|
||||
+ intensity);
|
||||
+
|
||||
+ return intensity;
|
||||
+}
|
||||
+
|
||||
+static const struct hw_data intel_chipset_data = {
|
||||
+ .iostart = 0xb2,
|
||||
+ .iolen = 2,
|
||||
+ .backlight_ops = {
|
||||
+ .options = BL_CORE_SUSPENDRESUME,
|
||||
+ .get_brightness = intel_chipset_get_intensity,
|
||||
+ .update_status = intel_chipset_send_intensity,
|
||||
+ },
|
||||
+ .set_brightness = intel_chipset_set_brightness,
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ * Implementation for machines with Nvidia chipset.
|
||||
+ */
|
||||
+static void nvidia_chipset_set_brightness(int intensity)
|
||||
+{
|
||||
+ outb(0x04 | (intensity << 4), 0x52f);
|
||||
+ outb(0xbf, 0x52e);
|
||||
+}
|
||||
+
|
||||
+static int nvidia_chipset_send_intensity(struct backlight_device *bd)
|
||||
+{
|
||||
+ int intensity = bd->props.brightness;
|
||||
+
|
||||
+ if (debug)
|
||||
+ printk(KERN_DEBUG DRIVER "setting brightness to %d\n",
|
||||
+ intensity);
|
||||
+
|
||||
+ nvidia_chipset_set_brightness(intensity);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int nvidia_chipset_get_intensity(struct backlight_device *bd)
|
||||
+{
|
||||
+ int intensity;
|
||||
+
|
||||
+ outb(0x03, 0x52f);
|
||||
+ outb(0xbf, 0x52e);
|
||||
+ intensity = inb(0x52f) >> 4;
|
||||
+
|
||||
+ if (debug)
|
||||
+ printk(KERN_DEBUG DRIVER "read brightness of %d\n",
|
||||
+ intensity);
|
||||
+
|
||||
+ return intensity;
|
||||
+}
|
||||
+
|
||||
+static const struct hw_data nvidia_chipset_data = {
|
||||
+ .iostart = 0x52e,
|
||||
+ .iolen = 2,
|
||||
+ .backlight_ops = {
|
||||
+ .options = BL_CORE_SUSPENDRESUME,
|
||||
+ .get_brightness = nvidia_chipset_get_intensity,
|
||||
+ .update_status = nvidia_chipset_send_intensity
|
||||
+ },
|
||||
+ .set_brightness = nvidia_chipset_set_brightness,
|
||||
+};
|
||||
+
|
||||
+static int __devinit apple_bl_add(struct acpi_device *dev)
|
||||
+{
|
||||
+ struct backlight_properties props;
|
||||
+ struct pci_dev *host;
|
||||
+ int intensity;
|
||||
+
|
||||
+ host = pci_get_bus_and_slot(0, 0);
|
||||
+
|
||||
+ if (!host) {
|
||||
+ printk(KERN_ERR DRIVER "unable to find PCI host\n");
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+
|
||||
+ if (host->vendor == PCI_VENDOR_ID_INTEL)
|
||||
+ hw_data = &intel_chipset_data;
|
||||
+ else if (host->vendor == PCI_VENDOR_ID_NVIDIA)
|
||||
+ hw_data = &nvidia_chipset_data;
|
||||
+
|
||||
+ pci_dev_put(host);
|
||||
+
|
||||
+ if (!hw_data) {
|
||||
+ printk(KERN_ERR DRIVER "unknown hardware\n");
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+
|
||||
+ /* Check that the hardware responds - this may not work under EFI */
|
||||
+
|
||||
+ intensity = hw_data->backlight_ops.get_brightness(NULL);
|
||||
+
|
||||
+ if (!intensity) {
|
||||
+ hw_data->set_brightness(1);
|
||||
+ if (!hw_data->backlight_ops.get_brightness(NULL))
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ hw_data->set_brightness(0);
|
||||
+ }
|
||||
+
|
||||
+ if (!request_region(hw_data->iostart, hw_data->iolen,
|
||||
+ "Apple backlight"))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ memset(&props, 0, sizeof(struct backlight_properties));
|
||||
+ props.max_brightness = 15;
|
||||
+ apple_backlight_device = backlight_device_register("apple_backlight",
|
||||
+ NULL, NULL, &hw_data->backlight_ops, &props);
|
||||
+
|
||||
+ if (IS_ERR(apple_backlight_device)) {
|
||||
+ release_region(hw_data->iostart, hw_data->iolen);
|
||||
+ return PTR_ERR(apple_backlight_device);
|
||||
+ }
|
||||
+
|
||||
+ apple_backlight_device->props.brightness =
|
||||
+ hw_data->backlight_ops.get_brightness(apple_backlight_device);
|
||||
+ backlight_update_status(apple_backlight_device);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int __devexit apple_bl_remove(struct acpi_device *dev, int type)
|
||||
+{
|
||||
+ backlight_device_unregister(apple_backlight_device);
|
||||
+
|
||||
+ release_region(hw_data->iostart, hw_data->iolen);
|
||||
+ hw_data = NULL;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct acpi_device_id apple_bl_ids[] = {
|
||||
+ {"APP0002", 0},
|
||||
+ {"", 0},
|
||||
+};
|
||||
+
|
||||
+static struct acpi_driver apple_bl_driver = {
|
||||
+ .name = "Apple backlight",
|
||||
+ .ids = apple_bl_ids,
|
||||
+ .ops = {
|
||||
+ .add = apple_bl_add,
|
||||
+ .remove = apple_bl_remove,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static int __init apple_bl_init(void)
|
||||
+{
|
||||
+ return acpi_bus_register_driver(&apple_bl_driver);
|
||||
+}
|
||||
+
|
||||
+static void __exit apple_bl_exit(void)
|
||||
+{
|
||||
+ acpi_bus_unregister_driver(&apple_bl_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(apple_bl_init);
|
||||
+module_exit(apple_bl_exit);
|
||||
+
|
||||
+MODULE_AUTHOR("Matthew Garrett <mjg@redhat.com>");
|
||||
+MODULE_DESCRIPTION("Apple Backlight Driver");
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_DEVICE_TABLE(acpi, apple_bl_ids);
|
||||
+MODULE_ALIAS("mbp_nvidia_bl");
|
||||
diff --git a/drivers/video/backlight/mbp_nvidia_bl.c b/drivers/video/backlight/mbp_nvidia_bl.c
|
||||
deleted file mode 100644
|
||||
index 1485f73..0000000
|
||||
--- a/drivers/video/backlight/mbp_nvidia_bl.c
|
||||
+++ /dev/null
|
||||
@@ -1,400 +0,0 @@
|
||||
-/*
|
||||
- * Backlight Driver for Nvidia 8600 in Macbook Pro
|
||||
- *
|
||||
- * Copyright (c) Red Hat <mjg@redhat.com>
|
||||
- * Based on code from Pommed:
|
||||
- * Copyright (C) 2006 Nicolas Boichat <nicolas @boichat.ch>
|
||||
- * Copyright (C) 2006 Felipe Alfaro Solana <felipe_alfaro @linuxmail.org>
|
||||
- * Copyright (C) 2007 Julien BLACHE <jb@jblache.org>
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License version 2 as
|
||||
- * published by the Free Software Foundation.
|
||||
- *
|
||||
- * This driver triggers SMIs which cause the firmware to change the
|
||||
- * backlight brightness. This is icky in many ways, but it's impractical to
|
||||
- * get at the firmware code in order to figure out what it's actually doing.
|
||||
- */
|
||||
-
|
||||
-#include <linux/module.h>
|
||||
-#include <linux/kernel.h>
|
||||
-#include <linux/init.h>
|
||||
-#include <linux/platform_device.h>
|
||||
-#include <linux/backlight.h>
|
||||
-#include <linux/err.h>
|
||||
-#include <linux/dmi.h>
|
||||
-#include <linux/io.h>
|
||||
-
|
||||
-static struct backlight_device *mbp_backlight_device;
|
||||
-
|
||||
-/* Structure to be passed to the DMI_MATCH function. */
|
||||
-struct dmi_match_data {
|
||||
- /* I/O resource to allocate. */
|
||||
- unsigned long iostart;
|
||||
- unsigned long iolen;
|
||||
- /* Backlight operations structure. */
|
||||
- const struct backlight_ops backlight_ops;
|
||||
-};
|
||||
-
|
||||
-/* Module parameters. */
|
||||
-static int debug;
|
||||
-module_param_named(debug, debug, int, 0644);
|
||||
-MODULE_PARM_DESC(debug, "Set to one to enable debugging messages.");
|
||||
-
|
||||
-/*
|
||||
- * Implementation for MacBooks with Intel chipset.
|
||||
- */
|
||||
-static int intel_chipset_send_intensity(struct backlight_device *bd)
|
||||
-{
|
||||
- int intensity = bd->props.brightness;
|
||||
-
|
||||
- if (debug)
|
||||
- printk(KERN_DEBUG "mbp_nvidia_bl: setting brightness to %d\n",
|
||||
- intensity);
|
||||
-
|
||||
- outb(0x04 | (intensity << 4), 0xb3);
|
||||
- outb(0xbf, 0xb2);
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static int intel_chipset_get_intensity(struct backlight_device *bd)
|
||||
-{
|
||||
- int intensity;
|
||||
-
|
||||
- outb(0x03, 0xb3);
|
||||
- outb(0xbf, 0xb2);
|
||||
- intensity = inb(0xb3) >> 4;
|
||||
-
|
||||
- if (debug)
|
||||
- printk(KERN_DEBUG "mbp_nvidia_bl: read brightness of %d\n",
|
||||
- intensity);
|
||||
-
|
||||
- return intensity;
|
||||
-}
|
||||
-
|
||||
-static const struct dmi_match_data intel_chipset_data = {
|
||||
- .iostart = 0xb2,
|
||||
- .iolen = 2,
|
||||
- .backlight_ops = {
|
||||
- .options = BL_CORE_SUSPENDRESUME,
|
||||
- .get_brightness = intel_chipset_get_intensity,
|
||||
- .update_status = intel_chipset_send_intensity,
|
||||
- }
|
||||
-};
|
||||
-
|
||||
-/*
|
||||
- * Implementation for MacBooks with Nvidia chipset.
|
||||
- */
|
||||
-static int nvidia_chipset_send_intensity(struct backlight_device *bd)
|
||||
-{
|
||||
- int intensity = bd->props.brightness;
|
||||
-
|
||||
- if (debug)
|
||||
- printk(KERN_DEBUG "mbp_nvidia_bl: setting brightness to %d\n",
|
||||
- intensity);
|
||||
-
|
||||
- outb(0x04 | (intensity << 4), 0x52f);
|
||||
- outb(0xbf, 0x52e);
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static int nvidia_chipset_get_intensity(struct backlight_device *bd)
|
||||
-{
|
||||
- int intensity;
|
||||
-
|
||||
- outb(0x03, 0x52f);
|
||||
- outb(0xbf, 0x52e);
|
||||
- intensity = inb(0x52f) >> 4;
|
||||
-
|
||||
- if (debug)
|
||||
- printk(KERN_DEBUG "mbp_nvidia_bl: read brightness of %d\n",
|
||||
- intensity);
|
||||
-
|
||||
- return intensity;
|
||||
-}
|
||||
-
|
||||
-static const struct dmi_match_data nvidia_chipset_data = {
|
||||
- .iostart = 0x52e,
|
||||
- .iolen = 2,
|
||||
- .backlight_ops = {
|
||||
- .options = BL_CORE_SUSPENDRESUME,
|
||||
- .get_brightness = nvidia_chipset_get_intensity,
|
||||
- .update_status = nvidia_chipset_send_intensity
|
||||
- }
|
||||
-};
|
||||
-
|
||||
-/*
|
||||
- * DMI matching.
|
||||
- */
|
||||
-static /* const */ struct dmi_match_data *driver_data;
|
||||
-
|
||||
-static int mbp_dmi_match(const struct dmi_system_id *id)
|
||||
-{
|
||||
- driver_data = id->driver_data;
|
||||
-
|
||||
- printk(KERN_INFO "mbp_nvidia_bl: %s detected\n", id->ident);
|
||||
- return 1;
|
||||
-}
|
||||
-
|
||||
-static const struct dmi_system_id __initdata mbp_device_table[] = {
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBook 1,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Computer, Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook1,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBook 2,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook2,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBook 3,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook3,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBook 4,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook4,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBook 4,2",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook4,2"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 1,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro1,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 1,2",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro1,2"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 2,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro2,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 2,2",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro2,2"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 3,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro3,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 3,2",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro3,2"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 4,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro4,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookAir 1,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir1,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&intel_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBook 5,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBook 5,2",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5,2"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBook 6,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook6,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookAir 2,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir2,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 5,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 5,2",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5,2"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 5,3",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5,3"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 5,4",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5,4"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookPro 5,5",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5,5"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookAir 3,1",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir3,1"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- {
|
||||
- .callback = mbp_dmi_match,
|
||||
- .ident = "MacBookAir 3,2",
|
||||
- .matches = {
|
||||
- DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
|
||||
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir3,2"),
|
||||
- },
|
||||
- .driver_data = (void *)&nvidia_chipset_data,
|
||||
- },
|
||||
- { }
|
||||
-};
|
||||
-
|
||||
-static int __init mbp_init(void)
|
||||
-{
|
||||
- struct backlight_properties props;
|
||||
- if (!dmi_check_system(mbp_device_table))
|
||||
- return -ENODEV;
|
||||
-
|
||||
- if (!request_region(driver_data->iostart, driver_data->iolen,
|
||||
- "Macbook Pro backlight"))
|
||||
- return -ENXIO;
|
||||
-
|
||||
- memset(&props, 0, sizeof(struct backlight_properties));
|
||||
- props.max_brightness = 15;
|
||||
- mbp_backlight_device = backlight_device_register("mbp_backlight", NULL,
|
||||
- NULL,
|
||||
- &driver_data->backlight_ops,
|
||||
- &props);
|
||||
- if (IS_ERR(mbp_backlight_device)) {
|
||||
- release_region(driver_data->iostart, driver_data->iolen);
|
||||
- return PTR_ERR(mbp_backlight_device);
|
||||
- }
|
||||
-
|
||||
- mbp_backlight_device->props.brightness =
|
||||
- driver_data->backlight_ops.get_brightness(mbp_backlight_device);
|
||||
- backlight_update_status(mbp_backlight_device);
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static void __exit mbp_exit(void)
|
||||
-{
|
||||
- backlight_device_unregister(mbp_backlight_device);
|
||||
-
|
||||
- release_region(driver_data->iostart, driver_data->iolen);
|
||||
-}
|
||||
-
|
||||
-module_init(mbp_init);
|
||||
-module_exit(mbp_exit);
|
||||
-
|
||||
-MODULE_AUTHOR("Matthew Garrett <mjg@redhat.com>");
|
||||
-MODULE_DESCRIPTION("Nvidia-based Macbook Pro Backlight Driver");
|
||||
-MODULE_LICENSE("GPL");
|
||||
-MODULE_DEVICE_TABLE(dmi, mbp_device_table);
|
|
@ -0,0 +1,42 @@
|
|||
diff -up linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c.fdt linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c
|
||||
--- linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c.fdt 2011-08-04 16:51:12.034188064 -0500
|
||||
+++ linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c 2011-08-04 22:13:52.801156923 -0500
|
||||
@@ -591,6 +591,11 @@ static void __init omap3_beagle_init(voi
|
||||
beagle_opp_init();
|
||||
}
|
||||
|
||||
+static const char *omap3_beagle_dt_match[] __initdata = {
|
||||
+ "ti,omap3-beagle",
|
||||
+ NULL
|
||||
+};
|
||||
+
|
||||
MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
|
||||
/* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
|
||||
.boot_params = 0x80000100,
|
||||
@@ -600,4 +605,5 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagl
|
||||
.init_irq = omap3_beagle_init_irq,
|
||||
.init_machine = omap3_beagle_init,
|
||||
.timer = &omap3_secure_timer,
|
||||
+ .dt_compat = omap3_beagle_dt_match,
|
||||
MACHINE_END
|
||||
diff -up linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c.fdt linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c
|
||||
--- linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c.fdt 2011-08-04 16:51:12.092169023 -0500
|
||||
+++ linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c 2011-08-04 22:15:29.200157437 -0500
|
||||
@@ -708,6 +708,11 @@ static void __init omap4_panda_map_io(vo
|
||||
omap44xx_map_common_io();
|
||||
}
|
||||
|
||||
+static const char *omap4_panda_match[] __initdata = {
|
||||
+ "ti,omap4-panda",
|
||||
+ NULL,
|
||||
+};
|
||||
+
|
||||
MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
|
||||
/* Maintainer: David Anders - Texas Instruments Inc */
|
||||
.boot_params = 0x80000100,
|
||||
@@ -717,4 +722,5 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda
|
||||
.init_irq = gic_init_irq,
|
||||
.init_machine = omap4_panda_init,
|
||||
.timer = &omap4_timer,
|
||||
+ .dt_compat = omap4_panda_match,
|
||||
MACHINE_END
|
|
@ -0,0 +1,49 @@
|
|||
--- kernel/arch/arm/include/asm/io.h.orig 2011-07-26 00:44:15.000000000 -0400
|
||||
+++ kernel/arch/arm/include/asm/io.h 2011-07-26 00:40:41.000000000 -0400
|
||||
@@ -55,6 +55,46 @@
|
||||
#define __raw_readw(a) (__chk_io_ptr(a), *(volatile unsigned short __force *)(a))
|
||||
#define __raw_readl(a) (__chk_io_ptr(a), *(volatile unsigned int __force *)(a))
|
||||
|
||||
+#undef __raw_writew
|
||||
+#define __raw_writew(v,a) __dj_writew(v,a)
|
||||
+static inline void
|
||||
+__dj_writew(unsigned short v, unsigned short *a)
|
||||
+{
|
||||
+ __chk_io_ptr(a);
|
||||
+ asm volatile ("strh %0,[%1,#0]" :: "r" (v), "r" (a));
|
||||
+}
|
||||
+
|
||||
+#undef __raw_writel
|
||||
+#define __raw_writel(v,a) __dj_writel(v,a)
|
||||
+static inline void
|
||||
+__dj_writel(unsigned int v, unsigned int *a)
|
||||
+{
|
||||
+ __chk_io_ptr(a);
|
||||
+ asm volatile ("str %0,[%1,#0]" :: "r" (v), "r" (a));
|
||||
+}
|
||||
+
|
||||
+#undef __raw_readw
|
||||
+#define __raw_readw(a) __dj_readw(a)
|
||||
+static inline unsigned short
|
||||
+__dj_readw(unsigned short *a)
|
||||
+{
|
||||
+ unsigned short rv;
|
||||
+ __chk_io_ptr(a);
|
||||
+ asm volatile ("ldrh %0,[%1,#0]" : "=r" (rv) : "r" (a));
|
||||
+ return rv;
|
||||
+}
|
||||
+
|
||||
+#undef __raw_readl
|
||||
+#define __raw_readl(a) __dj_readl(a)
|
||||
+static inline unsigned int
|
||||
+__dj_readl(unsigned int *a)
|
||||
+{
|
||||
+ unsigned long rv;
|
||||
+ __chk_io_ptr(a);
|
||||
+ asm volatile ("ldr %0,[%1,#0]" : "=r" (rv) : "r" (a));
|
||||
+ return rv;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Architecture ioremap implementation.
|
||||
*/
|
|
@ -0,0 +1,92 @@
|
|||
From 0b608345e114681f66ca0a3cf9d9434728da62ce Mon Sep 17 00:00:00 2001
|
||||
From: Ken Cox <ken@coxcampers.net>
|
||||
Date: Thu, 23 Jun 2011 10:36:43 -0500
|
||||
Subject: [PATCH] Support reading mac address from device tree.
|
||||
|
||||
If CONFIG_OF is enabled, we will try to read the mac address from the device tree. This enables us the ability to have a "static" mac address on arm boards such as the pandaboard and beagleboard which generate random mac addresses.
|
||||
---
|
||||
drivers/net/usb/smsc75xx.c | 17 +++++++++++++++++
|
||||
drivers/net/usb/smsc95xx.c | 18 +++++++++++++++++-
|
||||
2 files changed, 34 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
|
||||
index 753ee6e..ac0a200 100644
|
||||
--- a/drivers/net/usb/smsc75xx.c
|
||||
+++ b/drivers/net/usb/smsc75xx.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/usb/usbnet.h>
|
||||
#include <linux/slab.h>
|
||||
+#include <linux/of_device.h>
|
||||
#include "smsc75xx.h"
|
||||
|
||||
#define SMSC_CHIPNAME "smsc75xx"
|
||||
@@ -658,6 +659,22 @@ static int smsc75xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
|
||||
|
||||
static void smsc75xx_init_mac_address(struct usbnet *dev)
|
||||
{
|
||||
+ void *address;
|
||||
+#ifdef CONFIG_OF
|
||||
+ struct device_node *np;
|
||||
+
|
||||
+ /* try the device tree */
|
||||
+ np = of_find_node_by_name(NULL, "smsc75xx");
|
||||
+ if (np) {
|
||||
+ address = of_get_property(np, "local-mac-address", NULL);
|
||||
+ if (address) {
|
||||
+ memcpy(dev->net->dev_addr, address, ETH_ALEN);
|
||||
+ netif_dbg(dev, ifup, dev->net, "MAC address read from device tree\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* try reading mac address from EEPROM */
|
||||
if (smsc75xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
|
||||
dev->net->dev_addr) == 0) {
|
||||
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
|
||||
index bc86f4b..c83942d 100644
|
||||
--- a/drivers/net/usb/smsc95xx.c
|
||||
+++ b/drivers/net/usb/smsc95xx.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/usb/usbnet.h>
|
||||
#include <linux/slab.h>
|
||||
+#include <linux/of_device.h>
|
||||
#include "smsc95xx.h"
|
||||
|
||||
#define SMSC_CHIPNAME "smsc95xx"
|
||||
@@ -639,6 +640,22 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
|
||||
|
||||
static void smsc95xx_init_mac_address(struct usbnet *dev)
|
||||
{
|
||||
+ void *address;
|
||||
+#ifdef CONFIG_OF
|
||||
+ struct device_node *np;
|
||||
+
|
||||
+ /* try the device tree */
|
||||
+ np = of_find_node_by_name(NULL, "smsc95xx");
|
||||
+ if (np) {
|
||||
+ address = of_get_property(np, "local-mac-address", NULL);
|
||||
+ if (address) {
|
||||
+ memcpy(dev->net->dev_addr, address, ETH_ALEN);
|
||||
+ netif_dbg(dev, ifup, dev->net, "MAC address read from device tree\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* try reading mac address from EEPROM */
|
||||
if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
|
||||
dev->net->dev_addr) == 0) {
|
||||
@@ -648,7 +665,6 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
|
||||
return;
|
||||
}
|
||||
}
|
||||
-
|
||||
/* no eeprom, or eeprom values are invalid. generate random MAC */
|
||||
random_ether_addr(dev->net->dev_addr);
|
||||
netif_dbg(dev, ifup, dev->net, "MAC address set to random_ether_addr\n");
|
||||
--
|
||||
1.7.2.3
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
--- linux-2.6.42.noarch/drivers/staging/nvec/Kconfig.orig 2012-02-02 08:16:12.512727480 -0600
|
||||
+++ linux-2.6.42.noarch/drivers/staging/nvec/Kconfig 2012-02-01 18:44:56.674990109 -0600
|
||||
@@ -1,6 +1,6 @@
|
||||
config MFD_NVEC
|
||||
bool "NV Tegra Embedded Controller SMBus Interface"
|
||||
- depends on I2C && GPIOLIB && ARCH_TEGRA
|
||||
+ depends on I2C && GPIOLIB && ARCH_TEGRA && MFD_CORE=y
|
||||
help
|
||||
Say Y here to enable support for a nVidia compliant embedded
|
||||
controller.
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,35 @@
|
|||
Simple patch to remove the overlap between the bcma (i.e. b43) driver
|
||||
and the brcmsmac driver. David Woodhouse <dwmw2@infradead.org>
|
||||
confirmed that this patch restores functionality of bcm4331 devices.
|
||||
|
||||
-- John W. Linville <linville@redhat.com>
|
||||
|
||||
diff -up linux-3.1.x86_64/drivers/bcma/host_pci.c.orig linux-3.1.x86_64/drivers/bcma/host_pci.c
|
||||
--- linux-3.1.x86_64/drivers/bcma/host_pci.c.orig 2011-11-10 11:41:26.829742757 -0500
|
||||
+++ linux-3.1.x86_64/drivers/bcma/host_pci.c 2011-11-10 11:41:22.884792078 -0500
|
||||
@@ -225,11 +225,13 @@ static void bcma_host_pci_remove(struct
|
||||
}
|
||||
|
||||
static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = {
|
||||
- { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x0576) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4331) },
|
||||
+#if 0 /* Not in Fedora... */
|
||||
+ { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x0576) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4353) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4357) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4727) },
|
||||
+#endif
|
||||
{ 0, },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, bcma_pci_bridge_tbl);
|
||||
|
||||
--- linux-2.6.43.noarch/drivers/net/wireless/brcm80211/Kconfig~ 2012-03-26 12:37:17.512820450 -0400
|
||||
+++ linux-2.6.43.noarch/drivers/net/wireless/brcm80211/Kconfig 2012-03-26 12:37:36.270777605 -0400
|
||||
@@ -4,7 +4,6 @@ config BRCMUTIL
|
||||
config BRCMSMAC
|
||||
tristate "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
|
||||
depends on MAC80211
|
||||
- depends on BCMA
|
||||
select BRCMUTIL
|
||||
select FW_LOADER
|
||||
select CRC_CCITT
|
|
@ -0,0 +1,87 @@
|
|||
On Mon, 3 Oct 2011, Josh Boyer wrote:
|
||||
|
||||
> > > Perhaps another check here for randomize? Something like:
|
||||
> > >
|
||||
> > > #if defined(CONFIG_X86) || defined(CONFIG_ARM)
|
||||
> > > if (current->flags & PF_RANDOMIZE)
|
||||
> > > load_bias = 0;
|
||||
> > > else if (vaddr)
|
||||
> > > load_bias = 0;
|
||||
> > > else
|
||||
> > > load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE);
|
||||
> > > #else
|
||||
> > > load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
|
||||
> > > #endif
|
||||
> > >
|
||||
> > > If that's stupid, then feel free to tell me. I won't pretend like I
|
||||
> > > understand what is going on here yet, but based on the explanation you
|
||||
> > > provided that might work.
|
||||
> >
|
||||
> > I have just verified my hunch that the original patch from H.J. / Josh
|
||||
> > breaks ASLR completely, so Andrew, please drop it for now.
|
||||
>
|
||||
> Yes, please drop the original.
|
||||
|
||||
Thanks.
|
||||
|
||||
> > I am now looking into how to fix things properly.
|
||||
> >
|
||||
> > Josh, looking at what you are proposing -- do you see any reason to make
|
||||
> > the behavior different in #else branch and in !(current->flags &
|
||||
> > PF_RANDOMIZE) case?
|
||||
>
|
||||
> I was mostly just trying to adapt H.J.'s patch to account for the
|
||||
> PF_RANDOMIZE case. Looking at it a bit more, I'm not sure why they
|
||||
> would need to be different. H.J., do you recall why you made that
|
||||
> change originally?
|
||||
|
||||
How about the patch below instead? It survives my testing, and I believe
|
||||
it handles both cases properly.
|
||||
|
||||
Confirmation from the original bug reporter would obviously be a nice
|
||||
bonus too :)
|
||||
|
||||
|
||||
|
||||
|
||||
From: Jiri Kosina <jkosina@suse.cz>
|
||||
Subject: [PATCH] binfmt_elf: fix PIE execution with randomization disabled
|
||||
|
||||
The case of address space randomization being disabled in runtime through
|
||||
randomize_va_space sysctl is not treated properly in load_elf_binary(),
|
||||
resulting in SIGKILL coming at exec() time for certain PIE-linked binaries
|
||||
in case the randomization has been disabled at runtime prior to calling
|
||||
exec().
|
||||
|
||||
Handle the randomize_va_space == 0 case the same way as if we were not
|
||||
supporting .text randomization at all.
|
||||
|
||||
Based on original patch by H.J. Lu <hongjiu.lu@intel.com> and
|
||||
Josh Boyer <jwboyer@redhat.com>
|
||||
|
||||
Cc: Ingo Molnar <mingo@elte.hu>
|
||||
Cc: Jiri Kosina <jkosina@suse.cz>
|
||||
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
|
||||
Cc: Russell King <rmk@arm.linux.org.uk>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
fs/binfmt_elf.c | 5 ++++-
|
||||
1 files changed, 4 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
|
||||
index dd0fdfc..bb11fe4 100644
|
||||
--- a/fs/binfmt_elf.c
|
||||
+++ b/fs/binfmt_elf.c
|
||||
@@ -795,7 +795,10 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
||||
* might try to exec. This is because the brk will
|
||||
* follow the loader, and is not movable. */
|
||||
#if defined(CONFIG_X86) || defined(CONFIG_ARM)
|
||||
- load_bias = 0;
|
||||
+ if (current->flags & PF_RANDOMIZE)
|
||||
+ load_bias = 0;
|
||||
+ else
|
||||
+ load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
|
||||
#else
|
||||
load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
|
||||
#endif
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
From 2a5a5ec620a29d4ba07743c3151cdf0a417c8f8c Mon Sep 17 00:00:00 2001
|
||||
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
|
||||
Date: Thu, 2 Feb 2012 10:32:18 +0200
|
||||
Subject: [PATCH] Bluetooth: Use list _safe deleting from conn chan_list
|
||||
|
||||
Fixes possible bug when deleting element from the list in
|
||||
function hci_chan_list_flush. list_for_each_entry_rcu is used
|
||||
and after deleting element from the list we also free pointer
|
||||
and then list_entry_rcu is taken from freed pointer.
|
||||
|
||||
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
|
||||
Acked-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
|
||||
---
|
||||
net/bluetooth/hci_conn.c | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
|
||||
index b074bd6..b4ecdde 100644
|
||||
--- a/net/bluetooth/hci_conn.c
|
||||
+++ b/net/bluetooth/hci_conn.c
|
||||
@@ -975,10 +975,10 @@ int hci_chan_del(struct hci_chan *chan)
|
||||
|
||||
void hci_chan_list_flush(struct hci_conn *conn)
|
||||
{
|
||||
- struct hci_chan *chan;
|
||||
+ struct hci_chan *chan, *n;
|
||||
|
||||
BT_DBG("conn %p", conn);
|
||||
|
||||
- list_for_each_entry_rcu(chan, &conn->chan_list, list)
|
||||
+ list_for_each_entry_safe(chan, n, &conn->chan_list, list)
|
||||
hci_chan_del(chan);
|
||||
}
|
||||
--
|
||||
1.7.6.5
|
||||
|
||||
From 3c4e0df028935618d052235ba85bc7079be13394 Mon Sep 17 00:00:00 2001
|
||||
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
|
||||
Date: Thu, 2 Feb 2012 10:32:17 +0200
|
||||
Subject: [PATCH] Bluetooth: Use list _safe deleting from conn_hash_list
|
||||
|
||||
Use list_for_each_entry_safe which is safe version against removal
|
||||
of list entry. Otherwise we remove hci_conn element and reference
|
||||
next element which result in accessing LIST_POISON.
|
||||
|
||||
[ 95.571834] Bluetooth: unknown link type 127
|
||||
[ 95.578349] BUG: unable to handle kernel paging request at 20002000
|
||||
[ 95.580236] IP: [<20002000>] 0x20001fff
|
||||
[ 95.580763] *pde = 00000000
|
||||
[ 95.581196] Oops: 0000 [#1] SMP
|
||||
...
|
||||
[ 95.582298] Pid: 3355, comm: hciconfig Tainted: G O 3.2.0-VirttualBox
|
||||
[ 95.582298] EIP: 0060:[<20002000>] EFLAGS: 00210206 CPU: 0
|
||||
[ 95.582298] EIP is at 0x20002000
|
||||
...
|
||||
[ 95.582298] Call Trace:
|
||||
[ 95.582298] [<f8231ab6>] ? hci_conn_hash_flush+0x76/0xf0 [bluetooth]
|
||||
[ 95.582298] [<f822bcb1>] hci_dev_do_close+0xc1/0x2e0 [bluetooth]
|
||||
[ 95.582298] [<f822d679>] ? hci_dev_get+0x69/0xb0 [bluetooth]
|
||||
[ 95.582298] [<f822e1da>] hci_dev_close+0x2a/0x50 [bluetooth]
|
||||
[ 95.582298] [<f824102f>] hci_sock_ioctl+0x1af/0x3f0 [bluetooth]
|
||||
[ 95.582298] [<c11153ea>] ? handle_pte_fault+0x8a/0x8f0
|
||||
[ 95.582298] [<c146becf>] sock_ioctl+0x5f/0x260
|
||||
[ 95.582298] [<c146be70>] ? sock_fasync+0x90/0x90
|
||||
[ 95.582298] [<c1152b33>] do_vfs_ioctl+0x83/0x5b0
|
||||
[ 95.582298] [<c1563f87>] ? do_page_fault+0x297/0x500
|
||||
[ 95.582298] [<c1563cf0>] ? spurious_fault+0xd0/0xd0
|
||||
[ 95.582298] [<c107165b>] ? up_read+0x1b/0x30
|
||||
[ 95.582298] [<c1563f87>] ? do_page_fault+0x297/0x500
|
||||
[ 95.582298] [<c100aa9f>] ? init_fpu+0xef/0x160
|
||||
[ 95.582298] [<c15617c0>] ? do_debug+0x180/0x180
|
||||
[ 95.582298] [<c100a958>] ? fpu_finit+0x28/0x80
|
||||
[ 95.582298] [<c11530e7>] sys_ioctl+0x87/0x90
|
||||
[ 95.582298] [<c156795f>] sysenter_do_call+0x12/0x38
|
||||
...
|
||||
|
||||
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
|
||||
Acked-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
|
||||
---
|
||||
net/bluetooth/hci_conn.c | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
|
||||
index aca71c0..b074bd6 100644
|
||||
--- a/net/bluetooth/hci_conn.c
|
||||
+++ b/net/bluetooth/hci_conn.c
|
||||
@@ -795,11 +795,11 @@ timer:
|
||||
void hci_conn_hash_flush(struct hci_dev *hdev)
|
||||
{
|
||||
struct hci_conn_hash *h = &hdev->conn_hash;
|
||||
- struct hci_conn *c;
|
||||
+ struct hci_conn *c, *n;
|
||||
|
||||
BT_DBG("hdev %s", hdev->name);
|
||||
|
||||
- list_for_each_entry_rcu(c, &h->list, list) {
|
||||
+ list_for_each_entry_safe(c, n, &h->list, list) {
|
||||
c->state = BT_CLOSED;
|
||||
|
||||
hci_proto_disconn_cfm(c, HCI_ERROR_LOCAL_HOST_TERM);
|
||||
--
|
||||
1.7.6.5
|
||||
|
|
@ -9,6 +9,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
|||
CONFIG_ARCH_VERSATILE=y
|
||||
CONFIG_ARCH_VERSATILE_PB=y
|
||||
CONFIG_MACH_VERSATILE_AB=y
|
||||
CONFIG_MACH_VERSATILE_DT=y
|
||||
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
|
@ -82,9 +83,12 @@ CONFIG_FB_ARMCLCD=m
|
|||
|
||||
CONFIG_SND_ARM=y
|
||||
CONFIG_SND_ARMAACI=m
|
||||
CONFIG_SND_SOC=m
|
||||
# CONFIG_SND_SOC_CACHE_LZO is not set
|
||||
# CONFIG_SND_SOC_ALL_CODECS is not set
|
||||
|
||||
CONFIG_USB_MUSB_HDRC=m
|
||||
# CONFIG_MUSB_PIO_ONLY is not set
|
||||
CONFIG_USB_MUSB_HDRC=y
|
||||
CONFIG_MUSB_PIO_ONLY=y
|
||||
CONFIG_USB_TUSB6010=y
|
||||
# CONFIG_USB_MUSB_DEBUG is not set
|
||||
|
||||
|
@ -135,3 +139,75 @@ CONFIG_STRICT_DEVMEM=y
|
|||
# CONFIG_HVC_DCC is not set
|
||||
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
|
||||
# CONFIG_ARM_PATCH_PHYS_VIRT is not set
|
||||
|
||||
CONFIG_HWSPINLOCK_OMAP=m
|
||||
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_MTD_PHYSMAP_OF=m
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_MMC_SDHCI_OF=m
|
||||
CONFIG_MMC_SDHCI_PXAV3=m
|
||||
CONFIG_MMC_SDHCI_PXAV2=m
|
||||
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_PL330_DMA=y
|
||||
# CONFIG_ARM_KPROBES_TEST is not set
|
||||
# CONFIG_ARM_ATAG_DTB_COMPAT is not set
|
||||
|
||||
# CONFIG_FTGMAC100 is not set
|
||||
# CONFIG_FTMAC100 is not set
|
||||
#
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
CONFIG_LSM_MMAP_MIN_ADDR=32768
|
||||
|
||||
# disable TPM on arm at least on the trimslices it causes havoc
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_IMA is not set
|
||||
|
||||
# ERROR: "__bswapsi2" [drivers/staging/crystalhd/crystalhd.ko] undefined!
|
||||
# CONFIG_CRYSTALHD is not set
|
||||
|
||||
# these modules all fail with missing __bad_udelay
|
||||
# http://www.spinics.net/lists/arm/msg15615.html provides some background
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_FB_SAVAGE is not set
|
||||
# CONFIG_FB_RADEON is not set
|
||||
# CONFIG_DRM_RADEON is not set
|
||||
# CONFIG_ATM_HE is not set
|
||||
# CONFIG_SCSI_ACARD is not set
|
||||
|
||||
# these all currently fail due to missing symbols __bad_udelay or
|
||||
# error: implicit declaration of function ‘iowrite32be’
|
||||
# CONFIG_SND_ALI5451 is not set
|
||||
# CONFIG_DRM_NOUVEAU is not set
|
||||
# CONFIG_MLX4_EN is not set
|
||||
|
||||
# FIXME: Guesses, need checking
|
||||
# CONFIG_MACH_EUKREA_CPUIMX35SD is not set
|
||||
CONFIG_ARM_ERRATA_720789=y
|
||||
CONFIG_ARM_ERRATA_751472=y
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
CONFIG_ARM_ERRATA_326103=y
|
||||
CONFIG_OMAP4_ERRATA_I688=y
|
||||
>>>>>>> 99667a9... Linux 3.3.5
|
||||
# CONFIG_FB_MX3 is not set
|
||||
# CONFIG_MX3_IPU is not set
|
||||
# CONFIG_MX3_IPU_IRQS is not set
|
||||
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
|
||||
# CONFIG_MACH_IMX51_DT is not set
|
||||
# CONFIG_MACH_IMX53_DT is not set
|
||||
# CONFIG_MACH_MX53_EVK is not set
|
||||
# CONFIG_MACH_MX53_SMD is not set
|
||||
# CONFIG_MACH_MX53_LOCO is not set
|
||||
# CONFIG_MACH_MX53_ARD is not set
|
||||
# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
|
|
@ -0,0 +1,17 @@
|
|||
ONFIG_ARCH_HIGHBANK=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_NEON=y
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
CONFIG_NET_CALXEDA_XGMAC=y
|
|
@ -0,0 +1,98 @@
|
|||
CONFIG_ARCH_MXC=y
|
||||
CONFIG_ARCH_MX51=y
|
||||
CONFIG_MACH_MX51_BABBAGE=y
|
||||
CONFIG_MACH_MX51_3DS=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX51=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_NEON=y
|
||||
|
||||
CONFIG_MACH_EUKREA_CPUIMX51SD=y
|
||||
CONFIG_MACH_MX51_EFIKAMX=y
|
||||
CONFIG_MACH_MX51_EFIKASB=y
|
||||
# CONFIG_SWP_EMULATE is not set
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
CONFIG_CPU_FREQ_IMX=y
|
||||
CONFIG_W1_MASTER_MXC=m
|
||||
CONFIG_IMX_SDMA=y
|
||||
CONFIG_MACH_MX31ADS=y
|
||||
CONFIG_MACH_MX31LILLY=y
|
||||
CONFIG_MACH_MX31LITE=y
|
||||
CONFIG_MACH_PCM037=y
|
||||
CONFIG_MACH_MX31_3DS=y
|
||||
CONFIG_MACH_MX31MOBOARD=y
|
||||
CONFIG_MACH_QONG=y
|
||||
CONFIG_MACH_ARMADILLO5X0=y
|
||||
CONFIG_MACH_KZM_ARM11_01=y
|
||||
CONFIG_MACH_BUG=y
|
||||
CONFIG_MACH_PCM043=y
|
||||
CONFIG_MACH_MX35_3DS=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX35=y
|
||||
CONFIG_MACH_VPR200=y
|
||||
CONFIG_SOC_IMX6Q=y
|
||||
CONFIG_MXC_IRQ_PRIOR=y
|
||||
CONFIG_MXC_PWM=m
|
||||
CONFIG_MXC_DEBUG_BOARD=y
|
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||
# CONFIG_CACHE_L2X0 is not set
|
||||
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
|
||||
CONFIG_ARM_ERRATA_411920=y
|
||||
CONFIG_PL310_ERRATA_588369=y
|
||||
CONFIG_PL310_ERRATA_727915=y
|
||||
CONFIG_ARM_ERRATA_364296=y
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
CONFIG_RFKILL_GPIO=m
|
||||
CONFIG_PATA_IMX=m
|
||||
CONFIG_ETHERNET=y
|
||||
CONFIG_NET_VENDOR_BROADCOM=y
|
||||
CONFIG_NET_VENDOR_FREESCALE=y
|
||||
CONFIG_FEC=y
|
||||
CONFIG_KEYBOARD_IMX=m
|
||||
CONFIG_SERIAL_IMX=y
|
||||
CONFIG_HW_RANDOM_MXC_RNGA=m
|
||||
CONFIG_I2C_IMX=m
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_GPIO_MCP23S08=m
|
||||
CONFIG_DVB_TDA1004X=m
|
||||
CONFIG_DVB_PLL=m
|
||||
CONFIG_SND_IMX_SOC=m
|
||||
CONFIG_USB_EHCI_MXC=y
|
||||
CONFIG_USB_IMX21_HCD=m
|
||||
CONFIG_MMC_SDHCI_ESDHC_IMX=m
|
||||
CONFIG_MMC_MXC=m
|
||||
CONFIG_RTC_MXC=m
|
||||
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
CONFIG_LEDS_PWM=m
|
||||
|
||||
CONFIG_MACH_PCM037_EET=y
|
||||
# CONFIG_MACH_MX31_3DS_MXC_NAND_USE_BBT is not set
|
||||
CONFIG_MXC_USE_EPIT=y
|
||||
CONFIG_ARM_THUMBEE=y
|
||||
CONFIG_ARM_ERRATA_430973=y
|
||||
CONFIG_ARM_ERRATA_458693=y
|
||||
CONFIG_ARM_ERRATA_460075=y
|
||||
CONFIG_ARM_ERRATA_743622=y
|
||||
CONFIG_ARM_ERRATA_754322=y
|
||||
CONFIG_CAN_FLEXCAN=m
|
||||
CONFIG_MTD_NAND_MXC=m
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_SERIAL_IMX_CONSOLE=y
|
||||
CONFIG_IMX2_WDT=m
|
||||
CONFIG_SND_SOC_PHYCORE_AC97=m
|
||||
CONFIG_SND_SOC_EUKREA_TLV320=m
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_PL310_ERRATA_769419=y
|
||||
CONFIG_LEDS_RENESAS_TPU=y
|
|
@ -0,0 +1,43 @@
|
|||
CONFIG_ARCH_KIRKWOOD=y
|
||||
CONFIG_MACH_DB88F6281_BP=y
|
||||
CONFIG_MACH_RD88F6192_NAS=y
|
||||
CONFIG_MACH_RD88F6281=y
|
||||
CONFIG_MACH_MV88F6281GTW_GE=y
|
||||
CONFIG_MACH_SHEEVAPLUG=y
|
||||
CONFIG_MACH_ESATA_SHEEVAPLUG=y
|
||||
CONFIG_MACH_GURUPLUG=y
|
||||
CONFIG_MACH_DOCKSTAR=y
|
||||
CONFIG_MACH_TS219=y
|
||||
CONFIG_MACH_TS41X=y
|
||||
CONFIG_MACH_OPENRD_BASE=y
|
||||
CONFIG_MACH_OPENRD_CLIENT=y
|
||||
CONFIG_MACH_OPENRD_ULTIMATE=y
|
||||
CONFIG_MACH_NETSPACE_V2=y
|
||||
CONFIG_MACH_INETSPACE_V2=y
|
||||
CONFIG_MACH_NETSPACE_MAX_V2=y
|
||||
CONFIG_MACH_D2NET_V2=y
|
||||
CONFIG_MACH_NET2BIG_V2=y
|
||||
CONFIG_MACH_NET5BIG_V2=y
|
||||
CONFIG_MACH_T5325=y
|
||||
# CONFIG_CPU_FEROCEON_OLD_ID is not set
|
||||
|
||||
|
||||
CONFIG_CACHE_FEROCEON_L2=y
|
||||
CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH=y
|
||||
CONFIG_MTD_NAND_ORION=m
|
||||
CONFIG_MV643XX_ETH=m
|
||||
CONFIG_I2C_MV64XXX=m
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_GPIO_MCP23S08=m
|
||||
CONFIG_ORION_WATCHDOG=m
|
||||
CONFIG_SND_KIRKWOOD_SOC=m
|
||||
CONFIG_SND_KIRKWOOD_SOC_OPENRD=m
|
||||
CONFIG_SND_KIRKWOOD_SOC_T5325=m
|
||||
CONFIG_MMC_MVSDIO=m
|
||||
CONFIG_LEDS_NS2=m
|
||||
CONFIG_LEDS_NETXBIG=m
|
||||
CONFIG_RTC_DRV_MV=m
|
||||
CONFIG_MV_XOR=y
|
||||
CONFIG_CRYPTO_DEV_MV_CESA=m
|
||||
|
||||
# CONFIG_TOUCHSCREEN_EETI is not set
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,101 @@
|
|||
CONFIG_ARCH_TEGRA=y
|
||||
CONFIG_MACH_HARMONY=y
|
||||
CONFIG_MACH_KAEN=y
|
||||
CONFIG_MACH_PAZ00=y
|
||||
CONFIG_MACH_TRIMSLICE=y
|
||||
CONFIG_MACH_WARIO=y
|
||||
CONFIG_MACH_TEGRA_DT=y
|
||||
CONFIG_TEGRA_DEBUG_UARTD=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_AEABI=y
|
||||
|
||||
CONFIG_I2C_TEGRA=y
|
||||
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI_TEGRA=y
|
||||
|
||||
# CONFIG_RCU_BOOST is not set
|
||||
CONFIG_TEGRA_SYSTEM_DMA=y
|
||||
CONFIG_TEGRA_EMC_SCALING_ENABLE=y
|
||||
CONFIG_ARM_THUMBEE=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||
CONFIG_CACHE_L2X0=y
|
||||
CONFIG_ARM_ERRATA_430973=y
|
||||
# CONFIG_ARM_ERRATA_458693 is not set
|
||||
# CONFIG_ARM_ERRATA_460075 is not set
|
||||
CONFIG_ARM_ERRATA_742230=y
|
||||
# CONFIG_ARM_ERRATA_742231 is not set
|
||||
CONFIG_PL310_ERRATA_588369=y
|
||||
CONFIG_PL310_ERRATA_769419=y
|
||||
CONFIG_ARM_ERRATA_720789=y
|
||||
# CONFIG_PL310_ERRATA_727915 is not set
|
||||
# CONFIG_ARM_ERRATA_743622 is not set
|
||||
# CONFIG_ARM_ERRATA_751472 is not set
|
||||
# CONFIG_ARM_ERRATA_753970 is not set
|
||||
# CONFIG_ARM_ERRATA_754322 is not set
|
||||
# CONFIG_ARM_ERRATA_754327 is not set
|
||||
# CONFIG_ARM_ERRATA_764369 is not set
|
||||
CONFIG_SMP_ON_UP=y
|
||||
CONFIG_LOCAL_TIMERS=y
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_NEON is not set
|
||||
# CONFIG_RFKILL_GPIO is not set
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
CONFIG_KEYBOARD_TEGRA=y
|
||||
# CONFIG_MPCORE_WATCHDOG is not set
|
||||
CONFIG_USB_EHCI_TEGRA=y
|
||||
CONFIG_RTC_DRV_TEGRA=m
|
||||
|
||||
CONFIG_SND_SOC_TEGRA=m
|
||||
CONFIG_SND_SOC_TEGRA_WM8903=m
|
||||
CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
|
||||
|
||||
CONFIG_MFD_NVEC=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_RCU_CPU_STALL_VERBOSE is not set
|
||||
# CONFIG_PREEMPT_TRACER is not set
|
||||
CONFIG_KEYBOARD_NVEC=y
|
||||
CONFIG_SERIO_NVEC_PS2=y
|
||||
CONFIG_NVEC_POWER=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_CRYSTALHD=m
|
||||
|
||||
CONFIG_MACH_VENTANA=y
|
||||
CONFIG_PL310_ERRATA_753970=y
|
||||
CONFIG_ARM_CPU_TOPOLOGY=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_LEDS_RENESAS_TPU=y
|
||||
|
||||
# CONFIG_ARCH_TEGRA_2x_SOC is not set
|
||||
# CONFIG_ARCH_TEGRA_3x_SOC is not set
|
||||
# CONFIG_ETHERNET is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_DVB_TDA1004X is not set
|
||||
# CONFIG_DVB_PLL is not set
|
||||
# CONFIG_SND_SOC_TEGRA_ALC5632 is not set
|
||||
|
21
config-debug
21
config-debug
|
@ -2,6 +2,8 @@ CONFIG_SND_VERBOSE_PRINTK=y
|
|||
CONFIG_SND_DEBUG=y
|
||||
CONFIG_SND_PCM_XRUN_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_ATOMIC_SLEEP=y
|
||||
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||
|
@ -22,6 +24,7 @@ CONFIG_FAIL_MAKE_REQUEST=y
|
|||
CONFIG_FAULT_INJECTION_DEBUG_FS=y
|
||||
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
||||
CONFIG_FAIL_IO_TIMEOUT=y
|
||||
CONFIG_FAIL_MMC_REQUEST=y
|
||||
|
||||
CONFIG_SLUB_DEBUG_ON=y
|
||||
|
||||
|
@ -41,6 +44,7 @@ CONFIG_DEBUG_OBJECTS=y
|
|||
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
|
||||
CONFIG_DEBUG_OBJECTS_FREE=y
|
||||
CONFIG_DEBUG_OBJECTS_TIMERS=y
|
||||
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
||||
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
||||
|
||||
CONFIG_X86_PTDUMP=y
|
||||
|
@ -69,7 +73,7 @@ CONFIG_DEBUG_PERF_USE_VMALLOC=y
|
|||
|
||||
CONFIG_JBD2_DEBUG=y
|
||||
|
||||
CONFIG_DEBUG_CFQ_IOSCHED=y
|
||||
CONFIG_DEBUG_BLK_CGROUP=y
|
||||
|
||||
CONFIG_DRBD_FAULT_INJECTION=y
|
||||
|
||||
|
@ -78,7 +82,6 @@ CONFIG_CARL9170_DEBUGFS=y
|
|||
CONFIG_IWLWIFI_DEVICE_TRACING=y
|
||||
|
||||
CONFIG_DEBUG_OBJECTS_WORK=y
|
||||
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
|
||||
|
||||
CONFIG_DMADEVICES_DEBUG=y
|
||||
CONFIG_DMADEVICES_VDEBUG=y
|
||||
|
@ -88,8 +91,6 @@ CONFIG_PM_ADVANCED_DEBUG=y
|
|||
CONFIG_CEPH_LIB_PRETTYDEBUG=y
|
||||
CONFIG_QUOTA_DEBUG=y
|
||||
|
||||
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
||||
|
||||
CONFIG_PCI_DEFAULT_USE_CRS=y
|
||||
|
||||
CONFIG_KGDB_KDB=y
|
||||
|
@ -98,4 +99,14 @@ CONFIG_KDB_KEYBOARD=y
|
|||
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
||||
CONFIG_TEST_LIST_SORT=y
|
||||
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
|
||||
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
|
||||
|
||||
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
|
||||
|
||||
CONFIG_DEBUG_KMEMLEAK=y
|
||||
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024
|
||||
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
|
||||
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
|
||||
|
||||
|
|
1447
config-generic
1447
config-generic
File diff suppressed because it is too large
Load Diff
|
@ -1,208 +0,0 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
#
|
||||
|
||||
#
|
||||
# Processor type and features
|
||||
#
|
||||
CONFIG_IA64=y
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_XEN is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_EFI=y
|
||||
# CONFIG_ITANIUM is not set
|
||||
CONFIG_MCKINLEY=y
|
||||
CONFIG_IA64_GENERIC=y
|
||||
# CONFIG_IA64_DIG is not set
|
||||
# CONFIG_IA64_HP_ZX1 is not set
|
||||
# CONFIG_IA64_SGI_SN2 is not set
|
||||
CONFIG_IA64_ESI=y
|
||||
CONFIG_IA64_HP_AML_NFW=y
|
||||
CONFIG_MSPEC=y
|
||||
# CONFIG_IA64_HP_SIM is not set
|
||||
# CONFIG_IA64_PAGE_SIZE_4KB is not set
|
||||
# CONFIG_IA64_PAGE_SIZE_8KB is not set
|
||||
CONFIG_IA64_PAGE_SIZE_16KB=y
|
||||
# CONFIG_IA64_PAGE_SIZE_64KB is not set
|
||||
CONFIG_IA64_L1_CACHE_SHIFT=7
|
||||
CONFIG_NUMA=y
|
||||
# CONFIG_VIRTUAL_MEM_MAP is not set
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
CONFIG_IA64_MCA_RECOVERY=m
|
||||
CONFIG_IA64_CYCLONE=y
|
||||
CONFIG_MMTIMER=y
|
||||
CONFIG_IOSAPIC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=18
|
||||
CONFIG_NR_CPUS=1024
|
||||
# CONFIG_IA32_SUPPORT is not set
|
||||
# CONFIG_COMPAT is not set
|
||||
CONFIG_PERFMON=y
|
||||
CONFIG_IA64_PALINFO=y
|
||||
CONFIG_EFI_VARS=y
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=16
|
||||
CONFIG_EFI_PCDP=y
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
|
||||
#
|
||||
# IDE chipset support/bugfixes
|
||||
#
|
||||
CONFIG_BLK_DEV_SGIIOC4=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_TCG_INFINEON=m
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
CONFIG_EFI_RTC=y
|
||||
CONFIG_RTC_DRV_EFI=y
|
||||
|
||||
|
||||
#
|
||||
# AGP
|
||||
#
|
||||
CONFIG_AGP_I460=y
|
||||
CONFIG_AGP_HP_ZX1=y
|
||||
CONFIG_AGP_SGI_TIOCA=y
|
||||
|
||||
#
|
||||
# HP Simulator drivers
|
||||
#
|
||||
# CONFIG_HP_SIMETH is not set
|
||||
# CONFIG_HP_SIMSERIAL is not set
|
||||
# CONFIG_HP_SIMSCSI is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_IA64_PRINT_HAZARDS is not set
|
||||
# CONFIG_DISABLE_VHPT is not set
|
||||
# CONFIG_IA64_DEBUG_CMPXCHG is not set
|
||||
# CONFIG_IA64_DEBUG_IRQ is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
# SGI
|
||||
#
|
||||
CONFIG_SGI_SNSC=y
|
||||
CONFIG_SGI_TIOCX=y
|
||||
CONFIG_SGI_MBCS=m
|
||||
CONFIG_SGI_IOC3=m
|
||||
CONFIG_SGI_IOC4=y
|
||||
CONFIG_SGI_XP=m
|
||||
CONFIG_SGI_GRU=m
|
||||
# CONFIG_SGI_GRU_DEBUG is not set
|
||||
CONFIG_SERIAL_SGI_L1_CONSOLE=y
|
||||
CONFIG_SERIAL_SGI_IOC3=m
|
||||
CONFIG_SERIAL_SGI_IOC4=m
|
||||
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
|
||||
#
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
# CONFIG_ACPI_ASUS is not set
|
||||
CONFIG_ACPI_PROCFS_POWER=y
|
||||
CONFIG_ACPI_SYSFS_POWER=y
|
||||
# CONFIG_ACPI_BATTERY is not set
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=0
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
# CONFIG_ACPI_DOCK is not set
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_HOTPLUG_MEMORY=y
|
||||
CONFIG_ACPI_NUMA=y
|
||||
CONFIG_ACPI_POWER=y
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_PROCFS=y
|
||||
CONFIG_ACPI_SLEEP=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
# CONFIG_ACPI_TOSHIBA is not set
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# CONFIG_ACPI_PROC_EVENT is not set
|
||||
CONFIG_ACPI_HED=m
|
||||
CONFIG_ACPI_EC_DEBUGFS=m
|
||||
CONFIG_ACPI_IPMI=m
|
||||
|
||||
CONFIG_PM=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
# CONFIG_HPET is not set
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
CONFIG_HOTPLUG_PCI_SHPC=m
|
||||
CONFIG_HOTPLUG_PCI_SGI=m
|
||||
CONFIG_PNPACPI=y
|
||||
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
||||
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_STAT=m
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_IA64_ACPI_CPUFREQ=m
|
||||
|
||||
# CONFIG_PERMIT_BSP_REMOVE is not set
|
||||
# CONFIG_FORCE_CPEI_RETARGET is not set
|
||||
|
||||
CONFIG_NODES_SHIFT=10
|
||||
|
||||
|
||||
CONFIG_HW_RANDOM_INTEL=m
|
||||
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_PROC_VMCORE=y
|
||||
|
||||
# drivers/media/video/usbvision/usbvision-i2c.c:64:39: error: macro "outb" passed 4 arguments, but takes just 2
|
||||
# CONFIG_VIDEO_USBVISION is not set
|
||||
|
||||
# CONFIG_IA64_MC_ERR_INJECT is not set
|
||||
|
||||
CONFIG_DMIID=y
|
||||
|
||||
CONFIG_SENSORS_I5K_AMB=m
|
||||
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
|
||||
CONFIG_FRAME_WARN=2048
|
||||
|
||||
CONFIG_VIRT_CPU_ACCOUNTING=y
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
CONFIG_KVM_INTEL=m
|
||||
|
||||
CONFIG_HP_ILO=m
|
||||
|
||||
CONFIG_PARAVIRT_GUEST=y
|
||||
CONFIG_PARAVIRT=y
|
||||
|
||||
CONFIG_DMAR_DEFAULT_ON=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
CONFIG_ACPI_POWER_METER=m
|
||||
CONFIG_I2C_SCMI=m
|
|
@ -2,11 +2,13 @@ CONFIG_SND_VERBOSE_PRINTK=y
|
|||
CONFIG_SND_DEBUG=y
|
||||
CONFIG_SND_PCM_XRUN_DEBUG=y
|
||||
|
||||
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
|
||||
|
||||
# CONFIG_DEBUG_MUTEXES is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_DEBUG_LOCK_ALLOC is not set
|
||||
# CONFIG_PROVE_LOCKING is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
CONFIG_DEBUG_VM=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_PROVE_RCU is not set
|
||||
# CONFIG_PROVE_RCU_REPEATEDLY is not set
|
||||
|
@ -22,6 +24,7 @@ CONFIG_CPUMASK_OFFSTACK=y
|
|||
# CONFIG_FAULT_INJECTION_DEBUG_FS is not set
|
||||
# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
|
||||
# CONFIG_FAIL_IO_TIMEOUT is not set
|
||||
# CONFIG_FAIL_MMC_REQUEST is not set
|
||||
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
|
||||
|
@ -41,6 +44,7 @@ CONFIG_CPUMASK_OFFSTACK=y
|
|||
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
|
||||
# CONFIG_DEBUG_OBJECTS_FREE is not set
|
||||
# CONFIG_DEBUG_OBJECTS_TIMERS is not set
|
||||
# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set
|
||||
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
||||
|
||||
# CONFIG_X86_PTDUMP is not set
|
||||
|
@ -69,7 +73,7 @@ CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
|||
|
||||
# CONFIG_JBD2_DEBUG is not set
|
||||
|
||||
# CONFIG_DEBUG_CFQ_IOSCHED is not set
|
||||
# CONFIG_DEBUG_BLK_CGROUP is not set
|
||||
|
||||
# CONFIG_DRBD_FAULT_INJECTION is not set
|
||||
|
||||
|
@ -78,7 +82,6 @@ CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
|||
# CONFIG_IWLWIFI_DEVICE_TRACING is not set
|
||||
|
||||
# CONFIG_DEBUG_OBJECTS_WORK is not set
|
||||
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
|
||||
|
||||
# CONFIG_DMADEVICES_DEBUG is not set
|
||||
# CONFIG_DMADEVICES_VDEBUG is not set
|
||||
|
@ -88,8 +91,6 @@ CONFIG_PM_ADVANCED_DEBUG=y
|
|||
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
|
||||
# CONFIG_QUOTA_DEBUG is not set
|
||||
|
||||
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
|
||||
|
||||
CONFIG_PCI_DEFAULT_USE_CRS=y
|
||||
|
||||
CONFIG_KGDB_KDB=y
|
||||
|
@ -98,4 +99,8 @@ CONFIG_KDB_KEYBOARD=y
|
|||
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
|
||||
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
|
||||
|
||||
# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set
|
||||
|
|
|
@ -13,19 +13,6 @@ CONFIG_TAU_AVERAGE=y
|
|||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=m
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_PM=y
|
||||
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
|
@ -51,15 +38,16 @@ CONFIG_AGP_UNINORTH=y
|
|||
CONFIG_FB_OF=y
|
||||
# CONFIG_FB_CONTROL is not set
|
||||
CONFIG_FB_IBM_GXT4500=y
|
||||
CONFIG_FB_RADEON=y
|
||||
CONFIG_FB_MATROX=y
|
||||
CONFIG_FB_NVIDIA=m
|
||||
# CONFIG_FB_VGA16 is not set
|
||||
CONFIG_FB_ATY128_BACKLIGHT=y
|
||||
CONFIG_FB_ATY_BACKLIGHT=y
|
||||
CONFIG_FB_RADEON_BACKLIGHT=y
|
||||
CONFIG_FB_RIVA_BACKLIGHT=y
|
||||
CONFIG_FB_NVIDIA_BACKLIGHT=y
|
||||
# CONFIG_FB_MB862XX is not set
|
||||
# CONFIG_FB_MB862XX_PCI_GDC is not set
|
||||
# CONFIG_FB_MB862XX_LIME is not set
|
||||
# CONFIG_FB_MB862XX_I2C is not set
|
||||
|
||||
|
||||
CONFIG_SND_POWERMAC=m
|
||||
CONFIG_SND_POWERMAC_AUTO_DRC=y
|
||||
|
@ -172,7 +160,7 @@ CONFIG_IDE_TASK_IOCTL=y
|
|||
# CONFIG_BLK_DEV_SLC90E66 is not set
|
||||
# CONFIG_BLK_DEV_TRM290 is not set
|
||||
# CONFIG_BLK_DEV_VIA82CXXX is not set
|
||||
CONFIG_BLK_DEV_IDE_PMAC=y
|
||||
CONFIG_BLK_DEV_IDE_PMAC=m
|
||||
CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
|
||||
CONFIG_BLK_DEV_IDEDMA=y
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
|
@ -194,8 +182,8 @@ CONFIG_EDAC_PASEMI=m
|
|||
CONFIG_EDAC_AMD8131=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
|
||||
CONFIG_AXON_RAM=m
|
||||
CONFIG_OPROFILE_CELL=y
|
||||
# CONFIG_AXON_RAM is not set
|
||||
# CONFIG_OPROFILE_CELL is not set
|
||||
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
# CONFIG_IDEPCI_PCIBUS_ORDER is not set
|
||||
|
@ -205,7 +193,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
|
|||
|
||||
# CONFIG_MPC5121_ADS is not set
|
||||
# CONFIG_MPC5121_GENERIC is not set
|
||||
CONFIG_MTD_OF_PARTS=m
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
# CONFIG_MTD_NAND_FSL_ELBC is not set
|
||||
CONFIG_THERMAL=y
|
||||
|
||||
|
@ -216,9 +204,9 @@ CONFIG_DMADEVICES=y
|
|||
|
||||
CONFIG_SND_PPC=y
|
||||
|
||||
CONFIG_PPC_82xx=y
|
||||
CONFIG_PPC_83xx=y
|
||||
CONFIG_PPC_86xx=y
|
||||
# CONFIG_PPC_82xx is not set
|
||||
# CONFIG_PPC_83xx is not set
|
||||
# CONFIG_PPC_86xx is not set
|
||||
CONFIG_EXTRA_TARGETS=""
|
||||
# CONFIG_CODE_PATCHING_SELFTEST is not set
|
||||
# CONFIG_FTR_FIXUP_SELFTEST is not set
|
||||
|
@ -232,27 +220,28 @@ CONFIG_EXTRA_TARGETS=""
|
|||
# CONFIG_SERIAL_QE is not set
|
||||
# CONFIG_I2C_CPM is not set
|
||||
|
||||
CONFIG_NET_VENDOR_IBM=y
|
||||
|
||||
CONFIG_SERIO_XILINX_XPS_PS2=m
|
||||
# CONFIG_SERIO_XILINX_XPS_PS2 is not set
|
||||
|
||||
# CONFIG_PPC_SMLPAR is not set
|
||||
|
||||
CONFIG_MGCOGE=y
|
||||
CONFIG_GEF_SBC610=y
|
||||
CONFIG_GEF_PPC9A=y
|
||||
CONFIG_GEF_SBC310=y
|
||||
# CONFIG_MGCOGE is not set
|
||||
# CONFIG_GEF_SBC610 is not set
|
||||
# CONFIG_GEF_PPC9A is not set
|
||||
# CONFIG_GEF_SBC310 is not set
|
||||
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_MPC8xxx_GPIO=y
|
||||
# CONFIG_QUICC_ENGINE is not set
|
||||
# CONFIG_QE_GPIO is not set
|
||||
# CONFIG_MPC8xxx_GPIO is not set
|
||||
|
||||
CONFIG_IDE_GD=y
|
||||
CONFIG_IDE_GD_ATA=y
|
||||
CONFIG_IDE_GD_ATAPI=y
|
||||
|
||||
CONFIG_MCU_MPC8349EMITX=m
|
||||
# CONFIG_MCU_MPC8349EMITX is not set
|
||||
|
||||
CONFIG_GPIO_XILINX=y
|
||||
# CONFIG_GPIO_XILINX is not set
|
||||
|
||||
CONFIG_PMIC_DA903X=y
|
||||
CONFIG_BACKLIGHT_DA903X=m
|
||||
|
@ -273,11 +262,11 @@ CONFIG_TOUCHSCREEN_DA9034=m
|
|||
|
||||
CONFIG_SIMPLE_GPIO=y
|
||||
|
||||
CONFIG_FSL_PQ_MDIO=m
|
||||
# CONFIG_FSL_PQ_MDIO is not set
|
||||
|
||||
CONFIG_PS3_VRAM=m
|
||||
# CONFIG_PS3_VRAM is not set
|
||||
CONFIG_MDIO_GPIO=m
|
||||
CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL=m
|
||||
# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_PCA953X=m
|
||||
CONFIG_GPIO_PCF857X=m
|
||||
|
@ -285,8 +274,6 @@ CONFIG_GPIO_PCF857X=m
|
|||
# CONFIG_USB_FHCI_HCD is not set
|
||||
# CONFIG_FHCI_DEBUG is not set
|
||||
|
||||
# CONFIG_DRM_RADEON_KMS is not set
|
||||
|
||||
# CONFIG_AMIGAONE is not set
|
||||
|
||||
CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
|
||||
|
@ -307,34 +294,69 @@ CONFIG_SWIOTLB=y
|
|||
|
||||
CONFIG_PPC_DISABLE_WERROR=y
|
||||
|
||||
CONFIG_XILINX_LL_TEMAC=m
|
||||
CONFIG_XILINX_EMACLITE=m
|
||||
# CONFIG_XILINX_LL_TEMAC is not set
|
||||
# CONFIG_XILINX_EMACLITE is not set
|
||||
|
||||
CONFIG_GPIO_WM831X=m
|
||||
# CONFIG_GPIO_LANGWELL is not set
|
||||
# CONFIG_GPIO_UCB1400 is not set
|
||||
CONFIG_EDAC_MPC85XX=m
|
||||
# CONFIG_EDAC_MPC85XX is not set
|
||||
|
||||
CONFIG_NR_IRQS=512
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
|
||||
CONFIG_PPC_MPC5200_LPBFIFO=m
|
||||
CONFIG_CAN_MSCAN=m
|
||||
CONFIG_CAN_MPC5XXX=m
|
||||
# CONFIG_PPC_MPC5200_LPBFIFO is not set
|
||||
# CONFIG_CAN_MSCAN is not set
|
||||
# CONFIG_CAN_MPC5XXX is not set
|
||||
CONFIG_PATA_MACIO=m
|
||||
CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
||||
# CONFIG_PMIC_ADP5520 is not set
|
||||
# CONFIG_MFD_88PM8607 is not set
|
||||
# CONFIG_MFD_MAX8997 is not set
|
||||
# CONFIG_MFD_TPS65910 is not set
|
||||
# CONFIG_MFD_TPS65912_I2C is not set
|
||||
# CONFIG_MFD_WL1273_CORE is not set
|
||||
# CONFIG_XPS_USB_HCD_XILINX is not set
|
||||
# CONFIG_MMC_SDHCI_OF_ESDHC is not set
|
||||
# CONFIG_MMC_SDHCI_OF_HLWD is not set
|
||||
|
||||
# CONFIG_MFD_TC35892 is not set
|
||||
# CONFIG_MFD_AAT2870_CORE is not set
|
||||
|
||||
# CONFIG_GPIO_SCH is not set
|
||||
|
||||
# CONFIG_PPC_MPC512x is not set
|
||||
# CONFIG_RTC_DRV_MPC5121 is not set
|
||||
|
||||
CONFIG_MPC512X_DMA=m
|
||||
# CONFIG_MPC512X_DMA is not set
|
||||
|
||||
CONFIG_KVM_GUEST=y
|
||||
|
||||
CONFIG_I2C_MPC=m
|
||||
|
||||
# CONFIG_IMA is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
CONFIG_RFKILL_GPIO=m
|
||||
|
||||
# CONFIG_CRYPTO_DEV_FSL_CAAM is not set
|
||||
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
|
||||
# CONFIG_CAN_FLEXCAN is not set
|
||||
# CONFIG_NET_VENDOR_XILINX is not set
|
||||
# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set
|
||||
# CONFIG_IBM_EMAC is not set
|
||||
# CONFIG_NET_VENDOR_PASEMI is not set
|
||||
# CONFIG_NET_VENDOR_TOSHIBA is not set
|
||||
|
||||
# Disable btrfs until it is shown to work with 64k pages (rhbz 747079)
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
# CONFIG_V4L_RADIO_ISA_DRIVERS is not set
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
|
|
@ -7,17 +7,17 @@ CONFIG_PPC32=y
|
|||
CONFIG_CPU_FREQ_PMAC=y
|
||||
CONFIG_PPC_CHRP=y
|
||||
CONFIG_PPC_PMAC=y
|
||||
CONFIG_PPC_MPC52xx=y
|
||||
# CONFIG_PPC_MPC52xx is not set
|
||||
CONFIG_PPC_PREP=y
|
||||
|
||||
# CONFIG_PPC_MPC5200_SIMPLE is not set
|
||||
CONFIG_SATA_FSL=m
|
||||
# CONFIG_SATA_FSL is not set
|
||||
# CONFIG_SATA_NV is not set
|
||||
|
||||
# busted in .28git1
|
||||
# ERROR: "cacheable_memzero" [drivers/net/gianfar_driver.ko] undefined!
|
||||
# CONFIG_GIANFAR is not set
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
# CONFIG_USB_EHCI_FSL is not set
|
||||
|
||||
CONFIG_PMAC_APM_EMU=y
|
||||
CONFIG_PMAC_BACKLIGHT=y
|
||||
|
@ -41,6 +41,7 @@ CONFIG_ADB_PMU_LED=y
|
|||
CONFIG_ADB_PMU_LED_IDE=y
|
||||
|
||||
CONFIG_PMAC_MEDIABAY=y
|
||||
CONFIG_NET_VENDOR_APPLE=y
|
||||
CONFIG_BMAC=m
|
||||
CONFIG_MACE=m
|
||||
# CONFIG_MACE_AAUI_PORT is not set
|
||||
|
@ -72,24 +73,20 @@ CONFIG_BRIQ_PANEL=m
|
|||
# CONFIG_ATA_PIIX is not set
|
||||
# CONFIG_PATA_AMD is not set
|
||||
# CONFIG_PATA_ATIIXP is not set
|
||||
CONFIG_PATA_MPC52xx=m
|
||||
# CONFIG_PATA_MPC52xx is not set
|
||||
# CONFIG_PATA_MPIIX is not set
|
||||
# CONFIG_PATA_OLDPIIX is not set
|
||||
# CONFIG_PATA_OPTI is not set
|
||||
# CONFIG_PATA_SERVERWORKS is not set
|
||||
|
||||
CONFIG_SERIAL_MPC52xx=y
|
||||
CONFIG_SERIAL_MPC52xx_CONSOLE=y
|
||||
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
|
||||
# CONFIG_SERIAL_MPC52xx is not set
|
||||
# CONFIG_MPC5200_WDT is not set
|
||||
CONFIG_8xxx_WDT=m
|
||||
CONFIG_GEF_WDT=m
|
||||
|
||||
CONFIG_PPC_MPC5200_BUGFIX=y
|
||||
CONFIG_FEC_MPC52xx=m
|
||||
# CONFIG_PPC_MPC5200_BUGFIX is not set
|
||||
# CONFIG_NET_VENDOR_FREESCALE is not set
|
||||
#CHECK: This may later become a tristate.
|
||||
CONFIG_FEC_MPC52xx_MDIO=y
|
||||
CONFIG_PPC_MPC5200_GPIO=y
|
||||
CONFIG_MDIO_GPIO=m
|
||||
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
|
@ -137,7 +134,6 @@ CONFIG_VIRTUALIZATION=y
|
|||
# CONFIG_MEMSTICK is not set
|
||||
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
# PPC gets sad with debug alloc (bz 448598)
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
@ -145,26 +141,28 @@ CONFIG_VIRTUALIZATION=y
|
|||
CONFIG_SND_ISA=y
|
||||
CONFIG_CRYPTO_DEV_TALITOS=m
|
||||
|
||||
CONFIG_FSL_EMB_PERFMON=y
|
||||
CONFIG_MPC8272_ADS=y
|
||||
CONFIG_PQ2FADS=y
|
||||
CONFIG_EP8248E=y
|
||||
CONFIG_MPC830x_RDB=y
|
||||
CONFIG_MPC831x_RDB=y
|
||||
CONFIG_MPC832x_MDS=y
|
||||
CONFIG_MPC832x_RDB=y
|
||||
CONFIG_MPC834x_MDS=y
|
||||
CONFIG_MPC834x_ITX=y
|
||||
CONFIG_MPC836x_MDS=y
|
||||
CONFIG_MPC836x_RDK=y
|
||||
CONFIG_MPC837x_MDS=y
|
||||
CONFIG_MPC837x_RDB=y
|
||||
CONFIG_SBC834x=y
|
||||
CONFIG_ASP834x=y
|
||||
CONFIG_KMETER1=y
|
||||
CONFIG_MPC8641_HPCN=y
|
||||
CONFIG_SBC8641D=y
|
||||
CONFIG_MPC8610_HPCD=y
|
||||
# CONFIG_FSL_EMB_PERFMON is not set
|
||||
# CONFIG_MPC8272_ADS is not set
|
||||
# CONFIG_PQ2FADS is not set
|
||||
# CONFIG_EP8248E is not set
|
||||
# CONFIG_MPC830x_RDB is not set
|
||||
# CONFIG_MPC831x_RDB is not set
|
||||
# CONFIG_MPC832x_MDS is not set
|
||||
# CONFIG_MPC832x_RDB is not set
|
||||
# CONFIG_MPC834x_MDS is not set
|
||||
# CONFIG_MPC834x_ITX is not set
|
||||
# CONFIG_MPC836x_MDS is not set
|
||||
# CONFIG_MPC836x_RDK is not set
|
||||
# CONFIG_MPC837x_MDS is not set
|
||||
# CONFIG_MPC837x_RDB is not set
|
||||
# CONFIG_SBC834x is not set
|
||||
# CONFIG_ASP834x is not set
|
||||
# CONFIG_KMETER1 is not set
|
||||
# CONFIG_MPC8641_HPCN is not set
|
||||
# CONFIG_SBC8641D is not set
|
||||
# CONFIG_MPC8610_HPCD is not set
|
||||
# CONFIG_FSL_LBC is not set
|
||||
# CONFIG_MTD_NAND_FSL_UPM is not set
|
||||
|
||||
# CONFIG_USB_MUSB_HDRC is not set
|
||||
|
||||
|
@ -173,8 +171,6 @@ CONFIG_MPC8610_HPCD=y
|
|||
# drivers/mtd/maps/sbc8240.c:172: warning: passing argument 1 of 'simple_map_init' from incompatible pointer type
|
||||
# drivers/mtd/maps/sbc8240.c:177: error: 'struct mtd_info' has no member named 'module'
|
||||
|
||||
CONFIG_MTD_NAND_FSL_UPM=m
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
|
@ -182,3 +178,8 @@ CONFIG_PERF_EVENTS=y
|
|||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_KVM_BOOK3S_32=m
|
||||
|
||||
# CONFIG_SCSI_QLA_ISCSI is not set
|
||||
|
||||
CONFIG_BATTERY_PMU=m
|
||||
|
||||
|
|
|
@ -2,48 +2,30 @@ CONFIG_WINDFARM_PM81=y
|
|||
CONFIG_WINDFARM_PM91=y
|
||||
CONFIG_WINDFARM_PM121=y
|
||||
CONFIG_PPC_PMAC64=y
|
||||
CONFIG_PPC_MAPLE=y
|
||||
CONFIG_PPC_CELL=y
|
||||
CONFIG_PPC_IBM_CELL_BLADE=y
|
||||
# CONFIG_PPC_MAPLE is not set
|
||||
# CONFIG_PPC_CELL is not set
|
||||
# CONFIG_PPC_IBM_CELL_BLADE is not set
|
||||
CONFIG_PPC_ISERIES=y
|
||||
CONFIG_PPC_PSERIES=y
|
||||
CONFIG_PPC_PMAC=y
|
||||
CONFIG_PPC_PASEMI=y
|
||||
CONFIG_PPC_POWERNV=y
|
||||
CONFIG_PPC_POWERNV_RTAS=y
|
||||
# CONFIG_PPC_PASEMI is not set
|
||||
# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
|
||||
CONFIG_PPC_PS3=y
|
||||
CONFIG_PPC_CELLEB=y
|
||||
CONFIG_PPC_CELL_QPACE=y
|
||||
CONFIG_PS3_HTAB_SIZE=20
|
||||
# CONFIG_PS3_DYNAMIC_DMA is not set
|
||||
CONFIG_PS3_ADVANCED=y
|
||||
CONFIG_PS3_HTAB_SIZE=20
|
||||
# CONFIG_PS3_DYNAMIC_DMA is not set
|
||||
CONFIG_PS3_VUART=y
|
||||
CONFIG_PS3_PS3AV=y
|
||||
CONFIG_PS3_STORAGE=m
|
||||
CONFIG_PS3_DISK=m
|
||||
CONFIG_PS3_ROM=m
|
||||
CONFIG_PS3_FLASH=m
|
||||
CONFIG_PS3_LPM=y
|
||||
CONFIG_SND_PS3=m
|
||||
CONFIG_SND_PS3_DEFAULT_START_DELAY=1000
|
||||
CONFIG_GELIC_NET=m
|
||||
CONFIG_GELIC_WIRELESS=y
|
||||
CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE=y
|
||||
CONFIG_CBE_THERM=m
|
||||
CONFIG_CBE_CPUFREQ=m
|
||||
CONFIG_CBE_CPUFREQ_PMI=m
|
||||
CONFIG_CBE_CPUFREQ_PMI_ENABLE=y
|
||||
# CONFIG_PPC_PS3 is not set
|
||||
# CONFIG_PPC_CELLEB is not set
|
||||
# CONFIG_PPC_CELL_QPACE is not set
|
||||
CONFIG_PMAC_RACKMETER=m
|
||||
CONFIG_IBMEBUS=y
|
||||
CONFIG_SPU_FS=m
|
||||
CONFIG_RTAS_FLASH=y
|
||||
# CONFIG_UDBG_RTAS_CONSOLE is not set
|
||||
CONFIG_PPC_SPLPAR=y
|
||||
CONFIG_SCANLOG=y
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_SERIAL_ICOM=m
|
||||
CONFIG_HVCS=m
|
||||
CONFIG_HVC_CONSOLE=y
|
||||
# CONFIG_HVC_OLD_HVSI is not set
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_THERM_PM72=y
|
||||
CONFIG_IBMVETH=m
|
||||
|
@ -59,10 +41,9 @@ CONFIG_CPU_FREQ_PMAC64=y
|
|||
CONFIG_SCSI_IPR=m
|
||||
CONFIG_SCSI_IPR_TRACE=y
|
||||
CONFIG_SCSI_IPR_DUMP=y
|
||||
CONFIG_SPIDER_NET=m
|
||||
CONFIG_HVC_RTAS=y
|
||||
CONFIG_HVC_ISERIES=y
|
||||
CONFIG_CBE_RAS=y
|
||||
CONFIG_HVC_OPAL=y
|
||||
|
||||
# iSeries device drivers
|
||||
#
|
||||
|
@ -74,19 +55,13 @@ CONFIG_VIOTAPE=m
|
|||
CONFIG_PASEMI_MAC=m
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
|
||||
CONFIG_PPC_PASEMI_IOMMU=y
|
||||
CONFIG_SERIAL_TXX9=y
|
||||
CONFIG_SERIAL_TXX9_NR_UARTS=6
|
||||
CONFIG_SERIAL_TXX9_CONSOLE=y
|
||||
|
||||
CONFIG_HVC_BEAT=y
|
||||
|
||||
CONFIG_FB_PS3=y
|
||||
CONFIG_FB_PS3_DEFAULT_SIZE_M=18
|
||||
|
||||
CONFIG_PPC_PMI=m
|
||||
CONFIG_PS3_SYS_MANAGER=y
|
||||
# CONFIG_BLK_DEV_CELLEB is not set
|
||||
|
||||
CONFIG_PATA_SCC=m
|
||||
|
||||
|
@ -94,7 +69,7 @@ CONFIG_APM_EMULATION=m
|
|||
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_VIRT_CPU_ACCOUNTING=y
|
||||
CONFIG_NR_CPUS=128
|
||||
CONFIG_NR_CPUS=1024
|
||||
# CONFIG_FB_PLATINUM is not set
|
||||
# CONFIG_FB_VALKYRIE is not set
|
||||
# CONFIG_FB_CT65550 is not set
|
||||
|
@ -107,9 +82,16 @@ CONFIG_NR_CPUS=128
|
|||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_IOMMU_VMERGE=y
|
||||
CONFIG_NUMA=y
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
CONFIG_PPC_SUBPAGE_PROT=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
||||
CONFIG_HZ=100
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
CONFIG_IRQSTACKS=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
|
@ -118,7 +100,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y
|
|||
CONFIG_EHEA=m
|
||||
CONFIG_INFINIBAND_EHCA=m
|
||||
|
||||
CONFIG_HCALL_STATS=y
|
||||
# CONFIG_HCALL_STATS is not set
|
||||
|
||||
CONFIG_XMON_DISASSEMBLY=y
|
||||
|
||||
|
@ -126,28 +108,18 @@ CONFIG_SCSI_IBMVSCSIS=m
|
|||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_TUNE_CELL=y
|
||||
# CONFIG_TUNE_CELL is not set
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
# CONFIG_BLK_DEV_PLATFORM is not set
|
||||
CONFIG_IBM_NEW_EMAC=m
|
||||
CONFIG_IBM_NEW_EMAC_RXB=128
|
||||
CONFIG_IBM_NEW_EMAC_TXB=64
|
||||
CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
|
||||
CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
|
||||
CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
|
||||
# CONFIG_IBM_NEW_EMAC_DEBUG is not set
|
||||
|
||||
# CONFIG_VIRQ_DEBUG is not set
|
||||
CONFIG_ELECTRA_CF=m
|
||||
|
||||
CONFIG_MTD_NAND_PASEMI=m
|
||||
CONFIG_EDAC_CELL=m
|
||||
CONFIG_EDAC_CPC925=m
|
||||
CONFIG_FRAME_WARN=2048
|
||||
|
||||
CONFIG_PHYP_DUMP=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
CONFIG_FORCE_MAX_ZONEORDER=9
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
|
||||
CONFIG_VSX=y
|
||||
|
@ -156,14 +128,6 @@ CONFIG_SCSI_IBMVFC=m
|
|||
# CONFIG_SCSI_IBMVFC_TRACE is not set
|
||||
CONFIG_IBM_BSR=m
|
||||
|
||||
CONFIG_SERIO_XILINX_XPS_PS2=m
|
||||
|
||||
CONFIG_PPC_IBM_CELL_RESETBUTTON=y
|
||||
CONFIG_PPC_IBM_CELL_POWERBUTTON=m
|
||||
CONFIG_CBE_CPUFREQ_SPU_GOVERNOR=m
|
||||
|
||||
CONFIG_RTC_DRV_PS3=y
|
||||
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
|
||||
|
@ -174,6 +138,8 @@ CONFIG_PERF_EVENTS=y
|
|||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_KVM_BOOK3S_64=m
|
||||
#-- Enable _HV once publicly available POWER7 hardware can use it
|
||||
# CONFIG_KVM_BOOK3S_64_HV is not set
|
||||
# CONFIG_KVM_EXIT_TIMING is not set
|
||||
|
||||
#-- bz#607175
|
||||
|
@ -181,6 +147,17 @@ CONFIG_KVM_BOOK3S_64=m
|
|||
CONFIG_PPC_SMLPAR=y
|
||||
CONFIG_CMM=y
|
||||
#-- DLPAR memory remove
|
||||
# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
|
||||
# CONFIG_COMPACTION is not set
|
||||
|
||||
CONFIG_PSERIES_ENERGY=m
|
||||
|
||||
CONFIG_PPC_ICSWX=y
|
||||
CONFIG_IO_EVENT_IRQ=y
|
||||
CONFIG_HW_RANDOM_AMD=m
|
||||
|
||||
CONFIG_BPF_JIT=y
|
||||
# CONFIG_PPC_ICSWX_PID is not set
|
||||
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
|
|
|
@ -233,3 +233,9 @@ CONFIG_SCHED_MC=y
|
|||
CONFIG_SCHED_BOOK=y
|
||||
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
# CONFIG_WARN_DYNAMIC_STACK is not set
|
||||
|
||||
CONFIG_CRYPTO_GHASH_S390=m
|
||||
CONFIG_NET_CORE=y
|
||||
CONFIG_ETHERNET=y
|
||||
|
|
|
@ -8,18 +8,7 @@ CONFIG_HZ=100
|
|||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_TABLE=m
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_STAT is not set
|
||||
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
|
||||
CONFIG_US3_FREQ=m
|
||||
CONFIG_US2E_FREQ=m
|
||||
|
||||
|
@ -54,6 +43,7 @@ CONFIG_I2C_ALI1535=m
|
|||
# CONFIG_VGASTATE is not set
|
||||
# CONFIG_FB_DDC is not set
|
||||
# CONFIG_FB_BW2 is not set
|
||||
# CONFIG_FB_GRVGA is not set
|
||||
CONFIG_FB_CG3=y
|
||||
CONFIG_FB_CG6=y
|
||||
# CONFIG_FB_RIVA is not set
|
||||
|
@ -202,8 +192,7 @@ CONFIG_FB_XVR1000=y
|
|||
|
||||
CONFIG_CRYPTO_DEV_NIAGARA2=y
|
||||
|
||||
CONFIG_JUMP_LABEL=y
|
||||
|
||||
# CONFIG_MTD_OF_PARTS is not set
|
||||
# CONFIG_MTD_PHYSMAP_OF is not set
|
||||
# CONFIG_MMC_SDHCI_OF is not set
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
|
|
|
@ -0,0 +1,209 @@
|
|||
# CONFIG_64BIT is not set
|
||||
|
||||
CONFIG_X86_32_NON_STANDARD=y
|
||||
|
||||
# CONFIG_X86_ELAN is not set
|
||||
# CONFIG_X86_NUMAQ is not set
|
||||
# CONFIG_X86_SUMMIT is not set
|
||||
CONFIG_X86_BIGSMP=y
|
||||
# CONFIG_X86_VISWS is not set
|
||||
# CONFIG_X86_RDC321X is not set
|
||||
# CONFIG_X86_ES7000 is not set
|
||||
# CONFIG_M386 is not set
|
||||
# CONFIG_M486 is not set
|
||||
# CONFIG_M586 is not set
|
||||
# CONFIG_M586TSC is not set
|
||||
# CONFIG_M586MMX is not set
|
||||
CONFIG_M686=y
|
||||
# CONFIG_MPENTIUMII is not set
|
||||
# CONFIG_MPENTIUMIII is not set
|
||||
# CONFIG_MPENTIUMM is not set
|
||||
# CONFIG_MPENTIUM4 is not set
|
||||
# CONFIG_MK6 is not set
|
||||
# CONFIG_MK7 is not set
|
||||
# CONFIG_MK8 is not set
|
||||
# CONFIG_MCRUSOE is not set
|
||||
# CONFIG_MWINCHIPC6 is not set
|
||||
# CONFIG_MWINCHIP3D is not set
|
||||
# CONFIG_MCYRIXIII is not set
|
||||
# CONFIG_MVIAC3_2 is not set
|
||||
|
||||
CONFIG_NR_CPUS=32
|
||||
CONFIG_X86_GENERIC=y
|
||||
# CONFIG_X86_PPRO_FENCE is not set
|
||||
|
||||
CONFIG_TOSHIBA=m
|
||||
|
||||
CONFIG_SONYPI=m
|
||||
CONFIG_SONYPI_COMPAT=y
|
||||
|
||||
# CONFIG_NUMA is not set
|
||||
|
||||
# CONFIG_NOHIGHMEM is not set
|
||||
CONFIG_HIGHMEM4G=y
|
||||
# CONFIG_HIGHMEM64G is not set
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_HIGHPTE=y
|
||||
|
||||
# CONFIG_MATH_EMULATION is not set
|
||||
|
||||
CONFIG_FB_GEODE=y
|
||||
CONFIG_FB_GEODE_LX=y
|
||||
CONFIG_FB_GEODE_GX=y
|
||||
# CONFIG_FB_GEODE_GX1 is not set
|
||||
|
||||
# CONFIG_PCI_GOBIOS is not set
|
||||
# CONFIG_PCI_GODIRECT is not set
|
||||
# CONFIG_PCI_GOMMCONFIG is not set
|
||||
CONFIG_PCI_GOANY=y
|
||||
|
||||
CONFIG_IBM_ASM=m
|
||||
|
||||
#
|
||||
# APM (Advanced Power Management) BIOS Support
|
||||
#
|
||||
CONFIG_APM=y
|
||||
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
|
||||
# CONFIG_APM_DO_ENABLE is not set
|
||||
CONFIG_APM_CPU_IDLE=y
|
||||
# CONFIG_APM_DISPLAY_BLANK is not set
|
||||
# CONFIG_APM_ALLOW_INTS is not set
|
||||
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=1999
|
||||
|
||||
|
||||
# CONFIG_X86_POWERNOW_K6 is not set
|
||||
CONFIG_X86_POWERNOW_K7=y
|
||||
# CONFIG_X86_GX_SUSPMOD is not set
|
||||
CONFIG_X86_SPEEDSTEP_ICH=y
|
||||
CONFIG_X86_SPEEDSTEP_SMI=y
|
||||
CONFIG_X86_SPEEDSTEP_LIB=y
|
||||
# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
|
||||
CONFIG_X86_LONGRUN=y
|
||||
# CONFIG_X86_LONGHAUL is not set
|
||||
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
|
||||
# e_powersaver is dangerous
|
||||
# CONFIG_X86_E_POWERSAVER is not set
|
||||
|
||||
CONFIG_X86_HT=y
|
||||
CONFIG_X86_TRAMPOLINE=y
|
||||
|
||||
|
||||
# CONFIG_4KSTACKS is not set
|
||||
|
||||
CONFIG_PCI_DIRECT=y
|
||||
|
||||
# SHPC has half-arsed PCI probing, which makes it load on too many systems
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
|
||||
CONFIG_BLK_DEV_AMD74XX=y
|
||||
|
||||
CONFIG_I2C_ALI1535=m
|
||||
CONFIG_I2C_ALI15X3=m
|
||||
CONFIG_I2C_ALI1563=m
|
||||
CONFIG_I2C_SIS5595=m
|
||||
CONFIG_I2C_SIS630=m
|
||||
|
||||
CONFIG_SCx200_ACB=m
|
||||
|
||||
# CONFIG_X86_REBOOTFIXUPS is not set
|
||||
|
||||
CONFIG_PC8736x_GPIO=m
|
||||
# CONFIG_NSC_GPIO is not set
|
||||
CONFIG_CS5535_GPIO=m
|
||||
CONFIG_GPIO_SCH=m
|
||||
|
||||
CONFIG_SND_ISA=y
|
||||
CONFIG_SND_ES18XX=m
|
||||
|
||||
CONFIG_HW_RANDOM_GEODE=m
|
||||
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
|
||||
CONFIG_TC1100_WMI=m
|
||||
|
||||
CONFIG_IB700_WDT=m
|
||||
|
||||
CONFIG_PHYSICAL_ALIGN=0x400000
|
||||
CONFIG_PHYSICAL_START=0x400000
|
||||
|
||||
# CONFIG_KEXEC_JUMP is not set
|
||||
|
||||
CONFIG_CRYPTO_AES_586=y
|
||||
CONFIG_CRYPTO_DEV_GEODE=m
|
||||
CONFIG_CRYPTO_TWOFISH_586=m
|
||||
|
||||
CONFIG_VIDEO_CAFE_CCIC=m
|
||||
|
||||
CONFIG_XEN_MAX_DOMAIN_MEMORY=8
|
||||
|
||||
CONFIG_MTD_NAND_CAFE=m
|
||||
|
||||
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
|
||||
|
||||
|
||||
CONFIG_OLPC=y
|
||||
CONFIG_OLPC_OPENFIRMWARE=y
|
||||
CONFIG_BATTERY_OLPC=y
|
||||
CONFIG_MOUSE_PS2_OLPC=y
|
||||
CONFIG_OLPC_XO1_PM=y
|
||||
CONFIG_OLPC_XO15_SCI=y
|
||||
CONFIG_OLPC_XO1_RTC=y
|
||||
CONFIG_OLPC_XO1_SCI=y
|
||||
# CONFIG_ALIX is not set
|
||||
# staging
|
||||
# CONFIG_FB_OLPC_DCON is not set
|
||||
|
||||
# CONFIG_SPARSE_IRQ is not set
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
# CONFIG_X86_ANCIENT_MCE is not set
|
||||
|
||||
# CONFIG_X86_MRST is not set
|
||||
|
||||
CONFIG_I2C_PXA=m
|
||||
# CONFIG_GPIO_LANGWELL is not set
|
||||
|
||||
# CONFIG_INTEL_TXT is not set
|
||||
|
||||
CONFIG_GEODE_WDT=m
|
||||
CONFIG_CS5535_MFGPT=m
|
||||
CONFIG_CS5535_CLOCK_EVENT_SRC=m
|
||||
|
||||
CONFIG_LEDS_INTEL_SS4200=m
|
||||
|
||||
CONFIG_OLPC_XO1=m
|
||||
CONFIG_XO1_RFKILL=m
|
||||
|
||||
CONFIG_X86_32_IRIS=m
|
||||
|
||||
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_PHYSMAP_OF=m
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
||||
# CONFIG_MMC_SDHCI_OF is not set
|
||||
|
||||
# CONFIG_X86_INTEL_MID is not set
|
||||
|
||||
CONFIG_MFD_CS5535=m
|
||||
|
||||
# I2O enabled only for 32-bit x86, disabled for PAE kernel
|
||||
CONFIG_I2O=m
|
||||
CONFIG_I2O_BLOCK=m
|
||||
CONFIG_I2O_SCSI=m
|
||||
CONFIG_I2O_PROC=m
|
||||
CONFIG_I2O_CONFIG=y
|
||||
CONFIG_I2O_EXT_ADAPTEC=y
|
||||
CONFIG_I2O_CONFIG_OLD_IOCTL=y
|
||||
CONFIG_I2O_BUS=m
|
||||
|
||||
# CONFIG_EDAC_SBRIDGE is not set
|
||||
|
||||
# CONFIG_X86_WANT_INTEL_MID is not set
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
|
@ -1,68 +1,30 @@
|
|||
CONFIG_UID16=y
|
||||
# CONFIG_64BIT is not set
|
||||
# CONFIG_KERNEL_LZMA is not set
|
||||
|
||||
#
|
||||
# Processor type and features
|
||||
#
|
||||
#
|
||||
# Enable summit and co via the generic arch
|
||||
#
|
||||
CONFIG_X86_EXTENDED_PLATFORM=y
|
||||
CONFIG_X86_32_NON_STANDARD=y
|
||||
|
||||
# CONFIG_X86_ELAN is not set
|
||||
# CONFIG_X86_NUMAQ is not set
|
||||
# CONFIG_X86_SUMMIT is not set
|
||||
CONFIG_X86_BIGSMP=y
|
||||
# CONFIG_X86_VISWS is not set
|
||||
# CONFIG_X86_RDC321X is not set
|
||||
# CONFIG_X86_ES7000 is not set
|
||||
# CONFIG_M386 is not set
|
||||
# CONFIG_M486 is not set
|
||||
# CONFIG_M586 is not set
|
||||
# CONFIG_M586TSC is not set
|
||||
# CONFIG_M586MMX is not set
|
||||
CONFIG_M686=y
|
||||
# CONFIG_MPENTIUMII is not set
|
||||
# CONFIG_MPENTIUMIII is not set
|
||||
# CONFIG_MPENTIUMM is not set
|
||||
# CONFIG_MPENTIUM4 is not set
|
||||
# CONFIG_MK6 is not set
|
||||
# CONFIG_MK7 is not set
|
||||
# CONFIG_MK8 is not set
|
||||
# CONFIG_MCRUSOE is not set
|
||||
# CONFIG_MWINCHIPC6 is not set
|
||||
# CONFIG_MWINCHIP3D is not set
|
||||
# CONFIG_MCYRIXIII is not set
|
||||
# CONFIG_MVIAC3_2 is not set
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=64
|
||||
|
||||
CONFIG_X86_GENERIC=y
|
||||
# CONFIG_X86_PPRO_FENCE is not set
|
||||
|
||||
CONFIG_HPET=y
|
||||
CONFIG_HPET_TIMER=y
|
||||
# CONFIG_HPET_MMAP is not set
|
||||
CONFIG_X86_MCE=y
|
||||
CONFIG_TOSHIBA=m
|
||||
|
||||
CONFIG_I8K=m
|
||||
CONFIG_SONYPI=m
|
||||
CONFIG_SONYPI_COMPAT=y
|
||||
CONFIG_MICROCODE=m
|
||||
CONFIG_MICROCODE_INTEL=y
|
||||
CONFIG_MICROCODE_AMD=y
|
||||
|
||||
CONFIG_X86_MSR=y
|
||||
CONFIG_X86_CPUID=y
|
||||
CONFIG_EDD=m
|
||||
# CONFIG_EDD_OFF is not set
|
||||
# CONFIG_NUMA is not set
|
||||
|
||||
# CONFIG_NOHIGHMEM is not set
|
||||
CONFIG_HIGHMEM4G=y
|
||||
# CONFIG_HIGHMEM64G is not set
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_HIGHPTE=y
|
||||
|
||||
# CONFIG_MATH_EMULATION is not set
|
||||
CONFIG_MTRR=y
|
||||
CONFIG_MTRR_SANITIZER=y
|
||||
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
|
||||
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
|
||||
CONFIG_X86_PAT=y
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
|
||||
|
@ -70,152 +32,80 @@ CONFIG_EFI=y
|
|||
CONFIG_EFI_VARS=y
|
||||
CONFIG_EFI_PCDP=y
|
||||
CONFIG_FB_EFI=y
|
||||
|
||||
# FIXME: 32bit only?
|
||||
# CONFIG_FB_N411 is not set
|
||||
|
||||
CONFIG_DMAR=y
|
||||
CONFIG_INTEL_IOMMU=y
|
||||
CONFIG_DMAR_BROKEN_GFX_WA=y
|
||||
CONFIG_DMAR_FLOPPY_WA=y
|
||||
CONFIG_DMAR_DEFAULT_ON=y
|
||||
|
||||
CONFIG_FB_GEODE=y
|
||||
CONFIG_FB_GEODE_LX=y
|
||||
CONFIG_FB_GEODE_GX=y
|
||||
# CONFIG_FB_GEODE_GX1 is not set
|
||||
|
||||
# CONFIG_PCI_GOBIOS is not set
|
||||
# CONFIG_PCI_GODIRECT is not set
|
||||
# CONFIG_PCI_GOMMCONFIG is not set
|
||||
CONFIG_PCI_GOANY=y
|
||||
|
||||
#
|
||||
# x86 specific drivers
|
||||
#
|
||||
CONFIG_PCMCIA_FDOMAIN=m
|
||||
CONFIG_SCSI_FUTURE_DOMAIN=m
|
||||
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
|
||||
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
|
||||
CONFIG_SCSI_ADVANSYS=m
|
||||
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_CAPI_EICON=y
|
||||
|
||||
# I2O enabled only for 32-bit x86, disabled for PAE kernel
|
||||
CONFIG_I2O=m
|
||||
CONFIG_I2O_BLOCK=m
|
||||
CONFIG_I2O_SCSI=m
|
||||
CONFIG_I2O_PROC=m
|
||||
CONFIG_I2O_CONFIG=y
|
||||
CONFIG_I2O_EXT_ADAPTEC=y
|
||||
CONFIG_I2O_CONFIG_OLD_IOCTL=y
|
||||
CONFIG_I2O_BUS=m
|
||||
|
||||
#
|
||||
# APM (Advanced Power Management) BIOS Support
|
||||
#
|
||||
CONFIG_APM=y
|
||||
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
|
||||
# CONFIG_APM_DO_ENABLE is not set
|
||||
CONFIG_APM_CPU_IDLE=y
|
||||
# CONFIG_APM_DISPLAY_BLANK is not set
|
||||
# CONFIG_APM_ALLOW_INTS is not set
|
||||
|
||||
#
|
||||
# Kernel debugging
|
||||
#
|
||||
CONFIG_X86_MPPARSE=y
|
||||
# CONFIG_X86_VERBOSE_BOOTUP is not set
|
||||
# CONFIG_MMIOTRACE_TEST is not set
|
||||
# CONFIG_DEBUG_PER_CPU_MAPS is not set
|
||||
CONFIG_DEBUG_RODATA=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
# CONFIG_ACPI_ASUS is not set
|
||||
CONFIG_ACPI_PROCFS_POWER=y
|
||||
CONFIG_ACPI_SYSFS_POWER=y
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=1999
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_CONTAINER=m
|
||||
CONFIG_ACPI_DOCK=y
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_NUMA=y
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_POWER=y
|
||||
CONFIG_ACPI_PROCFS=y
|
||||
CONFIG_ACPI_SBS=m
|
||||
CONFIG_ACPI_SLEEP=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_TOPSTAR_LAPTOP=m
|
||||
CONFIG_ACPI_TOSHIBA=m
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# FIXME: Next two are deprecated. Remove them when they disappear upstream
|
||||
# CONFIG_ACPI_PROCFS_POWER is not set
|
||||
# CONFIG_ACPI_PROC_EVENT is not set
|
||||
CONFIG_PNPACPI=y
|
||||
CONFIG_ACPI_POWER_METER=m
|
||||
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
|
||||
CONFIG_ACPI_HED=m
|
||||
CONFIG_ACPI_APEI=y
|
||||
CONFIG_ACPI_APEI_GHES=m
|
||||
CONFIG_ACPI_APEI_PCIEAER=y
|
||||
CONFIG_ACPI_APEI_GHES=y
|
||||
CONFIG_ACPI_APEI_MEMORY_FAILURE=y
|
||||
# CONFIG_ACPI_APEI_EINJ is not set
|
||||
CONFIG_ACPI_IPMI=m
|
||||
|
||||
#
|
||||
# CPUFreq processor drivers
|
||||
#
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_STAT=m
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
CONFIG_ACPI_CUSTOM_METHOD=m
|
||||
|
||||
CONFIG_X86_ACPI_CPUFREQ=m
|
||||
CONFIG_X86_PCC_CPUFREQ=m
|
||||
# CONFIG_X86_POWERNOW_K6 is not set
|
||||
CONFIG_X86_POWERNOW_K7=y
|
||||
CONFIG_X86_POWERNOW_K8=m
|
||||
# CONFIG_X86_GX_SUSPMOD is not set
|
||||
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
||||
CONFIG_X86_SPEEDSTEP_ICH=y
|
||||
CONFIG_X86_SPEEDSTEP_SMI=y
|
||||
CONFIG_X86_SPEEDSTEP_LIB=y
|
||||
# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
|
||||
CONFIG_X86_P4_CLOCKMOD=m
|
||||
CONFIG_X86_LONGRUN=y
|
||||
# CONFIG_X86_LONGHAUL is not set
|
||||
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
|
||||
# e_powersaver is dangerous
|
||||
# CONFIG_X86_E_POWERSAVER is not set
|
||||
|
||||
CONFIG_X86_HT=y
|
||||
CONFIG_X86_TRAMPOLINE=y
|
||||
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
||||
|
||||
#
|
||||
# various x86 specific drivers
|
||||
#
|
||||
CONFIG_NVRAM=y
|
||||
CONFIG_IBM_ASM=m
|
||||
CONFIG_CRYPTO_AES_586=m
|
||||
CONFIG_CRYPTO_TWOFISH_586=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
|
||||
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
|
||||
CONFIG_DEBUG_RODATA=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_4KSTACKS is not set
|
||||
CONFIG_DEBUG_NMI_TIMEOUT=5
|
||||
|
||||
CONFIG_PCI_DIRECT=y
|
||||
CONFIG_PCI_MMCONFIG=y
|
||||
CONFIG_PCI_BIOS=y
|
||||
|
||||
|
@ -224,8 +114,7 @@ CONFIG_HOTPLUG_PCI_COMPAQ=m
|
|||
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
|
||||
CONFIG_HOTPLUG_PCI_IBM=m
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# SHPC has half-arsed PCI probing, which makes it load on too many systems
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
|
||||
CONFIG_PM=y
|
||||
|
||||
CONFIG_IPW2100=m
|
||||
|
@ -238,9 +127,6 @@ CONFIG_IPW2200_QOS=y
|
|||
|
||||
CONFIG_BLK_DEV_AMD74XX=y
|
||||
|
||||
CONFIG_I2C_ALI1535=m
|
||||
CONFIG_I2C_ALI15X3=m
|
||||
CONFIG_I2C_ALI1563=m
|
||||
CONFIG_I2C_AMD756=m
|
||||
CONFIG_I2C_AMD756_S4882=m
|
||||
CONFIG_I2C_AMD8111=m
|
||||
|
@ -249,45 +135,35 @@ CONFIG_I2C_ISCH=m
|
|||
CONFIG_I2C_NFORCE2=m
|
||||
CONFIG_I2C_NFORCE2_S4985=m
|
||||
CONFIG_I2C_PIIX4=m
|
||||
CONFIG_I2C_SIS5595=m
|
||||
CONFIG_I2C_SIS630=m
|
||||
CONFIG_I2C_SIS96X=m
|
||||
|
||||
CONFIG_I2C_VIA=m
|
||||
CONFIG_I2C_VIAPRO=m
|
||||
|
||||
CONFIG_SCx200_ACB=m
|
||||
|
||||
# CONFIG_X86_REBOOTFIXUPS is not set
|
||||
|
||||
CONFIG_DELL_RBU=m
|
||||
CONFIG_DCDBAS=m
|
||||
|
||||
CONFIG_GPIO_SCH=m
|
||||
CONFIG_PC8736x_GPIO=m
|
||||
# CONFIG_NSC_GPIO is not set
|
||||
CONFIG_CS5535_GPIO=m
|
||||
|
||||
CONFIG_EDAC=y
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_AMD76X=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
CONFIG_EDAC_AMD8131=m
|
||||
CONFIG_EDAC_E7XXX=m
|
||||
CONFIG_EDAC_E752X=m
|
||||
CONFIG_EDAC_I82860=m
|
||||
CONFIG_EDAC_I82875P=m
|
||||
CONFIG_EDAC_I82975X=m
|
||||
CONFIG_EDAC_I3000=m
|
||||
CONFIG_EDAC_I3200=m
|
||||
CONFIG_EDAC_I5000=m
|
||||
CONFIG_EDAC_I5100=m
|
||||
CONFIG_EDAC_I5400=m
|
||||
CONFIG_EDAC_R82600=m
|
||||
CONFIG_EDAC_AMD8131=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
CONFIG_EDAC_I7CORE=m
|
||||
CONFIG_EDAC_I3000=m
|
||||
CONFIG_EDAC_I7300=m
|
||||
CONFIG_EDAC_I7CORE=m
|
||||
CONFIG_EDAC_R82600=m
|
||||
CONFIG_EDAC_X38=m
|
||||
CONFIG_EDAC_MCE_INJ=m
|
||||
CONFIG_EDAC_DECODE_MCE=m
|
||||
|
||||
CONFIG_SCHED_MC=y
|
||||
|
||||
|
@ -298,90 +174,93 @@ CONFIG_TCG_INFINEON=m
|
|||
|
||||
CONFIG_HW_RANDOM_INTEL=m
|
||||
CONFIG_HW_RANDOM_AMD=m
|
||||
CONFIG_HW_RANDOM_GEODE=m
|
||||
CONFIG_HW_RANDOM_VIA=m
|
||||
|
||||
|
||||
# CONFIG_COMPAT_VDSO is not set
|
||||
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
|
||||
CONFIG_X86_PLATFORM_DEVICES=y
|
||||
|
||||
CONFIG_ASUS_LAPTOP=m
|
||||
CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_DELL_LAPTOP=m
|
||||
CONFIG_EEEPC_LAPTOP=m
|
||||
CONFIG_EEEPC_WMI=m
|
||||
CONFIG_FUJITSU_LAPTOP=m
|
||||
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
|
||||
CONFIG_IDEAPAD_LAPTOP=m
|
||||
CONFIG_MSI_LAPTOP=m
|
||||
CONFIG_PANASONIC_LAPTOP=m
|
||||
CONFIG_SAMSUNG_LAPTOP=m
|
||||
CONFIG_SONY_LAPTOP=m
|
||||
CONFIG_DELL_LAPTOP=m
|
||||
CONFIG_TOPSTAR_LAPTOP=m
|
||||
|
||||
CONFIG_ACPI_WMI=m
|
||||
CONFIG_ACER_WMI=m
|
||||
CONFIG_ACERHDF=m
|
||||
CONFIG_TC1100_WMI=m
|
||||
CONFIG_ASUS_WMI=m
|
||||
CONFIG_ASUS_NB_WMI=m
|
||||
CONFIG_HP_WMI=m
|
||||
# CONFIG_INTEL_SCU_IPC is not set
|
||||
CONFIG_DELL_WMI=m
|
||||
CONFIG_DELL_WMI_AIO=m
|
||||
CONFIG_EEEPC_WMI=m
|
||||
CONFIG_INTEL_OAKTRAIL=m
|
||||
CONFIG_SAMSUNG_Q10=m
|
||||
CONFIG_XO15_EBOOK=m
|
||||
|
||||
# CONFIG_TOUCHSCREEN_INTEL_MID is not set
|
||||
|
||||
# CONFIG_SMSC37B787_WDT is not set
|
||||
CONFIG_W83697HF_WDT=m
|
||||
CONFIG_IB700_WDT=m
|
||||
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_PHYSICAL_ALIGN=0x400000
|
||||
CONFIG_PHYSICAL_START=0x400000
|
||||
CONFIG_CRASH_DUMP=y
|
||||
# CONFIG_KEXEC_JUMP is not set
|
||||
CONFIG_PROC_VMCORE=y
|
||||
CONFIG_CRASH=m
|
||||
|
||||
CONFIG_CRYPTO_DEV_GEODE=m
|
||||
|
||||
CONFIG_VIDEO_CAFE_CCIC=m
|
||||
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
CONFIG_KVM_INTEL=m
|
||||
CONFIG_KVM_AMD=m
|
||||
CONFIG_LGUEST=m
|
||||
CONFIG_LGUEST_GUEST=y
|
||||
|
||||
CONFIG_PARAVIRT_GUEST=y
|
||||
CONFIG_PARAVIRT=y
|
||||
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
|
||||
# CONFIG_PARAVIRT_DEBUG is not set
|
||||
|
||||
# PARAVIRT_SPINLOCKS has a 5% perf hit
|
||||
# PARAVIRT_SPINLOCKS has a 5% perf hit on native hw (see kconfig)
|
||||
# CONFIG_PARAVIRT_SPINLOCKS is not set
|
||||
|
||||
CONFIG_KVM_CLOCK=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
CONFIG_KVM_MMU_AUDIT=y # default $x would be nice...
|
||||
CONFIG_LGUEST_GUEST=y
|
||||
CONFIG_VMI=y
|
||||
|
||||
CONFIG_XEN=y
|
||||
CONFIG_XEN_MAX_DOMAIN_MEMORY=8
|
||||
# CONFIG_XEN_DEBUG is not set
|
||||
CONFIG_XEN_BALLOON=y
|
||||
CONFIG_XEN_SCRUB_PAGES=y
|
||||
CONFIG_XEN_SAVE_RESTORE=y
|
||||
CONFIG_HVC_XEN=y
|
||||
CONFIG_XEN_FBDEV_FRONTEND=y
|
||||
CONFIG_XEN_KBDDEV_FRONTEND=y
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=m
|
||||
CONFIG_XEN_NETDEV_FRONTEND=m
|
||||
CONFIG_XEN_NETDEV_BACKEND=m
|
||||
CONFIG_XEN_WDT=m
|
||||
CONFIG_XEN_GRANT_DEV_ALLOC=m
|
||||
CONFIG_XEN_PCIDEV_FRONTEND=m
|
||||
CONFIG_XENFS=m
|
||||
CONFIG_XEN_COMPAT_XENFS=y
|
||||
CONFIG_XEN_BACKEND=y
|
||||
CONFIG_XEN_BLKDEV_BACKEND=m
|
||||
CONFIG_XEN_DEBUG_FS=y
|
||||
CONFIG_XEN_PLATFORM_PCI=m
|
||||
CONFIG_XEN_PLATFORM_PCI=y
|
||||
CONFIG_XEN_GNTDEV=m
|
||||
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
|
||||
CONFIG_XEN_SELFBALLOONING=y
|
||||
CONFIG_XEN_PCIDEV_BACKEND=m
|
||||
|
||||
CONFIG_MTD_ESB2ROM=m
|
||||
CONFIG_MTD_CK804XROM=m
|
||||
CONFIG_MTD_NAND_CAFE=m
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
|
@ -400,6 +279,8 @@ CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
|
|||
CONFIG_MACINTOSH_DRIVERS=y
|
||||
|
||||
CONFIG_DMIID=y
|
||||
CONFIG_DMI_SYSFS=y
|
||||
|
||||
CONFIG_ISCSI_IBFT_FIND=y
|
||||
CONFIG_ISCSI_IBFT=m
|
||||
|
||||
|
@ -407,97 +288,56 @@ CONFIG_DMADEVICES=y
|
|||
CONFIG_INTEL_IOATDMA=m
|
||||
|
||||
CONFIG_SENSORS_I5K_AMB=m
|
||||
CONFIG_SENSORS_FAM15H_POWER=m
|
||||
CONFIG_SENSORS_ACPI_POWER=m
|
||||
|
||||
# CONFIG_CPA_DEBUG is not set
|
||||
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
|
||||
|
||||
CONFIG_HP_WATCHDOG=m
|
||||
CONFIG_NV_TCO=m
|
||||
CONFIG_SP5100_TCO=m
|
||||
|
||||
CONFIG_OLPC=y
|
||||
CONFIG_OLPC_OPENFIRMWARE=y
|
||||
CONFIG_BATTERY_OLPC=y
|
||||
CONFIG_MOUSE_PS2_OLPC=y
|
||||
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
# CONFIG_NO_BOOTMEM is not set
|
||||
|
||||
# CONFIG_MEMTEST is not set
|
||||
# CONFIG_MAXSMP is not set
|
||||
CONFIG_MTRR_SANITIZER=y
|
||||
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
|
||||
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
|
||||
CONFIG_SYSPROF_TRACER=y
|
||||
|
||||
# CONFIG_X86_VERBOSE_BOOTUP is not set
|
||||
# CONFIG_MMIOTRACE_TEST is not set
|
||||
|
||||
# CONFIG_DEBUG_PER_CPU_MAPS is not set
|
||||
|
||||
CONFIG_HP_ILO=m
|
||||
|
||||
CONFIG_BACKLIGHT_APPLE=m
|
||||
|
||||
CONFIG_OPROFILE_IBS=y
|
||||
CONFIG_MICROCODE_INTEL=y
|
||||
CONFIG_MICROCODE_AMD=y
|
||||
|
||||
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
|
||||
CONFIG_X86_RESERVE_LOW_64K=y
|
||||
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
|
||||
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
CONFIG_PANASONIC_LAPTOP=m
|
||||
|
||||
CONFIG_X86_PTRACE_BTS=y
|
||||
|
||||
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
|
||||
|
||||
CONFIG_POWER_TRACER=y
|
||||
CONFIG_HW_BRANCH_TRACER=y
|
||||
|
||||
# CONFIG_SPARSE_IRQ is not set
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
# CONFIG_IOMMU_STRESS is not set
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
CONFIG_X86_MCE=y
|
||||
CONFIG_X86_MCE_INTEL=y
|
||||
CONFIG_X86_MCE_AMD=y
|
||||
# CONFIG_X86_ANCIENT_MCE is not set
|
||||
# CONFIG_X86_MCE_INJECT is not set
|
||||
|
||||
# CONFIG_X86_MRST is not set
|
||||
CONFIG_SFI=y
|
||||
|
||||
CONFIG_INPUT_WINBOND_CIR=m
|
||||
CONFIG_I2C_SCMI=m
|
||||
CONFIG_SBC_FITPC2_WATCHDOG=m
|
||||
CONFIG_EDAC_I3200=m
|
||||
CONFIG_EDAC_DECODE_MCE=m
|
||||
|
||||
# CONFIG_GPIO_LANGWELL is not set
|
||||
|
||||
# CONFIG_INTEL_TXT is not set
|
||||
|
||||
CONFIG_CS5535_MFGPT=m
|
||||
CONFIG_GEODE_WDT=m
|
||||
CONFIG_CS5535_CLOCK_EVENT_SRC=m
|
||||
|
||||
CONFIG_LEDS_INTEL_SS4200=m
|
||||
|
||||
CONFIG_X86_DECODER_SELFTEST=y
|
||||
|
||||
CONFIG_ACPI_CMPC=m
|
||||
CONFIG_MSI_WMI=m
|
||||
CONFIG_TOSHIBA_BT_RFKILL=m
|
||||
# CONFIG_SAMSUNG_LAPTOP is not set
|
||||
|
||||
CONFIG_VGA_SWITCHEROO=y
|
||||
CONFIG_LPC_SCH=m
|
||||
|
@ -506,41 +346,53 @@ CONFIG_PCI_CNB20LE_QUIRK=y
|
|||
|
||||
CONFIG_ACPI_EC_DEBUGFS=m
|
||||
# CONFIG_ACPI_APEI_ERST_DEBUG is not set
|
||||
# CONFIG_ACPI_QUICKSTART is not set
|
||||
|
||||
CONFIG_INTEL_IDLE=y
|
||||
|
||||
# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
|
||||
CONFIG_SENSORS_PKGTEMP=m
|
||||
CONFIG_F71808E_WDT=m
|
||||
CONFIG_HPWDT_NMI_DECODING=y
|
||||
# CONFIG_MFD_TPS6586X is not set
|
||||
# CONFIG_INTEL_MID_DMAC is not set
|
||||
CONFIG_PCH_DMA=m
|
||||
# CONFIG_ACPI_QUICKSTART is not set
|
||||
CONFIG_IDEAPAD_ACPI=m
|
||||
CONFIG_INTEL_IPS=m
|
||||
# CONFIG_IBM_RTL is not set
|
||||
|
||||
CONFIG_OLPC_XO1=m
|
||||
CONFIG_XO1_RFKILL=m
|
||||
CONFIG_VIDEO_VIA_CAMERA=m
|
||||
|
||||
CONFIG_EDAC_MCE_INJ=m
|
||||
CONFIG_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_X86_RESERVE_LOW=64
|
||||
|
||||
CONFIG_PCH_GBE=m
|
||||
CONFIG_PCH_PHUB=m
|
||||
|
||||
CONFIG_JUMP_LABEL=y
|
||||
|
||||
CONFIG_X86_32_IRIS=m
|
||||
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
|
||||
CONFIG_CRYPTO_AES_NI_INTEL=m
|
||||
CONFIG_CRYPTO_AES_NI_INTEL=y
|
||||
|
||||
CONFIG_MTD_OF_PARTS=m
|
||||
CONFIG_MTD_PHYSMAP_OF=m
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=m
|
||||
CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
||||
# CONFIG_MMC_SDHCI_OF is not set
|
||||
CONFIG_HP_ACCEL=m
|
||||
|
||||
# CONFIG_RAPIDIO is not set
|
||||
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
|
||||
# CONFIG_HYPERV is not set
|
||||
|
||||
CONFIG_EFI_STUB=y
|
||||
CONFIG_PCI_IOAPIC=y
|
||||
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
|
||||
CONFIG_VIA_WDT=m
|
||||
# CONFIG_V4L_RADIO_ISA_DRIVERS is not set
|
||||
CONFIG_DRM_GMA500=m
|
||||
CONFIG_FUJITSU_TABLET=m
|
||||
CONFIG_AMILO_RFKILL=m
|
||||
# CONFIG_DEBUG_NMI_SELFTEST is not set
|
||||
CONFIG_CRYPTO_SERPENT_SSE2_586=m
|
||||
# CONFIG_DRM_GMA600 is not set
|
||||
# CONFIG_DRM_GMA3600 is not set
|
||||
|
|
|
@ -1,232 +1,62 @@
|
|||
CONFIG_64BIT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_KERNEL_LZMA is not set
|
||||
|
||||
# CONFIG_MK8 is not set
|
||||
# CONFIG_MPSC is not set
|
||||
CONFIG_GENERIC_CPU=y
|
||||
CONFIG_X86_EXTENDED_PLATFORM=y
|
||||
|
||||
# CONFIG_X86_VSMP is not set
|
||||
# CONFIG_X86_UV is not set
|
||||
CONFIG_X86_MSR=y
|
||||
CONFIG_X86_CPUID=y
|
||||
CONFIG_MTRR=y
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_K8_NUMA=y
|
||||
CONFIG_AMD_NUMA=y
|
||||
CONFIG_X86_64_ACPI_NUMA=y
|
||||
# CONFIG_NUMA_EMU is not set
|
||||
|
||||
CONFIG_NR_CPUS=256
|
||||
CONFIG_X86_POWERNOW_K8=m
|
||||
CONFIG_X86_P4_CLOCKMOD=m
|
||||
CONFIG_PHYSICAL_START=0x1000000
|
||||
|
||||
CONFIG_IA32_EMULATION=y
|
||||
# CONFIG_IA32_AOUT is not set
|
||||
|
||||
CONFIG_AMD_IOMMU=y
|
||||
CONFIG_AMD_IOMMU_STATS=y
|
||||
# CONFIG_IOMMU_DEBUG is not set
|
||||
CONFIG_DEBUG_RODATA=y
|
||||
CONFIG_MICROCODE=m
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_CALGARY_IOMMU=y
|
||||
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
CONFIG_EDD=m
|
||||
# CONFIG_EDD_OFF is not set
|
||||
CONFIG_PCI_BIOS=y
|
||||
CONFIG_PCI_MMCONFIG=y
|
||||
CONFIG_DMAR=y
|
||||
CONFIG_DMAR_BROKEN_GFX_WA=y
|
||||
CONFIG_DMAR_FLOPPY_WA=y
|
||||
CONFIG_DMAR_DEFAULT_ON=y
|
||||
# CONFIG_CALGARY_IOMMU is not set
|
||||
|
||||
CONFIG_KEXEC_JUMP=y
|
||||
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFI_VARS=y
|
||||
CONFIG_EFI_PCDP=y
|
||||
CONFIG_FB_EFI=y
|
||||
|
||||
CONFIG_SCSI_ADVANSYS=m
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
||||
CONFIG_CAPI_EICON=y
|
||||
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
|
||||
CONFIG_CPU_FREQ=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=m
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
|
||||
CONFIG_CPU_FREQ_TABLE=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
||||
CONFIG_X86_PCC_CPUFREQ=m
|
||||
CONFIG_X86_ACPI_CPUFREQ=m
|
||||
CONFIG_CPU_FREQ_STAT=m
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
# CONFIG_ACPI_ASUS is not set
|
||||
CONFIG_ACPI_PROCFS_POWER=y
|
||||
CONFIG_ACPI_SYSFS_POWER=y
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=0
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_CONTAINER=m
|
||||
CONFIG_ACPI_DOCK=y
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_HOTPLUG_MEMORY=m
|
||||
CONFIG_ACPI_NUMA=y
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_PROCFS=y
|
||||
CONFIG_ACPI_SBS=m
|
||||
CONFIG_ACPI_SLEEP=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_ACPI_TOSHIBA=m
|
||||
CONFIG_ACPI_POWER=y
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
# CONFIG_ACPI_PROC_EVENT is not set
|
||||
CONFIG_ACPI_POWER_METER=m
|
||||
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
|
||||
CONFIG_ACPI_HED=m
|
||||
CONFIG_ACPI_APEI=y
|
||||
CONFIG_ACPI_APEI_GHES=m
|
||||
# CONFIG_ACPI_APEI_EINJ is not set
|
||||
CONFIG_ACPI_IPMI=m
|
||||
|
||||
CONFIG_X86_PLATFORM_DEVICES=y
|
||||
CONFIG_ASUS_LAPTOP=m
|
||||
CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_FUJITSU_LAPTOP=m
|
||||
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
|
||||
CONFIG_MSI_LAPTOP=m
|
||||
CONFIG_SONY_LAPTOP=m
|
||||
CONFIG_SONYPI_COMPAT=y
|
||||
CONFIG_EEEPC_LAPTOP=m
|
||||
CONFIG_EEEPC_WMI=m
|
||||
CONFIG_DELL_LAPTOP=m
|
||||
CONFIG_ACPI_WMI=m
|
||||
CONFIG_ACER_WMI=m
|
||||
CONFIG_ACERHDF=m
|
||||
CONFIG_HP_WMI=m
|
||||
CONFIG_DELL_WMI=m
|
||||
# CONFIG_INTEL_SCU_IPC is not set
|
||||
|
||||
# CONFIG_TOUCHSCREEN_INTEL_MID is not set
|
||||
|
||||
CONFIG_THINKPAD_ACPI=m
|
||||
# CONFIG_THINKPAD_ACPI_DEBUG is not set
|
||||
# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
|
||||
CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
|
||||
CONFIG_THINKPAD_ACPI_VIDEO=y
|
||||
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
|
||||
# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
|
||||
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_COMPAQ=m
|
||||
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
|
||||
CONFIG_HOTPLUG_PCI_IBM=m
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# SHPC has half-arsed PCI probing, which makes it load on too many systems
|
||||
CONFIG_HOTPLUG_PCI_SHPC=m
|
||||
|
||||
CONFIG_HPET=y
|
||||
# CONFIG_HPET_MMAP is not set
|
||||
CONFIG_PM=y
|
||||
|
||||
CONFIG_IPW2100=m
|
||||
CONFIG_IPW2100_MONITOR=y
|
||||
CONFIG_IPW2200=m
|
||||
CONFIG_IPW2200_MONITOR=y
|
||||
CONFIG_IPW2200_RADIOTAP=y
|
||||
CONFIG_IPW2200_PROMISCUOUS=y
|
||||
CONFIG_IPW2200_QOS=y
|
||||
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PNPACPI=y
|
||||
|
||||
# Really ? not 32bit only ?
|
||||
CONFIG_BLK_DEV_AMD74XX=y
|
||||
CONFIG_CRYPTO_DEV_PADLOCK=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
|
||||
|
||||
CONFIG_CRYPTO_AES_X86_64=y
|
||||
CONFIG_CRYPTO_AES_NI_INTEL=y
|
||||
CONFIG_CRYPTO_TWOFISH_X86_64=m
|
||||
CONFIG_CRYPTO_SALSA20_X86_64=m
|
||||
|
||||
CONFIG_X86_MCE=y
|
||||
CONFIG_X86_MCE_INTEL=y
|
||||
CONFIG_X86_MCE_AMD=y
|
||||
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
|
||||
CONFIG_CRYPTO_SHA1_SSSE3=m
|
||||
CONFIG_CRYPTO_BLOWFISH_X86_64=m
|
||||
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
|
||||
|
||||
# CONFIG_I2C_ALI1535 is not set
|
||||
# CONFIG_I2C_ALI1563 is not set
|
||||
# CONFIG_I2C_ALI15X3 is not set
|
||||
CONFIG_I2C_AMD756=m
|
||||
CONFIG_I2C_AMD756_S4882=m
|
||||
CONFIG_I2C_AMD8111=m
|
||||
CONFIG_I2C_I801=m
|
||||
CONFIG_I2C_ISCH=m
|
||||
CONFIG_I2C_NFORCE2_S4985=m
|
||||
CONFIG_I2C_PIIX4=m
|
||||
# CONFIG_I2C_SIS5595 is not set
|
||||
# CONFIG_I2C_SIS630 is not set
|
||||
|
||||
CONFIG_I2C_SIS96X=m
|
||||
CONFIG_I2C_VIA=m
|
||||
CONFIG_I2C_VIAPRO=m
|
||||
|
||||
CONFIG_DELL_RBU=m
|
||||
CONFIG_DCDBAS=m
|
||||
|
||||
CONFIG_NVRAM=y
|
||||
|
||||
CONFIG_EDAC=y
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_AMD76X=m
|
||||
CONFIG_EDAC_E7XXX=m
|
||||
CONFIG_EDAC_E752X=m
|
||||
CONFIG_EDAC_I5000=m
|
||||
CONFIG_EDAC_I5100=m
|
||||
CONFIG_EDAC_I5400=m
|
||||
CONFIG_EDAC_I82875P=m
|
||||
CONFIG_EDAC_I82860=m
|
||||
CONFIG_EDAC_I82975X=m
|
||||
CONFIG_EDAC_R82600=m
|
||||
CONFIG_EDAC_AMD8131=m
|
||||
CONFIG_EDAC_AMD8111=m
|
||||
CONFIG_EDAC_AMD64=m
|
||||
# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
|
||||
CONFIG_EDAC_DECODE_MCE=m
|
||||
CONFIG_EDAC_I7CORE=m
|
||||
CONFIG_EDAC_I3000=m
|
||||
CONFIG_EDAC_I7300=m
|
||||
CONFIG_EDAC_X38=m
|
||||
CONFIG_EDAC_SBRIDGE=m
|
||||
|
||||
CONFIG_SCHED_MC=y
|
||||
|
||||
CONFIG_TCG_INFINEON=m
|
||||
|
||||
CONFIG_HW_RANDOM_INTEL=m
|
||||
CONFIG_HW_RANDOM_AMD=m
|
||||
CONFIG_HW_RANDOM_VIA=m
|
||||
|
||||
# CONFIG_HW_RANDOM_GEODE is not set
|
||||
|
||||
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_DEBUG_NMI_TIMEOUT=5
|
||||
|
||||
CONFIG_GPIO_SCH=m
|
||||
# CONFIG_PC8736x_GPIO is not set
|
||||
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
|
@ -235,8 +65,8 @@ CONFIG_SPARSEMEM=y
|
|||
CONFIG_HAVE_MEMORY_PRESENT=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
# CONFIG_MEMORY_HOTPLUG is not set
|
||||
# CONFIG_MEMORY_HOTREMOVE is not set
|
||||
|
||||
# CONFIG_BLK_DEV_CMD640 is not set
|
||||
# CONFIG_BLK_DEV_RZ1000 is not set
|
||||
|
@ -245,207 +75,49 @@ CONFIG_MEMORY_HOTREMOVE=y
|
|||
# CONFIG_BLK_DEV_CS5530 is not set
|
||||
# CONFIG_BLK_DEV_CS5535 is not set
|
||||
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
|
||||
CONFIG_SGI_IOC4=m
|
||||
CONFIG_SGI_XP=m
|
||||
CONFIG_SGI_GRU=m
|
||||
# CONFIG_SGI_GRU_DEBUG is not set
|
||||
|
||||
# CONFIG_SMSC37B787_WDT is not set
|
||||
CONFIG_W83697HF_WDT=m
|
||||
|
||||
# CONFIG_VIDEO_CAFE_CCIC is not set
|
||||
|
||||
CONFIG_MTD_ESB2ROM=m
|
||||
CONFIG_MTD_CK804XROM=m
|
||||
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_MACINTOSH_DRIVERS=y
|
||||
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_PHYSICAL_START=0x1000000
|
||||
CONFIG_PROC_VMCORE=y
|
||||
CONFIG_CRASH=m
|
||||
|
||||
CONFIG_DMIID=y
|
||||
CONFIG_ISCSI_IBFT_FIND=y
|
||||
CONFIG_ISCSI_IBFT=m
|
||||
|
||||
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
CONFIG_KVM_INTEL=m
|
||||
CONFIG_KVM_AMD=m
|
||||
|
||||
CONFIG_PARAVIRT_GUEST=y
|
||||
CONFIG_PARAVIRT=y
|
||||
# CONFIG_PARAVIRT_DEBUG is not set
|
||||
# PARAVIRT_SPINLOCKS has a 5% perf hit
|
||||
# CONFIG_PARAVIRT_SPINLOCKS is not set
|
||||
CONFIG_KVM_CLOCK=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
CONFIG_KVM_MMU_AUDIT=y
|
||||
|
||||
CONFIG_XEN=y
|
||||
CONFIG_XEN_MAX_DOMAIN_MEMORY=32
|
||||
CONFIG_XEN_BALLOON=y
|
||||
CONFIG_XEN_SCRUB_PAGES=y
|
||||
CONFIG_XEN_SAVE_RESTORE=y
|
||||
CONFIG_HVC_XEN=y
|
||||
CONFIG_XEN_FBDEV_FRONTEND=y
|
||||
CONFIG_XEN_KBDDEV_FRONTEND=y
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=m
|
||||
CONFIG_XEN_NETDEV_FRONTEND=m
|
||||
CONFIG_XEN_PCIDEV_FRONTEND=m
|
||||
CONFIG_XENFS=m
|
||||
CONFIG_XEN_COMPAT_XENFS=y
|
||||
CONFIG_XEN_MAX_DOMAIN_MEMORY=128
|
||||
# CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is not set
|
||||
CONFIG_XEN_DEV_EVTCHN=m
|
||||
CONFIG_XEN_SYS_HYPERVISOR=y
|
||||
CONFIG_XEN_BACKEND=y
|
||||
CONFIG_XEN_GNTDEV=m
|
||||
CONFIG_XEN_DEBUG_FS=y
|
||||
CONFIG_XEN_PLATFORM_PCI=m
|
||||
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_INTEL_IOATDMA=m
|
||||
|
||||
CONFIG_SENSORS_I5K_AMB=m
|
||||
|
||||
# CONFIG_COMPAT_VDSO is not set
|
||||
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
|
||||
# CONFIG_DEBUG_PER_CPU_MAPS is not set
|
||||
# CONFIG_CPA_DEBUG is not set
|
||||
|
||||
CONFIG_HP_WATCHDOG=m
|
||||
CONFIG_NV_TCO=m
|
||||
CONFIG_SP5100_TCO=m
|
||||
|
||||
CONFIG_FRAME_WARN=2048
|
||||
|
||||
CONFIG_NODES_SHIFT=9
|
||||
CONFIG_X86_PAT=y
|
||||
# FIXME: These should be 32bit only
|
||||
# CONFIG_FB_N411 is not set
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
|
||||
CONFIG_DIRECT_GBPAGES=y
|
||||
|
||||
# CONFIG_NO_BOOTMEM is not set
|
||||
|
||||
# CONFIG_MEMTEST is not set
|
||||
CONFIG_AMD_IOMMU=y
|
||||
CONFIG_AMD_IOMMU_STATS=y
|
||||
# CONFIG_MAXSMP is not set
|
||||
CONFIG_MTRR_SANITIZER=y
|
||||
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
|
||||
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
|
||||
CONFIG_SYSPROF_TRACER=y
|
||||
# CONFIG_X86_VERBOSE_BOOTUP is not set
|
||||
# CONFIG_MMIOTRACE_TEST is not set
|
||||
|
||||
CONFIG_X86_MPPARSE=y
|
||||
|
||||
CONFIG_BACKLIGHT_APPLE=m
|
||||
|
||||
CONFIG_OPROFILE_IBS=y
|
||||
CONFIG_MICROCODE_INTEL=y
|
||||
CONFIG_MICROCODE_AMD=y
|
||||
|
||||
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
|
||||
CONFIG_X86_RESERVE_LOW_64K=y
|
||||
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
CONFIG_PANASONIC_LAPTOP=m
|
||||
|
||||
CONFIG_X86_PTRACE_BTS=y
|
||||
|
||||
CONFIG_I7300_IDLE=m
|
||||
CONFIG_INTR_REMAP=y
|
||||
|
||||
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
|
||||
|
||||
CONFIG_POWER_TRACER=y
|
||||
CONFIG_HW_BRANCH_TRACER=y
|
||||
CONFIG_IRQ_REMAP=y
|
||||
|
||||
CONFIG_X86_X2APIC=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
# CONFIG_IOMMU_STRESS is not set
|
||||
|
||||
CONFIG_PERF_COUNTERS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_EVENT_PROFILE=y
|
||||
|
||||
# CONFIG_X86_MCE_INJECT is not set
|
||||
|
||||
CONFIG_SFI=y
|
||||
CONFIG_INPUT_WINBOND_CIR=m
|
||||
CONFIG_I2C_SCMI=m
|
||||
CONFIG_SBC_FITPC2_WATCHDOG=m
|
||||
CONFIG_EDAC_I3200=m
|
||||
CONFIG_TOPSTAR_LAPTOP=m
|
||||
CONFIG_INTEL_TXT=y
|
||||
|
||||
CONFIG_GPIO_LANGWELL=y
|
||||
|
||||
CONFIG_FUNCTION_GRAPH_TRACER=y
|
||||
|
||||
CONFIG_ACPI_CMPC=m
|
||||
CONFIG_MSI_WMI=m
|
||||
CONFIG_TOSHIBA_BT_RFKILL=m
|
||||
# CONFIG_SAMSUNG_LAPTOP is not set
|
||||
|
||||
CONFIG_CS5535_MFGPT=m
|
||||
CONFIG_GEODE_WDT=m
|
||||
CONFIG_CS5535_CLOCK_EVENT_SRC=m
|
||||
|
||||
CONFIG_X86_DECODER_SELFTEST=y
|
||||
|
||||
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
|
||||
|
||||
CONFIG_VGA_SWITCHEROO=y
|
||||
CONFIG_LPC_SCH=m
|
||||
|
||||
CONFIG_I7300_IDLE=m
|
||||
|
||||
CONFIG_PCI_CNB20LE_QUIRK=y
|
||||
CONFIG_BPF_JIT=y
|
||||
|
||||
CONFIG_ACPI_EC_DEBUGFS=m
|
||||
# CONFIG_ACPI_APEI_ERST_DEBUG is not set
|
||||
CONFIG_INTEL_IDLE=y
|
||||
# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
|
||||
CONFIG_SENSORS_PKGTEMP=m
|
||||
CONFIG_F71808E_WDT=m
|
||||
CONFIG_HPWDT_NMI_DECODING=y
|
||||
# CONFIG_MFD_TPS6586X is not set
|
||||
# CONFIG_INTEL_MID_DMAC is not set
|
||||
CONFIG_PCH_DMA=m
|
||||
# CONFIG_ACPI_QUICKSTART is not set
|
||||
CONFIG_IDEAPAD_ACPI=m
|
||||
CONFIG_INTEL_IPS=m
|
||||
CONFIG_IDEAPAD_LAPTOP=m
|
||||
# CONFIG_IBM_RTL is not set
|
||||
# Should be 32bit only, but lacks KConfig depends
|
||||
# CONFIG_XO15_EBOOK is not set
|
||||
|
||||
CONFIG_EDAC_MCE_INJ=m
|
||||
CONFIG_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_X86_RESERVE_LOW=64
|
||||
|
||||
CONFIG_PCH_GBE=m
|
||||
CONFIG_PCH_PHUB=m
|
||||
|
||||
CONFIG_VIDEO_VIA_CAMERA=m
|
||||
|
||||
CONFIG_JUMP_LABEL=y
|
||||
|
||||
CONFIG_HP_ILO=m
|
||||
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
# CONFIG_X86_NUMACHIP is not set
|
||||
CONFIG_AMD_IOMMU_V2=m
|
||||
CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
--- linux-2.6.43.noarch.orig/drivers/hid/Kconfig
|
||||
+++ linux-2.6.43.noarch/drivers/hid/Kconfig
|
||||
@@ -34,7 +34,7 @@ config HID
|
||||
config HID_BATTERY_STRENGTH
|
||||
bool
|
||||
depends on HID && POWER_SUPPLY && HID = POWER_SUPPLY
|
||||
- default y
|
||||
+ default n
|
||||
|
||||
config HIDRAW
|
||||
bool "/dev/hidraw raw HID device support"
|
|
@ -9,8 +9,8 @@ Subject: [PATCH] dmar: disable if ricoh multifunction detected
|
|||
|
||||
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
|
||||
index 4789f8e..5923914 100644
|
||||
--- a/drivers/pci/intel-iommu.c
|
||||
+++ b/drivers/pci/intel-iommu.c
|
||||
--- a/drivers/iommu/intel-iommu.c
|
||||
+++ b/drivers/iommu/intel-iommu.c
|
||||
@@ -3784,6 +3784,16 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0044, quirk_calpella_no_shadow_g
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0062, quirk_calpella_no_shadow_gtt);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x006a, quirk_calpella_no_shadow_gtt);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,69 @@
|
|||
From 04a43e2598db35b3d0ec25925bb8475b5c0a3809 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Fri, 16 Mar 2012 16:39:11 -0400
|
||||
Subject: [PATCH] drm/i915/dp: Use DRM_ERROR not WARN for sanity checks
|
||||
|
||||
These are noisy as shit and creating a ton of abrt reports. I don't
|
||||
need more, thanks. Proper fix upstream eventually.
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_dp.c | 14 ++++++++------
|
||||
1 files changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
|
||||
index 94f860c..6bf27c9 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_dp.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_dp.c
|
||||
@@ -331,7 +331,7 @@ intel_dp_check_edp(struct intel_dp *intel_dp)
|
||||
if (!is_edp(intel_dp))
|
||||
return;
|
||||
if (!ironlake_edp_have_panel_power(intel_dp) && !ironlake_edp_have_panel_vdd(intel_dp)) {
|
||||
- WARN(1, "eDP powered off while attempting aux channel communication.\n");
|
||||
+ DRM_ERROR("eDP powered off while attempting aux channel communication.\n");
|
||||
DRM_DEBUG_KMS("Status 0x%08x Control 0x%08x\n",
|
||||
I915_READ(PCH_PP_STATUS),
|
||||
I915_READ(PCH_PP_CONTROL));
|
||||
@@ -386,7 +386,7 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,
|
||||
}
|
||||
|
||||
if (try == 3) {
|
||||
- WARN(1, "dp_aux_ch not started status 0x%08x\n",
|
||||
+ DRM_ERROR("dp_aux_ch not started status 0x%08x\n",
|
||||
I915_READ(ch_ctl));
|
||||
return -EBUSY;
|
||||
}
|
||||
@@ -992,8 +992,8 @@ static void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
|
||||
return;
|
||||
DRM_DEBUG_KMS("Turn eDP VDD on\n");
|
||||
|
||||
- WARN(intel_dp->want_panel_vdd,
|
||||
- "eDP VDD already requested on\n");
|
||||
+ if (intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("eDP VDD already requested on\n");
|
||||
|
||||
intel_dp->want_panel_vdd = true;
|
||||
|
||||
@@ -1058,7 +1058,8 @@ static void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
|
||||
return;
|
||||
|
||||
DRM_DEBUG_KMS("Turn eDP VDD off %d\n", intel_dp->want_panel_vdd);
|
||||
- WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on");
|
||||
+ if (!intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("eDP VDD not forced on");
|
||||
|
||||
intel_dp->want_panel_vdd = false;
|
||||
|
||||
@@ -1128,7 +1129,8 @@ static void ironlake_edp_panel_off(struct intel_dp *intel_dp)
|
||||
|
||||
DRM_DEBUG_KMS("Turn eDP power off\n");
|
||||
|
||||
- WARN(intel_dp->want_panel_vdd, "Cannot turn power off while VDD is on\n");
|
||||
+ if (intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("Cannot turn power off while VDD is on\n");
|
||||
|
||||
pp = ironlake_get_pp_control(dev_priv);
|
||||
pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE);
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
From c5d1455d9340c63e5c5d987e2d816e77538caa90 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Tue, 13 Sep 2011 12:07:37 -0400
|
||||
Subject: [PATCH] drm/i915: Shut the fbc messages up
|
||||
|
||||
FB compression enable/disable fires on pretty much every pageflip now,
|
||||
which is just uncredibly excessive. Hush that noise.
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_display.c | 19 -------------------
|
||||
1 files changed, 0 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 56a8554..a6d14eb 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -1474,8 +1474,6 @@ static void i8xx_disable_fbc(struct drm_device *dev)
|
||||
DRM_DEBUG_KMS("FBC idle timed out\n");
|
||||
return;
|
||||
}
|
||||
-
|
||||
- DRM_DEBUG_KMS("disabled FBC\n");
|
||||
}
|
||||
|
||||
static void i8xx_enable_fbc(struct drm_crtc *crtc, unsigned long interval)
|
||||
@@ -1516,9 +1514,6 @@ static void i8xx_enable_fbc(struct drm_crtc *crtc, unsigned long interval)
|
||||
fbc_ctl |= (interval & 0x2fff) << FBC_CTL_INTERVAL_SHIFT;
|
||||
fbc_ctl |= obj->fence_reg;
|
||||
I915_WRITE(FBC_CONTROL, fbc_ctl);
|
||||
-
|
||||
- DRM_DEBUG_KMS("enabled FBC, pitch %d, yoff %d, plane %d, ",
|
||||
- cfb_pitch, crtc->y, intel_crtc->plane);
|
||||
}
|
||||
|
||||
static bool i8xx_fbc_enabled(struct drm_device *dev)
|
||||
@@ -1551,8 +1546,6 @@ static void g4x_enable_fbc(struct drm_crtc *crtc, unsigned long interval)
|
||||
|
||||
/* enable it... */
|
||||
I915_WRITE(DPFC_CONTROL, I915_READ(DPFC_CONTROL) | DPFC_CTL_EN);
|
||||
-
|
||||
- DRM_DEBUG_KMS("enabled fbc on plane %d\n", intel_crtc->plane);
|
||||
}
|
||||
|
||||
static void g4x_disable_fbc(struct drm_device *dev)
|
||||
@@ -1565,8 +1558,6 @@ static void g4x_disable_fbc(struct drm_device *dev)
|
||||
if (dpfc_ctl & DPFC_CTL_EN) {
|
||||
dpfc_ctl &= ~DPFC_CTL_EN;
|
||||
I915_WRITE(DPFC_CONTROL, dpfc_ctl);
|
||||
-
|
||||
- DRM_DEBUG_KMS("disabled FBC\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1631,8 +1622,6 @@ static void ironlake_enable_fbc(struct drm_crtc *crtc, unsigned long interval)
|
||||
I915_WRITE(DPFC_CPU_FENCE_OFFSET, crtc->y);
|
||||
sandybridge_blit_fbc_update(dev);
|
||||
}
|
||||
-
|
||||
- DRM_DEBUG_KMS("enabled fbc on plane %d\n", intel_crtc->plane);
|
||||
}
|
||||
|
||||
static void ironlake_disable_fbc(struct drm_device *dev)
|
||||
@@ -1645,8 +1634,6 @@ static void ironlake_disable_fbc(struct drm_device *dev)
|
||||
if (dpfc_ctl & DPFC_CTL_EN) {
|
||||
dpfc_ctl &= ~DPFC_CTL_EN;
|
||||
I915_WRITE(ILK_DPFC_CONTROL, dpfc_ctl);
|
||||
-
|
||||
- DRM_DEBUG_KMS("disabled FBC\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1701,8 +1688,6 @@ static void intel_cancel_fbc_work(struct drm_i915_private *dev_priv)
|
||||
if (dev_priv->fbc_work == NULL)
|
||||
return;
|
||||
|
||||
- DRM_DEBUG_KMS("cancelling pending FBC enable\n");
|
||||
-
|
||||
/* Synchronisation is provided by struct_mutex and checking of
|
||||
* dev_priv->fbc_work, so we can perform the cancellation
|
||||
* entirely asynchronously.
|
||||
@@ -1743,8 +1728,6 @@ static void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval)
|
||||
|
||||
dev_priv->fbc_work = work;
|
||||
|
||||
- DRM_DEBUG_KMS("scheduling delayed FBC enable\n");
|
||||
-
|
||||
/* Delay the actual enabling to let pageflipping cease and the
|
||||
* display to settle before starting the compression. Note that
|
||||
* this delay also serves a second purpose: it allows for a
|
||||
@@ -1800,8 +1783,6 @@ static void intel_update_fbc(struct drm_device *dev)
|
||||
struct drm_i915_gem_object *obj;
|
||||
int enable_fbc;
|
||||
|
||||
- DRM_DEBUG_KMS("\n");
|
||||
-
|
||||
if (!i915_powersave)
|
||||
return;
|
||||
|
||||
--
|
||||
1.7.6
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
From bea96046b4245e9abd65ed7acfed9adfd5f6c639 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Thu, 3 Mar 2011 23:43:02 +0000
|
||||
Subject: [PATCH] drm/i915: Gen4+ has non-power-of-two strides
|
||||
|
||||
In c2e0eb16707, we started checking that the buffer was the correct size
|
||||
for tiled access by ensuring that the size was a multiple of tiles.
|
||||
However, gen4+ complicates the issue by allowing any multiple of 4096
|
||||
bytes for the stride and so the simple check based on a power-of-two
|
||||
stride was failing for valid bo.
|
||||
|
||||
Reported-by: Dan Williams <dcbw@redhat.com>
|
||||
Reported-by: Robert Hooker <sarvatt@gmail.com>
|
||||
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_gem_tiling.c | 29 ++++++++++++++---------------
|
||||
1 files changed, 14 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c
|
||||
index 79a04fd..654f350 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem_tiling.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem_tiling.c
|
||||
@@ -215,6 +215,19 @@ i915_tiling_ok(struct drm_device *dev, int stride, int size, int tiling_mode)
|
||||
}
|
||||
}
|
||||
|
||||
+ if (INTEL_INFO(dev)->gen >= 4) {
|
||||
+ /* 965+ just needs multiples of tile width */
|
||||
+ if (stride & (tile_width - 1))
|
||||
+ return false;
|
||||
+ } else {
|
||||
+ /* Pre-965 needs power of two tile widths */
|
||||
+ if (stride < tile_width)
|
||||
+ return false;
|
||||
+
|
||||
+ if (stride & (stride - 1))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
if (IS_GEN2(dev) ||
|
||||
(tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev)))
|
||||
tile_height = 32;
|
||||
@@ -226,21 +239,7 @@ i915_tiling_ok(struct drm_device *dev, int stride, int size, int tiling_mode)
|
||||
tile_height *= 2;
|
||||
|
||||
/* Size needs to be aligned to a full tile row */
|
||||
- if (size & (tile_height * stride - 1))
|
||||
- return false;
|
||||
-
|
||||
- /* 965+ just needs multiples of tile width */
|
||||
- if (INTEL_INFO(dev)->gen >= 4) {
|
||||
- if (stride & (tile_width - 1))
|
||||
- return false;
|
||||
- return true;
|
||||
- }
|
||||
-
|
||||
- /* Pre-965 needs power of two tile widths */
|
||||
- if (stride < tile_width)
|
||||
- return false;
|
||||
-
|
||||
- if (stride & (stride - 1))
|
||||
+ if (size % (tile_height * stride))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
--
|
||||
1.7.4.1
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
omgwtfbbqchainsaw?
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 5 +++++
|
||||
1 files changed, 5 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
index e698343..21e601d1 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
@@ -1090,6 +1090,11 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
|
||||
if (ret)
|
||||
goto pre_mutex_err;
|
||||
|
||||
+ /* We don't get the flushing right for these chipsets, use the
|
||||
+ * big hammer for now to avoid random crashiness. */
|
||||
+ if (IS_I85X(dev) || IS_I865G(dev))
|
||||
+ wbinvd();
|
||||
+
|
||||
if (dev_priv->mm.suspended) {
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
ret = -EBUSY;
|
|
@ -0,0 +1,40 @@
|
|||
From aed3f09db39596e539f90b11a5016aea4d8442e1 Mon Sep 17 00:00:00 2001
|
||||
From: Alban Browaeys <prahal@yahoo.com>
|
||||
Date: Fri, 24 Feb 2012 17:12:45 +0000
|
||||
Subject: [PATCH] drm/i915: Prevent a machine hang by checking crtc->active
|
||||
before loading lut
|
||||
|
||||
Before loading the lut (gamma), check the active state of intel_crtc,
|
||||
otherwise at least on gen2 hang ensue.
|
||||
|
||||
This is reproducible in Xorg via:
|
||||
xset dpms force off
|
||||
then
|
||||
xgamma -rgamma 2.0 # freeze.
|
||||
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44505
|
||||
Signed-off-by: Alban Browaeys <prahal@yahoo.com>
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_display.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 4871ba0..f851db7 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -6184,7 +6184,7 @@ void intel_crtc_load_lut(struct drm_crtc *crtc)
|
||||
int i;
|
||||
|
||||
/* The clocks have to be on to load the palette. */
|
||||
- if (!crtc->enabled)
|
||||
+ if (!crtc->enabled || !intel_crtc->active)
|
||||
return;
|
||||
|
||||
/* use legacy palette for Ironlake */
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
|
||||
index f737960..b1f8164 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.c
|
||||
@@ -509,6 +509,8 @@ i915_pci_remove(struct pci_dev *pdev)
|
||||
{
|
||||
struct drm_device *dev = pci_get_drvdata(pdev);
|
||||
|
||||
+ pci_disable_device(pdev); /* core did previous enable */
|
||||
+
|
||||
drm_put_dev(dev);
|
||||
}
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
|
||||
index 300f64b..2e3db37 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_dp.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_dp.c
|
||||
@@ -795,7 +795,8 @@ static bool ironlake_edp_panel_on (struct intel_dp *intel_dp)
|
||||
{
|
||||
struct drm_device *dev = intel_dp->base.base.dev;
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
- u32 pp, idle_on_mask = PP_ON | PP_SEQUENCE_STATE_ON_IDLE;
|
||||
+ u32 pp, idle_on = PP_ON | PP_SEQUENCE_STATE_ON_IDLE;
|
||||
+ u32 idle_on_mask = PP_ON | PP_SEQUENCE_STATE_MASK;
|
||||
|
||||
if (I915_READ(PCH_PP_STATUS) & PP_ON)
|
||||
return true;
|
||||
@@ -816,7 +817,7 @@ static bool ironlake_edp_panel_on (struct intel_dp *intel_dp)
|
||||
*/
|
||||
msleep(300);
|
||||
|
||||
- if (wait_for((I915_READ(PCH_PP_STATUS) & idle_on_mask) == idle_on_mask,
|
||||
+ if (wait_for((I915_READ(PCH_PP_STATUS) & idle_on_mask) == idle_on,
|
||||
5000))
|
||||
DRM_ERROR("panel on wait timed out: 0x%08x\n",
|
||||
I915_READ(PCH_PP_STATUS));
|
||||
@@ -922,6 +923,7 @@ static void intel_dp_prepare(struct drm_encoder *encoder)
|
||||
|
||||
if (is_edp(intel_dp)) {
|
||||
ironlake_edp_backlight_off(dev);
|
||||
+ ironlake_edp_panel_off(dev);
|
||||
ironlake_edp_panel_on(intel_dp);
|
||||
if (!is_pch_edp(intel_dp))
|
||||
ironlake_edp_pll_on(encoder);
|
|
@ -1,23 +0,0 @@
|
|||
drivers/gpu/drm/i915/intel_display.c | 2 --
|
||||
1 files changed, 0 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 990f065..171a797 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -4568,7 +4568,6 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
|
||||
struct drm_connector *connector, int dpms_mode)
|
||||
{
|
||||
struct drm_encoder *encoder = &intel_encoder->base;
|
||||
- struct drm_device *dev = encoder->dev;
|
||||
struct drm_crtc *crtc = encoder->crtc;
|
||||
struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
|
||||
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
|
||||
@@ -4578,7 +4577,6 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
|
||||
connector->encoder = NULL;
|
||||
intel_encoder->load_detect_temp = false;
|
||||
crtc->enabled = drm_helper_crtc_in_use(crtc);
|
||||
- drm_helper_disable_unused_functions(dev);
|
||||
}
|
||||
|
||||
/* Switch crtc and encoder back off if necessary */
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,22 @@
|
|||
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
|
||||
index 3ae4128..ff7dc70 100644
|
||||
--- a/arch/x86/platform/efi/efi.c
|
||||
+++ b/arch/x86/platform/efi/efi.c
|
||||
@@ -659,10 +659,13 @@ void __init efi_enter_virtual_mode(void)
|
||||
|
||||
for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
|
||||
md = p;
|
||||
- if (!(md->attribute & EFI_MEMORY_RUNTIME) &&
|
||||
- md->type != EFI_BOOT_SERVICES_CODE &&
|
||||
- md->type != EFI_BOOT_SERVICES_DATA)
|
||||
- continue;
|
||||
+ if (!(md->attribute & EFI_MEMORY_RUNTIME)) {
|
||||
+#ifdef CONFIG_X86_64
|
||||
+ if (md->type != EFI_BOOT_SERVICES_CODE &&
|
||||
+ md->type != EFI_BOOT_SERVICES_DATA)
|
||||
+#endif
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
size = md->num_pages << EFI_PAGE_SHIFT;
|
||||
end = md->phys_addr + size;
|
|
@ -1,403 +0,0 @@
|
|||
Default EFI to physical rather than virtual. Upstream seem to be going
|
||||
in this direction.
|
||||
|
||||
diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
|
||||
index 8e4a165..3c62f15 100644
|
||||
--- a/arch/x86/include/asm/efi.h
|
||||
+++ b/arch/x86/include/asm/efi.h
|
||||
@@ -93,6 +93,9 @@ extern int add_efi_memmap;
|
||||
extern void efi_memblock_x86_reserve_range(void);
|
||||
extern void efi_call_phys_prelog(void);
|
||||
extern void efi_call_phys_epilog(void);
|
||||
+extern void efi_call_phys_prelog_in_physmode(void);
|
||||
+extern void efi_call_phys_epilog_in_physmode(void);
|
||||
+extern void efi_pagetable_init(void);
|
||||
|
||||
#ifndef CONFIG_EFI
|
||||
/*
|
||||
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
|
||||
index 0fe27d7..e1158b0 100644
|
||||
--- a/arch/x86/platform/efi/efi.c
|
||||
+++ b/arch/x86/platform/efi/efi.c
|
||||
@@ -58,6 +58,7 @@ struct efi_memory_map memmap;
|
||||
|
||||
static struct efi efi_phys __initdata;
|
||||
static efi_system_table_t efi_systab __initdata;
|
||||
+static efi_runtime_services_t phys_runtime;
|
||||
|
||||
static int __init setup_noefi(char *arg)
|
||||
{
|
||||
@@ -172,7 +173,7 @@ static efi_status_t __init phys_efi_set_virtual_address_map(
|
||||
return status;
|
||||
}
|
||||
|
||||
-static efi_status_t __init phys_efi_get_time(efi_time_t *tm,
|
||||
+static efi_status_t __init phys_efi_get_time_early(efi_time_t *tm,
|
||||
efi_time_cap_t *tc)
|
||||
{
|
||||
efi_status_t status;
|
||||
@@ -183,6 +184,112 @@ static efi_status_t __init phys_efi_get_time(efi_time_t *tm,
|
||||
return status;
|
||||
}
|
||||
|
||||
+static efi_status_t phys_efi_get_time(efi_time_t *tm,
|
||||
+ efi_time_cap_t *tc)
|
||||
+{
|
||||
+ efi_status_t status;
|
||||
+
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ status = efi_call_phys2((void*)phys_runtime.get_time, tm, tc);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static efi_status_t __init phys_efi_set_time(efi_time_t *tm)
|
||||
+{
|
||||
+ efi_status_t status;
|
||||
+
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ status = efi_call_phys1((void*)phys_runtime.set_time, tm);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static efi_status_t phys_efi_get_wakeup_time(efi_bool_t *enabled,
|
||||
+ efi_bool_t *pending,
|
||||
+ efi_time_t *tm)
|
||||
+{
|
||||
+ efi_status_t status;
|
||||
+
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ status = efi_call_phys3((void*)phys_runtime.get_wakeup_time, enabled,
|
||||
+ pending, tm);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static efi_status_t phys_efi_set_wakeup_time(efi_bool_t enabled, efi_time_t *tm)
|
||||
+{
|
||||
+ efi_status_t status;
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ status = efi_call_phys2((void*)phys_runtime.set_wakeup_time, enabled,
|
||||
+ tm);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static efi_status_t phys_efi_get_variable(efi_char16_t *name,
|
||||
+ efi_guid_t *vendor,
|
||||
+ u32 *attr,
|
||||
+ unsigned long *data_size,
|
||||
+ void *data)
|
||||
+{
|
||||
+ efi_status_t status;
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ status = efi_call_phys5((void*)phys_runtime.get_variable, name, vendor,
|
||||
+ attr, data_size, data);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static efi_status_t phys_efi_get_next_variable(unsigned long *name_size,
|
||||
+ efi_char16_t *name,
|
||||
+ efi_guid_t *vendor)
|
||||
+{
|
||||
+ efi_status_t status;
|
||||
+
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ status = efi_call_phys3((void*)phys_runtime.get_next_variable,
|
||||
+ name_size, name, vendor);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static efi_status_t phys_efi_set_variable(efi_char16_t *name,
|
||||
+ efi_guid_t *vendor,
|
||||
+ unsigned long attr,
|
||||
+ unsigned long data_size,
|
||||
+ void *data)
|
||||
+{
|
||||
+ efi_status_t status;
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ status = efi_call_phys5((void*)phys_runtime.set_variable, name,
|
||||
+ vendor, attr, data_size, data);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static efi_status_t phys_efi_get_next_high_mono_count(u32 *count)
|
||||
+{
|
||||
+ efi_status_t status;
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ status = efi_call_phys1((void*)phys_runtime.get_next_high_mono_count,
|
||||
+ count);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static void phys_efi_reset_system(int reset_type,
|
||||
+ efi_status_t status,
|
||||
+ unsigned long data_size,
|
||||
+ efi_char16_t *data)
|
||||
+{
|
||||
+ efi_call_phys_prelog_in_physmode();
|
||||
+ efi_call_phys4((void*)phys_runtime.reset_system, reset_type, status,
|
||||
+ data_size, data);
|
||||
+ efi_call_phys_epilog_in_physmode();
|
||||
+}
|
||||
+
|
||||
int efi_set_rtc_mmss(unsigned long nowtime)
|
||||
{
|
||||
int real_seconds, real_minutes;
|
||||
@@ -435,7 +542,9 @@ void __init efi_init(void)
|
||||
* Make efi_get_time can be called before entering
|
||||
* virtual mode.
|
||||
*/
|
||||
- efi.get_time = phys_efi_get_time;
|
||||
+ efi.get_time = phys_efi_get_time_early;
|
||||
+
|
||||
+ memcpy(&phys_runtime, runtime, sizeof(efi_runtime_services_t));
|
||||
} else
|
||||
printk(KERN_ERR "Could not map the EFI runtime service "
|
||||
"table!\n");
|
||||
@@ -466,6 +575,14 @@ void __init efi_init(void)
|
||||
#if EFI_DEBUG
|
||||
print_efi_memmap();
|
||||
#endif
|
||||
+
|
||||
+#ifndef CONFIG_X86_64
|
||||
+ /*
|
||||
+ * Only x86_64 supports physical mode as of now. Use virtual mode
|
||||
+ * forcibly.
|
||||
+ */
|
||||
+ usevirtefi = 1;
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void __init runtime_code_page_mkexec(void)
|
||||
@@ -579,6 +696,27 @@ void __init efi_enter_virtual_mode(void)
|
||||
memmap.map = NULL;
|
||||
}
|
||||
|
||||
+void __init efi_setup_physical_mode(void)
|
||||
+{
|
||||
+#ifdef CONFIG_X86_64
|
||||
+ efi_pagetable_init();
|
||||
+#endif
|
||||
+ efi.get_time = phys_efi_get_time;
|
||||
+ efi.set_time = phys_efi_set_time;
|
||||
+ efi.get_wakeup_time = phys_efi_get_wakeup_time;
|
||||
+ efi.set_wakeup_time = phys_efi_set_wakeup_time;
|
||||
+ efi.get_variable = phys_efi_get_variable;
|
||||
+ efi.get_next_variable = phys_efi_get_next_variable;
|
||||
+ efi.set_variable = phys_efi_set_variable;
|
||||
+ efi.get_next_high_mono_count =
|
||||
+ phys_efi_get_next_high_mono_count;
|
||||
+ efi.reset_system = phys_efi_reset_system;
|
||||
+ efi.set_virtual_address_map = NULL; /* Not needed */
|
||||
+
|
||||
+ early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size);
|
||||
+ memmap.map = NULL;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Convenience functions to obtain memory types and attributes
|
||||
*/
|
||||
diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
|
||||
index 5cab48e..90767b1 100644
|
||||
--- a/arch/x86/platform/efi/efi_32.c
|
||||
+++ b/arch/x86/platform/efi/efi_32.c
|
||||
@@ -110,3 +110,7 @@ void efi_call_phys_epilog(void)
|
||||
|
||||
local_irq_restore(efi_rt_eflags);
|
||||
}
|
||||
+
|
||||
+void efi_call_phys_prelog_in_physmode(void) { /* Not supported */ }
|
||||
+void efi_call_phys_epilog_in_physmode(void) { /* Not supported */ }
|
||||
+
|
||||
diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
|
||||
index ac0621a..ad19fe9 100644
|
||||
--- a/arch/x86/platform/efi/efi_64.c
|
||||
+++ b/arch/x86/platform/efi/efi_64.c
|
||||
@@ -39,7 +39,9 @@
|
||||
#include <asm/fixmap.h>
|
||||
|
||||
static pgd_t save_pgd __initdata;
|
||||
-static unsigned long efi_flags __initdata;
|
||||
+static DEFINE_PER_CPU(unsigned long, efi_flags);
|
||||
+static DEFINE_PER_CPU(unsigned long, save_cr3);
|
||||
+static pgd_t efi_pgd[PTRS_PER_PGD] __page_aligned_bss;
|
||||
|
||||
static void __init early_mapping_set_exec(unsigned long start,
|
||||
unsigned long end,
|
||||
@@ -80,7 +82,7 @@ void __init efi_call_phys_prelog(void)
|
||||
unsigned long vaddress;
|
||||
|
||||
early_runtime_code_mapping_set_exec(1);
|
||||
- local_irq_save(efi_flags);
|
||||
+ local_irq_save(get_cpu_var(efi_flags));
|
||||
vaddress = (unsigned long)__va(0x0UL);
|
||||
save_pgd = *pgd_offset_k(0x0UL);
|
||||
set_pgd(pgd_offset_k(0x0UL), *pgd_offset_k(vaddress));
|
||||
@@ -94,10 +96,23 @@ void __init efi_call_phys_epilog(void)
|
||||
*/
|
||||
set_pgd(pgd_offset_k(0x0UL), save_pgd);
|
||||
__flush_tlb_all();
|
||||
- local_irq_restore(efi_flags);
|
||||
+ local_irq_restore(get_cpu_var(efi_flags));
|
||||
early_runtime_code_mapping_set_exec(0);
|
||||
}
|
||||
|
||||
+void efi_call_phys_prelog_in_physmode(void)
|
||||
+{
|
||||
+ local_irq_save(get_cpu_var(efi_flags));
|
||||
+ get_cpu_var(save_cr3)= read_cr3();
|
||||
+ write_cr3(virt_to_phys(efi_pgd));
|
||||
+}
|
||||
+
|
||||
+void efi_call_phys_epilog_in_physmode(void)
|
||||
+{
|
||||
+ write_cr3(get_cpu_var(save_cr3));
|
||||
+ local_irq_restore(get_cpu_var(efi_flags));
|
||||
+}
|
||||
+
|
||||
void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size,
|
||||
u32 type)
|
||||
{
|
||||
@@ -112,3 +127,78 @@ void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size,
|
||||
|
||||
return (void __iomem *)__va(phys_addr);
|
||||
}
|
||||
+
|
||||
+static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr)
|
||||
+{
|
||||
+ if (pgd_none(*pgd)) {
|
||||
+ pud_t *pud = (pud_t *)get_zeroed_page(GFP_ATOMIC);
|
||||
+ set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud)));
|
||||
+ if (pud != pud_offset(pgd, 0))
|
||||
+ printk(KERN_ERR "EFI PAGETABLE BUG #00! %p <-> %p\n",
|
||||
+ pud, pud_offset(pgd, 0));
|
||||
+ }
|
||||
+ return pud_offset(pgd, vaddr);
|
||||
+}
|
||||
+
|
||||
+static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr)
|
||||
+{
|
||||
+ if (pud_none(*pud)) {
|
||||
+ pmd_t *pmd = (pmd_t *)get_zeroed_page(GFP_ATOMIC);
|
||||
+ set_pud(pud, __pud(_PAGE_TABLE | __pa(pmd)));
|
||||
+ if (pmd != pmd_offset(pud, 0))
|
||||
+ printk(KERN_ERR "EFI PAGETABLE BUG #01! %p <-> %p\n",
|
||||
+ pmd, pmd_offset(pud, 0));
|
||||
+ }
|
||||
+ return pmd_offset(pud, vaddr);
|
||||
+}
|
||||
+
|
||||
+static pte_t *fill_pte(pmd_t *pmd, unsigned long vaddr)
|
||||
+{
|
||||
+ if (pmd_none(*pmd)) {
|
||||
+ pte_t *pte = (pte_t *)get_zeroed_page(GFP_ATOMIC);
|
||||
+ set_pmd(pmd, __pmd(_PAGE_TABLE | __pa(pte)));
|
||||
+ if (pte != pte_offset_kernel(pmd, 0))
|
||||
+ printk(KERN_ERR "EFI PAGETABLE BUG #02!\n");
|
||||
+ }
|
||||
+ return pte_offset_kernel(pmd, vaddr);
|
||||
+}
|
||||
+
|
||||
+void __init efi_pagetable_init(void)
|
||||
+{
|
||||
+ efi_memory_desc_t *md;
|
||||
+ unsigned long size;
|
||||
+ u64 start_pfn, end_pfn, pfn, vaddr;
|
||||
+ void *p;
|
||||
+ pgd_t *pgd;
|
||||
+ pud_t *pud;
|
||||
+ pmd_t *pmd;
|
||||
+ pte_t *pte;
|
||||
+
|
||||
+ memset(efi_pgd, 0, sizeof(efi_pgd));
|
||||
+ for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
|
||||
+ md = p;
|
||||
+ if (!(md->type & EFI_RUNTIME_SERVICES_CODE) &&
|
||||
+ !(md->type & EFI_RUNTIME_SERVICES_DATA))
|
||||
+ continue;
|
||||
+
|
||||
+ start_pfn = md->phys_addr >> PAGE_SHIFT;
|
||||
+ size = md->num_pages << EFI_PAGE_SHIFT;
|
||||
+ end_pfn = PFN_UP(md->phys_addr + size);
|
||||
+
|
||||
+ for (pfn = start_pfn; pfn <= end_pfn; pfn++) {
|
||||
+ vaddr = pfn << PAGE_SHIFT;
|
||||
+ pgd = efi_pgd + pgd_index(vaddr);
|
||||
+ pud = fill_pud(pgd, vaddr);
|
||||
+ pmd = fill_pmd(pud, vaddr);
|
||||
+ pte = fill_pte(pmd, vaddr);
|
||||
+ if (md->type & EFI_RUNTIME_SERVICES_CODE)
|
||||
+ set_pte(pte, pfn_pte(pfn, PAGE_KERNEL_EXEC));
|
||||
+ else
|
||||
+ set_pte(pte, pfn_pte(pfn, PAGE_KERNEL));
|
||||
+ }
|
||||
+ }
|
||||
+ pgd = efi_pgd + pgd_index(PAGE_OFFSET);
|
||||
+ set_pgd(pgd, *pgd_offset_k(PAGE_OFFSET));
|
||||
+ pgd = efi_pgd + pgd_index(__START_KERNEL_map);
|
||||
+ set_pgd(pgd, *pgd_offset_k(__START_KERNEL_map));
|
||||
+}
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index fb737bc..c4e310e 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -290,6 +290,7 @@ extern void efi_map_pal_code (void);
|
||||
extern void efi_memmap_walk (efi_freemem_callback_t callback, void *arg);
|
||||
extern void efi_gettimeofday (struct timespec *ts);
|
||||
extern void efi_enter_virtual_mode (void); /* switch EFI to virtual mode, if possible */
|
||||
+extern void efi_setup_physical_mode(void);
|
||||
extern u64 efi_get_iobase (void);
|
||||
extern u32 efi_mem_type (unsigned long phys_addr);
|
||||
extern u64 efi_mem_attributes (unsigned long phys_addr);
|
||||
diff --git a/include/linux/init.h b/include/linux/init.h
|
||||
index 577671c..2f1b28f 100644
|
||||
--- a/include/linux/init.h
|
||||
+++ b/include/linux/init.h
|
||||
@@ -149,6 +149,7 @@ extern int do_one_initcall(initcall_t fn);
|
||||
extern char __initdata boot_command_line[];
|
||||
extern char *saved_command_line;
|
||||
extern unsigned int reset_devices;
|
||||
+extern unsigned int usevirtefi;
|
||||
|
||||
/* used by init/main.c */
|
||||
void setup_arch(char **);
|
||||
diff --git a/init/main.c b/init/main.c
|
||||
index 8646401..726025e 100644
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -196,6 +196,14 @@ static int __init set_reset_devices(char *str)
|
||||
|
||||
__setup("reset_devices", set_reset_devices);
|
||||
|
||||
+unsigned int usevirtefi;
|
||||
+static int __init set_virt_efi(char *str)
|
||||
+{
|
||||
+ usevirtefi = 1;
|
||||
+ return 1;
|
||||
+}
|
||||
+__setup("virtefi", set_virt_efi);
|
||||
+
|
||||
static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
|
||||
const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
|
||||
static const char *panic_later, *panic_param;
|
||||
@@ -668,8 +676,12 @@ asmlinkage void __init start_kernel(void)
|
||||
pidmap_init();
|
||||
anon_vma_init();
|
||||
#ifdef CONFIG_X86
|
||||
- if (efi_enabled)
|
||||
- efi_enter_virtual_mode();
|
||||
+ if (efi_enabled) {
|
||||
+ if (usevirtefi)
|
||||
+ efi_enter_virtual_mode();
|
||||
+ else
|
||||
+ efi_setup_physical_mode();
|
||||
+ }
|
||||
#endif
|
||||
thread_info_cache_init();
|
||||
cred_init();
|
|
@ -1,217 +0,0 @@
|
|||
Fix up efifb so it works properly on the 11" Macbook Air. Upstream in .38?
|
||||
|
||||
diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c
|
||||
index 70477c2..476ffb1 100644
|
||||
--- a/drivers/video/efifb.c
|
||||
+++ b/drivers/video/efifb.c
|
||||
@@ -53,6 +53,7 @@ enum {
|
||||
M_MB_7_1, /* MacBook, 7th rev. */
|
||||
M_MB_SR, /* MacBook, 2nd gen, (Santa Rosa) */
|
||||
M_MBA, /* MacBook Air */
|
||||
+ M_MBA_3, /* Macbook Air, 3rd rev */
|
||||
M_MBP, /* MacBook Pro */
|
||||
M_MBP_2, /* MacBook Pro 2nd gen */
|
||||
M_MBP_2_2, /* MacBook Pro 2,2nd gen */
|
||||
@@ -67,40 +68,49 @@ enum {
|
||||
M_UNKNOWN /* placeholder */
|
||||
};
|
||||
|
||||
+#define OVERRIDE_NONE 0x0
|
||||
+#define OVERRIDE_BASE 0x1
|
||||
+#define OVERRIDE_STRIDE 0x2
|
||||
+#define OVERRIDE_HEIGHT 0x4
|
||||
+#define OVERRIDE_WIDTH 0x8
|
||||
+
|
||||
static struct efifb_dmi_info {
|
||||
char *optname;
|
||||
unsigned long base;
|
||||
int stride;
|
||||
int width;
|
||||
int height;
|
||||
+ int flags;
|
||||
} dmi_list[] __initdata = {
|
||||
- [M_I17] = { "i17", 0x80010000, 1472 * 4, 1440, 900 },
|
||||
- [M_I20] = { "i20", 0x80010000, 1728 * 4, 1680, 1050 }, /* guess */
|
||||
- [M_I20_SR] = { "imac7", 0x40010000, 1728 * 4, 1680, 1050 },
|
||||
- [M_I24] = { "i24", 0x80010000, 2048 * 4, 1920, 1200 }, /* guess */
|
||||
- [M_I24_8_1] = { "imac8", 0xc0060000, 2048 * 4, 1920, 1200 },
|
||||
- [M_I24_10_1] = { "imac10", 0xc0010000, 2048 * 4, 1920, 1080 },
|
||||
- [M_I27_11_1] = { "imac11", 0xc0010000, 2560 * 4, 2560, 1440 },
|
||||
- [M_MINI]= { "mini", 0x80000000, 2048 * 4, 1024, 768 },
|
||||
- [M_MINI_3_1] = { "mini31", 0x40010000, 1024 * 4, 1024, 768 },
|
||||
- [M_MINI_4_1] = { "mini41", 0xc0010000, 2048 * 4, 1920, 1200 },
|
||||
- [M_MB] = { "macbook", 0x80000000, 2048 * 4, 1280, 800 },
|
||||
- [M_MB_5_1] = { "macbook51", 0x80010000, 2048 * 4, 1280, 800 },
|
||||
- [M_MB_6_1] = { "macbook61", 0x80010000, 2048 * 4, 1280, 800 },
|
||||
- [M_MB_7_1] = { "macbook71", 0x80010000, 2048 * 4, 1280, 800 },
|
||||
- [M_MBA] = { "mba", 0x80000000, 2048 * 4, 1280, 800 },
|
||||
- [M_MBP] = { "mbp", 0x80010000, 1472 * 4, 1440, 900 },
|
||||
- [M_MBP_2] = { "mbp2", 0, 0, 0, 0 }, /* placeholder */
|
||||
- [M_MBP_2_2] = { "mbp22", 0x80010000, 1472 * 4, 1440, 900 },
|
||||
- [M_MBP_SR] = { "mbp3", 0x80030000, 2048 * 4, 1440, 900 },
|
||||
- [M_MBP_4] = { "mbp4", 0xc0060000, 2048 * 4, 1920, 1200 },
|
||||
- [M_MBP_5_1] = { "mbp51", 0xc0010000, 2048 * 4, 1440, 900 },
|
||||
- [M_MBP_5_2] = { "mbp52", 0xc0010000, 2048 * 4, 1920, 1200 },
|
||||
- [M_MBP_5_3] = { "mbp53", 0xd0010000, 2048 * 4, 1440, 900 },
|
||||
- [M_MBP_6_1] = { "mbp61", 0x90030000, 2048 * 4, 1920, 1200 },
|
||||
- [M_MBP_6_2] = { "mbp62", 0x90030000, 2048 * 4, 1680, 1050 },
|
||||
- [M_MBP_7_1] = { "mbp71", 0xc0010000, 2048 * 4, 1280, 800 },
|
||||
- [M_UNKNOWN] = { NULL, 0, 0, 0, 0 }
|
||||
+ [M_I17] = { "i17", 0x80010000, 1472 * 4, 1440, 900, OVERRIDE_NONE },
|
||||
+ [M_I20] = { "i20", 0x80010000, 1728 * 4, 1680, 1050, OVERRIDE_NONE }, /* guess */
|
||||
+ [M_I20_SR] = { "imac7", 0x40010000, 1728 * 4, 1680, 1050, OVERRIDE_NONE },
|
||||
+ [M_I24] = { "i24", 0x80010000, 2048 * 4, 1920, 1200, OVERRIDE_NONE }, /* guess */
|
||||
+ [M_I24_8_1] = { "imac8", 0xc0060000, 2048 * 4, 1920, 1200, OVERRIDE_NONE },
|
||||
+ [M_I24_10_1] = { "imac10", 0xc0010000, 2048 * 4, 1920, 1080, OVERRIDE_NONE },
|
||||
+ [M_I27_11_1] = { "imac11", 0xc0010000, 2560 * 4, 2560, 1440, OVERRIDE_NONE },
|
||||
+ [M_MINI]= { "mini", 0x80000000, 2048 * 4, 1024, 768, OVERRIDE_NONE },
|
||||
+ [M_MINI_3_1] = { "mini31", 0x40010000, 1024 * 4, 1024, 768, OVERRIDE_NONE },
|
||||
+ [M_MINI_4_1] = { "mini41", 0xc0010000, 2048 * 4, 1920, 1200, OVERRIDE_NONE },
|
||||
+ [M_MB] = { "macbook", 0x80000000, 2048 * 4, 1280, 800, OVERRIDE_NONE },
|
||||
+ [M_MB_5_1] = { "macbook51", 0x80010000, 2048 * 4, 1280, 800, OVERRIDE_NONE },
|
||||
+ [M_MB_6_1] = { "macbook61", 0x80010000, 2048 * 4, 1280, 800, OVERRIDE_NONE },
|
||||
+ [M_MB_7_1] = { "macbook71", 0x80010000, 2048 * 4, 1280, 800, OVERRIDE_NONE },
|
||||
+ [M_MBA] = { "mba", 0x80000000, 2048 * 4, 1280, 800, OVERRIDE_NONE },
|
||||
+ /* 11" Macbook Air 3,1 passes the wrong stride */
|
||||
+ [M_MBA_3] = { "mba3", 0, 2048 * 4, 0, 0, OVERRIDE_STRIDE },
|
||||
+ [M_MBP] = { "mbp", 0x80010000, 1472 * 4, 1440, 900, OVERRIDE_NONE },
|
||||
+ [M_MBP_2] = { "mbp2", 0, 0, 0, 0, OVERRIDE_NONE }, /* placeholder */
|
||||
+ [M_MBP_2_2] = { "mbp22", 0x80010000, 1472 * 4, 1440, 900, OVERRIDE_NONE },
|
||||
+ [M_MBP_SR] = { "mbp3", 0x80030000, 2048 * 4, 1440, 900, OVERRIDE_NONE },
|
||||
+ [M_MBP_4] = { "mbp4", 0xc0060000, 2048 * 4, 1920, 1200, OVERRIDE_NONE },
|
||||
+ [M_MBP_5_1] = { "mbp51", 0xc0010000, 2048 * 4, 1440, 900, OVERRIDE_NONE },
|
||||
+ [M_MBP_5_2] = { "mbp52", 0xc0010000, 2048 * 4, 1920, 1200, OVERRIDE_NONE },
|
||||
+ [M_MBP_5_3] = { "mbp53", 0xd0010000, 2048 * 4, 1440, 900, OVERRIDE_NONE },
|
||||
+ [M_MBP_6_1] = { "mbp61", 0x90030000, 2048 * 4, 1920, 1200, OVERRIDE_NONE },
|
||||
+ [M_MBP_6_2] = { "mbp62", 0x90030000, 2048 * 4, 1680, 1050, OVERRIDE_NONE },
|
||||
+ [M_MBP_7_1] = { "mbp71", 0xc0010000, 2048 * 4, 1280, 800, OVERRIDE_NONE },
|
||||
+ [M_UNKNOWN] = { NULL, 0, 0, 0, 0, OVERRIDE_NONE }
|
||||
};
|
||||
|
||||
static int set_system(const struct dmi_system_id *id);
|
||||
@@ -138,6 +148,7 @@ static const struct dmi_system_id dmi_system_table[] __initconst = {
|
||||
EFIFB_DMI_SYSTEM_ID("Apple Inc.", "MacBook6,1", M_MB_6_1),
|
||||
EFIFB_DMI_SYSTEM_ID("Apple Inc.", "MacBook7,1", M_MB_7_1),
|
||||
EFIFB_DMI_SYSTEM_ID("Apple Inc.", "MacBookAir1,1", M_MBA),
|
||||
+ EFIFB_DMI_SYSTEM_ID("Apple Inc.", "MacBookAir3,1", M_MBA_3),
|
||||
EFIFB_DMI_SYSTEM_ID("Apple Computer, Inc.", "MacBookPro1,1", M_MBP),
|
||||
EFIFB_DMI_SYSTEM_ID("Apple Computer, Inc.", "MacBookPro2,1", M_MBP_2),
|
||||
EFIFB_DMI_SYSTEM_ID("Apple Computer, Inc.", "MacBookPro2,2", M_MBP_2_2),
|
||||
@@ -154,16 +165,22 @@ static const struct dmi_system_id dmi_system_table[] __initconst = {
|
||||
{},
|
||||
};
|
||||
|
||||
+#define choose_value(dmivalue, fwvalue, field, flags) ({ \
|
||||
+ typeof(fwvalue) _ret_ = fwvalue; \
|
||||
+ if ((flags) & (field)) \
|
||||
+ _ret_ = dmivalue; \
|
||||
+ else if ((fwvalue) == 0) \
|
||||
+ _ret_ = dmivalue; \
|
||||
+ _ret_; \
|
||||
+ })
|
||||
+
|
||||
static int set_system(const struct dmi_system_id *id)
|
||||
{
|
||||
struct efifb_dmi_info *info = id->driver_data;
|
||||
- if (info->base == 0)
|
||||
- return 0;
|
||||
|
||||
- printk(KERN_INFO "efifb: dmi detected %s - framebuffer at %p "
|
||||
- "(%dx%d, stride %d)\n", id->ident,
|
||||
- (void *)info->base, info->width, info->height,
|
||||
- info->stride);
|
||||
+ if (info->base == 0 && info->height == 0 && info->width == 0
|
||||
+ && info->stride == 0)
|
||||
+ return 0;
|
||||
|
||||
/* Trust the bootloader over the DMI tables */
|
||||
if (screen_info.lfb_base == 0) {
|
||||
@@ -171,40 +188,47 @@ static int set_system(const struct dmi_system_id *id)
|
||||
struct pci_dev *dev = NULL;
|
||||
int found_bar = 0;
|
||||
#endif
|
||||
- screen_info.lfb_base = info->base;
|
||||
+ if (info->base) {
|
||||
+ screen_info.lfb_base = choose_value(info->base,
|
||||
+ screen_info.lfb_base, OVERRIDE_BASE,
|
||||
+ info->flags);
|
||||
|
||||
#if defined(CONFIG_PCI)
|
||||
- /* make sure that the address in the table is actually on a
|
||||
- * VGA device's PCI BAR */
|
||||
-
|
||||
- for_each_pci_dev(dev) {
|
||||
- int i;
|
||||
- if ((dev->class >> 8) != PCI_CLASS_DISPLAY_VGA)
|
||||
- continue;
|
||||
- for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
|
||||
- resource_size_t start, end;
|
||||
-
|
||||
- start = pci_resource_start(dev, i);
|
||||
- if (start == 0)
|
||||
- break;
|
||||
- end = pci_resource_end(dev, i);
|
||||
- if (screen_info.lfb_base >= start &&
|
||||
- screen_info.lfb_base < end) {
|
||||
- found_bar = 1;
|
||||
+ /* make sure that the address in the table is actually
|
||||
+ * on a VGA device's PCI BAR */
|
||||
+
|
||||
+ for_each_pci_dev(dev) {
|
||||
+ int i;
|
||||
+ if ((dev->class >> 8) != PCI_CLASS_DISPLAY_VGA)
|
||||
+ continue;
|
||||
+ for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
|
||||
+ resource_size_t start, end;
|
||||
+
|
||||
+ start = pci_resource_start(dev, i);
|
||||
+ if (start == 0)
|
||||
+ break;
|
||||
+ end = pci_resource_end(dev, i);
|
||||
+ if (screen_info.lfb_base >= start &&
|
||||
+ screen_info.lfb_base < end) {
|
||||
+ found_bar = 1;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
- }
|
||||
- if (!found_bar)
|
||||
- screen_info.lfb_base = 0;
|
||||
+ if (!found_bar)
|
||||
+ screen_info.lfb_base = 0;
|
||||
#endif
|
||||
+ }
|
||||
}
|
||||
if (screen_info.lfb_base) {
|
||||
- if (screen_info.lfb_linelength == 0)
|
||||
- screen_info.lfb_linelength = info->stride;
|
||||
- if (screen_info.lfb_width == 0)
|
||||
- screen_info.lfb_width = info->width;
|
||||
- if (screen_info.lfb_height == 0)
|
||||
- screen_info.lfb_height = info->height;
|
||||
+ screen_info.lfb_linelength = choose_value(info->stride,
|
||||
+ screen_info.lfb_linelength, OVERRIDE_STRIDE,
|
||||
+ info->flags);
|
||||
+ screen_info.lfb_width = choose_value(info->width,
|
||||
+ screen_info.lfb_width, OVERRIDE_WIDTH,
|
||||
+ info->flags);
|
||||
+ screen_info.lfb_height = choose_value(info->height,
|
||||
+ screen_info.lfb_height, OVERRIDE_HEIGHT,
|
||||
+ info->flags);
|
||||
if (screen_info.orig_video_isVGA == 0)
|
||||
screen_info.orig_video_isVGA = VIDEO_TYPE_EFI;
|
||||
} else {
|
||||
@@ -214,6 +238,13 @@ static int set_system(const struct dmi_system_id *id)
|
||||
screen_info.orig_video_isVGA = 0;
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+ printk(KERN_INFO "efifb: dmi detected %s - framebuffer at %p "
|
||||
+ "(%dx%d, stride %d)\n", id->ident,
|
||||
+ (void *)screen_info.lfb_base, screen_info.lfb_width,
|
||||
+ screen_info.lfb_height, screen_info.lfb_linelength);
|
||||
+
|
||||
+
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -0,0 +1,465 @@
|
|||
From 0a6cc45426fe3baaf231efd7efe4300fd879efc8 Mon Sep 17 00:00:00 2001
|
||||
From: Jason Baron <jbaron@redhat.com>
|
||||
Date: Mon, 24 Oct 2011 14:59:02 +1100
|
||||
Subject: [PATCH] epoll: limit paths
|
||||
|
||||
epoll: limit paths
|
||||
|
||||
The current epoll code can be tickled to run basically indefinitely in
|
||||
both loop detection path check (on ep_insert()), and in the wakeup paths.
|
||||
The programs that tickle this behavior set up deeply linked networks of
|
||||
epoll file descriptors that cause the epoll algorithms to traverse them
|
||||
indefinitely. A couple of these sample programs have been previously
|
||||
posted in this thread: https://lkml.org/lkml/2011/2/25/297.
|
||||
|
||||
To fix the loop detection path check algorithms, I simply keep track of
|
||||
the epoll nodes that have been already visited. Thus, the loop detection
|
||||
becomes proportional to the number of epoll file descriptor and links.
|
||||
This dramatically decreases the run-time of the loop check algorithm. In
|
||||
one diabolical case I tried it reduced the run-time from 15 mintues (all
|
||||
in kernel time) to .3 seconds.
|
||||
|
||||
Fixing the wakeup paths could be done at wakeup time in a similar manner
|
||||
by keeping track of nodes that have already been visited, but the
|
||||
complexity is harder, since there can be multiple wakeups on different
|
||||
cpus...Thus, I've opted to limit the number of possible wakeup paths when
|
||||
the paths are created.
|
||||
|
||||
This is accomplished, by noting that the end file descriptor points that
|
||||
are found during the loop detection pass (from the newly added link), are
|
||||
actually the sources for wakeup events. I keep a list of these file
|
||||
descriptors and limit the number and length of these paths that emanate
|
||||
from these 'source file descriptors'. In the current implemetation I
|
||||
allow 1000 paths of length 1, 500 of length 2, 100 of length 3, 50 of
|
||||
length 4 and 10 of length 5. Note that it is sufficient to check the
|
||||
'source file descriptors' reachable from the newly added link, since no
|
||||
other 'source file descriptors' will have newly added links. This allows
|
||||
us to check only the wakeup paths that may have gotten too long, and not
|
||||
re-check all possible wakeup paths on the system.
|
||||
|
||||
In terms of the path limit selection, I think its first worth noting that
|
||||
the most common case for epoll, is probably the model where you have 1
|
||||
epoll file descriptor that is monitoring n number of 'source file
|
||||
descriptors'. In this case, each 'source file descriptor' has a 1 path of
|
||||
length 1. Thus, I believe that the limits I'm proposing are quite
|
||||
reasonable and in fact may be too generous. Thus, I'm hoping that the
|
||||
proposed limits will not prevent any workloads that currently work to
|
||||
fail.
|
||||
|
||||
In terms of locking, I have extended the use of the 'epmutex' to all
|
||||
epoll_ctl add and remove operations. Currently its only used in a subset
|
||||
of the add paths. I need to hold the epmutex, so that we can correctly
|
||||
traverse a coherent graph, to check the number of paths. I believe that
|
||||
this additional locking is probably ok, since its in the setup/teardown
|
||||
paths, and doesn't affect the running paths, but it certainly is going to
|
||||
add some extra overhead. Also, worth noting is that the epmuex was
|
||||
recently added to the ep_ctl add operations in the initial path loop
|
||||
detection code using the argument that it was not on a critical path.
|
||||
|
||||
Another thing to note here, is the length of epoll chains that is allowed.
|
||||
Currently, eventpoll.c defines:
|
||||
|
||||
/* Maximum number of nesting allowed inside epoll sets */
|
||||
#define EP_MAX_NESTS 4
|
||||
|
||||
This basically means that I am limited to a graph depth of 5 (EP_MAX_NESTS
|
||||
+ 1). However, this limit is currently only enforced during the loop
|
||||
check detection code, and only when the epoll file descriptors are added
|
||||
in a certain order. Thus, this limit is currently easily bypassed. The
|
||||
newly added check for wakeup paths, stricly limits the wakeup paths to a
|
||||
length of 5, regardless of the order in which ep's are linked together.
|
||||
Thus, a side-effect of the new code is a more consistent enforcement of
|
||||
the graph depth.
|
||||
|
||||
Thus far, I've tested this, using the sample programs previously
|
||||
mentioned, which now either return quickly or return -EINVAL. I've also
|
||||
testing using the piptest.c epoll tester, which showed no difference in
|
||||
performance. I've also created a number of different epoll networks and
|
||||
tested that they behave as expectded.
|
||||
|
||||
I believe this solves the original diabolical test cases, while still
|
||||
preserving the sane epoll nesting.
|
||||
|
||||
Signed-off-by: Jason Baron <jbaron@redhat.com>
|
||||
Cc: Nelson Elhage <nelhage@ksplice.com>
|
||||
Cc: Davide Libenzi <davidel@xmailserver.org>
|
||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
---
|
||||
fs/eventpoll.c | 226 ++++++++++++++++++++++++++++++++++++++++-----
|
||||
include/linux/eventpoll.h | 1 +
|
||||
include/linux/fs.h | 1 +
|
||||
3 files changed, 203 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
|
||||
index b84fad9..414ac74 100644
|
||||
--- a/fs/eventpoll.c
|
||||
+++ b/fs/eventpoll.c
|
||||
@@ -197,6 +197,12 @@ struct eventpoll {
|
||||
|
||||
/* The user that created the eventpoll descriptor */
|
||||
struct user_struct *user;
|
||||
+
|
||||
+ struct file *file;
|
||||
+
|
||||
+ /* used to optimize loop detection check */
|
||||
+ int visited;
|
||||
+ struct list_head visitedllink;
|
||||
};
|
||||
|
||||
/* Wait structure used by the poll hooks */
|
||||
@@ -255,6 +261,12 @@ static struct kmem_cache *epi_cache __read_mostly;
|
||||
/* Slab cache used to allocate "struct eppoll_entry" */
|
||||
static struct kmem_cache *pwq_cache __read_mostly;
|
||||
|
||||
+/* Visited nodes during ep_loop_check(), so we can unset them when we finish */
|
||||
+LIST_HEAD(visited_list);
|
||||
+
|
||||
+/* Files with newly added links, which need a limit on emanating paths */
|
||||
+LIST_HEAD(tfile_check_list);
|
||||
+
|
||||
#ifdef CONFIG_SYSCTL
|
||||
|
||||
#include <linux/sysctl.h>
|
||||
@@ -276,6 +288,12 @@ ctl_table epoll_table[] = {
|
||||
};
|
||||
#endif /* CONFIG_SYSCTL */
|
||||
|
||||
+static const struct file_operations eventpoll_fops;
|
||||
+
|
||||
+static inline int is_file_epoll(struct file *f)
|
||||
+{
|
||||
+ return f->f_op == &eventpoll_fops;
|
||||
+}
|
||||
|
||||
/* Setup the structure that is used as key for the RB tree */
|
||||
static inline void ep_set_ffd(struct epoll_filefd *ffd,
|
||||
@@ -711,12 +729,6 @@ static const struct file_operations eventpoll_fops = {
|
||||
.llseek = noop_llseek,
|
||||
};
|
||||
|
||||
-/* Fast test to see if the file is an eventpoll file */
|
||||
-static inline int is_file_epoll(struct file *f)
|
||||
-{
|
||||
- return f->f_op == &eventpoll_fops;
|
||||
-}
|
||||
-
|
||||
/*
|
||||
* This is called from eventpoll_release() to unlink files from the eventpoll
|
||||
* interface. We need to have this facility to cleanup correctly files that are
|
||||
@@ -926,6 +938,96 @@ static void ep_rbtree_insert(struct eventpoll *ep, struct epitem *epi)
|
||||
rb_insert_color(&epi->rbn, &ep->rbr);
|
||||
}
|
||||
|
||||
+
|
||||
+
|
||||
+#define PATH_ARR_SIZE 5
|
||||
+/* These are the number paths of length 1 to 5, that we are allowing to emanate
|
||||
+ * from a single file of interest. For example, we allow 1000 paths of length
|
||||
+ * 1, to emanate from each file of interest. This essentially represents the
|
||||
+ * potential wakeup paths, which need to be limited in order to avoid massive
|
||||
+ * uncontrolled wakeup storms. The common use case should be a single ep which
|
||||
+ * is connected to n file sources. In this case each file source has 1 path
|
||||
+ * of length 1. Thus, the numbers below should be more than sufficient.
|
||||
+ */
|
||||
+int path_limits[PATH_ARR_SIZE] = { 1000, 500, 100, 50, 10 };
|
||||
+int path_count[PATH_ARR_SIZE];
|
||||
+
|
||||
+static int path_count_inc(int nests)
|
||||
+{
|
||||
+ if (++path_count[nests] > path_limits[nests])
|
||||
+ return -1;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void path_count_init(void)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < PATH_ARR_SIZE; i++)
|
||||
+ path_count[i] = 0;
|
||||
+}
|
||||
+
|
||||
+static int reverse_path_check_proc(void *priv, void *cookie, int call_nests)
|
||||
+{
|
||||
+ int error = 0;
|
||||
+ struct file *file = priv;
|
||||
+ struct file *child_file;
|
||||
+ struct epitem *epi;
|
||||
+
|
||||
+ list_for_each_entry(epi, &file->f_ep_links, fllink) {
|
||||
+ child_file = epi->ep->file;
|
||||
+ if (is_file_epoll(child_file)) {
|
||||
+ if (list_empty(&child_file->f_ep_links)) {
|
||||
+ if (path_count_inc(call_nests)) {
|
||||
+ error = -1;
|
||||
+ break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ error = ep_call_nested(&poll_loop_ncalls,
|
||||
+ EP_MAX_NESTS,
|
||||
+ reverse_path_check_proc,
|
||||
+ child_file, child_file,
|
||||
+ current);
|
||||
+ }
|
||||
+ if (error != 0)
|
||||
+ break;
|
||||
+ } else {
|
||||
+ printk(KERN_ERR "reverse_path_check_proc: "
|
||||
+ "file is not an ep!\n");
|
||||
+ }
|
||||
+ }
|
||||
+ return error;
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * reverse_path_check - The tfile_check_list is list of file *, which have
|
||||
+ * links that are proposed to be newly added. We need to
|
||||
+ * make sure that those added links don't add too many
|
||||
+ * paths such that we will spend all our time waking up
|
||||
+ * eventpoll objects.
|
||||
+ *
|
||||
+ * Returns: Returns zero if the proposed links don't create too many paths,
|
||||
+ * -1 otherwise.
|
||||
+ */
|
||||
+static int reverse_path_check(void)
|
||||
+{
|
||||
+ int length = 0;
|
||||
+ int error = 0;
|
||||
+ struct file *current_file;
|
||||
+
|
||||
+ /* let's call this for all tfiles */
|
||||
+ list_for_each_entry(current_file, &tfile_check_list, f_tfile_llink) {
|
||||
+ length++;
|
||||
+ path_count_init();
|
||||
+ error = ep_call_nested(&poll_loop_ncalls, EP_MAX_NESTS,
|
||||
+ reverse_path_check_proc, current_file,
|
||||
+ current_file, current);
|
||||
+ if (error)
|
||||
+ break;
|
||||
+ }
|
||||
+ return error;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Must be called with "mtx" held.
|
||||
*/
|
||||
@@ -987,6 +1089,11 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
|
||||
*/
|
||||
ep_rbtree_insert(ep, epi);
|
||||
|
||||
+ /* now check if we've created too many backpaths */
|
||||
+ error = -EINVAL;
|
||||
+ if (reverse_path_check())
|
||||
+ goto error_remove_epi;
|
||||
+
|
||||
/* We have to drop the new item inside our item list to keep track of it */
|
||||
spin_lock_irqsave(&ep->lock, flags);
|
||||
|
||||
@@ -1011,6 +1118,14 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
|
||||
|
||||
return 0;
|
||||
|
||||
+error_remove_epi:
|
||||
+ spin_lock(&tfile->f_lock);
|
||||
+ if (ep_is_linked(&epi->fllink))
|
||||
+ list_del_init(&epi->fllink);
|
||||
+ spin_unlock(&tfile->f_lock);
|
||||
+
|
||||
+ rb_erase(&epi->rbn, &ep->rbr);
|
||||
+
|
||||
error_unregister:
|
||||
ep_unregister_pollwait(ep, epi);
|
||||
|
||||
@@ -1275,18 +1390,35 @@ static int ep_loop_check_proc(void *priv, void *cookie, int call_nests)
|
||||
int error = 0;
|
||||
struct file *file = priv;
|
||||
struct eventpoll *ep = file->private_data;
|
||||
+ struct eventpoll *ep_tovisit;
|
||||
struct rb_node *rbp;
|
||||
struct epitem *epi;
|
||||
|
||||
mutex_lock_nested(&ep->mtx, call_nests + 1);
|
||||
+ ep->visited = 1;
|
||||
+ list_add(&ep->visitedllink, &visited_list);
|
||||
for (rbp = rb_first(&ep->rbr); rbp; rbp = rb_next(rbp)) {
|
||||
epi = rb_entry(rbp, struct epitem, rbn);
|
||||
if (unlikely(is_file_epoll(epi->ffd.file))) {
|
||||
+ ep_tovisit = epi->ffd.file->private_data;
|
||||
+ if (ep_tovisit->visited)
|
||||
+ continue;
|
||||
error = ep_call_nested(&poll_loop_ncalls, EP_MAX_NESTS,
|
||||
- ep_loop_check_proc, epi->ffd.file,
|
||||
- epi->ffd.file->private_data, current);
|
||||
+ ep_loop_check_proc, epi->ffd.file,
|
||||
+ ep_tovisit, current);
|
||||
if (error != 0)
|
||||
break;
|
||||
+ } else {
|
||||
+ /* if we've reached a file that is not associated with
|
||||
+ * an ep, then then we need to check if the newly added
|
||||
+ * links are going to add too many wakeup paths. We do
|
||||
+ * this by adding it to the tfile_check_list, if it's
|
||||
+ * not already there, and calling reverse_path_check()
|
||||
+ * during ep_insert()
|
||||
+ */
|
||||
+ if (list_empty(&epi->ffd.file->f_tfile_llink))
|
||||
+ list_add(&epi->ffd.file->f_tfile_llink,
|
||||
+ &tfile_check_list);
|
||||
}
|
||||
}
|
||||
mutex_unlock(&ep->mtx);
|
||||
@@ -1307,8 +1439,30 @@ static int ep_loop_check_proc(void *priv, void *cookie, int call_nests)
|
||||
*/
|
||||
static int ep_loop_check(struct eventpoll *ep, struct file *file)
|
||||
{
|
||||
- return ep_call_nested(&poll_loop_ncalls, EP_MAX_NESTS,
|
||||
+ int ret;
|
||||
+ struct eventpoll *ep_cur, *ep_next;
|
||||
+
|
||||
+ ret = ep_call_nested(&poll_loop_ncalls, EP_MAX_NESTS,
|
||||
ep_loop_check_proc, file, ep, current);
|
||||
+ /* clear visited list */
|
||||
+ list_for_each_entry_safe(ep_cur, ep_next, &visited_list, visitedllink) {
|
||||
+ ep_cur->visited = 0;
|
||||
+ list_del(&ep_cur->visitedllink);
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void clear_tfile_check_list(void)
|
||||
+{
|
||||
+ struct file *file;
|
||||
+
|
||||
+ /* first clear the tfile_check_list */
|
||||
+ while (!list_empty(&tfile_check_list)) {
|
||||
+ file = list_first_entry(&tfile_check_list, struct file,
|
||||
+ f_tfile_llink);
|
||||
+ list_del_init(&file->f_tfile_llink);
|
||||
+ }
|
||||
+ INIT_LIST_HEAD(&tfile_check_list);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1316,8 +1470,9 @@ static int ep_loop_check(struct eventpoll *ep, struct file *file)
|
||||
*/
|
||||
SYSCALL_DEFINE1(epoll_create1, int, flags)
|
||||
{
|
||||
- int error;
|
||||
+ int error, fd;
|
||||
struct eventpoll *ep = NULL;
|
||||
+ struct file *file;
|
||||
|
||||
/* Check the EPOLL_* constant for consistency. */
|
||||
BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);
|
||||
@@ -1334,11 +1489,25 @@ SYSCALL_DEFINE1(epoll_create1, int, flags)
|
||||
* Creates all the items needed to setup an eventpoll file. That is,
|
||||
* a file structure and a free file descriptor.
|
||||
*/
|
||||
- error = anon_inode_getfd("[eventpoll]", &eventpoll_fops, ep,
|
||||
+ fd = get_unused_fd_flags(O_RDWR | (flags & O_CLOEXEC));
|
||||
+ if (fd < 0) {
|
||||
+ error = fd;
|
||||
+ goto out_free_ep;
|
||||
+ }
|
||||
+ file = anon_inode_getfile("[eventpoll]", &eventpoll_fops, ep,
|
||||
O_RDWR | (flags & O_CLOEXEC));
|
||||
- if (error < 0)
|
||||
- ep_free(ep);
|
||||
-
|
||||
+ if (IS_ERR(file)) {
|
||||
+ error = PTR_ERR(file);
|
||||
+ goto out_free_fd;
|
||||
+ }
|
||||
+ fd_install(fd, file);
|
||||
+ ep->file = file;
|
||||
+ return fd;
|
||||
+
|
||||
+out_free_fd:
|
||||
+ put_unused_fd(fd);
|
||||
+out_free_ep:
|
||||
+ ep_free(ep);
|
||||
return error;
|
||||
}
|
||||
|
||||
@@ -1404,21 +1573,27 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
|
||||
/*
|
||||
* When we insert an epoll file descriptor, inside another epoll file
|
||||
* descriptor, there is the change of creating closed loops, which are
|
||||
- * better be handled here, than in more critical paths.
|
||||
+ * better be handled here, than in more critical paths. While we are
|
||||
+ * checking for loops we also determine the list of files reachable
|
||||
+ * and hang them on the tfile_check_list, so we can check that we
|
||||
+ * haven't created too many possible wakeup paths.
|
||||
*
|
||||
- * We hold epmutex across the loop check and the insert in this case, in
|
||||
- * order to prevent two separate inserts from racing and each doing the
|
||||
- * insert "at the same time" such that ep_loop_check passes on both
|
||||
- * before either one does the insert, thereby creating a cycle.
|
||||
+ * We need to hold the epmutex across both ep_insert and ep_remove
|
||||
+ * b/c we want to make sure we are looking at a coherent view of
|
||||
+ * epoll network.
|
||||
*/
|
||||
- if (unlikely(is_file_epoll(tfile) && op == EPOLL_CTL_ADD)) {
|
||||
+ if (op == EPOLL_CTL_ADD || op == EPOLL_CTL_DEL) {
|
||||
mutex_lock(&epmutex);
|
||||
did_lock_epmutex = 1;
|
||||
- error = -ELOOP;
|
||||
- if (ep_loop_check(ep, tfile) != 0)
|
||||
- goto error_tgt_fput;
|
||||
}
|
||||
-
|
||||
+ if (op == EPOLL_CTL_ADD) {
|
||||
+ if (is_file_epoll(tfile)) {
|
||||
+ error = -ELOOP;
|
||||
+ if (ep_loop_check(ep, tfile) != 0)
|
||||
+ goto error_tgt_fput;
|
||||
+ } else
|
||||
+ list_add(&tfile->f_tfile_llink, &tfile_check_list);
|
||||
+ }
|
||||
|
||||
mutex_lock_nested(&ep->mtx, 0);
|
||||
|
||||
@@ -1437,6 +1612,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
|
||||
error = ep_insert(ep, &epds, tfile, fd);
|
||||
} else
|
||||
error = -EEXIST;
|
||||
+ clear_tfile_check_list();
|
||||
break;
|
||||
case EPOLL_CTL_DEL:
|
||||
if (epi)
|
||||
@@ -1455,7 +1631,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
|
||||
mutex_unlock(&ep->mtx);
|
||||
|
||||
error_tgt_fput:
|
||||
- if (unlikely(did_lock_epmutex))
|
||||
+ if (did_lock_epmutex)
|
||||
mutex_unlock(&epmutex);
|
||||
|
||||
fput(tfile);
|
||||
diff --git a/include/linux/eventpoll.h b/include/linux/eventpoll.h
|
||||
index f362733..657ab55 100644
|
||||
--- a/include/linux/eventpoll.h
|
||||
+++ b/include/linux/eventpoll.h
|
||||
@@ -61,6 +61,7 @@ struct file;
|
||||
static inline void eventpoll_init_file(struct file *file)
|
||||
{
|
||||
INIT_LIST_HEAD(&file->f_ep_links);
|
||||
+ INIT_LIST_HEAD(&file->f_tfile_llink);
|
||||
}
|
||||
|
||||
|
||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||
index ba98668..d393a68 100644
|
||||
--- a/include/linux/fs.h
|
||||
+++ b/include/linux/fs.h
|
||||
@@ -985,6 +985,7 @@ struct file {
|
||||
#ifdef CONFIG_EPOLL
|
||||
/* Used by fs/eventpoll.c to link all the hooks to this file */
|
||||
struct list_head f_ep_links;
|
||||
+ struct list_head f_tfile_llink;
|
||||
#endif /* #ifdef CONFIG_EPOLL */
|
||||
struct address_space *f_mapping;
|
||||
#ifdef CONFIG_DEBUG_WRITECOUNT
|
||||
--
|
||||
1.7.6.4
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
From ea75f7357e3a881bd1bd0db5e483fc6a8681567b Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@redhat.com>
|
||||
Date: Tue, 10 Jan 2012 09:39:02 -0500
|
||||
Subject: [PATCH] ext4: Support "check=none" "nocheck" mount options
|
||||
|
||||
The ext2/ext3 filesystems supported "check=none" and "nocheck" as mount options
|
||||
even though that was already the default behavior and it essentially did
|
||||
nothing. When using ext4 to mount ext2/ext3 filesystems, that mount option
|
||||
causes the mount to fail. That isn't as backward compatible as it could be,
|
||||
so add support to ext4 to accept the option.
|
||||
|
||||
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
|
||||
---
|
||||
fs/ext4/super.c | 7 ++++++-
|
||||
1 files changed, 6 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
|
||||
index 3e1329e..5ff09e7 100644
|
||||
--- a/fs/ext4/super.c
|
||||
+++ b/fs/ext4/super.c
|
||||
@@ -1333,7 +1333,7 @@ enum {
|
||||
Opt_nomblk_io_submit, Opt_block_validity, Opt_noblock_validity,
|
||||
Opt_inode_readahead_blks, Opt_journal_ioprio,
|
||||
Opt_dioread_nolock, Opt_dioread_lock,
|
||||
- Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable,
|
||||
+ Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable, Opt_nocheck,
|
||||
};
|
||||
|
||||
static const match_table_t tokens = {
|
||||
@@ -1409,6 +1409,8 @@ static const match_table_t tokens = {
|
||||
{Opt_init_itable, "init_itable=%u"},
|
||||
{Opt_init_itable, "init_itable"},
|
||||
{Opt_noinit_itable, "noinit_itable"},
|
||||
+ {Opt_nocheck, "check=none"},
|
||||
+ {Opt_nocheck, "nocheck"},
|
||||
{Opt_err, NULL},
|
||||
};
|
||||
|
||||
@@ -1905,6 +1907,9 @@ set_qf_format:
|
||||
case Opt_noinit_itable:
|
||||
clear_opt(sb, INIT_INODE_TABLE);
|
||||
break;
|
||||
+ case Opt_nocheck:
|
||||
+ /* ext2/ext3 used to "support" this option. Silently eat it */
|
||||
+ break;
|
||||
default:
|
||||
ext4_msg(sb, KERN_ERR,
|
||||
"Unrecognized mount option \"%s\" "
|
||||
--
|
||||
1.7.7.5
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
diff --git a/drivers/media/dvb/b2c2/flexcop-pci.c b/drivers/media/dvb/b2c2/flexcop-pci.c
|
||||
index 227c020..7465308 100644
|
||||
--- a/drivers/media/dvb/b2c2/flexcop-pci.c
|
||||
+++ b/drivers/media/dvb/b2c2/flexcop-pci.c
|
||||
@@ -39,6 +39,7 @@ MODULE_PARM_DESC(debug,
|
||||
|
||||
#define DRIVER_VERSION "0.1"
|
||||
#define DRIVER_NAME "Technisat/B2C2 FlexCop II/IIb/III Digital TV PCI Driver"
|
||||
+#define FLEXCOP_MODULE_NAME "b2c2-flexcop"
|
||||
#define DRIVER_AUTHOR "Patrick Boettcher <patrick.boettcher@desy.de>"
|
||||
|
||||
struct flexcop_pci {
|
||||
@@ -299,7 +300,7 @@ static int flexcop_pci_init(struct flexcop_pci *fc_pci)
|
||||
return ret;
|
||||
pci_set_master(fc_pci->pdev);
|
||||
|
||||
- if ((ret = pci_request_regions(fc_pci->pdev, DRIVER_NAME)) != 0)
|
||||
+ if ((ret = pci_request_regions(fc_pci->pdev, FLEXCOP_MODULE_NAME)) != 0)
|
||||
goto err_pci_disable_device;
|
||||
|
||||
fc_pci->io_mem = pci_iomap(fc_pci->pdev, 0, 0x800);
|
||||
@@ -313,7 +314,7 @@ static int flexcop_pci_init(struct flexcop_pci *fc_pci)
|
||||
pci_set_drvdata(fc_pci->pdev, fc_pci);
|
||||
spin_lock_init(&fc_pci->irq_lock);
|
||||
if ((ret = request_irq(fc_pci->pdev->irq, flexcop_pci_isr,
|
||||
- IRQF_SHARED, DRIVER_NAME, fc_pci)) != 0)
|
||||
+ IRQF_SHARED, FLEXCOP_MODULE_NAME, fc_pci)) != 0)
|
||||
goto err_pci_iounmap;
|
||||
|
||||
fc_pci->init_state |= FC_PCI_INIT;
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
|
||||
index 9955a53..aef66d1 100644
|
||||
--- a/drivers/block/floppy.c
|
||||
+++ b/drivers/block/floppy.c
|
||||
@@ -1038,7 +1038,7 @@ static void floppy_disable_hlt(void)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
- WARN_ONCE(1, "floppy_disable_hlt() scheduled for removal in 2012");
|
||||
+ printk(KERN_INFO "floppy_disable_hlt() scheduled for removal in 2012");
|
||||
spin_lock_irqsave(&floppy_hlt_lock, flags);
|
||||
if (!hlt_disabled) {
|
||||
hlt_disabled = 1;
|
|
@ -0,0 +1,11 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -951,7 +951,7 @@ $(vmlinux-dirs): prepare scripts
|
||||
# Store (new) KERNELRELASE string in include/config/kernel.release
|
||||
include/config/kernel.release: include/config/auto.conf FORCE
|
||||
$(Q)rm -f $@
|
||||
- $(Q)echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" > $@
|
||||
+ $(Q)echo "2.6.$$((40 + $(PATCHLEVEL)))$(EXTRAVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" > $@
|
||||
|
||||
|
||||
# Things we need to do before we recursively start building the kernel
|
|
@ -1,64 +0,0 @@
|
|||
From linux-fsdevel-owner@vger.kernel.org Thu Nov 18 21:03:11 2010
|
||||
From: Josef Bacik <josef@redhat.com>
|
||||
To: linux-fsdevel@vger.kernel.org, eparis@redhat.com,
|
||||
linux-kernel@vger.kernel.org, sds@tycho.nsa.gov,
|
||||
selinux@tycho.nsa.gov, bfields@fieldses.org
|
||||
Subject: [PATCH] fs: call security_d_instantiate in d_obtain_alias V2
|
||||
Date: Thu, 18 Nov 2010 20:52:55 -0500
|
||||
Message-Id: <1290131575-2489-1-git-send-email-josef@redhat.com>
|
||||
X-Mailing-List: linux-fsdevel@vger.kernel.org
|
||||
|
||||
While trying to track down some NFS problems with BTRFS, I kept noticing I was
|
||||
getting -EACCESS for no apparent reason. Eric Paris and printk() helped me
|
||||
figure out that it was SELinux that was giving me grief, with the following
|
||||
denial
|
||||
|
||||
type=AVC msg=audit(1290013638.413:95): avc: denied { 0x800000 } for pid=1772
|
||||
comm="nfsd" name="" dev=sda1 ino=256 scontext=system_u:system_r:kernel_t:s0
|
||||
tcontext=system_u:object_r:unlabeled_t:s0 tclass=file
|
||||
|
||||
Turns out this is because in d_obtain_alias if we can't find an alias we create
|
||||
one and do all the normal instantiation stuff, but we don't do the
|
||||
security_d_instantiate.
|
||||
|
||||
Usually we are protected from getting a hashed dentry that hasn't yet run
|
||||
security_d_instantiate() by the parent's i_mutex, but obviously this isn't an
|
||||
option there, so in order to deal with the case that a second thread comes in
|
||||
and finds our new dentry before we get to run security_d_instantiate(), we go
|
||||
ahead and call it if we find a dentry already. Eric assures me that this is ok
|
||||
as the code checks to see if the dentry has been initialized already so calling
|
||||
security_d_instantiate() against the same dentry multiple times is ok. With
|
||||
this patch I'm no longer getting errant -EACCESS values.
|
||||
|
||||
Signed-off-by: Josef Bacik <josef@redhat.com>
|
||||
---
|
||||
V1->V2:
|
||||
-added second security_d_instantiate() call
|
||||
|
||||
fs/dcache.c | 3 +++
|
||||
1 files changed, 3 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/fs/dcache.c b/fs/dcache.c
|
||||
index 5699d4c..85388fc 100644
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -1577,9 +1577,13 @@ struct dentry *d_obtain_alias(struct inode *inode)
|
||||
spin_unlock(&tmp->d_lock);
|
||||
spin_unlock(&inode->i_lock);
|
||||
|
||||
+ security_d_instantiate(tmp, inode);
|
||||
+
|
||||
return tmp;
|
||||
|
||||
out_iput:
|
||||
+ if (res && !IS_ERR(res))
|
||||
+ security_d_instantiate(res, inode);
|
||||
iput(inode);
|
||||
return res;
|
||||
}
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
From c69fcbd1f60b0842f7c1ad2c95692ffd19c4932b Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Mon, 29 Mar 2010 23:56:08 -0400
|
||||
Subject: hda_intel-prealloc-4mb-dmabuffer
|
||||
|
||||
---
|
||||
sound/pci/hda/hda_intel.c | 14 +++++++++++++-
|
||||
1 files changed, 13 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
|
||||
index 4bb9067..37db515 100644
|
||||
--- a/sound/pci/hda/hda_intel.c
|
||||
+++ b/sound/pci/hda/hda_intel.c
|
||||
@@ -1986,6 +1986,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
|
||||
struct azx_pcm *apcm;
|
||||
int pcm_dev = cpcm->device;
|
||||
int s, err;
|
||||
+ size_t prealloc_min = 64*1024; /* 64KB */
|
||||
|
||||
if (pcm_dev >= HDA_MAX_PCMS) {
|
||||
snd_printk(KERN_ERR SFX "Invalid PCM device number %d\n",
|
||||
@@ -2019,10 +2020,21 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
|
||||
if (cpcm->stream[s].substreams)
|
||||
snd_pcm_set_ops(pcm, s, &azx_pcm_ops);
|
||||
}
|
||||
+
|
||||
/* buffer pre-allocation */
|
||||
+
|
||||
+ /* subtle, don't allocate a big buffer for modems...
|
||||
+ * also, don't just test 32BIT_MASK, since azx supports
|
||||
+ * 64-bit DMA in some cases.
|
||||
+ */
|
||||
+ /* lennart wants a 2.2MB buffer for 2sec of 48khz */
|
||||
+ if (pcm->dev_class == SNDRV_PCM_CLASS_GENERIC &&
|
||||
+ chip->pci->dma_mask >= DMA_32BIT_MASK)
|
||||
+ prealloc_min = 4 * 1024 * 1024; /* 4MB */
|
||||
+
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG,
|
||||
snd_dma_pci_data(chip->pci),
|
||||
- 1024 * 64, 32 * 1024 * 1024);
|
||||
+ prealloc_min, 32 * 1024 * 1024);
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.0.1
|
||||
|
|
@ -1,229 +0,0 @@
|
|||
diff --git a/drivers/media/video/hdpvr/Makefile b/drivers/media/video/hdpvr/Makefile
|
||||
index e0230fc..3baa9f6 100644
|
||||
--- a/drivers/media/video/hdpvr/Makefile
|
||||
+++ b/drivers/media/video/hdpvr/Makefile
|
||||
@@ -1,6 +1,4 @@
|
||||
-hdpvr-objs := hdpvr-control.o hdpvr-core.o hdpvr-video.o
|
||||
-
|
||||
-hdpvr-$(CONFIG_I2C) += hdpvr-i2c.o
|
||||
+hdpvr-objs := hdpvr-control.o hdpvr-core.o hdpvr-video.o hdpvr-i2c.o
|
||||
|
||||
obj-$(CONFIG_VIDEO_HDPVR) += hdpvr.o
|
||||
|
||||
diff --git a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
|
||||
index 830d47b..70cfdc8 100644
|
||||
--- a/drivers/media/video/hdpvr/hdpvr-core.c
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr-core.c
|
||||
@@ -364,14 +364,13 @@ static int hdpvr_probe(struct usb_interface *interface,
|
||||
goto error;
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_I2C
|
||||
- /* until i2c is working properly */
|
||||
- retval = 0; /* hdpvr_register_i2c_adapter(dev); */
|
||||
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
|
||||
+ retval = hdpvr_register_i2c_adapter(dev);
|
||||
if (retval < 0) {
|
||||
v4l2_err(&dev->v4l2_dev, "registering i2c adapter failed\n");
|
||||
goto error;
|
||||
}
|
||||
-#endif /* CONFIG_I2C */
|
||||
+#endif
|
||||
|
||||
/* let the user know what node this device is now attached to */
|
||||
v4l2_info(&dev->v4l2_dev, "device now attached to %s\n",
|
||||
diff --git a/drivers/media/video/hdpvr/hdpvr-i2c.c b/drivers/media/video/hdpvr/hdpvr-i2c.c
|
||||
index 463b81b..60cdc06 100644
|
||||
--- a/drivers/media/video/hdpvr/hdpvr-i2c.c
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr-i2c.c
|
||||
@@ -10,6 +10,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
|
||||
+
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
@@ -22,8 +24,11 @@
|
||||
#define REQTYPE_I2C_WRITE 0xb0
|
||||
#define REQTYPE_I2C_WRITE_STATT 0xd0
|
||||
|
||||
-static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
|
||||
- char *data, int len)
|
||||
+#define HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR 0x70
|
||||
+#define HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR 0x71
|
||||
+
|
||||
+static int hdpvr_i2c_read(struct hdpvr_device *dev, int bus,
|
||||
+ unsigned char addr, char *data, int len)
|
||||
{
|
||||
int ret;
|
||||
char *buf = kmalloc(len, GFP_KERNEL);
|
||||
@@ -33,7 +38,7 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
|
||||
ret = usb_control_msg(dev->udev,
|
||||
usb_rcvctrlpipe(dev->udev, 0),
|
||||
REQTYPE_I2C_READ, CTRL_READ_REQUEST,
|
||||
- 0x100|addr, 0, buf, len, 1000);
|
||||
+ (bus << 8) | addr, 0, buf, len, 1000);
|
||||
|
||||
if (ret == len) {
|
||||
memcpy(data, buf, len);
|
||||
@@ -46,8 +51,8 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
|
||||
return ret;
|
||||
}
|
||||
|
||||
-static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
|
||||
- char *data, int len)
|
||||
+static int hdpvr_i2c_write(struct hdpvr_device *dev, int bus,
|
||||
+ unsigned char addr, char *data, int len)
|
||||
{
|
||||
int ret;
|
||||
char *buf = kmalloc(len, GFP_KERNEL);
|
||||
@@ -58,7 +63,7 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
|
||||
ret = usb_control_msg(dev->udev,
|
||||
usb_sndctrlpipe(dev->udev, 0),
|
||||
REQTYPE_I2C_WRITE, CTRL_WRITE_REQUEST,
|
||||
- 0x100|addr, 0, buf, len, 1000);
|
||||
+ (bus << 8) | addr, 0, buf, len, 1000);
|
||||
|
||||
if (ret < 0)
|
||||
goto error;
|
||||
@@ -68,7 +73,7 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
|
||||
REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST,
|
||||
0, 0, buf, 2, 1000);
|
||||
|
||||
- if (ret == 2)
|
||||
+ if ((ret == 2) && (buf[1] == (len - 1)))
|
||||
ret = 0;
|
||||
else if (ret >= 0)
|
||||
ret = -EIO;
|
||||
@@ -93,10 +98,10 @@ static int hdpvr_transfer(struct i2c_adapter *i2c_adapter, struct i2c_msg *msgs,
|
||||
addr = msgs[i].addr << 1;
|
||||
|
||||
if (msgs[i].flags & I2C_M_RD)
|
||||
- retval = hdpvr_i2c_read(dev, addr, msgs[i].buf,
|
||||
+ retval = hdpvr_i2c_read(dev, 1, addr, msgs[i].buf,
|
||||
msgs[i].len);
|
||||
else
|
||||
- retval = hdpvr_i2c_write(dev, addr, msgs[i].buf,
|
||||
+ retval = hdpvr_i2c_write(dev, 1, addr, msgs[i].buf,
|
||||
msgs[i].len);
|
||||
}
|
||||
|
||||
@@ -115,30 +120,58 @@ static struct i2c_algorithm hdpvr_algo = {
|
||||
.functionality = hdpvr_functionality,
|
||||
};
|
||||
|
||||
+static struct i2c_adapter hdpvr_i2c_adapter_template = {
|
||||
+ .name = "Hauppage HD PVR I2C",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .id = I2C_HW_B_HDPVR,
|
||||
+ .algo = &hdpvr_algo,
|
||||
+};
|
||||
+
|
||||
+static struct i2c_board_info hdpvr_i2c_board_info = {
|
||||
+ I2C_BOARD_INFO("ir_tx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR),
|
||||
+ I2C_BOARD_INFO("ir_rx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR),
|
||||
+};
|
||||
+
|
||||
+static int hdpvr_activate_ir(struct hdpvr_device *dev)
|
||||
+{
|
||||
+ char buffer[8];
|
||||
+
|
||||
+ mutex_lock(&dev->i2c_mutex);
|
||||
+
|
||||
+ hdpvr_i2c_read(dev, 0, 0x54, buffer, 1);
|
||||
+
|
||||
+ buffer[0] = 0;
|
||||
+ buffer[1] = 0x8;
|
||||
+ hdpvr_i2c_write(dev, 1, 0x54, buffer, 2);
|
||||
+
|
||||
+ buffer[1] = 0x18;
|
||||
+ hdpvr_i2c_write(dev, 1, 0x54, buffer, 2);
|
||||
+
|
||||
+ mutex_unlock(&dev->i2c_mutex);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
int hdpvr_register_i2c_adapter(struct hdpvr_device *dev)
|
||||
{
|
||||
- struct i2c_adapter *i2c_adap;
|
||||
int retval = -ENOMEM;
|
||||
|
||||
- i2c_adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL);
|
||||
- if (i2c_adap == NULL)
|
||||
- goto error;
|
||||
+ hdpvr_activate_ir(dev);
|
||||
|
||||
- strlcpy(i2c_adap->name, "Hauppauge HD PVR I2C",
|
||||
- sizeof(i2c_adap->name));
|
||||
- i2c_adap->algo = &hdpvr_algo;
|
||||
- i2c_adap->owner = THIS_MODULE;
|
||||
- i2c_adap->dev.parent = &dev->udev->dev;
|
||||
+ memcpy(&dev->i2c_adapter, &hdpvr_i2c_adapter_template,
|
||||
+ sizeof(struct i2c_adapter));
|
||||
+ dev->i2c_adapter.dev.parent = &dev->udev->dev;
|
||||
|
||||
- i2c_set_adapdata(i2c_adap, dev);
|
||||
+ i2c_set_adapdata(&dev->i2c_adapter, dev);
|
||||
|
||||
- retval = i2c_add_adapter(i2c_adap);
|
||||
+ retval = i2c_add_adapter(&dev->i2c_adapter);
|
||||
+ if (retval)
|
||||
+ goto error;
|
||||
|
||||
- if (!retval)
|
||||
- dev->i2c_adapter = i2c_adap;
|
||||
- else
|
||||
- kfree(i2c_adap);
|
||||
+ i2c_new_device(&dev->i2c_adapter, &hdpvr_i2c_board_info);
|
||||
|
||||
error:
|
||||
return retval;
|
||||
}
|
||||
+
|
||||
+#endif
|
||||
diff --git a/drivers/media/video/hdpvr/hdpvr-video.c b/drivers/media/video/hdpvr/hdpvr-video.c
|
||||
index c338f3f..26fd9bf 100644
|
||||
--- a/drivers/media/video/hdpvr/hdpvr-video.c
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr-video.c
|
||||
@@ -1221,12 +1221,9 @@ static void hdpvr_device_release(struct video_device *vdev)
|
||||
v4l2_device_unregister(&dev->v4l2_dev);
|
||||
|
||||
/* deregister I2C adapter */
|
||||
-#ifdef CONFIG_I2C
|
||||
+#if defined(CONFIG_I2C) || (CONFIG_I2C_MODULE)
|
||||
mutex_lock(&dev->i2c_mutex);
|
||||
- if (dev->i2c_adapter)
|
||||
- i2c_del_adapter(dev->i2c_adapter);
|
||||
- kfree(dev->i2c_adapter);
|
||||
- dev->i2c_adapter = NULL;
|
||||
+ i2c_del_adapter(&dev->i2c_adapter);
|
||||
mutex_unlock(&dev->i2c_mutex);
|
||||
#endif /* CONFIG_I2C */
|
||||
|
||||
diff --git a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h
|
||||
index b0f046d..2107055 100644
|
||||
--- a/drivers/media/video/hdpvr/hdpvr.h
|
||||
+++ b/drivers/media/video/hdpvr/hdpvr.h
|
||||
@@ -102,7 +102,7 @@ struct hdpvr_device {
|
||||
struct work_struct worker;
|
||||
|
||||
/* I2C adapter */
|
||||
- struct i2c_adapter *i2c_adapter;
|
||||
+ struct i2c_adapter i2c_adapter;
|
||||
/* I2C lock */
|
||||
struct mutex i2c_mutex;
|
||||
|
||||
diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h
|
||||
index 4bef5c5..4385341 100644
|
||||
--- a/include/linux/i2c-id.h
|
||||
+++ b/include/linux/i2c-id.h
|
||||
@@ -33,5 +33,6 @@
|
||||
|
||||
/* --- Bit algorithm adapters */
|
||||
#define I2C_HW_B_CX2388x 0x01001b /* connexant 2388x based tv cards */
|
||||
+#define I2C_HW_B_HDPVR 0x010025 /* Hauppauge HD PVR */
|
||||
|
||||
#endif /* LINUX_I2C_ID_H */
|
|
@ -0,0 +1,287 @@
|
|||
commit b94887bbc0621e1e8402e7f0ec4bc3adf46c9a6e
|
||||
Author: Rafael J. Wysocki <rjw@sisk.pl>
|
||||
Date: Fri Feb 17 12:42:08 2012 -0500
|
||||
|
||||
Freeze all filesystems during system suspend and (kernel-driven)
|
||||
hibernation by calling freeze_supers() for all superblocks and thaw
|
||||
them during the subsequent resume with the help of thaw_supers().
|
||||
|
||||
This makes filesystems stay in a consistent state in case something
|
||||
goes wrong between system suspend (or hibernation) and the subsequent
|
||||
resume (e.g. journal replays won't be necessary in those cases). In
|
||||
particular, this should help to solve a long-standing issue that, in
|
||||
some cases, during resume from hibernation the boot loader causes the
|
||||
journal to be replied for the filesystem containing the kernel image
|
||||
and/or initrd causing it to become inconsistent with the information
|
||||
stored in the hibernation image.
|
||||
|
||||
The user-space-driven hibernation (s2disk) is not covered by this
|
||||
change, because the freezing of filesystems prevents s2disk from
|
||||
accessing device special files it needs to do its job.
|
||||
|
||||
This change is based on earlier work by Nigel Cunningham.
|
||||
|
||||
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
|
||||
|
||||
Rebased to 3.3-rc3 by Josh Boyer <jwboyer@redhat.com>
|
||||
|
||||
diff --git a/fs/super.c b/fs/super.c
|
||||
index 6015c02..c8057fa 100644
|
||||
--- a/fs/super.c
|
||||
+++ b/fs/super.c
|
||||
@@ -594,6 +594,79 @@ void iterate_supers_type(struct file_system_type *type,
|
||||
EXPORT_SYMBOL(iterate_supers_type);
|
||||
|
||||
/**
|
||||
+ * thaw_supers - call thaw_super() for all superblocks
|
||||
+ */
|
||||
+void thaw_supers(void)
|
||||
+{
|
||||
+ struct super_block *sb, *p = NULL;
|
||||
+
|
||||
+ spin_lock(&sb_lock);
|
||||
+ list_for_each_entry(sb, &super_blocks, s_list) {
|
||||
+ if (hlist_unhashed(&sb->s_instances))
|
||||
+ continue;
|
||||
+ sb->s_count++;
|
||||
+ spin_unlock(&sb_lock);
|
||||
+
|
||||
+ if (sb->s_flags & MS_FROZEN) {
|
||||
+ thaw_super(sb);
|
||||
+ sb->s_flags &= ~MS_FROZEN;
|
||||
+ }
|
||||
+
|
||||
+ spin_lock(&sb_lock);
|
||||
+ if (p)
|
||||
+ __put_super(p);
|
||||
+ p = sb;
|
||||
+ }
|
||||
+ if (p)
|
||||
+ __put_super(p);
|
||||
+ spin_unlock(&sb_lock);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * freeze_supers - call freeze_super() for all superblocks
|
||||
+ */
|
||||
+int freeze_supers(void)
|
||||
+{
|
||||
+ struct super_block *sb, *p = NULL;
|
||||
+ int error = 0;
|
||||
+
|
||||
+ spin_lock(&sb_lock);
|
||||
+ /*
|
||||
+ * Freeze in reverse order so filesystems depending on others are
|
||||
+ * frozen in the right order (eg. loopback on ext3).
|
||||
+ */
|
||||
+ list_for_each_entry_reverse(sb, &super_blocks, s_list) {
|
||||
+ if (hlist_unhashed(&sb->s_instances))
|
||||
+ continue;
|
||||
+ sb->s_count++;
|
||||
+ spin_unlock(&sb_lock);
|
||||
+
|
||||
+ if (sb->s_root && sb->s_frozen != SB_FREEZE_TRANS
|
||||
+ && !(sb->s_flags & MS_RDONLY)) {
|
||||
+ error = freeze_super(sb);
|
||||
+ if (!error)
|
||||
+ sb->s_flags |= MS_FROZEN;
|
||||
+ }
|
||||
+
|
||||
+ spin_lock(&sb_lock);
|
||||
+ if (error)
|
||||
+ break;
|
||||
+ if (p)
|
||||
+ __put_super(p);
|
||||
+ p = sb;
|
||||
+ }
|
||||
+ if (p)
|
||||
+ __put_super(p);
|
||||
+ spin_unlock(&sb_lock);
|
||||
+
|
||||
+ if (error)
|
||||
+ thaw_supers();
|
||||
+
|
||||
+ return error;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/**
|
||||
* get_super - get the superblock of a device
|
||||
* @bdev: device to get the superblock for
|
||||
*
|
||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||
index 386da09..a164f4a 100644
|
||||
--- a/include/linux/fs.h
|
||||
+++ b/include/linux/fs.h
|
||||
@@ -210,6 +210,7 @@ struct inodes_stat_t {
|
||||
#define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */
|
||||
#define MS_I_VERSION (1<<23) /* Update inode I_version field */
|
||||
#define MS_STRICTATIME (1<<24) /* Always perform atime updates */
|
||||
+#define MS_FROZEN (1<<25) /* Frozen filesystem */
|
||||
#define MS_NOSEC (1<<28)
|
||||
#define MS_BORN (1<<29)
|
||||
#define MS_ACTIVE (1<<30)
|
||||
@@ -2501,6 +2502,8 @@ extern void drop_super(struct super_block *sb);
|
||||
extern void iterate_supers(void (*)(struct super_block *, void *), void *);
|
||||
extern void iterate_supers_type(struct file_system_type *,
|
||||
void (*)(struct super_block *, void *), void *);
|
||||
+extern int freeze_supers(void);
|
||||
+extern void thaw_supers(void);
|
||||
|
||||
extern int dcache_dir_open(struct inode *, struct file *);
|
||||
extern int dcache_dir_close(struct inode *, struct file *);
|
||||
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
|
||||
index 6d6d288..492fc62 100644
|
||||
--- a/kernel/power/hibernate.c
|
||||
+++ b/kernel/power/hibernate.c
|
||||
@@ -626,12 +626,17 @@ int hibernate(void)
|
||||
if (error)
|
||||
goto Finish;
|
||||
|
||||
- error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM);
|
||||
+ error = freeze_supers();
|
||||
if (error)
|
||||
goto Thaw;
|
||||
+
|
||||
+ error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM);
|
||||
+ if (error)
|
||||
+ goto Thaw_fs;
|
||||
+
|
||||
if (freezer_test_done) {
|
||||
freezer_test_done = false;
|
||||
- goto Thaw;
|
||||
+ goto Thaw_fs;
|
||||
}
|
||||
|
||||
if (in_suspend) {
|
||||
@@ -655,6 +660,8 @@ int hibernate(void)
|
||||
pr_debug("PM: Image restored successfully.\n");
|
||||
}
|
||||
|
||||
+ Thaw_fs:
|
||||
+ thaw_supers();
|
||||
Thaw:
|
||||
thaw_processes();
|
||||
Finish:
|
||||
diff --git a/kernel/power/power.h b/kernel/power/power.h
|
||||
index 21724ee..40d6f64 100644
|
||||
--- a/kernel/power/power.h
|
||||
+++ b/kernel/power/power.h
|
||||
@@ -1,3 +1,4 @@
|
||||
+#include <linux/fs.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/suspend_ioctls.h>
|
||||
#include <linux/utsname.h>
|
||||
@@ -227,45 +228,3 @@ enum {
|
||||
#define TEST_MAX (__TEST_AFTER_LAST - 1)
|
||||
|
||||
extern int pm_test_level;
|
||||
-
|
||||
-#ifdef CONFIG_SUSPEND_FREEZER
|
||||
-static inline int suspend_freeze_processes(void)
|
||||
-{
|
||||
- int error;
|
||||
-
|
||||
- error = freeze_processes();
|
||||
-
|
||||
- /*
|
||||
- * freeze_processes() automatically thaws every task if freezing
|
||||
- * fails. So we need not do anything extra upon error.
|
||||
- */
|
||||
- if (error)
|
||||
- goto Finish;
|
||||
-
|
||||
- error = freeze_kernel_threads();
|
||||
-
|
||||
- /*
|
||||
- * freeze_kernel_threads() thaws only kernel threads upon freezing
|
||||
- * failure. So we have to thaw the userspace tasks ourselves.
|
||||
- */
|
||||
- if (error)
|
||||
- thaw_processes();
|
||||
-
|
||||
- Finish:
|
||||
- return error;
|
||||
-}
|
||||
-
|
||||
-static inline void suspend_thaw_processes(void)
|
||||
-{
|
||||
- thaw_processes();
|
||||
-}
|
||||
-#else
|
||||
-static inline int suspend_freeze_processes(void)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static inline void suspend_thaw_processes(void)
|
||||
-{
|
||||
-}
|
||||
-#endif
|
||||
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
|
||||
index 4fd51be..5f51fc7 100644
|
||||
--- a/kernel/power/suspend.c
|
||||
+++ b/kernel/power/suspend.c
|
||||
@@ -29,6 +29,62 @@
|
||||
|
||||
#include "power.h"
|
||||
|
||||
+#ifdef CONFIG_SUSPEND_FREEZER
|
||||
+
|
||||
+static inline int suspend_freeze_processes(void)
|
||||
+{
|
||||
+ int error;
|
||||
+
|
||||
+ error = freeze_processes();
|
||||
+
|
||||
+ /*
|
||||
+ * freeze_processes() automatically thaws every task if freezing
|
||||
+ * fails. So we need not do anything extra upon error.
|
||||
+ */
|
||||
+
|
||||
+ if (error)
|
||||
+ goto Finish;
|
||||
+
|
||||
+ error = freeze_supers();
|
||||
+ if (error) {
|
||||
+ thaw_processes();
|
||||
+ goto Finish;
|
||||
+ }
|
||||
+
|
||||
+ error = freeze_kernel_threads();
|
||||
+
|
||||
+ /*
|
||||
+ * freeze_kernel_threads() thaws only kernel threads upon freezing
|
||||
+ * failure. So we have to thaw the userspace tasks ourselves.
|
||||
+ */
|
||||
+ if (error) {
|
||||
+ thaw_supers();
|
||||
+ thaw_processes();
|
||||
+ }
|
||||
+
|
||||
+Finish:
|
||||
+ return error;
|
||||
+}
|
||||
+
|
||||
+static inline void suspend_thaw_processes(void)
|
||||
+{
|
||||
+ thaw_supers();
|
||||
+ thaw_processes();
|
||||
+}
|
||||
+
|
||||
+#else /* !CONFIG_SUSPEND_FREEZER */
|
||||
+
|
||||
+static inline int suspend_freeze_processes(void)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static inline void suspend_thaw_processes(void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+#endif /* !CONFIG_SUSPEND_FREEZER */
|
||||
+
|
||||
const char *const pm_states[PM_SUSPEND_MAX] = {
|
||||
[PM_SUSPEND_STANDBY] = "standby",
|
||||
[PM_SUSPEND_MEM] = "mem",
|
|
@ -0,0 +1,176 @@
|
|||
From c50ac050811d6485616a193eb0f37bfbd191cc89 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Hansen <dave@linux.vnet.ibm.com>
|
||||
Date: Tue, 29 May 2012 15:06:46 -0700
|
||||
Subject: [PATCH] hugetlb: fix resv_map leak in error path
|
||||
|
||||
When called for anonymous (non-shared) mappings, hugetlb_reserve_pages()
|
||||
does a resv_map_alloc(). It depends on code in hugetlbfs's
|
||||
vm_ops->close() to release that allocation.
|
||||
|
||||
However, in the mmap() failure path, we do a plain unmap_region() without
|
||||
the remove_vma() which actually calls vm_ops->close().
|
||||
|
||||
This is a decent fix. This leak could get reintroduced if new code (say,
|
||||
after hugetlb_reserve_pages() in hugetlbfs_file_mmap()) decides to return
|
||||
an error. But, I think it would have to unroll the reservation anyway.
|
||||
|
||||
Christoph's test case:
|
||||
|
||||
http://marc.info/?l=linux-mm&m=133728900729735
|
||||
|
||||
This patch applies to 3.4 and later. A version for earlier kernels is at
|
||||
https://lkml.org/lkml/2012/5/22/418.
|
||||
|
||||
Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com>
|
||||
Acked-by: Mel Gorman <mel@csn.ul.ie>
|
||||
Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
|
||||
Reported-by: Christoph Lameter <cl@linux.com>
|
||||
Tested-by: Christoph Lameter <cl@linux.com>
|
||||
Cc: Andrea Arcangeli <aarcange@redhat.com>
|
||||
Cc: <stable@vger.kernel.org> [2.6.32+]
|
||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
mm/hugetlb.c | 28 ++++++++++++++++++++++------
|
||||
1 files changed, 22 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
|
||||
index 41a647d..285a81e 100644
|
||||
--- a/mm/hugetlb.c
|
||||
+++ b/mm/hugetlb.c
|
||||
@@ -2157,6 +2157,15 @@ static void hugetlb_vm_op_open(struct vm_area_struct *vma)
|
||||
kref_get(&reservations->refs);
|
||||
}
|
||||
|
||||
+static void resv_map_put(struct vm_area_struct *vma)
|
||||
+{
|
||||
+ struct resv_map *reservations = vma_resv_map(vma);
|
||||
+
|
||||
+ if (!reservations)
|
||||
+ return;
|
||||
+ kref_put(&reservations->refs, resv_map_release);
|
||||
+}
|
||||
+
|
||||
static void hugetlb_vm_op_close(struct vm_area_struct *vma)
|
||||
{
|
||||
struct hstate *h = hstate_vma(vma);
|
||||
@@ -2173,7 +2182,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma)
|
||||
reserve = (end - start) -
|
||||
region_count(&reservations->regions, start, end);
|
||||
|
||||
- kref_put(&reservations->refs, resv_map_release);
|
||||
+ resv_map_put(vma);
|
||||
|
||||
if (reserve) {
|
||||
hugetlb_acct_memory(h, -reserve);
|
||||
@@ -2991,12 +3000,16 @@ int hugetlb_reserve_pages(struct inode *inode,
|
||||
set_vma_resv_flags(vma, HPAGE_RESV_OWNER);
|
||||
}
|
||||
|
||||
- if (chg < 0)
|
||||
- return chg;
|
||||
+ if (chg < 0) {
|
||||
+ ret = chg;
|
||||
+ goto out_err;
|
||||
+ }
|
||||
|
||||
/* There must be enough pages in the subpool for the mapping */
|
||||
- if (hugepage_subpool_get_pages(spool, chg))
|
||||
- return -ENOSPC;
|
||||
+ if (hugepage_subpool_get_pages(spool, chg)) {
|
||||
+ ret = -ENOSPC;
|
||||
+ goto out_err;
|
||||
+ }
|
||||
|
||||
/*
|
||||
* Check enough hugepages are available for the reservation.
|
||||
@@ -3005,7 +3018,7 @@ int hugetlb_reserve_pages(struct inode *inode,
|
||||
ret = hugetlb_acct_memory(h, chg);
|
||||
if (ret < 0) {
|
||||
hugepage_subpool_put_pages(spool, chg);
|
||||
- return ret;
|
||||
+ goto out_err;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3022,6 +3035,9 @@ int hugetlb_reserve_pages(struct inode *inode,
|
||||
if (!vma || vma->vm_flags & VM_MAYSHARE)
|
||||
region_add(&inode->i_mapping->private_list, from, to);
|
||||
return 0;
|
||||
+out_err:
|
||||
+ resv_map_put(vma);
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed)
|
||||
--
|
||||
1.7.7.6
|
||||
|
||||
From 4523e1458566a0e8ecfaff90f380dd23acc44d27 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Hansen <dave@linux.vnet.ibm.com>
|
||||
Date: Wed, 30 May 2012 07:51:07 -0700
|
||||
Subject: [PATCH] mm: fix vma_resv_map() NULL pointer
|
||||
|
||||
hugetlb_reserve_pages() can be used for either normal file-backed
|
||||
hugetlbfs mappings, or MAP_HUGETLB. In the MAP_HUGETLB, semi-anonymous
|
||||
mode, there is not a VMA around. The new call to resv_map_put() assumed
|
||||
that there was, and resulted in a NULL pointer dereference:
|
||||
|
||||
BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
|
||||
IP: vma_resv_map+0x9/0x30
|
||||
PGD 141453067 PUD 1421e1067 PMD 0
|
||||
Oops: 0000 [#1] PREEMPT SMP
|
||||
...
|
||||
Pid: 14006, comm: trinity-child6 Not tainted 3.4.0+ #36
|
||||
RIP: vma_resv_map+0x9/0x30
|
||||
...
|
||||
Process trinity-child6 (pid: 14006, threadinfo ffff8801414e0000, task ffff8801414f26b0)
|
||||
Call Trace:
|
||||
resv_map_put+0xe/0x40
|
||||
hugetlb_reserve_pages+0xa6/0x1d0
|
||||
hugetlb_file_setup+0x102/0x2c0
|
||||
newseg+0x115/0x360
|
||||
ipcget+0x1ce/0x310
|
||||
sys_shmget+0x5a/0x60
|
||||
system_call_fastpath+0x16/0x1b
|
||||
|
||||
This was reported by Dave Jones, but was reproducible with the
|
||||
libhugetlbfs test cases, so shame on me for not running them in the
|
||||
first place.
|
||||
|
||||
With this, the oops is gone, and the output of libhugetlbfs's
|
||||
run_tests.py is identical to plain 3.4 again.
|
||||
|
||||
[ Marked for stable, since this was introduced by commit c50ac050811d
|
||||
("hugetlb: fix resv_map leak in error path") which was also marked for
|
||||
stable ]
|
||||
|
||||
Reported-by: Dave Jones <davej@redhat.com>
|
||||
Cc: Mel Gorman <mel@csn.ul.ie>
|
||||
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
|
||||
Cc: Christoph Lameter <cl@linux.com>
|
||||
Cc: Andrea Arcangeli <aarcange@redhat.com>
|
||||
Cc: Andrew Morton <akpm@linux-foundation.org>
|
||||
Cc: <stable@vger.kernel.org> [2.6.32+]
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
mm/hugetlb.c | 3 ++-
|
||||
1 files changed, 2 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
|
||||
index 285a81e..e198831 100644
|
||||
--- a/mm/hugetlb.c
|
||||
+++ b/mm/hugetlb.c
|
||||
@@ -3036,7 +3036,8 @@ int hugetlb_reserve_pages(struct inode *inode,
|
||||
region_add(&inode->i_mapping->private_list, from, to);
|
||||
return 0;
|
||||
out_err:
|
||||
- resv_map_put(vma);
|
||||
+ if (vma)
|
||||
+ resv_map_put(vma);
|
||||
return ret;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.7.6
|
||||
|
|
@ -1,145 +0,0 @@
|
|||
From 785465d9cffd65b5a69dd2f465d2f7c917713220 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@mcmartin.ca>
|
||||
Date: Mon, 18 Oct 2010 13:30:39 -0400
|
||||
Subject: [PATCH] ima: provide a toggle to disable it entirely
|
||||
|
||||
Signed-off-by: Kyle McMartin <kyle@redhat.com>
|
||||
---
|
||||
security/integrity/ima/ima.h | 1 +
|
||||
security/integrity/ima/ima_iint.c | 9 +++++++++
|
||||
security/integrity/ima/ima_main.c | 24 +++++++++++++++++++++---
|
||||
3 files changed, 31 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
|
||||
index 3fbcd1d..65c3977 100644
|
||||
--- a/security/integrity/ima/ima.h
|
||||
+++ b/security/integrity/ima/ima.h
|
||||
@@ -37,6 +37,7 @@ enum tpm_pcrs { TPM_PCR0 = 0, TPM_PCR8 = 8 };
|
||||
/* set during initialization */
|
||||
extern int iint_initialized;
|
||||
extern int ima_initialized;
|
||||
+extern int ima_enabled;
|
||||
extern int ima_used_chip;
|
||||
extern char *ima_hash;
|
||||
|
||||
diff --git a/security/integrity/ima/ima_iint.c b/security/integrity/ima/ima_iint.c
|
||||
index afba4ae..3d191ef 100644
|
||||
--- a/security/integrity/ima/ima_iint.c
|
||||
+++ b/security/integrity/ima/ima_iint.c
|
||||
@@ -54,6 +54,9 @@ int ima_inode_alloc(struct inode *inode)
|
||||
struct ima_iint_cache *iint = NULL;
|
||||
int rc = 0;
|
||||
|
||||
+ if (!ima_enabled)
|
||||
+ return 0;
|
||||
+
|
||||
iint = kmem_cache_alloc(iint_cache, GFP_NOFS);
|
||||
if (!iint)
|
||||
return -ENOMEM;
|
||||
@@ -116,6 +119,9 @@ void ima_inode_free(struct inode *inode)
|
||||
{
|
||||
struct ima_iint_cache *iint;
|
||||
|
||||
+ if (!ima_enabled)
|
||||
+ return;
|
||||
+
|
||||
spin_lock(&ima_iint_lock);
|
||||
iint = radix_tree_delete(&ima_iint_store, (unsigned long)inode);
|
||||
spin_unlock(&ima_iint_lock);
|
||||
@@ -139,6 +145,9 @@ static void init_once(void *foo)
|
||||
|
||||
static int __init ima_iintcache_init(void)
|
||||
{
|
||||
+ if (!ima_enabled)
|
||||
+ return 0;
|
||||
+
|
||||
iint_cache =
|
||||
kmem_cache_create("iint_cache", sizeof(struct ima_iint_cache), 0,
|
||||
SLAB_PANIC, init_once);
|
||||
diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
|
||||
index e662b89..6e91905 100644
|
||||
--- a/security/integrity/ima/ima_main.c
|
||||
+++ b/security/integrity/ima/ima_main.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "ima.h"
|
||||
|
||||
int ima_initialized;
|
||||
+int ima_enabled;
|
||||
|
||||
char *ima_hash = "sha1";
|
||||
static int __init hash_setup(char *str)
|
||||
@@ -36,6 +37,14 @@ static int __init hash_setup(char *str)
|
||||
}
|
||||
__setup("ima_hash=", hash_setup);
|
||||
|
||||
+static int __init ima_enable(char *str)
|
||||
+{
|
||||
+ if (strncmp(str, "on", 2) == 0)
|
||||
+ ima_enabled = 1;
|
||||
+ return 1;
|
||||
+}
|
||||
+__setup("ima=", ima_enable);
|
||||
+
|
||||
struct ima_imbalance {
|
||||
struct hlist_node node;
|
||||
unsigned long fsmagic;
|
||||
@@ -148,7 +157,7 @@ void ima_counts_get(struct file *file)
|
||||
struct ima_iint_cache *iint;
|
||||
int rc;
|
||||
|
||||
- if (!iint_initialized || !S_ISREG(inode->i_mode))
|
||||
+ if (!ima_enabled || !iint_initialized || !S_ISREG(inode->i_mode))
|
||||
return;
|
||||
iint = ima_iint_find_get(inode);
|
||||
if (!iint)
|
||||
@@ -215,7 +224,7 @@ void ima_file_free(struct file *file)
|
||||
struct inode *inode = file->f_dentry->d_inode;
|
||||
struct ima_iint_cache *iint;
|
||||
|
||||
- if (!iint_initialized || !S_ISREG(inode->i_mode))
|
||||
+ if (!ima_enabled || !iint_initialized || !S_ISREG(inode->i_mode))
|
||||
return;
|
||||
iint = ima_iint_find_get(inode);
|
||||
if (!iint)
|
||||
@@ -269,7 +278,7 @@ int ima_file_mmap(struct file *file, unsigned long prot)
|
||||
{
|
||||
int rc;
|
||||
|
||||
- if (!file)
|
||||
+ if (!ima_enabled || !file)
|
||||
return 0;
|
||||
if (prot & PROT_EXEC)
|
||||
rc = process_measurement(file, file->f_dentry->d_name.name,
|
||||
@@ -294,6 +303,9 @@ int ima_bprm_check(struct linux_binprm *bprm)
|
||||
{
|
||||
int rc;
|
||||
|
||||
+ if (!ima_enabled)
|
||||
+ return 0;
|
||||
+
|
||||
rc = process_measurement(bprm->file, bprm->filename,
|
||||
MAY_EXEC, BPRM_CHECK);
|
||||
return 0;
|
||||
@@ -313,6 +325,9 @@ int ima_file_check(struct file *file, int mask)
|
||||
{
|
||||
int rc;
|
||||
|
||||
+ if (!ima_enabled)
|
||||
+ return 0;
|
||||
+
|
||||
rc = process_measurement(file, file->f_dentry->d_name.name,
|
||||
mask & (MAY_READ | MAY_WRITE | MAY_EXEC),
|
||||
FILE_CHECK);
|
||||
@@ -324,6 +339,9 @@ static int __init init_ima(void)
|
||||
{
|
||||
int error;
|
||||
|
||||
+ if (!ima_enabled)
|
||||
+ return 0;
|
||||
+
|
||||
error = ima_init();
|
||||
ima_initialized = 1;
|
||||
return error;
|
||||
--
|
||||
1.7.3.1
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
Path: news.gmane.org!not-for-mail
|
||||
From: Stanislav Yakovlev <stas.yakovlev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
|
||||
Newsgroups: gmane.linux.kernel.wireless.general
|
||||
Subject: [PATCH] net/wireless: ipw2x00: add supported cipher suites to wiphy initialization
|
||||
Date: Tue, 10 Apr 2012 21:44:47 -0400
|
||||
Lines: 97
|
||||
Approved: news@gmane.org
|
||||
Message-ID: <1334108687-12954-1-git-send-email-stas.yakovlev@gmail.com>
|
||||
NNTP-Posting-Host: plane.gmane.org
|
||||
X-Trace: dough.gmane.org 1334108469 22291 80.91.229.3 (11 Apr 2012 01:41:09 GMT)
|
||||
X-Complaints-To: usenet@dough.gmane.org
|
||||
NNTP-Posting-Date: Wed, 11 Apr 2012 01:41:09 +0000 (UTC)
|
||||
Cc: simar-hi6Y0CQ0nG0@public.gmane.org, linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
|
||||
Stanislav Yakovlev <stas.yakovlev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
|
||||
To: linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org
|
||||
Original-X-From: linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Wed Apr 11 03:41:07 2012
|
||||
Return-path: <linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
|
||||
Envelope-to: glkwg-linux-wireless-wOFGN7rlS/M9smdsby/KFg@public.gmane.org
|
||||
Original-Received: from vger.kernel.org ([209.132.180.67])
|
||||
by plane.gmane.org with esmtp (Exim 4.69)
|
||||
(envelope-from <linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>)
|
||||
id 1SHmYV-0004IK-CT
|
||||
for glkwg-linux-wireless-wOFGN7rlS/M9smdsby/KFg@public.gmane.org; Wed, 11 Apr 2012 03:41:07 +0200
|
||||
Original-Received: (majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org) by vger.kernel.org via listexpand
|
||||
id S1759898Ab2DKBlF (ORCPT
|
||||
<rfc822;glkwg-linux-wireless@m.gmane.org>);
|
||||
Tue, 10 Apr 2012 21:41:05 -0400
|
||||
Original-Received: from mail-ob0-f174.google.com ([209.85.214.174]:60108 "EHLO
|
||||
mail-ob0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1753779Ab2DKBlE (ORCPT
|
||||
<rfc822;linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>);
|
||||
Tue, 10 Apr 2012 21:41:04 -0400
|
||||
Original-Received: by obbtb18 with SMTP id tb18so567970obb.19
|
||||
for <linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>; Tue, 10 Apr 2012 18:41:02 -0700 (PDT)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=gmail.com; s=20120113;
|
||||
h=from:to:cc:subject:date:message-id:x-mailer;
|
||||
bh=8+D+Uuo0bIOG6rz8vxd6TGAxmrbuAw2bjWhd058IjOQ=;
|
||||
b=beOgy1Y9ZAV1Xw5XqsnPDJ1Oc0qOpOo+gCWlwmWbLdVHxUVG+ZVuRW9eCRQkh+5bZm
|
||||
5Ic+xOISztYUJp144Fr4flnbGPRKKp7jP8qQ/HvCOo34J6MCgBlnuWNYKbn4/NUvOYAh
|
||||
SeHpk2D8yOHbiWAMV+JGTqGG+/N4jVvRL147Yg1IfNDAJd8Ahbl0wARLOVg8WGGTSPvn
|
||||
MU3HNbmKFFBDhnukYr4keCnjixuDkqPYGMYuDrsmKdiAFHBRDI6qudnvaqi8F8gbtaWg
|
||||
dfssdTbmNYM/R/PJenInoy7IbRps2iW9ZX+zFzydZWp2EyJ4EZkKrYKmnezQgNJzRVex
|
||||
KHfg==
|
||||
Original-Received: by 10.60.24.9 with SMTP id q9mr19071024oef.4.1334108462648;
|
||||
Tue, 10 Apr 2012 18:41:02 -0700 (PDT)
|
||||
Original-Received: from localhost.localdomain (50-0-191-227.dsl.static.sonic.net. [50.0.191.227])
|
||||
by mx.google.com with ESMTPS id tx2sm1309336obb.8.2012.04.10.18.40.54
|
||||
(version=TLSv1/SSLv3 cipher=OTHER);
|
||||
Tue, 10 Apr 2012 18:41:01 -0700 (PDT)
|
||||
X-Mailer: git-send-email 1.7.2.5
|
||||
Original-Sender: linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-wireless.vger.kernel.org>
|
||||
X-Mailing-List: linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
|
||||
Xref: news.gmane.org gmane.linux.kernel.wireless.general:88613
|
||||
Archived-At: <http://permalink.gmane.org/gmane.linux.kernel.wireless.general/88613>
|
||||
|
||||
Driver doesn't report its supported cipher suites through cfg80211
|
||||
interface. It still uses wext interface and probably will not work
|
||||
through nl80211, but will at least correctly advertise supported
|
||||
features.
|
||||
|
||||
Bug was reported by Omar Siam.
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=43049
|
||||
|
||||
Signed-off-by: Stanislav Yakovlev <stas.yakovlev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
|
||||
---
|
||||
drivers/net/wireless/ipw2x00/ipw.h | 23 +++++++++++++++++++++++
|
||||
drivers/net/wireless/ipw2x00/ipw2100.c | 4 ++++
|
||||
drivers/net/wireless/ipw2x00/ipw2200.c | 4 ++++
|
||||
3 files changed, 31 insertions(+), 0 deletions(-)
|
||||
create mode 100644 drivers/net/wireless/ipw2x00/ipw.h
|
||||
|
||||
diff --git a/drivers/net/wireless/ipw2x00/ipw.h b/drivers/net/wireless/ipw2x00/ipw.h
|
||||
new file mode 100644
|
||||
index 0000000..4007bf5
|
||||
--- /dev/null
|
||||
+++ b/drivers/net/wireless/ipw2x00/ipw.h
|
||||
@@ -0,0 +1,23 @@
|
||||
+/*
|
||||
+ * Intel Pro/Wireless 2100, 2200BG, 2915ABG network connection driver
|
||||
+ *
|
||||
+ * Copyright 2012 Stanislav Yakovlev <stas.yakovlev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ */
|
||||
+
|
||||
+#ifndef __IPW_H__
|
||||
+#define __IPW_H__
|
||||
+
|
||||
+#include <linux/ieee80211.h>
|
||||
+
|
||||
+static const u32 ipw_cipher_suites[] = {
|
||||
+ WLAN_CIPHER_SUITE_WEP40,
|
||||
+ WLAN_CIPHER_SUITE_WEP104,
|
||||
+ WLAN_CIPHER_SUITE_TKIP,
|
||||
+ WLAN_CIPHER_SUITE_CCMP,
|
||||
+};
|
||||
+
|
||||
+#endif
|
||||
diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
|
||||
index f0551f8..7c8e8b1 100644
|
||||
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
|
||||
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
|
||||
@@ -166,6 +166,7 @@ that only one external action is invoked at a time.
|
||||
#include <net/lib80211.h>
|
||||
|
||||
#include "ipw2100.h"
|
||||
+#include "ipw.h"
|
||||
|
||||
#define IPW2100_VERSION "git-1.2.2"
|
||||
|
||||
@@ -1946,6 +1947,9 @@ static int ipw2100_wdev_init(struct net_device *dev)
|
||||
wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = bg_band;
|
||||
}
|
||||
|
||||
+ wdev->wiphy->cipher_suites = ipw_cipher_suites;
|
||||
+ wdev->wiphy->n_cipher_suites = ARRAY_SIZE(ipw_cipher_suites);
|
||||
+
|
||||
set_wiphy_dev(wdev->wiphy, &priv->pci_dev->dev);
|
||||
if (wiphy_register(wdev->wiphy)) {
|
||||
ipw2100_down(priv);
|
||||
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
|
||||
index 2b02257..bb4f42a 100644
|
||||
--- a/drivers/net/wireless/ipw2x00/ipw2200.c
|
||||
+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <linux/slab.h>
|
||||
#include <net/cfg80211-wext.h>
|
||||
#include "ipw2200.h"
|
||||
+#include "ipw.h"
|
||||
|
||||
|
||||
#ifndef KBUILD_EXTMOD
|
||||
@@ -11533,6 +11534,9 @@ static int ipw_wdev_init(struct net_device *dev)
|
||||
wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = a_band;
|
||||
}
|
||||
|
||||
+ wdev->wiphy->cipher_suites = ipw_cipher_suites;
|
||||
+ wdev->wiphy->n_cipher_suites = ARRAY_SIZE(ipw_cipher_suites);
|
||||
+
|
||||
set_wiphy_dev(wdev->wiphy, &priv->pci_dev->dev);
|
||||
|
||||
/* With that information in place, we can now register the wiphy... */
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
|
||||
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
||||
index f803fb6..d6ae444 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
|
||||
@@ -1487,6 +1487,9 @@ int iwlagn_wait_tx_queue_empty(struct iwl_priv *priv)
|
||||
unsigned long now = jiffies;
|
||||
int ret = 0;
|
||||
|
||||
+ if (!priv->txq)
|
||||
+ return 0;
|
||||
+
|
||||
/* waiting for all the tx frames complete might take a while */
|
||||
for (cnt = 0; cnt < priv->hw_params.max_txq_num; cnt++) {
|
||||
if (cnt == priv->cmd_queue)
|
|
@ -0,0 +1,95 @@
|
|||
From 8762202dd0d6e46854f786bdb6fb3780a1625efe Mon Sep 17 00:00:00 2001
|
||||
From: Eryu Guan <guaneryu@gmail.com>
|
||||
Date: Tue, 1 Nov 2011 19:04:59 -0400
|
||||
Subject: [PATCH] jbd/jbd2: validate sb->s_first in journal_get_superblock()
|
||||
|
||||
I hit a J_ASSERT(blocknr != 0) failure in cleanup_journal_tail() when
|
||||
mounting a fsfuzzed ext3 image. It turns out that the corrupted ext3
|
||||
image has s_first = 0 in journal superblock, and the 0 is passed to
|
||||
journal->j_head in journal_reset(), then to blocknr in
|
||||
cleanup_journal_tail(), in the end the J_ASSERT failed.
|
||||
|
||||
So validate s_first after reading journal superblock from disk in
|
||||
journal_get_superblock() to ensure s_first is valid.
|
||||
|
||||
The following script could reproduce it:
|
||||
|
||||
fstype=ext3
|
||||
blocksize=1024
|
||||
img=$fstype.img
|
||||
offset=0
|
||||
found=0
|
||||
magic="c0 3b 39 98"
|
||||
|
||||
dd if=/dev/zero of=$img bs=1M count=8
|
||||
mkfs -t $fstype -b $blocksize -F $img
|
||||
filesize=`stat -c %s $img`
|
||||
while [ $offset -lt $filesize ]
|
||||
do
|
||||
if od -j $offset -N 4 -t x1 $img | grep -i "$magic";then
|
||||
echo "Found journal: $offset"
|
||||
found=1
|
||||
break
|
||||
fi
|
||||
offset=`echo "$offset+$blocksize" | bc`
|
||||
done
|
||||
|
||||
if [ $found -ne 1 ];then
|
||||
echo "Magic \"$magic\" not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dd if=/dev/zero of=$img seek=$(($offset+23)) conv=notrunc bs=1 count=1
|
||||
|
||||
mkdir -p ./mnt
|
||||
mount -o loop $img ./mnt
|
||||
|
||||
Cc: Jan Kara <jack@suse.cz>
|
||||
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
|
||||
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
|
||||
---
|
||||
fs/jbd/journal.c | 8 ++++++++
|
||||
fs/jbd2/journal.c | 8 ++++++++
|
||||
2 files changed, 16 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/fs/jbd/journal.c b/fs/jbd/journal.c
|
||||
index 9fe061f..fea8dd6 100644
|
||||
--- a/fs/jbd/journal.c
|
||||
+++ b/fs/jbd/journal.c
|
||||
@@ -1135,6 +1135,14 @@ static int journal_get_superblock(journal_t *journal)
|
||||
goto out;
|
||||
}
|
||||
|
||||
+ if (be32_to_cpu(sb->s_first) == 0 ||
|
||||
+ be32_to_cpu(sb->s_first) >= journal->j_maxlen) {
|
||||
+ printk(KERN_WARNING
|
||||
+ "JBD: Invalid start block of journal: %u\n",
|
||||
+ be32_to_cpu(sb->s_first));
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
|
||||
out:
|
||||
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
|
||||
index f24df13..d6e93d0 100644
|
||||
--- a/fs/jbd2/journal.c
|
||||
+++ b/fs/jbd2/journal.c
|
||||
@@ -1251,6 +1251,14 @@ static int journal_get_superblock(journal_t *journal)
|
||||
goto out;
|
||||
}
|
||||
|
||||
+ if (be32_to_cpu(sb->s_first) == 0 ||
|
||||
+ be32_to_cpu(sb->s_first) >= journal->j_maxlen) {
|
||||
+ printk(KERN_WARNING
|
||||
+ "JBD2: Invalid start block of journal: %u\n",
|
||||
+ be32_to_cpu(sb->s_first));
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
|
||||
out:
|
||||
--
|
||||
1.7.7.1
|
||||
|
2426
kernel.spec
2426
kernel.spec
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,13 @@
|
|||
Before:
|
||||
Heap randomisation test (PIE) : 16 bits (guessed)
|
||||
Main executable randomisation (PIE) : 8 bits (guessed)
|
||||
|
||||
after:
|
||||
Heap randomisation test (PIE) : 19 bits (guessed)
|
||||
Main executable randomisation (PIE) : 12 bits (guessed)
|
||||
|
||||
|
||||
|
||||
--- b/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -397,6 +397,10 @@
|
||||
|
@ -142,7 +152,7 @@
|
|||
struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
|
||||
--- a/arch/x86/mm/mmap.c
|
||||
+++ b/arch/x86/mm/mmap.c
|
||||
@@ -124,13 +124,16 @@ static unsigned long mmap_legacy_base(void)
|
||||
@@ -124,13 +124,19 @@ static unsigned long mmap_legacy_base(void)
|
||||
*/
|
||||
void arch_pick_mmap_layout(struct mm_struct *mm)
|
||||
{
|
||||
|
@ -153,9 +163,12 @@
|
|||
} else {
|
||||
mm->mmap_base = mmap_base();
|
||||
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ if (!(current->personality & READ_IMPLIES_EXEC)
|
||||
+ && !(__supported_pte_mask & _PAGE_NX)
|
||||
+ && mmap_is_ia32())
|
||||
+ mm->get_unmapped_exec_area = arch_get_unmapped_exec_area;
|
||||
+#endif
|
||||
mm->unmap_area = arch_unmap_area_topdown;
|
||||
}
|
||||
}
|
||||
|
@ -214,3 +227,25 @@
|
|||
if (new_addr & ~PAGE_MASK) {
|
||||
ret = new_addr;
|
||||
goto out;
|
||||
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
|
||||
index 57d1868..29c0c35 100644
|
||||
--- a/arch/x86/kernel/process.c
|
||||
+++ b/arch/x86/kernel/process.c
|
||||
@@ -669,6 +669,16 @@ unsigned long arch_align_stack(unsigned long sp)
|
||||
unsigned long arch_randomize_brk(struct mm_struct *mm)
|
||||
{
|
||||
unsigned long range_end = mm->brk + 0x02000000;
|
||||
- return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
|
||||
+ unsigned long bump = 0;
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ /* in the case of NX emulation, shove the brk segment way out of the
|
||||
+ way of the exec randomization area, since it can collide with
|
||||
+ future allocations if not. */
|
||||
+ if ( (mm->get_unmapped_exec_area == arch_get_unmapped_exec_area) &&
|
||||
+ (mm->brk < 0x08000000) ) {
|
||||
+ bump = (TASK_SIZE/6);
|
||||
+ }
|
||||
+#endif
|
||||
+ return bump + (randomize_range(mm->brk, range_end, 0) ? : mm->brk);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +1,3 @@
|
|||
--- linux-2.6.34.noarch/drivers/acpi/acpica/dsopcode.c~ 2010-07-01 14:40:44.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/acpi/acpica/dsopcode.c 2010-07-01 14:48:56.000000000 -0400
|
||||
@@ -1276,6 +1276,10 @@ acpi_ds_exec_end_control_op(struct acpi_
|
||||
* loop does not implement a timeout.
|
||||
*/
|
||||
control_state->control.loop_count++;
|
||||
+ if ((control_state->control.loop_count > 1) && (control_state->control.loop_count % 0xffff == 0))
|
||||
+ printk("ACPI: While loop taking a really long time. loop_count=0x%x\n",
|
||||
+ control_state->control.loop_count);
|
||||
+
|
||||
if (control_state->control.loop_count >
|
||||
ACPI_MAX_LOOP_ITERATIONS) {
|
||||
status = AE_AML_INFINITE_LOOP;
|
||||
--- linux-2.6.34.noarch/drivers/acpi/acpica/acconfig.h~ 2010-07-01 14:49:03.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/acpi/acpica/acconfig.h 2010-07-01 14:49:17.000000000 -0400
|
||||
@@ -117,7 +117,7 @@
|
||||
|
@ -22,3 +9,17 @@
|
|||
|
||||
/* Maximum sleep allowed via Sleep() operator */
|
||||
|
||||
--- a/drivers/acpi/acpica/dscontrol.c
|
||||
+++ b/drivers/acpi/acpica/dscontrol.c
|
||||
@@ -212,6 +212,11 @@ acpi_ds_exec_end_control_op(struct acpi_walk_state * walk_state,
|
||||
* loop does not implement a timeout.
|
||||
*/
|
||||
control_state->control.loop_count++;
|
||||
+ if ((control_state->control.loop_count > 1) &&
|
||||
+ (control_state->control.loop_count % 0xffff == 0))
|
||||
+ printk("ACPI: While loop taking a really long time. loop_count=0x%x\n",
|
||||
+ control_state->control.loop_count);
|
||||
+
|
||||
if (control_state->control.loop_count >
|
||||
ACPI_MAX_LOOP_ITERATIONS) {
|
||||
status = AE_AML_INFINITE_LOOP;
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
From df42d15cd28f468ecd4c30465b98a53cce90617c Mon Sep 17 00:00:00 2001
|
||||
From f72d640713d01b3b704c6e84ab49b62f19fc9c22 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Tue, 30 Mar 2010 00:16:25 -0400
|
||||
Subject: dev-crash-driver.patch
|
||||
Subject: [PATCH] dev-crash-driver.patch
|
||||
|
||||
---
|
||||
arch/ia64/include/asm/crash.h | 90 +++++++++++++++++++++++++++++
|
||||
arch/ia64/kernel/ia64_ksyms.c | 3 +
|
||||
arch/x86/include/asm/crash.h | 75 ++++++++++++++++++++++++
|
||||
arch/x86/mm/ioremap.c | 2 +
|
||||
drivers/char/Kconfig | 2 +
|
||||
drivers/char/Kconfig | 3 +
|
||||
drivers/char/Makefile | 2 +
|
||||
drivers/char/crash.c | 128 +++++++++++++++++++++++++++++++++++++++++
|
||||
7 files changed, 302 insertions(+), 0 deletions(-)
|
||||
7 files changed, 303 insertions(+), 0 deletions(-)
|
||||
create mode 100644 arch/ia64/include/asm/crash.h
|
||||
create mode 100644 arch/x86/include/asm/crash.h
|
||||
create mode 100644 drivers/char/crash.c
|
||||
|
@ -208,7 +208,7 @@ index 0000000..dfcc006
|
|||
+
|
||||
+#endif /* _ASM_I386_CRASH_H */
|
||||
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
|
||||
index 5eb1ba7..3e525d2 100644
|
||||
index be1ef57..ac659f7 100644
|
||||
--- a/arch/x86/mm/ioremap.c
|
||||
+++ b/arch/x86/mm/ioremap.c
|
||||
@@ -24,6 +24,8 @@
|
||||
|
@ -221,19 +221,29 @@ index 5eb1ba7..3e525d2 100644
|
|||
* Fix up the linear direct mapping of the kernel to avoid cache attribute
|
||||
* conflicts.
|
||||
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
|
||||
index 3141dd3..153658c 100644
|
||||
index 423fd56..e04a561 100644
|
||||
--- a/drivers/char/Kconfig
|
||||
+++ b/drivers/char/Kconfig
|
||||
@@ -471,6 +471,8 @@ config LEGACY_PTYS
|
||||
security. This option enables these legacy devices; on most
|
||||
systems, it is safe to say N.
|
||||
@@ -4,6 +4,9 @@
|
||||
|
||||
menu "Character devices"
|
||||
|
||||
+config CRASH
|
||||
+ tristate "Crash Utility memory driver"
|
||||
+ tristate "Crash Utility memory driver"
|
||||
+
|
||||
source "drivers/tty/Kconfig"
|
||||
|
||||
config LEGACY_PTY_COUNT
|
||||
int "Maximum number of legacy PTY in use"
|
||||
config DEVKMEM
|
||||
diff --git a/drivers/char/Makefile b/drivers/char/Makefile
|
||||
index 32762ba..3d5d525 100644
|
||||
--- a/drivers/char/Makefile
|
||||
+++ b/drivers/char/Makefile
|
||||
@@ -65,3 +65,5 @@ obj-$(CONFIG_JS_RTC) += js-rtc.o
|
||||
js-rtc-y = rtc.o
|
||||
|
||||
obj-$(CONFIG_TILE_SROM) += tile-srom.o
|
||||
+
|
||||
+obj-$(CONFIG_CRASH) += crash.o
|
||||
diff --git a/drivers/char/crash.c b/drivers/char/crash.c
|
||||
new file mode 100644
|
||||
index 0000000..e5437de
|
||||
|
@ -368,14 +378,6 @@ index 0000000..e5437de
|
|||
+module_exit(crash_cleanup_module);
|
||||
+
|
||||
+MODULE_LICENSE("GPL");
|
||||
--
|
||||
1.7.6
|
||||
|
||||
diff --git a/drivers/char/Makefile b/drivers/char/Makefile
|
||||
index ba53ec9..6588b33 100644
|
||||
--- a/drivers/char/Makefile
|
||||
+++ b/drivers/char/Makefile
|
||||
@@ -98,3 +98,5 @@ obj-$(CONFIG_RAMOOPS) += ramoops.o
|
||||
|
||||
obj-$(CONFIG_JS_RTC) += js-rtc.o
|
||||
js-rtc-y = rtc.o
|
||||
+
|
||||
+obj-$(CONFIG_CRASH) += crash.o
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
From 76ec0e2e6d6edf81abc0331d5e7873ef7b2f6019 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Wed, 8 Jul 2009 13:06:01 -0400
|
||||
Subject: [PATCH 6/6] fedora: linux-2.6-debug-always-inline-kzalloc.patch
|
||||
|
||||
---
|
||||
include/linux/slab.h | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/include/linux/slab.h b/include/linux/slab.h
|
||||
index 2da8372..d4ef74f 100644
|
||||
--- a/include/linux/slab.h
|
||||
+++ b/include/linux/slab.h
|
||||
@@ -310,7 +310,7 @@ static inline void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags)
|
||||
* @size: how many bytes of memory are required.
|
||||
* @flags: the type of memory to allocate (see kmalloc).
|
||||
*/
|
||||
-static inline void *kzalloc(size_t size, gfp_t flags)
|
||||
+static __always_inline void *kzalloc(size_t size, gfp_t flags)
|
||||
{
|
||||
return kmalloc(size, flags | __GFP_ZERO);
|
||||
}
|
||||
--
|
||||
1.6.2.5
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
diff --git a/init/main.c b/init/main.c
|
||||
index 7449819..98cfaae 100644
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -369,6 +369,11 @@ static void __init setup_nr_cpu_ids(void)
|
||||
nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;
|
||||
}
|
||||
|
||||
+#include <../fs/ext4/ext4.h>
|
||||
+#include <linux/ext3_fs_i.h>
|
||||
+#include <linux/skbuff.h>
|
||||
+#include <linux/sched.h>
|
||||
+
|
||||
/* Called by boot processor to activate the rest. */
|
||||
static void __init smp_init(void)
|
||||
{
|
||||
@@ -391,6 +395,16 @@ static void __init smp_init(void)
|
||||
/* Any cleanup work */
|
||||
printk(KERN_INFO "Brought up %ld CPUs\n", (long)num_online_cpus());
|
||||
smp_cpus_done(setup_max_cpus);
|
||||
+
|
||||
+ printk(KERN_DEBUG "sizeof(vma)=%u bytes\n", (unsigned int) sizeof(struct vm_area_struct));
|
||||
+ printk(KERN_DEBUG "sizeof(page)=%u bytes\n", (unsigned int) sizeof(struct page));
|
||||
+ printk(KERN_DEBUG "sizeof(inode)=%u bytes\n", (unsigned int) sizeof(struct inode));
|
||||
+ printk(KERN_DEBUG "sizeof(dentry)=%u bytes\n", (unsigned int) sizeof(struct dentry));
|
||||
+ printk(KERN_DEBUG "sizeof(ext3inode)=%u bytes\n", (unsigned int) sizeof(struct ext3_inode_info));
|
||||
+ printk(KERN_DEBUG "sizeof(ext4inode)=%u bytes\n", (unsigned int) sizeof(struct ext4_inode_info));
|
||||
+ printk(KERN_DEBUG "sizeof(buffer_head)=%u bytes\n", (unsigned int) sizeof(struct buffer_head));
|
||||
+ printk(KERN_DEBUG "sizeof(skbuff)=%u bytes\n", (unsigned int) sizeof(struct sk_buff));
|
||||
+ printk(KERN_DEBUG "sizeof(task_struct)=%u bytes\n", (unsigned int) sizeof(struct task_struct));
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,65 +0,0 @@
|
|||
From b04c57d9dc889462951312be2ac81ff6c702e954 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Wed, 8 Jul 2009 13:05:09 -0400
|
||||
Subject: [PATCH 3/6] fedora: linux-2.6-debug-taint-vm.patch
|
||||
|
||||
---
|
||||
kernel/panic.c | 4 +++-
|
||||
mm/slab.c | 8 ++++----
|
||||
mm/slub.c | 2 +-
|
||||
4 files changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/kernel/panic.c b/kernel/panic.c
|
||||
index 984b3ec..6d1c3be 100644
|
||||
--- a/kernel/panic.c
|
||||
+++ b/kernel/panic.c
|
||||
@@ -199,6 +199,7 @@ const char *print_tainted(void)
|
||||
|
||||
return buf;
|
||||
}
|
||||
+EXPORT_SYMBOL(print_tainted);
|
||||
|
||||
int test_taint(unsigned flag)
|
||||
{
|
||||
diff --git a/mm/slab.c b/mm/slab.c
|
||||
index e74a16e..7bc287e 100644
|
||||
--- a/mm/slab.c
|
||||
+++ b/mm/slab.c
|
||||
@@ -1803,8 +1803,8 @@ static void check_poison_obj(struct kmem_cache *cachep, void *objp)
|
||||
/* Print header */
|
||||
if (lines == 0) {
|
||||
printk(KERN_ERR
|
||||
- "Slab corruption: %s start=%p, len=%d\n",
|
||||
- cachep->name, realobj, size);
|
||||
+ "Slab corruption (%s): %s start=%p, len=%d\n",
|
||||
+ print_tainted(), cachep->name, realobj, size);
|
||||
print_objinfo(cachep, objp, 0);
|
||||
}
|
||||
/* Hexdump the affected line */
|
||||
@@ -2902,8 +2902,8 @@ static void check_slabp(struct kmem_cache *cachep, struct slab *slabp)
|
||||
if (entries != cachep->num - slabp->inuse) {
|
||||
bad:
|
||||
printk(KERN_ERR "slab: Internal list corruption detected in "
|
||||
- "cache '%s'(%d), slabp %p(%d). Hexdump:\n",
|
||||
- cachep->name, cachep->num, slabp, slabp->inuse);
|
||||
+ "cache '%s'(%d), slabp %p(%d). Tainted(%s). Hexdump:\n",
|
||||
+ cachep->name, cachep->num, slabp, slabp->inuse, print_tainted());
|
||||
for (i = 0;
|
||||
i < sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t);
|
||||
i++) {
|
||||
diff --git a/mm/slub.c b/mm/slub.c
|
||||
index 819f056..8eff0f4 100644
|
||||
--- a/mm/slub.c
|
||||
+++ b/mm/slub.c
|
||||
@@ -433,7 +433,7 @@ static void slab_bug(struct kmem_cache *s, char *fmt, ...)
|
||||
va_end(args);
|
||||
printk(KERN_ERR "========================================"
|
||||
"=====================================\n");
|
||||
- printk(KERN_ERR "BUG %s: %s\n", s->name, buf);
|
||||
+ printk(KERN_ERR "BUG %s (%s): %s\n", s->name, print_tainted(), buf);
|
||||
printk(KERN_ERR "----------------------------------------"
|
||||
"-------------------------------------\n\n");
|
||||
}
|
||||
--
|
||||
1.6.2.5
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
From beb764ac03e52eba1a654afb4273fab1f9de3cff Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@mcmartin.ca>
|
||||
Date: Mon, 29 Nov 2010 20:59:14 -0500
|
||||
Subject: [PATCH] linux-2.6-debug-vm-would_have_oomkilled
|
||||
|
||||
---
|
||||
include/linux/oom.h | 1 +
|
||||
kernel/sysctl.c | 7 +++++++
|
||||
mm/oom_kill.c | 8 ++++++++
|
||||
3 files changed, 16 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/include/linux/oom.h b/include/linux/oom.h
|
||||
index 5e3aa83..79a27b4 100644
|
||||
--- a/include/linux/oom.h
|
||||
+++ b/include/linux/oom.h
|
||||
@@ -72,5 +72,6 @@ extern struct task_struct *find_lock_task_mm(struct task_struct *p);
|
||||
extern int sysctl_oom_dump_tasks;
|
||||
extern int sysctl_oom_kill_allocating_task;
|
||||
extern int sysctl_panic_on_oom;
|
||||
+extern int sysctl_would_have_oomkilled;
|
||||
#endif /* __KERNEL__*/
|
||||
#endif /* _INCLUDE_LINUX_OOM_H */
|
||||
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
|
||||
index 5abfa15..a0fed6d 100644
|
||||
--- a/kernel/sysctl.c
|
||||
+++ b/kernel/sysctl.c
|
||||
@@ -1000,6 +1000,13 @@ static struct ctl_table vm_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
+ .procname = "would_have_oomkilled",
|
||||
+ .data = &sysctl_would_have_oomkilled,
|
||||
+ .maxlen = sizeof(sysctl_would_have_oomkilled),
|
||||
+ .mode = 0644,
|
||||
+ .proc_handler = proc_dointvec,
|
||||
+ },
|
||||
+ {
|
||||
.procname = "overcommit_ratio",
|
||||
.data = &sysctl_overcommit_ratio,
|
||||
.maxlen = sizeof(sysctl_overcommit_ratio),
|
||||
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
|
||||
index 7dcca55..281ac39 100644
|
||||
--- a/mm/oom_kill.c
|
||||
+++ b/mm/oom_kill.c
|
||||
@@ -35,6 +35,7 @@
|
||||
int sysctl_panic_on_oom;
|
||||
int sysctl_oom_kill_allocating_task;
|
||||
int sysctl_oom_dump_tasks = 1;
|
||||
+int sysctl_would_have_oomkilled;
|
||||
static DEFINE_SPINLOCK(zone_scan_lock);
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
@@ -477,6 +478,13 @@ static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
|
||||
}
|
||||
|
||||
task_lock(p);
|
||||
+ if (sysctl_would_have_oomkilled) {
|
||||
+ printk(KERN_ERR "%s: would have killed process %d (%s), but continuing instead...\n",
|
||||
+ __func__, task_pid_nr(p), p->comm);
|
||||
+ task_unlock(p);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
pr_err("%s: Kill process %d (%s) score %d or sacrifice child\n",
|
||||
message, task_pid_nr(p), p->comm, points);
|
||||
task_unlock(p);
|
||||
--
|
||||
1.7.3.2
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
|
||||
index d8d7596..a1b7117 100644
|
||||
index eaef02a..2029819 100644
|
||||
--- a/drivers/acpi/video.c
|
||||
+++ b/drivers/acpi/video.c
|
||||
@@ -71,7 +71,7 @@ MODULE_AUTHOR("Bruno Ducrot");
|
||||
@@ -69,7 +69,7 @@ MODULE_AUTHOR("Bruno Ducrot");
|
||||
MODULE_DESCRIPTION("ACPI Video Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
-static int brightness_switch_enabled = 1;
|
||||
+static int brightness_switch_enabled = 0;
|
||||
-static bool brightness_switch_enabled = 1;
|
||||
+static bool brightness_switch_enabled = 0;
|
||||
module_param(brightness_switch_enabled, bool, 0644);
|
||||
|
||||
static int acpi_video_bus_add(struct acpi_device *device);
|
||||
/*
|
||||
|
|
|
@ -1,110 +0,0 @@
|
|||
From 14bdd0d36f5284108468bb73afd50726b07c7a84 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@phobos.i.jkkm.org>
|
||||
Date: Mon, 29 Mar 2010 23:43:49 -0400
|
||||
Subject: linux-2.6-defaults-pci_no_msi
|
||||
|
||||
---
|
||||
Documentation/kernel-parameters.txt | 3 +++
|
||||
drivers/pci/Kconfig | 12 ++++++++++++
|
||||
drivers/pci/msi.c | 9 +++++++++
|
||||
drivers/pci/pci.c | 2 ++
|
||||
drivers/pci/pci.h | 2 ++
|
||||
5 files changed, 28 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||||
index e4cbca5..8154a0f 100644
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -1911,6 +1911,9 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
check_enable_amd_mmconf [X86] check for and enable
|
||||
properly configured MMIO access to PCI
|
||||
config space on AMD family 10h CPU
|
||||
+ msi [MSI] If the PCI_MSI kernel config parameter is
|
||||
+ enabled, this kernel boot option can be used to
|
||||
+ enable the use of MSI interrupts system-wide.
|
||||
nomsi [MSI] If the PCI_MSI kernel config parameter is
|
||||
enabled, this kernel boot option can be used to
|
||||
disable the use of MSI interrupts system-wide.
|
||||
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
|
||||
index 7858a11..b12fcad 100644
|
||||
--- a/drivers/pci/Kconfig
|
||||
+++ b/drivers/pci/Kconfig
|
||||
@@ -21,6 +21,18 @@ config PCI_MSI
|
||||
|
||||
If you don't know what to do here, say Y.
|
||||
|
||||
+config PCI_MSI_DEFAULT_ON
|
||||
+ def_bool y
|
||||
+ prompt "Use Message Signaled Interrupts by default"
|
||||
+ depends on PCI_MSI
|
||||
+ help
|
||||
+ Selecting this option will enable use of PCI MSI where applicable
|
||||
+ by default. Support for MSI can be disabled through the use of the
|
||||
+ pci=nomsi boot flag. Conversely, if this option is not selected,
|
||||
+ support for PCI MSI can be enabled by passing the pci=msi flag.
|
||||
+
|
||||
+ If you don't know what to do here, say N.
|
||||
+
|
||||
config PCI_DEBUG
|
||||
bool "PCI Debugging"
|
||||
depends on PCI && DEBUG_KERNEL
|
||||
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
|
||||
index f9cf317..6b0539a 100644
|
||||
--- a/drivers/pci/msi.c
|
||||
+++ b/drivers/pci/msi.c
|
||||
@@ -22,7 +22,11 @@
|
||||
#include "pci.h"
|
||||
#include "msi.h"
|
||||
|
||||
+#ifdef CONFIG_PCI_MSI_DEFAULT_ON
|
||||
static int pci_msi_enable = 1;
|
||||
+#else
|
||||
+static int pci_msi_enable = 0;
|
||||
+#endif /*CONFIG_PCI_MSI_DEFAULT_ON*/
|
||||
|
||||
/* Arch hooks */
|
||||
|
||||
@@ -836,6 +840,11 @@ int pci_msi_enabled(void)
|
||||
}
|
||||
EXPORT_SYMBOL(pci_msi_enabled);
|
||||
|
||||
+void pci_yes_msi(void)
|
||||
+{
|
||||
+ pci_msi_enable = 1;
|
||||
+}
|
||||
+
|
||||
void pci_msi_init_pci_dev(struct pci_dev *dev)
|
||||
{
|
||||
INIT_LIST_HEAD(&dev->msi_list);
|
||||
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
|
||||
index 1531f3a..3cb332b 100644
|
||||
--- a/drivers/pci/pci.c
|
||||
+++ b/drivers/pci/pci.c
|
||||
@@ -2983,6 +2983,8 @@ static int __init pci_setup(char *str)
|
||||
if (*str && (str = pcibios_setup(str)) && *str) {
|
||||
if (!strcmp(str, "nomsi")) {
|
||||
pci_no_msi();
|
||||
+ } else if (!strcmp(str, "msi")) {
|
||||
+ pci_yes_msi();
|
||||
} else if (!strcmp(str, "noaer")) {
|
||||
pci_no_aer();
|
||||
} else if (!strcmp(str, "nodomains")) {
|
||||
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
|
||||
index 4eb10f4..caa051e 100644
|
||||
--- a/drivers/pci/pci.h
|
||||
+++ b/drivers/pci/pci.h
|
||||
@@ -122,9 +122,11 @@ extern unsigned int pci_pm_d3_delay;
|
||||
|
||||
#ifdef CONFIG_PCI_MSI
|
||||
void pci_no_msi(void);
|
||||
+void pci_yes_msi(void);
|
||||
extern void pci_msi_init_pci_dev(struct pci_dev *dev);
|
||||
#else
|
||||
static inline void pci_no_msi(void) { }
|
||||
+static inline void pci_yes_msi(void) { }
|
||||
static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { }
|
||||
#endif
|
||||
|
||||
--
|
||||
1.7.0.1
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
||||
index cea0cd9..c326065 100644
|
||||
--- a/arch/x86/Kconfig
|
||||
+++ b/arch/x86/Kconfig
|
||||
@@ -2142,3 +2142,8 @@ source "crypto/Kconfig"
|
||||
source "arch/x86/kvm/Kconfig"
|
||||
|
||||
source "lib/Kconfig"
|
||||
+
|
||||
+config PCI_DEFAULT_USE_CRS
|
||||
+ def_bool y
|
||||
+ prompt "Use PCI Host Bridge Windows from ACPI by default?"
|
||||
+ depends on ACPI
|
||||
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
|
||||
index 15466c0..3099406 100644
|
||||
--- a/arch/x86/pci/acpi.c
|
||||
+++ b/arch/x86/pci/acpi.c
|
||||
@@ -16,7 +16,11 @@ struct pci_root_info {
|
||||
int busnum;
|
||||
};
|
||||
|
||||
+#ifdef CONFIG_PCI_DEFAULT_USE_CRS
|
||||
static bool pci_use_crs = true;
|
||||
+#else
|
||||
+static bool pci_use_crs = false;
|
||||
+#endif
|
||||
|
||||
static int __init set_use_crs(const struct dmi_system_id *id)
|
||||
{
|
|
@ -1,11 +1,22 @@
|
|||
From 802e6d8c8477a553a677b23a247d6d2638e01958 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Jones <davej@redhat.com>
|
||||
Date: Wed, 26 Oct 2011 13:31:47 -0400
|
||||
Subject: [PATCH] e1000e: ich9 montevina
|
||||
|
||||
This only showed up in one SDV (Montevina).
|
||||
The PCIE slots don't seem to like network cards, so this is the only hope
|
||||
to get networking working. It's never going upstream, but it's low impact
|
||||
enough to carry just to keep those SDVs working.
|
||||
---
|
||||
drivers/net/ethernet/intel/e1000e/ich8lan.c | 6 ++++++
|
||||
drivers/net/ethernet/intel/e1000e/netdev.c | 1 +
|
||||
2 files changed, 7 insertions(+), 0 deletions(-)
|
||||
|
||||
--- linux-2.6.35.noarch/drivers/net/e1000e/ich8lan.c~ 2010-09-29 17:53:13.000000000 -0400
|
||||
+++ linux-2.6.35.noarch/drivers/net/e1000e/ich8lan.c 2010-09-29 17:54:00.000000000 -0400
|
||||
@@ -424,6 +424,12 @@ static s32 e1000_init_phy_params_ich8lan
|
||||
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
|
||||
index 6a17c62..0e40975 100644
|
||||
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
|
||||
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
|
||||
@@ -452,6 +452,12 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw)
|
||||
|
||||
/* Verify phy id */
|
||||
switch (phy->id) {
|
||||
|
@ -18,9 +29,11 @@ enough to carry just to keep those SDVs working.
|
|||
case IGP03E1000_E_PHY_ID:
|
||||
phy->type = e1000_phy_igp_3;
|
||||
phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
|
||||
--- linux-2.6.35.noarch/drivers/net/e1000e/netdev.c~ 2010-09-29 17:54:07.000000000 -0400
|
||||
+++ linux-2.6.35.noarch/drivers/net/e1000e/netdev.c 2010-09-29 17:54:29.000000000 -0400
|
||||
@@ -5994,6 +5994,7 @@ static DEFINE_PCI_DEVICE_TABLE(e1000_pci
|
||||
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
index a855db1..edac30b 100644
|
||||
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
@@ -6359,6 +6359,7 @@ static DEFINE_PCI_DEVICE_TABLE(e1000_pci_tbl) = {
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M), board_ich9lan },
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_AMT), board_ich9lan },
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_V), board_ich9lan },
|
||||
|
@ -28,3 +41,6 @@ enough to carry just to keep those SDVs working.
|
|||
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LM), board_ich9lan },
|
||||
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LF), board_ich9lan },
|
||||
--
|
||||
1.7.6.4
|
||||
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
commit e17a07a9e0b62d5a5f0a5683ecbabad3aa95a4d5
|
||||
Author: Matthew Garrett <mjg@redhat.com>
|
||||
Date: Tue Jan 11 12:19:40 2011 -0500
|
||||
|
||||
ehci: Check individual port status registers on resume
|
||||
|
||||
If a device plug/unplug is detected on an ATI SB700 USB controller in D3,
|
||||
it appears to set the port status register but not the controller status
|
||||
register. As a result we'll fail to detect the plug event. Check the port
|
||||
status register on resume as well in order to catch this case.
|
||||
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
|
||||
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
|
||||
index 796ea0c..d9c0748 100644
|
||||
--- a/drivers/usb/host/ehci-hub.c
|
||||
+++ b/drivers/usb/host/ehci-hub.c
|
||||
@@ -106,6 +106,27 @@ static void ehci_handover_companion_ports(struct ehci_hcd *ehci)
|
||||
ehci->owned_ports = 0;
|
||||
}
|
||||
|
||||
+static int ehci_port_change(struct ehci_hcd *ehci)
|
||||
+{
|
||||
+ int i = HCS_N_PORTS(ehci->hcs_params);
|
||||
+
|
||||
+ /* First check if the controller indicates a change event */
|
||||
+
|
||||
+ if (ehci_readl(ehci, &ehci->regs->status) & STS_PCD)
|
||||
+ return 1;
|
||||
+
|
||||
+ /*
|
||||
+ * Not all controllers appear to update this while going from D3 to D0,
|
||||
+ * so check the individual port status registers as well
|
||||
+ */
|
||||
+
|
||||
+ while (i--)
|
||||
+ if (ehci_readl(ehci, &ehci->regs->port_status[i]) & PORT_CSC)
|
||||
+ return 1;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static void ehci_adjust_port_wakeup_flags(struct ehci_hcd *ehci,
|
||||
bool suspending, bool do_wakeup)
|
||||
{
|
||||
@@ -168,7 +189,7 @@ static void ehci_adjust_port_wakeup_flags(struct ehci_hcd *ehci,
|
||||
}
|
||||
|
||||
/* Does the root hub have a port wakeup pending? */
|
||||
- if (!suspending && (ehci_readl(ehci, &ehci->regs->status) & STS_PCD))
|
||||
+ if (!suspending && ehci_port_change(ehci))
|
||||
usb_hcd_resume_root_hub(ehci_to_hcd(ehci));
|
||||
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
|
@ -1,4 +0,0 @@
|
|||
#
|
||||
# Patches under review and/or pending inclusion in the linux1394-git
|
||||
# tree (and/or in by the time your read this), which we want...
|
||||
#
|
File diff suppressed because it is too large
Load Diff
|
@ -1,15 +0,0 @@
|
|||
fixes:
|
||||
implicit declaration of function kzalloc
|
||||
|
||||
--- linux-2.6.34.noarch/drivers/usb/serial/qcserial.c~ 2010-06-08 15:19:41.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/usb/serial/qcserial.c 2010-06-08 15:19:47.000000000 -0400
|
||||
@@ -11,6 +11,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#include <linux/slab.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/tty_flip.h>
|
||||
#include <linux/usb.h>
|
||||
|
||||
|
|
@ -1,23 +1,25 @@
|
|||
diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
|
||||
index 41935fa..6e9259b 100644
|
||||
--- a/arch/x86/include/asm/desc.h
|
||||
+++ b/arch/x86/include/asm/desc.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <asm/ldt.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
+#include <linux/mm_types.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
static inline void fill_ldt(struct desc_struct *desc,
|
||||
const struct user_desc *info)
|
||||
@@ -93,6 +94,9 @@ static inline int desc_empty(const void *ptr)
|
||||
static inline void fill_ldt(struct desc_struct *desc, const struct user_desc *info)
|
||||
@@ -97,6 +98,9 @@ static inline int desc_empty(const void *ptr)
|
||||
|
||||
#define load_TLS(t, cpu) native_load_tls(t, cpu)
|
||||
#define set_ldt native_set_ldt
|
||||
#define load_TLS(t, cpu) native_load_tls(t, cpu)
|
||||
#define set_ldt native_set_ldt
|
||||
+#ifdef CONFIG_X86_32
|
||||
+#define load_user_cs_desc native_load_user_cs_desc
|
||||
+#define load_user_cs_desc native_load_user_cs_desc
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
|
||||
#define write_ldt_entry(dt, entry, desc) \
|
||||
native_write_ldt_entry(dt, entry, desc)
|
||||
#define write_ldt_entry(dt, entry, desc) native_write_ldt_entry(dt, entry, desc)
|
||||
#define write_gdt_entry(dt, entry, desc, type) native_write_gdt_entry(dt, entry, desc, type)
|
||||
@@ -392,4 +396,25 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
|
||||
_set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS);
|
||||
}
|
||||
|
@ -44,9 +46,11 @@
|
|||
+#endif /* CONFIG_X86_32 */
|
||||
+
|
||||
#endif /* _ASM_X86_DESC_H */
|
||||
diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
|
||||
index 5f55e69..aba94f0 100644
|
||||
--- a/arch/x86/include/asm/mmu.h
|
||||
+++ b/arch/x86/include/asm/mmu.h
|
||||
@@ -7,12 +7,19 @@
|
||||
@@ -7,6 +7,9 @@
|
||||
/*
|
||||
* The x86 doesn't have a mmu context, but
|
||||
* we put the segment information here.
|
||||
|
@ -56,9 +60,11 @@
|
|||
*/
|
||||
typedef struct {
|
||||
void *ldt;
|
||||
int size;
|
||||
@@ -19,6 +22,11 @@ typedef struct {
|
||||
|
||||
struct mutex lock;
|
||||
void *vdso;
|
||||
+
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ struct desc_struct user_cs;
|
||||
+ unsigned long exec_limit;
|
||||
|
@ -66,9 +72,11 @@
|
|||
} mm_context_t;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
|
||||
index a7d2db9..cc4ad60 100644
|
||||
--- a/arch/x86/include/asm/paravirt.h
|
||||
+++ b/arch/x86/include/asm/paravirt.h
|
||||
@@ -289,6 +289,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
|
||||
@@ -298,6 +298,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
|
||||
{
|
||||
PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries);
|
||||
}
|
||||
|
@ -81,9 +89,11 @@
|
|||
static inline void store_gdt(struct desc_ptr *dtr)
|
||||
{
|
||||
PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr);
|
||||
diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
|
||||
index 8e8b9a4..cca421e 100644
|
||||
--- a/arch/x86/include/asm/paravirt_types.h
|
||||
+++ b/arch/x86/include/asm/paravirt_types.h
|
||||
@@ -118,6 +118,9 @@ struct pv_cpu_ops {
|
||||
@@ -125,6 +125,9 @@ struct pv_cpu_ops {
|
||||
void (*store_gdt)(struct desc_ptr *);
|
||||
void (*store_idt)(struct desc_ptr *);
|
||||
void (*set_ldt)(const void *desc, unsigned entries);
|
||||
|
@ -93,9 +103,11 @@
|
|||
unsigned long (*store_tr)(void);
|
||||
void (*load_tls)(struct thread_struct *t, unsigned int cpu);
|
||||
#ifdef CONFIG_X86_64
|
||||
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
|
||||
index aa003b1..c094152 100644
|
||||
--- a/arch/x86/kernel/cpu/common.c
|
||||
+++ b/arch/x86/kernel/cpu/common.c
|
||||
@@ -802,6 +802,22 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
|
||||
@@ -844,6 +844,22 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
|
||||
/* Filter out anything that depends on CPUID levels we don't have */
|
||||
filter_cpuid_features(c, true);
|
||||
|
||||
|
@ -118,9 +130,11 @@
|
|||
/* If the model name is still unset, do table lookup. */
|
||||
if (!c->x86_model_id[0]) {
|
||||
const char *p;
|
||||
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
|
||||
index d90272e..cc594fc 100644
|
||||
--- a/arch/x86/kernel/paravirt.c
|
||||
+++ b/arch/x86/kernel/paravirt.c
|
||||
@@ -345,6 +345,9 @@ struct pv_cpu_ops pv_cpu_ops = {
|
||||
@@ -358,6 +358,9 @@ struct pv_cpu_ops pv_cpu_ops = {
|
||||
.read_tscp = native_read_tscp,
|
||||
.load_tr_desc = native_load_tr_desc,
|
||||
.set_ldt = native_set_ldt,
|
||||
|
@ -130,9 +144,11 @@
|
|||
.load_gdt = native_load_gdt,
|
||||
.load_idt = native_load_idt,
|
||||
.store_gdt = native_store_gdt,
|
||||
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
|
||||
index 8598296..641ae48 100644
|
||||
--- a/arch/x86/kernel/process_32.c
|
||||
+++ b/arch/x86/kernel/process_32.c
|
||||
@@ -243,7 +243,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
|
||||
@@ -247,7 +247,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
|
||||
void
|
||||
start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
|
||||
{
|
||||
|
@ -141,9 +157,9 @@
|
|||
set_user_gs(regs, 0);
|
||||
+
|
||||
regs->fs = 0;
|
||||
set_fs(USER_DS);
|
||||
regs->ds = __USER_DS;
|
||||
@@ -252,6 +255,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
|
||||
regs->es = __USER_DS;
|
||||
@@ -255,6 +258,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
|
||||
regs->cs = __USER_CS;
|
||||
regs->ip = new_ip;
|
||||
regs->sp = new_sp;
|
||||
|
@ -155,17 +171,17 @@
|
|||
/*
|
||||
* Free the old FP and other extended state
|
||||
*/
|
||||
@@ -311,6 +319,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
|
||||
if (preload_fpu)
|
||||
prefetch(next->fpu.state);
|
||||
@@ -320,6 +328,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
|
||||
*/
|
||||
lazy_save_gs(prev->gs);
|
||||
|
||||
+ if (next_p->mm)
|
||||
+ load_user_cs_desc(cpu, next_p->mm);
|
||||
+
|
||||
/*
|
||||
* Reload esp0.
|
||||
* Load the per-thread Thread-Local Storage descriptor.
|
||||
*/
|
||||
@@ -404,3 +415,40 @@ unsigned long get_wchan(struct task_struct *p)
|
||||
@@ -390,3 +401,40 @@ unsigned long get_wchan(struct task_struct *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -206,9 +222,11 @@
|
|||
+ mm->context.exec_limit = 0;
|
||||
+ set_user_cs(&mm->context.user_cs, 0);
|
||||
+}
|
||||
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
|
||||
index 31d9d0f..f7c210d 100644
|
||||
--- a/arch/x86/kernel/traps.c
|
||||
+++ b/arch/x86/kernel/traps.c
|
||||
@@ -109,6 +109,78 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
|
||||
@@ -107,6 +107,78 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
|
||||
dec_preempt_count();
|
||||
}
|
||||
|
||||
|
@ -247,7 +265,7 @@
|
|||
+ for (vma = current->mm->mmap; vma; vma = vma->vm_next)
|
||||
+ if ((vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
|
||||
+ limit = vma->vm_end;
|
||||
+ vma = get_gate_vma(current);
|
||||
+ vma = get_gate_vma(current->mm);
|
||||
+ if (vma && (vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
|
||||
+ limit = vma->vm_end;
|
||||
+ spin_unlock(¤t->mm->page_table_lock);
|
||||
|
@ -287,7 +305,7 @@
|
|||
static void __kprobes
|
||||
do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
|
||||
long error_code, siginfo_t *info)
|
||||
@@ -265,6 +337,29 @@ do_general_protection(struct pt_regs *regs, long error_code)
|
||||
@@ -263,6 +335,29 @@ do_general_protection(struct pt_regs *regs, long error_code)
|
||||
if (!user_mode(regs))
|
||||
goto gp_in_kernel;
|
||||
|
||||
|
@ -317,7 +335,7 @@
|
|||
tsk->thread.error_code = error_code;
|
||||
tsk->thread.trap_no = 13;
|
||||
|
||||
@@ -792,19 +887,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
|
||||
@@ -649,19 +744,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
|
@ -364,6 +382,8 @@
|
|||
}
|
||||
#endif
|
||||
|
||||
diff --git a/arch/x86/mm/setup_nx.c b/arch/x86/mm/setup_nx.c
|
||||
index 410531d..eb040ad 100644
|
||||
--- a/arch/x86/mm/setup_nx.c
|
||||
+++ b/arch/x86/mm/setup_nx.c
|
||||
@@ -1,3 +1,4 @@
|
||||
|
@ -371,16 +391,16 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/init.h>
|
||||
@@ -6,7 +6,7 @@
|
||||
@@ -5,7 +6,7 @@
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/proto.h>
|
||||
|
||||
|
||||
-static int disable_nx __cpuinitdata;
|
||||
+int disable_nx __cpuinitdata;
|
||||
|
||||
|
||||
/*
|
||||
* noexec = on|off
|
||||
@@ -40,6 +42,10 @@ void __cpuinit x86_configure_nx(void)
|
||||
@@ -40,6 +41,10 @@ void __cpuinit x86_configure_nx(void)
|
||||
void __init x86_report_nx(void)
|
||||
{
|
||||
if (!cpu_has_nx) {
|
||||
|
@ -391,9 +411,11 @@
|
|||
printk(KERN_NOTICE "Notice: NX (Execute Disable) protection "
|
||||
"missing in CPU!\n");
|
||||
} else {
|
||||
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
|
||||
index d6c0418..c15b765 100644
|
||||
--- a/arch/x86/mm/tlb.c
|
||||
+++ b/arch/x86/mm/tlb.c
|
||||
@@ -6,6 +6,7 @@
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/cpu.h>
|
||||
|
||||
|
@ -401,7 +423,7 @@
|
|||
#include <asm/tlbflush.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/cache.h>
|
||||
@@ -131,6 +132,12 @@ void smp_invalidate_interrupt(struct pt_regs *regs)
|
||||
@@ -134,6 +135,12 @@ void smp_invalidate_interrupt(struct pt_regs *regs)
|
||||
union smp_flush_state *f;
|
||||
|
||||
cpu = smp_processor_id();
|
||||
|
@ -414,9 +436,11 @@
|
|||
/*
|
||||
* orig_rax contains the negated interrupt vector.
|
||||
* Use that to determine where the sender put the data.
|
||||
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
|
||||
index 1f92865..b8f4319 100644
|
||||
--- a/arch/x86/xen/enlighten.c
|
||||
+++ b/arch/x86/xen/enlighten.c
|
||||
@@ -335,6 +335,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
|
||||
@@ -354,6 +354,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
|
||||
xen_mc_issue(PARAVIRT_LAZY_CPU);
|
||||
}
|
||||
|
||||
|
@ -441,7 +465,7 @@
|
|||
static void xen_load_gdt(const struct desc_ptr *dtr)
|
||||
{
|
||||
unsigned long va = dtr->address;
|
||||
@@ -961,6 +979,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
|
||||
@@ -994,6 +1012,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = {
|
||||
|
||||
.load_tr_desc = paravirt_nop,
|
||||
.set_ldt = xen_set_ldt,
|
||||
|
@ -451,9 +475,11 @@
|
|||
.load_gdt = xen_load_gdt,
|
||||
.load_idt = xen_load_idt,
|
||||
.load_tls = xen_load_tls,
|
||||
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
|
||||
index 21ac5ee..3f26963 100644
|
||||
--- a/fs/binfmt_elf.c
|
||||
+++ b/fs/binfmt_elf.c
|
||||
@@ -717,6 +722,15 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
||||
@@ -711,6 +711,15 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
||||
if (retval)
|
||||
goto out_free_dentry;
|
||||
|
||||
|
@ -469,11 +495,13 @@
|
|||
/* OK, This is the point of no return */
|
||||
current->flags &= ~PF_FORKNOEXEC;
|
||||
current->mm->def_flags = def_flags;
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index 1c4f3e9..52011a7 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -101,6 +101,9 @@ struct bio_list;
|
||||
struct fs_struct;
|
||||
@@ -102,6 +102,9 @@ struct fs_struct;
|
||||
struct perf_event_context;
|
||||
struct blk_plug;
|
||||
|
||||
+extern int disable_nx;
|
||||
+extern int print_fatal_signals;
|
||||
|
@ -481,9 +509,11 @@
|
|||
/*
|
||||
* List of flags we want to share for kernel threads,
|
||||
* if only because they are not used by them anyway.
|
||||
--- b/mm/mmap.c
|
||||
diff --git a/mm/mmap.c b/mm/mmap.c
|
||||
index eae90af..f4de6c0 100644
|
||||
--- a/mm/mmap.c
|
||||
+++ b/mm/mmap.c
|
||||
@@ -44,6 +45,18 @@
|
||||
@@ -46,6 +46,18 @@
|
||||
#define arch_rebalance_pgtables(addr, len) (addr)
|
||||
#endif
|
||||
|
||||
|
@ -502,17 +532,16 @@
|
|||
static void unmap_region(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, struct vm_area_struct *prev,
|
||||
unsigned long start, unsigned long end);
|
||||
@@ -388,6 +401,9 @@
|
||||
@@ -424,6 +436,8 @@ __vma_link(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
struct vm_area_struct *prev, struct rb_node **rb_link,
|
||||
struct rb_node *rb_parent)
|
||||
{
|
||||
struct vm_area_struct *next;
|
||||
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_add_exec_range(mm, vma->vm_end);
|
||||
+
|
||||
vma->vm_prev = prev;
|
||||
if (prev) {
|
||||
next = prev->vm_next;
|
||||
@@ -489,6 +504,8 @@
|
||||
__vma_link_list(mm, vma, prev, rb_parent);
|
||||
__vma_link_rb(mm, vma, rb_link, rb_parent);
|
||||
}
|
||||
@@ -478,6 +492,8 @@ __vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
rb_erase(&vma->vm_rb, &mm->mm_rb);
|
||||
if (mm->mmap_cache == vma)
|
||||
mm->mmap_cache = prev;
|
||||
|
@ -521,7 +550,7 @@
|
|||
}
|
||||
|
||||
/*
|
||||
@@ -790,6 +807,8 @@
|
||||
@@ -794,6 +810,8 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
|
||||
} else /* cases 2, 5, 7 */
|
||||
err = vma_adjust(prev, prev->vm_start,
|
||||
end, prev->vm_pgoff, NULL);
|
||||
|
@ -529,8 +558,8 @@
|
|||
+ arch_add_exec_range(mm, prev->vm_end);
|
||||
if (err)
|
||||
return NULL;
|
||||
return prev;
|
||||
@@ -1966,10 +2075,14 @@
|
||||
khugepaged_enter_vma_merge(prev);
|
||||
@@ -1972,10 +1990,14 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
|
||||
if (new->vm_ops && new->vm_ops->open)
|
||||
new->vm_ops->open(new);
|
||||
|
||||
|
@ -547,14 +576,16 @@
|
|||
err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
|
||||
|
||||
/* Success. */
|
||||
@@ -2254,6 +2367,7 @@
|
||||
@@ -2263,6 +2285,7 @@ void exit_mmap(struct mm_struct *mm)
|
||||
|
||||
free_pgtables(tlb, vma, FIRST_USER_ADDRESS, 0);
|
||||
tlb_finish_mmu(tlb, 0, end);
|
||||
free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, 0);
|
||||
tlb_finish_mmu(&tlb, 0, end);
|
||||
+ arch_flush_exec_range(mm);
|
||||
|
||||
/*
|
||||
* Walk the list again, actually closing and freeing it,
|
||||
diff --git a/mm/mprotect.c b/mm/mprotect.c
|
||||
index 5a688a2..128d996 100644
|
||||
--- a/mm/mprotect.c
|
||||
+++ b/mm/mprotect.c
|
||||
@@ -25,9 +25,14 @@
|
||||
|
@ -572,7 +603,7 @@
|
|||
#ifndef pgprot_modify
|
||||
static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
|
||||
{
|
||||
@@ -138,7 +143,7 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
|
||||
@@ -148,7 +153,7 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
unsigned long oldflags = vma->vm_flags;
|
||||
long nrpages = (end - start) >> PAGE_SHIFT;
|
||||
|
@ -581,7 +612,7 @@
|
|||
pgoff_t pgoff;
|
||||
int error;
|
||||
int dirty_accountable = 0;
|
||||
@@ -203,6 +208,9 @@ success:
|
||||
@@ -213,6 +218,9 @@ success:
|
||||
dirty_accountable = 1;
|
||||
}
|
||||
|
||||
|
@ -591,25 +622,3 @@
|
|||
mmu_notifier_invalidate_range_start(mm, start, end);
|
||||
if (is_vm_hugetlb_page(vma))
|
||||
hugetlb_change_protection(vma, start, end, vma->vm_page_prot);
|
||||
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
|
||||
index 57d1868..29c0c35 100644
|
||||
--- a/arch/x86/kernel/process.c
|
||||
+++ b/arch/x86/kernel/process.c
|
||||
@@ -669,6 +669,16 @@ unsigned long arch_align_stack(unsigned long sp)
|
||||
unsigned long arch_randomize_brk(struct mm_struct *mm)
|
||||
{
|
||||
unsigned long range_end = mm->brk + 0x02000000;
|
||||
- return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
|
||||
+ unsigned long bump = 0;
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ /* in the case of NX emulation, shove the brk segment way out of the
|
||||
+ way of the exec randomization area, since it can collide with
|
||||
+ future allocations if not. */
|
||||
+ if ( (mm->get_unmapped_exec_area == arch_get_unmapped_exec_area) &&
|
||||
+ (mm->brk < 0x08000000) ) {
|
||||
+ bump = (TASK_SIZE/6);
|
||||
+ }
|
||||
+#endif
|
||||
+ return bump + (randomize_range(mm->brk, range_end, 0) ? : mm->brk);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
Subject: [PATCH] [intel_iommu] Default to igfx_off
|
||||
From 602e1f209dd983e40d989e871cd253e8187899b8 Mon Sep 17 00:00:00 2001
|
||||
From: drago01 <drago01@gmail.com>
|
||||
To: fedora-kernel-list <fedora-kernel-list@redhat.com>
|
||||
Date: Wed, 26 Oct 2011 13:37:27 -0400
|
||||
Subject: [PATCH] Default to igfx_off
|
||||
|
||||
This option seems to causes way to many issues, it is
|
||||
being investigated by Intel's chipset team for months now and
|
||||
|
@ -16,14 +17,14 @@ Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com>
|
|||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
Documentation/kernel-parameters.txt | 11 +++++------
|
||||
drivers/pci/intel-iommu.c | 9 +++++----
|
||||
drivers/iommu/intel-iommu.c | 9 +++++----
|
||||
2 files changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||||
index e7848a0..9914485 100644
|
||||
index 81c287f..ee5693b 100644
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -992,12 +992,11 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
@@ -1014,12 +1014,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||
Enable intel iommu driver.
|
||||
off
|
||||
Disable intel iommu driver.
|
||||
|
@ -40,22 +41,22 @@ index e7848a0..9914485 100644
|
|||
+ mapped as normal device.
|
||||
forcedac [x86_64]
|
||||
With this option iommu will not optimize to look
|
||||
for io virtual address below 32 bit forcing dual
|
||||
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
|
||||
index 4173125..8f36786 100644
|
||||
--- a/drivers/pci/intel-iommu.c
|
||||
+++ b/drivers/pci/intel-iommu.c
|
||||
@@ -340,7 +340,8 @@ int dmar_disabled = 0;
|
||||
int dmar_disabled = 1;
|
||||
#endif /*CONFIG_DMAR_DEFAULT_ON*/
|
||||
|
||||
for io virtual address below 32-bit forcing dual
|
||||
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
|
||||
index bdc447f..240db6b 100644
|
||||
--- a/drivers/iommu/intel-iommu.c
|
||||
+++ b/drivers/iommu/intel-iommu.c
|
||||
@@ -408,7 +408,8 @@ int dmar_disabled = 1;
|
||||
int intel_iommu_enabled = 0;
|
||||
EXPORT_SYMBOL_GPL(intel_iommu_enabled);
|
||||
|
||||
-static int dmar_map_gfx = 1;
|
||||
+/* disabled by default; causes way too many issues */
|
||||
+static int dmar_map_gfx = 0;
|
||||
static int dmar_forcedac;
|
||||
static int intel_iommu_strict;
|
||||
|
||||
@@ -361,10 +362,10 @@ static int __init intel_iommu_setup(char *str)
|
||||
static int intel_iommu_superpage = 1;
|
||||
@@ -433,10 +434,10 @@ static int __init intel_iommu_setup(char *str)
|
||||
} else if (!strncmp(str, "off", 3)) {
|
||||
dmar_disabled = 1;
|
||||
printk(KERN_INFO "Intel-IOMMU: disabled\n");
|
||||
|
@ -70,9 +71,5 @@ index 4173125..8f36786 100644
|
|||
printk(KERN_INFO
|
||||
"Intel-IOMMU: Forcing DAC for PCI devices\n");
|
||||
--
|
||||
1.6.6.1
|
||||
_______________________________________________
|
||||
kernel mailing list
|
||||
kernel@lists.fedoraproject.org
|
||||
https://admin.fedoraproject.org/mailman/listinfo/kernel
|
||||
1.7.7.4
|
||||
|
||||
|
|
|
@ -1,124 +0,0 @@
|
|||
This needs a fixed toolchain, and a userspace rebuild to work.
|
||||
For these reasons, it's had difficulty getting upstream.
|
||||
|
||||
ie, Fedora has a new enough toolchain, and has been rebuilt, so we don't need
|
||||
the ifdefs. Other distros don't/haven't, and this patch would break them
|
||||
if pushed upstream.
|
||||
|
||||
|
||||
Subject: [Fwd: Re: [PATCH] Disable execmem for sparc]
|
||||
From: Stephen Smalley <sds@tycho.nsa.gov>
|
||||
To: Dave Jones <davej@redhat.com>
|
||||
Date: Wed, 28 Apr 2010 16:04:56 -0400
|
||||
Message-Id: <1272485096.6013.326.camel@moss-pluto.epoch.ncsc.mil>
|
||||
|
||||
-------- Forwarded Message --------
|
||||
From: Stephen Smalley <sds@tycho.nsa.gov>
|
||||
To: David Miller <davem@davemloft.net>
|
||||
Cc: tcallawa@redhat.com, dennis@ausil.us, sparclinux@vger.kernel.org, dgilmore@redhat.com, jmorris@namei.org, eparis@parisplace.org
|
||||
Subject: Re: [PATCH] Disable execmem for sparc
|
||||
Date: Wed, 28 Apr 2010 15:57:57 -0400
|
||||
|
||||
On Tue, 2010-04-27 at 11:47 -0700, David Miller wrote:
|
||||
> From: "Tom \"spot\" Callaway" <tcallawa@redhat.com>
|
||||
> Date: Tue, 27 Apr 2010 14:20:21 -0400
|
||||
>
|
||||
> > [root@apollo ~]$ cat /proc/2174/maps
|
||||
> > 00010000-00014000 r-xp 00000000 fd:00 15466577
|
||||
> > /sbin/mingetty
|
||||
> > 00022000-00024000 rwxp 00002000 fd:00 15466577
|
||||
> > /sbin/mingetty
|
||||
> > 00024000-00046000 rwxp 00000000 00:00 0
|
||||
> > [heap]
|
||||
>
|
||||
> SELINUX probably barfs on the executable heap, the PLT is in the HEAP
|
||||
> just like powerpc32 and that's why VM_DATA_DEFAULT_FLAGS has to set
|
||||
> both executable and writable.
|
||||
>
|
||||
> You also can't remove the CONFIG_PPC32 ifdefs in selinux, since
|
||||
> because of the VM_DATA_DEFAULT_FLAGS setting used still in that arch,
|
||||
> the heap will always have executable permission, just like sparc does.
|
||||
> You have to support those binaries forever, whether you like it or not.
|
||||
>
|
||||
> Let's just replace the CONFIG_PPC32 ifdef in SELINUX with CONFIG_PPC32
|
||||
> || CONFIG_SPARC as in Tom's original patch and let's be done with
|
||||
> this.
|
||||
>
|
||||
> In fact I would go through all the arch/ header files and check the
|
||||
> VM_DATA_DEFAULT_FLAGS settings and add the necessary new ifdefs to the
|
||||
> SELINUX code so that other platforms don't have the pain of having to
|
||||
> go through this process too.
|
||||
|
||||
To avoid maintaining per-arch ifdefs, it seems that we could just
|
||||
directly use (VM_DATA_DEFAULT_FLAGS & VM_EXEC) as the basis for deciding
|
||||
whether to enable or disable these checks. VM_DATA_DEFAULT_FLAGS isn't
|
||||
constant on some architectures but instead depends on
|
||||
current->personality, but we want this applied uniformly. So we'll just
|
||||
use the initial task state to determine whether or not to enable these
|
||||
checks.
|
||||
|
||||
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
|
||||
|
||||
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
|
||||
index ebee467..a03fd74 100644
|
||||
--- a/security/selinux/hooks.c
|
||||
+++ b/security/selinux/hooks.c
|
||||
@@ -2999,13 +2999,15 @@ static int selinux_file_ioctl(struct file *file, unsigned int cmd,
|
||||
return file_has_perm(cred, file, av);
|
||||
}
|
||||
|
||||
+static int default_noexec;
|
||||
+
|
||||
static int file_map_prot_check(struct file *file, unsigned long prot, int shared)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
int rc = 0;
|
||||
|
||||
-#ifndef CONFIG_PPC32
|
||||
- if ((prot & PROT_EXEC) && (!file || (!shared && (prot & PROT_WRITE)))) {
|
||||
+ if (default_noexec &&
|
||||
+ (prot & PROT_EXEC) && (!file || (!shared && (prot & PROT_WRITE)))) {
|
||||
/*
|
||||
* We are making executable an anonymous mapping or a
|
||||
* private file mapping that will also be writable.
|
||||
@@ -3015,7 +3017,6 @@ static int file_map_prot_check(struct file *file, unsigned long prot, int shared
|
||||
if (rc)
|
||||
goto error;
|
||||
}
|
||||
-#endif
|
||||
|
||||
if (file) {
|
||||
/* read access is always possible with a mapping */
|
||||
@@ -3076,8 +3077,8 @@ static int selinux_file_mprotect(struct vm_area_struct *vma,
|
||||
if (selinux_checkreqprot)
|
||||
prot = reqprot;
|
||||
|
||||
-#ifndef CONFIG_PPC32
|
||||
- if ((prot & PROT_EXEC) && !(vma->vm_flags & VM_EXEC)) {
|
||||
+ if (default_noexec &&
|
||||
+ (prot & PROT_EXEC) && !(vma->vm_flags & VM_EXEC)) {
|
||||
int rc = 0;
|
||||
if (vma->vm_start >= vma->vm_mm->start_brk &&
|
||||
vma->vm_end <= vma->vm_mm->brk) {
|
||||
@@ -3099,7 +3100,6 @@ static int selinux_file_mprotect(struct vm_area_struct *vma,
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
-#endif
|
||||
|
||||
return file_map_prot_check(vma->vm_file, prot, vma->vm_flags&VM_SHARED);
|
||||
}
|
||||
@@ -5662,6 +5662,8 @@ static __init int selinux_init(void)
|
||||
/* Set the security state for the initial task. */
|
||||
cred_init_security();
|
||||
|
||||
+ default_noexec = !(VM_DATA_DEFAULT_FLAGS & VM_EXEC);
|
||||
+
|
||||
sel_inode_cache = kmem_cache_create("selinux_inode_security",
|
||||
sizeof(struct inode_security_struct),
|
||||
0, SLAB_PANIC, NULL);
|
||||
|
||||
--
|
||||
Stephen Smalley
|
||||
National Security Agency
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
|
||||
index 2209620..659c1bb 100644
|
||||
--- a/drivers/tty/serial/8250.c
|
||||
+++ b/drivers/tty/serial/8250.c
|
||||
--- a/drivers/tty/serial/8250/8250.c
|
||||
+++ b/drivers/tty/serial/8250/8250.c
|
||||
@@ -7,6 +7,9 @@
|
||||
*
|
||||
* Copyright (C) 2001 Russell King.
|
||||
|
|
|
@ -34,23 +34,24 @@ ratelimited. It isn't particularly useful, so just remove it.
|
|||
|
||||
Signed-off-by: Dave Jones <davej@redhat.com>
|
||||
|
||||
--- linux-2.6.27.noarch/net/can/af_can.c~ 2008-12-11 16:53:48.000000000 -0500
|
||||
+++ linux-2.6.27.noarch/net/can/af_can.c 2008-12-11 16:54:42.000000000 -0500
|
||||
@@ -134,13 +134,9 @@ static int can_create(struct net *net, s
|
||||
--- a/net/can/af_can.c
|
||||
+++ b/net/can/af_can.c
|
||||
@@ -157,13 +157,9 @@ static int can_create(struct net *net, struct socket *sock, int protocol,
|
||||
err = request_module("can-proto-%d", protocol);
|
||||
|
||||
/*
|
||||
- * In case of error we only print a message but don't
|
||||
- * return the error code immediately. Below we will
|
||||
- * return -EPROTONOSUPPORT
|
||||
+ * In case of error we don't return the error code immediately.
|
||||
+ * In case of error we but don't return the error code immediately.
|
||||
+ * Below we will return -EPROTONOSUPPORT
|
||||
*/
|
||||
- if (err && printk_ratelimit())
|
||||
- printk(KERN_ERR "can: request_module "
|
||||
- if (err)
|
||||
- printk_ratelimited(KERN_ERR "can: request_module "
|
||||
- "(can-proto-%d) failed.\n", protocol);
|
||||
|
||||
cp = can_get_proto(protocol);
|
||||
}
|
||||
#endif
|
||||
|
||||
This was removed in revision 1.6 of linux-2.6-silence-noise.patch
|
||||
in ye olde CVS tree. I have no idea why. Originally the pr_debug in
|
||||
|
@ -68,5 +69,5 @@ index 2a52270..bacbdd2 100644
|
|||
- pr_debug("PM: Adding info for %s:%s\n",
|
||||
- dev->bus ? dev->bus->name : "No Bus", dev_name(dev));
|
||||
mutex_lock(&dpm_list_mtx);
|
||||
if (dev->parent && dev->parent->power.in_suspend)
|
||||
if (dev->parent && dev->parent->power.is_prepared)
|
||||
dev_warn(dev, "parent %s should not be sleeping\n",
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
diff -up linux-2.6.24.sparc64/security/selinux/hooks.c.BAD linux-2.6.24.sparc64/security/selinux/hooks.c
|
||||
--- linux-2.6.24.sparc64/security/selinux/hooks.c.BAD 2008-03-21 14:28:06.000000000 -0400
|
||||
+++ linux-2.6.24.sparc64/security/selinux/hooks.c 2008-03-21 14:29:10.000000000 -0400
|
||||
@@ -3018,6 +3018,7 @@ static int file_map_prot_check(struct fi
|
||||
const struct cred *cred = current_cred();
|
||||
int rc = 0;
|
||||
|
||||
+#ifndef CONFIG_SPARC
|
||||
if ((prot & PROT_EXEC) && (!file || (!shared && (prot & PROT_WRITE)))) {
|
||||
/*
|
||||
* We are making executable an anonymous mapping or a
|
||||
@@ -3028,6 +3029,7 @@ static int file_map_prot_check(struct fi
|
||||
if (rc)
|
||||
goto error;
|
||||
}
|
||||
+#endif
|
||||
|
||||
if (file) {
|
||||
/* read access is always possible with a mapping */
|
||||
@@ -3081,6 +3081,7 @@ static int selinux_file_mprotect(struct
|
||||
if (selinux_checkreqprot)
|
||||
prot = reqprot;
|
||||
|
||||
+#ifndef CONFIG_SPARC
|
||||
if ((prot & PROT_EXEC) && !(vma->vm_flags & VM_EXEC)) {
|
||||
rc = 0;
|
||||
if (vma->vm_start >= vma->vm_mm->start_brk &&
|
||||
@@ -3103,6 +3103,7 @@ static int selinux_file_mprotect(struct
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
+#endif
|
||||
|
||||
return file_map_prot_check(vma->vm_file, prot, vma->vm_flags&VM_SHARED);
|
||||
}
|
|
@ -1,129 +0,0 @@
|
|||
From: Oleg Nesterov <oleg@redhat.com>
|
||||
|
||||
[PATCH] signals: check ->group_stop_count after tracehook_get_signal()
|
||||
|
||||
Move the call to do_signal_stop() down, after tracehook call.
|
||||
This makes ->group_stop_count condition visible to tracers before
|
||||
do_signal_stop() will participate in this group-stop.
|
||||
|
||||
Currently the patch has no effect, tracehook_get_signal() always
|
||||
returns 0.
|
||||
|
||||
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
|
||||
Signed-off-by: Roland McGrath <roland@redhat.com>
|
||||
---
|
||||
include/linux/ptrace.h | 1 +
|
||||
include/linux/sched.h | 1 +
|
||||
include/linux/tracehook.h | 10 +++++-----
|
||||
kernel/ptrace.c | 2 +-
|
||||
kernel/signal.c | 4 ++--
|
||||
5 files changed, 10 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
|
||||
index 092a04f..619cdf0 100644
|
||||
--- a/include/linux/ptrace.h
|
||||
+++ b/include/linux/ptrace.h
|
||||
@@ -106,6 +106,7 @@ extern int ptrace_traceme(void);
|
||||
extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len);
|
||||
extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len);
|
||||
extern int ptrace_attach(struct task_struct *tsk);
|
||||
+extern bool __ptrace_detach(struct task_struct *tracer, struct task_struct *tracee);
|
||||
extern int ptrace_detach(struct task_struct *, unsigned int);
|
||||
extern void ptrace_disable(struct task_struct *);
|
||||
extern int ptrace_check_attach(struct task_struct *task, int kill);
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index 2238745..09f26df 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -2061,6 +2061,7 @@ extern int kill_pgrp(struct pid *pid, in
|
||||
extern int kill_pid(struct pid *pid, int sig, int priv);
|
||||
extern int kill_proc_info(int, struct siginfo *, pid_t);
|
||||
extern int do_notify_parent(struct task_struct *, int);
|
||||
+extern void do_notify_parent_cldstop(struct task_struct *, int);
|
||||
extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent);
|
||||
extern void force_sig(int, struct task_struct *);
|
||||
extern int send_sig(int, struct task_struct *, int);
|
||||
diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
|
||||
index 3a2e66d..98917e9 100644
|
||||
--- a/include/linux/tracehook.h
|
||||
+++ b/include/linux/tracehook.h
|
||||
@@ -134,7 +134,7 @@ static inline __must_check int tracehook
|
||||
*/
|
||||
static inline void tracehook_report_syscall_exit(struct pt_regs *regs, int step)
|
||||
{
|
||||
- if (step) {
|
||||
+ if (step && (task_ptrace(current) & PT_PTRACED)) {
|
||||
siginfo_t info;
|
||||
user_single_step_siginfo(current, regs, &info);
|
||||
force_sig_info(SIGTRAP, &info, current);
|
||||
@@ -156,7 +156,7 @@ static inline int tracehook_unsafe_exec(
|
||||
{
|
||||
int unsafe = 0;
|
||||
int ptrace = task_ptrace(task);
|
||||
- if (ptrace & PT_PTRACED) {
|
||||
+ if (ptrace) {
|
||||
if (ptrace & PT_PTRACE_CAP)
|
||||
unsafe |= LSM_UNSAFE_PTRACE_CAP;
|
||||
else
|
||||
@@ -178,7 +178,7 @@ static inline int tracehook_unsafe_exec(
|
||||
*/
|
||||
static inline struct task_struct *tracehook_tracer_task(struct task_struct *tsk)
|
||||
{
|
||||
- if (task_ptrace(tsk) & PT_PTRACED)
|
||||
+ if (task_ptrace(tsk))
|
||||
return rcu_dereference(tsk->parent);
|
||||
return NULL;
|
||||
}
|
||||
@@ -386,7 +386,7 @@ static inline void tracehook_signal_hand
|
||||
const struct k_sigaction *ka,
|
||||
struct pt_regs *regs, int stepping)
|
||||
{
|
||||
- if (stepping)
|
||||
+ if (stepping && (task_ptrace(current) & PT_PTRACED))
|
||||
ptrace_notify(SIGTRAP);
|
||||
}
|
||||
|
||||
@@ -492,7 +492,7 @@ static inline int tracehook_get_signal(s
|
||||
*/
|
||||
static inline int tracehook_notify_jctl(int notify, int why)
|
||||
{
|
||||
- return notify ?: (current->ptrace & PT_PTRACED) ? why : 0;
|
||||
+ return notify ?: task_ptrace(current) ? why : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
|
||||
index 99bbaa3..84d9f8f 100644
|
||||
--- a/kernel/ptrace.c
|
||||
+++ b/kernel/ptrace.c
|
||||
@@ -270,7 +270,7 @@ static int ignoring_children(struct sigh
|
||||
* reap it now, in that case we must also wake up sub-threads sleeping in
|
||||
* do_wait().
|
||||
*/
|
||||
-static bool __ptrace_detach(struct task_struct *tracer, struct task_struct *p)
|
||||
+bool __ptrace_detach(struct task_struct *tracer, struct task_struct *p)
|
||||
{
|
||||
__ptrace_unlink(p);
|
||||
|
||||
diff --git a/kernel/signal.c b/kernel/signal.c
|
||||
index 4e3cff1..b74324d 100644
|
||||
--- a/kernel/signal.c
|
||||
+++ b/kernel/signal.c
|
||||
@@ -1522,7 +1522,7 @@ int do_notify_parent(struct task_struct
|
||||
return ret;
|
||||
}
|
||||
|
||||
-static void do_notify_parent_cldstop(struct task_struct *tsk, int why)
|
||||
+void do_notify_parent_cldstop(struct task_struct *tsk, int why)
|
||||
{
|
||||
struct siginfo info;
|
||||
unsigned long flags;
|
||||
@@ -1794,7 +1794,7 @@ static int do_signal_stop(int signr)
|
||||
static int ptrace_signal(int signr, siginfo_t *info,
|
||||
struct pt_regs *regs, void *cookie)
|
||||
{
|
||||
- if (!task_ptrace(current))
|
||||
+ if (!(task_ptrace(current) & PT_PTRACED))
|
||||
return signr;
|
||||
|
||||
ptrace_signal_deliver(regs, cookie);
|
File diff suppressed because it is too large
Load Diff
|
@ -1,47 +0,0 @@
|
|||
Revert:
|
||||
commit e3e89cc535223433a619d0969db3fa05cdd946b8
|
||||
("Mark ptrace_{traceme,attach,detach} static")
|
||||
|
||||
--- b/include/linux/ptrace.h
|
||||
+++ a/include/linux/ptrace.h
|
||||
@@ -102,8 +102,11 @@
|
||||
|
||||
extern long arch_ptrace(struct task_struct *child, long request,
|
||||
unsigned long addr, unsigned long data);
|
||||
+extern int ptrace_traceme(void);
|
||||
extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len);
|
||||
extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len);
|
||||
+extern int ptrace_attach(struct task_struct *tsk);
|
||||
+extern int ptrace_detach(struct task_struct *, unsigned int);
|
||||
extern void ptrace_disable(struct task_struct *);
|
||||
extern int ptrace_check_attach(struct task_struct *task, int kill);
|
||||
extern int ptrace_request(struct task_struct *child, long request,
|
||||
--- b/kernel/ptrace.c
|
||||
+++ a/kernel/ptrace.c
|
||||
@@ -163,7 +163,7 @@
|
||||
return !err;
|
||||
}
|
||||
|
||||
+int ptrace_attach(struct task_struct *task)
|
||||
-static int ptrace_attach(struct task_struct *task)
|
||||
{
|
||||
int retval;
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
* Performs checks and sets PT_PTRACED.
|
||||
* Should be used by all ptrace implementations for PTRACE_TRACEME.
|
||||
*/
|
||||
+int ptrace_traceme(void)
|
||||
-static int ptrace_traceme(void)
|
||||
{
|
||||
int ret = -EPERM;
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
+int ptrace_detach(struct task_struct *child, unsigned int data)
|
||||
-static int ptrace_detach(struct task_struct *child, unsigned int data)
|
||||
{
|
||||
bool dead = false;
|
||||
|
|
@ -1,350 +0,0 @@
|
|||
From b71e18093e2e7f240797875c50c49552722f8825 Mon Sep 17 00:00:00 2001
|
||||
From: Jarod Wilson <jarod@redhat.com>
|
||||
Date: Mon, 15 Feb 2010 17:13:25 -0500
|
||||
Subject: [PATCH 1/2] dvb: add lgdt3304 support to lgdt3305 driver
|
||||
|
||||
There's a currently-unused lgdt3304 demod driver, which leaves a lot to
|
||||
be desired as far as functionality. The 3304 is unsurprisingly quite
|
||||
similar to the 3305, and empirical testing yeilds far better results
|
||||
and more complete functionality by merging 3304 support into the 3305
|
||||
driver. (For example, the current lgdt3304 driver lacks support for
|
||||
signal strength, snr, ucblocks, etc., which we get w/the lgdt3305).
|
||||
|
||||
For the moment, not dropping the lgdt3304 driver, and its still up to
|
||||
a given device's config setup to choose which demod driver to use, but
|
||||
I'd suggest dropping the 3304 driver entirely.
|
||||
|
||||
As a follow-up to this patch, I've got another patch that adds support
|
||||
for the KWorld PlusTV 340U (ATSC) em2870-based tuner stick, driving
|
||||
its lgdt3304 demod via this lgdt3305 driver, which is what I used to
|
||||
successfully test this patch with both VSB_8 and QAM_256 signals.
|
||||
|
||||
A few pieces are still a touch crude, but I think its a solid start,
|
||||
as well as much cleaner and more feature-complete than the existing
|
||||
lgdt3304 driver.
|
||||
|
||||
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
||||
---
|
||||
drivers/media/dvb/frontends/lgdt3305.c | 206 ++++++++++++++++++++++++++++++--
|
||||
drivers/media/dvb/frontends/lgdt3305.h | 6 +
|
||||
2 files changed, 203 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/dvb/frontends/lgdt3305.c b/drivers/media/dvb/frontends/lgdt3305.c
|
||||
index fde8c59..40695e6 100644
|
||||
--- a/drivers/media/dvb/frontends/lgdt3305.c
|
||||
+++ b/drivers/media/dvb/frontends/lgdt3305.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Support for LGDT3305 - VSB/QAM
|
||||
+ * Support for LG Electronics LGDT3304 and LGDT3305 - VSB/QAM
|
||||
*
|
||||
* Copyright (C) 2008, 2009 Michael Krufky <mkrufky@linuxtv.org>
|
||||
*
|
||||
@@ -357,7 +357,10 @@ static int lgdt3305_rfagc_loop(struct lgdt3305_state *state,
|
||||
case QAM_256:
|
||||
agcdelay = 0x046b;
|
||||
rfbw = 0x8889;
|
||||
- ifbw = 0x8888;
|
||||
+ if (state->cfg->demod_chip == LGDT3305)
|
||||
+ ifbw = 0x8888;
|
||||
+ else
|
||||
+ ifbw = 0x6666;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@@ -409,8 +412,18 @@ static int lgdt3305_agc_setup(struct lgdt3305_state *state,
|
||||
lg_dbg("lockdten = %d, acqen = %d\n", lockdten, acqen);
|
||||
|
||||
/* control agc function */
|
||||
- lgdt3305_write_reg(state, LGDT3305_AGC_CTRL_4, 0xe1 | lockdten << 1);
|
||||
- lgdt3305_set_reg_bit(state, LGDT3305_AGC_CTRL_1, 2, acqen);
|
||||
+ switch (state->cfg->demod_chip) {
|
||||
+ case LGDT3304:
|
||||
+ lgdt3305_write_reg(state, 0x0314, 0xe1 | lockdten << 1);
|
||||
+ lgdt3305_set_reg_bit(state, 0x030e, 2, acqen);
|
||||
+ break;
|
||||
+ case LGDT3305:
|
||||
+ lgdt3305_write_reg(state, LGDT3305_AGC_CTRL_4, 0xe1 | lockdten << 1);
|
||||
+ lgdt3305_set_reg_bit(state, LGDT3305_AGC_CTRL_1, 2, acqen);
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
|
||||
return lgdt3305_rfagc_loop(state, param);
|
||||
}
|
||||
@@ -543,6 +556,11 @@ static int lgdt3305_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
enable ? 0 : 1);
|
||||
}
|
||||
|
||||
+static int lgdt3304_sleep(struct dvb_frontend *fe)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int lgdt3305_sleep(struct dvb_frontend *fe)
|
||||
{
|
||||
struct lgdt3305_state *state = fe->demodulator_priv;
|
||||
@@ -571,6 +589,55 @@ static int lgdt3305_sleep(struct dvb_frontend *fe)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int lgdt3304_init(struct dvb_frontend *fe)
|
||||
+{
|
||||
+ struct lgdt3305_state *state = fe->demodulator_priv;
|
||||
+ int ret;
|
||||
+
|
||||
+ static struct lgdt3305_reg lgdt3304_init_data[] = {
|
||||
+ { .reg = LGDT3305_GEN_CTRL_1, .val = 0x03, },
|
||||
+ { .reg = 0x000d, .val = 0x02, },
|
||||
+ { .reg = 0x000e, .val = 0x02, },
|
||||
+ { .reg = LGDT3305_DGTL_AGC_REF_1, .val = 0x32, },
|
||||
+ { .reg = LGDT3305_DGTL_AGC_REF_2, .val = 0xc4, },
|
||||
+ { .reg = LGDT3305_CR_CTR_FREQ_1, .val = 0x00, },
|
||||
+ { .reg = LGDT3305_CR_CTR_FREQ_2, .val = 0x00, },
|
||||
+ { .reg = LGDT3305_CR_CTR_FREQ_3, .val = 0x00, },
|
||||
+ { .reg = LGDT3305_CR_CTR_FREQ_4, .val = 0x00, },
|
||||
+ { .reg = LGDT3305_CR_CTRL_7, .val = 0xf9, },
|
||||
+ { .reg = 0x0112, .val = 0x17, },
|
||||
+ { .reg = 0x0113, .val = 0x15, },
|
||||
+ { .reg = 0x0114, .val = 0x18, },
|
||||
+ { .reg = 0x0115, .val = 0xff, },
|
||||
+ { .reg = 0x0116, .val = 0x3c, },
|
||||
+ { .reg = 0x0214, .val = 0x67, },
|
||||
+ { .reg = 0x0424, .val = 0x8d, },
|
||||
+ { .reg = 0x0427, .val = 0x12, },
|
||||
+ { .reg = 0x0428, .val = 0x4f, },
|
||||
+ { .reg = LGDT3305_IFBW_1, .val = 0x80, },
|
||||
+ { .reg = LGDT3305_IFBW_2, .val = 0x00, },
|
||||
+ { .reg = 0x030a, .val = 0x08, },
|
||||
+ { .reg = 0x030b, .val = 0x9b, },
|
||||
+ { .reg = 0x030d, .val = 0x00, },
|
||||
+ { .reg = 0x030e, .val = 0x1c, },
|
||||
+ { .reg = 0x0314, .val = 0xe1, },
|
||||
+ { .reg = 0x000d, .val = 0x82, },
|
||||
+ { .reg = LGDT3305_TP_CTRL_1, .val = 0x5b, },
|
||||
+ { .reg = LGDT3305_TP_CTRL_1, .val = 0x5b, },
|
||||
+ };
|
||||
+
|
||||
+ lg_dbg("\n");
|
||||
+
|
||||
+ ret = lgdt3305_write_regs(state, lgdt3304_init_data,
|
||||
+ ARRAY_SIZE(lgdt3304_init_data));
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ ret = lgdt3305_soft_reset(state);
|
||||
+fail:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static int lgdt3305_init(struct dvb_frontend *fe)
|
||||
{
|
||||
struct lgdt3305_state *state = fe->demodulator_priv;
|
||||
@@ -639,6 +706,88 @@ fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static int lgdt3304_set_parameters(struct dvb_frontend *fe,
|
||||
+ struct dvb_frontend_parameters *param)
|
||||
+{
|
||||
+ struct lgdt3305_state *state = fe->demodulator_priv;
|
||||
+ int ret;
|
||||
+
|
||||
+ lg_dbg("(%d, %d)\n", param->frequency, param->u.vsb.modulation);
|
||||
+
|
||||
+ if (fe->ops.tuner_ops.set_params) {
|
||||
+ ret = fe->ops.tuner_ops.set_params(fe, param);
|
||||
+ if (fe->ops.i2c_gate_ctrl)
|
||||
+ fe->ops.i2c_gate_ctrl(fe, 0);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+ state->current_frequency = param->frequency;
|
||||
+ }
|
||||
+
|
||||
+ ret = lgdt3305_set_modulation(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ ret = lgdt3305_passband_digital_agc(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ ret = lgdt3305_agc_setup(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ /* reg 0x030d is 3304-only... seen in vsb and qam usbsnoops... */
|
||||
+ switch (param->u.vsb.modulation) {
|
||||
+ case VSB_8:
|
||||
+ lgdt3305_write_reg(state, 0x030d, 0x00);
|
||||
+#if 1
|
||||
+ lgdt3305_write_reg(state, LGDT3305_CR_CTR_FREQ_1, 0x4f);
|
||||
+ lgdt3305_write_reg(state, LGDT3305_CR_CTR_FREQ_2, 0x0c);
|
||||
+ lgdt3305_write_reg(state, LGDT3305_CR_CTR_FREQ_3, 0xac);
|
||||
+ lgdt3305_write_reg(state, LGDT3305_CR_CTR_FREQ_4, 0xba);
|
||||
+#endif
|
||||
+ break;
|
||||
+ case QAM_64:
|
||||
+ case QAM_256:
|
||||
+ lgdt3305_write_reg(state, 0x030d, 0x14);
|
||||
+#if 1
|
||||
+ ret = lgdt3305_set_if(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+#endif
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+#if 0
|
||||
+ /* the set_if vsb formula doesn't work for the 3304, we end up sending
|
||||
+ * 0x40851e07 instead of 0x4f0cacba (which works back to 94050, rather
|
||||
+ * than 3250, in the case of the kworld 340u) */
|
||||
+ ret = lgdt3305_set_if(state, param);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+#endif
|
||||
+
|
||||
+ ret = lgdt3305_spectral_inversion(state, param,
|
||||
+ state->cfg->spectral_inversion
|
||||
+ ? 1 : 0);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ state->current_modulation = param->u.vsb.modulation;
|
||||
+
|
||||
+ ret = lgdt3305_mpeg_mode(state, state->cfg->mpeg_mode);
|
||||
+ if (lg_fail(ret))
|
||||
+ goto fail;
|
||||
+
|
||||
+ /* lgdt3305_mpeg_mode_polarity calls lgdt3305_soft_reset */
|
||||
+ ret = lgdt3305_mpeg_mode_polarity(state,
|
||||
+ state->cfg->tpclk_edge,
|
||||
+ state->cfg->tpvalid_polarity);
|
||||
+fail:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static int lgdt3305_set_parameters(struct dvb_frontend *fe,
|
||||
struct dvb_frontend_parameters *param)
|
||||
{
|
||||
@@ -847,6 +996,10 @@ static int lgdt3305_read_status(struct dvb_frontend *fe, fe_status_t *status)
|
||||
switch (state->current_modulation) {
|
||||
case QAM_256:
|
||||
case QAM_64:
|
||||
+#if 0 /* needed w/3304 to set FE_HAS_SIGNAL */
|
||||
+ if (cr_lock)
|
||||
+ *status |= FE_HAS_SIGNAL;
|
||||
+#endif
|
||||
ret = lgdt3305_read_fec_lock_status(state, &fec_lock);
|
||||
if (lg_fail(ret))
|
||||
goto fail;
|
||||
@@ -992,6 +1145,7 @@ static void lgdt3305_release(struct dvb_frontend *fe)
|
||||
kfree(state);
|
||||
}
|
||||
|
||||
+static struct dvb_frontend_ops lgdt3304_ops;
|
||||
static struct dvb_frontend_ops lgdt3305_ops;
|
||||
|
||||
struct dvb_frontend *lgdt3305_attach(const struct lgdt3305_config *config,
|
||||
@@ -1012,11 +1166,21 @@ struct dvb_frontend *lgdt3305_attach(const struct lgdt3305_config *config,
|
||||
state->cfg = config;
|
||||
state->i2c_adap = i2c_adap;
|
||||
|
||||
- memcpy(&state->frontend.ops, &lgdt3305_ops,
|
||||
- sizeof(struct dvb_frontend_ops));
|
||||
+ switch (config->demod_chip) {
|
||||
+ case LGDT3304:
|
||||
+ memcpy(&state->frontend.ops, &lgdt3304_ops,
|
||||
+ sizeof(struct dvb_frontend_ops));
|
||||
+ break;
|
||||
+ case LGDT3305:
|
||||
+ memcpy(&state->frontend.ops, &lgdt3305_ops,
|
||||
+ sizeof(struct dvb_frontend_ops));
|
||||
+ break;
|
||||
+ default:
|
||||
+ goto fail;
|
||||
+ }
|
||||
state->frontend.demodulator_priv = state;
|
||||
|
||||
- /* verify that we're talking to a lg dt3305 */
|
||||
+ /* verify that we're talking to a lg dt3304/5 */
|
||||
ret = lgdt3305_read_reg(state, LGDT3305_GEN_CTRL_2, &val);
|
||||
if ((lg_fail(ret)) | (val == 0))
|
||||
goto fail;
|
||||
@@ -1035,12 +1199,36 @@ struct dvb_frontend *lgdt3305_attach(const struct lgdt3305_config *config,
|
||||
|
||||
return &state->frontend;
|
||||
fail:
|
||||
- lg_warn("unable to detect LGDT3305 hardware\n");
|
||||
+ lg_warn("unable to detect %s hardware\n",
|
||||
+ config->demod_chip ? "LGDT3304" : "LGDT3305");
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(lgdt3305_attach);
|
||||
|
||||
+static struct dvb_frontend_ops lgdt3304_ops = {
|
||||
+ .info = {
|
||||
+ .name = "LG Electronics LGDT3304 VSB/QAM Frontend",
|
||||
+ .type = FE_ATSC,
|
||||
+ .frequency_min = 54000000,
|
||||
+ .frequency_max = 858000000,
|
||||
+ .frequency_stepsize = 62500,
|
||||
+ .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
|
||||
+ },
|
||||
+ .i2c_gate_ctrl = lgdt3305_i2c_gate_ctrl,
|
||||
+ .init = lgdt3304_init,
|
||||
+ .sleep = lgdt3304_sleep,
|
||||
+ .set_frontend = lgdt3304_set_parameters,
|
||||
+ .get_frontend = lgdt3305_get_frontend,
|
||||
+ .get_tune_settings = lgdt3305_get_tune_settings,
|
||||
+ .read_status = lgdt3305_read_status,
|
||||
+ .read_ber = lgdt3305_read_ber,
|
||||
+ .read_signal_strength = lgdt3305_read_signal_strength,
|
||||
+ .read_snr = lgdt3305_read_snr,
|
||||
+ .read_ucblocks = lgdt3305_read_ucblocks,
|
||||
+ .release = lgdt3305_release,
|
||||
+};
|
||||
+
|
||||
static struct dvb_frontend_ops lgdt3305_ops = {
|
||||
.info = {
|
||||
.name = "LG Electronics LGDT3305 VSB/QAM Frontend",
|
||||
@@ -1064,7 +1252,7 @@ static struct dvb_frontend_ops lgdt3305_ops = {
|
||||
.release = lgdt3305_release,
|
||||
};
|
||||
|
||||
-MODULE_DESCRIPTION("LG Electronics LGDT3305 ATSC/QAM-B Demodulator Driver");
|
||||
+MODULE_DESCRIPTION("LG Electronics LGDT3304/5 ATSC/QAM-B Demodulator Driver");
|
||||
MODULE_AUTHOR("Michael Krufky <mkrufky@linuxtv.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_VERSION("0.1");
|
||||
diff --git a/drivers/media/dvb/frontends/lgdt3305.h b/drivers/media/dvb/frontends/lgdt3305.h
|
||||
index 9cb11c9..a7f30c2 100644
|
||||
--- a/drivers/media/dvb/frontends/lgdt3305.h
|
||||
+++ b/drivers/media/dvb/frontends/lgdt3305.h
|
||||
@@ -41,6 +41,11 @@ enum lgdt3305_tp_valid_polarity {
|
||||
LGDT3305_TP_VALID_HIGH = 1,
|
||||
};
|
||||
|
||||
+enum lgdt_demod_chip_type {
|
||||
+ LGDT3305 = 0,
|
||||
+ LGDT3304 = 1,
|
||||
+};
|
||||
+
|
||||
struct lgdt3305_config {
|
||||
u8 i2c_addr;
|
||||
|
||||
@@ -65,6 +70,7 @@ struct lgdt3305_config {
|
||||
enum lgdt3305_mpeg_mode mpeg_mode;
|
||||
enum lgdt3305_tp_clock_edge tpclk_edge;
|
||||
enum lgdt3305_tp_valid_polarity tpvalid_polarity;
|
||||
+ enum lgdt_demod_chip_type demod_chip;
|
||||
};
|
||||
|
||||
#if defined(CONFIG_DVB_LGDT3305) || (defined(CONFIG_DVB_LGDT3305_MODULE) && \
|
||||
--
|
||||
1.6.6
|
||||
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue