[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] R: ARM: access to iomem and HW IRQ
> -----Original Message----- > From: Arianna Avanzini [mailto:avanzini.arianna@xxxxxxxxx] > Sent: Thursday, February 27, 2014 7:24 PM > To: Dario Faggioli; Eric Trudeau; Viktor Kleinik > Cc: Stefano Stabellini; xen-devel@xxxxxxxxxxxxx; Julien Grall > Subject: Re: R: [Xen-devel] ARM: access to iomem and HW IRQ > > On 02/28/2014 12:39 AM, Dario Faggioli wrote: > > As I said, Arianna is doing something very similar... perhaps she can merge > > her > > and your work and try to upstream it properly, in the next few days... > > Arianna? > > > > I'd be certainly happy to, once the patch is ready and if Eric Trudeau agrees. > I agree. > Sorry for the delay, > Arianna > > > > Regards, > > Dario > > > > > > Inviato da Samsung Mobile > > > > > > -------- Messaggio originale -------- > > Da: Eric Trudeau > > Data:28/02/2014 00:03 (GMT+01:00) > > A: Viktor Kleinik > > Cc: Stefano Stabellini ,Dario Faggioli ,xen-devel@xxxxxxxxxxxxx,Arianna > > Avanzini > > ,Julien Grall > > Oggetto: Re: [Xen-devel] ARM: access to iomem and HW IRQ > > > > > > On Feb 27, 2014, at 1:10 PM, "Viktor Kleinik" > > <viktor.kleinik@xxxxxxxxxxxxxxx > > <mailto:viktor.kleinik@xxxxxxxxxxxxxxx>> wrote: > > > >> Thank you all for your responses. > >> > >> I will try those changes on our platform. > >> Are you planning push the implementation of > >> xc_domain_memory_mapping/XEN_DOMCTL_memory_mapping and > >> xc_physdev_map_pirq/PHYSDEVOP_map_pirq hypercalls into > >> official Xen release? > >> > >> Regards, > >> Victor > >> > > I don't expect to push the changes up. If you want to submit, please go > > ahead. > >> > >> On Thu, Feb 27, 2014 at 2:11 PM, Eric Trudeau <etrudeau@xxxxxxxxxxxx > >> <mailto:etrudeau@xxxxxxxxxxxx>> wrote: > >> > >> > -----Original Message----- > >> > From: Stefano Stabellini [mailto:stefano.stabellini@xxxxxxxxxxxxx > >> <mailto:stefano.stabellini@xxxxxxxxxxxxx>] > >> > Sent: Thursday, February 27, 2014 8:16 AM > >> > To: Dario Faggioli > >> > Cc: Viktor Kleinik; xen-devel@xxxxxxxxxxxxx > >> <mailto:xen-devel@xxxxxxxxxxxxx>; Arianna Avanzini; Stefano Stabellini; > >> > Julien Grall; Eric Trudeau > >> > Subject: Re: [Xen-devel] ARM: access to iomem and HW IRQ > >> > > >> > On Thu, 27 Feb 2014, Dario Faggioli wrote: > >> > > On mer, 2014-02-26 at 15:43 +0000, Viktor Kleinik wrote: > >> > > > Hi all, > >> > > > > >> > > Hi, > >> > > > >> > > > Does anyone knows something about future plans to implement > >> > > > xc_domain_memory_mapping/XEN_DOMCTL_memory_mapping and > >> > > > xc_physdev_map_pirq/PHYSDEVOP_map_pirq calls for ARM? > >> > > > > >> > > I think Arianna is working on an implementation of the former > >> > > (XEN_DOMCTL_memory_mapping), and she should be sending patches > to this > >> > > list soon, isn't it so, Arianna? > >> > > >> > Eric Trudeau did some work in the area too: > >> > > >> > http://marc.info/?l=xen-devel&m=137338996422503 > >> > http://marc.info/?l=xen-devel&m=137365750318936 > >> > >> I checked our repo and the route IRQ changes to DomUs in the second > patch > >> URL Stefano provided below are up-to-date with what we have been using > on > >> our platforms. We made no further changes after that patch, i.e. we > >> left > >> the 100 msec max wait for a domain to finish an ISR when destroying it. > >> > >> We also added support for a DomU to map in I/O memory with the iomem > >> configuration parameter. Unfortunately, I don't have time to provide > >> an > >> official patch on recent Xen upstream code due to time constraints, but > >> below is a patch based on last October, :( , commit > >> d70d87d2ccf93e3d5302bb034c0a1ae1d6fc1d29. > >> I hope this is helpful, because that is the best I can do at this time. > >> > >> ----------------- > >> > >> tools/libxl/libxl_create.c | 5 +++-- > >> xen/arch/arm/domctl.c | 74 > >> > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > ++++++++- > >> 2 files changed, 76 insertions(+), 3 deletions(-) > >> > >> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c > >> index 1b320d3..53ed52e 100644 > >> --- a/tools/libxl/libxl_create.c > >> +++ b/tools/libxl/libxl_create.c > >> @@ -976,8 +976,9 @@ static void domcreate_launch_dm(libxl__egc *egc, > >> libxl__multidev *multidev, > >> LOG(DEBUG, "dom%d iomem %"PRIx64"-%"PRIx64, > >> domid, io->start, io->start + io->number - 1); > >> > >> - ret = xc_domain_iomem_permission(CTX->xch, domid, > >> - io->start, io->number, 1); > >> + ret = xc_domain_memory_mapping(CTX->xch, domid, > >> + io->start, io->start, > >> + io->number, 1); > >> if (ret < 0) { > >> LOGE(ERROR, > >> "failed give dom%d access to iomem range > >> %"PRIx64"-%"PRIx64, > >> diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c > >> index 851ee40..222aac9 100644 > >> --- a/xen/arch/arm/domctl.c > >> +++ b/xen/arch/arm/domctl.c > >> @@ -10,11 +10,83 @@ > >> #include <xen/errno.h> > >> #include <xen/sched.h> > >> #include <public/domctl.h> > >> +#include <xen/iocap.h> > >> +#include <xsm/xsm.h> > >> +#include <xen/paging.h> > >> +#include <xen/guest_access.h> > >> > >> long arch_do_domctl(struct xen_domctl *domctl, struct domain *d, > >> XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) > >> { > >> - return -ENOSYS; > >> + long ret = 0; > >> + bool_t copyback = 0; > >> + > >> + switch ( domctl->cmd ) > >> + { > >> + case XEN_DOMCTL_memory_mapping: > >> + { > >> + unsigned long gfn = domctl->u.memory_mapping.first_gfn; > >> + unsigned long mfn = domctl->u.memory_mapping.first_mfn; > >> + unsigned long nr_mfns = domctl->u.memory_mapping.nr_mfns; > >> + int add = domctl->u.memory_mapping.add_mapping; > >> + > >> + /* removing i/o memory is not implemented yet */ > >> + if (!add) { > >> + ret = -ENOSYS; > >> + break; > >> + } > >> + ret = -EINVAL; > >> + if ( (mfn + nr_mfns - 1) < mfn || /* wrap? */ > >> + /* x86 checks wrap based on paddr_bits which is not > >> implemented on ARM? */ > >> + /* ((mfn | (mfn + nr_mfns - 1)) >> (paddr_bits - > >> PAGE_SHIFT)) || */ > >> + (gfn + nr_mfns - 1) < gfn ) /* wrap? */ > >> + break; > >> + > >> + ret = -EPERM; > >> + if ( current->domain->domain_id != 0 ) > >> + break; > >> + > >> + ret = xsm_iomem_mapping(XSM_HOOK, d, mfn, mfn + nr_mfns - 1, > add); > >> + if ( ret ) > >> + break; > >> + > >> + if ( add ) > >> + { > >> + printk(XENLOG_G_INFO > >> + "memory_map:add: dom%d gfn=%lx mfn=%lx nr=%lx\n", > >> + d->domain_id, gfn, mfn, nr_mfns); > >> + > >> + ret = iomem_permit_access(d, mfn, mfn + nr_mfns - 1); > >> + if ( !ret && paging_mode_translate(d) ) > >> + { > >> + ret = map_mmio_regions(d, gfn << PAGE_SHIFT, > >> + (gfn + nr_mfns) << PAGE_SHIFT, > >> + mfn << PAGE_SHIFT); > >> + if ( ret ) > >> + { > >> + printk(XENLOG_G_WARNING > >> + "memory_map:fail: dom%d gfn=%lx mfn=%lx > >> nr=%lx\n", > >> + d->domain_id, gfn, mfn, nr_mfns); > >> + if ( iomem_deny_access(d, mfn, mfn + nr_mfns - 1) > >> && > >> + is_hardware_domain(current->domain) ) > >> + printk(XENLOG_ERR > >> + "memory_map: failed to deny dom%d > >> access > >> to [%lx,%lx]\n", > >> + d->domain_id, mfn, mfn + nr_mfns - 1); > >> + } > >> + } > >> + } > >> + } > >> + break; > >> + > >> + default: > >> + ret = -ENOSYS; > >> + break; > >> + } > >> + > >> + if ( copyback && __copy_to_guest(u_domctl, domctl, 1) ) > >> + ret = -EFAULT; > >> + > >> + return ret; > >> } > >> > >> void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c) > >> > >> <http://www.globallogic.com/email_disclaimer.txt> > > > -- > /* > * Arianna Avanzini > * avanzini.arianna@xxxxxxxxx > * 73628@xxxxxxxxxxxxxxxxxxx > */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |