[Top][All Lists]

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

Re: [qemu-s390x] [PATCH v1 0/5][RFC] Refactoring of AIS support

From: Christian Borntraeger
Subject: Re: [qemu-s390x] [PATCH v1 0/5][RFC] Refactoring of AIS support
Date: Mon, 30 Oct 2017 14:48:23 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0

On 10/30/2017 02:44 PM, Pierre Morel wrote:
> On 30/10/2017 13:44, Christian Borntraeger wrote:
>> On 10/30/2017 01:42 PM, Cornelia Huck wrote:
>>> On Mon, 30 Oct 2017 09:28:09 +0100
>>> Christian Borntraeger <address@hidden> wrote:
>>>> Now I thought about that for a while and I start to think that we cannot 
>>>> implement ais
>>>> in QEMU and cover all cases.
>>>> One aspect was certainly passthrough (like you handled in patch 4).
>>>> Another aspect is that some interrupts might be injected from the kernel - 
>>>> even for
>>>> emulated devices. e.g. virtio-pci together with vhost-net, will inject 
>>>> interrupts via
>>>> the set_irq callback. I think disabling irqfd for these cases is not a 
>>>> good idea.
>>> Is there still a fallback for irqfd emulation?
>> it might disable dataplane or other things. (it once did). So I think we 
>> should not
>> go down this path.
>>>> So what about adding a new KVM capability (for 4.14), fixup the other 
>>>> things in
>>>> QEMU and then bind it to the new capability?
>>> For 4.15, surely?
>>> Probably the only way we can make this work correctly...
> I may have not understand.
> Why do we need a new capability, we already have the KVM_CAP_S390_AIS 
> capability?

To mark a kernel that supports AIS+migration without having to instantiate a 
flic device.

> The PCI device has a netdev property pointing to a netdev, if this netdev 
> sets the vhost property, can't we test this to know if we can realize this 
> device or not?
> Using virtio-pci instead of virtio-ccw is not the first choice for S390. The 
> use case I see for S390 using virtio-pci is as a fallback in case for the 
> migration of a PCI device the target host does not support AIS or do not have 
> VFIO device and one do not want to modify the guest.

This was just one example. Having the interrupt controller in the kernel, 
implementing AIS in
qemu is very prone to break something that we have forgotten about.

FWIW, I am testing a guest patch that enables zPCI without AIS. Its as simple as

diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c
index 7b30af5..9b24836 100644
--- a/arch/s390/pci/pci.c
+++ b/arch/s390/pci/pci.c
@@ -953,7 +953,7 @@ static int __init pci_base_init(void)
        if (!s390_pci_probe)
                return 0;
-       if (!test_facility(69) || !test_facility(71) || !test_facility(72))
+       if (!test_facility(69) || !test_facility(71))
                return 0;
        rc = zpci_debug_init();
diff --git a/arch/s390/pci/pci_insn.c b/arch/s390/pci/pci_insn.c
index ea34086..61f8c82 100644
--- a/arch/s390/pci/pci_insn.c
+++ b/arch/s390/pci/pci_insn.c
@@ -7,6 +7,7 @@
 #include <linux/export.h>
 #include <linux/errno.h>
 #include <linux/delay.h>
+#include <asm/facility.h>
 #include <asm/pci_insn.h>
 #include <asm/pci_debug.h>
 #include <asm/processor.h>
@@ -93,6 +94,8 @@ int zpci_refresh_trans(u64 fn, u64 addr, u64 range)
 /* Set Interruption Controls */
 void zpci_set_irq_ctrl(u16 ctl, char *unused, u8 isc)
+       if (!test_facility(72))
+               return;
        asm volatile (
                "       .insn   rsy,0xeb00000000d1,%[ctl],%[isc],%[u]\n"
                : : [ctl] "d" (ctl), [isc] "d" (isc << 27), [u] "Q" (*unused));

reply via email to

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