mbox series

[v2,00/19] s390x cleanups and CPU hotplug via device_add

Message ID 20170904154316.4148-1-david@redhat.com
Headers show
Series s390x cleanups and CPU hotplug via device_add | expand

Message

David Hildenbrand Sept. 4, 2017, 3:42 p.m. UTC
The first patches are a bunch of cleanups. I decided to go the
extra mile and implement CPU hotplug via "device_add", as well as
"query-hotpluggable-cpus". So the last patches in this series differ
to v1. I tried to stick as much as possible to x86.

On s390x, only complete cores can be plugged. Cores have to be plugged in
the right order (core-id 0, 1, 2 ...). CPU hot unplug is not supported
by the architecture.

In addition, we now also print the CPU model list in sorted order and allow
only 1 CPU for TCG.

v1 -> v2:
- "exec,dump,i386,ppc,s390x: don't include exec/cpu-all.h explicitly"
-- added a few instances I missed
- "s390x: get rid of s390-virtio.c"
-- move everything in the first shot and clean the "cpu_states" stuff up
   in later patches, when we have ms->possible_cpus.
- Added "target/s390x: move typedef of S390CPU to its definition"
- Added "s390x: move s390_virtio_hypercall() to s390-virtio-hcall.h"
- Added "s390x: move two function declarations to s390-virtio-ccw.h"
- Added "s390x: move sclp_service_call() to interrupt.c"
- "target/s390x: use program_interrupt() in per_check_exception()"
-- Add a comment describing my concern
- "s390x: allow only 1 CPU with TCG"
-- Add a #define to easily be able to change it (e.g. for development)
- Added "target/s390x: set cpu->id for linux user when realizing"
- "target/s390x: use "core-id" for cpu number/address/id handling"
-- I now use "core-id" as property name, because that will be used by
   device_add
- "target/s390x: rename next_cpu_id to next_core_id"
-- Also change to the term "core_id"
- Added "s390x: print CPU definitions in sorted order"
- Added "s390x: allow cpu hotplug via device_add"
- Added "s390x: CPU hot unplug via device_del cannot work"
- Added "s390x: implement query-hotpluggable-cpu"
- Added "s390x: get rid of cpu_s390x_create()"

David Hildenbrand (19):
  exec,dump,i386,ppc,s390x: don't include exec/cpu-all.h explicitly
  cpu: drop old comments describing members
  s390x: get rid of s390-virtio.c
  s390x: rename s390-virtio.h to s390-virtio-hcall.h
  target/s390x: move typedef of S390CPU to its definition
  s390x: move s390_virtio_hypercall() to s390-virtio-hcall.h
  s390x: move two function declarations to s390-virtio-ccw.h
  s390x: move sclp_service_call() to interrupt.c
  target/s390x: use trigger_pgm_exception() in
    s390_cpu_handle_mmu_fault()
  target/s390x: use program_interrupt() in per_check_exception()
  s390x: allow only 1 CPU with TCG
  target/s390x: set cpu->id for linux user when realizing
  target/s390x: use "core-id" for cpu number/address/id handling
  target/s390x: rename next_cpu_id to next_core_id
  s390x: print CPU definitions in sorted order
  s390x: allow cpu hotplug via device_add
  s390x: CPU hot unplug via device_del cannot work
  s390x: implement query-hotpluggable-cpus
  s390x: get rid of cpu_s390x_create()

 dump.c                             |   1 -
 exec.c                             |   2 -
 hw/s390x/Makefile.objs             |   1 -
 hw/s390x/s390-virtio-ccw.c         | 259 +++++++++++++++++++++++++++++++++++--
 hw/s390x/s390-virtio-hcall.c       |   2 +-
 hw/s390x/s390-virtio-hcall.h       |  21 +++
 hw/s390x/s390-virtio.c             |  37 ------
 hw/s390x/s390-virtio.h             |  35 -----
 hw/s390x/sclp.c                    |  51 +-------
 include/hw/s390x/s390-virtio-ccw.h |   3 +
 include/hw/s390x/sclp.h            |   1 +
 include/qom/cpu.h                  |   6 +-
 qapi-schema.json                   |  16 +++
 target/i386/arch_dump.c            |   1 -
 target/i386/arch_memory_mapping.c  |   1 -
 target/i386/svm_helper.c           |   1 -
 target/ppc/arch_dump.c             |   1 -
 target/s390x/arch_dump.c           |   1 -
 target/s390x/cpu-qom.h             |   4 +-
 target/s390x/cpu.c                 |  86 ++++--------
 target/s390x/cpu.h                 |  19 +--
 target/s390x/cpu_models.c          |  65 ++++++----
 target/s390x/diag.c                |   1 +
 target/s390x/excp_helper.c         |   5 +-
 target/s390x/helper.c              |  47 +------
 target/s390x/internal.h            |   1 -
 target/s390x/interrupt.c           |  52 ++++++++
 target/s390x/kvm.c                 |   3 +-
 target/s390x/misc_helper.c         |  22 ++--
 target/s390x/translate.c           |   5 +-
 30 files changed, 443 insertions(+), 307 deletions(-)
 create mode 100644 hw/s390x/s390-virtio-hcall.h
 delete mode 100644 hw/s390x/s390-virtio.h

