qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] fde820: s390x/css: handle ccw-0 TIC correctly


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] fde820: s390x/css: handle ccw-0 TIC correctly
Date: Mon, 07 Sep 2015 09:30:06 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: fde8206b8061f808c880709c2ac26a645b11c211
      
https://github.com/qemu/qemu/commit/fde8206b8061f808c880709c2ac26a645b11c211
  Author: Pierre Morel <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/css.c

  Log Message:
  -----------
  s390x/css: handle ccw-0 TIC correctly

In CCW-0 format TIC command 4 highest bits are ignored in the subchannel.
In CCW-1 format the TIC command 4 highest bits must be 0.
To convert TIC from CCW-0 to CCW-1 we clear the 4 highest bits
to guarantee compatibility.

Signed-off-by: Pierre Morel <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: fa4463e0432ab66432a28d6b975f8eed99b3f4fa
      
https://github.com/qemu/qemu/commit/fa4463e0432ab66432a28d6b975f8eed99b3f4fa
  Author: Cornelia Huck <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/css.c

  Log Message:
  -----------
  s390x/css: ccw-0 enforces count > 0

Type-0 ccws need to have a count > 0 for any command other than TIC.
Generate a channel-program check if this is not the case.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 3335ddddf9e5ba7743dc8e3f767f4ef857ccd20c
      
https://github.com/qemu/qemu/commit/3335ddddf9e5ba7743dc8e3f767f4ef857ccd20c
  Author: Cornelia Huck <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/event-facility.c

  Log Message:
  -----------
  s390x/event-facility: fix receive mask check

For selective read event, we need to check if any event is requested
that is not active instead of whether none of the requested events is
active.

Reviewed-by: David Hildenbrand <address@hidden>
Reviewed-by: Eric Farman <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 6b7741c2bedeae2e8c54fffce81723ca0a0c25c0
      
https://github.com/qemu/qemu/commit/6b7741c2bedeae2e8c54fffce81723ca0a0c25c0
  Author: Cornelia Huck <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/css.c

  Log Message:
  -----------
  s390x/css: start with cleared cstat/dstat

When executing the start function, we should start with a clear state
regarding subchannel and device status; it is easy to forget updating one
of them after the ccw has been processed.

Note that we don't need to care about resetting the various control
fields: They are cleared by tsch(), and if they were still pending,
we wouldn't be able to execute the start function in the first
place.

Also note that we don't want to clear cstat/dstat if a suspended
subchannel is resumed.

This fixes a bug where we would continue to present channel-program
check in cstat even though later ccw requests for the subchannel
finished without error (i.e. cstat should be 0).

Cc: address@hidden
Signed-off-by: Cornelia Huck <address@hidden>
Reviewed-by: David Hildenbrand <address@hidden>


  Commit: f7822aa8b610a4fec57a09066974e5c088592c08
      
https://github.com/qemu/qemu/commit/f7822aa8b610a4fec57a09066974e5c088592c08
  Author: Cornelia Huck <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M include/hw/s390x/event-facility.h

  Log Message:
  -----------
  s390x/event-facility: fix location of receive mask

For read event mask, we assumed that the layout of the sccb was

|sccb header|event buffer header|receive mask|...|

The correct layout, however, is

|sccb header|receive mask|...|

as in-buffer and

|sccb header|event buffer header|...|

as out-buffer.

Fix this: This makes selective read work.

Reviewed-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 0f79b89bc2bdbed35d2c57d722acc4c31a5a2ce4
      
https://github.com/qemu/qemu/commit/0f79b89bc2bdbed35d2c57d722acc4c31a5a2ce4
  Author: Alexander Yarygin <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M pc-bios/s390-ccw/main.c

  Log Message:
  -----------
  pc-bios/s390-ccw: Device detection in higher subchannel sets

If no bootdevice was specified, we try to autodetect a suitable IPL
device. Current code only searched in subchannel set 0; extend this
search to higher subchannel sets as well.

Signed-off-by: Alexander Yarygin <address@hidden>
Reviewed-by: David Hildenbrand <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 9f70b85c405093f24d9df22215ead6596819832f
      
https://github.com/qemu/qemu/commit/9f70b85c405093f24d9df22215ead6596819832f
  Author: Cornelia Huck <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M pc-bios/s390-ccw.img

  Log Message:
  -----------
  pc-bios/s390-ccw: rebuild image

