summaryrefslogtreecommitdiffstats
path: root/drivers
Commit message (Collapse)AuthorAgeFilesLines
* firewire: Clean up response handling.Kristian Høgsberg2007-03-091-27/+27
| | | | | Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: Loop requests to the host controller back into the stack.Kristian Høgsberg2007-03-092-13/+25
| | | | | Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: Use struct fw_packet for incoming packets too in controller interface.Kristian Høgsberg2007-03-093-81/+92
| | | | | Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: fix compilation with gcc 3.4Stefan Richter2007-03-091-2/+3
| | | | | | | | drivers/firewire/fw-topology.c: In function `report_found_node': drivers/firewire/fw-topology.c:345: error: `typeof' applied to a bit-field drivers/firewire/fw-topology.c:345: error: `typeof' applied to a bit-field Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: Implement gap count optimization.Kristian Høgsberg2007-03-095-31/+120
| | | | | Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: fw-sbp2: set command set related device flagsStefan Richter2007-03-091-0/+17
| | | | | | | | | | Copied from sbp2: - enable spin-up by START STOP UNIT for all devices - enable INQUIRY (36) workaround on demand - prefer READ/ WRITE (10) over (6) for all devices - prefer MODE SENSE (10) for MMC devices Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: consistent usage of node_idStefan Richter2007-03-096-20/+23
| | | | | | | | | | | | | | Definitions as per IEEE 1212 and IEEE 1394: Node ID: Concatenation of bus ID and local ID. 16 bits long. Bus ID: Identifies a particular bus within a group of buses interconnected by bus bridges. Local ID: Identifies a particular node on a bus. PHY ID: Local ID of IEEE 1394 nodes. 6 bits long. Never ever use a variable called node_id for anything else than a node ID. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: fw-ohci: remove unnecessary macroStefan Richter2007-03-091-3/+0
| | | | | | | Cleans up after patch "Add PCI class ID for firewire OHCI controllers". Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com>
* firewire: fw-sbp2: remove unused macroStefan Richter2007-03-091-3/+2
| | | | | Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com>
* firewire: fw-sbp2: remove bogus "emulated" host flagStefan Richter2007-03-091-1/+0
| | | | | | | There is no emulation going on here too. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com>
* firewire: fix failure path in ohci_enable_phys_dmaStefan Richter2007-03-091-3/+1
| | | | | | | "goto out" happens with the lock taken. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com>
* firewire: comma after last enum item or initializerStefan Richter2007-03-098-16/+16
| | | | | Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com>
* firewire: whitespace adjustmentsStefan Richter2007-03-0911-169/+144
| | | | | Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com>
* firewire: cleanupsAdrian Bunk2007-03-095-10/+10
| | | | | | | | | This patch contains the following cleanups: - "extern inline" -> "static inline" - fw-topology.c: make struct fw_node_create static Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: mark some structs constStefan Richter2007-03-098-23/+23
| | | | | | | | | | | | Instances of struct file_operations and struct fw_card_driver can be qualified as "const". Ditto with struct fw_descriptor.data, struct fw_device_id, and predefined instances of struct fw_address_region, at least in the current implementation. Data qualified as const is placed into the .rodata section which won't be mixed with dirty data. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: additional help in KconfigStefan Richter2007-03-091-6/+19
| | | | Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: put old and new stack into same Kconfig submenuStefan Richter2007-03-093-6/+3
| | | | | | | | | | | | | | | | | | | | Screenshot from "make menuconfig": ... ?????????????????????? IEEE 1394 (FireWire) support ??????????????????????? ? Arrow keys navigate the menu. <Enter> selects submenus --->. ? ... ? ??????????????????????????????????????????????????????????????????????? ? ? ? <M> IEEE 1394 (FireWire) support (JUJU alternative stack, experim? ? ? ? <M> Support for OHCI firewire host controllers ? ? ? ? <M> Support for storage devices (SBP-2 protocol driver) ? ? ? ? <M> IEEE 1394 (FireWire) support ? ? ? ? --- Subsystem Options ? ? ? ? [ ] Excessive debugging output ? ? ... ? <Select> < Exit > < Help > ? ??????????????????????????????????????????????????????????????????????????? Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: consistent ifndef blocks in header filesStefan Richter2007-03-094-6/+6
| | | | | | | Replace __fw_core_h by __fw_transaction_h to match the file name. Add comments to the final #endif in header files. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: typo in KconfigStefan Richter2007-03-091-6/+6
| | | | | | Correct a typo. Also spell FireWire consistently. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: mark fw-core as experimentalStefan Richter2007-03-091-1/+5
| | | | | | The new stack is not yet stable WRT functionality and APIs. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: build fix 3Stefan Richter2007-03-091-0/+1
| | | | | | | | | drivers/firewire/fw-sbp2.c: At top level: drivers/firewire/fw-sbp2.c:1060: error: storage size of '__mod_ieee1394_device_table' isn't known (error pointed out by akpm) Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: build fix 2Andrew Morton2007-03-091-0/+1
| | | | | | | | | | | | | | ia64: drivers/firewire/fw-sbp2.c: In function `sbp2_command_orb_map_scatterlist': drivers/firewire/fw-sbp2.c:826: warning: implicit declaration of function `sg_dma_len' drivers/firewire/fw-sbp2.c:828: warning: implicit declaration of function `sg_dma_address' drivers/firewire/fw-sbp2.c:837: error: invalid use of undefined type `struct scatterlist' drivers/firewire/fw-sbp2.c:838: error: invalid use of undefined type `struct scatterlist' Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: build fixAndrew Morton2007-03-091-0/+2
| | | | | | | | | | | | | | | | | | | alpha: drivers/firewire/fw-ohci.c: In function 'ar_context_tasklet': drivers/firewire/fw-ohci.c:266: warning: implicit declaration of function 'dma_sync_single_for_device' drivers/firewire/fw-ohci.c:267: error: 'DMA_TO_DEVICE' undeclared (first use in this function) drivers/firewire/fw-ohci.c:267: error: (Each undeclared identifier is reported only once drivers/firewire/fw-ohci.c:267: error: for each function it appears in.) drivers/firewire/fw-ohci.c: In function 'ar_context_init': drivers/firewire/fw-ohci.c:282: warning: implicit declaration of function 'dma_map_single' drivers/firewire/fw-ohci.c:283: error: 'DMA_TO_DEVICE' undeclared (first use in this function) drivers/firewire/fw-ohci.c:293: error: 'DMA_FROM_DEVICE' undeclared (first use in this function) etc. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: printk warning fixAndrew Morton2007-03-091-2/+2
| | | | | | | | | drivers/firewire/fw-ohci.c: In function 'ar_context_init': drivers/firewire/fw-ohci.c:288: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'dma_addr_t' Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: Add SBP-2 protocol driver for storage devices.Kristian Høgsberg2007-03-093-0/+1086
| | | | | Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: Add driver for OHCI firewire host controllers.Kristian Høgsberg2007-03-094-0/+1558
| | | | | Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: Add device probing and sysfs integration.Kristian Høgsberg2007-03-0910-9/+1573
| | | | | Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* firewire: Add core firewire stack.Kristian Høgsberg2007-03-0910-0/+2235
| | | | | Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
* Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6Linus Torvalds2007-03-062-6/+7
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [DCCP]: Set RTO for newly created child socket [DCCP]: Correctly split CCID half connections [NET]: Fix compat_sock_common_getsockopt typo. [NET]: Revert incorrect accept queue backlog changes. [INET]: twcal_jiffie should be unsigned long, not int [GIANFAR]: Fix compile error in latest git [PPPOE]: Use ifindex instead of device pointer in key lookups. [NETFILTER]: ip6_route_me_harder should take into account mark [NETFILTER]: nfnetlink_log: fix reference counting [NETFILTER]: nfnetlink_log: fix module reference counting [NETFILTER]: nfnetlink_log: fix possible NULL pointer dereference [NETFILTER]: nfnetlink_log: fix NULL pointer dereference [NETFILTER]: nfnetlink_log: fix use after free [NETFILTER]: nfnetlink_log: fix reference leak [NETFILTER]: tcp conntrack: accept SYN|URG as valid [NETFILTER]: nf_conntrack/nf_nat: fix incorrect config ifdefs [NETFILTER]: conntrack: fix {nf,ip}_ct_iterate_cleanup endless loops
| * [GIANFAR]: Fix compile error in latest gitJan Altenberg2007-03-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I recognized a compile error in latest git: /here/workdir/git/drivers/net/gianfar.c: In function `gfar_vlan_rx_kill_vid': /here/workdir/git/drivers/net/gianfar.c:1135: error: structure has no member named `vgrp' This error was introduced in commit: commit 6d04e3b04b6ab569cabeb5ca28ad1be11777e895 ... [VLAN]: Avoid a 4-order allocation. Signed-off-by: Jan Altenberg <jan@linutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
| * [PPPOE]: Use ifindex instead of device pointer in key lookups.Florian Zumbiehl2007-03-051-5/+6
| | | | | | | | | | | | | | Otherwise we can potentially try to dereference a NULL device pointer in some cases. Signed-off-by: David S. Miller <davem@davemloft.net>
* | Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6Linus Torvalds2007-03-063-63/+60
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: [S390] cio: Call cancel_halt_clear even when actl == 0. [S390] cio: Use path verification to check for path state. [S390] cio: Fix locking when calling notify function. [S390] Fixed handling of access register mode faults. [S390] dasd: Use default recovery for SNSS requests [S390] check_bugs() should be inline. [S390] tape: Compression overwrites crypto setting [S390] nss: disable kexec. [S390] reipl: move dump_prefix_page out of text section. [S390] smp: disable preemption in smp_call_function/smp_call_function_on [S390] kprobes breaks BUG_ON
| * | [S390] cio: Call cancel_halt_clear even when actl == 0.Cornelia Huck2007-03-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | The subchannel may just be status pending, even with actl == 0. We must go through the cancel_halt_clear procedure to put the subchannel into a defined state. Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
| * | [S390] cio: Use path verification to check for path state.Cornelia Huck2007-03-051-40/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | After I/O has been killed by the common I/O layer, trigger path verification which will queue cio_device_nopath_notify itself if it finds a device to be without paths. Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
| * | [S390] cio: Fix locking when calling notify function.Cornelia Huck2007-03-051-20/+47
| | | | | | | | | | | | | | | | | | | | | | | | Make sure we hold the device lock when we modify the ccw device structure but always call the notify function without the lock held. Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
| * | [S390] dasd: Use default recovery for SNSS requestsStefan Weinhuber2007-03-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For extended error reporting we sometimes have to start an Sense Subsystem Status request (SNSS). When this request needs to be recovered for some reason, the recovery request will fail with 'command reject'. Our usual recovery procedure will retry the failed request by creating a new request and chaining the failed request from that one. SNSS requests, though, must not be chained from anything, so the recovery request will fail permanently. Use the default recovery for SNSS request, which will just restart the original request without further ado. Signed-off-by: Stefan Weinhuber <wein@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
| * | [S390] tape: Compression overwrites crypto settingMichael Holzheu2007-03-051-1/+4
| |/ | | | | | | | | | | | | | | | | | | After switching compression on/off with the mt command, tape encryption is no longer working. The reason for that is, that the modeset_byte is set to the compression value instead of using bitwise and/or bit operations to enable/disable the corresponding bit. Signed-off-by: Michael Holzheu <holzheu@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
* | Merge branch 'upstream-linus' of ↵Linus Torvalds2007-03-063-9/+16
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev: pata_pdc202xx_old: fix data corruption and other problems pata_legacy: fix io/irq mismatch ahci: RAID mode SATA patch for Intel ICH9M
| * | pata_pdc202xx_old: fix data corruption and other problemsBartlomiej Zolnierkiewicz2007-03-061-8/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix wrong "port" calculations in pdc202xx_{configure_piomode,set_dmamode}() They were broken for all configurations except one (master device on primary channel, no other devices) and as a result device settings + PIO/DMA timings were being programmed into the wrong PCI registers. This could result in a large variety of problems including data corruption, hangs etc. (depending on devices used and your luck :-). ap->port_no ap->devno used PCI registers correct PCI registers 0 0 0x60-0x62 0x60-0x62 0 1 0x62-0x64 0x64-0x66 1 0 0x64-0x66 0x68-0x6a 1 1 0x66-0x68 0x6c-0x6e Also forward port recent fixes from drivers/ide pdc202xx_old driver: * fix XFER_MW_DMA0 timings (they were overclocked, use the official ones) * fix bitmasks for clearing bits of register B: - when programming DMA mode bit 0x10 of register B was cleared which resulted in overclocked PIO timing setting (iff PIO0 was used) - when programming PIO mode bits 0x18 weren't cleared so suboptimal timings were used for PIO1-4 if PIO0 was previously set (bit 0x10) and for PIO0/3/4 if PIO1/2 was previously set (bit 0x08) and finally bump driver version. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
| * | pata_legacy: fix io/irq mismatchMikael Pettersson2007-03-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pata_legacy fails to detect the disk on my old ISA/VLB 486: it starts to probe io=0x1f0 ctr=0x3f6 irq=15, complains loudly about IDENTIFYs timing out, and finally fails. (Sorry I couldn't capture the kernel's boot messages.) It turns out that the driver's mapping from io to irq in legacy_irq[] is wrong: index 0 for io=0x1f0 has irq=15 but should have irq=14, and index 1 for io=0x170 has irq=14 but should have irq=15. This is confirmed by a comparison with include/asm-i386/ide.h:ide_default_irq(). This patch swaps the first two elements in legacy_irq[], which makes pata_legacy work on my 486. Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> Signed-off-by: Jeff Garzik <jeff@garzik.org>
| * | ahci: RAID mode SATA patch for Intel ICH9MJason Gaston2007-03-061-0/+1
| |/ | | | | | | | | | | | | This patch adds the Intel ICH9M RAID controller DID for SATA support. Signed-off-by: Jason Gaston <jason.d.gaston@intel.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | [PATCH] m68knommu: fix work queues in mcfserial.c driverGreg Ungerer2007-03-061-19/+14
| | | | | | | | | | | | | | Fix work queue code to support new model. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | [PATCH] m68knommu: set GPIO lines for serial ports on 5282 in mcfserial.cGreg Ungerer2007-03-061-2/+9
| | | | | | | | | | | | | | | | | | For the Freescale M5282 ColdFire, Port UA Pin Assignment Register should set to UART mode. Patch submitted by David Wu <davidwu@arcturusnetworks.com>. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | [PATCH] minor updat to tlclk Kconfig entryMark Gross2007-03-061-7/+8
| | | | | | | | | | | | | | | | The tlclk driver is going on the MPCBL005 so I need to make the Kconfig more more generic. Just some text changes. Signed-off-by: Mark Gross <mark.gross@intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | [PATCH] Fix buffer overflow in Omnikey CardMan 4040 driver (CVE-2007-0005)Marcel Holtmann2007-03-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on a patch from Don Howard <dhoward@redhat.com> When calling write() with a buffer larger than 512 bytes, the driver's write buffer overflows, allowing to overwrite the EIP and execute arbitrary code with kernel privileges. In read(), there exists a similar problem, but coming from the device. A malicous or buggy device sending more than 512 bytes can overflow of the driver's read buffer, with the same effects as above. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Harald Welte <laforge@gnumonks.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | Merge branch 'for-linus' of ↵Linus Torvalds2007-03-061-11/+10
|\ \ | | | | | | | | | | | | | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/jikos/hid * 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jikos/hid: HID blacklisting of all Code Mercenaries IOWarrior devices
| * | HID blacklisting of all Code Mercenaries IOWarrior devicesRobert Marquardt2007-03-021-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | Put all Code Mercenaries (VID 0x07c0) IOWarriors (PIDs 0x1500 to 0x15ff) on the HID blacklist. The range of PIDs has been reserved for IOWarriors. Only 5 PIDs are really used yet. Signed-off-by: Robert Marquardt <marquardt@codemercs.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | | Merge branch 'for-linus' of ↵Linus Torvalds2007-03-062-51/+71
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc: sdhci: release irq during suspend sdhci: make isr tolerant of read errors mmc: require explicit support for high-speed ncpfs: make sure server connection survives a kill
| * | | sdhci: release irq during suspendPierre Ossman2007-03-061-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Release the device's irq during sleep, as all well-behaved drivers should. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * | | sdhci: make isr tolerant of read errorsMark Lord2007-03-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The interrupt is shared with another device, which resumes earlier than the sdhci controller, and generates an interrupt. The sdhci interrupt handler runs, sees 0xffffffff in its own device's interrupt status, and tries to handle it.. The reason for the 0xffffffff is that the device is still suspended, and *all* regs are reading back 0xffffffff. Signed-off-by: Mark Lord <mlord@pobox.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
OpenPOWER on IntegriCloud