]> Git Repo - qemu.git/log
qemu.git
7 years agos390x/tcg: fix checking for invalid memory check
David Hildenbrand [Tue, 26 Sep 2017 18:33:13 +0000 (20:33 +0200)]
s390x/tcg: fix checking for invalid memory check

It should have been a >=, but let's directly perform a proper access
check to also be able to deal with hotplugged memory later.

Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20170926183318[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agos390x/css: support ccw IDA
Halil Pasic [Thu, 21 Sep 2017 18:08:41 +0000 (20:08 +0200)]
s390x/css: support ccw IDA

Let's add indirect data addressing support for our virtual channel
subsystem. This implementation does not bother with any kind of
prefetching. We simply step through the IDAL on demand.

Signed-off-by: Halil Pasic <[email protected]>
Message-Id: <20170921180841[email protected]>
Reviewed-by: Dong Jia Shi <[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years ago390x/css: introduce maximum data address checking
Halil Pasic [Thu, 21 Sep 2017 18:08:40 +0000 (20:08 +0200)]
390x/css: introduce maximum data address checking

The architecture mandates the addresses to be accessed on the first
indirection level (that is, the data addresses without IDA, and the
(M)IDAW addresses with (M)IDA) to be checked against an CCW format
dependent limit maximum address.  If a violation is detected, the storage
access is not to be performed and a channel program check needs to be
generated. As of today, we fail to do this check.

Let us stick even closer to the architecture specification.

Signed-off-by: Halil Pasic <[email protected]>
Message-Id: <20170921180841[email protected]>
Reviewed-by: Pierre Morel <[email protected]>
Reviewed-by: Dong Jia Shi <[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agovirtio-ccw: use ccw data stream
Halil Pasic [Thu, 21 Sep 2017 18:08:39 +0000 (20:08 +0200)]
virtio-ccw: use ccw data stream

Replace direct access which implicitly assumes no IDA
or MIDA with the new ccw data stream interface which should
cope with these transparently in the future.

Note that checking the return code for ccw_dstream_* will be
done in a follow-on patch.

Signed-off-by: Halil Pasic <[email protected]>
Reviewed-by: Pierre Morel <[email protected]>
Reviewed-by: Dong Jia Shi <[email protected]>
Message-Id: <20170921180841[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agos390x/css: use ccw data stream
Halil Pasic [Thu, 21 Sep 2017 18:08:38 +0000 (20:08 +0200)]
s390x/css: use ccw data stream

Replace direct access which implicitly assumes no IDA
or MIDA with the new ccw data stream interface which should
cope with these transparently in the future.

Note that checking the return code for ccw_dstream_* will be
done in a follow-on patch.

Signed-off-by: Halil Pasic <[email protected]>
Reviewed-by: Dong Jia Shi <[email protected]>
Reviewed-by: Pierre Morel <[email protected]>
Message-Id: <20170921180841[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agos390x/css: introduce css data stream
Halil Pasic [Thu, 21 Sep 2017 18:08:37 +0000 (20:08 +0200)]
s390x/css: introduce css data stream

This is a preparation for introducing handling for indirect data
addressing and modified indirect data addressing (CCW). Here we introduce
an interface which should make the addressing scheme transparent for the
client code. Here we implement only the basic scheme (no IDA or MIDA).

Signed-off-by: Halil Pasic <[email protected]>
Reviewed-by: Dong Jia Shi <[email protected]>
Reviewed-by: Pierre Morel <[email protected]>
Message-Id: <20170921180841[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agos390x/kvm: fix and cleanup storing CPU status
David Hildenbrand [Fri, 22 Sep 2017 14:03:38 +0000 (16:03 +0200)]
s390x/kvm: fix and cleanup storing CPU status

env->psa is a 64bit value, while we copy 4 bytes into the save area,
resulting always in 0 getting stored.

Let's try to reduce such errors by using a proper structure. While at
it, use correct cpu->be conversion (and get_psw_mask()), as we will be
reusing this code for TCG soon.

Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20170922140338[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agos390x: use generic cpu_model parsing
Igor Mammedov [Thu, 21 Sep 2017 12:59:08 +0000 (14:59 +0200)]
s390x: use generic cpu_model parsing

Define default CPU type in generic way in machine class_init
and let common machine code handle cpu_model parsing.

Signed-off-by: Igor Mammedov <[email protected]>
Reviewed-by: David Hildenbrand <[email protected]>
Message-Id: <1505998749[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agos390x/tcg: add basic MSA features
David Hildenbrand [Wed, 20 Sep 2017 15:30:16 +0000 (17:30 +0200)]
s390x/tcg: add basic MSA features

The STFLE bits for the MSA (extension) facilities simply indicate that
the respective instructions can be executed. The QUERY subfunction can then
be used to identify which features exactly are available.

Availability of subfunctions can also vary on real hardware. For now, we
simply implement a CPU model without any available subfunctions except
QUERY (which is always around).

As all MSA functions behave quite similarly, we can use one translation
handler for now. Prepare the code for implementation of actual subfunctions.

At least MSA is helpful for now, as older Linux kernels require this
facility when compiled for a z9 model. Allow to enable the facilities
for the qemu cpu model.

Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20170920153016[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agos390x/tcg: move wrap_address() to internal.h
David Hildenbrand [Wed, 20 Sep 2017 15:30:15 +0000 (17:30 +0200)]
s390x/tcg: move wrap_address() to internal.h

We want to use it in another file.

Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20170920153016[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agos390x/tcg: implement spm (SET PROGRAM MASK)
David Hildenbrand [Wed, 20 Sep 2017 15:30:14 +0000 (17:30 +0200)]
s390x/tcg: implement spm (SET PROGRAM MASK)

Missing and is used inside Linux in the context of CPACF.

Reviewed-by: Richard Henderson <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20170920153016[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' into staging
Peter Maydell [Thu, 5 Oct 2017 15:54:29 +0000 (16:54 +0100)]
Merge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' into staging

# gpg: Signature made Thu 05 Oct 2017 15:25:21 BST
# gpg:                using RSA key 0x9CA4ABB381AB73C8
# gpg: Good signature from "Stefan Hajnoczi <[email protected]>"
# gpg:                 aka "Stefan Hajnoczi <[email protected]>"
# Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35  775A 9CA4 ABB3 81AB 73C8

* remotes/stefanha/tags/tracing-pull-request:
  checkpatch: fix incompatibility with old perl

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/dgilbert/tags/pull-hmp-20171005' into staging
Peter Maydell [Thu, 5 Oct 2017 15:13:46 +0000 (16:13 +0100)]
Merge remote-tracking branch 'remotes/dgilbert/tags/pull-hmp-20171005' into staging

HMP pull 2017-10-05

# gpg: Signature made Thu 05 Oct 2017 11:50:13 BST
# gpg:                using RSA key 0x0516331EBC5BFDE7
# gpg: Good signature from "Dr. David Alan Gilbert (RH2) <[email protected]>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A  9FA9 0516 331E BC5B FDE7

* remotes/dgilbert/tags/pull-hmp-20171005:
  hmp-commands-info: Change "@findex FOO" to "@findex info FOO"
  hmp-commands-info: Move Texinfo stanzas to conventional place
  hmp-commands-info: Fix "info rocker-FOO" misspellings
  hmp: Fix unknown command for subtable
  hmp: Missing handle_errors

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/kraxel/tags/usb-20171005-pull-request' into...
Peter Maydell [Thu, 5 Oct 2017 14:31:06 +0000 (15:31 +0100)]
Merge remote-tracking branch 'remotes/kraxel/tags/usb-20171005-pull-request' into staging

usb bugfixes.

# gpg: Signature made Thu 05 Oct 2017 10:04:15 BST
# gpg:                using RSA key 0x4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <[email protected]>"
# gpg:                 aka "Gerd Hoffmann <[email protected]>"
# gpg:                 aka "Gerd Hoffmann (private) <[email protected]>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/usb-20171005-pull-request:
  usb: fix host-stub.c build race
  usb: Use angle brackets for cacard include directive
  usb: fix libusb config variable name.
  hw/usb/bus: Remove bad object_unparent() from usb_try_create_simple()

Signed-off-by: Peter Maydell <[email protected]>
7 years agocheckpatch: fix incompatibility with old perl
Vladimir Sementsov-Ogievskiy [Wed, 4 Oct 2017 15:44:20 +0000 (18:44 +0300)]
checkpatch: fix incompatibility with old perl

Do not use '/r' modifier which was introduced in perl 5.14.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Daniel P. Berrange <[email protected]>
Fixes: 3e5875afc0f ("checkpatch: check trace-events code style")
Tested-by: Alex Williamson <[email protected]>
Message-id: 20171004154420[email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/berrange/tags/pull-qio-2017-10-04-1' into staging
Peter Maydell [Thu, 5 Oct 2017 13:44:12 +0000 (14:44 +0100)]
Merge remote-tracking branch 'remotes/berrange/tags/pull-qio-2017-10-04-1' into staging

Merge qio 2017/10/04 v1

# gpg: Signature made Wed 04 Oct 2017 13:23:04 BST
# gpg:                using RSA key 0xBE86EBB415104FDF
# gpg: Good signature from "Daniel P. Berrange <[email protected]>"
# gpg:                 aka "Daniel P. Berrange <[email protected]>"
# Primary key fingerprint: DAF3 A6FD B26B 6291 2D0E  8E3F BE86 EBB4 1510 4FDF

* remotes/berrange/tags/pull-qio-2017-10-04-1:
  io: add trace events for websockets frame handling
  io: Attempt to send websocket close messages to client
  io: Reply to ping frames
  io: Ignore websocket PING and PONG frames
  io: Allow empty websocket payload
  io: Add support for fragmented websocket binary frames
  io: Small updates in preparation for websocket changes
  ui: Always remove an old VNC channel watch before adding a new one
  io: use case insensitive check for Connection & Upgrade websock headers
  io: include full error message in websocket handshake trace
  io: send proper HTTP response for websocket errors

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/awilliam/tags/vfio-updates-20171003.0' into...
Peter Maydell [Thu, 5 Oct 2017 12:28:43 +0000 (13:28 +0100)]
Merge remote-tracking branch 'remotes/awilliam/tags/vfio-updates-20171003.0' into staging

VFIO updates 2017-10-03

 - NVIDIA GPUDirect Cliques experimental support (Alex Williamson)

# gpg: Signature made Tue 03 Oct 2017 22:28:43 BST
# gpg:                using RSA key 0x239B9B6E3BB08B22
# gpg: Good signature from "Alex Williamson <[email protected]>"
# gpg:                 aka "Alex Williamson <[email protected]>"
# gpg:                 aka "Alex Williamson <[email protected]>"
# gpg:                 aka "Alex Williamson <[email protected]>"
# Primary key fingerprint: 42F6 C04E 540B D1A9 9E7B  8A90 239B 9B6E 3BB0 8B22

* remotes/awilliam/tags/vfio-updates-20171003.0:
  vfio/pci: Add NVIDIA GPUDirect Cliques support
  vfio/pci: Add virtual capabilities quirk infrastructure
  vfio/pci: Do not unwind on error

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging
Peter Maydell [Thu, 5 Oct 2017 11:02:21 +0000 (12:02 +0100)]
Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging

# gpg: Signature made Tue 03 Oct 2017 19:53:34 BST
# gpg:                using RSA key 0x9CA4ABB381AB73C8
# gpg: Good signature from "Stefan Hajnoczi <[email protected]>"
# gpg:                 aka "Stefan Hajnoczi <[email protected]>"
# Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35  775A 9CA4 ABB3 81AB 73C8

* remotes/stefanha/tags/block-pull-request:
  aio: fix assert when remove poll during destroy
  iothread: delay the context release to finalize
  iothread: export iothread_stop()
  iothread: provide helpers for internal use
  qom: provide root container for internal objs

Signed-off-by: Peter Maydell <[email protected]>
7 years agohmp-commands-info: Change "@findex FOO" to "@findex info FOO"
Markus Armbruster [Mon, 2 Oct 2017 13:45:38 +0000 (15:45 +0200)]
hmp-commands-info: Change "@findex FOO" to "@findex info FOO"

qemu-doc has the monitor commands in the "Function Index".  The "info
FOO" are listed as "FOO" there.  List them as "info FOO" instead.

Signed-off-by: Markus Armbruster <[email protected]>
Message-Id: <20171002134538[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agohmp-commands-info: Move Texinfo stanzas to conventional place
Markus Armbruster [Mon, 2 Oct 2017 13:45:37 +0000 (15:45 +0200)]
hmp-commands-info: Move Texinfo stanzas to conventional place

A command's STEXI..ETEXI stanza follows the command's initializer.
Two commands got them backwards.  Correct that.

Signed-off-by: Markus Armbruster <[email protected]>
Message-Id: <20171002134538[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agohmp-commands-info: Fix "info rocker-FOO" misspellings
Markus Armbruster [Mon, 2 Oct 2017 13:45:36 +0000 (15:45 +0200)]
hmp-commands-info: Fix "info rocker-FOO" misspellings

Screwed up in commit da76ee7.

Signed-off-by: Markus Armbruster <[email protected]>
Message-Id: <20171002134538[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agousb: fix host-stub.c build race
Gerd Hoffmann [Wed, 4 Oct 2017 12:52:10 +0000 (14:52 +0200)]
usb: fix host-stub.c build race

Suggested-by: Thomas Huth <[email protected]>
Signed-off-by: Gerd Hoffmann <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-id: 20171004125210[email protected]

7 years agohmp: Fix unknown command for subtable
Dr. David Alan Gilbert [Thu, 17 Aug 2017 10:42:16 +0000 (11:42 +0100)]
hmp: Fix unknown command for subtable

(qemu) info foo
unknown command: 'foo'

fix this to:
(qemu) info foo
unknown command: 'info foo'

Reported-by: Markus Armbruster <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20170817104216[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agohmp: Missing handle_errors
Dr. David Alan Gilbert [Thu, 17 Aug 2017 10:42:15 +0000 (11:42 +0100)]
hmp: Missing handle_errors

hmp_info_memdev && hmp_info_memory_devices were missing
hmp_handle_error calls.  Add them.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20170817104216[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agoio: add trace events for websockets frame handling
Daniel P. Berrange [Thu, 21 Sep 2017 10:00:47 +0000 (11:00 +0100)]
io: add trace events for websockets frame handling

It is useful to trace websockets frame encoding/decoding when debugging
problems.

Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoio: Attempt to send websocket close messages to client
Brandon Carpenter [Tue, 12 Sep 2017 15:21:53 +0000 (08:21 -0700)]
io: Attempt to send websocket close messages to client

Make a best effort attempt to close websocket connections according to
the RFC. Sends the close message, as room permits in the socket buffer,
and immediately closes the socket.

Signed-off-by: Brandon Carpenter <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoio: Reply to ping frames
Brandon Carpenter [Tue, 12 Sep 2017 15:21:52 +0000 (08:21 -0700)]
io: Reply to ping frames

Add an immediate ping reply (pong) to the outgoing stream when a ping
is received. Unsolicited pongs are ignored.

Signed-off-by: Brandon Carpenter <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoio: Ignore websocket PING and PONG frames
Brandon Carpenter [Tue, 12 Sep 2017 15:21:51 +0000 (08:21 -0700)]
io: Ignore websocket PING and PONG frames

Keep pings and gratuitous pongs generated by web browsers from killing
websocket connections.

Signed-off-by: Brandon Carpenter <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoio: Allow empty websocket payload
Brandon Carpenter [Tue, 12 Sep 2017 15:21:50 +0000 (08:21 -0700)]
io: Allow empty websocket payload

Some browsers send pings/pongs with no payload, so allow empty payloads
instead of closing the connection.

Signed-off-by: Brandon Carpenter <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoio: Add support for fragmented websocket binary frames
Brandon Carpenter [Tue, 12 Sep 2017 15:21:49 +0000 (08:21 -0700)]
io: Add support for fragmented websocket binary frames

Allows fragmented binary frames by saving the previous opcode. Handles
the case where an intermediary (i.e., web proxy) fragments frames
originally sent unfragmented by the client.

Signed-off-by: Brandon Carpenter <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoio: Small updates in preparation for websocket changes
Brandon Carpenter [Tue, 12 Sep 2017 15:21:48 +0000 (08:21 -0700)]
io: Small updates in preparation for websocket changes

Gets rid of unnecessary bit shifting and performs proper EOF checking to
avoid a large number of repeated calls to recvmsg() when a client
abruptly terminates a connection (bug fix).

Signed-off-by: Brandon Carpenter <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoui: Always remove an old VNC channel watch before adding a new one
Brandon Carpenter [Tue, 12 Sep 2017 15:21:47 +0000 (08:21 -0700)]
ui: Always remove an old VNC channel watch before adding a new one

Also set saved handle to zero when removing without adding a new watch.

Signed-off-by: Brandon Carpenter <[email protected]>
Reviewed-by: Paolo Bonzini <[email protected]>
Reviewed-by: Daniel P. Berrange <[email protected]>
7 years agoio: use case insensitive check for Connection & Upgrade websock headers
Daniel P. Berrange [Wed, 6 Sep 2017 13:49:41 +0000 (14:49 +0100)]
io: use case insensitive check for Connection & Upgrade websock headers

When checking the value of the Connection and Upgrade HTTP headers
the websock RFC (6455) requires the comparison to be case insensitive.
The Connection value should be an exact match not a substring.

Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoio: include full error message in websocket handshake trace
Daniel P. Berrange [Wed, 6 Sep 2017 10:38:36 +0000 (11:38 +0100)]
io: include full error message in websocket handshake trace

When the websocket handshake fails it is useful to log the real
error message via the trace points for debugging purposes.

Fixes bug: #1715186

Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agoio: send proper HTTP response for websocket errors
Daniel P. Berrange [Wed, 6 Sep 2017 10:33:17 +0000 (11:33 +0100)]
io: send proper HTTP response for websocket errors

When any error occurs while processing the websockets handshake,
QEMU just terminates the connection abruptly. This is in violation
of the HTTP specs and does not help the client understand what they
did wrong. This is particularly bad when the client gives the wrong
path, as a "404 Not Found" would be very helpful.

Refactor the handshake code so that it always sends a response to
the client unless there was an I/O error.

Fixes bug: #1715186

Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
7 years agovfio/pci: Add NVIDIA GPUDirect Cliques support
Alex Williamson [Tue, 29 Aug 2017 22:05:47 +0000 (16:05 -0600)]
vfio/pci: Add NVIDIA GPUDirect Cliques support

NVIDIA has defined a specification for creating GPUDirect "cliques",
where devices with the same clique ID support direct peer-to-peer DMA.
When running on bare-metal, tools like NVIDIA's p2pBandwidthLatencyTest
(part of cuda-samples) determine which GPUs can support peer-to-peer
based on chipset and topology.  When running in a VM, these tools have
no visibility to the physical hardware support or topology.  This
option allows the user to specify hints via a vendor defined
capability.  For instance:

  <qemu:commandline>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.hostdev0.x-nv-gpudirect-clique=0'/>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.hostdev1.x-nv-gpudirect-clique=1'/>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.hostdev2.x-nv-gpudirect-clique=1'/>
  </qemu:commandline>

This enables two cliques.  The first is a singleton clique with ID 0,
for the first hostdev defined in the XML (note that since cliques
define peer-to-peer sets, singleton clique offer no benefit).  The
subsequent two hostdevs are both added to clique ID 1, indicating
peer-to-peer is possible between these devices.

QEMU only provides validation that the clique ID is valid and applied
to an NVIDIA graphics device, any validation that the resulting
cliques are functional and valid is the user's responsibility.  The
NVIDIA specification allows a 4-bit clique ID, thus valid values are
0-15.

Signed-off-by: Alex Williamson <[email protected]>
7 years agovfio/pci: Add virtual capabilities quirk infrastructure
Alex Williamson [Tue, 29 Aug 2017 22:05:39 +0000 (16:05 -0600)]
vfio/pci: Add virtual capabilities quirk infrastructure

If the hypervisor needs to add purely virtual capabilties, give us a
hook through quirks to do that.  Note that we determine the maximum
size for a capability based on the physical device, if we insert a
virtual capability, that can change.  Therefore if maximum size is
smaller after added virt capabilities, use that.

Signed-off-by: Alex Williamson <[email protected]>
7 years agovfio/pci: Do not unwind on error
Alex Williamson [Tue, 29 Aug 2017 22:05:32 +0000 (16:05 -0600)]
vfio/pci: Do not unwind on error

If vfio_add_std_cap() errors then going to out prepends irrelevant
errors for capabilities we haven't attempted to add as we unwind our
recursive stack.  Just return error.

Fixes: 7ef165b9a8d9 ("vfio/pci: Pass an error object to vfio_add_capabilities")
Signed-off-by: Alex Williamson <[email protected]>
7 years agoaio: fix assert when remove poll during destroy
Stefan Hajnoczi [Thu, 28 Sep 2017 02:59:58 +0000 (10:59 +0800)]
aio: fix assert when remove poll during destroy

After iothread is enabled internally inside QEMU with GMainContext, we
may encounter this warning when destroying the iothread:

(qemu-system-x86_64:19925): GLib-CRITICAL **: g_source_remove_poll:
 assertion '!SOURCE_DESTROYED (source)' failed

The problem is that g_source_remove_poll() does not allow to remove one
source from array if the source is detached from its owner
context. (peterx: which IMHO does not make much sense)

Fix it on QEMU side by avoid calling g_source_remove_poll() if we know
the object is during destruction, and we won't leak anything after all
since the array will be gone soon cleanly even with that fd.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Fam Zheng <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-id: 20170928025958[email protected]
[peterx: write the commit message]
Signed-off-by: Peter Xu <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
7 years agoiothread: delay the context release to finalize
Peter Xu [Thu, 28 Sep 2017 02:59:57 +0000 (10:59 +0800)]
iothread: delay the context release to finalize

When gcontext is used with iothread, the context will be destroyed
during iothread_stop().  That's not good since sometimes we would like
to keep the resources until iothread is destroyed, but we may want to
stop the thread before that point.

Delay the destruction of gcontext to iothread finalize.  Then we can do:

  iothread_stop(thread);
  some_cleanup_on_resources();
  iothread_destroy(thread);

We may need this patch if we want to run chardev IOs in iothreads and
hopefully clean them up correctly.  For more specific information,
please see 2b316774f6 ("qemu-char: do not operate on sources from
finalize callbacks").

Reviewed-by: Fam Zheng <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-id: 20170928025958[email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
7 years agoiothread: export iothread_stop()
Peter Xu [Thu, 28 Sep 2017 02:59:56 +0000 (10:59 +0800)]
iothread: export iothread_stop()

So that internal iothread users can explicitly stop one iothread without
destroying it.

Since at it, fix iothread_stop() to allow it to be called multiple
times.  Before this patch we may call iothread_stop() more than once on
single iothread, while that may not be correct since qemu_thread_join()
is not allowed to run twice.  From manual of pthread_join():

  Joining with a thread that has previously been joined results in
  undefined behavior.

Reviewed-by: Fam Zheng <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-id: 20170928025958[email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
7 years agoiothread: provide helpers for internal use
Peter Xu [Thu, 28 Sep 2017 02:59:55 +0000 (10:59 +0800)]
iothread: provide helpers for internal use

IOThread is a general framework that contains IO loop environment and a
real thread behind.  It's also good to be used internally inside qemu.
Provide some helpers for it to create iothreads to be used internally.

Put all the internal used iothreads into the internal object container.

Reviewed-by: Fam Zheng <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-id: 20170928025958[email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
7 years agoqom: provide root container for internal objs
Peter Xu [Thu, 28 Sep 2017 02:59:54 +0000 (10:59 +0800)]
qom: provide root container for internal objs

We have object_get_objects_root() to keep user created objects, however
no place for objects that will be used internally.  Create such a
container for internal objects.

CC: Andreas Färber <[email protected]>
CC: Markus Armbruster <[email protected]>
CC: Paolo Bonzini <[email protected]>
Suggested-by: Daniel P. Berrange <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Fam Zheng <[email protected]>
Message-id: 20170928025958[email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
Peter Maydell [Tue, 3 Oct 2017 15:27:24 +0000 (16:27 +0100)]
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging

* iothread bugfix (Eduardo)
* Linux headers sync (Dave)
* .gitignore fix (Eric)
* KVM capability check fixes (Greg)
* kvmclock fix (Jim)

# gpg: Signature made Mon 02 Oct 2017 14:31:09 BST
# gpg:                using RSA key 0xBFFBD25F78C7AE83
# gpg: Good signature from "Paolo Bonzini <[email protected]>"
# gpg:                 aka "Paolo Bonzini <[email protected]>"
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini/tags/for-upstream:
  kvmclock: use the updated system_timer_msr
  kvm: check KVM_CAP_NR_VCPUS with kvm_vm_check_extension()
  kvm: check KVM_CAP_SYNC_MMU with kvm_vm_check_extension()
  linux-headers: sync against v4.14-rc1
  iothread: Make iothread_stop() idempotent
  scsi: Ignore executable for in-tree builds

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2017-10-02' into staging
Peter Maydell [Tue, 3 Oct 2017 14:11:00 +0000 (15:11 +0100)]
Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2017-10-02' into staging

QAPI patches for 2017-10-02

# gpg: Signature made Mon 02 Oct 2017 12:09:32 BST
# gpg:                using RSA key 0x3870B400EB918653
# gpg: Good signature from "Markus Armbruster <[email protected]>"
# gpg:                 aka "Markus Armbruster <[email protected]>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* remotes/armbru/tags/pull-qapi-2017-10-02:
  watchdog: Allow setting action on the fly
  watchdog.h: Drop local redefinition of actions enum
  qapi: Rename WatchdogExpirationAction enum

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/kraxel/tags/ui-20170929-pull-request' into...
Peter Maydell [Tue, 3 Oct 2017 12:50:10 +0000 (13:50 +0100)]
Merge remote-tracking branch 'remotes/kraxel/tags/ui-20170929-pull-request' into staging

ui and input patches.

# gpg: Signature made Fri 29 Sep 2017 11:21:45 BST
# gpg:                using RSA key 0x4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <[email protected]>"
# gpg:                 aka "Gerd Hoffmann <[email protected]>"
# gpg:                 aka "Gerd Hoffmann (private) <[email protected]>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/ui-20170929-pull-request:
  ui: add tracing of VNC authentication process
  ui: add tracing of VNC operations related to QIOChannel
  virtio-input: send rel-wheel events for wheel buttons
  egl: misc framebuffer helper improvements.
  console: purge curses bits from console.h

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/famz/tags/docker-testing-pull-request' into...
Peter Maydell [Tue, 3 Oct 2017 11:43:03 +0000 (12:43 +0100)]
Merge remote-tracking branch 'remotes/famz/tags/docker-testing-pull-request' into staging

# gpg: Signature made Fri 29 Sep 2017 04:17:37 BST
# gpg:                using RSA key 0xCA35624C6A9171C6
# gpg: Good signature from "Fam Zheng <[email protected]>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 5003 7CB7 9706 0F76 F021  AD56 CA35 624C 6A91 71C6

* remotes/famz/tags/docker-testing-pull-request:
  docker: Don't mount ccache db if NOUSER=1
  docker: test-block: Don't continue if build fails
  tests/docker/run: don't source /etc/profile
  docker: Fix test-mingw
  docker: add installation to build tests

Signed-off-by: Peter Maydell <[email protected]>
7 years agokvmclock: use the updated system_timer_msr
Jim Somerville [Fri, 29 Sep 2017 16:00:19 +0000 (12:00 -0400)]
kvmclock: use the updated system_timer_msr

Fixes e2b6c17 (kvmclock: update system_time_msr address forcibly)
which makes a call to get the latest value of the address
stored in system_timer_msr, but then uses the old address anyway.

Signed-off-by: Jim Somerville <[email protected]>
Message-Id: <59b67db0bd15a46ab47c3aa657c81a4c11f168ea.1506702472[email protected]>
Cc: [email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
7 years agokvm: check KVM_CAP_NR_VCPUS with kvm_vm_check_extension()
Greg Kurz [Thu, 21 Sep 2017 16:01:02 +0000 (18:01 +0200)]
kvm: check KVM_CAP_NR_VCPUS with kvm_vm_check_extension()

On a modern server-class ppc host with the following CPU topology:

Architecture:          ppc64le
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0,8,16,24
Off-line CPU(s) list:  1-7,9-15,17-23,25-31
Thread(s) per core:    1

If both KVM PR and KVM HV loaded and we pass:

        -machine pseries,accel=kvm,kvm-type=PR -smp 8

We expect QEMU to warn that this exceeds the number of online CPUs:

Warning: Number of SMP cpus requested (8) exceeds the recommended
 cpus supported by KVM (4)
Warning: Number of hotpluggable cpus requested (8) exceeds the
 recommended cpus supported by KVM (4)

but nothing is printed...

This happens because on ppc the KVM_CAP_NR_VCPUS capability is VM
specific  ndreally depends on the KVM type, but we currently use it
as a global capability. And KVM returns a fallback value based on
KVM HV being present. Maybe KVM on POWER shouldn't presume anything
as long as it doesn't have a VM, but in all cases, we should call
KVM_CREATE_VM first and use KVM_CAP_NR_VCPUS as a VM capability.

This patch hence changes kvm_recommended_vcpus() accordingly and
moves the sanity checking of smp_cpus after the VM creation.

It is okay for the other archs that also implement KVM_CAP_NR_VCPUS,
ie, mips, s390, x86 and arm, because they don't depend on the VM
being created or not.

Signed-off-by: Greg Kurz <[email protected]>
Reviewed-by: David Gibson <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-Id: <150600966286.30533.10909862523552370889[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
7 years agokvm: check KVM_CAP_SYNC_MMU with kvm_vm_check_extension()
Greg Kurz [Thu, 21 Sep 2017 16:00:53 +0000 (18:00 +0200)]
kvm: check KVM_CAP_SYNC_MMU with kvm_vm_check_extension()

On a server-class ppc host, this capability depends on the KVM type,
ie, HV or PR. If both KVM are present in the kernel, we will always
get the HV specific value, even if we explicitely requested PR on
the command line.

This can have an impact if we're using hugepages or a balloon device.

Since we've already created the VM at the time any user calls
kvm_has_sync_mmu(), switching to kvm_vm_check_extension() is
enough to fix any potential issue.

It is okay for the other archs that also implement KVM_CAP_SYNC_MMU,
ie, mips, s390, x86 and arm, because they don't depend on the VM being
created or not.

While here, let's cache the state of this extension in a bool variable,
since it has several users in the code, as suggested by Thomas Huth.

Signed-off-by: Greg Kurz <[email protected]>
Message-Id: <150600965332.30533.14702405809647835716[email protected]>
Reviewed-by: David Gibson <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
7 years agowatchdog: Allow setting action on the fly
Michal Privoznik [Thu, 7 Sep 2017 08:05:26 +0000 (10:05 +0200)]
watchdog: Allow setting action on the fly

Currently, the only time that users can set watchdog action is at
the start as all we expose is this -watchdog-action command line
argument. This is suboptimal when users want to plug the device
later via monitor. Alternatively, they might want to change the
action for already existing device on the fly.

Inspired by: https://bugzilla.redhat.com/show_bug.cgi?id=1447169

Signed-off-by: Michal Privoznik <[email protected]>
Message-Id: <35d6ce6fe3d357122d73b8272bc8198134c74104.1504771369[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Reviewed-by: Daniel P. Berrange <[email protected]>
[Missing colon in doc comment fixed]
Signed-off-by: Markus Armbruster <[email protected]>
7 years agowatchdog.h: Drop local redefinition of actions enum
Michal Privoznik [Thu, 7 Sep 2017 08:05:25 +0000 (10:05 +0200)]
watchdog.h: Drop local redefinition of actions enum

We already have enum that enumerates all the actions that a
watchdog can take when hitting its timeout: WatchdogAction.
Use that instead of inventing our own.

Signed-off-by: Michal Privoznik <[email protected]>
Message-Id: <ce2790634e6a1b3b6cf90462399d17bad83f0290.1504771369[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Reviewed-by: Daniel P. Berrange <[email protected]>
Signed-off-by: Markus Armbruster <[email protected]>
7 years agoqapi: Rename WatchdogExpirationAction enum
Michal Privoznik [Thu, 7 Sep 2017 08:05:24 +0000 (10:05 +0200)]
qapi: Rename WatchdogExpirationAction enum

The new name is WatchdogAction which is shorter,

Signed-off-by: Michal Privoznik <[email protected]>
Message-Id: <dbd61a0928821348486d0d6260be2bd3b02b6402.1504771369[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Reviewed-by: Daniel P. Berrange <[email protected]>
Signed-off-by: Markus Armbruster <[email protected]>
7 years agousb: Use angle brackets for cacard include directive
Fam Zheng [Wed, 20 Sep 2017 08:59:52 +0000 (16:59 +0800)]
usb: Use angle brackets for cacard include directive

This is a library header, so angle brackets are more appropriate; also
move the line to before QEMU headers, as is recommended in HACKING.

Signed-off-by: Fam Zheng <[email protected]>
Message-id: 20170920085952[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
7 years agousb: fix libusb config variable name.
Gerd Hoffmann [Tue, 26 Sep 2017 06:38:20 +0000 (08:38 +0200)]
usb: fix libusb config variable name.

Cc: Jan Kiszka <[email protected]>
Fixes: 4e5ee5b21c84fe3023a64b5cc2e12a52ab0597c1
Signed-off-by: Gerd Hoffmann <[email protected]>
Tested-by: Jan Kiszka <[email protected]>
Message-id: 20170926063820[email protected]

7 years agohw/usb/bus: Remove bad object_unparent() from usb_try_create_simple()
Thomas Huth [Wed, 27 Sep 2017 15:28:26 +0000 (17:28 +0200)]
hw/usb/bus: Remove bad object_unparent() from usb_try_create_simple()

Valgrind detects an invalid read operation when hot-plugging of an
USB device fails:

$ valgrind x86_64-softmmu/qemu-system-x86_64 -device usb-ehci -nographic -S
==30598== Memcheck, a memory error detector
==30598== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==30598== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info
==30598== Command: x86_64-softmmu/qemu-system-x86_64 -device usb-ehci -nographic -S
==30598==
QEMU 2.10.50 monitor - type 'help' for more information
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
==30598== Invalid read of size 8
==30598==    at 0x60EF50: object_unparent (object.c:445)
==30598==    by 0x580F0D: usb_try_create_simple (bus.c:346)
==30598==    by 0x581BEB: usb_claim_port (bus.c:451)
==30598==    by 0x582310: usb_qdev_realize (bus.c:257)
==30598==    by 0x4CB399: device_set_realized (qdev.c:914)
==30598==    by 0x60E26D: property_set_bool (object.c:1886)
==30598==    by 0x61235E: object_property_set_qobject (qom-qobject.c:27)
==30598==    by 0x61000F: object_property_set_bool (object.c:1162)
==30598==    by 0x4567C3: qdev_device_add (qdev-monitor.c:630)
==30598==    by 0x456D52: qmp_device_add (qdev-monitor.c:807)
==30598==    by 0x470A99: hmp_device_add (hmp.c:1933)
==30598==    by 0x3679C3: handle_hmp_command (monitor.c:3123)

The object_unparent() here is not necessary anymore since commit
69382d8b3e8600b3 ("qdev: Fix object reference leak in case device.realize()
fails"), so let's remove it now.

Suggested-by: Paolo Bonzini <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
Message-id: 1506526106[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
7 years agolinux-headers: sync against v4.14-rc1
Alexey Perevalov [Fri, 22 Sep 2017 12:59:47 +0000 (15:59 +0300)]
linux-headers: sync against v4.14-rc1

Signed-off-by: Alexey Perevalov <[email protected]>
Message-Id: <1506085187[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
7 years agoiothread: Make iothread_stop() idempotent
Eduardo Habkost [Tue, 26 Sep 2017 13:00:28 +0000 (10:00 -0300)]
iothread: Make iothread_stop() idempotent

Currently, iothread_stop_all() makes all iothread objects unsafe
to be destroyed, because qemu_thread_join() ends up being called
twice.

To fix this, make iothread_stop() idempotent by checking
thread->stopped.

Fixes the following crash:

  qemu-system-x86_64 -object iothread,id=iothread0 -monitor stdio -display none
  QEMU 2.10.50 monitor - type 'help' for more information
  (qemu) quit
  qemu: qemu_thread_join: No such process
  Aborted (core dumped)

Reported-by: Christian Borntraeger <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
Message-Id: <20170926130028[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
7 years agoscsi: Ignore executable for in-tree builds
Eric Blake [Tue, 26 Sep 2017 15:14:21 +0000 (10:14 -0500)]
scsi: Ignore executable for in-tree builds

The new qemu-pr-helper (commit b855f8d17) should not be checked in,
even when doing in-tree builds.

Signed-off-by: Eric Blake <[email protected]>
Message-Id: <20170926151421[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
7 years agoui: add tracing of VNC authentication process
Daniel P. Berrange [Thu, 21 Sep 2017 12:15:28 +0000 (13:15 +0100)]
ui: add tracing of VNC authentication process

Trace anything related to authentication in the VNC protocol
handshake

Signed-off-by: Daniel P. Berrange <[email protected]>
Message-id: 20170921121528[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
7 years agoui: add tracing of VNC operations related to QIOChannel
Daniel P. Berrange [Thu, 21 Sep 2017 12:15:27 +0000 (13:15 +0100)]
ui: add tracing of VNC operations related to QIOChannel

Trace anything which opens/closes/wraps a QIOChannel in the
VNC server.

Signed-off-by: Daniel P. Berrange <[email protected]>
Message-id: 20170921121528[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
7 years agovirtio-input: send rel-wheel events for wheel buttons
Gerd Hoffmann [Tue, 26 Sep 2017 11:32:43 +0000 (13:32 +0200)]
virtio-input: send rel-wheel events for wheel buttons

qemu uses wheel-up/down button events for mouse wheel input, however
linux applications typically want REL_WHEEL events.

This fixes wheel with linux guests. Tested with X11/wayland, and
windows virtio-input driver.

Based on a patch from Marc.
Added property to enable/disable wheel axis.

Cc: Marc-André Lureau <[email protected]>
Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20170926113243[email protected]

7 years agoegl: misc framebuffer helper improvements.
Gerd Hoffmann [Wed, 27 Sep 2017 11:50:31 +0000 (13:50 +0200)]
egl: misc framebuffer helper improvements.

Rename the functions to to say "setup" instead of "create" because they
support being called multiple times on the same egl framebuffer.

Properly delete unused textures, update function interfaces to support
this.

Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20170927115031[email protected]

7 years agoconsole: purge curses bits from console.h
Gerd Hoffmann [Wed, 27 Sep 2017 10:38:11 +0000 (12:38 +0200)]
console: purge curses bits from console.h

Handle the translation from vga chars to curses chars in curses_update()
instead of console_write_ch().  Purge any curses support bits from
ui/console.h include file.

Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20170927103811[email protected]

7 years agodocker: Don't mount ccache db if NOUSER=1
Fam Zheng [Mon, 25 Sep 2017 07:54:58 +0000 (15:54 +0800)]
docker: Don't mount ccache db if NOUSER=1

With NOUSER=1 the container runs code as root, which may create
privileged files that will not be be accssible next time. Skip ccache
dir mount in this case.

Signed-off-by: Fam Zheng <[email protected]>
Message-Id: <20170925075458[email protected]>
Acked-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Alex Bennée <[email protected]>
7 years agodocker: test-block: Don't continue if build fails
Fam Zheng [Tue, 26 Sep 2017 11:01:34 +0000 (19:01 +0800)]
docker: test-block: Don't continue if build fails

Report error and exit upon compiling error, otherwise the iotests output
will be pure noise.

Signed-off-by: Fam Zheng <[email protected]>
Message-Id: <20170926110134[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Fam Zheng <[email protected]>
7 years agotests/docker/run: don't source /etc/profile
Alex Bennée [Tue, 26 Sep 2017 13:36:22 +0000 (14:36 +0100)]
tests/docker/run: don't source /etc/profile

The usual behaviour of /etc/profile is to set the default PATH for
users. This runs into problems when we have updated PATH in our
dockerfile e.g. to access a cross-compiler in a non-standard
location. It shouldn't be needed anyway as we inherit the env from the
image when it was setup.

Signed-off-by: Alex Bennée <[email protected]>
CC: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <20170926133622[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Fam Zheng <[email protected]>
7 years agodocker: Fix test-mingw
Fam Zheng [Mon, 25 Sep 2017 08:29:13 +0000 (16:29 +0800)]
docker: Fix test-mingw

Feature "dtc" is explicitly required by test-mingw, but is not detected
by the run script since we switched to archive-source.sh in b7f404201e4.
Since it isn't available in the Fedora image which runs this test on
patchew, the way we get dtc is still from submodule.

archive-source.sh takes care of bundling the submodule files already, so
what we need to do is just checking if files are there. Makefile is
chosen because it is one that is unlikely to get renamed in the future.

Signed-off-by: Fam Zheng <[email protected]>
Message-Id: <20170925082913[email protected]>
Reviewed-by: Alistair Francis <[email protected]>
Signed-off-by: Fam Zheng <[email protected]>
7 years agodocker: add installation to build tests
Paolo Bonzini [Fri, 22 Sep 2017 15:49:31 +0000 (17:49 +0200)]
docker: add installation to build tests

Basic test that "make install" works; this requires msgfmt so add
gettext to the packages.

Signed-off-by: Paolo Bonzini <[email protected]>
Message-Id: <1506095371[email protected]>
[Rebase to master. - Fam]
Signed-off-by: Fam Zheng <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20170927a' into...
Peter Maydell [Wed, 27 Sep 2017 21:44:51 +0000 (22:44 +0100)]
Merge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20170927a' into staging

Migration pull 2017-09-27

# gpg: Signature made Wed 27 Sep 2017 14:56:23 BST
# gpg:                using RSA key 0x0516331EBC5BFDE7
# gpg: Good signature from "Dr. David Alan Gilbert (RH2) <[email protected]>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain 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-20170927a:
  migration: Route more error paths
  migration: Route errors up through vmstate_save
  migration: wire vmstate_save_state errors up to vmstate_subsection_save
  migration: Check field save returns
  migration: check pre_save return in vmstate_save_state
  migration: pre_save return int
  migration: disable auto-converge during bulk block migration

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.11-20170927' into staging
Peter Maydell [Wed, 27 Sep 2017 17:20:31 +0000 (18:20 +0100)]
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.11-20170927' into staging

ppc patch queue 2017-09-27

Contains
 * a number of Mac machine type fixes
 * a number of embedded machine type fixes (preliminary to adding the
   Sam460ex board)
 * a important fix for handling of migration with KVM PR
 * assorted other minor fixes and cleanups

# gpg: Signature made Wed 27 Sep 2017 08:40:48 BST
# gpg:                using RSA key 0x6C38CACA20D9B392
# gpg: Good signature from "David Gibson <[email protected]>"
# gpg:                 aka "David Gibson (Red Hat) <[email protected]>"
# gpg:                 aka "David Gibson (ozlabs.org) <[email protected]>"
# gpg:                 aka "David Gibson (kernel.org) <[email protected]>"
# Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392

* remotes/dgibson/tags/ppc-for-2.11-20170927: (26 commits)
  macio: use object link between MACIO_IDE and MAC_DBDMA object
  macio: pass channel into MACIOIDEState via qdev property
  mac_dbdma: remove DBDMA_init() function
  mac_dbdma: QOMify
  mac_dbdma: remove unused IO fields from DBDMAState
  spapr: fix the value of SDR1 in kvmppc_put_books_sregs()
  ppc/pnv: check for OPAL firmware file presence
  ppc: remove all unused CPU definitions
  ppc: remove unused CPU definitions
  spapr_pci: make index property mandatory
  macio: convert pmac_ide_ops from old_mmio
  ppc/pnv: Improve macro parenthesization
  spapr: introduce helpers to migrate HPT chunks and the end marker
  ppc/kvm: generalize the use of kvmppc_get_htab_fd()
  ppc/kvm: change kvmppc_get_htab_fd() to return -errno on error
  ppc: Fix OpenPIC model
  ppc/ide/macio: Add missing registers
  ppc/mac: More rework of the DBDMA emulation
  ppc/mac: Advertise a high clock frequency for NewWorld Macs
  ppc: QOMify g3beige machine
  ...

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Wed, 27 Sep 2017 15:48:39 +0000 (16:48 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches

# gpg: Signature made Tue 26 Sep 2017 14:52:32 BST
# gpg:                using RSA key 0x7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <[email protected]>"
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream: (24 commits)
  block/qcow2-bitmap: fix use of uninitialized pointer
  qemu-iotests: add shrinking image test
  qcow2: add shrink image support
  qcow2: add qcow2_cache_discard
  qemu-img: add --shrink flag for resize
  iotests: fix 181: enable postcopy-ram capability on target
  qemu-iotests: Test change-backing-file command
  block: Fix permissions after bdrv_reopen()
  block: reopen: Queue children after their parents
  block: Base permissions on rw state after reopen
  block: Add reopen queue to bdrv_check_perm()
  block: Add reopen_queue to bdrv_child_perm()
  qemu-io: Drop write permissions before read-only reopen
  block: Clean up some bad code in the vvfat driver
  block/throttle-groups.c: allocate RestartData on the heap
  throttle: Assert that bkt->max is valid in throttle_compute_wait()
  iotests: Print full path of bad output if mismatch
  iotests: use virtio aliases for 067
  iotests: use -ccw on s390x for 051
  iotests: use -ccw on s390x for 040, 139, and 182
  ...

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/cohuck/tags/s390x-20170927' into staging
Peter Maydell [Wed, 27 Sep 2017 14:59:35 +0000 (15:59 +0100)]
Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20170927' into staging

Another s390x compat fix that should make it into 2.10.1.

# gpg: Signature made Wed 27 Sep 2017 10:30:16 BST
# gpg:                using RSA key 0xDECF6B93C6F02FAF
# gpg: Good signature from "Cornelia Huck <[email protected]>"
# gpg:                 aka "Cornelia Huck <[email protected]>"
# gpg:                 aka "Cornelia Huck <[email protected]>"
# gpg:                 aka "Cornelia Huck <[email protected]>"
# gpg:                 aka "Cornelia Huck <[email protected]>"
# Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0  18CE DECF 6B93 C6F0 2FAF

* remotes/cohuck/tags/s390x-20170927:
  s390x/cpumodel: remove ais from z14 default model-> also for 2.10.1

Signed-off-by: Peter Maydell <[email protected]>
7 years agomigration: Route more error paths
Dr. David Alan Gilbert [Mon, 25 Sep 2017 11:29:17 +0000 (12:29 +0100)]
migration: Route more error paths

vmstate_save_state is called in lots of places.
Route error returns from the easier cases back up;  there are lots
of more complex cases where their own error paths need fixing.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20170925112917[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  Commit message fix up as Peter's review

7 years agomigration: Route errors up through vmstate_save
Dr. David Alan Gilbert [Mon, 25 Sep 2017 11:29:16 +0000 (12:29 +0100)]
migration: Route errors up through vmstate_save

Route the errors from vsmtate_save_state back up through
vmstate_save and out to the normal device state path.
That's the normal error path done.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20170925112917[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agomigration: wire vmstate_save_state errors up to vmstate_subsection_save
Dr. David Alan Gilbert [Mon, 25 Sep 2017 11:29:15 +0000 (12:29 +0100)]
migration: wire vmstate_save_state errors up to vmstate_subsection_save

Route the errors from vmstate_save_state up through
vmstate_subsection_save (and back down, all rather recursive).

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20170925112917[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  Commit message fixed up as per Peter's review

7 years agomigration: Check field save returns
Dr. David Alan Gilbert [Mon, 25 Sep 2017 11:29:14 +0000 (12:29 +0100)]
migration: Check field save returns

Check the return values from vmstate_save_state for fields and also the
return values from 'put' for fields that use that.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20170925112917[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agomigration: check pre_save return in vmstate_save_state
Dr. David Alan Gilbert [Mon, 25 Sep 2017 11:29:13 +0000 (12:29 +0100)]
migration: check pre_save return in vmstate_save_state

Check the return value of pre_save state and fail vmstate_save_state
if the pre_save failed.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20170925112917[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agomigration: pre_save return int
Dr. David Alan Gilbert [Mon, 25 Sep 2017 11:29:12 +0000 (12:29 +0100)]
migration: pre_save return int

Modify the pre_save method on VMStateDescription to return an int
rather than void so that it potentially can fail.

Changed zillions of devices to make them return 0; the only
case I've made it return non-0 is hw/intc/s390_flic_kvm.c that already
had an error_report/return case.

Note: If you add an error exit in your pre_save you must emit
an error_report to say why.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20170925112917[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agomigration: disable auto-converge during bulk block migration
Peter Lieven [Tue, 26 Sep 2017 10:33:16 +0000 (12:33 +0200)]
migration: disable auto-converge during bulk block migration

auto-converge and block migration currently do not play well together.
During block migration the auto-converge logic detects that ram
migration makes no progress and thus throttles down the vm until
it nearly stalls completely. Avoid this by disabling the throttling
logic during the bulk phase of the block migration.

Cc: [email protected]
Signed-off-by: Peter Lieven <[email protected]>
Message-Id: <1506421996[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
7 years agos390x/cpumodel: remove ais from z14 default model-> also for 2.10.1
Christian Borntraeger [Wed, 27 Sep 2017 07:20:28 +0000 (09:20 +0200)]
s390x/cpumodel: remove ais from z14 default model-> also for 2.10.1

We disabled ais for 2.10, so let's also remove it from the z14
default model.

Fixes: 3f2d07b3b01e ("s390x/ais: for 2.10 stable: disable ais facility")
CC: [email protected]
Signed-off-by: Christian Borntraeger <[email protected]>
Message-Id: <20170927072030[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
7 years agomacio: use object link between MACIO_IDE and MAC_DBDMA object
Mark Cave-Ayland [Sun, 24 Sep 2017 14:47:44 +0000 (15:47 +0100)]
macio: use object link between MACIO_IDE and MAC_DBDMA object

Using a standard QOM object link we can pass a reference to the MAC_DBDMA
controller to the MACIO_IDE object which removes the last external parameter
to macio_ide_register_dma().

Signed-off-by: Mark Cave-Ayland <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agomacio: pass channel into MACIOIDEState via qdev property
Mark Cave-Ayland [Sun, 24 Sep 2017 14:47:43 +0000 (15:47 +0100)]
macio: pass channel into MACIOIDEState via qdev property

One of the reasons macio_ide_register_dma() needs to exist is because the
channel id isn't passed into the MACIO_IDE object. Pass in the channel id
using a qdev property to remove this requirement.

Signed-off-by: Mark Cave-Ayland <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agomac_dbdma: remove DBDMA_init() function
Mark Cave-Ayland [Sun, 24 Sep 2017 14:47:42 +0000 (15:47 +0100)]
mac_dbdma: remove DBDMA_init() function

Instead we can now instantiate the MAC_DBDMA object directly within the
macio device. We also add the DBDMA device as a child property so that
it is possible to retrieve later.

Signed-off-by: Mark Cave-Ayland <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agomac_dbdma: QOMify
Mark Cave-Ayland [Sun, 24 Sep 2017 14:47:41 +0000 (15:47 +0100)]
mac_dbdma: QOMify

Signed-off-by: Mark Cave-Ayland <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agomac_dbdma: remove unused IO fields from DBDMAState
Mark Cave-Ayland [Sun, 24 Sep 2017 14:47:40 +0000 (15:47 +0100)]
mac_dbdma: remove unused IO fields from DBDMAState

These fields were used to manually handle IO requests that weren't aligned
to a sector boundary before this feature was supported by the block API.

Once the block API changed to support byte-aligned IO requests, the macio
controller was switched over to use it in commit be1e343 but these fields
were accidentally left behind. Remove them, including the initialisation
in DBDMA_init().

Signed-off-by: Mark Cave-Ayland <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr: fix the value of SDR1 in kvmppc_put_books_sregs()
Greg Kurz [Mon, 25 Sep 2017 11:00:02 +0000 (13:00 +0200)]
spapr: fix the value of SDR1 in kvmppc_put_books_sregs()

When running with KVM PR, if a new HPT is allocated we need to inform
KVM about the HPT address and size. This is currently done by hacking
the value of SDR1 and pushing it to KVM in several places.

Also, migration breaks the guest since it is very unlikely the HPT has
the same address in source and destination, but we push the incoming
value of SDR1 to KVM anyway.

This patch introduces a new virtual hypervisor hook so that the spapr
code can provide the correct value of SDR1 to be pushed to KVM each
time kvmppc_put_books_sregs() is called.

It allows to get rid of all the hacking in the spapr/kvmppc code and
it fixes migration of nested KVM PR.

Suggested-by: David Gibson <[email protected]>
Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc/pnv: check for OPAL firmware file presence
Cédric Le Goater [Mon, 25 Sep 2017 08:58:25 +0000 (10:58 +0200)]
ppc/pnv: check for OPAL firmware file presence

and exit before uselessly trying to load it if the file does not
exists.

Issue discovered by Coverity Scan.

Signed-off-by: Cédric Le Goater <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc: remove all unused CPU definitions
John Snow [Tue, 19 Sep 2017 21:36:11 +0000 (17:36 -0400)]
ppc: remove all unused CPU definitions

Remove *all* unused CPU definitions as indicated by compile-time
`#if 0` constructs.

Signed-off-by: John Snow <[email protected]>
[dwg: Removed some additional now-useless comments]
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc: remove unused CPU definitions
John Snow [Tue, 19 Sep 2017 21:36:10 +0000 (17:36 -0400)]
ppc: remove unused CPU definitions

Following commit aef77960, remove now-unused definitions from
cpu-models.h.

Signed-off-by: John Snow <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_pci: make index property mandatory
Greg Kurz [Wed, 20 Sep 2017 14:46:20 +0000 (16:46 +0200)]
spapr_pci: make index property mandatory

PHBs can be created with an index property, in which case the machine
code automatically sets all the MMIO windows at addresses derived from
the index. Alternatively, they can be manually created without index,
but the user has to provide addresses for all MMIO windows.

The non-index way happens to be more trouble than it's worth: it's
difficult to use, keeps requiring (potentially incompatible) changes
when some new parameter needs adding, and is awkward to check for
collisions. It currently even has a bug that prevents to use two
non-index PHBs because their child DRCs are all derived from the
same index == -1 value, and, thus, collide.

This patch hence makes the index property mandatory. As a consequence,
the PHB's memory regions and BUID are now always configured according
to the index, and it is no longer possible to set them from the command
line.

This DOES BREAK backwards compat, but we don't think the non-index
PHB feature was used in practice (at least libvirt doesn't) and the
simplification is worth it.

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agomacio: convert pmac_ide_ops from old_mmio
Mark Cave-Ayland [Wed, 20 Sep 2017 06:20:01 +0000 (07:20 +0100)]
macio: convert pmac_ide_ops from old_mmio

Signed-off-by: Mark Cave-Ayland <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc/pnv: Improve macro parenthesization
Eric Blake [Tue, 19 Sep 2017 14:16:03 +0000 (09:16 -0500)]
ppc/pnv: Improve macro parenthesization

Although none of the existing macro call-sites were broken,
it's always better to write macros that properly parenthesize
arguments that can be complex expressions, so that the intended
order of operations is not broken.

Signed-off-by: Eric Blake <[email protected]>
Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr: introduce helpers to migrate HPT chunks and the end marker
Greg Kurz [Tue, 19 Sep 2017 14:11:07 +0000 (16:11 +0200)]
spapr: introduce helpers to migrate HPT chunks and the end marker

This consolidates some duplicated code in a dedicated helpers.

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc/kvm: generalize the use of kvmppc_get_htab_fd()
Greg Kurz [Fri, 15 Sep 2017 13:16:20 +0000 (15:16 +0200)]
ppc/kvm: generalize the use of kvmppc_get_htab_fd()

The use of KVM_PPC_GET_HTAB_FD is open-coded in kvmppc_read_hptes()
and kvmppc_write_hpte().

This patch modifies kvmppc_get_htab_fd() so that it can be used
everywhere we need to access the in-kernel htab:
- add an index argument
  => only kvmppc_read_hptes() passes an actual index, all other users
     pass 0
- add an errp argument to propagate error messages to the caller.
  => spapr migration code prints the error
  => hpte helpers pass &error_abort to keep the current behavior
     of hw_error()

While here, this also fixes a bug in kvmppc_write_hpte() so that it
opens the htab fd for writing instead of reading as it currently does.
This never broke anything because we currently never call this code,
as explained in the changelog of commit c1385933804bb:

"This support updating htab managed by the hypervisor. Currently
 we don't have any user for this feature. This actually bring the
 store_hpte interface in-line with the load_hpte one. We may want
 to use this when we want to emulate henter hcall in qemu for HV
 kvm."

The above is still true today.

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc/kvm: change kvmppc_get_htab_fd() to return -errno on error
Greg Kurz [Fri, 15 Sep 2017 13:16:10 +0000 (15:16 +0200)]
ppc/kvm: change kvmppc_get_htab_fd() to return -errno on error

When kvmppc_get_htab_fd() fails, its return value is propagated up to
qemu_savevm_state_iterate() or to qemu_savevm_state_complete_precopy().
All savevm handlers expect to receive a negative errno on error.

Let's patch kvmppc_get_htab_fd() accordingly.

While here, let's change htab_load() in the spapr code to also
propagate the error, since it doesn't make sense to abort() if
we couldn't get the htab fd from KVM.

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc: Fix OpenPIC model
Benjamin Herrenschmidt [Sun, 17 Sep 2017 17:15:46 +0000 (18:15 +0100)]
ppc: Fix OpenPIC model

Apple uses an IBM MPIC2A without timers, it has 64 sources.

Signed-off-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc/ide/macio: Add missing registers
Benjamin Herrenschmidt [Wed, 20 Sep 2017 06:20:00 +0000 (07:20 +0100)]
ppc/ide/macio: Add missing registers

The timing register exists on all variants of MacIO IDE, we just
store and return its value.

The interrupts register only exists on KeyLargo but it doesn't
hurt to have it. The lack of this register causes MacOS X to
hangs under some circumstances.

Both are 32-bit only. The HW might support smaller access sizes
but no known OS uses them.

Because the core IDE subsystem doesn't provide us with a way
to query the main (level) interrupt state, nor do we have a way
to know that DBDMA issued a (edge) interrupt, we reflect both
through a private pair of qirq's in order to maintain the
register state.

Signed-off-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc/mac: More rework of the DBDMA emulation
Benjamin Herrenschmidt [Sun, 17 Sep 2017 17:15:45 +0000 (18:15 +0100)]
ppc/mac: More rework of the DBDMA emulation

This completely reworks the handling of the control register
according to my understanding of the HW and the spec.

It should (hopefully ... still testing) fix a number of issues
most notably cases of MacOS hanging.

Also update dbdma_unassigned_rw() and dbdma_unassigned_flush() to
have the expected behaviour now that flush is handled slightly
differently.

Signed-off-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Mark Cave-Ayland <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc/mac: Advertise a high clock frequency for NewWorld Macs
Benjamin Herrenschmidt [Sun, 17 Sep 2017 17:15:42 +0000 (18:15 +0100)]
ppc/mac: Advertise a high clock frequency for NewWorld Macs

We use 900Mhz, otherwise MacOS X 10.5 refuses to install.

Signed-off-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: David Gibson <[email protected]>
This page took 0.098472 seconds and 4 git commands to generate.