Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752992AbbHaLoW (ORCPT ); Mon, 31 Aug 2015 07:44:22 -0400 Received: from lhrrgout.huawei.com ([194.213.3.17]:47709 "EHLO lhrrgout.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752325AbbHaLoU (ORCPT ); Mon, 31 Aug 2015 07:44:20 -0400 Subject: Re: [PATCH v3 04/10] VFIO: platform: add vfio_platform_set_automasked To: Alex Williamson , Eric Auger References: <1439212864-12954-1-git-send-email-eric.auger@linaro.org> <1439212864-12954-5-git-send-email-eric.auger@linaro.org> <1439405794.4023.528.camel@redhat.com> <55D1FFE8.9050104@linaro.org> <1439919864.4023.626.camel@redhat.com> CC: , , , , , , , , From: Antonios Motakis Message-ID: <55E43DFC.8050608@huawei.com> Date: Mon, 31 Aug 2015 13:43:56 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <1439919864.4023.626.camel@redhat.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.200.217.162] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3417 Lines: 96 On 18-Aug-15 19:44, Alex Williamson wrote: > On Mon, 2015-08-17 at 17:38 +0200, Eric Auger wrote: >> On 08/12/2015 08:56 PM, Alex Williamson wrote: >>> On Mon, 2015-08-10 at 15:20 +0200, Eric Auger wrote: >>>> This function makes possible to change the automasked mode. >>>> >>>> Signed-off-by: Eric Auger >>>> >>>> --- >>>> >>>> v1 -> v2: >>>> - set forwarded flag >>>> --- >>>> drivers/vfio/platform/vfio_platform_irq.c | 19 +++++++++++++++++++ >>>> 1 file changed, 19 insertions(+) >>>> >>>> diff --git a/drivers/vfio/platform/vfio_platform_irq.c b/drivers/vfio/platform/vfio_platform_irq.c >>>> index b31b1f0..a285384 100644 >>>> --- a/drivers/vfio/platform/vfio_platform_irq.c >>>> +++ b/drivers/vfio/platform/vfio_platform_irq.c >>>> @@ -186,6 +186,25 @@ static irqreturn_t vfio_handler(int irq, void *dev_id) >>>> return ret; >>>> } >>>> >>>> +static int vfio_platform_set_automasked(struct vfio_platform_irq *irq, >>>> + bool automasked) >>>> +{ >>>> + unsigned long flags; >>>> + >>>> + spin_lock_irqsave(&irq->lock, flags); >>>> + if (automasked) { >>>> + irq->forwarded = true; >>>> + irq->flags |= VFIO_IRQ_INFO_AUTOMASKED; >>>> + irq->handler = vfio_automasked_irq_handler; >>>> + } else { >>>> + irq->forwarded = false; >>>> + irq->flags &= ~VFIO_IRQ_INFO_AUTOMASKED; >>>> + irq->handler = vfio_irq_handler; >>>> + } >>>> + spin_unlock_irqrestore(&irq->lock, flags); >>>> + return 0; >>> >>> In vfio-speak, automasked means level and we're not magically changing >>> the IRQ from level to edge, we're simply able to handle level >>> differently based on a hardware optimization. Should the user visible >>> flags therefore change based on this? Aren't we really setting the >>> forwarded state rather than the automasked state? >> >> Well actually this was following the discussion we had a long time ago >> about that topic: >> >> http://lkml.iu.edu/hypermail/linux/kernel/1409.1/03659.html >> >> I did not really know how to conclude ... >> >> If it is preferred I can hide this to the userspace, no problem. > > I think that was based on the user being involved in enabling forwarding > though, now that it's hidden and automatic, it doesn't make much sense > to me to toggle any of the interrupt info details based on the state of > the forward. The user always needs to handle the interrupt as level > since the bypass can be torn down at any point in time. We're taking > advantage of the in-kernel path to make further optimizations, which > seems like they should be transparent to the user. Thanks, I wonder if it makes sense to rename VFIO_IRQ_INFO_AUTOMASKED to VFIO_IRQ_INFO_LEVEL_TRIGGERED, and reintroduce VFIO_IRQ_INFO_AUTOMASKED as an alias, so compatibility with user space can be maintained? This way this semantic misunderstanding could be left behind. Cheers, Antonios > > Alex > > _______________________________________________ > kvmarm mailing list > kvmarm@lists.cs.columbia.edu > https://lists.cs.columbia.edu/mailman/listinfo/kvmarm > -- Antonios Motakis Virtualization Engineer Huawei Technologies Duesseldorf GmbH European Research Center Riesstrasse 25, 80992 M?nchen -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/