This series adds libvirt support for the s390x Secure IPL interface,
which allows firmware to verify the integrity and authenticity of a
boot image against a set of X.509 certificates before handing control
to the guest OS.

Two new machine properties on s390-ccw-virtio:
  boot-certs.N.path=<path>   – supply one or more X.509 certificates or 
directory
  secure-boot=on|off         – enable/disable secure boot

On the XML side, a new <boot-certs> element under <os> stores the
certificate paths, while the existing secure-boot firmware feature is
reused to control the corresponding QEMU machine property. 

Providing certificates without enabling secure boot is a valid
configuration and places the firmware into audit mode, allowing
verification results to be reported without enforcing them.

Usage example:

  <os>
    <type arch='s390x' machine='s390-ccw-virtio-11.2'>hvm</type>
    <firmware>
      <feature enabled='yes' name='secure-boot'/>
    </firmware>
    <boot-certs>
      <path>/path/to/cert_dir</path>
      <path>/path/to/cert1.pem</path>
    </boot-certs>
  </os>

The series adds:
  * XML parsing and formatting for <boot-certs> and secure-boot on s390x
  * QEMU capability detection with updated s390x QMP reply fixtures
    for QEMU 8.1 through 11.2
  * -machine argument generation for boot-certs and secure-boot
  * Validation (s390x-only, secure-boot requires certs, QEMU version)
  * Domain capabilities reporting in the <os> section
  * Documentation and tests

Boris Fiuczynski (1):
  test: Add ABI update test for s390x secure-boot

