Re: [PATCH v5 14/21] KVM: s390: pci: provide routines for enabling/disabling interrupt forwarding

From: Pierre Morel
Date: Tue Apr 05 2022 - 17:38:11 EST

On 4/5/22 15:48, Matthew Rosato wrote:
On 4/5/22 9:39 AM, Niklas Schnelle wrote:
On Mon, 2022-04-04 at 13:43 -0400, Matthew Rosato wrote:
These routines will be wired into a kvm ioctl in order to respond to
requests to enable / disable a device for Adapter Event Notifications /
Adapter Interuption Forwarding.

Signed-off-by: Matthew Rosato <mjrosato@xxxxxxxxxxxxx>
  arch/s390/kvm/pci.c      | 247 +++++++++++++++++++++++++++++++++++++++
  arch/s390/kvm/pci.h      |   1 +
  arch/s390/pci/pci_insn.c |   1 +
  3 files changed, 249 insertions(+)

diff --git a/arch/s390/kvm/pci.c b/arch/s390/kvm/pci.c
index 01bd8a2f503b..f0fd68569a9d 100644
--- a/arch/s390/kvm/pci.c
+++ b/arch/s390/kvm/pci.c
@@ -11,6 +11,7 @@
  #include <linux/pci.h>
  #include <asm/pci.h>
  #include <asm/pci_insn.h>
+#include <asm/pci_io.h>
  #include "pci.h"
  struct zpci_aift *aift;
@@ -152,6 +153,252 @@ int kvm_s390_pci_aen_init(u8 nisc)
      return rc;
+/* Modify PCI: Register floating adapter interruption forwarding */
+static int kvm_zpci_set_airq(struct zpci_dev *zdev)
+    u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_REG_INT);
+    struct zpci_fib fib = {};

Hmm this one uses '{}' as initializer while all current callers of
zpci_mod_fc() use '{0}'. As far as I know the empty braces are a GNU
extension so should work for the kernel but for consistency I'd go with
'{0}' or possibly '{.foo = bar, ...}' where that is more readable.
There too uninitialized fields will be set to 0. Unless of course there
is a conflicting KVM convention that I don't know about.

No convention that I'm aware of, I previously had fib = {0} based on the same rationale you describe and changed to fib = {} per review request from Pierre a few versions back.  I don't have a strong preference, but I did not note any functional difference between the two and see a bunch of examples of both methods throughout the kernel.

Was stupid of me to comment that, as you said there are no difference, so do as you want.

Pierre Morel
IBM Lab Boeblingen