diff options
author | eisnerd <eisnerd@localhost> | 2008-11-30 17:56:32 +0000 |
---|---|---|
committer | eisnerd <eisnerd@localhost> | 2008-11-30 17:56:32 +0000 |
commit | b4d8ccb36698fb176912d35e436325448dcac03c (patch) | |
tree | 513636f8fddae91da0d0feaab7dbdb6c08c98605 /sys-kernel | |
parent | Version Bump; add x11-libs/libXmu to RDEPEND thanks to Mike Limansky, wrt bug... (diff) | |
download | jokey-b4d8ccb36698fb176912d35e436325448dcac03c.tar.gz jokey-b4d8ccb36698fb176912d35e436325448dcac03c.tar.bz2 jokey-b4d8ccb36698fb176912d35e436325448dcac03c.zip |
sys-kernel/thinkpad-sources: finally, bump to 2.6.27
svn path=/trunk/; revision=550
Diffstat (limited to 'sys-kernel')
9 files changed, 4581 insertions, 1 deletions
diff --git a/sys-kernel/thinkpad-sources/ChangeLog b/sys-kernel/thinkpad-sources/ChangeLog index 38b5a7d..ea1487c 100644 --- a/sys-kernel/thinkpad-sources/ChangeLog +++ b/sys-kernel/thinkpad-sources/ChangeLog @@ -1,5 +1,15 @@ + 30 Nov 2008; Florian Manschwetus <florianmanschwetus@gmx.de> + +files/2.6.27/linux-phc-0.3.2-kernel-vanilla-2.6.26.patch, + +files/2.6.27/colored-printk-2.6.26.patch, + +thinkpad-sources-2.6.27.ebuild, +files/2.6.27, + +files/2.6.27/power-off-unused-ports.patch, + +files/configs/config-for-core-2.6.27, + +files/2.6.27/01-disk-protect-for-2.6.27.2.patch, + +files/2.6.27/02-ipw2200-inject-for-2.6.27.patch: + finally, bump to 2.6.27 + 20 Aug 2008; Florian Manschwetus <florianmanschwetus@gmx.de> -files/2.6.25-r1/04-linux-phc-0.3.1-for-2.6.25.patch, -files/2.6.25-r1/pci-e_aspm_v3.5.patch, diff --git a/sys-kernel/thinkpad-sources/Manifest b/sys-kernel/thinkpad-sources/Manifest index 6a6b8cc..7ac9f99 100644 --- a/sys-kernel/thinkpad-sources/Manifest +++ b/sys-kernel/thinkpad-sources/Manifest @@ -3,16 +3,28 @@ AUX 2.6.26/02-ipw2200-inject-for-2.6.26.patch 2182 RMD160 159f8af4213996c36f22fb AUX 2.6.26/colored-printk-2.6.26.patch 11265 RMD160 1e520168b8813754906513317f5c683dbec2b31b SHA1 d321509ccc286b29b8c0fac9ae18205705fea332 SHA256 e8afce0c43cd534a6f707dc9f8769d0ba03322efccd55e3dc3edc3375e44c4ba AUX 2.6.26/linux-phc-0.3.2-kernel-vanilla-2.6.26.patch 16865 RMD160 f5795436830ec3302c2a32c14a17ab52e089c8e2 SHA1 d24375cb01431b785228fae77682e9ee09286bf4 SHA256 e1fbb0909cee3cfb7623adae6ddd1384c95c977d111db8b5afc466aeab447f67 AUX 2.6.26/power-off-unused-ports.patch 4600 RMD160 9131091dee1ebe30259a0bce728206f0c36bd2a3 SHA1 4e15bb31848a503a3986b34eb22c6eb3b2efde2d SHA256 2621c0affed9e0ec966192ccfcc9b68644e68985434b0512202c849c44fe23c0 +AUX 2.6.27/01-disk-protect-for-2.6.27.2.patch 32538 RMD160 fbe408c71c006dc5f344f20ef1cfa886191ea91c SHA1 e927b4ecb17b74a0a6b0809d3d8facac251f9ee1 SHA256 bc4690bc2fb40fb82765a68d47288134e0fc62770db8b058b4c8eb9ca7d63be6 +AUX 2.6.27/02-ipw2200-inject-for-2.6.27.patch 2376 RMD160 4856f02093faa941a51dafe54d34c27b6c4a21db SHA1 328c8947089c84fb3ce78fe20400ad03f51ac381 SHA256 01b4f715de58660ab779abc0e28398d348fe31344c300bdd9eaeca73c6090cb0 +AUX 2.6.27/colored-printk-2.6.26.patch 11265 RMD160 1e520168b8813754906513317f5c683dbec2b31b SHA1 d321509ccc286b29b8c0fac9ae18205705fea332 SHA256 e8afce0c43cd534a6f707dc9f8769d0ba03322efccd55e3dc3edc3375e44c4ba +AUX 2.6.27/linux-phc-0.3.2-kernel-vanilla-2.6.26.patch 16865 RMD160 f5795436830ec3302c2a32c14a17ab52e089c8e2 SHA1 d24375cb01431b785228fae77682e9ee09286bf4 SHA256 e1fbb0909cee3cfb7623adae6ddd1384c95c977d111db8b5afc466aeab447f67 +AUX 2.6.27/power-off-unused-ports.patch 4722 RMD160 2c5928c6a9d24e965d3f84bb2f1b157347d90d7c SHA1 77e39d8d99ac1045e3fb2db82e1c0ab2049c89d9 SHA256 9134a0e89a583d51f84bab2df3fe015fadb92a6d44655b7e3f1d3da1d21f0067 AUX configs/config-for-core-2.6.26 57774 RMD160 7b296c84f812f069236a8824c55c6a3bfb26da76 SHA1 ea61ebfcc1c66759f806d8a26384c8e026915ca9 SHA256 0b7425479eea885be675b68d733b385af5f20c26e6075394204ecf0a1e3ba95c AUX configs/config-for-core-2.6.26-r1 57803 RMD160 4c0af7d21a99b1733d0f4b1c2bdaac017056831c SHA1 6dca7e3718089e67118a9a98a043e0b192cca279 SHA256 0ce520ba91158b6ab9e595a0736759242806ff87afb67a4854e3e391370848e5 +AUX configs/config-for-core-2.6.27 59851 RMD160 589cd1e6a4ce474fb58eec78c1d4f49f5471afab SHA1 9360d34fba18f3c88ded9e661a780554501df9eb SHA256 a19d6c2d2a612653a2df5cc093e9d0474be5dec6ef52d19692245fcf08f616b3 +DIST current-tuxonice-2.6.27.patch.bz2 114874 RMD160 bfa457d065a4344cfe1034308049ad30d24ab7e2 SHA1 967b2a090bcb20d1cefe3d4e8699b914285a93bd SHA256 dc8e75b6104f35688ab722b7d305e7a21d7f2fcfacac85f19255d4f3b242392c DIST genpatches-2.6.26-1.base.tar.bz2 2747 RMD160 0bba41529ab51e9bf72bcca24fc5bdddfa8316be SHA1 36cb7c6300ed93d8db6e110ab5d823449c44cf0e SHA256 43fc0f34912623fc9102dabe627228cd993533d6a78162ee9817c0d994cfbf77 DIST genpatches-2.6.26-1.extras.tar.bz2 41329 RMD160 247f08545525ebc0764d96be31f73cb3bc5366aa SHA1 4e46d6fc86530a535e2869dc255851a49fdb35e0 SHA256 4997e9dc128498286d10d54088f45be0ebdd98ec667723604d8760745b766716 DIST genpatches-2.6.26-2.base.tar.bz2 47157 RMD160 953e262b25bab8bb32d530fee0a2eb97ba58fcce SHA1 d12da61c4a079a423d22526e7630ac35772e19a0 SHA256 ff9404e89067beeb6bae8a8eb1c1d362abb5d11c5b0a92abde67e30b856ea5ba DIST genpatches-2.6.26-2.extras.tar.bz2 41342 RMD160 1273b577012f1047f2dfff60afc2dfda16756c1e SHA1 cdf5503702804c09251b368ddf4118388020fda1 SHA256 e69683f14fc7155ba2b9049ad08dc59b91d3920caefab82f24d8f843fae350f0 +DIST genpatches-2.6.27-6.base.tar.bz2 81909 RMD160 01613128158ea5e59b155dcce7b05dd44685c4f0 SHA1 6d37177472f80dd85371a183570e748ea3aaba1c SHA256 86c43daf525ad7fb7ddbe71806a2132dd57b294e6efa5ab3c30e0fd6661ededb +DIST genpatches-2.6.27-6.extras.tar.bz2 41456 RMD160 bd6e5fc57d4895c23401f22892f630097174aead SHA1 35a86799ee1d4f55e347b2f01f64e4abbda8a7ae SHA256 384ecb94815261a960dd57b942206d73e2a7ad0e4d883400860a47f01573bd41 DIST linux-2.6.26.tar.bz2 49441874 RMD160 57c37e81afa48e7c05e1a933d390a12ac2921255 SHA1 3f44384bf84f27add3b6c43ec68f974d7f7e9c67 SHA256 666488e2511393fdb901eaf1e67275bcc38ab37c930e8a9adb290a95c1721a2a +DIST linux-2.6.27.tar.bz2 50355835 RMD160 5be4595ad824a4af67c1ec0c692838ad0c31f0c0 SHA1 8425ec3be2652f9d511911ff4fcf99039d4574be SHA256 0e99bf9e83f4d1ae0c656741a84dfddfa9c4d2469cf35475f5939d02dc3e4393 DIST thinkpad-acpi-0.21-20080703_v2.6.26-rc8.patch.gz 20013 RMD160 6bec127ca35df332f8b9fb0674bbd6ff9bf7177f SHA1 d847382e433896280ac4ae077f37060c30c73d60 SHA256 8cce502cfbebe6521372763410d7a31740176c747076ad0ed4b01aa71ab347c7 +DIST thinkpad-acpi-0.21-20081111_v2.6.27.5.patch.gz 19706 RMD160 fcc9678ae6c3d4c5493d2b1380ba408272711689 SHA1 1ad13938e7f3bd5e0b28664b3780b2b964079ea6 SHA256 d92c26efe3ecd578eab3a2547dfe359829dca7cf94bf196e563b56638a46527e DIST tuxonice-3.0-rc7a-for-2.6.26.patch.bz2 114165 RMD160 d20a16d73b26ca9ff685a7c0d25b903faf3b8b69 SHA1 6bbd5233740f4d5b4ceb2af0294286a4cd8a9fa7 SHA256 1969b906db3bf478d684e89f5395df69fa9142db6bae56a7046b42adae5c381b EBUILD thinkpad-sources-2.6.26-r1.ebuild 3428 RMD160 e44f3d850b0bc924eabd0cc62e72991528831159 SHA1 aa9e788124fbf03cfa8daeca2c186820acbc101c SHA256 3e5bddd4effbce7221e86be5d7bd971e9413ff849a668ea5c6f11263af2b1c88 EBUILD thinkpad-sources-2.6.26.ebuild 3614 RMD160 55b8d77caf19cb8dbc7a9eb9631294db575e666c SHA1 fa90c42ad43706d481693c53a0db5c9a11e90b18 SHA256 4222e2a740bc28cfcd258b47186c419e6abc20bbd3b75e06f59c02fd82219eb2 -MISC ChangeLog 7304 RMD160 50202cccd574a850b7535b1f502fa2ec8c7776c8 SHA1 a6779ae173d5fcdab78f2e13f0399e4cfc640069 SHA256 213074a0a0e148df338ce97290e4207971320bbfdae2b5ff0caa7745624ba708 +EBUILD thinkpad-sources-2.6.27.ebuild 2838 RMD160 9a02e8dceb70f055139a0e221a58029912679e45 SHA1 08aac80e82d1a91c011e18fe50ddfff88461c54e SHA256 09338abe0c2722b94c8f33bc5dc99953ea9360eb9f65cc354a8aa82392b4ce3d +MISC ChangeLog 7741 RMD160 e1df4fbf50de5fab3ec9aa371dc10e906ca9b4e2 SHA1 bb3c6394a60e6520f69713b0c0008945d65daf3d SHA256 1a354c5cb5336e182d6a4cab7a8125c4d7a2767970ba6e5b8dac02e31f9bdb2a MISC metadata.xml 284 RMD160 5062b08f804b7eaf9e1765c0d38b7fc95bc467e4 SHA1 687ba9103e597aad8a7231ff9a470d841f7121df SHA256 6ca83c8927bd3516baac49bc9ea82ddbeeddbe38a5a98b637d6eb1f1d436c84a diff --git a/sys-kernel/thinkpad-sources/files/2.6.27/01-disk-protect-for-2.6.27.2.patch b/sys-kernel/thinkpad-sources/files/2.6.27/01-disk-protect-for-2.6.27.2.patch new file mode 100644 index 0000000..2be4a67 --- /dev/null +++ b/sys-kernel/thinkpad-sources/files/2.6.27/01-disk-protect-for-2.6.27.2.patch @@ -0,0 +1,966 @@ +--- + + Documentation/laptops/disk-shock-protection.txt | 149 +++++++++++++++++++++++ + drivers/ata/ahci.c | 1 + drivers/ata/libata-core.c | 1 + drivers/ata/libata-eh.c | 126 +++++++++++++++++++ + drivers/ata/libata-scsi.c | 109 +++++++++++++++++ + drivers/ide/Makefile | 2 + drivers/ide/ide-io.c | 27 ++++ + drivers/ide/ide-iops.c | 28 ++++ + drivers/ide/ide-park.c | 120 +++++++++++++++++++ + drivers/ide/ide-probe.c | 5 + + drivers/ide/ide-taskfile.c | 34 +++++ + drivers/ide/ide.c | 1 + include/linux/ata.h | 9 + + include/linux/ide.h | 12 ++ + include/linux/libata.h | 13 ++ + 15 files changed, 631 insertions(+), 6 deletions(-) + create mode 100644 Documentation/laptops/disk-shock-protection.txt + create mode 100644 drivers/ide/ide-park.c + +diff --git a/Documentation/laptops/disk-shock-protection.txt b/Documentation/laptops/disk-shock-protection.txt +new file mode 100644 +index 0000000..0e6ba26 +--- /dev/null ++++ b/Documentation/laptops/disk-shock-protection.txt +@@ -0,0 +1,149 @@ ++Hard disk shock protection ++========================== ++ ++Author: Elias Oltmanns <eo@nebensachen.de> ++Last modified: 2008-10-03 ++ ++ ++0. Contents ++----------- ++ ++1. Intro ++2. The interface ++3. References ++4. CREDITS ++ ++ ++1. Intro ++-------- ++ ++ATA/ATAPI-7 specifies the IDLE IMMEDIATE command with unload feature. ++Issuing this command should cause the drive to switch to idle mode and ++unload disk heads. This feature is being used in modern laptops in ++conjunction with accelerometers and appropriate software to implement ++a shock protection facility. The idea is to stop all I/O operations on ++the internal hard drive and park its heads on the ramp when critical ++situations are anticipated. The desire to have such a feature ++available on GNU/Linux systems has been the original motivation to ++implement a generic disk head parking interface in the Linux kernel. ++Please note, however, that other components have to be set up on your ++system in order to get disk shock protection working (see ++section 3. References below for pointers to more information about ++that). ++ ++ ++2. The interface ++---------------- ++ ++For each ATA device, the kernel exports the file ++block/*/device/unload_heads in sysfs (here assumed to be mounted under ++/sys). Access to /sys/block/*/device/unload_heads is denied with ++-EOPNOTSUPP if the device does not support the unload feature. ++Otherwise, writing an integer value to this file will take the heads ++of the respective drive off the platter and block all I/O operations ++for the specified number of milliseconds. When the timeout expires and ++no further disk head park request has been issued in the meantime, ++normal operation will be resumed. The maximal value accepted for a ++timeout is 30000 milliseconds. Exceeding this limit will return ++-EOVERFLOW, but heads will be parked anyway and the timeout will be ++set to 30 seconds. However, you can always change a timeout to any ++value between 0 and 30000 by issuing a subsequent head park request ++before the timeout of the previous one has expired. In particular, the ++total timeout can exceed 30 seconds and, more importantly, you can ++cancel a previously set timeout and resume normal operation ++immediately by specifying a timeout of 0. Values below -2 are rejected ++with -EINVAL (see below for the special meaning of -1 and -2). If the ++timeout specified for a recent head park request has not yet expired, ++reading from /sys/block/*/device/unload_heads will report the number ++of milliseconds remaining until normal operation will be resumed; ++otherwise, reading the unload_heads attribute will return 0. ++ ++For example, do the following in order to park the heads of drive ++/dev/sda and stop all I/O operations for five seconds: ++ ++# echo 5000 > /sys/block/sda/device/unload_heads ++ ++A simple ++ ++# cat /sys/block/sda/device/unload_heads ++ ++will show you how many milliseconds are left before normal operation ++will be resumed. ++ ++A word of caution: The fact that the interface operates on a basis of ++milliseconds may raise expectations that cannot be satisfied in ++reality. In fact, the ATA specs clearly state that the time for an ++unload operation to complete is vendor specific. The hint in ATA-7 ++that this will typically be within 500 milliseconds apparently has ++been dropped in ATA-8. ++ ++There is a technical detail of this implementation that may cause some ++confusion and should be discussed here. When a head park request has ++been issued to a device successfully, all I/O operations on the ++controller port this device is attached to will be deferred. That is ++to say, any other device that may be connected to the same port will ++be affected too. The only exception is that a subsequent head unload ++request to that other device will be executed immediately. Further ++operations on that port will be deferred until the timeout specified ++for either device on the port has expired. As far as PATA (old style ++IDE) configurations are concerned, there can only be two devices ++attached to any single port. In SATA world we have port multipliers ++which means that a user-issued head parking request to one device may ++actually result in stopping I/O to a whole bunch of devices. However, ++since this feature is supposed to be used on laptops and does not seem ++to be very useful in any other environment, there will be mostly one ++device per port. Even if the CD/DVD writer happens to be connected to ++the same port as the hard drive, it generally *should* recover just ++fine from the occasional buffer under-run incurred by a head park ++request to the HD. Actually, when you are using an ide driver rather ++than its libata counterpart (i.e. your disk is called /dev/hda ++instead of /dev/sda), then parking the heads of one drive (drive X) ++will generally not affect the mode of operation of another drive ++(drive Y) on the same port as described above. It is only when a port ++reset is required to recover from an exception on drive Y that further ++I/O operations on that drive (and the reset itself) will be delayed ++until drive X is no longer in the parked state. ++ ++Finally, there are some hard drives that only comply with an earlier ++version of the ATA standard than ATA-7, but do support the unload ++feature nonetheless. Unfortunately, there is no safe way Linux can ++detect these devices, so you won't be able to write to the ++unload_heads attribute. If you know that your device really does ++support the unload feature (for instance, because the vendor of your ++laptop or the hard drive itself told you so), then you can tell the ++kernel to enable the usage of this feature for that drive by writing ++the special value -1 to the unload_heads attribute: ++ ++# echo -1 > /sys/block/sda/device/unload_heads ++ ++will enable the feature for /dev/sda, and giving -2 instead of -1 will ++disable it again. ++ ++ ++3. References ++------------- ++ ++There are several laptops from different vendors featuring shock ++protection capabilities. As manufacturers have refused to support open ++source development of the required software components so far, Linux ++support for shock protection varies considerably between different ++hardware implementations. Ideally, this section should contain a list ++of pointers at different projects aiming at an implementation of shock ++protection on different systems. Unfortunately, I only know of a ++single project which, although still considered experimental, is fit ++for use. Please feel free to add projects that have been the victims ++of my ignorance. ++ ++- http://www.thinkwiki.org/wiki/HDAPS ++ See this page for information about Linux support of the hard disk ++ active protection system as implemented in IBM/Lenovo Thinkpads. ++ ++ ++4. CREDITS ++---------- ++ ++This implementation of disk head parking has been inspired by a patch ++originally published by Jon Escombe <lists@dresco.co.uk>. My efforts ++to develop an implementation of this feature that is fit to be merged ++into mainline have been aided by various kernel developers, in ++particular by Tejun Heo and Bartlomiej Zolnierkiewicz. +diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c +index 2e1a7cb..fd813fa 100644 +--- a/drivers/ata/ahci.c ++++ b/drivers/ata/ahci.c +@@ -316,6 +316,7 @@ static struct device_attribute *ahci_shost_attrs[] = { + + static struct device_attribute *ahci_sdev_attrs[] = { + &dev_attr_sw_activity, ++ &dev_attr_unload_heads, + NULL + }; + +diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c +index 79e3a8e..b8102d7 100644 +--- a/drivers/ata/libata-core.c ++++ b/drivers/ata/libata-core.c +@@ -5264,6 +5264,7 @@ struct ata_port *ata_port_alloc(struct ata_host *host) + INIT_WORK(&ap->scsi_rescan_task, ata_scsi_dev_rescan); + INIT_LIST_HEAD(&ap->eh_done_q); + init_waitqueue_head(&ap->eh_wait_q); ++ init_completion(&ap->park_req_pending); + init_timer_deferrable(&ap->fastdrain_timer); + ap->fastdrain_timer.function = ata_eh_fastdrain_timerfn; + ap->fastdrain_timer.data = (unsigned long)ap; +diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c +index c1db2f2..2efe3ae 100644 +--- a/drivers/ata/libata-eh.c ++++ b/drivers/ata/libata-eh.c +@@ -2446,6 +2446,80 @@ int ata_eh_reset(struct ata_link *link, int classify, + goto retry; + } + ++static inline void ata_eh_pull_park_action(struct ata_port *ap) ++{ ++ struct ata_link *link; ++ struct ata_device *dev; ++ unsigned long flags; ++ ++ /* ++ * This function can be thought of as an extended version of ++ * ata_eh_about_to_do() specially crafted to accommodate the ++ * requirements of ATA_EH_PARK handling. Since the EH thread ++ * does not leave the do {} while () loop in ata_eh_recover as ++ * long as the timeout for a park request to *one* device on ++ * the port has not expired, and since we still want to pick ++ * up park requests to other devices on the same port or ++ * timeout updates for the same device, we have to pull ++ * ATA_EH_PARK actions from eh_info into eh_context.i ++ * ourselves at the beginning of each pass over the loop. ++ * ++ * Additionally, all write accesses to &ap->park_req_pending ++ * through INIT_COMPLETION() (see below) or complete_all() ++ * (see ata_scsi_park_store()) are protected by the host lock. ++ * As a result we have that park_req_pending.done is zero on ++ * exit from this function, i.e. when ATA_EH_PARK actions for ++ * *all* devices on port ap have been pulled into the ++ * respective eh_context structs. If, and only if, ++ * park_req_pending.done is non-zero by the time we reach ++ * wait_for_completion_timeout(), another ATA_EH_PARK action ++ * has been scheduled for at least one of the devices on port ++ * ap and we have to cycle over the do {} while () loop in ++ * ata_eh_recover() again. ++ */ ++ ++ spin_lock_irqsave(ap->lock, flags); ++ INIT_COMPLETION(ap->park_req_pending); ++ ata_port_for_each_link(link, ap) { ++ ata_link_for_each_dev(dev, link) { ++ struct ata_eh_info *ehi = &link->eh_info; ++ ++ link->eh_context.i.dev_action[dev->devno] |= ++ ehi->dev_action[dev->devno] & ATA_EH_PARK; ++ ata_eh_clear_action(link, dev, ehi, ATA_EH_PARK); ++ } ++ } ++ spin_unlock_irqrestore(ap->lock, flags); ++} ++ ++static void ata_eh_park_issue_cmd(struct ata_device *dev, int park) ++{ ++ struct ata_eh_context *ehc = &dev->link->eh_context; ++ struct ata_taskfile tf; ++ unsigned int err_mask; ++ ++ ata_tf_init(dev, &tf); ++ if (park) { ++ ehc->unloaded_mask |= 1 << dev->devno; ++ tf.command = ATA_CMD_IDLEIMMEDIATE; ++ tf.feature = 0x44; ++ tf.lbal = 0x4c; ++ tf.lbam = 0x4e; ++ tf.lbah = 0x55; ++ } else { ++ ehc->unloaded_mask &= ~(1 << dev->devno); ++ tf.command = ATA_CMD_CHK_POWER; ++ } ++ ++ tf.flags |= ATA_TFLAG_DEVICE | ATA_TFLAG_ISADDR; ++ tf.protocol |= ATA_PROT_NODATA; ++ err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 0); ++ if (park && (err_mask || tf.lbal != 0xc4)) { ++ ata_dev_printk(dev, KERN_ERR, "head unload failed!\n"); ++ ehc->unloaded_mask &= ~(1 << dev->devno); ++ } ++} ++ + static int ata_eh_revalidate_and_attach(struct ata_link *link, + struct ata_device **r_failed_dev) + { +@@ -2755,7 +2829,7 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, + struct ata_device *dev; + int nr_failed_devs; + int rc; +- unsigned long flags; ++ unsigned long flags, deadline; + + DPRINTK("ENTER\n"); + +@@ -2829,6 +2903,56 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, + } + } + ++ do { ++ unsigned long now; ++ ++ /* ++ * clears ATA_EH_PARK in eh_info and resets ++ * ap->park_req_pending ++ */ ++ ata_eh_pull_park_action(ap); ++ ++ deadline = jiffies; ++ ata_port_for_each_link(link, ap) { ++ ata_link_for_each_dev(dev, link) { ++ struct ata_eh_context *ehc = &link->eh_context; ++ unsigned long tmp; ++ ++ if (dev->class != ATA_DEV_ATA) ++ continue; ++ if (!(ehc->i.dev_action[dev->devno] & ++ ATA_EH_PARK)) ++ continue; ++ tmp = dev->unpark_deadline; ++ if (time_before(deadline, tmp)) ++ deadline = tmp; ++ else if (time_before_eq(tmp, jiffies)) ++ continue; ++ if (ehc->unloaded_mask & (1 << dev->devno)) ++ continue; ++ ++ ata_eh_park_issue_cmd(dev, 1); ++ } ++ } ++ ++ now = jiffies; ++ if (time_before_eq(deadline, now)) ++ break; ++ ++ deadline = wait_for_completion_timeout(&ap->park_req_pending, ++ deadline - now); ++ } while (deadline); ++ ata_port_for_each_link(link, ap) { ++ ata_link_for_each_dev(dev, link) { ++ if (!(link->eh_context.unloaded_mask & ++ (1 << dev->devno))) ++ continue; ++ ++ ata_eh_park_issue_cmd(dev, 0); ++ ata_eh_done(link, dev, ATA_EH_PARK); ++ } ++ } ++ + /* the rest */ + ata_port_for_each_link(link, ap) { + struct ata_eh_context *ehc = &link->eh_context; +diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c +index b9d3ba4..e1f916f 100644 +--- a/drivers/ata/libata-scsi.c ++++ b/drivers/ata/libata-scsi.c +@@ -183,6 +183,106 @@ DEVICE_ATTR(link_power_management_policy, S_IRUGO | S_IWUSR, + ata_scsi_lpm_show, ata_scsi_lpm_put); + EXPORT_SYMBOL_GPL(dev_attr_link_power_management_policy); + ++static ssize_t ata_scsi_park_show(struct device *device, ++ struct device_attribute *attr, char *buf) ++{ ++ struct scsi_device *sdev = to_scsi_device(device); ++ struct ata_port *ap; ++ struct ata_link *link; ++ struct ata_device *dev; ++ unsigned long flags, now; ++ unsigned int uninitialized_var(msecs); ++ int rc = 0; ++ ++ ap = ata_shost_to_port(sdev->host); ++ ++ spin_lock_irqsave(ap->lock, flags); ++ dev = ata_scsi_find_dev(ap, sdev); ++ if (!dev) { ++ rc = -ENODEV; ++ goto unlock; ++ } ++ if (dev->flags & ATA_DFLAG_NO_UNLOAD) { ++ rc = -EOPNOTSUPP; ++ goto unlock; ++ } ++ ++ link = dev->link; ++ now = jiffies; ++ if (ap->pflags & ATA_PFLAG_EH_IN_PROGRESS && ++ link->eh_context.unloaded_mask & (1 << dev->devno) && ++ time_after(dev->unpark_deadline, now)) ++ msecs = jiffies_to_msecs(dev->unpark_deadline - now); ++ else ++ msecs = 0; ++ ++unlock: ++ spin_unlock_irq(ap->lock); ++ ++ return rc ? rc : snprintf(buf, 20, "%u\n", msecs); ++} ++ ++static ssize_t ata_scsi_park_store(struct device *device, ++ struct device_attribute *attr, ++ const char *buf, size_t len) ++{ ++ struct scsi_device *sdev = to_scsi_device(device); ++ struct ata_port *ap; ++ struct ata_device *dev; ++ long int input; ++ unsigned long flags; ++ int rc; ++ ++ rc = strict_strtol(buf, 10, &input); ++ if (rc || input < -2) ++ return -EINVAL; ++ if (input > ATA_TMOUT_MAX_PARK) { ++ rc = -EOVERFLOW; ++ input = ATA_TMOUT_MAX_PARK; ++ } ++ ++ ap = ata_shost_to_port(sdev->host); ++ ++ spin_lock_irqsave(ap->lock, flags); ++ dev = ata_scsi_find_dev(ap, sdev); ++ if (unlikely(!dev)) { ++ rc = -ENODEV; ++ goto unlock; ++ } ++ if (dev->class != ATA_DEV_ATA) { ++ rc = -EOPNOTSUPP; ++ goto unlock; ++ } ++ ++ if (input >= 0) { ++ if (dev->flags & ATA_DFLAG_NO_UNLOAD) { ++ rc = -EOPNOTSUPP; ++ goto unlock; ++ } ++ ++ dev->unpark_deadline = ata_deadline(jiffies, input); ++ dev->link->eh_info.dev_action[dev->devno] |= ATA_EH_PARK; ++ ata_port_schedule_eh(ap); ++ complete(&ap->park_req_pending); ++ } else { ++ switch (input) { ++ case -1: ++ dev->flags &= ~ATA_DFLAG_NO_UNLOAD; ++ break; ++ case -2: ++ dev->flags |= ATA_DFLAG_NO_UNLOAD; ++ break; ++ } ++ } ++unlock: ++ spin_unlock_irqrestore(ap->lock, flags); ++ ++ return rc ? rc : len; ++} ++DEVICE_ATTR(unload_heads, S_IRUGO | S_IWUSR, ++ ata_scsi_park_show, ata_scsi_park_store); ++EXPORT_SYMBOL_GPL(dev_attr_unload_heads); ++ + static void ata_scsi_set_sense(struct scsi_cmnd *cmd, u8 sk, u8 asc, u8 ascq) + { + cmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION; +@@ -269,6 +369,12 @@ DEVICE_ATTR(sw_activity, S_IWUGO | S_IRUGO, ata_scsi_activity_show, + ata_scsi_activity_store); + EXPORT_SYMBOL_GPL(dev_attr_sw_activity); + ++struct device_attribute *ata_common_sdev_attrs[] = { ++ &dev_attr_unload_heads, ++ NULL ++}; ++EXPORT_SYMBOL_GPL(ata_common_sdev_attrs); ++ + static void ata_scsi_invalid_field(struct scsi_cmnd *cmd, + void (*done)(struct scsi_cmnd *)) + { +@@ -954,6 +1060,9 @@ static int atapi_drain_needed(struct request *rq) + static int ata_scsi_dev_config(struct scsi_device *sdev, + struct ata_device *dev) + { ++ if (!ata_id_has_unload(dev->id)) ++ dev->flags |= ATA_DFLAG_NO_UNLOAD; ++ + /* configure max sectors */ + blk_queue_max_sectors(sdev->request_queue, dev->max_sectors); + +diff --git a/drivers/ide/Makefile b/drivers/ide/Makefile +index 64e0ecd..564bf9d 100644 +--- a/drivers/ide/Makefile ++++ b/drivers/ide/Makefile +@@ -5,7 +5,7 @@ + EXTRA_CFLAGS += -Idrivers/ide + + ide-core-y += ide.o ide-io.o ide-iops.o ide-lib.o ide-probe.o ide-taskfile.o \ +- ide-pio-blacklist.o ++ ide-park.o ide-pio-blacklist.o + + # core IDE code + ide-core-$(CONFIG_IDE_TIMINGS) += ide-timings.o +diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c +index a896a28..c83e9f0 100644 +--- a/drivers/ide/ide-io.c ++++ b/drivers/ide/ide-io.c +@@ -718,7 +718,31 @@ static ide_startstop_t execute_drive_cmd (ide_drive_t *drive, + + static ide_startstop_t ide_special_rq(ide_drive_t *drive, struct request *rq) + { +- switch (rq->cmd[0]) { ++ u8 cmd = rq->cmd[0]; ++ ++ if (cmd == REQ_PARK_HEADS || cmd == REQ_UNPARK_HEADS) { ++ ide_task_t task; ++ struct ide_taskfile *tf = &task.tf; ++ ++ memset(&task, 0, sizeof(task)); ++ if (cmd == REQ_PARK_HEADS) { ++ drive->sleep = *(unsigned long *)rq->special; ++ drive->sleeping = 1; ++ tf->command = WIN_IDLEIMMEDIATE; ++ tf->feature = 0x44; ++ tf->lbal = 0x4c; ++ tf->lbam = 0x4e; ++ tf->lbah = 0x55; ++ } else /* cmd == REQ_UNPARK_HEADS */ ++ tf->command = WIN_CHECKPOWERMODE1; ++ ++ task.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE | ++ IDE_TFLAG_CUSTOM_HANDLER; ++ drive->hwif->data_phase = task.data_phase = TASKFILE_NO_DATA; ++ return do_rw_taskfile(drive, &task); ++ } ++ ++ switch (cmd) { + case REQ_DRIVE_RESET: + return ide_do_reset(drive); + default: +@@ -1047,6 +1071,7 @@ static void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq) + hwgroup->hwif = hwif; + hwgroup->drive = drive; + drive->sleeping = 0; ++ drive->parked = 0; + drive->service_start = jiffies; + + if (blk_queue_plugged(drive->queue)) { +diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c +index 2cbadff..446ec28 100644 +--- a/drivers/ide/ide-iops.c ++++ b/drivers/ide/ide-iops.c +@@ -1108,6 +1108,7 @@ static void ide_disk_pre_reset(ide_drive_t *drive) + drive->special.b.set_geometry = legacy; + drive->special.b.recalibrate = legacy; + drive->mult_count = 0; ++ drive->parked = 0; + if (!drive->keep_settings && !drive->using_dma) + drive->mult_req = 0; + if (drive->mult_req != drive->mult_count) +@@ -1164,12 +1165,13 @@ static void pre_reset(ide_drive_t *drive) + static ide_startstop_t do_reset1 (ide_drive_t *drive, int do_not_try_atapi) + { + unsigned int unit; +- unsigned long flags; ++ unsigned long flags, timeout; + ide_hwif_t *hwif; + ide_hwgroup_t *hwgroup; + struct ide_io_ports *io_ports; + const struct ide_tp_ops *tp_ops; + const struct ide_port_ops *port_ops; ++ DEFINE_WAIT(wait); + + spin_lock_irqsave(&ide_lock, flags); + hwif = HWIF(drive); +@@ -1196,6 +1198,30 @@ static ide_startstop_t do_reset1 (ide_drive_t *drive, int do_not_try_atapi) + return ide_started; + } + ++ /* We must not disturb devices in the parked state. */ ++ do { ++ unsigned long now; ++ ++ prepare_to_wait(&ide_park_wq, &wait, TASK_UNINTERRUPTIBLE); ++ timeout = jiffies; ++ for (unit = 0; unit < MAX_DRIVES; unit++) { ++ ide_drive_t *tdrive = &hwif->drives[unit]; ++ ++ if (tdrive->present && tdrive->parked && ++ time_after(tdrive->sleep, timeout)) ++ timeout = tdrive->sleep; ++ } ++ ++ now = jiffies; ++ if (time_before_eq(timeout, now)) ++ break; ++ ++ spin_unlock_irqrestore(&ide_lock, flags); ++ timeout = schedule_timeout_uninterruptible(timeout - now); ++ spin_lock_irqsave(&ide_lock, flags); ++ } while (timeout); ++ finish_wait(&ide_park_wq, &wait); ++ + /* + * First, reset any device state data we were maintaining + * for any of the drives on this interface. +diff --git a/drivers/ide/ide-park.c b/drivers/ide/ide-park.c +new file mode 100644 +index 0000000..18adda6 +--- /dev/null ++++ b/drivers/ide/ide-park.c +@@ -0,0 +1,120 @@ ++#include <linux/kernel.h> ++#include <linux/ide.h> ++#include <linux/jiffies.h> ++#include <linux/blkdev.h> ++ ++DECLARE_WAIT_QUEUE_HEAD(ide_park_wq); ++ ++static void issue_park_cmd(ide_drive_t *drive, unsigned long timeout) ++{ ++ struct request_queue *q = drive->queue; ++ struct request *rq; ++ int rc; ++ ++ timeout += jiffies; ++ spin_lock_irq(&ide_lock); ++ if (drive->parked) { ++ ide_hwgroup_t *hwgroup = drive->hwif->hwgroup; ++ int reset_timer; ++ ++ reset_timer = time_before(timeout, drive->sleep); ++ drive->sleep = timeout; ++ wake_up_all(&ide_park_wq); ++ if (reset_timer && hwgroup->sleeping && ++ del_timer(&hwgroup->timer)) { ++ hwgroup->sleeping = 0; ++ hwgroup->busy = 0; ++ blk_start_queueing(q); ++ } ++ spin_unlock_irq(&ide_lock); ++ return; ++ } ++ spin_unlock_irq(&ide_lock); ++ ++ rq = blk_get_request(q, READ, __GFP_WAIT); ++ rq->cmd[0] = REQ_PARK_HEADS; ++ rq->cmd_len = 1; ++ rq->cmd_type = REQ_TYPE_SPECIAL; ++ rq->special = &timeout; ++ rc = blk_execute_rq(q, NULL, rq, 1); ++ blk_put_request(rq); ++ if (rc) ++ goto out; ++ ++ /* ++ * Make sure that *some* command is sent to the drive after the ++ * timeout has expired, so power management will be reenabled. ++ */ ++ rq = blk_get_request(q, READ, GFP_NOWAIT); ++ if (unlikely(!rq)) ++ goto out; ++ ++ rq->cmd[0] = REQ_UNPARK_HEADS; ++ rq->cmd_len = 1; ++ rq->cmd_type = REQ_TYPE_SPECIAL; ++ elv_add_request(q, rq, ELEVATOR_INSERT_FRONT, 1); ++ ++out: ++ return; ++} ++ ++ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ ide_drive_t *drive = to_ide_device(dev); ++ unsigned long now; ++ unsigned int msecs; ++ ++ if (drive->no_unload) ++ return -EOPNOTSUPP; ++ ++ spin_lock_irq(&ide_lock); ++ now = jiffies; ++ if (drive->parked && time_after(drive->sleep, now)) ++ msecs = jiffies_to_msecs(drive->sleep - now); ++ else ++ msecs = 0; ++ spin_unlock_irq(&ide_lock); ++ ++ return snprintf(buf, 20, "%u\n", msecs); ++} ++ ++ssize_t ide_park_store(struct device *dev, struct device_attribute *attr, ++ const char *buf, size_t len) ++{ ++#define MAX_PARK_TIMEOUT 30000 ++ ide_drive_t *drive = to_ide_device(dev); ++ long int input; ++ int rc; ++ ++ rc = strict_strtol(buf, 10, &input); ++ if (rc || input < -2) ++ return -EINVAL; ++ if (input > MAX_PARK_TIMEOUT) { ++ input = MAX_PARK_TIMEOUT; ++ rc = -EOVERFLOW; ++ } ++ ++ mutex_lock(&ide_setting_mtx); ++ if (input >= 0) { ++ if (drive->no_unload) ++ rc = -EOPNOTSUPP; ++ else if (input || drive->parked) ++ issue_park_cmd(drive, msecs_to_jiffies(input)); ++ } else { ++ if (drive->media == ide_disk) ++ switch (input) { ++ case -1: ++ drive->no_unload = 0; ++ break; ++ case -2: ++ drive->no_unload = 1; ++ break; ++ } ++ else ++ rc = -EOPNOTSUPP; ++ } ++ mutex_unlock(&ide_setting_mtx); ++ ++ return rc ? rc : len; ++} +diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c +index a51a30e..0df3c91 100644 +--- a/drivers/ide/ide-probe.c ++++ b/drivers/ide/ide-probe.c +@@ -210,6 +210,8 @@ static inline void do_identify (ide_drive_t *drive, u8 cmd) + drive->media = type; + /* an ATAPI device ignores DRDY */ + drive->ready_stat = 0; ++ /* we don't do head unloading on ATAPI devices */ ++ drive->no_unload = 1; + return; + } + +@@ -227,6 +229,9 @@ static inline void do_identify (ide_drive_t *drive, u8 cmd) + + drive->media = ide_disk; + ++ if (!ata_id_has_unload((const u16 *)drive->id)) ++ drive->no_unload = 1; ++ + printk(KERN_CONT "%s DISK drive\n", + (id->config == 0x848a) ? "CFA" : "ATA"); + +diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c +index 7fb6f1c..255c960 100644 +--- a/drivers/ide/ide-taskfile.c ++++ b/drivers/ide/ide-taskfile.c +@@ -56,6 +56,7 @@ static ide_startstop_t task_no_data_intr(ide_drive_t *); + static ide_startstop_t set_geometry_intr(ide_drive_t *); + static ide_startstop_t recal_intr(ide_drive_t *); + static ide_startstop_t set_multmode_intr(ide_drive_t *); ++static ide_startstop_t park_intr(ide_drive_t *); + static ide_startstop_t pre_task_out_intr(ide_drive_t *, struct request *); + static ide_startstop_t task_in_intr(ide_drive_t *); + +@@ -105,6 +106,8 @@ ide_startstop_t do_rw_taskfile (ide_drive_t *drive, ide_task_t *task) + case WIN_SPECIFY: handler = set_geometry_intr; break; + case WIN_RESTORE: handler = recal_intr; break; + case WIN_SETMULT: handler = set_multmode_intr; break; ++ case WIN_IDLEIMMEDIATE: /* fall through */ ++ case WIN_CHECKPOWERMODE1: handler = park_intr; break; + } + } + ide_execute_command(drive, tf->command, handler, +@@ -186,6 +189,37 @@ static ide_startstop_t recal_intr(ide_drive_t *drive) + } + + /* ++ * park_intr() is invoked on completion of a REQ_PARK_HEADS cmd. ++ */ ++static ide_startstop_t park_intr(ide_drive_t *drive) ++{ ++ ide_hwif_t *hwif = drive->hwif; ++ u8 stat; ++ ++ local_irq_enable_in_hardirq(); ++ stat = hwif->tp_ops->read_status(hwif); ++ ++ if (!OK_STAT(stat, READY_STAT, BAD_STAT)) ++ return ide_error(drive, "park_intr", stat); ++ ++ if (hwif->hwgroup->rq->cmd[0] == REQ_PARK_HEADS) { ++ ide_task_t task; ++ ++ task.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; ++ hwif->tp_ops->tf_read(drive, &task); ++ if (task.tf.lbal != 0xc4) { ++ printk(KERN_ERR "%s: head unload failed!\n", ++ drive->name); ++ ide_tf_dump(drive->name, &task.tf); ++ } else ++ drive->parked = 1; ++ } ++ ++ ide_end_drive_cmd(drive, stat, ide_read_error(drive)); ++ return ide_stopped; ++} ++ ++/* + * Handler for commands without a data phase + */ + static ide_startstop_t task_no_data_intr(ide_drive_t *drive) +diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c +index 7724516..9416ffb 100644 +--- a/drivers/ide/ide.c ++++ b/drivers/ide/ide.c +@@ -734,6 +734,7 @@ static struct device_attribute ide_dev_attrs[] = { + __ATTR_RO(model), + __ATTR_RO(firmware), + __ATTR(serial, 0400, serial_show, NULL), ++ __ATTR(unload_heads, 0644, ide_park_show, ide_park_store), + __ATTR_NULL + }; + +diff --git a/include/linux/ata.h b/include/linux/ata.h +index 8a12d71..a26ebd2 100644 +--- a/include/linux/ata.h ++++ b/include/linux/ata.h +@@ -667,6 +667,15 @@ static inline int ata_id_has_dword_io(const u16 *id) + return 0; + } + ++static inline int ata_id_has_unload(const u16 *id) ++{ ++ if (ata_id_major_version(id) >= 7 && ++ (id[ATA_ID_CFSSE] & 0xC000) == 0x4000 && ++ id[ATA_ID_CFSSE] & (1 << 13)) ++ return 1; ++ return 0; ++} ++ + static inline int ata_id_current_chs_valid(const u16 *id) + { + /* For ATA-1 devices, if the INITIALIZE DEVICE PARAMETERS command +diff --git a/include/linux/ide.h b/include/linux/ide.h +index 6514db8..03b6dea 100644 +--- a/include/linux/ide.h ++++ b/include/linux/ide.h +@@ -143,6 +143,8 @@ struct ide_io_ports { + * Values should be in the range of 0x20 to 0x3f. + */ + #define REQ_DRIVE_RESET 0x20 ++#define REQ_PARK_HEADS 0x22 ++#define REQ_UNPARK_HEADS 0x23 + + /* + * Check for an interrupt and acknowledge the interrupt status +@@ -423,6 +425,8 @@ struct ide_drive_s { + unsigned sleeping : 1; /* 1=sleeping & sleep field valid */ + unsigned post_reset : 1; + unsigned udma33_warned : 1; ++ unsigned no_unload : 1; /* no support for unload feature */ ++ unsigned parked : 1; /* device parked, heads unloaded */ + + u8 addressing; /* 0=28-bit, 1=48-bit, 2=48-bit doing 28-bit */ + u8 quirk_list; /* considered quirky, set for a specific host */ +@@ -1061,6 +1065,7 @@ extern int drive_is_ready(ide_drive_t *); + + void ide_pktcmd_tf_load(ide_drive_t *, u32, u16, u8); + ++ + ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc, + ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry, + void (*update_buffers)(ide_drive_t *, struct ide_atapi_pc *), +@@ -1072,6 +1077,13 @@ ide_startstop_t ide_transfer_pc(ide_drive_t *, struct ide_atapi_pc *, + ide_startstop_t ide_issue_pc(ide_drive_t *, struct ide_atapi_pc *, + ide_handler_t *, unsigned int, ide_expiry_t *); + ++/* Disk head parking */ ++extern wait_queue_head_t ide_park_wq; ++ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, ++ char *buf); ++ssize_t ide_park_store(struct device *dev, struct device_attribute *attr, ++ const char *buf, size_t len); ++ + ide_startstop_t do_rw_taskfile(ide_drive_t *, ide_task_t *); + + void task_end_request(ide_drive_t *, struct request *, u8); +diff --git a/include/linux/libata.h b/include/linux/libata.h +index 225bfc5..adc16cf 100644 +--- a/include/linux/libata.h ++++ b/include/linux/libata.h +@@ -146,6 +146,7 @@ enum { + ATA_DFLAG_SPUNDOWN = (1 << 14), /* XXX: for spindown_compat */ + ATA_DFLAG_SLEEPING = (1 << 15), /* device is sleeping */ + ATA_DFLAG_DUBIOUS_XFER = (1 << 16), /* data transfer not verified */ ++ ATA_DFLAG_NO_UNLOAD = (1 << 17), /* device doesn't support unload */ + ATA_DFLAG_INIT_MASK = (1 << 24) - 1, + + ATA_DFLAG_DETACH = (1 << 24), +@@ -244,6 +245,7 @@ enum { + ATA_TMOUT_BOOT = 30000, /* heuristic */ + ATA_TMOUT_BOOT_QUICK = 7000, /* heuristic */ + ATA_TMOUT_INTERNAL_QUICK = 5000, ++ ATA_TMOUT_MAX_PARK = 30000, + + /* FIXME: GoVault needs 2s but we can't afford that without + * parallel probing. 800ms is enough for iVDR disk +@@ -319,8 +321,9 @@ enum { + ATA_EH_RESET = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, + ATA_EH_ENABLE_LINK = (1 << 3), + ATA_EH_LPM = (1 << 4), /* link power management action */ ++ ATA_EH_PARK = (1 << 5), /* unload heads and stop I/O */ + +- ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE, ++ ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE | ATA_EH_PARK, + + /* ata_eh_info->flags */ + ATA_EHI_HOTPLUGGED = (1 << 0), /* could have been hotplugged */ +@@ -452,6 +455,7 @@ enum link_pm { + MEDIUM_POWER, + }; + extern struct device_attribute dev_attr_link_power_management_policy; ++extern struct device_attribute dev_attr_unload_heads; + extern struct device_attribute dev_attr_em_message_type; + extern struct device_attribute dev_attr_em_message; + extern struct device_attribute dev_attr_sw_activity; +@@ -564,6 +568,7 @@ struct ata_device { + /* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */ + u64 n_sectors; /* size of device, if ATA */ + unsigned int class; /* ATA_DEV_xxx */ ++ unsigned long unpark_deadline; + + u8 pio_mode; + u8 dma_mode; +@@ -621,6 +626,7 @@ struct ata_eh_context { + [ATA_EH_CMD_TIMEOUT_TABLE_SIZE]; + unsigned int classes[ATA_MAX_DEVICES]; + unsigned int did_probe_mask; ++ unsigned int unloaded_mask; + unsigned int saved_ncq_enabled; + u8 saved_xfer_mode[ATA_MAX_DEVICES]; + /* timestamp for the last reset attempt or success */ +@@ -709,6 +715,7 @@ struct ata_port { + struct list_head eh_done_q; + wait_queue_head_t eh_wait_q; + int eh_tries; ++ struct completion park_req_pending; + + pm_message_t pm_mesg; + int *pm_result; +@@ -1098,6 +1105,7 @@ extern void ata_std_error_handler(struct ata_port *ap); + */ + extern const struct ata_port_operations ata_base_port_ops; + extern const struct ata_port_operations sata_port_ops; ++extern struct device_attribute *ata_common_sdev_attrs[]; + + #define ATA_BASE_SHT(drv_name) \ + .module = THIS_MODULE, \ +@@ -1112,7 +1120,8 @@ extern const struct ata_port_operations sata_port_ops; + .proc_name = drv_name, \ + .slave_configure = ata_scsi_slave_config, \ + .slave_destroy = ata_scsi_slave_destroy, \ +- .bios_param = ata_std_bios_param ++ .bios_param = ata_std_bios_param, \ ++ .sdev_attrs = ata_common_sdev_attrs + + #define ATA_NCQ_SHT(drv_name) \ + ATA_BASE_SHT(drv_name), \ diff --git a/sys-kernel/thinkpad-sources/files/2.6.27/02-ipw2200-inject-for-2.6.27.patch b/sys-kernel/thinkpad-sources/files/2.6.27/02-ipw2200-inject-for-2.6.27.patch new file mode 100644 index 0000000..ec44f16 --- /dev/null +++ b/sys-kernel/thinkpad-sources/files/2.6.27/02-ipw2200-inject-for-2.6.27.patch @@ -0,0 +1,86 @@ +--- a/drivers/net/wireless/ipw2200.c 2007-10-07 12:41:29.000000000 +0200 ++++ b/drivers/net/wireless/ipw2200.c 2007-10-07 12:50:43.000000000 +0200 +@@ -31,7 +31,7 @@ + ******************************************************************************/ + + #include "ipw2200.h" +- ++#include <linux/version.h> + + #ifndef KBUILD_EXTMOD + #define VK "k" +@@ -1862,6 +1862,66 @@ + static DEVICE_ATTR(net_stats, S_IWUSR | S_IRUGO, + show_net_stats, store_net_stats); + ++static int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb, int pri); ++ ++/* SYSFS INJECT */ ++static ssize_t store_inject(struct device *d, ++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12) ++ struct device_attribute *attr, ++#endif ++ const char *buf, size_t count) ++{ ++ struct ipw_priv *priv = (struct ipw_priv *)d->driver_data; ++ struct ieee80211_device *ieee = priv->ieee; ++ struct ieee80211_txb * txb; ++ struct sk_buff *skb_frag; ++ unsigned char * newbuf; ++ unsigned long flags; ++ ++ // should test (ieee->is_queue_full) ++ ++ // Fw only accepts data, so avoid accidental fw errors. ++ if ( (buf[0]&0x0c) != '\x08') { ++ //printk("ipw2200: inject: discarding non-data frame (type=%02X)\n",(int)(unsigned char)buf[0]); ++ return count; ++ } ++ ++ if (count>1500) { ++ count=1500; ++ printk("ipw2200: inject: cutting down frame to 1500 bytes\n"); ++ } ++ ++ spin_lock_irqsave(&priv->lock, flags); ++ ++ // Create a txb with one skb ++ txb = kmalloc(sizeof(struct ieee80211_txb) + sizeof(u8 *), GFP_ATOMIC); ++ if (!txb) ++ goto nosepuede; ++ txb->nr_frags=1; ++ txb->frag_size = ieee->tx_headroom; ++ txb->fragments[0]=__dev_alloc_skb(count + ieee->tx_headroom, GFP_ATOMIC); ++ if (!txb->fragments[0]) { ++ kfree(txb); ++ goto nosepuede; ++ } ++ skb_reserve(txb->fragments[0], ieee->tx_headroom); ++ txb->encrypted=0; ++ txb->payload_size=count; ++ skb_frag = txb->fragments[0]; ++ newbuf=skb_put(skb_frag, count); ++ ++ // copy data into txb->skb and send it ++ memcpy(newbuf, buf, count); ++ ++ ipw_tx_skb(priv, txb, 0); ++ ++nosepuede: ++ spin_unlock_irqrestore(&priv->lock, flags); ++ return count; ++} ++ ++static DEVICE_ATTR(inject, S_IWUSR, NULL, store_inject); ++ + static ssize_t show_channels(struct device *d, + struct device_attribute *attr, + char *buf) +@@ -11478,6 +11538,7 @@ + #ifdef CONFIG_IPW2200_PROMISCUOUS + &dev_attr_rtap_iface.attr, + &dev_attr_rtap_filter.attr, ++ &dev_attr_inject.attr, + #endif + NULL + }; diff --git a/sys-kernel/thinkpad-sources/files/2.6.27/colored-printk-2.6.26.patch b/sys-kernel/thinkpad-sources/files/2.6.27/colored-printk-2.6.26.patch new file mode 100644 index 0000000..dc97636 --- /dev/null +++ b/sys-kernel/thinkpad-sources/files/2.6.27/colored-printk-2.6.26.patch @@ -0,0 +1,355 @@ +diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c +index 643fd86..837f3c2 100644 +--- a/arch/x86/kernel/early_printk.c ++++ b/arch/x86/kernel/early_printk.c +@@ -15,7 +15,8 @@ + static int max_ypos = 25, max_xpos = 80; + static int current_ypos = 25, current_xpos; + +-static void early_vga_write(struct console *con, const char *str, unsigned n) ++static void early_vga_write(struct console *con, const char *str, unsigned n, ++ unsigned int loglevel) + { + char c; + int i, k, j; +@@ -84,7 +85,8 @@ static int early_serial_putc(unsigned char ch) + return timeout ? 0 : -1; + } + +-static void early_serial_write(struct console *con, const char *s, unsigned n) ++static void early_serial_write(struct console *con, const char *s, unsigned n, ++ unsigned int loglevel) + { + while (*s && n-- > 0) { + if (*s == '\n') +@@ -180,7 +182,8 @@ static void __init simnow_init(char *str) + simnow_fd = simnow(XOPEN, (unsigned long)fn, O_WRONLY|O_APPEND|O_CREAT, 0644); + } + +-static void simnow_write(struct console *con, const char *s, unsigned n) ++static void simnow_write(struct console *con, const char *s, unsigned n, ++ unsigned int loglevel) + { + simnow(XWRITE, simnow_fd, (unsigned long)s, n); + } +@@ -204,7 +207,7 @@ void early_printk(const char *fmt, ...) + + va_start(ap, fmt); + n = vscnprintf(buf, 512, fmt, ap); +- early_console->write(early_console, buf, n); ++ early_console->write(early_console, buf, n, 0); + va_end(ap); + } + +diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig +index 57ba5c2..10556dd 100644 +--- a/drivers/char/Kconfig ++++ b/drivers/char/Kconfig +@@ -71,6 +71,111 @@ config NR_TTY_DEVICES + + If unsure, say 63. + ++menuconfig VT_CKO ++ bool "Colored kernel message output" ++ depends on VT_CONSOLE ++ ---help--- ++ This option enables kernel messages to be emitted in ++ colors other than the default. ++ ++ The color value you need to enter is composed (OR-ed) ++ of a foreground and a background color. ++ ++ Foreground: ++ 0x00 = black, 0x08 = dark gray, ++ 0x01 = red, 0x09 = light red, ++ 0x02 = green, 0x0A = light green, ++ 0x03 = brown, 0x0B = yellow, ++ 0x04 = blue, 0x0C = light blue, ++ 0x05 = magenta, 0x0D = light magenta, ++ 0x06 = cyan, 0x0E = light cyan, ++ 0x07 = gray, 0x0F = white, ++ ++ (Foreground colors 0x08 to 0x0F do not work when a VGA ++ console font with 512 glyphs is used.) ++ ++ Background: ++ 0x00 = black, 0x40 = blue, ++ 0x10 = red, 0x50 = magenta, ++ 0x20 = green, 0x60 = cyan, ++ 0x30 = brown, 0x70 = gray, ++ ++ For example, 0x1F would yield white on red. ++ ++ If unsure, say N. ++ ++config VT_PRINTK_EMERG_COLOR ++ hex "Emergency messages color" ++ range 0x00 0xFF ++ depends on VT_CKO ++ default 0x07 ++ ---help--- ++ This option defines with which color kernel emergency messages will ++ be printed to the console. ++ ++config VT_PRINTK_ALERT_COLOR ++ hex "Alert messages color" ++ range 0x00 0xFF ++ depends on VT_CKO ++ default 0x07 ++ ---help--- ++ This option defines with which color kernel alert messages will ++ be printed to the console. ++ ++config VT_PRINTK_CRIT_COLOR ++ hex "Critical messages color" ++ range 0x00 0xFF ++ depends on VT_CKO ++ default 0x07 ++ ---help--- ++ This option defines with which color kernel critical messages will ++ be printed to the console. ++ ++config VT_PRINTK_ERR_COLOR ++ hex "Error messages color" ++ range 0x00 0xFF ++ depends on VT_CKO ++ default 0x07 ++ ---help--- ++ This option defines with which color kernel error messages will ++ be printed to the console. ++ ++config VT_PRINTK_WARNING_COLOR ++ hex "Warning messages color" ++ range 0x00 0xFF ++ depends on VT_CKO ++ default 0x07 ++ ---help--- ++ This option defines with which color kernel warning messages will ++ be printed to the console. ++ ++config VT_PRINTK_NOTICE_COLOR ++ hex "Notice messages color" ++ range 0x00 0xFF ++ depends on VT_CKO ++ default 0x07 ++ ---help--- ++ This option defines with which color kernel notice messages will ++ be printed to the console. ++ ++config VT_PRINTK_INFO_COLOR ++ hex "Information messages color" ++ range 0x00 0xFF ++ depends on VT_CKO ++ default 0x07 ++ ---help--- ++ This option defines with which color kernel information messages will ++ be printed to the console. ++ ++config VT_PRINTK_DEBUG_COLOR ++ hex "Debug messages color" ++ range 0x00 0xFF ++ depends on VT_CKO ++ default 0x07 ++ ---help--- ++ This option defines with which color kernel debug messages will ++ be printed to the console. ++ + config HW_CONSOLE + bool + depends on VT && !S390 && !UML +diff --git a/drivers/char/vt.c b/drivers/char/vt.c +index 935f1c2..1fee2dc 100644 +--- a/drivers/char/vt.c ++++ b/drivers/char/vt.c +@@ -73,6 +73,7 @@ + */ + + #include <linux/module.h> ++#include <linux/moduleparam.h> + #include <linux/types.h> + #include <linux/sched.h> + #include <linux/tty.h> +@@ -2409,17 +2410,45 @@ struct tty_driver *console_driver; + + #ifdef CONFIG_VT_CONSOLE + ++#ifdef CONFIG_VT_CKO ++static unsigned int printk_color[8] __read_mostly = { ++ CONFIG_VT_PRINTK_EMERG_COLOR, /* KERN_EMERG */ ++ CONFIG_VT_PRINTK_ALERT_COLOR, /* KERN_ALERT */ ++ CONFIG_VT_PRINTK_CRIT_COLOR, /* KERN_CRIT */ ++ CONFIG_VT_PRINTK_ERR_COLOR, /* KERN_ERR */ ++ CONFIG_VT_PRINTK_WARNING_COLOR, /* KERN_WARNING */ ++ CONFIG_VT_PRINTK_NOTICE_COLOR, /* KERN_NOTICE */ ++ CONFIG_VT_PRINTK_INFO_COLOR, /* KERN_INFO */ ++ CONFIG_VT_PRINTK_DEBUG_COLOR, /* KERN_DEBUG */ ++}; ++module_param_array(printk_color, uint, NULL, S_IRUGO | S_IWUSR); ++ ++static inline void vc_set_color(struct vc_data *vc, unsigned char color) ++{ ++ vc->vc_color = color_table[color & 0xF] | ++ (color_table[(color >> 4) & 0x7] << 4) | ++ (color & 0x80); ++ update_attr(vc); ++} ++#else ++static unsigned int printk_color[8]; ++static inline void vc_set_color(const struct vc_data *vc, unsigned char c) ++{ ++} ++#endif ++ + /* + * Console on virtual terminal + * + * The console must be locked when we get here. + */ + +-static void vt_console_print(struct console *co, const char *b, unsigned count) ++static void vt_console_print(struct console *co, const char *b, unsigned count, ++ unsigned int loglevel) + { + struct vc_data *vc = vc_cons[fg_console].d; +- unsigned char c; + static DEFINE_SPINLOCK(printing_lock); ++ unsigned char current_color, c; + const ushort *start; + ushort cnt = 0; + ushort myx; +@@ -2452,11 +2481,19 @@ static void vt_console_print(struct console *co, const char *b, unsigned count) + + start = (ushort *)vc->vc_pos; + ++ /* ++ * We always get a valid loglevel - <8> and "no level" is transformed ++ * to <4> in the typical kernel. ++ */ ++ current_color = printk_color[loglevel]; ++ vc_set_color(vc, current_color); ++ + /* Contrived structure to try to emulate original need_wrap behaviour + * Problems caused when we have need_wrap set on '\n' character */ + while (count--) { + c = *b++; + if (c == 10 || c == 13 || c == 8 || vc->vc_need_wrap) { ++ vc_set_color(vc, vc->vc_def_color); + if (cnt > 0) { + if (CON_IS_VISIBLE(vc)) + vc->vc_sw->con_putcs(vc, start, cnt, vc->vc_y, vc->vc_x); +@@ -2469,6 +2506,7 @@ static void vt_console_print(struct console *co, const char *b, unsigned count) + bs(vc); + start = (ushort *)vc->vc_pos; + myx = vc->vc_x; ++ vc_set_color(vc, current_color); + continue; + } + if (c != 13) +@@ -2476,6 +2514,7 @@ static void vt_console_print(struct console *co, const char *b, unsigned count) + cr(vc); + start = (ushort *)vc->vc_pos; + myx = vc->vc_x; ++ vc_set_color(vc, current_color); + if (c == 10 || c == 13) + continue; + } +@@ -2498,6 +2537,7 @@ static void vt_console_print(struct console *co, const char *b, unsigned count) + vc->vc_need_wrap = 1; + } + } ++ vc_set_color(vc, vc->vc_def_color); + set_cursor(vc); + notify_update(vc); + +diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c +index 665341e..4c27de8 100644 +--- a/drivers/net/netconsole.c ++++ b/drivers/net/netconsole.c +@@ -694,7 +694,8 @@ static struct notifier_block netconsole_netdev_notifier = { + .notifier_call = netconsole_netdev_event, + }; + +-static void write_msg(struct console *con, const char *msg, unsigned int len) ++static void write_msg(struct console *con, const char *msg, unsigned int len, ++ unsigned int loglevel) + { + int frag, left; + unsigned long flags; +diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c +index 1bc00b7..b4f1b6f 100644 +--- a/drivers/serial/8250.c ++++ b/drivers/serial/8250.c +@@ -2527,7 +2527,8 @@ static void serial8250_console_putchar(struct uart_port *port, int ch) + * The console_lock must be held when we get here. + */ + static void +-serial8250_console_write(struct console *co, const char *s, unsigned int count) ++serial8250_console_write(struct console *co, const char *s, unsigned int count, ++ unsigned int loglevel) + { + struct uart_8250_port *up = &serial8250_ports[co->index]; + unsigned long flags; +diff --git a/drivers/serial/8250_early.c b/drivers/serial/8250_early.c +index f279745..2a928bd 100644 +--- a/drivers/serial/8250_early.c ++++ b/drivers/serial/8250_early.c +@@ -83,7 +83,7 @@ static void __init serial_putc(struct uart_port *port, int c) + } + + static void __init early_serial8250_write(struct console *console, +- const char *s, unsigned int count) ++ const char *s, unsigned int count, unsigned int loglevel) + { + struct uart_port *port = &early_device.port; + unsigned int ier; +diff --git a/include/linux/console.h b/include/linux/console.h +index a4f27fb..46fcfd3 100644 +--- a/include/linux/console.h ++++ b/include/linux/console.h +@@ -95,7 +95,7 @@ void give_up_console(const struct consw *sw); + + struct console { + char name[16]; +- void (*write)(struct console *, const char *, unsigned); ++ void (*write)(struct console *, const char *, unsigned, unsigned int); + int (*read)(struct console *, char *, unsigned); + struct tty_driver *(*device)(struct console *, int *); + void (*unblank)(void); +diff --git a/kernel/printk.c b/kernel/printk.c +index 6e920ce..a1aaa3f 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -444,7 +444,8 @@ asmlinkage long sys_syslog(int type, char __user *buf, int len) + /* + * Call the console drivers on a range of log_buf + */ +-static void __call_console_drivers(unsigned start, unsigned end) ++static void __call_console_drivers(unsigned start, unsigned end, ++ unsigned int loglevel) + { + struct console *con; + +@@ -452,7 +453,7 @@ static void __call_console_drivers(unsigned start, unsigned end) + if ((con->flags & CON_ENABLED) && con->write && + (cpu_online(smp_processor_id()) || + (con->flags & CON_ANYTIME))) +- con->write(con, &LOG_BUF(start), end - start); ++ con->write(con, &LOG_BUF(start), end - start, loglevel); + } + } + +@@ -479,10 +480,11 @@ static void _call_console_drivers(unsigned start, + if ((start & LOG_BUF_MASK) > (end & LOG_BUF_MASK)) { + /* wrapped write */ + __call_console_drivers(start & LOG_BUF_MASK, +- log_buf_len); +- __call_console_drivers(0, end & LOG_BUF_MASK); ++ log_buf_len, msg_log_level); ++ __call_console_drivers(0, end & LOG_BUF_MASK, ++ msg_log_level); + } else { +- __call_console_drivers(start, end); ++ __call_console_drivers(start, end, msg_log_level); + } + } + } diff --git a/sys-kernel/thinkpad-sources/files/2.6.27/linux-phc-0.3.2-kernel-vanilla-2.6.26.patch b/sys-kernel/thinkpad-sources/files/2.6.27/linux-phc-0.3.2-kernel-vanilla-2.6.26.patch new file mode 100644 index 0000000..4a4db8b --- /dev/null +++ b/sys-kernel/thinkpad-sources/files/2.6.27/linux-phc-0.3.2-kernel-vanilla-2.6.26.patch @@ -0,0 +1,554 @@ +diff --new-file -a --unified=5 --recursive linux-source-2.6.26-rc9_orig/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c linux-source-2.6.26-rc9-custom8/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c +--- linux-source-2.6.26-rc9_orig/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2008-07-09 16:59:37.000000000 +0200 ++++ linux-source-2.6.26-rc9-custom8/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2008-07-09 12:41:37.000000000 +0200 +@@ -23,10 +23,14 @@ + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + ++/* This file has been patched with Linux PHC: http://phc.athousandnights.de ++ * Patch version: linux-phc-0.3.1-kernel-vanilla-2.6.26.patch ++ */ ++ + #include <linux/kernel.h> + #include <linux/module.h> + #include <linux/init.h> + #include <linux/smp.h> + #include <linux/sched.h> +@@ -56,17 +60,22 @@ + SYSTEM_IO_CAPABLE, + }; + + #define INTEL_MSR_RANGE (0xffff) + #define CPUID_6_ECX_APERFMPERF_CAPABILITY (0x1) ++#define INTEL_MSR_VID_MASK (0x00ff) ++#define INTEL_MSR_FID_MASK (0xff00) ++#define INTEL_MSR_FID_SHIFT (0x8) ++#define PHC_VERSION_STRING "0.3.2:1" + + struct acpi_cpufreq_data { + struct acpi_processor_performance *acpi_data; + struct cpufreq_frequency_table *freq_table; + unsigned int max_freq; + unsigned int resume; + unsigned int cpu_feature; ++ acpi_integer *original_controls; + }; + + static DEFINE_PER_CPU(struct acpi_cpufreq_data *, drv_data); + + /* acpi_perf_data is a pointer to percpu data. */ +@@ -102,17 +111,18 @@ + } + + static unsigned extract_msr(u32 msr, struct acpi_cpufreq_data *data) + { + int i; ++ u32 fid; + struct acpi_processor_performance *perf; + +- msr &= INTEL_MSR_RANGE; ++ fid = msr & INTEL_MSR_FID_MASK; + perf = data->acpi_data; + + for (i=0; data->freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { +- if (msr == perf->states[data->freq_table[i].index].status) ++ if (fid == (perf->states[data->freq_table[i].index].status & INTEL_MSR_FID_MASK)) + return data->freq_table[i].frequency; + } + return data->freq_table[0].frequency; + } + +@@ -740,10 +750,12 @@ + if (data) { + cpufreq_frequency_table_put_attr(policy->cpu); + per_cpu(drv_data, policy->cpu) = NULL; + acpi_processor_unregister_performance(data->acpi_data, + policy->cpu); ++ if (data->original_controls) ++ kfree(data->original_controls); + kfree(data); + } + + return 0; + } +@@ -757,12 +769,477 @@ + data->resume = 1; + + return 0; + } + ++ ++ ++ ++/* sysfs interface to change operating points voltages */ ++ ++static unsigned int extract_fid_from_control(unsigned int control) ++{ ++ return ((control & INTEL_MSR_FID_MASK) >> INTEL_MSR_FID_SHIFT); ++} ++ ++static unsigned int extract_vid_from_control(unsigned int control) ++{ ++ return (control & INTEL_MSR_VID_MASK); ++} ++ ++ ++static bool check_cpu_control_capability(struct acpi_cpufreq_data *data) { ++ /* check if the cpu we are running on is capable of setting new control data ++ * ++ */ ++ if (unlikely(data == NULL || ++ data->acpi_data == NULL || ++ data->freq_table == NULL || ++ data->cpu_feature != SYSTEM_INTEL_MSR_CAPABLE)) { ++ return false; ++ } else { ++ return true; ++ }; ++} ++ ++ ++static ssize_t check_origial_table (struct acpi_cpufreq_data *data) ++{ ++ ++ struct acpi_processor_performance *acpi_data; ++ struct cpufreq_frequency_table *freq_table; ++ unsigned int state_index; ++ ++ acpi_data = data->acpi_data; ++ freq_table = data->freq_table; ++ ++ if (data->original_controls == NULL) { ++ // Backup original control values ++ data->original_controls = kcalloc(acpi_data->state_count, ++ sizeof(acpi_integer), GFP_KERNEL); ++ if (data->original_controls == NULL) { ++ printk("failed to allocate memory for original control values\n"); ++ return -ENOMEM; ++ } ++ for (state_index = 0; state_index < acpi_data->state_count; state_index++) { ++ data->original_controls[state_index] = acpi_data->states[state_index].control; ++ } ++ } ++ return 0; ++} ++ ++static ssize_t show_freq_attr_vids(struct cpufreq_policy *policy, char *buf) ++ /* display phc's voltage id's ++ * ++ */ ++{ ++ struct acpi_cpufreq_data *data = per_cpu(drv_data, policy->cpu); ++ struct acpi_processor_performance *acpi_data; ++ struct cpufreq_frequency_table *freq_table; ++ unsigned int i; ++ unsigned int vid; ++ ssize_t count = 0; ++ ++ if (!check_cpu_control_capability(data)) return -ENODEV; //check if CPU is capable of changing controls ++ ++ acpi_data = data->acpi_data; ++ freq_table = data->freq_table; ++ ++ for (i = 0; freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { ++ vid = extract_vid_from_control(acpi_data->states[freq_table[i].index].control); ++ count += sprintf(&buf[count], "%u ", vid); ++ } ++ count += sprintf(&buf[count], "\n"); ++ ++ return count; ++} ++ ++static ssize_t show_freq_attr_default_vids(struct cpufreq_policy *policy, char *buf) ++ /* display acpi's default voltage id's ++ * ++ */ ++{ ++ struct acpi_cpufreq_data *data = per_cpu(drv_data, policy->cpu); ++ struct cpufreq_frequency_table *freq_table; ++ unsigned int i; ++ unsigned int vid; ++ ssize_t count = 0; ++ ssize_t retval; ++ ++ if (!check_cpu_control_capability(data)) return -ENODEV; //check if CPU is capable of changing controls ++ ++ retval = check_origial_table(data); ++ if (0 != retval) ++ return retval; ++ ++ freq_table = data->freq_table; ++ ++ for (i = 0; freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { ++ vid = extract_vid_from_control(data->original_controls[freq_table[i].index]); ++ count += sprintf(&buf[count], "%u ", vid); ++ } ++ count += sprintf(&buf[count], "\n"); ++ ++ return count; ++} ++ ++static ssize_t show_freq_attr_fids(struct cpufreq_policy *policy, char *buf) ++ /* display phc's frequeny id's ++ * ++ */ ++{ ++ struct acpi_cpufreq_data *data = per_cpu(drv_data, policy->cpu); ++ struct acpi_processor_performance *acpi_data; ++ struct cpufreq_frequency_table *freq_table; ++ unsigned int i; ++ unsigned int fid; ++ ssize_t count = 0; ++ ++ if (!check_cpu_control_capability(data)) return -ENODEV; //check if CPU is capable of changing controls ++ ++ acpi_data = data->acpi_data; ++ freq_table = data->freq_table; ++ ++ for (i = 0; freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { ++ fid = extract_fid_from_control(acpi_data->states[freq_table[i].index].control); ++ count += sprintf(&buf[count], "%u ", fid); ++ } ++ count += sprintf(&buf[count], "\n"); ++ ++ return count; ++} ++ ++static ssize_t show_freq_attr_controls(struct cpufreq_policy *policy, char *buf) ++ /* display phc's controls for the cpu (frequency id's and related voltage id's) ++ * ++ */ ++{ ++ struct acpi_cpufreq_data *data = per_cpu(drv_data, policy->cpu); ++ struct acpi_processor_performance *acpi_data; ++ struct cpufreq_frequency_table *freq_table; ++ unsigned int i; ++ unsigned int fid; ++ unsigned int vid; ++ ssize_t count = 0; ++ ++ if (!check_cpu_control_capability(data)) return -ENODEV; //check if CPU is capable of changing controls ++ ++ acpi_data = data->acpi_data; ++ freq_table = data->freq_table; ++ ++ for (i = 0; freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { ++ fid = extract_fid_from_control(acpi_data->states[freq_table[i].index].control); ++ vid = extract_vid_from_control(acpi_data->states[freq_table[i].index].control); ++ count += sprintf(&buf[count], "%u:%u ", fid, vid); ++ } ++ count += sprintf(&buf[count], "\n"); ++ ++ return count; ++} ++ ++static ssize_t show_freq_attr_default_controls(struct cpufreq_policy *policy, char *buf) ++ /* display acpi's default controls for the cpu (frequency id's and related voltage id's) ++ * ++ */ ++{ ++ struct acpi_cpufreq_data *data = per_cpu(drv_data, policy->cpu); ++ struct cpufreq_frequency_table *freq_table; ++ unsigned int i; ++ unsigned int fid; ++ unsigned int vid; ++ ssize_t count = 0; ++ ssize_t retval; ++ ++ if (!check_cpu_control_capability(data)) return -ENODEV; //check if CPU is capable of changing controls ++ ++ retval = check_origial_table(data); ++ if (0 != retval) ++ return retval; ++ ++ freq_table = data->freq_table; ++ ++ for (i = 0; freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { ++ fid = extract_fid_from_control(data->original_controls[freq_table[i].index]); ++ vid = extract_vid_from_control(data->original_controls[freq_table[i].index]); ++ count += sprintf(&buf[count], "%u:%u ", fid, vid); ++ } ++ count += sprintf(&buf[count], "\n"); ++ ++ return count; ++} ++ ++ ++static ssize_t store_freq_attr_vids(struct cpufreq_policy *policy, const char *buf, size_t count) ++ /* store the voltage id's for the related frequency ++ * We are going to do some sanity checks here to prevent users ++ * from setting higher voltages than the default one. ++ */ ++{ ++ struct acpi_cpufreq_data *data = per_cpu(drv_data, policy->cpu); ++ struct acpi_processor_performance *acpi_data; ++ struct cpufreq_frequency_table *freq_table; ++ unsigned int freq_index; ++ unsigned int state_index; ++ unsigned int new_vid; ++ unsigned int original_vid; ++ unsigned int new_control; ++ unsigned int original_control; ++ const char *curr_buf = buf; ++ char *next_buf; ++ ssize_t retval; ++ ++ if (!check_cpu_control_capability(data)) return -ENODEV; //check if CPU is capable of changing controls ++ ++ retval = check_origial_table(data); ++ if (0 != retval) ++ return retval; ++ ++ acpi_data = data->acpi_data; ++ freq_table = data->freq_table; ++ ++ /* for each value taken from the sysfs interfalce (phc_vids) get entrys and convert them to unsigned long integers*/ ++ for (freq_index = 0; freq_table[freq_index].frequency != CPUFREQ_TABLE_END; freq_index++) { ++ new_vid = simple_strtoul(curr_buf, &next_buf, 10); ++ if (next_buf == curr_buf) { ++ if ((curr_buf - buf == count - 1) && (*curr_buf == '\n')) { //end of line? ++ curr_buf++; ++ break; ++ } ++ //if we didn't got end of line but there is nothing more to read something went wrong... ++ printk("failed to parse vid value at %i (%s)\n", freq_index, curr_buf); ++ return -EINVAL; ++ } ++ ++ state_index = freq_table[freq_index].index; ++ original_control = data->original_controls[state_index]; ++ original_vid = original_control & INTEL_MSR_VID_MASK; ++ ++ /* before we store the values we do some checks to prevent ++ * users to set up values higher than the default one ++ */ ++ if (new_vid <= original_vid) { ++ new_control = (original_control & ~INTEL_MSR_VID_MASK) | new_vid; ++ dprintk("setting control at %i to %x (default is %x)\n", ++ freq_index, new_control, original_control); ++ acpi_data->states[state_index].control = new_control; ++ ++ } else { ++ printk("skipping vid at %i, %u is greater than default %u\n", ++ freq_index, new_vid, original_vid); ++ } ++ ++ curr_buf = next_buf; ++ /* jump over value seperators (space or comma). ++ * There could be more than one space or comma character ++ * to separate two values so we better do it using a loop. ++ */ ++ while ((curr_buf - buf < count) && ((*curr_buf == ' ') || (*curr_buf == ','))) { ++ curr_buf++; ++ } ++ } ++ ++ /* set new voltage for current frequency */ ++ data->resume = 1; ++ acpi_cpufreq_target(policy, get_cur_freq_on_cpu(policy->cpu), CPUFREQ_RELATION_L); ++ ++ return curr_buf - buf; ++} ++ ++static ssize_t store_freq_attr_controls(struct cpufreq_policy *policy, const char *buf, size_t count) ++ /* store the controls (frequency id's and related voltage id's) ++ * We are going to do some sanity checks here to prevent users ++ * from setting higher voltages than the default one. ++ */ ++{ ++ struct acpi_cpufreq_data *data = per_cpu(drv_data, policy->cpu); ++ struct acpi_processor_performance *acpi_data; ++ struct cpufreq_frequency_table *freq_table; ++ const char *curr_buf; ++ unsigned int op_count; ++ unsigned int state_index; ++ int isok; ++ char *next_buf; ++ ssize_t retval; ++ unsigned int new_vid; ++ unsigned int original_vid; ++ unsigned int new_fid; ++ unsigned int old_fid; ++ unsigned int original_control; ++ unsigned int old_control; ++ unsigned int new_control; ++ int found; ++ ++ if (!check_cpu_control_capability(data)) return -ENODEV; ++ ++ retval = check_origial_table(data); ++ if (0 != retval) ++ return retval; ++ ++ acpi_data = data->acpi_data; ++ freq_table = data->freq_table; ++ ++ op_count = 0; ++ curr_buf = buf; ++ next_buf = NULL; ++ isok = 1; ++ ++ while ( (isok) && (curr_buf != NULL) ) ++ { ++ op_count++; ++ // Parse fid ++ new_fid = simple_strtoul(curr_buf, &next_buf, 10); ++ if ((next_buf != curr_buf) && (next_buf != NULL)) ++ { ++ // Parse separator between frequency and voltage ++ curr_buf = next_buf; ++ next_buf = NULL; ++ if (*curr_buf==':') ++ { ++ curr_buf++; ++ // Parse vid ++ new_vid = simple_strtoul(curr_buf, &next_buf, 10); ++ if ((next_buf != curr_buf) && (next_buf != NULL)) ++ { ++ found = 0; ++ for (state_index = 0; state_index < acpi_data->state_count; state_index++) { ++ old_control = acpi_data->states[state_index].control; ++ old_fid = extract_fid_from_control(old_control); ++ if (new_fid == old_fid) ++ { ++ found = 1; ++ original_control = data->original_controls[state_index]; ++ original_vid = extract_vid_from_control(original_control); ++ if (new_vid <= original_vid) ++ { ++ new_control = (original_control & ~INTEL_MSR_VID_MASK) | new_vid; ++ dprintk("setting control at %i to %x (default is %x)\n", ++ state_index, new_control, original_control); ++ acpi_data->states[state_index].control = new_control; ++ ++ } else { ++ printk("skipping vid at %i, %u is greater than default %u\n", ++ state_index, new_vid, original_vid); ++ } ++ } ++ } ++ ++ if (found == 0) ++ { ++ printk("operating point # %u not found (FID = %u)\n", op_count, new_fid); ++ isok = 0; ++ } ++ ++ // Parse seprator before next operating point, if any ++ curr_buf = next_buf; ++ next_buf = NULL; ++ if ((*curr_buf == ',') || (*curr_buf == ' ')) ++ curr_buf++; ++ else ++ curr_buf = NULL; ++ } ++ else ++ { ++ printk("failed to parse VID of operating point # %u (%s)\n", op_count, curr_buf); ++ isok = 0; ++ } ++ } ++ else ++ { ++ printk("failed to parse operating point # %u (%s)\n", op_count, curr_buf); ++ isok = 0; ++ } ++ } ++ else ++ { ++ printk("failed to parse FID of operating point # %u (%s)\n", op_count, curr_buf); ++ isok = 0; ++ } ++ } ++ ++ if (isok) ++ { ++ retval = count; ++ /* set new voltage at current frequency */ ++ data->resume = 1; ++ acpi_cpufreq_target(policy, get_cur_freq_on_cpu(policy->cpu), CPUFREQ_RELATION_L); ++ } ++ else ++ { ++ retval = -EINVAL; ++ } ++ ++ return retval; ++} ++ ++static ssize_t show_freq_attr_phc_version(struct cpufreq_policy *policy, char *buf) ++ /* print out the phc version string set at the beginning of that file ++ */ ++{ ++ ssize_t count = 0; ++ count += sprintf(&buf[count], "%s\n", PHC_VERSION_STRING); ++ return count; ++} ++ ++ ++ ++static struct freq_attr cpufreq_freq_attr_phc_version = ++{ ++ /*display phc's version string*/ ++ .attr = { .name = "phc_version", .mode = 0444, .owner = THIS_MODULE }, ++ .show = show_freq_attr_phc_version, ++ .store = NULL, ++}; ++ ++static struct freq_attr cpufreq_freq_attr_vids = ++{ ++ /*display phc's voltage id's for the cpu*/ ++ .attr = { .name = "phc_vids", .mode = 0644, .owner = THIS_MODULE }, ++ .show = show_freq_attr_vids, ++ .store = store_freq_attr_vids, ++}; ++ ++static struct freq_attr cpufreq_freq_attr_default_vids = ++{ ++ /*display acpi's default frequency id's for the cpu*/ ++ .attr = { .name = "phc_default_vids", .mode = 0444, .owner = THIS_MODULE }, ++ .show = show_freq_attr_default_vids, ++ .store = NULL, ++}; ++ ++static struct freq_attr cpufreq_freq_attr_fids = ++{ ++ /*display phc's default frequency id's for the cpu*/ ++ .attr = { .name = "phc_fids", .mode = 0444, .owner = THIS_MODULE }, ++ .show = show_freq_attr_fids, ++ .store = NULL, ++}; ++ ++static struct freq_attr cpufreq_freq_attr_controls = ++{ ++ /*display phc's current voltage/frequency controls for the cpu*/ ++ .attr = { .name = "phc_controls", .mode = 0644, .owner = THIS_MODULE }, ++ .show = show_freq_attr_controls, ++ .store = store_freq_attr_controls, ++}; ++ ++static struct freq_attr cpufreq_freq_attr_default_controls = ++{ ++ /*display acpi's default voltage/frequency controls for the cpu*/ ++ .attr = { .name = "phc_default_controls", .mode = 0444, .owner = THIS_MODULE }, ++ .show = show_freq_attr_default_controls, ++ .store = NULL, ++}; ++ ++ + static struct freq_attr *acpi_cpufreq_attr[] = { +- &cpufreq_freq_attr_scaling_available_freqs, ++ &cpufreq_freq_attr_phc_version, ++ &cpufreq_freq_attr_scaling_available_freqs, ++ &cpufreq_freq_attr_vids, ++ &cpufreq_freq_attr_default_vids, ++ &cpufreq_freq_attr_fids, ++ &cpufreq_freq_attr_controls, ++ &cpufreq_freq_attr_default_controls, + NULL, + }; + + static struct cpufreq_driver acpi_cpufreq_driver = { + .verify = acpi_cpufreq_verify, diff --git a/sys-kernel/thinkpad-sources/files/2.6.27/power-off-unused-ports.patch b/sys-kernel/thinkpad-sources/files/2.6.27/power-off-unused-ports.patch new file mode 100644 index 0000000..d7225a2 --- /dev/null +++ b/sys-kernel/thinkpad-sources/files/2.6.27/power-off-unused-ports.patch @@ -0,0 +1,133 @@ + drivers/ata/ahci.c | 21 +++++++++++++++++++++ + drivers/ata/libata-core.c | 24 ++++++++++++++++++++++++ + include/linux/libata.h | 1 + + 3 files changed, 46 insertions(+) + +Index: linux-ahci-phy/drivers/ata/ahci.c +=================================================================== +--- linux-ahci-phy.orig/drivers/ata/ahci.c 2008-05-08 14:29:02.000000000 -0700 ++++ linux-ahci-phy/drivers/ata/ahci.c 2008-05-08 14:31:05.000000000 -0700 +@@ -53,14 +53,18 @@ static int ahci_skip_host_reset; + module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444); + MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)"); + ++static int ahci_power_save = 1; ++module_param_named(power_save, ahci_power_save, int, 0444); ++MODULE_PARM_DESC(power_save, "Power off unused ports (0=don't power off, 1=power off)"); + static int ahci_enable_alpm(struct ata_port *ap, + enum link_pm policy); + static void ahci_disable_alpm(struct ata_port *ap); + static ssize_t ahci_led_show(struct ata_port *ap, char *buf); + static ssize_t ahci_led_store(struct ata_port *ap, const char *buf, + size_t size); + static ssize_t ahci_transmit_led_message(struct ata_port *ap, u32 state, + ssize_t size); ++static int ahci_is_hotplug_capable(struct ata_port *ap); + #define MAX_SLOTS 8 + + enum { +@@ -166,6 +170,8 @@ enum { + PORT_CMD_ASP = (1 << 27), /* Aggressive Slumber/Partial */ + PORT_CMD_ALPE = (1 << 26), /* Aggressive Link PM enable */ + PORT_CMD_ATAPI = (1 << 24), /* Device is ATAPI */ ++ PORT_CMD_ESP = (1 << 21), /* External SATA Port */ ++ PORT_CMD_HPCP = (1 << 18), /* port is hot plug capable */ + PORT_CMD_PMP = (1 << 17), /* PMP attached */ + PORT_CMD_LIST_ON = (1 << 15), /* cmd list DMA engine running */ + PORT_CMD_FIS_ON = (1 << 14), /* FIS DMA engine running */ +@@ -1900,6 +1906,18 @@ static int ahci_pci_device_resume(struct + } + #endif + ++static int ahci_is_hotplug_capable(struct ata_port *ap) ++{ ++ void __iomem *port_mmio = ahci_port_base(ap); ++ u8 cmd; ++ ++ if (!ahci_power_save) ++ return 1; ++ ++ cmd = readl(port_mmio + PORT_CMD); ++ return ((cmd & PORT_CMD_HPCP) || (cmd & PORT_CMD_ESP)); ++} ++ + static int ahci_port_start(struct ata_port *ap) + { + struct device *dev = ap->host->dev; +@@ -1951,6 +1969,9 @@ static int ahci_port_start(struct ata_po + + ap->private_data = pp; + ++ /* set some flags based on port capabilities */ ++ if (!ahci_is_hotplug_capable(ap)) ++ ap->flags |= ATA_FLAG_NO_HOTPLUG; + /* engage engines, captain */ + return ahci_port_resume(ap); + } +Index: linux-ahci-phy/drivers/ata/libata-core.c +=================================================================== +--- linux-ahci-phy.orig/drivers/ata/libata-core.c 2008-05-08 14:28:57.000000000 -0700 ++++ linux-ahci-phy/drivers/ata/libata-core.c 2008-05-08 14:29:50.000000000 -0700 +@@ -162,6 +162,19 @@ MODULE_DESCRIPTION("Library module for A + MODULE_LICENSE("GPL"); + MODULE_VERSION(DRV_VERSION); + ++static void ata_phy_offline(struct ata_link *link) ++{ ++ u32 scontrol; ++ int rc; ++ ++ /* set DET to 4 */ ++ rc = sata_scr_read(link, SCR_CONTROL, &scontrol); ++ if (rc) ++ return; ++ scontrol &= ~0xf; ++ scontrol |= (1 << 2); ++ sata_scr_write(link, SCR_CONTROL, scontrol); ++} + + /** + * ata_force_cbl - force cable type according to libata.force +@@ -2671,6 +2684,7 @@ void ata_port_disable(struct ata_port *a + ap->link.device[0].class = ATA_DEV_NONE; + ap->link.device[1].class = ATA_DEV_NONE; + ap->flags |= ATA_FLAG_DISABLED; ++ ata_phy_offline(&ap->link); + } + + /** +@@ -5609,6 +5623,8 @@ int ata_host_register(struct ata_host *h + if (ap->ops->error_handler) { + struct ata_eh_info *ehi = &ap->link.eh_info; + unsigned long flags; ++ int device_attached = 0; ++ struct ata_device *dev; + + ata_port_probe(ap); + +@@ -5627,6 +5643,14 @@ int ata_host_register(struct ata_host *h + + /* wait for EH to finish */ + ata_port_wait_eh(ap); ++ ata_link_for_each_dev(dev, &ap->link) ++ if (ata_dev_enabled(dev)) ++ device_attached++; ++ if (!device_attached && ++ (ap->flags & ATA_FLAG_NO_HOTPLUG)) { ++ /* no device present, disable port */ ++ ata_port_disable(ap); ++ } + } else { + DPRINTK("ata%u: bus probe begin\n", ap->print_id); + rc = ata_bus_probe(ap); +Index: linux-ahci-phy/include/linux/libata.h +=================================================================== +--- linux-ahci-phy.orig/include/linux/libata.h 2008-05-08 14:28:57.000000000 -0700 ++++ linux-ahci-phy/include/linux/libata.h 2008-05-08 14:29:50.000000000 -0700 +@@ -207,4 +207,6 @@ ATA_FLAG_DISABLED = (1 << 23), /* port is disabled, ignore it */ + + /* bits 24:31 of ap->flags are reserved for LLD specific flags */ ++ ++ ATA_FLAG_NO_HOTPLUG = (1 << 32), /* port doesn't support HP */ + + /* struct ata_port pflags */ diff --git a/sys-kernel/thinkpad-sources/files/configs/config-for-core-2.6.27 b/sys-kernel/thinkpad-sources/files/configs/config-for-core-2.6.27 new file mode 100644 index 0000000..fbd429a --- /dev/null +++ b/sys-kernel/thinkpad-sources/files/configs/config-for-core-2.6.27 @@ -0,0 +1,2392 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.27-thinkpad +# Sun Nov 30 17:14:30 2008 +# +# CONFIG_64BIT is not set +CONFIG_X86_32=y +# CONFIG_X86_64 is not set +CONFIG_X86=y +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" +# CONFIG_GENERIC_LOCKBREAK is not set +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_FAST_CMPXCHG_LOCAL=y +CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_HWEIGHT=y +# CONFIG_GENERIC_GPIO is not set +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +# CONFIG_GENERIC_TIME_VSYSCALL is not set +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_ZONE_DMA32 is not set +CONFIG_ARCH_POPULATES_NODE_MAP=y +# CONFIG_AUDIT_ARCH is not set +CONFIG_ARCH_SUPPORTS_AOUT=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_X86_SMP=y +CONFIG_X86_32_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_KTIME_SCALAR=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=15 +# CONFIG_CGROUPS is not set +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_USER_SCHED=y +# CONFIG_CGROUP_SCHED is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +# CONFIG_RELAY is not set +CONFIG_NAMESPACES=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +# CONFIG_COMPAT_BRK is not set +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_ANON_INODES=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +# CONFIG_PROFILING is not set +# CONFIG_MARKERS is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +# CONFIG_HAVE_ARCH_TRACEHOOK is not set +# CONFIG_HAVE_DMA_ATTRS is not set +CONFIG_USE_GENERIC_SMP_HELPERS=y +# CONFIG_HAVE_CLK is not set +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_KMOD=y +CONFIG_STOP_MACHINE=y +CONFIG_BLOCK=y +# CONFIG_LBD is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_LSF=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_BLK_DEV_INTEGRITY=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_CLASSIC_RCU=y + +# +# Processor type and features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_SMP=y +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y +CONFIG_X86_PC=y +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_GENERICARCH is not set +# CONFIG_X86_VSMP is not set +# CONFIG_X86_RDC321X is not set +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +# CONFIG_PARAVIRT_GUEST is not set +# CONFIG_MEMTEST 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 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +CONFIG_MPENTIUM4=y +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_GENERIC_CPU is not set +# CONFIG_X86_GENERIC is not set +CONFIG_X86_CPU=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_XADD=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +CONFIG_X86_TSC=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=4 +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +# CONFIG_IOMMU_HELPER is not set +CONFIG_NR_CPUS=2 +# CONFIG_SCHED_SMT is not set +CONFIG_SCHED_MC=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +# CONFIG_PREEMPT_RCU is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCE_NONFATAL is not set +# CONFIG_X86_MCE_P4THERMAL is not set +CONFIG_VM86=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_X86_REBOOTFIXUPS is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_HIGHMEM=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPARSEMEM_STATIC=y +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_RESOURCES_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_HIGHPTE=y +# CONFIG_X86_RESERVE_LOW_64K is not set +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +# CONFIG_EFI is not set +# CONFIG_IRQBALANCE is not set +CONFIG_SECCOMP=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +CONFIG_HZ_300=y +# CONFIG_HZ_1000 is not set +CONFIG_HZ=300 +CONFIG_SCHED_HRTICK=y +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +CONFIG_PHYSICAL_START=0x100000 +# CONFIG_RELOCATABLE is not set +CONFIG_PHYSICAL_ALIGN=0x100000 +CONFIG_HOTPLUG_CPU=y +# CONFIG_COMPAT_VDSO is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y + +# +# Power management options +# +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="/dev/sda5" +CONFIG_TOI_CORE=y + +# +# Image Storage (you need at least one allocator) +# +CONFIG_TOI_FILE=y +CONFIG_TOI_SWAP=y + +# +# General Options +# +CONFIG_TOI_DEFAULT_PRE_HIBERNATE="" +CONFIG_TOI_DEFAULT_POST_HIBERNATE="" +CONFIG_TOI_CRYPTO=y +CONFIG_TOI_USERUI=y +CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/local/sbin/tuxonice_fbsplash" +# CONFIG_TOI_KEEP_IMAGE is not set +CONFIG_TOI_REPLACE_SWSUSP=y +# CONFIG_TOI_IGNORE_LATE_INITCALL is not set +CONFIG_TOI_CHECKSUM=y +CONFIG_TOI_DEFAULT_WAIT=25 +CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=15300 +# CONFIG_TOI_PAGEFLAGS_TEST is not set +CONFIG_TOI=y +CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_SYSFS_POWER=y +CONFIG_ACPI_PROC_EVENT=y +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_VIDEO=y +CONFIG_ACPI_FAN=y +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_BAY=m +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_WMI=y +# CONFIG_ACPI_ASUS is not set +# CONFIG_ACPI_TOSHIBA is not set +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_BLACKLIST_YEAR=0 +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_EC=y +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_POWER=y +CONFIG_ACPI_SYSTEM=y +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_CONTAINER=y +# CONFIG_ACPI_SBS is not set +# CONFIG_APM is not set + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y + +# +# CPUFreq processor drivers +# +CONFIG_X86_ACPI_CPUFREQ=y +# CONFIG_X86_POWERNOW_K6 is not set +# CONFIG_X86_POWERNOW_K7 is not set +# CONFIG_X86_POWERNOW_K8 is not set +# 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_P4_CLOCKMOD is not set +# CONFIG_X86_CPUFREQ_NFORCE2 is not set +# CONFIG_X86_LONGRUN is not set +# CONFIG_X86_LONGHAUL is not set +# CONFIG_X86_E_POWERSAVER is not set + +# +# shared options +# +# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set +CONFIG_X86_SPEEDSTEP_LIB=y +# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOOLPC is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_PCIEAER=y +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set +CONFIG_HT_IRQ=y +CONFIG_ISA_DMA_API=y +CONFIG_ISA=y +# CONFIG_EISA is not set +# CONFIG_MCA is not set +# CONFIG_SCx200 is not set +# CONFIG_OLPC is not set +CONFIG_PCCARD=y +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=y +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +# CONFIG_PD6729 is not set +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +CONFIG_PCMCIA_PROBE=y +CONFIG_PCCARD_NONSTATIC=y +CONFIG_HOTPLUG_PCI=y +# CONFIG_HOTPLUG_PCI_FAKE is not set +# CONFIG_HOTPLUG_PCI_COMPAQ is not set +CONFIG_HOTPLUG_PCI_IBM=y +CONFIG_HOTPLUG_PCI_ACPI=y +# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# Executable file formats / Emulations +# +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_MISC=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_MULTIPLE_TABLES is not set +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=y +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=y +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_TCP_MD5SIG=y +# CONFIG_IP_VS is not set +CONFIG_IPV6=y +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +CONFIG_IPV6_MIP6=y +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CT_ACCT=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_EVENTS=y +# CONFIG_NF_CT_PROTO_DCCP is not set +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +# CONFIG_NF_CT_PROTO_UDPLITE is not set +# CONFIG_NF_CONNTRACK_AMANDA is not set +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +# CONFIG_NF_CONNTRACK_SANE is not set +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_XTABLES=y +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_MARK=y +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=y +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=y +CONFIG_NETFILTER_XT_MATCH_DSCP=m +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=y +CONFIG_NETFILTER_XT_MATCH_LIMIT=y +CONFIG_NETFILTER_XT_MATCH_MAC=y +CONFIG_NETFILTER_XT_MATCH_MARK=y +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=y +CONFIG_NETFILTER_XT_MATCH_SCTP=y +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=y +CONFIG_NETFILTER_XT_MATCH_TCPMSS=y +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_CONNTRACK_IPV4=m +# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set +CONFIG_IP_NF_QUEUE=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_RECENT=y +CONFIG_IP_NF_MATCH_ECN=y +# CONFIG_IP_NF_MATCH_AH is not set +CONFIG_IP_NF_MATCH_TTL=y +CONFIG_IP_NF_MATCH_ADDRTYPE=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_TARGET_LOG=y +CONFIG_IP_NF_TARGET_ULOG=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_TFTP=m +# CONFIG_NF_NAT_AMANDA is not set +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_SIP=m +CONFIG_IP_NF_MANGLE=y +CONFIG_IP_NF_TARGET_ECN=y +CONFIG_IP_NF_TARGET_TTL=y +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_RAW=y +CONFIG_IP_NF_ARPTABLES=y +CONFIG_IP_NF_ARPFILTER=y +CONFIG_IP_NF_ARP_MANGLE=y + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_QUEUE=y +CONFIG_IP6_NF_IPTABLES=y +CONFIG_IP6_NF_MATCH_RT=y +CONFIG_IP6_NF_MATCH_OPTS=y +CONFIG_IP6_NF_MATCH_FRAG=y +CONFIG_IP6_NF_MATCH_HL=y +CONFIG_IP6_NF_MATCH_IPV6HEADER=y +# CONFIG_IP6_NF_MATCH_AH is not set +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_EUI64=y +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_LOG=y +CONFIG_IP6_NF_TARGET_REJECT=y +CONFIG_IP6_NF_MANGLE=y +CONFIG_IP6_NF_TARGET_HL=y +CONFIG_IP6_NF_RAW=y +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_CBQ is not set +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_NETEM is not set + +# +# Classification +# +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_ROUTE4 is not set +CONFIG_NET_CLS_ROUTE=y +# CONFIG_NET_CLS_FW is not set +# CONFIG_NET_CLS_U32 is not set +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_SCH_FIFO=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +# CONFIG_BT_BNEP is not set +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIBTUSB=m +# CONFIG_BT_HCIUART is not set +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIDTL1 is not set +# CONFIG_BT_HCIBT3C is not set +# CONFIG_BT_HCIBLUECARD is not set +# CONFIG_BT_HCIBTUART is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_AF_RXRPC is not set + +# +# Wireless +# +CONFIG_CFG80211=m +CONFIG_NL80211=y +CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_MAC80211=m + +# +# Rate control algorithm selection +# +CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_DEFAULT_PID=y +CONFIG_MAC80211_RC_DEFAULT="pid" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_IEEE80211=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +CONFIG_IEEE80211_CRYPT_TKIP=m +CONFIG_RFKILL=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_LEDS=y +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +# CONFIG_MTD is not set +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +# CONFIG_PARPORT_SERIAL is not set +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_PC_PCMCIA is not set +# CONFIG_PARPORT_GSC is not set +# CONFIG_PARPORT_AX88796 is not set +# CONFIG_PARPORT_1284 is not set +CONFIG_PNP=y +# CONFIG_PNP_DEBUG is not set + +# +# Protocols +# +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=y +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UB is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_MISC_DEVICES=y +# CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ACER_WMI is not set +# CONFIG_ASUS_LAPTOP is not set +# CONFIG_FUJITSU_LAPTOP is not set +# CONFIG_TC1100_WMI is not set +# CONFIG_HP_WMI is not set +# CONFIG_MSI_LAPTOP is not set +# CONFIG_COMPAL_LAPTOP is not set +# CONFIG_SONY_LAPTOP is not set +CONFIG_THINKPAD_ACPI=m +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_BAY is not set +# CONFIG_THINKPAD_ACPI_VIDEO is not set +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_INTEL_MENLOW=m +# CONFIG_EEEPC_LAPTOP is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_CHR_DEV_SG=y +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# CONFIG_SCSI_LOWLEVEL is not set +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +# CONFIG_SCSI_DH is not set +CONFIG_ATA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_ACPI=y +# CONFIG_SATA_PMP is not set +CONFIG_SATA_AHCI=y +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y +# CONFIG_SATA_SVW is not set +CONFIG_ATA_PIIX=y +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SX4 is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set +# CONFIG_SATA_INIC162X is not set +CONFIG_PATA_ACPI=y +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CS5535 is not set +# CONFIG_PATA_CS5536 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_LEGACY is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OPTIDMA is not set +CONFIG_PATA_PCMCIA=m +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_QDI is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set +# CONFIG_PATA_WINBOND_VLB is not set +# CONFIG_PATA_SCH is not set +# CONFIG_MD is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# Enable only one of the two stacks, unless you know what you are doing +# +# CONFIG_FIREWIRE is not set +# CONFIG_IEEE1394 is not set +# CONFIG_I2O is not set +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=y +# CONFIG_VETH is not set +# CONFIG_NET_SB1000 is not set +# CONFIG_ARCNET is not set +# CONFIG_NET_ETHERNET is not set +CONFIG_MII=m +CONFIG_NETDEV_1000=y +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +CONFIG_E1000=m +CONFIG_E1000_DISABLE_PACKET_SPLIT=y +CONFIG_E1000E=m +# CONFIG_IP1000 is not set +CONFIG_IGB=m +# CONFIG_IGB_LRO is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SIS190 is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_VIA_VELOCITY is not set +# CONFIG_TIGON3 is not set +# CONFIG_BNX2 is not set +# CONFIG_QLA3XXX is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_NETDEV_10000 is not set +# CONFIG_TR is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +CONFIG_WLAN_80211=y +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_LIBERTAS is not set +# CONFIG_AIRO is not set +# CONFIG_HERMES is not set +# CONFIG_ATMEL is not set +# CONFIG_AIRO_CS is not set +# CONFIG_PCMCIA_WL3501 is not set +# CONFIG_PRISM54 is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +# CONFIG_ADM8211 is not set +# CONFIG_MAC80211_HWSIM is not set +# CONFIG_P54_COMMON is not set +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +CONFIG_IWLWIFI=m +CONFIG_IWLCORE=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLWIFI_RFKILL=y +# CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLAGN=m +CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y +CONFIG_IWLAGN_LEDS=y +# CONFIG_IWL4965 is not set +CONFIG_IWL5000=y +CONFIG_IWL3945=m +CONFIG_IWL3945_RFKILL=y +CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y +CONFIG_IWL3945_LEDS=y +# CONFIG_IWL3945_DEBUG is not set +# CONFIG_HOSTAP is not set +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_ZD1211RW is not set +# CONFIG_RT2X00 is not set + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET is not set +CONFIG_USB_HSO=m +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +# CONFIG_WAN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +# CONFIG_SLIP is not set +CONFIG_SLHC=m +# CONFIG_NET_FC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +CONFIG_INPUT_POLLDEV=m + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1400 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1050 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_PCSPKR is not set +# CONFIG_INPUT_APANEL is not set +# CONFIG_INPUT_WISTRON_BTNS is not set +# CONFIG_INPUT_ATLAS_BTNS is not set +# CONFIG_INPUT_ATI_REMOTE is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +CONFIG_INPUT_UINPUT=m + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CKO=y +CONFIG_VT_PRINTK_EMERG_COLOR=0x09 +CONFIG_VT_PRINTK_ALERT_COLOR=0x01 +CONFIG_VT_PRINTK_CRIT_COLOR=0x05 +CONFIG_VT_PRINTK_ERR_COLOR=0x07 +CONFIG_VT_PRINTK_WARNING_COLOR=0x0B +CONFIG_VT_PRINTK_NOTICE_COLOR=0x02 +CONFIG_VT_PRINTK_INFO_COLOR=0x04 +CONFIG_VT_PRINTK_DEBUG_COLOR=0x07 +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_NOZOMI=m + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_CONSOLE is not set +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +# CONFIG_SERIAL_JSM is not set +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_PRINTER=y +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +CONFIG_NVRAM=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set +# CONFIG_IPWIRELESS is not set +# CONFIG_MWAVE is not set +# CONFIG_PC8736x_GPIO is not set +# CONFIG_NSC_GPIO is not set +# CONFIG_CS5535_GPIO is not set +# CONFIG_RAW_DRIVER is not set +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +# CONFIG_HANGCHECK_TIMER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set +CONFIG_DEVPORT=y +CONFIG_I2C=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Graphics adapter I2C/DDC channel drivers +# +# CONFIG_I2C_VOODOO3 is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_ISA is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set +# CONFIG_SCx200_ACB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_AT24 is not set +# CONFIG_SENSORS_EEPROM is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_PCF8575 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_MAX6875 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +# CONFIG_SPI is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_BATTERY_DS2760 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ABITUGURU3 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7473 is not set +# CONFIG_SENSORS_K8TEMP is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FSCHER is not set +# CONFIG_SENSORS_FSCPOS is not set +# CONFIG_SENSORS_FSCHMD is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +CONFIG_SENSORS_CORETEMP=y +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_HDAPS is not set +# CONFIG_SENSORS_APPLESMC is not set +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_HWMON=y +# CONFIG_WATCHDOG is not set + +# +# Sonics Silicon Backplane +# +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_TMIO is not set + +# +# Multimedia devices +# + +# +# Multimedia core support +# +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_COMMON=m +# CONFIG_VIDEO_ALLOW_V4L1 is not set +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_DVB_CORE=m +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9875=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_BT848=m +# CONFIG_VIDEO_BT848_DVB is not set +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_SAA7134=m +# CONFIG_VIDEO_SAA7134_ALSA is not set +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +# CONFIG_VIDEO_CX88_ALSA is not set +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_VP3054=m +# CONFIG_VIDEO_CX23885 is not set +# CONFIG_VIDEO_AU0828 is not set +# CONFIG_VIDEO_CX18 is not set +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +# CONFIG_USB_GSPCA is not set +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_USBVISION=m +CONFIG_USB_ET61X251=m +CONFIG_USB_SN9C102=m +CONFIG_USB_ZC0301=m +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +# CONFIG_USB_S2255 is not set +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9V022=m +# CONFIG_SOC_CAMERA_PLATFORM is not set +# CONFIG_VIDEO_SH_MOBILE_CEU is not set +# CONFIG_RADIO_ADAPTERS is not set +CONFIG_DVB_CAPTURE_DRIVERS=y + +# +# Supported SAA7146 based PCI Adapters +# +# CONFIG_TTPCI_EEPROM is not set +# CONFIG_DVB_AV7110 is not set +# CONFIG_DVB_BUDGET_CORE is not set + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +# CONFIG_DVB_USB_DW2102 is not set +# CONFIG_DVB_USB_ANYSEE is not set +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_CINERGYT2=m +# CONFIG_DVB_CINERGYT2_TUNING is not set +# CONFIG_DVB_SIANO_SMS1XXX is not set + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m + +# +# Supported Pluto2 Adapters +# +CONFIG_DVB_PLUTO2=m + +# +# Supported DVB Frontends +# + +# +# Customise DVB Frontends +# +# CONFIG_DVB_FE_CUSTOMISE is not set + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +# CONFIG_DVB_DRX397XD is not set +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_TDA10048=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_S5H1411=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_LNBP21=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_VGASTATE is not set +CONFIG_VIDEO_OUTPUT_CONTROL=y +# CONFIG_FB is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=y +# CONFIG_LCD_ILI9320 is not set +CONFIG_LCD_PLATFORM=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_CORGI is not set +# CONFIG_BACKLIGHT_PROGEAR is not set +# CONFIG_BACKLIGHT_MBP_NVIDIA is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +# CONFIG_VIDEO_SELECT is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQ_DUMMY is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_VMASTER=y +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ISA is not set +CONFIG_SND_PCI=y +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALS300 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AW2 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_OXYGEN is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CS5530 is not set +# CONFIG_SND_CS5535AUDIO is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +CONFIG_SND_HDA_INTEL=m +# CONFIG_SND_HDA_HWDEP is not set +# CONFIG_SND_HDA_CODEC_REALTEK is not set +CONFIG_SND_HDA_CODEC_ANALOG=y +# CONFIG_SND_HDA_CODEC_SIGMATEL is not set +# CONFIG_SND_HDA_CODEC_VIA is not set +# CONFIG_SND_HDA_CODEC_ATIHDMI is not set +# CONFIG_SND_HDA_CODEC_CONEXANT is not set +# CONFIG_SND_HDA_CODEC_CMEDIA is not set +# CONFIG_SND_HDA_CODEC_SI3054 is not set +# CONFIG_SND_HDA_GENERIC is not set +CONFIG_SND_HDA_POWER_SAVE=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=5 +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_HIFIER is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SIS7019 is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set +# CONFIG_SND_USB is not set +# CONFIG_SND_PCMCIA is not set +# CONFIG_SND_SOC is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +# CONFIG_HID_DEBUG is not set +# CONFIG_HIDRAW is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=y +# CONFIG_USB_HIDINPUT_POWERBOOK is not set +# CONFIG_HID_FF is not set +CONFIG_USB_HIDDEV=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_MON is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +CONFIG_USB_UHCI_HCD=m +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +CONFIG_USB_PRINTER=y +# CONFIG_USB_WDM is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# may also be needed; see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set +CONFIG_USB_SERIAL=m +# CONFIG_USB_EZUSB is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP2101 is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=m +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGET is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_GADGET is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m + +# +# LED drivers +# +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_CLEVO_MAIL is not set +# CONFIG_LEDS_PCA955X is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +# CONFIG_EDAC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set + +# +# SPI RTC drivers +# + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_V3020 is not set + +# +# on-CPU RTC drivers +# +CONFIG_DMADEVICES=y + +# +# DMA Devices +# +# CONFIG_INTEL_IOATDMA is not set +CONFIG_AUXDISPLAY=y +# CONFIG_KS0108 is not set +# CONFIG_UIO is not set + +# +# Firmware Drivers +# +# CONFIG_EDD is not set +CONFIG_FIRMWARE_MEMMAP=y +# CONFIG_DELL_RBU is not set +# CONFIG_DCDBAS is not set +CONFIG_DMIID=y +# CONFIG_ISCSI_IBFT_FIND is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XIP=y +CONFIG_FS_XIP=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4DEV_FS=y +CONFIG_EXT4DEV_FS_XATTR=y +CONFIG_EXT4DEV_FS_POSIX_ACL=y +CONFIG_EXT4DEV_FS_SECURITY=y +CONFIG_JBD=y +CONFIG_JBD2=y +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_DEBUG is not set +# CONFIG_OCFS2_FS is not set +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +CONFIG_QUOTACTL=y +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=y + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=y +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=850 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFSD=y +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_RPCSEC_GSS_KRB5=y +# CONFIG_RPCSEC_GSS_SPKM3 is not set +CONFIG_SMB_FS=y +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_CIFS=y +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_EXPERIMENTAL=y +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +CONFIG_NLS_ISO8859_15=y +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y +# CONFIG_DLM is not set + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +CONFIG_UNUSED_SYMBOLS=y +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_SCHED_DEBUG is not set +# CONFIG_SCHEDSTATS is not set +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +CONFIG_DEBUG_PREEMPT=y +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_FRAME_POINTER is not set +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_HAVE_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +# CONFIG_FTRACE is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +# CONFIG_DEBUG_RODATA is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_4KSTACKS is not set +CONFIG_DOUBLEFAULT=y +# CONFIG_MMIOTRACE is not set +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_CPA_DEBUG is not set +# CONFIG_OPTIMIZE_INLINING is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_GF128MUL=m +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=y +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set +CONFIG_CRYPTO_XCBC=y + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_MD4=y +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=y +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_586=y +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=y +CONFIG_CRYPTO_CAMELLIA=y +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=y +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SALSA20_586 is not set +# CONFIG_CRYPTO_SEED is not set +CONFIG_CRYPTO_SERPENT=y +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y +# CONFIG_CRYPTO_TWOFISH_586 is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZF=y +# CONFIG_CRYPTO_HW is not set +CONFIG_HAVE_KVM=y +# CONFIG_VIRTUALIZATION is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_AUDIT_GENERIC=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=y +CONFIG_TEXTSEARCH_BM=y +CONFIG_TEXTSEARCH_FSM=y +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y diff --git a/sys-kernel/thinkpad-sources/thinkpad-sources-2.6.27.ebuild b/sys-kernel/thinkpad-sources/thinkpad-sources-2.6.27.ebuild new file mode 100644 index 0000000..c2f4cc7 --- /dev/null +++ b/sys-kernel/thinkpad-sources/thinkpad-sources-2.6.27.ebuild @@ -0,0 +1,72 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: sys-kernel/thinkpad-sources/thinkpad-sources-2.6.27.ebuild 2008 11 30 + +ETYPE="sources" +K_WANT_GENPATCHES="base extras" +K_GENPATCHES_VER="6" +inherit kernel-2 +detect_version +detect_arch + +KEYWORDS="~amd64 ~x86" +IUSE="" +HOMEPAGE="http://dev.gentoo.org/~dsd/genpatches http://www.tuxonice.net http://ibm-acpi.sourceforge.net/" + +DESCRIPTION="TuxOnIce + Gentoo patches + Latest THINKPAD-Acpi + PCI-E ASPM + Colored Printk + Libata Powermanagement + Bay Fixes + hdaps + phc + ipw2200 inject" + +#bad, non fixed link +#TUXONICE_VERSION="3.0-rc7a" +TUXONICE_TARGET="2.6.27" +#TUXONICE_SRC="tuxonice-${TUXONICE_VERSION}-for-${TUXONICE_TARGET}" +TUXONICE_SRC="current-tuxonice-${TUXONICE_TARGET}" +TUXONICE_URI="http://www.tuxonice.net/downloads/all/${TUXONICE_SRC}.patch.bz2" + +THINKPAD_ACPI_VERSION="0.21-20081111" +THINKPAD_ACPI_TARGET="2.6.27.5" +THINKPAD_ACPI_SRC="thinkpad-acpi-${THINKPAD_ACPI_VERSION}_v${THINKPAD_ACPI_TARGET}.patch.gz" +THINKPAD_ACPI_URI="mirror://sourceforge/ibm-acpi/${THINKPAD_ACPI_SRC}" + + +UNIPATCH_LIST="" + +MY_PV="${PV}" +UNIPATCH_LIST="${UNIPATCH_LIST} + ${FILESDIR}/${MY_PV}/colored-printk-2.6.26.patch + ${FILESDIR}/${MY_PV}/01-disk-protect-for-2.6.27.2.patch + ${FILESDIR}/${MY_PV}/02-ipw2200-inject-for-2.6.27.patch + ${FILESDIR}/${MY_PV}/linux-phc-0.3.2-kernel-vanilla-2.6.26.patch + ${DISTDIR}/${THINKPAD_ACPI_SRC} + ${DISTDIR}/${TUXONICE_SRC}.patch.bz2 + ${FILESDIR}/${MY_PV}/power-off-unused-ports.patch +" + + +UNIPATCH_STRICTORDER="yes" +SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI} ${TUXONICE_URI} ${THINKPAD_ACPI_URI} ${IEEE80211_URI} ${HRT_URI}" + + +RDEPEND="${RDEPEND} + >=sys-apps/tuxonice-userui-0.7.2 + >=sys-power/hibernate-script-1.98.1" + +pkg_postinst() { + kernel-2_pkg_postinst + einfo "For more info on this patchset, and how to report problems, see:" + einfo "${HOMEPAGE}" + einfo "AND send a mail to linux-thinkpad mailinglist," + einfo "so the patch could be retested and rerated" + einfo "In files dir is an example config suitable for T60" + einfo "and hopefully all pci-express driven Thinkpads" + einfo "but at all you should try for all Thinkpads" + einfo "to NOT alter the given storage device controller configuration" + einfo "for powersaving i recommend to append these kernel options:" + einfo "usbcore.autosuspend=1 pcie_aspm.policy=powersave" + einfo "additional powertweaks possible (depending on your hardware):" + einfo "snd_hda_intel.power_save=1" + einfo "echo 7 > /sys/bus/pci/drivers/iwl3945/0000\:03\:00.0/power_level" + einfo "echo min_power > /sys/class/scsi_host/host0/link_power_management_policy" + einfo "echo 5 >/proc/sys/vm/laptop_mode" + einfo "echo 1500 >/proc/sys/vm/dirty_writeback_centisecs" + einfo "echo 1 >/sys/devices/system/cpu/sched_mc_power_savings" +} |