xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Ian Jackson <iwj@xenproject.org>,
	Bertrand Marquis <Bertrand.Marquis@arm.com>,
	Jan Beulich <jbeulich@suse.com>,
	Oleksandr Andrushchenko <Oleksandr_Andrushchenko@epam.com>,
	Rahul Singh <Rahul.Singh@arm.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andre Przywara <Andre.Przywara@arm.com>, Wei Liu <wl@xen.org>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v5 01/11] xen/arm: xc_domain_ioport_permission(..) not supported on ARM.
Date: Wed, 13 Oct 2021 10:07:42 +0200	[thread overview]
Message-ID: <YWaTztHHHeghjxDR@MacBook-Air-de-Roger.local> (raw)
In-Reply-To: <alpine.DEB.2.21.2110121319150.9408@sstabellini-ThinkPad-T480s>

On Tue, Oct 12, 2021 at 01:42:22PM -0700, Stefano Stabellini wrote:
> On Tue, 12 Oct 2021, Ian Jackson wrote:
> > Bertrand Marquis writes ("Re: [PATCH v5 01/11] xen/arm: xc_domain_ioport_permission(..) not supported on ARM."):
> > > I can add something in the commit message about the fact that we improve
> > > performance and prevent to do a call that is and will not be supported in Xen.
> > 
> > Thanks but I'm afraid I don't think that is a correct summary of the
> > thread.  Nor would it be an adequate justification for the change.  At
> > least, not unless you plan to write something considerably longer (and
> > more precise).
> > 
> > Firstly, I'm not convinced this change would be justified by the
> > performance impact.  This is a small number of hypercalls during
> > domain startup.  Usually none, I think ?  If someone wants to optimise
> > domain startup speed then I am very open to that but I think this
> > change will make negligible change in practice.  Unless someone wants
> > to tell me I'm wrong about that ?  And if I am wrong about that then
> > an explanation of why my suppositions are wrong ought to go in the
> > commit message.
> > 
> > Secondly, there is no justification there for the change in error
> > status.
> > 
> > Why is this change needed ?  (What goes wrong if it is omitted ?)
> > That is what the commit message ought to answer.
> > 
> > Plus, given that it stubs out a function to make it into a no-op, that
> > itself requires an explanation.  Why is it OK for this function which
> > is supposed to do a thing, to in fact not do anything at all and
> > return successfully saying "yes I did that" ?
> > 
> > I think (having read the thread) that I know the answers to these
> > questions but it needs to be clearly and explicitly written down.
> > 
> > > I saw your change in CODING_STYLE and I understand the request.
> > > I will try to see if we can handle this change before the feature freeze.
> > 
> > Thanks.  I doubt that this will be hard.  I am more worried about the
> > commit message.
> > 
> > Indeed, since we haven't had the rationale for this change explicitly
> > written down, there is a risk that when we do so, we will discover
> > some problem with the approach that we had previously overlooked.
> > 
> > Discovering that kind of thing is one reason to explicitly write down
> > why we are doing what we are doing, but this situation does mean we
> > shouldn't feel we've yet achieved confidence that this patch is right.
> 
> 
> I don't think it is about performance. From a performance point of view,
> we could make as many (unneeded) hypercalls as required. It is mostly
> about minimizing unwanted changes to common libxl code. Let me explain.
> 
> 
> IO ports on ARM don't exist so all IO ports related hypercalls are going
> to fail. This is expected. Today, a failure of
> xc_domain_ioport_permission would turn into a critical failure at domain
> creation. We need to avoid this outcome; instead we want to continue
> with domain creation as normal even if xc_domain_ioport_permission
> fails. (FYI the underlying hypercall XEN_DOMCTL_ioport_permission is not
> implemented on ARM so it would return -ENOSYS.)
> 
> 
> We have a few options to achieve this goal:
> 
> 
> 1) No xc_domain_ioport_permission calls on ARM
> 
>    Use #ifdefs or similar checks in libxl_pci.c to avoid calling
>    xc_domain_ioport_permission on ARM. This could be best but it would
>    cause some churn in arch-neutral libxl code.
> 
> 
> 2) Handle xc_domain_ioport_permission errors in libxl
> 
>    Introduce checks on the return value of xc_domain_ioport_permission
>    and ignore specific errors on ARM in libxl_pci.c.
>    For instance: if (ARM && rc == -ENOSYS) continue.
> 
>    This might cause less churn than 1) but still requires a few changes
>    in arch-neutral libxl code.
> 
> 
> 3) Force XEN_DOMCTL_ioport_permission to return zero on ARM
> 
>    Force the hypercall to return success even if it did nothing.
>    Currently it returns -ENOSYS.
> 
>    This is possible but it wasn't chosen for the implementation as we
>    felt that the hypercall should reflect what was actually done
>    (nothing) and it should be userspace to handle the error. I guess
>    this could be argued either way.
> 
> 
> 4) Force xc_domain_ioport_permission to return zero on ARM
> 
>    Force xc_domain_ioport_permission to return success even if the
>    hypercall would return -ENOSYS. This way there are no changes to
>    libxl.
>    
>    This is what the patch currently implements by using  #ifdef in
>    xc_domain_ioport_permission. It could also have achieved the same
>    goal by making the implementation of xc_domain_ioport_permission
>    arch-specific, and in the ARM implementation returning 0.
> 
> 
> All options above achieve the goal of a successful domain creation with
> PCI device assigned on ARM. You might be able to think of other options
> as well. I think noone here is really set on using one option over the
> other -- as long as xc_domain_ioport_permission failures don't turn into
> domain creation failures on ARM we are good.
> 