Contains:
- Device detection in higher subchannel sets

Signed-off-by: Cornelia Huck <address@hidden>


  Commit: c0194a00b0beb66814756ee255a8a86b2a92c27e
      
https://github.com/qemu/qemu/commit/c0194a00b0beb66814756ee255a8a86b2a92c27e
  Author: Jens Freimann <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/intc/s390_flic_kvm.c
    M kvm-all.c

  Log Message:
  -----------
  s390x/kvm: make setting of in-kernel irq routes more efficient

When we add new adapter routes we call kvm_irqchip_add_route() for every
virtqueue and in the same step also do the KVM_SET_GSI_ROUTING ioctl.

This is unnecessary costly as the interface allows us to set multiple
routes in one go. Let's first add all routes to the table stored in the
global kvm_state and then do the ioctl to commit the routes to the
in-kernel irqchip.

This saves us several ioctls to the kernel where for each call a list
is reallocated and populated.

Signed-off-by: Jens Freimann <address@hidden>
Reviewed-by: David Hildenbrand <address@hidden>
Acked-by: Paolo Bonzini <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 5b9f6345a616c321a5ea2f35e09043edd933767e
      
https://github.com/qemu/qemu/commit/5b9f6345a616c321a5ea2f35e09043edd933767e
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M configure
    A gdb-xml/s390-cr.xml
    M target-s390x/gdbstub.c

  Log Message:
  -----------
  s390x/gdb: support reading/writing of control registers

Let's support reading and writing of control registers for kvm and tcg.

We have to take care of flushing the tlb (tcg) and pushing the changed
registers into kvm.

Reviewed-by: Christian Borntraeger <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 073f57ae347a41cbcc940ae0286bbbab993b9148
      
https://github.com/qemu/qemu/commit/073f57ae347a41cbcc940ae0286bbbab993b9148
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/sclpcpu.c

  Log Message:
  -----------
  sclp/s390: rework sclp cpu hotplug device notification

Let's get rid of this strange local variable + irq logic and
work directly on the QOM. (hint: what happens if two such devices
are created?)

We could introduce proper QOM class + state for the cpu hotplug device,
however that would result in too much overhead for a simple
"trigger_signal" function.

Also remove one unnecessary class function initialization.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: f6102c329c43d7d5e0bee1fc2fe4043e05f9810c
      
https://github.com/qemu/qemu/commit/f6102c329c43d7d5e0bee1fc2fe4043e05f9810c
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/event-facility.c
    M include/hw/s390x/event-facility.h

  Log Message:
  -----------
  s390/sclp: rework sclp event facility initialization + device realization

The current code only works by chance. The event facility is a sysbus
device, but specifies in its class structure as parent the DeviceClass
(instead of a device class).

