All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <JBeulich@suse.com>
To: "Petre Pircalabu" <ppircalabu@bitdefender.com>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, WeiLiu <wl@xen.org>,
	Razvan Cojocaru <rcojocaru@bitdefender.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	George Dunlap <George.Dunlap@eu.citrix.com>,
	Tim Deegan <tim@xen.org>, Ian Jackson <Ian.Jackson@eu.citrix.com>,
	Julien Grall <julien.grall@arm.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Roger Pau Monne <roger.pau@citrix.com>
Subject: Re: [Xen-devel] [PATCH 8/9] vm_event: Add vm_event_ng interface
Date: Thu, 06 Jun 2019 02:37:08 -0600	[thread overview]
Message-ID: <5CF8D0B40200007800235CAA@prv1-mh.provo.novell.com> (raw)
In-Reply-To: <2d36968a158b9ff12ef8b717d9ae617062abae6c.camel@bitdefender.com>

>>> On 05.06.19 at 19:01, <ppircalabu@bitdefender.com> wrote:
> On Tue, 2019-06-04 at 15:43 +0100, Andrew Cooper wrote:
>> On 30/05/2019 15:18, Petre Pircalabu wrote:
>> > +static int vm_event_channels_alloc_buffer(struct
>> > vm_event_channels_domain *impl)
>> > +{
>> > +    int i, rc = -ENOMEM;
>> > +
>> > +    for ( i = 0; i < impl->nr_frames; i++ )
>> > +    {
>> > +        struct page_info *page = alloc_domheap_page(impl->ved.d,
>> > 0);
>> 
>> This creates pages which are reference-able (in principle) by the
>> guest,
>> and are bounded by d->max_pages.

Not by a HVM one, because they can't reference pages by MFN.
Or else, as Petre implies, the ioreq approach would be wrong, too.

>> Both of these are properties of the existing interface which we'd
>> prefer
>> to remove.
> The allocation mechanism is similar with the one used by ioreq (the
> main difference is the number of pages).

Question is whether here you want to use the "caller owned"
variant. I haven't thought through whether this would actually
be better, so it's merely a remark.

>> > +        if ( !page )
>> > +            goto err;
>> > +
>> > +        if ( !get_page_and_type(page, impl->ved.d,
>> > PGT_writable_page) )
>> > +        {
>> > +            rc = -ENODATA;
>> > +            goto err;
>> > +        }
>> > +
>> > +        impl->mfn[i] = page_to_mfn(page);
>> > +    }
>> > +
>> > +    impl->slots = (struct vm_event_slot *)vmap(impl->mfn, impl-
>> > >nr_frames);
>> 
>> You appear to have opencoded vmalloc() here.  Is there any reason not
>> to
>> use that?
>> 
> 
> The problem with vmalloc is that if the pages are not assigned to a
> specific domain the remapping fails in the monitor domain.
> e.g.:
> ...
> (XEN) mm.c:1015:d0v2 pg_owner d1 l1e_owner d0, but real_pg_owner d-1
> (XEN) mm.c:1091:d0v7 Error getting mfn 5fbf53 (pfn ffffffffffffffff)
> from L1 entry 80000005fbf53227 for l1e_owner d0, pg_owner d1

In which case maybe use vmalloc() and then assign_pages()?

Jan



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2019-06-06  8:37 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-30 14:18 [PATCH 0/9] Per vcpu vm_event channels Petre Pircalabu
2019-05-30 14:18 ` [Xen-devel] " Petre Pircalabu
2019-05-30 14:18 ` [PATCH 1/9] tools/libxc: Consistent usage of xc_vm_event_* interface Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-05-31 23:01   ` Andrew Cooper
2019-05-31 23:01     ` [Xen-devel] " Andrew Cooper
2019-06-04 14:23     ` Petre Ovidiu PIRCALABU
2019-06-04 16:07       ` Andrew Cooper
2019-05-30 14:18 ` [PATCH 2/9] vm_event: Define VM_EVENT type Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-05-31 23:26   ` Andrew Cooper
2019-05-31 23:26     ` [Xen-devel] " Andrew Cooper
2019-06-03 22:22     ` Tamas K Lengyel
2019-06-03 22:22       ` [Xen-devel] " Tamas K Lengyel
2019-06-03 22:26       ` Tamas K Lengyel
2019-06-03 22:26         ` [Xen-devel] " Tamas K Lengyel
2019-06-04 16:09         ` Andrew Cooper
2019-06-04 10:12     ` Petre Ovidiu PIRCALABU
2019-06-04 10:12       ` [Xen-devel] " Petre Ovidiu PIRCALABU
2019-06-03 15:51   ` Jan Beulich
2019-06-03 15:51     ` [Xen-devel] " Jan Beulich
2019-05-30 14:18 ` [PATCH 3/9] vm_event: Make ‘local’ functions ‘static’ Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-05-31 23:28   ` Andrew Cooper
2019-05-31 23:28     ` [Xen-devel] " Andrew Cooper
2019-06-02  0:36   ` Tamas K Lengyel
2019-06-02  0:36     ` [Xen-devel] " Tamas K Lengyel
2019-05-30 14:18 ` [PATCH 4/9] vm_event: Remove "ring" suffix from vm_event_check_ring Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-05-31 23:32   ` Andrew Cooper
2019-05-31 23:32     ` [Xen-devel] " Andrew Cooper
2019-06-05 15:52   ` Tamas K Lengyel
2019-05-30 14:18 ` [PATCH 5/9] vm_event: Simplify vm_event interface Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-05-31 23:43   ` Andrew Cooper
2019-05-31 23:43     ` [Xen-devel] " Andrew Cooper
2019-06-01  0:06     ` Andrew Cooper
2019-06-01  0:06       ` [Xen-devel] " Andrew Cooper
2019-06-03 15:33       ` Petre Ovidiu PIRCALABU
2019-06-03 15:33         ` [Xen-devel] " Petre Ovidiu PIRCALABU
2019-05-30 14:18 ` [PATCH 6/9] vm_event: Move struct vm_event_domain to vm_event.c Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-05-31 23:44   ` Andrew Cooper
2019-05-31 23:44     ` [Xen-devel] " Andrew Cooper
2019-06-03 11:28     ` Petre Ovidiu PIRCALABU
2019-06-03 11:28       ` [Xen-devel] " Petre Ovidiu PIRCALABU
2019-06-05 15:53   ` Tamas K Lengyel
2019-05-30 14:18 ` [PATCH 7/9] vm_event: Decouple implementation details from interface Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-05-30 14:18 ` [PATCH 8/9] vm_event: Add vm_event_ng interface Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-06-04 14:43   ` Andrew Cooper
2019-06-05 17:01     ` Petre Ovidiu PIRCALABU
2019-06-06  8:37       ` Jan Beulich [this message]
2019-06-06 13:48         ` Petre Ovidiu PIRCALABU
2019-06-06 14:16           ` Jan Beulich
2019-05-30 14:18 ` [PATCH 9/9] xen-access: Add support for " Petre Pircalabu
2019-05-30 14:18   ` [Xen-devel] " Petre Pircalabu
2019-06-04 16:04   ` Andrew Cooper
2019-05-30 15:27 ` [PATCH 0/9] Per vcpu vm_event channels Tamas K Lengyel
2019-05-30 15:27   ` [Xen-devel] " Tamas K Lengyel
2019-05-31  7:07   ` Petre Ovidiu PIRCALABU
2019-05-31  7:07     ` [Xen-devel] " Petre Ovidiu PIRCALABU
2019-06-01  0:25 ` Andrew Cooper
2019-06-01  0:25   ` [Xen-devel] " Andrew Cooper
2019-06-03 14:04   ` Petre Ovidiu PIRCALABU
2019-06-03 14:04     ` [Xen-devel] " Petre Ovidiu PIRCALABU

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=5CF8D0B40200007800235CAA@prv1-mh.provo.novell.com \
    --to=jbeulich@suse.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=julien.grall@arm.com \
    --cc=konrad.wilk@oracle.com \
    --cc=ppircalabu@bitdefender.com \
    --cc=rcojocaru@bitdefender.com \
    --cc=roger.pau@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=tamas@tklengyel.com \
    --cc=tim@xen.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.