Comments

Christian Borntraeger Sept. 5, 2017, 7:51 a.m. UTC | #1
I think we certainly want to have device_add as well (as long as the old
interface stays for a while).

Adding Matt. Can you have a look at the cpu hotplug bits?



On 09/04/2017 05:42 PM, David Hildenbrand wrote:
> The first patches are a bunch of cleanups. I decided to go the
> extra mile and implement CPU hotplug via "device_add", as well as
> "query-hotpluggable-cpus". So the last patches in this series differ
> to v1. I tried to stick as much as possible to x86.
> 
> On s390x, only complete cores can be plugged. Cores have to be plugged in
> the right order (core-id 0, 1, 2 ...). CPU hot unplug is not supported
> by the architecture.
> 
> In addition, we now also print the CPU model list in sorted order and allow
> only 1 CPU for TCG.
> 
> v1 -> v2:
> - "exec,dump,i386,ppc,s390x: don't include exec/cpu-all.h explicitly"
> -- added a few instances I missed
> - "s390x: get rid of s390-virtio.c"
> -- move everything in the first shot and clean the "cpu_states" stuff up
>    in later patches, when we have ms->possible_cpus.
> - Added "target/s390x: move typedef of S390CPU to its definition"
> - Added "s390x: move s390_virtio_hypercall() to s390-virtio-hcall.h"
> - Added "s390x: move two function declarations to s390-virtio-ccw.h"
> - Added "s390x: move sclp_service_call() to interrupt.c"
> - "target/s390x: use program_interrupt() in per_check_exception()"
> -- Add a comment describing my concern
> - "s390x: allow only 1 CPU with TCG"
> -- Add a #define to easily be able to change it (e.g. for development)
> - Added "target/s390x: set cpu->id for linux user when realizing"
> - "target/s390x: use "core-id" for cpu number/address/id handling"
> -- I now use "core-id" as property name, because that will be used by
>    device_add
> - "target/s390x: rename next_cpu_id to next_core_id"
> -- Also change to the term "core_id"
> - Added "s390x: print CPU definitions in sorted order"
> - Added "s390x: allow cpu hotplug via device_add"
> - Added "s390x: CPU hot unplug via device_del cannot work"
> - Added "s390x: implement query-hotpluggable-cpu"
> - Added "s390x: get rid of cpu_s390x_create()"
> 
> David Hildenbrand (19):
>   exec,dump,i386,ppc,s390x: don't include exec/cpu-all.h explicitly
>   cpu: drop old comments describing members
>   s390x: get rid of s390-virtio.c
>   s390x: rename s390-virtio.h to s390-virtio-hcall.h
>   target/s390x: move typedef of S390CPU to its definition
>   s390x: move s390_virtio_hypercall() to s390-virtio-hcall.h
>   s390x: move two function declarations to s390-virtio-ccw.h
>   s390x: move sclp_service_call() to interrupt.c
>   target/s390x: use trigger_pgm_exception() in
>     s390_cpu_handle_mmu_fault()
>   target/s390x: use program_interrupt() in per_check_exception()
>   s390x: allow only 1 CPU with TCG
>   target/s390x: set cpu->id for linux user when realizing
>   target/s390x: use "core-id" for cpu number/address/id handling
>   target/s390x: rename next_cpu_id to next_core_id
>   s390x: print CPU definitions in sorted order
>   s390x: allow cpu hotplug via device_add
>   s390x: CPU hot unplug via device_del cannot work
>   s390x: implement query-hotpluggable-cpus
>   s390x: get rid of cpu_s390x_create()
> 
>  dump.c                             |   1 -
>  exec.c                             |   2 -
>  hw/s390x/Makefile.objs             |   1 -
>  hw/s390x/s390-virtio-ccw.c         | 259 +++++++++++++++++++++++++++++++++++--
>  hw/s390x/s390-virtio-hcall.c       |   2 +-
>  hw/s390x/s390-virtio-hcall.h       |  21 +++
>  hw/s390x/s390-virtio.c             |  37 ------
>  hw/s390x/s390-virtio.h             |  35 -----
>  hw/s390x/sclp.c                    |  51 +-------
>  include/hw/s390x/s390-virtio-ccw.h |   3 +
>  include/hw/s390x/sclp.h            |   1 +
>  include/qom/cpu.h                  |   6 +-
>  qapi-schema.json                   |  16 +++
>  target/i386/arch_dump.c            |   1 -
>  target/i386/arch_memory_mapping.c  |   1 -
>  target/i386/svm_helper.c           |   1 -
>  target/ppc/arch_dump.c             |   1 -
>  target/s390x/arch_dump.c           |   1 -
>  target/s390x/cpu-qom.h             |   4 +-
>  target/s390x/cpu.c                 |  86 ++++--------
>  target/s390x/cpu.h                 |  19 +--
>  target/s390x/cpu_models.c          |  65 ++++++----
>  target/s390x/diag.c                |   1 +
>  target/s390x/excp_helper.c         |   5 +-
>  target/s390x/helper.c              |  47 +------
>  target/s390x/internal.h            |   1 -
>  target/s390x/interrupt.c           |  52 ++++++++
>  target/s390x/kvm.c                 |   3 +-
>  target/s390x/misc_helper.c         |  22 ++--
>  target/s390x/translate.c           |   5 +-
>  30 files changed, 443 insertions(+), 307 deletions(-)
>  create mode 100644 hw/s390x/s390-virtio-hcall.h
>  delete mode 100644 hw/s390x/s390-virtio.h
>
David Hildenbrand Sept. 6, 2017, 4:03 p.m. UTC | #2
On 05.09.2017 09:51, Christian Borntraeger wrote:
> I think we certainly want to have device_add as well (as long as the old
> interface stays for a while).
> 
> Adding Matt. Can you have a look at the cpu hotplug bits?

If there is no further feedback, I'll be sending a new version out
tomorrow, including the suggested changes. In addition, I'll be
including support to hotplug VCPUs in random order (2 additional patches).
Matthew Rosato Sept. 6, 2017, 4:21 p.m. UTC | #3
On 09/06/2017 12:03 PM, David Hildenbrand wrote:
> On 05.09.2017 09:51, Christian Borntraeger wrote:
>> I think we certainly want to have device_add as well (as long as the old
>> interface stays for a while).
>>
>> Adding Matt. Can you have a look at the cpu hotplug bits?
> 
> If there is no further feedback, I'll be sending a new version out
> tomorrow, including the suggested changes. In addition, I'll be
> including support to hotplug VCPUs in random order (2 additional patches).
> 

Hi David, just returning from vacation -- Will look at this set today.

Matt