x86: prepare op_helper.c for splitting
Fix coding style and a few typos.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
x86: avoid AREG0 for exceptions
Add an explicit CPUX86State parameter instead of relying on AREG0.
Merge raise_exception_env() to raise_exception(), likewise withraise_exception_err_env() and raise_exception_err().
Introduce cpu_svm_check_intercept_param() and cpu_vmexit()...
x86: split off exception handlers
Move exception handlers from op_helper.c to excp_helper.c.
x86: avoid an extern declaration
After the previous patch, we can use the properdeclaration in a common header file.
iommu: Allow PCI to use IOMMU infrastructure
This patch adds some hooks to let PCI devices and busses use the new IOMMUinfrastructure. When IOMMU support is enabled, each PCI device nowcontains a DMAContext * which is used by the pci_dma_*() wrapper functions....
pseries: Implement IOMMU and DMA for PAPR PCI devices
Currently the pseries machine emulation does not support DMA for emulatedPCI devices, because the PAPR spec always requires a (guest visible,paravirtualized) IOMMU which was not implemented. Now that we have...
Add a memory barrier to DMA functions
The emulated devices can run simultaneously with the guest, sowe need to be careful with ordering of load and stores done bythem to the guest system memory, which need to be observed inthe right order by the guest operating system....
Better support for dma_addr_t variables
A while back, we introduced the dma_addr_t type, which is supposed tobe used for bus visible memory addresses. At present, this is analias for target_phys_addr_t, but this will change when we eventuallyadd support for guest visible IOMMUs....
iommu: Add universal DMA helper functions
Not that long ago, every device implementation using DMA directlyaccessed guest memory using cpu_physical_memory_*(). This meant thatadding support for a guest visible IOMMU would require changing everyone of these devices to go through IOMMU translation....
usb-ohci: Use universal DMA helper functions
The OHCI device emulation can provide both PCI and SysBus OHCIimplementations. Because of this, it was not previously converted touse the PCI DMA helper functions.
This patch converts it to use the new universal DMA helper functions....
iommu: Make sglists and dma_bdrv helpers use new universal DMA helpers
dma-helpers.c contains a number of helper functions for doingscatter/gather DMA, and various block device related DMA. Currently,these directly access guest memory using cpu_physical_memory_*(),...
ide/ahci: Use universal DMA helper functions
The AHCI device can provide both PCI and SysBus AHCI deviceemulations. For this reason, it wasn't previously converted to usethe pci_dma_*() helper functions. Now that we have universal DMAhelper functions, this converts AHCI to use them....
usb: Convert usb_packet_{map, unmap} to universal DMA helpers
The USB UHCI and EHCI drivers were converted some time ago to use thepci_dma_*() helper functions. However, this conversion was not completebecause in some places both these drivers do DMA via the usb_packet_map()...
iommu: Introduce IOMMU emulation infrastructure
This patch adds the basic infrastructure necessary to emulate an IOMMUvisible to the guest. The DMAContext structure is extended withinformation and a callback describing the translation, and the various...
pseries: Convert sPAPR TCEs to use generic IOMMU infrastructure
The pseries platform already contains an IOMMU implementation, since it isessential for the platform's paravirtualized VIO devices. This IOMMUsupport is currently built into the implementation of the VIO "bus" and...
Remove support for non-threaded VNC server
QEMU now has a fundamental requirement for pthreads, so thereis no compelling reason to retain support for the non-threadedVNC server. Remove the --{enable,disable}-vnc-thread configurearguments, and all CONFIG_VNC_THREAD conditionals...
rtl8139: validate rx ring before receiving packets
Commit ff71f2e8cacefae99179993204172bc65e4303df prevent the possiblecrash during initialization of linux driver by checking the operatingmode.This seems too strict as:
- the real card could still work in mode other than normal...
qdev: fix use-after-free in the error path of qdev_init_nofail
From Markus:
Before:
$ qemu-system-x86_64 -display none -drive if=ide qemu-system-x86_64: Device needs media, but drive is empty qemu-system-x86_64: Initialization of device ide-hd failed...
qtest: fix infinite loop when QEMU aborts abruptly
Makes "make check" hang:
QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 gtester -k --verbose -m=quick tests/crash-test tests/rtc-test TEST: tests/crash-test... (pid=972) qemu-system-x86_64: Device needs media, but drive is empty...
Makefile.target: Update clean command to clean hw/ directory
Now we create object files in a hierarchy under hw/, so the'clean' target must also be updated to delete those object files.Rather than using a manual list of subdirectories which willeasily drift out of date, we just delete all .o and .d files...
configure: Assure existence of linux-headers/ build directory
Commit ec5b06d (configure: ensure directory exists when creating symlinks)moved the creation of directories into the symlink() function but forgotthe case where no symlink is created.
This leads to build errors on arm Linux due to -I../linux-headers....
MAINTAINERS: Add Petalogix ml605 machine model
Signed-off-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
MAINTAINERS: Added Xilinx EDK devices
MAINTAINERS: Added device tree
Agreed between myself and Alex:http://lists.nongnu.org/archive/html/qemu-devel/2012-06/msg03561.html
Signed-off-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>Acked-by: Alexander Graf <agraf@suse.de>Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Merge remote-tracking branch 'stefanha/trivial-patches' into staging
Merge remote-tracking branch 'spice/spice.v58' into staging
Merge remote-tracking branch 'mdroth/qga-pull-6-21-12' into staging
Merge remote-tracking branch 'sstabellini/compile-xs' into staging
Merge remote-tracking branch 'sstabellini/xen-pt' into staging
Merge remote-tracking branch 'kraxel/usb.54' into staging
target-ppc: Fix build with --enable-debug
The order of the arguments was wrong (copy+paste error).
Signed-off-by: Stefan Weil <sw@weilnetz.de>Signed-off-by: Alexander Graf <agraf@suse.de>
target-ppc: Fix 2nd parameter for tcg_gen_shri_tl
This fixes a compiler error when QEMU was configured with --enable-debug.
tci: don't write zero for reloc in tci_out_label
If tci_out_label is called in the context of tcg_gen_code_search_pc, wecould be overwriting an already patched relocation with zero -- and notrepatch it because the set_label is past search_pc, causing a QEMU crash...
make: Fix dependencies for fpu/*.c and tcg/*.c
Commit dcff25f2cd8c11a9368cc2369aeb0319c32d9e26 removed too many *.dfiles. The directories fpu/ and tcg/ still don't use the recursivesubdir rules.
Signed-off-by: Stefan Weil <sw@weilnetz.de>Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
qemu-log: Add GCC format attribute
The new inline function qemu_log_vprintf should use this attribute.
Merge branch 'ppc-for-upstream' of git://repo.or.cz/qemu/agraf
Merge branch 'target-arm.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm
Merge branch 's390-for-upstream' of git://repo.or.cz/qemu/agraf
Merge branch 'arm-devs.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm
PPC: BookE: Implement EPR SPR
On the e500 series, accessing SPR_EPR magically turns into an access atthat CPU's IACK register on the MPIC. Implement that logic to get kernelsthat make use of that feature work.
Signed-off-by: Alexander Graf <agraf@suse.de>
PPC: BookE: Make ivpr selectable by CPU type
IVPR can either hold 32 or 64 bit addresses, depending on the CPU type. Letthe CPU initialization function pass in its mask itself, so we can easilyextend it.
PPC: Add e5500 CPU target
This patch adds e5500's CPU initialization to the TCG CPU initializationcode.
PPC: Extract SPR dump generation into its own function
This patch moves the debug #ifdef'ed SPR trace generation into itsown function, so we can call it from multiple places.
PPC: BookE: Support 32 and 64 bit wide MAS2
The MAS registers on BookE are all 32 bit wide, except for MAS2, whichcan hold up to 64 bit on 64 bit capable CPUs. Reflect this in the SPRsetting code, so that the guest can never write invalid values in them....
PPC: BookE206: Bump MAS2 to 64bit
On 64bit capable systems, MAS2 can actually hold a 64bit virtual pageaddress. So increase the mask for its EPN.
PPC: e500: Refactor serial dt generation
When generating serial port device tree nodes, we duplicate quite a bitof code, because there are 2 of them in the mpc8544ds board we emulate.
Shove the generating code into a function, so we duplicate less code....
dt: make setprop argument static
Whatever we pass in to qemu_devtree_setprop to put into the device treewill not get modified by that function, so it can easily be declared const.
Signed-off-by: Alexander Graf <agraf@suse.de>Reviewed-by: Peter Crosthwaite <peter.crosthwaite@petalogix.com>
PPC: e500: allow users to set the /compatible property via -machine
Device trees usually have a node /compatible, which indicate which machinetype we're looking at. For quick prototyping, it can be very useful to changethe contents of that node via the command line....
uImage: increase the gzip load size
Recent u-boot has different defines for its gzip extract buffer, but thecommon ground seems to be 64MB. So let's bump it up to that, enabling meto load my test image again ;).
PPC: Add some booke SPR defines
The number of SPRs avaiable in different PowerPC chip is still increasing. Adddefinitions for the MAS7_MAS3 SPR and all currently known bits in EPCR.
PPC: Add support for MSR_CM
The BookE variant of MSR_SF is MSR_CM. Implement everything it takes in TCG tosupport running 64bit code with MSR_CM set.
PPC: e500: Use new MPIC dt format
Due to popular demand, we're updating the way we generate the MPICnode and interrupt lines based on what the current state of art is.
Requested-by: Scott Wood <scottwood@freescale.com>Signed-off-by: Alexander Graf <agraf@suse.de>
PPC: e500: Use new SOC dt format
Due to popular demand, let's clean up the soc node a bit and usemore recent dt notions.
PPC: e500: Define addresses as always 64bit
Every time we use an address constant, it needs to potentially fit intoa 64bit physical address space. So let's define things accordingly.
PPC: e500: Extend address/size of / to 64bit
We want to be able to support >= 4GB of RAM. To do so, we need to be ableto tell the guest OS how much RAM it has.
However, that information today is capped to 32bit. So let's extend theoffset and size fields to 64bit, so we can fit in big addresses and even...
dt: Add global option to set phandle start offset
If anyone outside of QEMU wants to mess with a QEMU generated device tree,he needs to know which range phandles are valid in. So let's expose amachine option that an external program can use to set the start allocate...
PPC: e500: dt: use 64bit cell helper
We have a nice 64bit helper to ease the device tree generation andmake the code more readable when creating 64bit 2-cell parameters.Use it when generating the device tree.
PPC: e500: dt: use target_phys_addr_t for ramsize
We're passing the ram size as uint32_t, capping it to 32 bits atm.Change to target_phys_addr_t (uint64_t) to make sure we have allthe bits.
PPC: e500: enable manual loading of dtb blob
We want to be able to override the automatically created device treeby using the -dtb option. Implement this for the mpc8544ds machine.
Revert "dt: temporarily disable subtree creation failure check"
This reverts commit "dt: temporarily disable subtree creationfailure check" which was meant as a temporary solution to keepexternal and dynamic device tree construction intact.
Now that we switched to fully dynamic dt construction, it's no...
PPC: e500: dt: create /soc8544 node dynamically
PPC: e500: dt: create serial nodes dynamically
PPC: e500: dt: create mpic node dynamically
PPC: e500: dt: create global-utils node dynamically
PPC: e500: dt: create pci node dynamically
PPC: e500: dt: start with empty device tree
Now that all of the device tree bits are generated during runtime, wecan get rid of the device tree blob and instead start from scratch withan empty device tree.
dt: Add -machine dumpdtb option to dump the current dtb
Now that we are dynamically creating the dtb, it's really useful tobe able to dump the created blob for debugging.
This patch implements a -machine dumpdtb=<file> option for e500 thatdumps the dtb exactly in the form the guest would get it to disk. It...
PPC: e500: require libfdt
Now that we're moving all of the device tree generation from an externalpre-execution generated blob to runtime generation using libfdt, we absolutelymust have libfdt around.
This requirement was there before already, as the only way to not require libfdt...
PPC: e500: dt: create memory node dynamically
PPC: e500: dt: create /cpus node dynamically
PPC: e500: dt: create /hypervisor node dynamically
PPC: e500: dt: create / node dynamically
PPC: e500: dt: create /chosen node dynamically
dt: add helpers for multi-cell adds
We have device tree helpers that allow us to create single cell (u32)wide properties. However, when creating properties that contain an array ofcells, we need to jump through hoops, manually passing in an array withconverted endianness....
dt: add helper for phandle references
Phandles are the fancy device tree name for "pointer to another node".To create a phandle property, we most likely want to reference to thenode we're pointing to by its path. So create a helper that allowsus to do so....
dt: temporarily disable subtree creation failure check
Usually we want to know when creating a subtree fails. However, whileintroducing this patch set we have to modify the device tree and sometimes have the code to create a subtree in both the binary tree and...
dt: add helper for phandle enumeration
This patch adds a helper to search for a node's phandle by its path. Thisis especially useful when the phandle is part of an array, not just a singlecell in which case qemu_devtree_setprop_phandle would be the easy choice....
dt: add helper for empty dt creation
We want to get rid of the concept of loading an external device tree and insteadgenerate our own. However, to do this we need to also create a device treetemplate programatically.
This patch adds a helper to create an empty device tree in memory....
dt: add helper for phandle allocation
Phandle references work by having 2 pieces:
- a "phandle" 1-cell property in the device tree node - a reference to the same value in a property we want to point to the other node
To generate the 1-cell property, we need an allocation mechanism that...
dt: add helper for 64bit cell adds
Some times in the device tree, we find an array of 2 u32 cells thatreally are a single u64 value. This patch adds a helper to make thecreation of these easy.
pseries: Correctly create ibm,segment-page-sizes property
The core tcg/kvm code for ppc64 now has at least the outlinecapability to support pagesizes beyond the standard 4k and 16MB. TheCPUState is initialized with information advertising the available...
spapr_vscsi: Error handling fixes
We were incorrectly g_free'ing an object that isn't allocatedin one error path and failed to release it completely in another
This fixes qemu crashes with some cases of IO errors.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>...
spapr: Add "memop" hypercall
This adds a qemu-specific hypervisor call to the pseries machinewhich allows to do what amounts to memmove, memcpy and xor overregions of physical memory such as the framebuffer.
This is the simplest way to get usable framebuffer speed from...
raw-posix: Fix build without is_allocated support
Move the declaration of s into the #ifdef sections that actually makeuse of it.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>Signed-off-by: Alexander Graf <agraf@suse.de>
dt: allow add_subnode to create root subnodes
Our subnode creation helper can't handle creation of root subnodes,like "/memory". Fix this by allowing the parent node to be an emptystring, indicating the root node.
Signed-off-by: Alexander Graf <agraf@suse.de>...
PPC: mpc8544ds: Span initial TLB entry over as much RAM as we need
The initial TLB entry is supposed to help us run the guest -kernel payload.This means the guest needs to be able to access its own memory, the initrdmemory and the device tree.
So far we only statically reserved a TLB entry from [0;256M[. This patch...
Avoid segfault in cpu_dump_state
Do not call cpu_dump_state if logfile is NULL.
Signed-off-by: Fabien Chouteau <chouteau@adacore.com>[agraf: adjust to inline functions]Signed-off-by: Alexander Graf <agraf@suse.de>
booke_206_tlbwe: Discard invalid bits in MAS2
The size of EPN field in MAS2 depends on page size. This patch adds amask to discard invalid bits in EPN field.
Definition of EPN field from e500v2 RM:EPN Effective page number: Depending on page size, only the bits...
ppc64: Rudimentary Support for extra page sizes on server CPUs
More recent Power server chips (i.e. based on the 64 bit hash MMU)support more than just the traditional 4k and 16M page sizes. Thiscan get quite complicated, because which page sizes are supported,...
ppc: Avoid AREG0 for timebase helpers
Add an explicit CPUPPCState parameter instead of relying on AREG0.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>Signed-off-by: Alexander Graf <agraf@suse.de>Signed-off-by: Andreas Färber <afaerber@suse.de>Signed-off-by: Alexander Graf <agraf@suse.de>
ppc: Split off misc helpers
Move misc helpers from op_helper.c to misc_helpers.c.
ppc: Avoid AREG0 for misc helpers
ppc: Move misc helpers from helper.c to misc_helper.c
Move more misc helpers from helper.c to misc_helper.c.
ppc: Move load and store helpers, switch to AREG0 free mode
Add an explicit CPUPPCState parameter instead of relying on AREG0and rename op_helper.c (which only contains load and store helpers)to mem_helper.c. Remove AREG0 swapping intlb_fill().
Switch to AREG0 free mode. Use cpu_ld{l,uw}_code in translation...
ppc: Add missing break
Add obviously missing 'break' statement.
ppc: Make hbrev table const
Lookup table 'hbrev' is never written to, so add a 'const' qualifier.
ppc: Avoid a warning with the next patch
When the code is moved together by the next patch, compilerdetects a possible uninitialized variable use. Avoid the warningby initializing the variables.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>Signed-off-by: Alexander Graf <agraf@suse.de>...
ppc: Move MMU helpers from helper.c to mmu_helper.c
Move more MMU helpers from helper.c to mmu_helper.c.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>Signed-off-by: Alexander Graf <agraf@suse.de>Signed-off-by: Andreas Färber <afaerber@suse.de>[update to current helper.c state]...
ppc: Cleanup MMU merge
Remove useless wrappers. In some cases 'int' parameters arechanged to uint32_t.
Make internal functions static.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>[agraf: fix kvm compilation]Signed-off-by: Alexander Graf <agraf@suse.de>...
ppc: Split off timebase helpers
Move decrementer and timebase helpers to a dedicated file.