Zhuoying Cai (13):
  conf: Add s390x boot-certs XML support
  qemu: capabilities: Detect s390-ccw-virtio 'boot-certs' machine
    property
  qemu: Add s390x boot-certs support
  conf: Add s390x boot-certs domain capabilities reporting
  docs: formatdomain: Document boot-certs element
  conf: Refactor firmware feature without auto select validation
  conf: Allow secure-boot firmware feature on s390x
  qemu: capabilities: Detect s390-ccw-virtio 'secure-boot' machine
    property
  qemu: Add s390x secure-boot support
  qemu: Report s390-ccw-virtio 'secure-boot' in domain capabilities
  docs: Document s390x Secure IPL firmware feature
  test: Add tests for secure-boot and boot-certs attributes
  NEWS: Document s390x Secure Boot and boot certificates support

 NEWS.rst                                      |  24 +++
 docs/formatdomain.rst                         |  40 +++-
 docs/formatdomaincaps.rst                     |  31 +++
 docs/kbase/secureboot.rst                     |  60 ++++++
 src/conf/domain_capabilities.c                |  10 +
 src/conf/domain_capabilities.h                |   6 +
 src/conf/domain_conf.c                        |  77 +++++++-
 src/conf/domain_conf.h                        |   2 +
 src/conf/domain_validate.c                    |  32 +++-
 src/conf/schemas/domaincaps.rng               |   9 +
 src/conf/schemas/domaincommon.rng             |   9 +
 src/qemu/qemu_capabilities.c                  |  38 ++++
 src/qemu/qemu_capabilities.h                  |   2 +
 src/qemu/qemu_command.c                       |  16 ++
 src/qemu/qemu_validate.c                      |  29 +++
 tests/domaincapsdata/qemu_10.0.0.s390x.xml    |   1 +
 tests/domaincapsdata/qemu_10.1.0.s390x.xml    |   1 +
 tests/domaincapsdata/qemu_11.0.0.s390x.xml    |   1 +
 tests/domaincapsdata/qemu_11.1.0.s390x.xml    |   1 +
 tests/domaincapsdata/qemu_11.2.0.s390x.xml    |   6 +-
 tests/domaincapsdata/qemu_8.1.0.s390x.xml     |   1 +
 tests/domaincapsdata/qemu_8.2.0.s390x.xml     |   1 +
 tests/domaincapsdata/qemu_9.1.0.s390x.xml     |   1 +
 tests/domaincapsdata/qemu_9.2.0.s390x.xml     |   1 +
 .../caps_10.0.0_s390x.replies                 | 145 +++++++++++++-
 .../caps_10.1.0_s390x.replies                 | 150 ++++++++++++++-
 .../caps_11.0.0_s390x.replies                 | 156 ++++++++++++++-
 .../caps_11.1.0_s390x.replies                 | 156 ++++++++++++++-
 .../caps_11.2.0_s390x.replies                 | 181 +++++++++++++++++-
 .../caps_11.2.0_s390x.xml                     |   2 +
 .../caps_8.1.0_s390x.replies                  | 135 ++++++++++++-
 .../caps_8.2.0_s390x.replies                  | 135 ++++++++++++-
 .../caps_9.1.0_s390x.replies                  | 139 +++++++++++++-
 .../caps_9.2.0_s390x.replies                  | 144 +++++++++++++-
 .../s390-boot-certs-only.s390x-11.1.0.err     |   1 +
 .../s390-boot-certs-only.s390x-latest.args    |  32 ++++
 .../s390-boot-certs-only.s390x-latest.xml     |  30 +++
 .../qemuxmlconfdata/s390-boot-certs-only.xml  |  15 ++
 ...90-secure-boot-audit-mode.s390x-11.1.0.err |   1 +
 ...0-secure-boot-audit-mode.s390x-latest.args |  32 ++++
 ...90-secure-boot-audit-mode.s390x-latest.xml |  33 ++++
 .../s390-secure-boot-audit-mode.xml           |  18 ++
 ...0-secure-boot-multi-certs.s390x-11.1.0.err |   1 +
 ...-secure-boot-multi-certs.s390x-latest.args |  32 ++++
 ...0-secure-boot-multi-certs.s390x-latest.xml |  34 ++++
 .../s390-secure-boot-multi-certs.xml          |  19 ++
 ...s390-secure-boot-no-certs.s390x-11.1.0.err |   1 +
 ...s390-secure-boot-no-certs.s390x-latest.err |   1 +
 .../s390-secure-boot-no-certs.xml             |  15 ++
 ...90-secure-boot-none-s390.x86_64-latest.err |   1 +
 .../s390-secure-boot-none-s390.xml            |  15 ++
 ...e-boot-with-enrolled-keys.s390x-latest.err |   1 +
 .../s390-secure-boot-with-enrolled-keys.xml   |  19 ++
 .../s390-secure-boot.s390x-11.1.0.err         |   1 +
 ...0-secure-boot.s390x-latest.abi-update.args |  32 ++++
 ...90-secure-boot.s390x-latest.abi-update.xml |  33 ++++
 .../s390-secure-boot.s390x-latest.args        |  32 ++++
 .../s390-secure-boot.s390x-latest.xml         |  33 ++++
 tests/qemuxmlconfdata/s390-secure-boot.xml    |  18 ++
 tests/qemuxmlconftest.c                       |  14 ++
 60 files changed, 2120 insertions(+), 86 deletions(-)
 create mode 100644 tests/qemuxmlconfdata/s390-boot-certs-only.s390x-11.1.0.err
 create mode 100644 tests/qemuxmlconfdata/s390-boot-certs-only.s390x-latest.args
 create mode 100644 tests/qemuxmlconfdata/s390-boot-certs-only.s390x-latest.xml
 create mode 100644 tests/qemuxmlconfdata/s390-boot-certs-only.xml
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-audit-mode.s390x-11.1.0.err
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-audit-mode.s390x-latest.args
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-audit-mode.s390x-latest.xml
 create mode 100644 tests/qemuxmlconfdata/s390-secure-boot-audit-mode.xml
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-multi-certs.s390x-11.1.0.err
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-multi-certs.s390x-latest.args
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-multi-certs.s390x-latest.xml
 create mode 100644 tests/qemuxmlconfdata/s390-secure-boot-multi-certs.xml
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-no-certs.s390x-11.1.0.err
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-no-certs.s390x-latest.err
 create mode 100644 tests/qemuxmlconfdata/s390-secure-boot-no-certs.xml
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-none-s390.x86_64-latest.err
 create mode 100644 tests/qemuxmlconfdata/s390-secure-boot-none-s390.xml
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-with-enrolled-keys.s390x-latest.err
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot-with-enrolled-keys.xml
 create mode 100644 tests/qemuxmlconfdata/s390-secure-boot.s390x-11.1.0.err
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot.s390x-latest.abi-update.args
 create mode 100644 
tests/qemuxmlconfdata/s390-secure-boot.s390x-latest.abi-update.xml
 create mode 100644 tests/qemuxmlconfdata/s390-secure-boot.s390x-latest.args
 create mode 100644 tests/qemuxmlconfdata/s390-secure-boot.s390x-latest.xml
 create mode 100644 tests/qemuxmlconfdata/s390-secure-boot.xml

-- 
2.56.0

Reply via email to