summaryrefslogtreecommitdiffstats
path: root/hw
Commit message (Collapse)AuthorAgeFilesLines
* Make audio violate POSIX lessmalc2008-12-0310-15/+15
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5864 c046a42c-6fe2-441c-8c8c-71466251a162
* More consistent PAGE_xxx defines, avoid conflicting with system PAGE_xxxblueswir12008-12-031-7/+7
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5863 c046a42c-6fe2-441c-8c8c-71466251a162
* IBM PowerPC 4xx 32-bit PCI controller emulationaurel322008-12-022-0/+427
| | | | | | | | | | This PCI controller can be found on a number of 4xx SoCs, including the 440EP. Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com> Acked-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5862 c046a42c-6fe2-441c-8c8c-71466251a162
* Remove address masking after some rearrangingblueswir12008-12-022-99/+142
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5854 c046a42c-6fe2-441c-8c8c-71466251a162
* Remove address maskingblueswir12008-12-0211-43/+45
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5853 c046a42c-6fe2-441c-8c8c-71466251a162
* Change MMIO callbacks to use offsets, not absolute addresses.pbrook2008-12-0180-846/+380
| | | | | | | Signed-off-by: Paul Brook <paul@codesourcery.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5849 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix ICCS command (Herve Poussineau)blueswir12008-11-301-0/+2
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5818 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix 'enable selection' command (esp_4_ensel.diff)blueswir12008-11-291-0/+1
| | | | | | | | | Indicate success after 'enable selection' command Signed-off-by: Herve Poussineau <hpoussin@reactos.org> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5814 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix command len detection (esp_3_cmdlen.diff)blueswir12008-11-291-4/+4
| | | | | | | | | When command is not DMA, TCMID and TCLO registers are not filled. Use command buffer len instead Signed-off-by: Herve Poussineau <hpoussin@reactos.org> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5813 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix configuration 2 register (esp_2_cfg2.diff):blueswir12008-11-291-6/+1
| | | | | | | | | | According to http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/NCR53C9X.txt, "Any bit pattern written to this register may be read back and should be identical" Signed-off-by: Herve Poussineau <hpoussin@reactos.org> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5812 c046a42c-6fe2-441c-8c8c-71466251a162
* Misc fixes (Herve Poussineau)blueswir12008-11-291-14/+21
| | | | | | | | | | | - Fix internal fifo size (16 bytes), according to http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/NCR53C9X.txt - Fix values of STAT_MI and STAT_MO - Give a scsi ID to adapter, and prevent this ID to be used by devices - Prevent fifo overrun in esp_mem_writeb - Add a ESP_ERROR macro, and use it where appropriate git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5811 c046a42c-6fe2-441c-8c8c-71466251a162
* Don't rely on the fact that MAX_FD is 2 (Herve Poussineau)blueswir12008-11-291-1/+1
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5810 c046a42c-6fe2-441c-8c8c-71466251a162
* Abstract out geometry detection code from IDE for reusealiguori2008-11-251-106/+6
| | | | | | | | | | | Virtio will want to use the geometry detection code. It doesn't belong in ide.c anyway. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5797 c046a42c-6fe2-441c-8c8c-71466251a162
* vga optimization (Glauber Costa)aliguori2008-11-243-0/+121
| | | | | | | | | | | | | | | | | | | | | Hypervisors like KVM perform badly while doing mmio on a loop, because it'll generate an exit on each access. This is the case with VGA, which results in very bad performance. In this patch, we map the linear frame buffer as RAM, make sure it has dirty region tracking enabled, and then just let the region to be written. Cleanups suggestions by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Glauber Costa <glommer@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5793 c046a42c-6fe2-441c-8c8c-71466251a162
* move vga_io_address to VGA State (Glauber Costa)aliguori2008-11-242-3/+4
| | | | | | | | | | | It'll be reused later by the vga optimization. Signed-off-by: Glauber Costa <glommer@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5791 c046a42c-6fe2-441c-8c8c-71466251a162
* better type checking for vga (Glauber Costa)aliguori2008-11-244-7/+7
| | | | | | | | | | | | | unsigned long is too bad of a type. Use ram_addr_t instead. aligurori: fixed a compile warning in this patch Signed-off-by: Glauber Costa <glommer@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5790 c046a42c-6fe2-441c-8c8c-71466251a162
* Introduce accessors for DisplayState (Stefano Stabellini)aliguori2008-11-2416-105/+105
| | | | | | | | | | | | | | | | | Introducing some accessors: ds_get_linesize ds_get_bits_per_pixel ds_get_width ds_get_height ds_get_data Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5789 c046a42c-6fe2-441c-8c8c-71466251a162
* SH4: Switch serial emulation to qemu_irqaurel322008-11-214-33/+33
| | | | | | | | | | | | | | | | | This patches makes SH serial emulation use qemu_irq in its interface. * hw/sh.h (sh_serial_init): Take qemu_irq, not intc_source. * hw/sh7750.c (sh7750_init): Adjust. * hw/sh_intc.c (sh_intc_set_irq): Don't assert or deassert irq more than once. * hw/sh_serial.c (sh_serial_state): Use qemu_irq, not intc_source. (sh_serial_clear_fifo, sh_serial_ioport_write) (sh_serial_receive_byte): Adjust. (sh_serial_init): Take qemu_irq, not intc_source. (Vladimir Prus) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5769 c046a42c-6fe2-441c-8c8c-71466251a162
* SH4: Use qemu_irq in timer emulation.aurel322008-11-215-14/+27
| | | | | | | | | | | | | | | * hw/sh.h (tmu012_init): Accept qemu_irq, not intc_source. * hw/sh7750.c (sh7750_init): Pass qemu_irq to tmu012_init. * hw/sh_intc.c (sh_intc_set_irq): New. (sh_intc_init): Allocate irqs. * hw/sh_intc.h (struct intc_desc): New field irqs. * hw/sh_timer.c (sh_timer_state): Use qemu_irq, not intc_source. (sh_timer_update): Use qemu_set_irq, not sh_intc_toggle_source. (sh_timer_init, tmu012_init): Adjust. (Vladimir Prus) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5768 c046a42c-6fe2-441c-8c8c-71466251a162
* e1000 VLAN offload emulation (Alex Williamson)aliguori2008-11-211-7/+73
| | | | | | | | | | | | | | | | | | | | We're currently ignoring the e1000 VLAN tagging, stripping and filtering features in the e1000 emulation. This patch adds backing for the relevant registers and provides a software implementation of the acceleration, such that a guest can make use of VLANs. This is mostly (only?) useful for a guest on a bridge (not user mode networking). The only caveat beyond that is that you need to make sure the host NIC isn't doing it's own tagging, stripping, or filtering. This generally means the host NIC on the bridge should not be part of a VLAN. Signed-off-by: Alex Williamson <alex.williamson@hp.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5766 c046a42c-6fe2-441c-8c8c-71466251a162
* uImage: rename load_uboot() to load_uimage() (Hollis Blanchard)aliguori2008-11-204-5/+5
| | | | | | | | | | | u-boot is a firmware. uImage is an executable file format. Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5764 c046a42c-6fe2-441c-8c8c-71466251a162
* uImage: return base load address (Hollis Blanchard)aliguori2008-11-204-4/+5
| | | | | | | | | | | | | | | | Return the base address at which the image was loaded so that callers may keep track of currently occupied guest memory. This will be required by the PPC 440 embedded code to avoid hard coding a device model/initrd location. Other users of this function could make use of this parameter to avoid hard coding these locations in the future too. Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5763 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix typo when using TARGET_FMT_plx and LSI_DEBUG (Ryan Harper)aliguori2008-11-201-1/+1
| | | | | | | | | | | | TARGET_FMT_plx includes a % for you. This fixes the following warning when compiling with LSI_DEBUG enabled. Signed-off-by: Ryan Harper <ryanh@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5760 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix media detection on emulated CDROM (Gary Grebus)aliguori2008-11-191-1/+3
| | | | | | | | | | | | | | | | | | | | | | This patch tweaks the ATAPI CDROM emulation to fix an annoyance seen when running a variety of Linux guests: the desktop GUI shows a CDROM device as present, but is unable to automount the media and display its contents. The patch adds the PLAY_AUDIO capability bit to the data returned by MODE_SENSE commands. That convinces the guest kernel to determine what kind of media is present. Arguably Linux could be smarter about this, but it's my guess there are few (if any) hardware CDROM drives that don't set the bit, and there are a large number of Linux distros that exhibit this problem. Signed-off-by: Gary Grebus <ggrebus@virtualiron.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5752 c046a42c-6fe2-441c-8c8c-71466251a162
* Add 40-bit DMA support to LSI scsi emulation (Ryan Harper)aliguori2008-11-181-4/+32
| | | | | | | | | | | | This patch fixes Linux machines configured with > 4G of ram and using a SCSI device. Signed-off-by: Ryan Harper <ryanh@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5750 c046a42c-6fe2-441c-8c8c-71466251a162
* ETRAX-FS: Don't schedule DMA processing without active channels.edgar_igl2008-11-131-14/+27
| | | | | | | | | | Avoid scheduling DMA processing when all channels are stopped or at end-of-list. Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5720 c046a42c-6fe2-441c-8c8c-71466251a162
* ETRAX-FS: Fix a segfault if pflash drive not found.edgar_igl2008-11-131-1/+1
| | | | | | | | | | | drive_get_index() returns -1 if a drive isn't found; don't use -1 to index drives_table. Signed-off-by: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5719 c046a42c-6fe2-441c-8c8c-71466251a162
* Don't use "hz" in identifiers to make AIX happy.balrog2008-11-125-15/+15
| | | | | | | | malc found AIX headers leak "hz" and so it can't be used there. Change the occurences in hw/. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5709 c046a42c-6fe2-441c-8c8c-71466251a162
* Implement LSI53C895A quirks exposed by OpenServer (Justin Chevrier).balrog2008-11-121-2/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After going through the debug log and scratching my head for quite some time. I found the following: The problem was with this block move: lsi_scsi: SCRIPTS dsp=0fae8e50 opcode 01000028 arg 00f63c40 lsi_scsi: DMA addr=0x00f63c40 len=36 The number of bytes to be transferred (len) should be 40 which corresponds to the block transfer of length 0x28 (from opcode 01000028). Instead we have a length of 36 (0x24). The code responsible for this is (in 'lsi_do_dma'): if (count > s->current_dma_len) count = s->current_dma_len; Basically we're overwriting the length 40 with the value 36 which I think we just left over in that variable from an earlier transfer. In my patch below I initialize s->current_dma_len to s->dbc before we begin the DMA transfer during Data In phase. The attached patch gets Openserver 5.0.5 past the hardware detection (and it lists the hard drive to boot, woohoo). It appears to stop a little while later (doesn't seem SCSI related), but it's been so long since I've booted Openserver I'm not sure what's supposted to happen after the HW detection using the boot/root disks. Props go to Craig Ringer for the initial post and the code that he posted some of which is in this patch. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5706 c046a42c-6fe2-441c-8c8c-71466251a162
* fix some variable initizalization issues (Stefano Stabellini)aliguori2008-11-121-1/+1
| | | | | | | | | | | this patch fixes two variable initialization issues. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5705 c046a42c-6fe2-441c-8c8c-71466251a162
* windows cdrom cache flush (Stefano Stabellini)aliguori2008-11-111-1/+27
| | | | | | | | | | | | | | | | | Windows only flushes its cache of a CDROM if it gets a SENSE_UNIT_ATTENTION CHECK_CONDITION response to a REQUEST_SENSE command. Make sure it does so after we change the CD. Tab damage fixed by Anthony Liguori Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Steven Smith <steven.smith@citrix.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5698 c046a42c-6fe2-441c-8c8c-71466251a162
* Reintroduce migrate-to-exec: support (Charles Duffy)aliguori2008-11-111-0/+2
| | | | | | | | | | | | | | | | | | | KVM's live migration support included support for exec: URLs, allowing system state to be written or received via an arbitrary popen()ed subprocess. This provides a convenient way to pipe state through a compression algorithm or an arbitrary network transport on its way to its destination, and a convenient way to write state to disk; libvirt's qemu driver currently uses migration to exec: targets for this latter purpose. This version of the patch refactors now-common code from migrate-tcp.c into migrate.c. Signed-off-by: Charles Duffy <Charles_Duffy@messageone.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5694 c046a42c-6fe2-441c-8c8c-71466251a162
* target-alpha: fix syscall error checkaurel322008-11-111-1/+1
| | | | | | | | (re-add commit 5689) Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5692 c046a42c-6fe2-441c-8c8c-71466251a162
* Revert commits 5685 to 5688 committed by mistakeaurel322008-11-111-1/+1
| | | | | | Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5691 c046a42c-6fe2-441c-8c8c-71466251a162
* target-alpha: fix syscall error checkaurel322008-11-111-1/+1
| | | | | | Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5689 c046a42c-6fe2-441c-8c8c-71466251a162
* Document bluetooth support in qemu-doc.balrog2008-11-091-0/+2
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5654 c046a42c-6fe2-441c-8c8c-71466251a162
* Add qemu_strndup: qemu_strdup with length limit.balrog2008-11-091-4/+4
| | | | | | | | Also optimise qemu_strdup by using memcpy - using pstrcpy is usually suboptimal. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5653 c046a42c-6fe2-441c-8c8c-71466251a162
* Revert r5532, r5536 and a piece of r5531.balrog2008-11-081-5/+5
| | | | | | | | The use of strncat and strndup was correct, pstrcpy and pstrdup wasn't. I'll try to restore building on non-gnu OSes in a later commit. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5651 c046a42c-6fe2-441c-8c8c-71466251a162
* Use an option rom instead of boot sector for -kernelaliguori2008-11-081-22/+50
| | | | | | | | | | | | | | | Generate an option rom instead of using a hijacked boot sector for kernel booting. This just requires adding a small option ROM header and a few more instructions to the boot sector to take over the int19 vector and run our boot code. A disk is no longer needed when using -kernel on x86. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5650 c046a42c-6fe2-441c-8c8c-71466251a162
* Use the right format string to printf sector num with DEBUG_IDE.balrog2008-11-071-2/+2
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5647 c046a42c-6fe2-441c-8c8c-71466251a162
* SM501 emulation for R2D-SH4blueswir12008-11-054-2/+1246
| | | | | | | | | | | | This patch adds minimum emulation of SM501 multifunction device, whose main feature is 2D graphics. It is one of the peripheral of R2D, the SH4 evaluation board. We can see TUX printed on the QEMU console. Signed-off-by: Shin-ichiro KAWASAKI <kawasaki@juno.dti.ne.jp> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5632 c046a42c-6fe2-441c-8c8c-71466251a162
* Use qemu_ram_allocblueswir12008-11-052-20/+31
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5630 c046a42c-6fe2-441c-8c8c-71466251a162
* Add KVM support to QEMUaliguori2008-11-051-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds very basic KVM support. KVM is a kernel module for Linux that allows userspace programs to make use of hardware virtualization support. It current supports x86 hardware virtualization using Intel VT-x or AMD-V. It also supports IA64 VT-i, PPC 440, and S390. This patch only implements the bare minimum support to get a guest booting. It has very little impact the rest of QEMU and attempts to integrate nicely with the rest of QEMU. Even though this implementation is basic, it is significantly faster than TCG. Booting and shutting down a Linux guest: w/TCG: 1:32.36 elapsed 84% CPU w/KVM: 0:31.14 elapsed 59% CPU Right now, KVM is disabled by default and must be explicitly enabled with -enable-kvm. We can enable it by default later when we have had better testing. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5627 c046a42c-6fe2-441c-8c8c-71466251a162
* ETRAX-FS: Make etraxfs_dmac_run local.edgar_igl2008-11-042-2/+1
| | | | | | | Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5624 c046a42c-6fe2-441c-8c8c-71466251a162
* ETRAX-FS: Fix DMA warnings.edgar_igl2008-11-041-8/+11
| | | | | | | Signed-off-by: Jan Kiszka <jan.kiszka@web.de> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5621 c046a42c-6fe2-441c-8c8c-71466251a162
* tc6393xb: non-accelerated FB support (Dmitry Baryshkov).balrog2008-11-044-8/+207
| | | | | | | | Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com> Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5617 c046a42c-6fe2-441c-8c8c-71466251a162
* Tosa: dummy lcd support (Dmitry Baryshkov).balrog2008-11-041-0/+84
| | | | | | | | Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com> Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5616 c046a42c-6fe2-441c-8c8c-71466251a162
* scoop: GPRR reports the state of GPIO lines (Dmitry Baryshkov).balrog2008-11-041-9/+6
| | | | | | | | Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com> Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5615 c046a42c-6fe2-441c-8c8c-71466251a162
* Tosa: disable pxafb as it's not used on tosa (Dmitry Baryshkov).balrog2008-11-041-1/+1
| | | | | | | | Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com> Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5614 c046a42c-6fe2-441c-8c8c-71466251a162
* Tosa: provide correct IRQ to tc6393xb init (Dmitry Baryshkov).balrog2008-11-041-1/+2
| | | | | | | | Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com> Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5613 c046a42c-6fe2-441c-8c8c-71466251a162
OpenPOWER on IntegriCloud