Message ID | e71044315a6d2a3fb127d62954579390cb837d10.1632307952.git.rahul.singh@arm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | PCI devices passthrough on Arm | expand |
On Wed, 22 Sep 2021, Rahul Singh wrote: > ARM architecture does not implement I/O ports. Ignore this call on ARM > to avoid the overhead of making a hypercall just for Xen to return > -ENOSYS. > > Signed-off-by: Rahul Singh <rahul.singh@arm.com> > --- > Change in v2: > - Instead of returning success in XEN, ignored the call in xl. > --- > tools/libs/ctrl/xc_domain.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c > index 23322b70b5..25c95f6596 100644 > --- a/tools/libs/ctrl/xc_domain.c > +++ b/tools/libs/ctrl/xc_domain.c > @@ -1348,6 +1348,14 @@ int xc_domain_ioport_permission(xc_interface *xch, > uint32_t nr_ports, > uint32_t allow_access) > { > +#if defined(__arm__) || defined(__aarch64__) > + /* > + * The ARM architecture does not implement I/O ports. > + * Avoid the overhead of making a hypercall just for Xen to return -ENOSYS. > + * It is safe to ignore this call on ARM so we just return 0. > + */ > + return 0; I think this is fine from a code change point of view. I wonder if we want to return 0 or return an error here, but I am thinking that 0 is OK because there is really nothing to do anyway as they end up ignored one way or the other. Based on that reasoning: Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > +#else > DECLARE_DOMCTL; > > domctl.cmd = XEN_DOMCTL_ioport_permission; > @@ -1357,6 +1365,7 @@ int xc_domain_ioport_permission(xc_interface *xch, > domctl.u.ioport_permission.allow_access = allow_access; > > return do_domctl(xch, &domctl); > +#endif > } > > int xc_availheap(xc_interface *xch, > -- > 2.17.1 > >
diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c index 23322b70b5..25c95f6596 100644 --- a/tools/libs/ctrl/xc_domain.c +++ b/tools/libs/ctrl/xc_domain.c @@ -1348,6 +1348,14 @@ int xc_domain_ioport_permission(xc_interface *xch, uint32_t nr_ports, uint32_t allow_access) { +#if defined(__arm__) || defined(__aarch64__) + /* + * The ARM architecture does not implement I/O ports. + * Avoid the overhead of making a hypercall just for Xen to return -ENOSYS. + * It is safe to ignore this call on ARM so we just return 0. + */ + return 0; +#else DECLARE_DOMCTL; domctl.cmd = XEN_DOMCTL_ioport_permission; @@ -1357,6 +1365,7 @@ int xc_domain_ioport_permission(xc_interface *xch, domctl.u.ioport_permission.allow_access = allow_access; return do_domctl(xch, &domctl); +#endif } int xc_availheap(xc_interface *xch,
ARM architecture does not implement I/O ports. Ignore this call on ARM to avoid the overhead of making a hypercall just for Xen to return -ENOSYS. Signed-off-by: Rahul Singh <rahul.singh@arm.com> --- Change in v2: - Instead of returning success in XEN, ignored the call in xl. --- tools/libs/ctrl/xc_domain.c | 9 +++++++++ 1 file changed, 9 insertions(+)