summaryrefslogtreecommitdiffstats
path: root/drivers/acpi
Commit message (Collapse)AuthorAgeFilesLines
* [PATCH] Fix CONFIG_ACPI_BLACKLIST_YEARviro@ZenIV.linux.org.uk2005-09-091-2/+1
| | | | | | | | This makes ACPI_BLACKLIST_YEAR be consistently defined when ACPI is enabled, regardless of whether we're on x86 or not, and thus avoids bogus -Wundef warnings on ia64. Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [ACPI] revert bad processor_core.c patch for bug 5128Len Brown2005-09-031-13/+10
| | | | Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] build fix - processor_core.c w/ !CONFIG_SMPLen Brown2005-09-031-1/+1
| | | | | | http://bugzilla.kernel.org/show_bug.cgi?id=5128 Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] acpi_video_device_write_state() now worksLuming Yu2005-09-031-1/+2
| | | | | | | http://bugzilla.kernel.org/show_bug.cgi?id=5060 Signed-off-by: Luming Yu <luming.yu@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] fix processor_core.c for NR_CPUS > 256Venkatesh Pallipadi2005-09-031-9/+12
| | | | | | | http://bugzilla.kernel.org/show_bug.cgi?id=5128 Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] fix run-time error checking in acpi_pci_irq_disable()Kenji Kaneshige2005-09-031-4/+1
| | | | | | | | | | The 'bus' field in pci_dev structure should be checked before calling pci_read_config_byte() because pci_bus_read_config_byte() called by pci_read_config_byte() refers to 'bus' field. Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] add static to function definitionsAdrian Bunk2005-09-034-4/+5
| | | | | Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] ACPICA 20050902Robert Moore2005-09-037-358/+331
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed a problem with the internal Owner ID allocation and deallocation mechanisms for control method execution and recursive method invocation. This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" messages seen on some systems. Recursive method invocation depth is currently limited to 255. (Alexey Starikovskiy) http://bugzilla.kernel.org/show_bug.cgi?id=4892 Completely eliminated all vestiges of support for the "module-level executable code" until this support is fully implemented and debugged. This should eliminate the NO_RETURN_VALUE exceptions seen during table load on some systems that invoke this support. http://bugzilla.kernel.org/show_bug.cgi?id=5162 Fixed a problem within the resource manager code where the transaction flags for a 64-bit address descriptor were handled incorrectly in the type-specific flag byte. Consolidated duplicate code within the address descriptor resource manager code, reducing overall subsystem code size. Signed-off-by: Robert Moore <Robert.Moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] revert owner-id-3.patchLen Brown2005-09-034-34/+54
| | | | Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] Error: Invalid owner_id: 00Alexey Y. Starikovskiy2005-08-314-54/+34
| | | | | Signed-off-by: Alexey Y. Starikovskiy <alexey.y.starikovskiy@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
* [ACPI] ACPICA 20050815Bob Moore2005-08-293-10/+24
| | | | | | | | | | | | | | Implemented a full bytewise compare to determine if a table load request is attempting to load a duplicate table. The compare is performed if the table signatures and table lengths match. This will allow different tables with the same OEM Table ID and revision to be loaded. Although the BIOS is technically violating the ACPI spec when this happens -- it does happen -- so Linux must handle it. Signed-off-by: Robert Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
* Auto-update from upstreamLen Brown2005-08-291-1/+5
|\
| * [PATCH] acpi_shutdown: Only prepare for power off on power_offEric W. Biederman2005-08-271-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | When acpi_sleep_prepare was moved into a shutdown method we started calling it for all shutdowns. It appears this triggers some systems to power off on reboot. Avoid this by only calling acpi_sleep_prepare if we are going to power off the system. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* | merge ibm into testLen Brown2005-08-251-314/+1044
|\ \
| * | [ACPI] IBM ThinkPad ACPI Extras Driver v0.12Borislav Deianov2005-08-251-439/+1159
| |/ | | | | | | | | | | | | http://ibm-acpi.sf.net/ Signed-off-by: Borislav Deianov <borislav@users.sf.net> Signed-off-by: Len Brown <len.brown@intel.com>
| * Merge ../to-linus-stable/Len Brown2005-08-151-3/+3
| |\
* | | [ACPI] delete CONFIG_ACPI_PCILen Brown2005-08-253-34/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Delete the ability to build an ACPI kernel that does not include PCI support. When such a machine is created and it requires a tuned kernel, send a patch. http://bugzilla.kernel.org/show_bug.cgi?id=1364 Signed-off-by: Len Brown <len.brown@intel.com>
* | | [ACPI] remove "default m" from acpi/KconfigLen Brown2005-08-251-19/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Andi Kleen suggested it was unconventional for us to "default m" on ACPI modules -- even though they are expected to be deployed as modules. But as "default n" would likely result in some users building nonsense kernels, we compromise to "default y". Distros are expected to continue to use =m in their configs. Signed-off-by: Len Brown <len.brown@intel.com>
* | | [ACPI] reduce use of EXPERIMENTAL in acpi/KconfigLen Brown2005-08-251-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Distros are shipping modules we had marked EXPERIMENTAL, so clearly it has lost some meaning. Delete that dependency for shipping modules, retaining it only for ACPI_HOTKEY and ACPI_CONTAINER to emphasize that they lack testing on real hardware. Signed-off-by: Len Brown <len.brown@intel.com>
* | | [ACPI] IA64-related ACPI Kconfig fixesLen Brown2005-08-251-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Build issues were mostly in the ACPI=n case -- don't do that. Select ACPI from IA64_GENERIC. Add some missing dependencies on ACPI. Mark BLACKLIST_YEAR and some laptop-only ACPI drivers as X86-only. Let me know when you get an IA64 Laptop. Signed-off-by: Len Brown <len.brown@intel.com>
* | | [ACPI] delete CONFIG_ACPI_BUSLen Brown2005-08-242-7/+3
| | | | | | | | | | | | | | | | | | it is a synonym for CONFIG_ACPI Signed-off-by: Len Brown <len.brown@intel.com>
* | | [ACPI] delete CONFIG_ACPI_INTERPRETERLen Brown2005-08-242-12/+2
| | | | | | | | | | | | | | | | | | it is a synonym for CONFIG_ACPI Signed-off-by: Len Brown <len.brown@intel.com>
* | | [ACPI] delete CONFIG_ACPI_BOOTLen Brown2005-08-242-6/+2
| | | | | | | | | | | | | | | | | | it has been a synonym for CONFIG_ACPI since 2.6.12 Signed-off-by: Len Brown <len.brown@intel.com>
* | | Merge from-linus to-akpmLen Brown2005-08-151-1/+1
|\ \ \ | |/ /
| * | Revert PCIBIOS_MIN_IO changes for 2.6.13Linus Torvalds2005-08-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commits 71db63acff69618b3d9d3114bd061938150e146b [PATCH] increase PCIBIOS_MIN_IO on x86 and 0b2bfb4e7ff61f286676867c3508569bea6fbf7a ACPI: increase PCIBIOS_MIN_IO on x86 since Lukas Sandströ<lukass@etek.chalmers.se> reports that this breaks his on-board nvidia audio. We should re-visit this later. For now we revert the change Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* | | Merge 'acpi-2.6.12' branch into to-akpmLen Brown2005-08-151-3/+3
|\ \ \
| * \ \ Merge to-linus-stable into to-akpmLen Brown2005-08-151-3/+3
| |\ \ \ | | | |/ | | |/|
| | * | [ACPI] re-enable platform-specific hotkey drivers by defaultLuming Yu2005-08-151-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When both platform-specific and generic drivers exist, enable generic over-ride with "acpi_generic_hotkey". http://bugzilla.kernel.org/show_bug.cgi?id=4953 Signed-off-by: Luming Yu <luming.yu@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
* | | | [ACPI] don't complain about PCI root bridges without _SEGBjorn Helgaas2005-08-121-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are lots of single-PCI-segment machines that don't supply _SEG for the root bridges. The PCI root bridge driver silently assumes the segment to be zero in this case, so glue.c shouldn't complain either. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Len Brown <len.brown@intel.com>
* | | | Merge acpi-2.6.12 to-akpmLen Brown2005-08-111-112/+59
|\ \ \ \ | |/ / /
| * | | [ACPI] Lindent drivers/acpi/ec.cLen Brown2005-08-111-480/+389
| | | | | | | | | | | | | | | | | | | | | | | | necessary for clean merge from acpi-2.6.12 to-akpm Signed-off-by: Len Brown <len.brown@intel.com>
| * | | [ACPI] Fix "ec_burst=1" mode latency issueLuming Yu2005-08-111-110/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | http://bugzilla.kernel.org/show_bug.cgi?id=3851 Signed-off-by: Luming Yu <luming.yu@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
* | | | [ACPI] Lindent all ACPI filesLen Brown2005-08-05145-23325/+20549
| | | | | | | | | | | | | | | | Signed-off-by: Len Brown <len.brown@intel.com>
* | | | [ACPI] whitespacePavel Machek2005-08-054-67/+32
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Pavel Machek <pavel@suse.cz> Signed-off-by: Len Brown <len.brown@intel.com>
* | | | [ACPI] Merge acpi-2.6.12 branch into 2.6.13-rc3Len Brown2005-08-054-8/+19
|\ \ \ \ | |/ / / | | | | | | | | Signed-off-by: Len Brown <len.brown@intel.com>
| * | | [ACPI] ACPI_HOTPLUG_CPU Kconfig dependency updateAdrian Bunk2005-08-041-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | prevent: HOTPLUG_CPU=y ACPI_PROCESSOR=y ACPI_HOTPLUG_CPU=n Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
| * | | [ACPI] lint: irqrouter_suspend() takes a pm_message_t, not a u32Andrew Morton2005-08-041-4/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
| * | | [ACPI] acpi_remove_notify_handler() on video driver unloadKarol Kozimor2005-08-041-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The video driver doesn't properly remove all the notify handlers on module unload. This has a side effect of subdevices failing to register on module reload, but sudden death looms if the handlers trigger after the module is unloaded. Signed-off-by: Karol Kozimor <sziwan@hell.org.pl> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
| * | | [ACPI] acpi_pci_enable_irq() now checks for acpi_register_gsi() errorsKenji Kaneshige2005-08-041-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
* | | | /home/lenb/src/to-akpm branch 'acpi-2.6.12'Len Brown2005-08-0461-2698/+3409
|\ \ \ \ | |/ / / | | | / | |_|/ |/| |
| * | When a merge does not work automatically, git preventsLen Brown2005-08-041-0/+1
| |\ \ | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | commit from running until a change has been made in the destination. In this instance the desired result was to choose the destination version of the file and ignore the source version, but git would not allow that. Here I added a blank line to let git commit think I resolved a merge conflict.
| * | Merge ../to-linusLen Brown2005-08-036-309/+634
| |\ \
| * | | [ACPI] ACPICA 20050729 from Bob MooreRobert Moore2005-07-3023-362/+426
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implemented support to ignore an attempt to install/load a particular ACPI table more than once. Apparently there exists BIOS code that repeatedly attempts to load the same SSDT upon certain events. Thanks to Venkatesh Pallipadi. Restructured the main interface to the AML parser in order to correctly handle all exceptional conditions. This will prevent leakage of the OwnerId resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some machines. Thanks to Alexey Starikovskiy. Support for "module level code" has been disabled in this version due to a number of issues that have appeared on various machines. The support can be enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem compilation. When the issues are fully resolved, the code will be enabled by default again. Modified the internal functions for debug print support to define the FunctionName parameter as a (const char *) for compatibility with compiler built-in macros such as __FUNCTION__, etc. Linted the entire ACPICA source tree for both 32-bit and 64-bit. Signed-off-by: Robert Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
| * | | Merge ../to-linusLen Brown2005-07-294-241/+888
| |\ \ \
| * | | | [ACPI] disable module level AML code (for now)Len Brown2005-07-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is important that we support module level code -- BIOS's implement it. But this implementation needs more testing. Signed-off-by: Len Brown <len.brown@intel.com>
| * | | | [ACPI] comment out prototypes for new unused debug routinesLen Brown2005-07-291-2/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Len Brown <len.brown@intel.com>
| * | | | ACPICA 20050708 from Bob Moore <robert.moore@intel.com>Robert Moore2005-07-1422-333/+377
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The use of the CPU stack in the debug version of the subsystem has been considerably reduced. Previously, a debug structure was declared in every function that used the debug macros. This structure has been removed in favor of declaring the individual elements as parameters to the debug functions. This reduces the cumulative stack use during nested execution of ACPI function calls at the cost of a small increase in the code size of the debug version of the subsystem. With assistance from Alexey Starikovskiy and Len Brown. Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent headers to define a macro that will return the current function name at runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the compiler-dependent header, the function name is saved on the CPU stack (one pointer per function.) This mechanism is used because apparently there exists no standard ANSI-C defined macro that that returns the function name. Alexey Starikovskiy redesigned and reimplemented the "Owner ID" mechanism used to track namespace objects created/deleted by ACPI tables and control method execution. A bitmap is now used to allocate and free the IDs, thus solving the wraparound problem present in the previous implementation. The size of the namespace node descriptor was reduced by 2 bytes as a result. Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield flag definitions within the headers for the predefined ACPI tables. These have been replaced by UINT8_BIT in order to increase the code portability of the subsystem. If the use of UINT8 remains a problem, we may be forced to eliminate bitfields entirely because of a lack of portability. Alexey Starikovksiy enhanced the performance of acpi_ut_update_object_reference. This is a frequently used function and this improvement increases the performance of the entire subsystem. Alexey Starikovskiy fixed several possible memory leaks and the inverse - premature object deletion. Signed-off-by: Len Brown <len.brown@intel.com>
| * | | | [ACPI] revert R40 workaroundDavid Shaohua Li2005-07-141-39/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Should not be necessary... http://bugme.osdl.org/show_bug.cgi?id=1038 Signed-off-by: Len Brown <len.brown@intel.com>
| * | | | ACPICA 20050617-0624 from Bob Moore <robert.moore@intel.com>Robert Moore2005-07-1340-1941/+2469
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ACPICA 20050617: Moved the object cache operations into the OS interface layer (OSL) to allow the host OS to handle these operations if desired (for example, the Linux OSL will invoke the slab allocator). This support is optional; the compile time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache code in the ACPI CA core. The new OSL interfaces are shown below. See utalloc.c for an example implementation, and acpiosxf.h for the exact interface definitions. Thanks to Alexey Starikovskiy. acpi_os_create_cache acpi_os_delete_cache acpi_os_purge_cache acpi_os_acquire_object acpi_os_release_object Modified the interfaces to acpi_os_acquire_lock and acpi_os_release_lock to return and restore a flags parameter. This fits better with many OS lock models. Note: the current execution state (interrupt handler or not) is no longer passed to these interfaces. If necessary, the OSL must determine this state by itself, a simple and fast operation. Thanks to Alexey Starikovskiy. Fixed a problem in the ACPI table handling where a valid XSDT was assumed present if the revision of the RSDP was 2 or greater. According to the ACPI specification, the XSDT is optional in all cases, and the table manager therefore now checks for both an RSDP >=2 and a valid XSDT pointer. Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain only the RSDT. Fixed an interpreter problem with the Mid() operator in the case of an input string where the resulting output string is of zero length. It now correctly returns a valid, null terminated string object instead of a string object with a null pointer. Fixed a problem with the control method argument handling to allow a store to an Arg object that already contains an object of type Device. The Device object is now correctly overwritten. Previously, an error was returned. ACPICA 20050624: Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for the host-defined cache object. This allows the OSL implementation to define and type this object in any manner desired, simplifying the OSL implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for Linux, and should be defined in the OS-specific header file for other operating systems as required. Changed the interface to AcpiOsAcquireObject to directly return the requested object as the function return (instead of ACPI_STATUS.) This change was made for performance reasons, since this is the purpose of the interface in the first place. acpi_os_acquire_object is now similar to the acpi_os_allocate interface. Thanks to Alexey Starikovskiy. Modified the initialization sequence in acpi_initialize_subsystem to call the OSL interface acpi_osl_initialize first, before any local initialization. This change was required because the global initialization now calls OSL interfaces. Restructured the code base to split some files because of size and/or because the code logically belonged in a separate file. New files are listed below. utilities/utcache.c /* Local cache interfaces */ utilities/utmutex.c /* Local mutex support */ utilities/utstate.c /* State object support */ parser/psloop.c /* Main AML parse loop */ Signed-off-by: Len Brown <len.brown@intel.com>
| * | | | ACPICA 20050526 from Bob Moore <robert.moore@intel.com>Robert Moore2005-07-1312-89/+196
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implemented support to execute Type 1 and Type 2 AML opcodes appearing at the module level (not within a control method.) These opcodes are executed exactly once at the time the table is loaded. This type of code was legal up until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in order to provide backwards compatibility with earlier BIOS implementations. This eliminates the "Encountered executable code at module level" warning that was previously generated upon detection of such code. Fixed a problem in the interpreter where an AE_NOT_FOUND exception could inadvertently be generated during the lookup of namespace objects in the second pass parse of ACPI tables and control methods. It appears that this problem could occur during the resolution of forward references to namespace objects. Added the ACPI_MUTEX_DEBUG #ifdef to the acpi_ut_release_mutex function, corresponding to the same the deadlock detection debug code to be compiled out in the normal case, improving mutex performance (and overall subsystem performance) considerably. As suggested by Alexey Starikovskiy. Implemented a handful of miscellaneous fixes for possible memory leaks on error conditions and error handling control paths. These fixes were suggested by FreeBSD and the Coverity Prevent source code analysis tool. Added a check for a null RSDT pointer in acpi_get_firmware_table (tbxfroot.c) to prevent a fault in this error case. Signed-off-by Len Brown <len.brown@intel.com>
OpenPOWER on IntegriCloud