The init function in return lies therefore at the same position as
the init function of SysBusDeviceClass and gets triggered instead -
a very bad idea of doing that (e.g. the parameter types don't match).

Let's bring the initialization code up to date, initializing the event
facility + child events in .instance_init and moving the realization of
the child events out of the init call, into the realization step.

Device realization is now automatically performed when the event facility
itself is realized. That realization implicitly triggers realization of
the child bus, which in turn initializes the events.

Please note that we have to manually propagate the realization of the bus
children, common code still has a TODO set for that task.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 35925a7a73e7df4118cb11667095bd2d8fc4e091
      
https://github.com/qemu/qemu/commit/35925a7a73e7df4118cb11667095bd2d8fc4e091
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/event-facility.c
    M hw/s390x/sclpcpu.c
    M hw/s390x/sclpquiesce.c
    M include/hw/s390x/event-facility.h

  Log Message:
  -----------
  s390/sclp: replace sclp event types with proper defines

Introduce TYPE_SCLP_QUIESCE and make use of it. Also use
TYPE_SCLP_CPU_HOTPLUG where applicable.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 732bdd383ee06be2655b1a849a628ff03b0000b8
      
https://github.com/qemu/qemu/commit/732bdd383ee06be2655b1a849a628ff03b0000b8
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/sclp.c

  Log Message:
  -----------
  s390/sclp: temporarily fix unassignment/reassignment of memory subregions

Commit 374f2981d1f1 ("memory: protect current_map by RCU") broke
unassignment of standby memory on s390x. Looks like that the new
parallelism allows races with our (semi broken) memory hotplug code. The
flatview_unref() can now be executed after our unparenting. Therefore
memory_region_unref() tries to unreference the MemoryRegion itself instead
of the parent.

In theory, MemoryRegions are now bound to separate devices that control
their lifetime. We don't have this yet, so we really want to control their
lifetime manually.

This patch fixes it temporarily, until we have a proper rework. The only
drawback is that they won't pop up in "info qom-tree", but that's better
than qemu crashes.

We have to release the reference to a memory region after a
memory_region_find, as it automatically takes a reference. As we're now
able to reassign memory, the MemoryRegion is in fact deleted (otherwise
vmstate_register_ram() would complain).

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 515190d9da0c85084d32d6ad36afb15a6d35729e
      
https://github.com/qemu/qemu/commit/515190d9da0c85084d32d6ad36afb15a6d35729e
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/sclp.c
    M include/hw/s390x/event-facility.h
    M include/hw/s390x/sclp.h

  Log Message:
  -----------
  s390/sclp: introduce a root sclp device

Let's create a root sclp device, which has other sclp devices as
children (e.g. the event facility for now) and can later be used
for migration of sclp specific attributes and setup of memory.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 25a3c5af57db0319f5cfb4c439efbc78b230599e
      
https://github.com/qemu/qemu/commit/25a3c5af57db0319f5cfb4c439efbc78b230599e
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/sclp.c
    M include/hw/s390x/sclp.h

  Log Message:
  -----------
  s390/sclp: move sclp_execute related functions into the SCLP class

Let's move the sclp_execute related functions into the SCLP class
and pass the device state as parameter, so we have easy access to
the SCLPDevice later on.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 1723a1b6313851d9704961e1f527312ee0a5fce4
      
https://github.com/qemu/qemu/commit/1723a1b6313851d9704961e1f527312ee0a5fce4
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/sclp.c
    M include/hw/s390x/sclp.h

  Log Message:
  -----------
  s390/sclp: move sclp_service_interrupt into the sclp device

Let's make that function a method of the new sclp device, keeping
the wrapper for existing users.

We can now let go of get_event_facility().

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 311467f77eab5c3e1f8e0f6f446201e3a1f46e70
      
https://github.com/qemu/qemu/commit/311467f77eab5c3e1f8e0f6f446201e3a1f46e70
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M hw/s390x/sclp.c

  Log Message:
  -----------
  s390: no need to manually parse for slots and maxmem

ram_slots and maxram_size has already been parsed and verified by
common code for us.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 2998ffee245e3a141ce1b6fca127744c3e19dc63
      
https://github.com/qemu/qemu/commit/2998ffee245e3a141ce1b6fca127744c3e19dc63
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/s390-virtio.c

  Log Message:
  -----------
  s390: disallow memory hotplug for the s390-virtio machine

That machine type doesn't currently support memory hotplug, so let's abort
if it is requested. Reason is, that the virtio queues are allocated for now
at the end of the initial ram - extending the ram is therefore not possible.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: b02ef3d92b19ad304a84433d3817f0903296ebc7
      
https://github.com/qemu/qemu/commit/b02ef3d92b19ad304a84433d3817f0903296ebc7
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/sclp.c

  Log Message:
  -----------
  s390/sclp: ignore memory hotplug operations if it is disabled

If no memory hotplug device was created, the sclp command facility is
not exposed (SCLP_FC_ASSIGN_ATTACH_READ_STOR). We therefore have no
memory hotplug and should correctly report SCLP_RC_INVALID_SCLP_COMMAND
if any such command is executed.

This gets rid of these ugly asserts that could have been triggered
for the s390-virtio machine.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 1cf065fb87e8787e3e9cebcdb4713b81e4e61422
      
https://github.com/qemu/qemu/commit/1cf065fb87e8787e3e9cebcdb4713b81e4e61422
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M hw/s390x/s390-virtio.c
    M hw/s390x/sclp.c

  Log Message:
  -----------
  s390: move memory calculation into the sclp device

The restrictions for memory calculation belong to the sclp device.

Let's move the calculation to that point, so we are able to unify it for
both s390 machines. The sclp device is the first device to be initialized.
It performs the calculation and safely stores it in the machine, where
other parts of the system can access an reuse it.

The memory hotplug device is now only created when it is really needed.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 80d23275e3c4bc93fa6f123613d5ff389ed3fc62
      
https://github.com/qemu/qemu/commit/80d23275e3c4bc93fa6f123613d5ff389ed3fc62
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M hw/s390x/s390-virtio.c
    M hw/s390x/s390-virtio.h

  Log Message:
  -----------
  s390: unify allocation of initial memory

Now that the calculation of the initial memory is hidden in the sclp
device, we can unify the allocation of the initial memory.

The remaining ugly part is the reserved memory for the virtio queues,
but that can be cleaned up later.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 71a2fd355d8fa429bcc04740c260635e084255f2
      
https://github.com/qemu/qemu/commit/71a2fd355d8fa429bcc04740c260635e084255f2
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/sclp.c
    M include/hw/s390x/sclp.h

  Log Message:
  -----------
  s390/sclp: store the increment_size in the sclp device

Let's calculate it once and reuse it.

Suggested-by: Matthew Rosato <address@hidden>
Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: bd80a8ad555c2b5f79591b29edcf8196b8a5109b
      
https://github.com/qemu/qemu/commit/bd80a8ad555c2b5f79591b29edcf8196b8a5109b
  Author: David Hildenbrand <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/s390x/sclp.c

  Log Message:
  -----------
  s390/sclp: simplify calculation of rnmax

rnmax can be directly calculated using machine->maxram_size.

Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>


  Commit: 9d34158a5af734e8de0b42b0a7228200c426a8d0
      
https://github.com/qemu/qemu/commit/9d34158a5af734e8de0b42b0a7228200c426a8d0
  Author: Peter Maydell <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M configure
    A gdb-xml/s390-cr.xml
    M hw/intc/s390_flic_kvm.c
    M hw/s390x/css.c
    M hw/s390x/event-facility.c
    M hw/s390x/s390-virtio-ccw.c
    M hw/s390x/s390-virtio.c
    M hw/s390x/s390-virtio.h
    M hw/s390x/sclp.c
    M hw/s390x/sclpcpu.c
    M hw/s390x/sclpquiesce.c
    M include/hw/s390x/event-facility.h
    M include/hw/s390x/sclp.h
    M kvm-all.c
    M pc-bios/s390-ccw.img
    M pc-bios/s390-ccw/main.c
    M target-s390x/gdbstub.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20150907' into staging

s390x fixes and improvements:
- various bugfixes (css/event-facility)
- more efficient adapter interrupt routes setup
- gdb enhancement
- sclp got treated with a lot of remodelling/cleanup

# gpg: Signature made Mon 07 Sep 2015 15:42:43 BST using RSA key ID C6F02FAF
# gpg: Good signature from "Cornelia Huck <address@hidden>"
# gpg:                 aka "Cornelia Huck <address@hidden>"

* remotes/cohuck/tags/s390x-20150907: (23 commits)
  s390/sclp: simplify calculation of rnmax
  s390/sclp: store the increment_size in the sclp device
  s390: unify allocation of initial memory
  s390: move memory calculation into the sclp device
  s390/sclp: ignore memory hotplug operations if it is disabled
  s390: disallow memory hotplug for the s390-virtio machine
  s390: no need to manually parse for slots and maxmem
  s390/sclp: move sclp_service_interrupt into the sclp device
  s390/sclp: move sclp_execute related functions into the SCLP class
  s390/sclp: introduce a root sclp device
  s390/sclp: temporarily fix unassignment/reassignment of memory subregions
  s390/sclp: replace sclp event types with proper defines
  s390/sclp: rework sclp event facility initialization + device realization
  sclp/s390: rework sclp cpu hotplug device notification
  s390x/gdb: support reading/writing of control registers
  s390x/kvm: make setting of in-kernel irq routes more efficient
  pc-bios/s390-ccw: rebuild image
  pc-bios/s390-ccw: Device detection in higher subchannel sets
  s390x/event-facility: fix location of receive mask
  s390x/css: start with cleared cstat/dstat
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/8f1ed5f50814...9d34158a5af7

reply via email to

[Prev in Thread] Current Thread [Next in Thread]