I think having a libxl_arch_io_ports_supported helper could be the
cleaner way to do this. For x86 it will unconditionally return true,
while for Arm you could consider poking at
XEN_DOMCTL_ioport_permission and see if it returns ENOSYS or
otherwise.

I guess it's possible that in the future we allow IO ports access on
Arm guests using some kind of emulated mechanism if the need arises,
at which point the hypercall will be implemented.

Thanks, Roger.


  reply	other threads:[~2021-10-13  8:08 UTC|newest]

Thread overview: 190+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-06 17:40 [PATCH v5 00/11] PCI devices passthrough on Arm Rahul Singh
2021-10-06 17:40 ` [PATCH v5 01/11] xen/arm: xc_domain_ioport_permission(..) not supported on ARM Rahul Singh
2021-10-11 11:47   ` Roger Pau Monné
2021-10-11 12:11     ` Bertrand Marquis
2021-10-11 13:20       ` Roger Pau Monné
2021-10-11 13:40         ` Bertrand Marquis
2021-10-11 13:57           ` Roger Pau Monné
2021-10-11 14:16             ` Bertrand Marquis
2021-10-11 16:32               ` Roger Pau Monné
2021-10-11 17:11                 ` Bertrand Marquis
2021-10-12  8:29                   ` Jan Beulich
2021-10-12  8:41                     ` Bertrand Marquis
2021-10-12  9:32                       ` Jan Beulich
2021-10-12  9:38                         ` Oleksandr Andrushchenko
2021-10-12 10:01                           ` Jan Beulich
2021-10-12 10:06                             ` Oleksandr Andrushchenko
2021-10-12 10:20                               ` Jan Beulich
2021-10-12 10:41                                 ` Bertrand Marquis
2021-10-12 10:44                                   ` Jan Beulich
2021-10-12 14:53                                   ` Ian Jackson
2021-10-12 16:15                                     ` Bertrand Marquis
2021-10-12 16:29                                       ` Ian Jackson
2021-10-12 20:42                                         ` Stefano Stabellini
2021-10-13  8:07                                           ` Roger Pau Monné [this message]
2021-10-13 11:52                                             ` Ian Jackson
2021-10-13  8:02                                       ` Roger Pau Monné
2021-10-13 12:02                                         ` Ian Jackson
2021-10-12  9:40                         ` Bertrand Marquis
2021-10-12 10:03                           ` Jan Beulich
2021-10-11 14:16           ` Oleksandr Andrushchenko
2021-10-06 17:40 ` [PATCH v5 02/11] xen/arm: Add PHYSDEVOP_pci_device_(*add/remove) support for ARM Rahul Singh
2021-10-07  0:05   ` Stefano Stabellini
2021-10-07 12:58     ` Jan Beulich
2021-10-21  9:28   ` xen/arm: Missing appropriate locking for the IOMMU (WAS Re: [PATCH v5 02/11] xen/arm: Add PHYSDEVOP_pci_device_(*add/remove) support for ARM) Julien Grall
2021-10-21 13:15     ` Bertrand Marquis
2021-10-21 13:47       ` Julien Grall
2021-10-21 13:52         ` Bertrand Marquis
2021-10-06 17:40 ` [PATCH v5 03/11] xen/arm: Add cmdline boot option "pci-passthrough = <boolean>" Rahul Singh
2021-10-07  8:27   ` Jan Beulich
2021-10-07  8:32     ` Rahul Singh
2021-10-07 12:59   ` Jan Beulich
2021-10-06 17:40 ` [PATCH v5 04/11] xen/arm: PCI host bridge discovery within XEN on ARM Rahul Singh
2021-10-06 17:40 ` [PATCH v5 05/11] xen/arm: Add support for Xilinx ZynqMP PCI host controller Rahul Singh
2021-10-06 17:40 ` [PATCH v5 06/11] xen/arm: Implement pci access functions Rahul Singh
2021-10-06 17:40 ` [PATCH v5 07/11] xen/domctl: Introduce XEN_DOMCTL_CDF_vpci flag Rahul Singh
2021-10-07 13:08   ` Jan Beulich
2021-10-08 18:06   ` Andrew Cooper
2021-10-08 21:12     ` Julien Grall
2021-10-08 21:46       ` Stefano Stabellini
2021-10-11  9:24         ` Julien Grall
2021-10-11 11:29         ` Michal Orzel
2021-10-11 11:35           ` Jan Beulich
2021-10-11 13:17             ` Roger Pau Monné
2021-10-11  9:48     ` Ian Jackson
2021-10-11  9:27   ` Roger Pau Monné
2021-10-11 12:06     ` Michal Orzel
2021-10-12 10:38     ` Michal Orzel
2021-10-13  8:30       ` Roger Pau Monné
2021-10-13  9:36         ` Bertrand Marquis
2021-10-13 10:56           ` Roger Pau Monné
2021-10-13 12:11             ` Bertrand Marquis
2021-10-13 12:57               ` Jan Beulich
2021-10-13 20:41                 ` Stefano Stabellini
2021-10-14  6:23                   ` Jan Beulich
2021-10-14  7:53                     ` Bertrand Marquis
2021-10-13 14:28               ` Roger Pau Monné
2021-10-13 20:53             ` Stefano Stabellini
2021-10-13 23:21               ` Stefano Stabellini
2021-10-12 21:48     ` Stefano Stabellini
2021-10-13  6:18       ` Jan Beulich
2021-10-13  7:11         ` Michal Orzel
2021-10-06 17:40 ` [PATCH v5 08/11] xen/arm: Enable the existing x86 virtual PCI support for ARM Rahul Singh
2021-10-07 13:43   ` Jan Beulich
2021-10-11 12:41     ` Bertrand Marquis
2021-10-11 13:09       ` Jan Beulich
2021-10-11 13:34         ` Bertrand Marquis
2021-10-11 14:10           ` Jan Beulich
2021-10-11 14:52             ` Bertrand Marquis
2021-10-11 18:18             ` Stefano Stabellini
2021-10-12  8:04               ` Jan Beulich
2021-10-12 21:37                 ` Stefano Stabellini
2021-10-13  6:10                   ` Jan Beulich
2021-10-13 10:02                     ` Bertrand Marquis
2021-10-13 12:21                       ` Jan Beulich
2021-10-12 15:04       ` Julien Grall
2021-10-12 16:12         ` Bertrand Marquis
2021-10-12 16:20           ` Julien Grall
2021-10-12 17:50             ` Bertrand Marquis
2021-10-11 10:51   ` Roger Pau Monné
2021-10-11 16:12     ` Bertrand Marquis
2021-10-11 16:20       ` Oleksandr Andrushchenko
2021-10-11 16:43         ` Roger Pau Monné
2021-10-11 17:15           ` Bertrand Marquis
2021-10-11 18:30             ` Oleksandr Andrushchenko
2021-10-11 19:27               ` Stefano Stabellini
2021-10-12  5:34                 ` Oleksandr Andrushchenko
2021-10-12  7:44                 ` Bertrand Marquis
2021-10-12 14:32   ` Julien Grall
2021-10-12 14:34     ` Bertrand Marquis
2021-10-13  8:45   ` Roger Pau Monné
2021-10-13  9:48     ` Bertrand Marquis
2021-10-13 10:33       ` Roger Pau Monné
2021-10-13 13:00     ` Jan Beulich
2021-10-13 14:51       ` Oleksandr Andrushchenko
2021-10-13 15:15         ` Jan Beulich
2021-10-13 19:27           ` Stefano Stabellini
2021-10-14  6:33             ` Jan Beulich
2021-10-14  7:53               ` Bertrand Marquis
2021-10-14  9:03               ` Bertrand Marquis
2021-10-14  9:24                 ` Jan Beulich
2021-10-06 17:40 ` [PATCH v5 09/11] xen/arm: Transitional change to build HAS_VPCI on ARM Rahul Singh
2021-10-11 11:43   ` Roger Pau Monné
2021-10-11 12:15     ` Bertrand Marquis
2021-10-12  1:32       ` Stefano Stabellini
2021-10-06 17:40 ` [PATCH v5 10/11] arm/libxl: Emulated PCI device tree node in libxl Rahul Singh
2021-10-06 18:01   ` Julien Grall
2021-10-07  0:26     ` Stefano Stabellini
2021-10-07 15:31       ` Rahul Singh
2021-10-07 10:53     ` Ian Jackson
2021-10-07 15:29       ` Rahul Singh
2021-10-07 16:11         ` Ian Jackson
2021-10-11 13:46           ` Roger Pau Monné
2021-10-14 17:16           ` Bertrand Marquis
2021-10-14 14:49             ` [PATCH v6 0/3] PCI devices passthrough on Arm Bertrand Marquis
2021-10-14 14:49               ` [PATCH v6 1/3] xen/vpci: Move ecam access functions to common code Bertrand Marquis
2021-10-14 16:06                 ` Jan Beulich
2021-10-14 17:09                   ` Bertrand Marquis
2021-10-15  6:29                     ` Jan Beulich
2021-10-15  7:37                       ` Bertrand Marquis
2021-10-15  8:13                         ` Jan Beulich
2021-10-15  8:20                           ` Bertrand Marquis
2021-10-15  8:24                             ` Jan Beulich
2021-10-15  9:49                           ` Roger Pau Monné
2021-10-14 23:47                 ` Stefano Stabellini
2021-10-15  7:44                 ` Roger Pau Monné
2021-10-15  7:53                   ` Bertrand Marquis
2021-10-15  9:53                     ` Roger Pau Monné
2021-10-15 10:12                       ` Bertrand Marquis
2021-10-15 10:14                       ` Jan Beulich
2021-10-14 14:49               ` [PATCH v6 2/3] xen/arm: Enable the existing x86 virtual PCI support for ARM Bertrand Marquis
2021-10-14 23:49                 ` Stefano Stabellini
2021-10-15  6:40                   ` Jan Beulich
2021-10-15  9:59                     ` Ian Jackson
2021-10-15 10:10                   ` Bertrand Marquis
2021-10-15  8:00                 ` Jan Beulich
2021-10-15 10:09                   ` Bertrand Marquis
2021-10-15 10:14                     ` Ian Jackson
2021-10-15 10:18                       ` Jan Beulich
2021-10-15 11:35                         ` Roger Pau Monné
2021-10-15 12:13                           ` Bertrand Marquis
2021-10-15 12:18                             ` Jan Beulich
2021-10-15 12:28                               ` Bertrand Marquis
2021-10-15 13:00                                 ` Jan Beulich
2021-10-15 13:10                                   ` Bertrand Marquis
2021-10-15 10:38                     ` Jan Beulich
2021-10-15  8:32                 ` Roger Pau Monné
2021-10-15  8:42                   ` Michal Orzel
2021-10-15  9:52                   ` Bertrand Marquis
2021-10-15 10:13                     ` Luca Fancellu
2021-10-15 10:17                       ` Bertrand Marquis
2021-10-15 10:19                     ` Roger Pau Monné
2021-10-15 10:31                       ` Bertrand Marquis
2021-10-15 10:24                     ` Jan Beulich
2021-10-15 10:33                       ` Bertrand Marquis
2021-10-15 10:41                         ` Jan Beulich
2021-10-15 10:48                           ` Bertrand Marquis
2021-10-15 10:51                             ` Jan Beulich
2021-10-15 11:08                               ` Bertrand Marquis
2021-10-15 13:47                             ` Roger Pau Monné
2021-10-15 14:00                               ` Luca Fancellu
2021-10-15 14:32                                 ` Roger Pau Monné
2021-10-14 14:49               ` [PATCH v6 3/3] arm/libxl: Emulated PCI device tree node in libxl Bertrand Marquis
2021-10-14 17:54                 ` [PATCH v6 3/3] arm/libxl: Emulated PCI device tree node in libxl [and 1 more messages] Ian Jackson
2021-10-14 23:50                   ` Stefano Stabellini
2021-10-15  7:28                   ` Julien Grall
2021-10-15  7:41                     ` Michal Orzel
2021-10-15  9:01                       ` Julien Grall
2021-10-15 10:02                     ` Ian Jackson
2021-10-15 10:58                       ` Michal Orzel
2021-10-15 11:04                         ` Michal Orzel
2021-10-15 11:46                         ` Ian Jackson
2021-10-15 11:53                           ` Michal Orzel
2021-10-15 12:10                             ` Julien Grall
2021-10-15 12:14                               ` Ian Jackson
2021-10-15 12:13                             ` Ian Jackson
2021-10-12 15:03   ` [PATCH v5 10/11] arm/libxl: Emulated PCI device tree node in libxl Ian Jackson
2021-10-06 17:40 ` [PATCH v5 11/11] xen/arm: Add linux,pci-domain property for hwdom if not available Rahul Singh
2021-10-13 20:54   ` Stefano Stabellini
2021-10-07 19:54 ` [PATCH v5 00/11] PCI devices passthrough on Arm Stefano Stabellini
2021-10-07 21:29   ` Rahul Singh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YWaTztHHHeghjxDR@MacBook-Air-de-Roger.local \
    --to=roger.pau@citrix.com \
    --cc=Andre.Przywara@arm.com \
    --cc=Bertrand.Marquis@arm.com \
    --cc=Oleksandr_Andrushchenko@epam.com \
    --cc=Rahul.Singh@arm.com \
    --cc=iwj@xenproject.org \
    --cc=jbeulich@suse.com \
    --cc=jgross@suse.com \
    --cc=sstabellini@kernel.org \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).