aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-07-17ipxe: update to commit 0600d3ae94Gerd Hoffmann
Rebase ipxe to latest git master. Pick up four virtio-net fixes. complete shortlog of ipxe changes --------------------------------- Adamczyk, Konrad (1): [thunderx] Use ThunderxConfigProtocol to obtain board configuration Bartosz Szczepanek (1): [thunderx] Fix hardware deinitialization Christian Nilsson (1): [intel] Add INTEL_NO_PHY_RST for I219-LM (2) David Decotigny (2): [build] Return const char * from uuid_ntoa() [af_packet] Add new AF_PACKET driver for Linux Jason Wang (1): [virtio] Support VIRTIO_NET_F_IOMMU_PLATFORM Jerone Young (1): [intel] Add support for I219-V in 7th Gen Intel NUC Konrad Adamczyk (1): [thunderx] Don't disable NIC when exiting from iPXE Ladi Prosek (3): [virtio] Cap queue size to MAX_QUEUE_NUM [virtio] Simplify virtqueue shutdown [virtio] Remove queue size limit in legacy virtio Martin Habets (1): [sfc] Add driver for Solarflare SFC8XXX adapters Michael Brown (159): [interface] Provide intf_reinit() to reinitialise nullified interfaces [iscsi] Avoid potential infinite loops during shutdown [efi] Add basic EFI SAN booting capability [undi] Allocate base memory before calling UNDI loader entry point [romprefix] Avoid using PMM-allocated memory in UNDI loader entry point [undi] Clean up driver and device name information [prefix] Remove impossible progress message [prefix] Include diagnostic information within progress messages [undi] Try matching UNDI ROMs in BIOS enumeration order [efi] Work around temporal anomaly encountered during ExitBootServices() [ipv4] Accept unicast packets for the local network broadcast address [build] Add %.vhd target for building VM bootable disk images [virtio] Use separate RX and TX empty header buffers [cloud] Add ability to retrieve Google Compute Engine metadata [virtio] Use host-specified MTU when available [netdevice] Allow MTU to be changed at runtime [cloud] Show CPU vendor and model in example cloud boot scripts [hyperv] Ignore unsolicited VMBus messages [pic8259] Fix definitions for "read IRR" and "read ISR" commands [efi] Fix building elf2efi.c when -fpic is enabled by default [interface] Avoid unnecessary reference counting in intf_unplug() [interface] Remove misleading comment [interface] Unplug interface before calling intf_close() in intf_shutdown() [netdevice] Limit MTU by hardware maximum frame length [cpuid] Provide cpuid_supported() to test for supported functions [time] Allow timer to be selected at runtime [hyperv] Provide timer based on the 10MHz time reference count MSR [int13] Avoid potential division by zero [int13] Test correct return status from INT 13 calls [settings] Add "unixtime" builtin setting to expose the current time [time] Report attempts to use timers before initialisation [interface] Provide the ability to shut down multiple interfaces [http] Cleanly shut down potentially looped interfaces [efi] Add missing SANBOOT_PROTO_HTTP to EFI default configuration [block] Remove spurious comments [block] Centralise SAN device abstraction [block] Centralise "san-drive" setting [int13] Refactor to use centralised SAN device abstraction [efi] Refactor to use centralised SAN device abstraction [block] Retry any SAN device operation [iscsi] Use intfs_shutdown() when shutting down multiple interfaces [scsi] Use intfs_shutdown() when shutting down multiple interfaces [block] Use intfs_shutdown() when shutting down multiple interfaces [scsi] Avoid duplicate calls to scsicmd_close() [build] Provide common ARRAY_SIZE() definition [efi] Update to current EDK2 headers [efi] Add EFI_ACPI_TABLE_PROTOCOL header and GUID definition [efi] Provide ACPI table description for SAN devices [efi] Skip cable detection at initialisation where possible [undi] Move PXE API caller back into UNDI driver [dhcp] Allow vendor class to be changed in DHCP requests [hermon] Avoid potential integer overflow when calculating memory mappings [arbel] Avoid potential integer overflow when calculating memory mappings [xfer] Ensure va_end() is called on failure path [nfs] Fix double free bug on error path [linda] Use correct length for memset() [qib7322] Use correct length for memset() [sis900] Remove extraneous memset() with incorrect length [802.11] Remove redundant NULL pointer check after dereference [crypto] Free correct pointer on the error path [librm] Fail gracefully if asked to ioremap() a zero length [usb] Use correct length for memcpy() [mucurses] Attempt to fix test for empty string [mucurses] Attempt to fix keypress processing logic [mucurses] Attempt to fix resource leaks [hyperv] Fix resource leaks on error path [slam] Fix resource leak on error path [slam] Avoid NULL pointer dereference in slam_pull_value() [eoib] Avoid passing a NULL I/O buffer to netdev_tx_complete_err() [http] Add missing check for memory allocation failure [mucurses] Attempt to fix use of uninitialised buffer with strcat() [xhci] Avoid accessing beyond end of endpoint context array [build] Avoid confusing sparse in single-argument DBG() macros [infiniband] Return status code from ib_create_cq() and ib_create_qp() [infiniband] Return status code from ib_create_mi() [block] Quell spurious Coverity size mismatch warning [ath] Add missing break statements [pixbuf] Avoid potential division by zero [usb] Use correct length for memcpy() [xen] Use standard calling pattern for asprintf() [tcp] Use correct length for memset() [video_subr] Use memmove() for overlapping memory copy [arbel] Assert that mapping length is non-zero [hermon] Assert that mapping length is non-zero [tlan] Guard against failure to identify chip [w89c840] Avoid potential array overrun [sis190] Avoid NULL pointer dereference [mucurses] Ensure SLK labels are always terminated [coverity] Add Coverity user model [malloc] Track maximum heap usage [travis] Add minimal .travis.yml file [travis] Build and run the unit test suite [travis] Integrate with Coverity Scan [rtl818x] Fix resource leak on error path [pcnet32] Eliminate redundant register read [iobuf] Increase minimum I/O buffer size to 128 bytes [vxge] Fix use of stale I/O buffer on error path [scsi] Avoid duplicate call to scsicmd_close() on TEST UNIT READY failure [block] Add dummy SAN device [block] Add basic multipath support [int13] Improve geometry guessing for unaligned partitions [int13con] Avoid overwriting random portions of SAN boot disks [time] Add sleep_fixed() function to sleep without checking for Ctrl-C [block] Allow SAN retry count to be reconfigured [block] Add a small delay between attempts to reopen SAN targets [block] Retry reopening indefinitely for multipath devices [block] Gracefully close SAN device if registration fails [linux] Use dummy SAN device [block] Ignore redundant xfer_window_changed() messages [block] Describe all SAN devices via ACPI tables [iscsi] Do not install iBFT when no iSCSI targets exist [http] Notify data transfer interface when underlying connection is ready [mucurses] Fix erroneous __nonnull attribute [build] Avoid implicit-fallthrough warnings on GCC 7 [linux] Fix building with kernel 4.11 headers [scsi] Retry TEST UNIT READY command [libc] Add stdbool.h standard header [efi] Fix typo in efi_acpi_table_protocol_guid [efi] Add efi_sprintf() and efi_vsprintf() [block] Allow use of a non-default EFI SAN boot filename [intel] Show original CTRL and STATUS values in debugging output [intel] Do not enable ASDE on i350 backplane NIC [block] Provide sandev_read() and sandev_write() as global symbols [block] Provide abstraction to allow system to be quiesced [hyperv] Do not fail if guest OS ID MSR is already set [hyperv] Remove redundant return status code from mapping functions [hyperv] Cope with Windows Server 2016 enlightenments [efi] Standardise PCI debug messages [iscsi] Always send FirstBurstLength parameter [iscsi] Fix iBFT when no explicit initiator name setting exists [xen] Provide 18 4kB receive buffers to work around xen-netback bug [efi] Prevent EFI code from being linked in to non-EFI builds [tls] Keep cipherstream window open until TLS negotiation is complete [settings] Extend numerical setting tags to 64 bits [acpi] Make acpi_find_rsdt() a per-platform method [efi] Provide access to ACPI tables [acpi] Expose ACPI tables via settings mechanism [syslog] Handle backspace characters [hdprefix] Avoid attempts to read beyond the end of the disk [usb] Allow for USB network devices with no interrupt endpoint [build] Use -no-pie on newer versions of gcc [ecm] Display invalid MAC address strings in debug messages [cpuid] Allow input %ecx value to be specified [crypto] Expose RSA_CTX_SIZE constant [crypto] Expose asn1_grow() [crypto] Provide asn1_built() to construct a cursor from a builder [crypto] Expose pem_asn1() for use with non-image data [exanic] Add driver for Exablaze ExaNIC cards [usb] Use non-zero language ID to retrieve strings [mucurses] Avoid potential division by zero [tls] Support RFC5746 secure renegotiation [smscusb] Abstract out common SMSC USB device functionality [smsc95xx] Use common SMSC USB device functionality [smsc75xx] Use common SMSC USB device functionality [smscusb] Add ability to read MAC address from OTP [smscusb] Move non-inline register access functions to smscusb.c [smscusb] Allow for alternative PHY register layouts [smsc75xx] Expose functionality shared with LAN78xx devices [lan78xx] Add driver for Microchip LAN78xx USB Ethernet NICs Mika Tiainen (1): [intel] Add INTEL_NO_PHY_RST for I219-V Mike McCormack (1): [sky2] Use 32-bit read to read Y2_VAUX_AVAIL Raed Salem (2): [golan] Update Connect-IB, ConnectX-4 and ConnectX-4 Lx (Infiniband) support [golan] Bug fixes and improved paging allocation method Vishvananda Ishaya (1): [intel] Reset all virtual function settings Vishvananda Ishaya Abrams (1): [iscsi] Don't close when receiving NOP-In Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2017-07-13Merge remote-tracking branch ↵Peter Maydell
'remotes/pmaydell/tags/pull-target-arm-20170711' into staging target-arm queue: * v7M: ignore writes to CONTROL.SPSEL from Thread mode * KVM: Enable in-kernel timers with user space gic * aspeed: Register all watchdogs * hw/misc: Add Exynos4210 Pseudo Random Number Generator # gpg: Signature made Tue 11 Jul 2017 11:28:15 BST # gpg: using RSA key 0x3C2525ED14360CDE # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" # gpg: aka "Peter Maydell <pmaydell@gmail.com>" # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * remotes/pmaydell/tags/pull-target-arm-20170711: target-arm: v7M: ignore writes to CONTROL.SPSEL from Thread mode ARM: KVM: Enable in-kernel timers with user space gic aspeed: Register all watchdogs hw/misc: Add Exynos4210 Pseudo Random Number Generator Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-11Merge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' ↵Peter Maydell
into staging # gpg: Signature made Tue 11 Jul 2017 09:35:26 BST # gpg: using RSA key 0x9CA4ABB381AB73C8 # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" # gpg: aka "Stefan Hajnoczi <stefanha@gmail.com>" # Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35 775A 9CA4 ABB3 81AB 73C8 * remotes/stefanha/tags/tracing-pull-request: backends: remove empty trace-events file trace: Fix early setting of events with the "vcpu" property Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-11Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.10-20170711' ↵Peter Maydell
into staging ppc patch queue 2017-07-11 * Several minor cleanups from Greg Kurz * Fix for migration of pseries-2.7 and earlier machine types * More reworking of the DRC hotplug code, fixing several problems though there are still more to go * Fixes for CPU family / alias handling on POWER9 * Preliminary patches for POWER9 XIVE (new interrupt controller) support * Assorted other fixes # gpg: Signature made Tue 11 Jul 2017 05:35:16 BST # gpg: using RSA key 0x6C38CACA20D9B392 # gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>" # gpg: aka "David Gibson (Red Hat) <dgibson@redhat.com>" # gpg: aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>" # gpg: aka "David Gibson (kernel.org) <dwg@kernel.org>" # Primary key fingerprint: 75F4 6586 AE61 A66C C44E 87DC 6C38 CACA 20D9 B392 * remotes/dgibson/tags/ppc-for-2.10-20170711: spapr: populate device tree depending on XIVE_EXPLOIT option spapr: introduce the XIVE_EXPLOIT option in CAS ppc/kvm: have the "family" CPU alias to point to TYPE_HOST_POWERPC_CPU spapr: Only report host/guest IOMMU page size mismatches on KVM spapr: fix memory hotplug error path target/ppc: Add debug function for radix mmu translation target/ppc: Refactor tcg radix mmu code spapr: Use unplug_request for PCI hot unplug spapr: Remove unnecessary differences between hotplug and coldplug paths spapr: Add DRC release method spapr: Uniform DRC reset paths spapr: Leave DR-indicator management to the guest target-ppc: SPR_BOOKE_ESR not set on FP exceptions spapr: fix migration to pseries machine < 2.8 spapr: fix bogus function name in comment spapr: refresh "platform-specific" hcalls comment spapr: make spapr_populate_hotplug_cpu_dt() static Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-11Merge remote-tracking branch 'remotes/awilliam/tags/vfio-updates-20170710.0' ↵Peter Maydell
into staging VFIO fixes 2017-07-10 - Don't iterate over non-realized devices (Alex Williamson) - Add PCIe capability version fixup (Alex Williamson) # gpg: Signature made Mon 10 Jul 2017 20:06:11 BST # gpg: using RSA key 0x239B9B6E3BB08B22 # gpg: Good signature from "Alex Williamson <alex.williamson@redhat.com>" # gpg: aka "Alex Williamson <alex@shazbot.org>" # gpg: aka "Alex Williamson <alwillia@redhat.com>" # gpg: aka "Alex Williamson <alex.l.williamson@gmail.com>" # Primary key fingerprint: 42F6 C04E 540B D1A9 9E7B 8A90 239B 9B6E 3BB0 8B22 * remotes/awilliam/tags/vfio-updates-20170710.0: vfio/pci: Fixup v0 PCIe capabilities vfio: Test realized when using VFIOGroup.device_list iterator Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-11build: disable Xen on ARMPaolo Bonzini
While ARM could present the xenpv machine, it does not and trying to enable it breaks compilation. Revert to the previous test which only looked at $target_name, not $cpu. Fixes: 3b6b75506de44c5070639943c30a0ad5850f5d02 Reported-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 20170711100049.20513-1-pbonzini@redhat.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-11target-arm: v7M: ignore writes to CONTROL.SPSEL from Thread modePeter Maydell
For v7M, writes to the CONTROL register are only permitted for privileged code. However even if the code is privileged, the write must not affect the SPSEL bit in the CONTROL register if the CPU is in Thread mode (as documented in the pseudocode for the MSR instruction). Implement this, instead of permitting SPSEL to be written in all cases. This was causing mbed applications not to run, because the RTX RTOS they use relies on this behaviour. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 1498820791-8130-1-git-send-email-peter.maydell@linaro.org
2017-07-11ARM: KVM: Enable in-kernel timers with user space gicAlexander Graf
When running with KVM enabled, you can choose between emulating the gic in kernel or user space. If the kernel supports in-kernel virtualization of the interrupt controller, it will default to that. If not, if will default to user space emulation. Unfortunately when running in user mode gic emulation, we miss out on interrupt events which are only available from kernel space, such as the timer. This patch leverages the new kernel/user space pending line synchronization for timer events. It does not handle PMU events yet. Signed-off-by: Alexander Graf <agraf@suse.de> Reviewed-by: Andrew Jones <drjones@redhat.com> Message-id: 1498577737-130264-1-git-send-email-agraf@suse.de Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-11aspeed: Register all watchdogsJoel Stanley
The ast2400 contains two and the ast2500 contains three watchdogs. Add this information to the AspeedSoCInfo and realise the correct number of watchdogs for that each SoC type. Signed-off-by: Joel Stanley <joel@jms.id.au> Reviewed-by: Cédric Le Goater <clg@kaod.org> Tested-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-11hw/misc: Add Exynos4210 Pseudo Random Number GeneratorKrzysztof Kozlowski
Add emulation for Exynos4210 Pseudo Random Number Generator which could work on fixed seeds or with seeds provided by True Random Number Generator block inside the SoC. Implement only the fixed seeds part of it in polling mode (no interrupts). Emulation tested with two independent Linux kernel exynos-rng drivers: 1. New kcapi-rng interface (targeting Linux v4.12), 2. Old hwrng inteface # echo "exynos" > /sys/class/misc/hw_random/rng_current # dd if=/dev/hwrng of=/dev/null bs=1 count=16 Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Message-id: 20170425180609.11004-1-krzk@kernel.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> [PMM: wrapped a few overlong lines; more efficient implementation of exynos4210_rng_seed_ready()] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-11backends: remove empty trace-events fileDaniel P. Berrange
The content of the backends/trace-events file was entirely removed in commit 6b10e573d15ef82dbc5c5b3726028e6642e134f6 Author: Marc-André Lureau <marcandre.lureau@redhat.com> Date: Mon May 29 12:39:42 2017 +0400 char: move char devices to chardev/ Leaving the empty file around, causes tracetool to generate an empty .dtrace file which makes the dtrace compiler throw a syntax error. Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20170629162046.4135-1-berrange@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2017-07-11trace: Fix early setting of events with the "vcpu" propertyLluís Vilanova
Events with the "vcpu" property need to be set globally (i.e., as if they didn't have that property) while we have not yet created any vCPU. Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> Message-id: 149838891852.10366.11525912227070211356.stgit@frigg.lan Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2017-07-11spapr: populate device tree depending on XIVE_EXPLOIT optionCédric Le Goater
When XIVE is supported, the device tree should be populated accordingly and the XIVE memory regions mapped to activate MMIOs. Depending on the design we choose, we could also allocate different ICS and ICP objects, or switch between objects. This needs to be discussed. Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11spapr: introduce the XIVE_EXPLOIT option in CASCédric Le Goater
On POWER9, the Client Architecture Support (CAS) negotiation process determines whether the guest operates in XIVE Legacy compatibility (the former POWER8 interrupt model) or in XIVE exploitation mode (the newer POWER9 interrupt model). Bit 7 of Byte 23 of vector 5 is used for this purpose. Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11ppc/kvm: have the "family" CPU alias to point to TYPE_HOST_POWERPC_CPUGreg Kurz
When running KVM on POWER, we allow the user to pass "-cpu POWERx" instead of "-cpu host". This is achieved by patching the ppc_cpu_aliases[] array so that "POWERx" points to the CPU class with the same PVR as the host CPU. This causes CPUs to be instantiated from this CPU class instead of the TYPE_HOST_POWERPC_CPU class which is used with "-cpu host". These CPUs thus miss all the KVM specific tuning from kvmppc_host_cpu_class_init(). This currently causes QEMU with "-cpu POWER9" to fail when running KVM on a POWER9 DD1 host: qemu-system-ppc64: Register sync failed... If you're using kvm-hv.ko, only "-cpu host" is possible kvm_init_vcpu failed: Invalid argument Let's have the "POWERx" alias to point to TYPE_HOST_POWERPC_CPU directly, so that "-cpu POWERx" instantiates CPUs from the same class as "-cpu host". Signed-off-by: Greg Kurz <groug@kaod.org> Tested-by: Laurent Vivier <lvivier@redhat.com> Reviewed-by: Laurent Vivier <lvivier@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11spapr: Only report host/guest IOMMU page size mismatches on KVMDavid Gibson
We print a warning if the spapr IOMMU isn't configured to support a page size matching the host page size backing RAM. When that's the case we need more complex logic to translate VFIO mappings, which is slower. But, it's not so slow that it would be at all noticeable against the general slowness of TCG. So, only warn when using KVM. This removes some noisy and unhelpful warnings from make check on hosts with page sizes which typically differ from those on POWER (e.g. Sparc). Reported-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Thomas Huth <thuth@redhat.com>
2017-07-11spapr: fix memory hotplug error pathGreg Kurz
QEMU shouldn't abort if spapr_add_lmbs()->spapr_drc_attach() fails. Let's propagate the error instead, like it is done everywhere else where spapr_drc_attach() is called. Signed-off-by: Greg Kurz <groug@kaod.org> Reviewed-by: Daniel Barboza <danielhb@linux.vnet.ibm.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11target/ppc: Add debug function for radix mmu translationSuraj Jitindar Singh
In target/ppc/mmu-hash64.c there already exists the function ppc_hash64_get_phys_page_debug() to get the physical (real) address for a given effective address in hash mode. Implement the function ppc_radix64_get_phys_page_debug() to allow a real address to be obtained for a given effective address in radix mode. This is used when a debugger is attached to qemu. Previously we just had a comment saying this is unimplemented which then fell through to the default case and caused an abort due to unrecognised mmu model as the default had no case for the V3 mmu, which was misleading at best. We reuse ppc_radix64_walk_tree() which is used by the radix fault handler since the process of walking the radix tree is identical. Reported-by: Balbir Singh <bsingharora@gmail.com> Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11target/ppc: Refactor tcg radix mmu codeSuraj Jitindar Singh
The mmu-radix64.c file implements functions to enable the radix mmu emulation in tcg mode. There is a function ppc_radix64_walk_tree() which performs the radix tree walk and also implicitly checks the pte protection. Move the protection checking of the pte from the ppc_radix64_walk_tree() function into the caller. This means the ppc_radix64_walk_tree() function can be used without protection checking which is useful for debugging. ppc_radix64_walk_tree() no longer needs to take the rwx and prot variables. Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11spapr: Use unplug_request for PCI hot unplugDavid Gibson
AIUI, ->unplug_request in the HotplugHandler is used for "soft" unplug, where acknowledgement from the guest is required before completing the unplug, whereas ->unplug is used for "hard" unplug where qemu unilaterally removes the device, and the guest just has to cope with its sudden absence. For spapr we (correctly) use ->unplug_request for CPU and memory hot unplug but we use ->unplug for PCI. While I think it might be possible to support "hard" PCI unplug within the PAPR model, that's not how it actually works now. Although it's called from ->unplug, the PCI unplug path will usually just mark the device for removal, with completion of the unplug delayed until userspace responds to the unplug notification. If the guest doesn't respond as expected, that could delay the unplug completion arbitrarily long. To reflect that, change the PCI unplug path to be called from ->unplug_request. We also rename spapr_phb_hot_plug_child() and spapr_phb_hot_unplug_child() to spapr_pci_plug() and spapr_pci_unplug_request() to more obviously reflect the callbacks they're implementing. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Laurent Vivier <lvivier@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org>
2017-07-11spapr: Remove unnecessary differences between hotplug and coldplug pathsDavid Gibson
spapr_drc_attach() has a 'coldplug' parameter which sets the DRC into configured state initially, instead of the usual ISOLATED/UNUSABLE state. It turns out this is unnecessary: although coldplugged devices do need to be in CONFIGURED state once the guest starts, that will already be accomplished by the reset code which will move DRCs for already plugged devices into a coldplug equivalent state. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Laurent Vivier <lvivier@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org>
2017-07-11spapr: Add DRC release methodDavid Gibson
At the moment, spapr_drc_release() has an ugly switch on the DRC type to call the right, device-specific release function. This cleans it up by doing that via a proper QOM method. It's still arguably an abstraction violation for the DRC code to call into the specific device code, but one mess at a time. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Laurent Vivier <lvivier@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org>
2017-07-11spapr: Uniform DRC reset pathsDavid Gibson
DRC objects have a regular device reset method. However, it only gets called in the usual way for PCI DRCs. Because of where CPU and LMB DRCs are in the QOM tree, their device reset method isn't automatically called. So, the machine manually registers reset handlers to call device_reset(). This patch removes the device reset method, and instead always explicitly registers the reset handler from realize(). This means the callers don't have to worry about the two cases, and we always get proper resets. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Greg Kurz <groug@kaod.org> Reviewed-by: Laurent Vivier <lvivier@redhat.com>
2017-07-11spapr: Leave DR-indicator management to the guestDavid Gibson
The DR-indicator is essentially a "virtual LED" attached to a hotpluggable device, which the guest can set to various states for the attention of the operator or management layers. It's mostly guest managed, except that we once-off set it to ACTIVE/INACTIVE in the attach/detach path. While that makes certain sense, there's no indication in PAPR that the hypervisor should do this, and the drmgr code on the guest side doesn't appear to need it (it will already set the indicator to ACTIVE on hotplug, and INACTIVE on remove). So, leave the DR-indicator entirely to the guest; the only thing we need to do is ensure it's in a sane state on reset. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Laurent Vivier <lvivier@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org>
2017-07-11target-ppc: SPR_BOOKE_ESR not set on FP exceptionsAaron Larson
Properly set the book E exception syndrome register when a floating point exception occurs. Currently on a book E processor, the POWERPC_EXCP_FP exception handler fails to set "env->spr[SPR_BOOKE_ESR] = ESR_FP;" as required by the book E specification. Signed-off-by: Aaron Larson <alarson@ddci.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11spapr: fix migration to pseries machine < 2.8Laurent Vivier
since commit 5c4537bd ("spapr: Fix 2.7<->2.8 migration of PCI host bridge"), some migration fields are forged from the new ones in spapr_pci_pre_save(). It works well, except when the number of MSI devices is 0, because in this case the function exits immediately. This fix moves the migration code before the exit code. The problem can be reproduced with these commands: source qemu-2.9: qemu-system-ppc64 -monitor stdio -M pseries-2.6 -nodefaults -S destination qemu-2.6: qemu-system-ppc64 -monitor stdio -M pseries-2.6 -nodefaults \ -incoming tcp:0:4444 on the source: migrate tcp:localhost:4444 Destination fails with the following error: qemu-system-ppc64: error while loading state for instance 0x0 of device 'spapr_pci' qemu-system-ppc64: load of migration failed: Invalid argument Signed-off-by: Laurent Vivier <lvivier@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11spapr: fix bogus function name in commentGreg Kurz
$ git grep spapr_ppc_reset hw/ppc/spapr.c: * as part of spapr_ppc_reset(). $ git grep ppc_spapr_reset hw/ppc/spapr.c:static void ppc_spapr_reset(void) hw/ppc/spapr.c: mc->reset = ppc_spapr_reset; hw/ppc/spapr_hcall.c: /* If ppc_spapr_reset() did not set up a HPT but one is necessary Signed-off-by: Greg Kurz <groug@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11spapr: refresh "platform-specific" hcalls commentGreg Kurz
We have more of these since the addition of KVMPPC_H_LOGICAL_MEMOP in 2012. Signed-off-by: Greg Kurz <groug@kaod.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-11spapr: make spapr_populate_hotplug_cpu_dt() staticGreg Kurz
Since commit ff9006ddbfd1 ("spapr: move spapr_core_[foo]plug() callbacks close to machine code in spapr.c"), this function doesn't need to be extern anymore. Signed-off-by: Greg Kurz <groug@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-07-10Merge remote-tracking branch ↵Peter Maydell
'remotes/dgilbert/tags/pull-migration-20170710a' into staging Migration pull 2017-07-10 # gpg: Signature made Mon 10 Jul 2017 18:04:57 BST # gpg: using RSA key 0x0516331EBC5BFDE7 # gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A 9FA9 0516 331E BC5B FDE7 * remotes/dgilbert/tags/pull-migration-20170710a: migration: Make compression_threads use save/load_setup/cleanup() migration: Convert ram to use new load_setup()/load_cleanup() migration: Create load_setup()/cleanup() methods migration: Rename cleanup() to save_cleanup() migration: Rename save_live_setup() to save_setup() doc: update TYPE_MIGRATION documents doc: add item for "-M enforce-config-section" vl: move global property, migrate init earlier migration: fix handling for --only-migratable Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-10migration: Make compression_threads use save/load_setup/cleanup()Juan Quintela
Once there, be consistent and use compress_thread_{save,load}_{setup,cleanup}. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <20170628095228.4661-6-quintela@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-07-10migration: Convert ram to use new load_setup()/load_cleanup()Juan Quintela
Once there, I rename ram_migration_cleanup() to ram_save_cleanup(). Notice that this is the first pass, and I only passed XBZRLE to the new scheme. Moved decoded_buf to inside XBZRLE struct. As a bonus, I don't have to export xbzrle functions from ram.c. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> -- loaded_data pointer was needed because called can change it (dave) spell loaded correctly in comment (dave) Message-Id: <20170628095228.4661-5-quintela@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-07-10migration: Create load_setup()/cleanup() methodsJuan Quintela
We need to do things at load time and at cleanup time. Signed-off-by: Juan Quintela <quintela@redhat.com> -- Move the printing of the error message so we can print the device giving the error. Add call to postcopy stuff Message-Id: <20170628095228.4661-4-quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-07-10migration: Rename cleanup() to save_cleanup()Juan Quintela
We need a cleanup for loads, so we rename here to be consistent. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> -- Rename htab_cleanup to htap_save_cleanup as dave suggestion Message-Id: <20170628095228.4661-3-quintela@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-07-10migration: Rename save_live_setup() to save_setup()Juan Quintela
We are going to use it now for more than save live regions. Once there rename qemu_savevm_state_begin() to qemu_savevm_state_setup(). Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <20170628095228.4661-2-quintela@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-07-10doc: update TYPE_MIGRATION documentsPeter Xu
[Peter collected Eduardo's patch comment and formatted into patch] Suggested-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1499242883-2184-5-git-send-email-peterx@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-07-10doc: add item for "-M enforce-config-section"Peter Xu
It's never documented, and now we have one more parameter for it (which obsoletes this one). Document it properly. Suggested-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1499396048-21657-1-git-send-email-peterx@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Removed 'Although now' commit message as per Eduardo's review
2017-07-10vl: move global property, migrate init earlierPeter Xu
Currently drive_init_func() may call migrate_get_current() while the migrate object is still not ready yet at that time. Move the migration object init earlier, along with the global properties, right after acceleration init. This fixes a breakage for iotest 055, which caused an assertion failure. Reported-by: Max Reitz <mreitz@redhat.com> Reported-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Tested-by: QingFeng Hao <haoqf@linux.vnet.ibm.com> Fixes: 3df663 ("migration: move only_migratable to MigrationState") Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1499242883-2184-3-git-send-email-peterx@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-07-10migration: fix handling for --only-migratablePeter Xu
MigrateState object is not ready at that time, so we'll get an assertion. Use qemu_global_option() instead. Reported-by: Eduardo Habkost <ehabkost@redhat.com> Suggested-by: Eduardo Habkost <ehabkost@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Fixes: 3df663e ("migration: move only_migratable to MigrationState") Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1499242883-2184-2-git-send-email-peterx@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-07-10vfio/pci: Fixup v0 PCIe capabilitiesAlex Williamson
Intel 82599 VFs report a PCIe capability version of 0, which is invalid. The earliest version of the PCIe spec used version 1. This causes Windows to fail startup on the device and it will be disabled with error code 10. Our choices are either to drop the PCIe cap on such devices, which has the side effect of likely preventing the guest from discovering any extended capabilities, or performing a fixup to update the capability to the earliest valid version. This implements the latter. Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
2017-07-10vfio: Test realized when using VFIOGroup.device_list iteratorAlex Williamson
VFIOGroup.device_list is effectively our reference tracking mechanism such that we can teardown a group when all of the device references are removed. However, we also use this list from our machine reset handler for processing resets that affect multiple devices. Generally device removals are fully processed (exitfn + finalize) when this reset handler is invoked, however if the removal is triggered via another reset handler (piix4_reset->acpi_pcihp_reset) then the device exitfn may run, but not finalize. In this case we hit asserts when we start trying to access PCI helpers since much of the PCI state of the device is released. To resolve this, add a pointer to the Object DeviceState in our common base-device and skip non-realized devices as we iterate. Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
2017-07-10Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2017-07-10-v2' ↵Peter Maydell
into staging nbd patches for 2017-07-10 - Eric Blake: MAINTAINERS: Promote NBD to supported, with new maintainer - Vladimir Sementsov-Ogievskiy: [00/10] nbd refactoring part 2 # gpg: Signature made Mon 10 Jul 2017 15:59:18 BST # gpg: using RSA key 0xA7A16B4A2527436A # gpg: Good signature from "Eric Blake <eblake@redhat.com>" # gpg: aka "Eric Blake (Free Software Programmer) <ebb9@byu.net>" # gpg: aka "[jpeg image of size 6874]" # Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2 F3AA A7A1 6B4A 2527 436A * remotes/ericb/tags/pull-nbd-2017-07-10-v2: nbd: use generic trace subsystem instead of TRACE macro nbd: refactor tracing nbd/server: rename clientflags var in nbd_negotiate_options nbd/server: fix TRACE in nbd_negotiate_send_rep_len nbd/client: refactor TRACE of NBD_MAGIC nbd/common: nbd_tls_handshake: remove extra TRACE nbd/server: add errp to nbd_send_reply() nbd/server: use errp instead of LOG nbd/server: refactor nbd_negotiate nbd/server: nbd_negotiate: return 1 on NBD_OPT_ABORT MAINTAINERS: Promote NBD to supported, with new maintainer Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-07-10nbd: use generic trace subsystem instead of TRACE macroVladimir Sementsov-Ogievskiy
Let NBD use the trace mechanisms already present in qemu. Now you can use the -trace optino of qemu, or the -T/--trace option of qemu-img, qemu-io, and qemu-nbd, to select nbd traces. For qemu, the QMP commands trace-event-{get,set}-state can also toggle tracing on the fly. Example: qemu-nbd --trace 'nbd_*' <image file> # enables all nbd traces Recompilation with CFLAGS=-DDEBUG_NBD is no more needed, furthermore, DEBUG_NBD macro is removed from the code. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20170707152918.23086-11-vsementsov@virtuozzo.com> [eblake: minor tweaks to a couple of traces] Signed-off-by: Eric Blake <eblake@redhat.com>
2017-07-10nbd: refactor tracingVladimir Sementsov-Ogievskiy
Reorganize traces: move, reword, add information, drop extra ones. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20170707152918.23086-10-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
2017-07-10nbd/server: rename clientflags var in nbd_negotiate_optionsVladimir Sementsov-Ogievskiy
Rename 'clientflags' to just 'option'. This variable has nothing to do with flags, but is a single integer representing the option requested by the client. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20170707152918.23086-9-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
2017-07-10nbd/server: fix TRACE in nbd_negotiate_send_rep_lenVladimir Sementsov-Ogievskiy
Fix wrong order of TRACE arguments. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20170707152918.23086-8-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
2017-07-10nbd/client: refactor TRACE of NBD_MAGICVladimir Sementsov-Ogievskiy
We are going to switch from TRACE macro to trace points, this TRACE complicates things, this patch simplifies it. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20170707152918.23086-7-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
2017-07-10nbd/common: nbd_tls_handshake: remove extra TRACEVladimir Sementsov-Ogievskiy
Error is propagated to the caller, TRACE is not needed. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20170707152918.23086-6-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
2017-07-10nbd/server: add errp to nbd_send_reply()Vladimir Sementsov-Ogievskiy
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20170707152918.23086-5-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
2017-07-10nbd/server: use errp instead of LOGVladimir Sementsov-Ogievskiy
Move to modern errp scheme from just LOGging errors. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20170707152918.23086-4-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>