Comment 40 for bug 1832622

Lacking better options I gave this some extra testing on a pre DD2.3 P9 box.
revision : 2.2 (pvr 004e 1202)
I though at least CCF=off I should be able to test with these chips and that worked fine.

Summary:
- the new versions make cap-ibs=fixed-ibs work on DD2.2
- CCF=off works with Bionic and Disco kernels on DD 2.2
- CCF=on untestable without DD 2.3 HW as expected
- Working in Disco just as much as in Bionic

Are you 100% sure on the FW and HW levels that are on the DD2.3 machine that you used to test Disco?
Given my results are all good and your Bionic results were good with essentially the same code as in Disco I'm beginning to wonder if it might be an issue on the borrowed DD2.3 machine that you used for the Disco test.

@IBM - can you get a machine on which you first check that it works for CCF with Bionic (to ensure we know the HW/FW is good) and then directly upgrade this very same machine to Disco to verify it there?

FYI - the ongoing SRU contains more than just this change, and at some point I'll need to unblock the others.
Therefore I'd set a limit of ~48h from now. If we can't find a way to resolve the verification issue on this bug as-is until then I'll have to reroll the current SRU without this fix to get things going.

--- Tests Details ---

Note:
- Start basic guest with (and check it boots the bootloader):
  This can be done after just installing qemu-system-ppc
sudo /usr/bin/qemu-system-ppc64 -name guest=bionic,debug-threads=on -m 512 -smp 1 -no-user-config -nodefaults -nographic -chardev stdio,mux=on,id=char0 -mon chardev=char0,mode=readline -serial chardev:char0 -machine pseries-bionic,accel=kvm,usb=off,dump-guest-core=off,cap-ccf-assist=off,cap-ibs=fixed-ccd

This can be done with disks for a full linux boot, but doesn't have to for this test. To do so add:
 -boot strict=on -drive file=/var/lib/uvtool/libvirt/images/eoan.qcow,format=qcow2,if=none,id=drive-virtio-disk0 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1

#1: Bionic as-is
- qemu: 1:2.11+dfsg-1ubuntu7.17 kernel: 4.15.0.58.60
=> works (guest can be started as-is)
=> reports (-machine...?):
 cap-sbbc=string (Speculation Barrier Bounds Checking (broken, workaround, fixed)(null))
 cap-cfpc=string (Cache Flush on Privilege Change (broken, workaround, fixed)(null))
 cap-ibs=string (Indirect Branch Speculation (broken, fixed-ibs, fixed-ccd)(null))
Test IBS modes adding ,cap-ibs=:
- broken - ok
- fixed-ccd - ok
- fixed-ibs - "not supported by kvm"
Test CCF modes ,cap-ccf-assist=
- (doesn't exist here)

#2: Bionic proposed qemu
- qemu 1:2.11+dfsg-1ubuntu7.18 kernel: 4.15.0.58.60 (same as above)
=> works (guest can be started as-is)
=> reports (-machine...?):
 cap-sbbc=string (Speculation Barrier Bounds Checking (broken, workaround, fixed)(null))
 cap-cfpc=string (Cache Flush on Privilege Change (broken, workaround, fixed)(null))
 cap-ibs=string (Indirect Branch Speculation (broken, fixed-ibs, fixed-ccd)(null))
+cap-ccf-assist=bool (Count Cache Flush Assist via HW Instruction(null))
Test IBS modes adding ,cap-ibs=:
- broken - ok
- fixed-ccd - ok
- fixed-ibs - ok
Test CCF modes adding ,cap-ccf-assist=
- off - ok
- on - "capability level not supported by kvm"

#3: Bionic proposed qemu+kernel
- qemu 1:2.11+dfsg-1ubuntu7.18 kernel: 4.15.0.60.62
=> works (guest can be started as-is)
=> reports (-machine...?):
 same as #2 - ok
Test IBS modes adding ,cap-ibs=:
 same as #2 - ok
Test CCF modes adding ,cap-ccf-assist=
 same as #2 - ok

#4: as #3 above + qemu from Disco-updates
FYI to do so I just enabled bionic + disco sources on the system and selectively updated qemu
v=1:3.1+dfsg-2ubuntu3.3; sudo apt install qemu-block-extra=$v qemu-kvm=$v qemu-system-common=$v qemu-system-ppc=$v qemu-utils=$v
This only drags in a minimal amount of further libraries, and allows testing Disco-qemu vs Bionic-kernels.
- qemu 1:3.1+dfsg-2ubuntu3.3 kernel: 4.15.0.60.62
=> works (guest can be started as-is)
=> reports (-machine...?):
 same as #1 - ok (there was no CCF on this yet)
 There are "other" differences like cap-hpt-max-page-size which didn't exist in 2.11
Test IBS modes adding ,cap-ibs=:
 same as #1 - ok (fixed-ibs denied by kvm, rest working)
Test CCF modes adding ,cap-ccf-assist=
- (doesn't exist here)

#5: as #4 above + kernel from Disco-updates
- qemu 1:3.1+dfsg-2ubuntu3.4 kernel: 5.0.0.25.26
=> works (guest can be started as-is)
=> reports (-machine...?):
 same as #2 - ok
Test IBS modes adding ,cap-ibs=:
 same as #2 - ok (all three modes work)
Test CCF modes adding ,cap-ccf-assist=
 same as #2 - ok
Test combined CCF/IBS ,cap-ccf-assist=off,cap-ibs=fixed-ibs
 works as well
=> Other than reported the Disco kernel broke nothing for me :-/ ??

#6: as #5 above + kernel from Disco-proposed
- qemu 1:3.1+dfsg-2ubuntu3.4 kernel: 5.0.0.27.28
=> works (guest can be started as-is)
=> reports (-machine...?):
 same as #5 - ok
Test IBS modes adding ,cap-ibs=:
 same as #5 - ok (all three modes work)
Test CCF modes adding ,cap-ccf-assist=
 same as #5 - ok
Test combined CCF/IBS ,cap-ccf-assist=off,cap-ibs=fixed-ibs
 same as #5 - ok

#6: as #6 above + Everything else from Disco-updates
- qemu 1:3.1+dfsg-2ubuntu3.4 kernel: 5.0.0.27.28
=> works (guest can be started as-is)
=> reports (-machine...?):
 same as #5 - ok
Test IBS modes adding ,cap-ibs=:
 same as #5 - ok (all three modes work)
Test CCF modes adding ,cap-ccf-assist=
 same as #5 - ok
Test combined CCF/IBS ,cap-ccf-assist=off,cap-ibs=fixed-ibs
 same as #5 - ok