All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <JBeulich@suse.com>
To: Juergen Gross <jgross@suse.com>
Cc: sstabellini@kernel.org, wei.liu2@citrix.com,
	George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com,
	ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com,
	xen-devel@lists.xenproject.org, dgdegra@tycho.nsa.gov
Subject: Re: [PATCH v8 11/15] xen: delay allocation of grant table sub structures
Date: Wed, 20 Sep 2017 03:22:40 -0600	[thread overview]
Message-ID: <59C24F80020000780017D473@prv-mh.provo.novell.com> (raw)
In-Reply-To: <20170920063430.9105-12-jgross@suse.com>

>>> On 20.09.17 at 08:34, <jgross@suse.com> wrote:
> @@ -3381,75 +3425,21 @@ grant_table_create(
>      struct domain *d)
>  {
>      struct grant_table *t;
> -    unsigned int i, j;
>  
>      if ( (t = xzalloc(struct grant_table)) == NULL )
> -        goto no_mem_0;
> +        return -ENOMEM;
>  
>      /* Simple stuff. */
>      percpu_rwlock_resource_init(&t->lock, grant_rwlock);
>      spin_lock_init(&t->maptrack_lock);
> -    t->nr_grant_frames = INITIAL_NR_GRANT_FRAMES;
> -
> -    /* Active grant table. */
> -    if ( (t->active = xzalloc_array(struct active_grant_entry *,
> -                                    max_nr_active_grant_frames)) == NULL )
> -        goto no_mem_1;
> -    for ( i = 0;
> -          i < num_act_frames_from_sha_frames(INITIAL_NR_GRANT_FRAMES); i++ )
> -    {
> -        if ( (t->active[i] = alloc_xenheap_page()) == NULL )
> -            goto no_mem_2;
> -        clear_page(t->active[i]);
> -        for ( j = 0; j < ACGNT_PER_PAGE; j++ )
> -            spin_lock_init(&t->active[i][j].lock);
> -    }
> -
> -    /* Tracking of mapped foreign frames table */
> -    t->maptrack = vzalloc(max_maptrack_frames * sizeof(*t->maptrack));
> -    if ( t->maptrack == NULL )
> -        goto no_mem_2;
> -
> -    /* Shared grant table. */
> -    if ( (t->shared_raw = xzalloc_array(void *, max_grant_frames)) == NULL )
> -        goto no_mem_3;
> -    for ( i = 0; i < INITIAL_NR_GRANT_FRAMES; i++ )
> -    {
> -        if ( (t->shared_raw[i] = alloc_xenheap_page()) == NULL )
> -            goto no_mem_4;
> -        clear_page(t->shared_raw[i]);
> -    }
> -
> -    /* Status pages for grant table - for version 2 */
> -    t->status = xzalloc_array(grant_status_t *,
> -                              grant_to_status_frames(max_grant_frames));
> -    if ( t->status == NULL )
> -        goto no_mem_4;
> -
> -    for ( i = 0; i < INITIAL_NR_GRANT_FRAMES; i++ )
> -        gnttab_create_shared_page(d, t, i);
> -
> -    t->nr_status_frames = 0;
>  
>      /* Okay, install the structure. */
>      d->grant_table = t;
> -    return 0;
>  
> - no_mem_4:
> -    for ( i = 0; i < INITIAL_NR_GRANT_FRAMES; i++ )
> -        free_xenheap_page(t->shared_raw[i]);
> -    xfree(t->shared_raw);
> - no_mem_3:
> -    vfree(t->maptrack);
> - no_mem_2:
> -    for ( i = 0;
> -          i < num_act_frames_from_sha_frames(INITIAL_NR_GRANT_FRAMES); i++ )
> -        free_xenheap_page(t->active[i]);
> -    xfree(t->active);
> - no_mem_1:
> -    xfree(t);
> - no_mem_0:
> -    return -ENOMEM;
> +    if ( d->domain_id == 0 )
> +        return grant_table_init(t);
> +
> +    return 0;
>  }
>  
>  void
> @@ -3651,8 +3641,9 @@ int grant_table_set_limits(struct domain *d, unsigned int grant_frames,
>  
>      grant_write_lock(gt);
>  
> -    ret = 0;
> -    /* Set limits, alloc needed arrays. */
> +    /* Set limits. */
> +    if ( !gt->active )
> +        ret = grant_table_init(gt);
>  
>      grant_write_unlock(gt);

These changes don't leave the domains in a state similar to that
before the change - I'm missing calls to gnttab_grow_table() to
establish the minimal sizes. Aiui so far there has been no
requirement for a domain to invoke GNTTABOP_setup_table if it
is happy with v1 and the minimum size.

Jan


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

  reply	other threads:[~2017-09-20  9:22 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-20  6:34 [PATCH v8 00/15] xen: better grant v2 support Juergen Gross
2017-09-20  6:34 ` [PATCH v8 01/15] xen: move XENMAPSPACE_grant_table code into grant_table.c Juergen Gross
2017-09-20 12:40   ` Julien Grall
2017-09-20  6:34 ` [PATCH v8 02/15] xen: clean up grant_table.h Juergen Gross
2017-09-20  6:34 ` [PATCH v8 03/15] xen: add new domctl hypercall to set grant table resource limits Juergen Gross
2017-09-20  8:26   ` Paul Durrant
2017-09-20  8:49     ` Jan Beulich
2017-09-20  6:34 ` [PATCH v8 04/15] xen: add function for obtaining highest possible memory address Juergen Gross
2017-09-20  8:57   ` Jan Beulich
     [not found]   ` <59C2499A020000780017D412@suse.com>
2017-09-20  8:58     ` Juergen Gross
2017-09-20  9:32       ` Jan Beulich
     [not found]       ` <59C251C8020000780017D4D7@suse.com>
2017-09-20  9:39         ` Juergen Gross
2017-09-20 12:51   ` Julien Grall
2017-09-20 13:08     ` Juergen Gross
2017-09-20 14:24       ` Julien Grall
2017-09-20 14:33         ` Juergen Gross
2017-09-20 17:15           ` Julien Grall
2017-09-21  4:18             ` Juergen Gross
2017-09-20  6:34 ` [PATCH v8 05/15] xen: add max possible mfn to struct xen_sysctl_physinfo Juergen Gross
2017-09-20  8:58   ` Jan Beulich
     [not found]   ` <59C249F3020000780017D415@suse.com>
2017-09-20  9:00     ` Juergen Gross
2017-09-20 12:53   ` Julien Grall
2017-09-20 13:06     ` Juergen Gross
2017-09-20  6:34 ` [PATCH v8 06/15] libxc: add libxc support for setting grant table resource limits Juergen Gross
2017-09-20  6:34 ` [PATCH v8 07/15] tools: set grant limits for xenstore stubdom Juergen Gross
2017-09-20  6:34 ` [PATCH v8 08/15] libxl: add max possible mfn to libxl_physinfo Juergen Gross
2017-09-20  6:34 ` [PATCH v8 09/15] xl: add global grant limit config items Juergen Gross
2017-09-20  6:34 ` [PATCH v8 10/15] libxl: add libxl support for setting grant table resource limits Juergen Gross
2017-09-20  6:34 ` [PATCH v8 11/15] xen: delay allocation of grant table sub structures Juergen Gross
2017-09-20  9:22   ` Jan Beulich [this message]
     [not found]   ` <59C24F80020000780017D473@suse.com>
2017-09-20  9:44     ` Juergen Gross
2017-09-20 10:02       ` Jan Beulich
     [not found]       ` <59C258D4020000780017D521@suse.com>
2017-09-20 10:05         ` Juergen Gross
2017-09-20  6:34 ` [PATCH v8 12/15] xen/arm: move arch specific grant table bits into grant_table.c Juergen Gross
2017-09-20  9:25   ` Jan Beulich
2017-09-20 14:34   ` Julien Grall
2017-09-21  4:36     ` Juergen Gross
2017-09-20  6:34 ` [PATCH v8 13/15] xen: make grant resource limits per domain Juergen Gross
2017-09-20 10:34   ` Jan Beulich
2017-09-20 14:37     ` Julien Grall
     [not found]   ` <59C2603C020000780017D561@suse.com>
2017-09-20 11:10     ` Juergen Gross
2017-09-20 11:48       ` Jan Beulich
     [not found]       ` <59C271B9020000780017D620@suse.com>
2017-09-20 12:44         ` Juergen Gross
2017-09-20 15:35           ` Jan Beulich
     [not found]           ` <59C2A6DE020000780017D874@suse.com>
2017-09-21  4:35             ` Juergen Gross
2017-09-21  6:15               ` Jan Beulich
     [not found]               ` <59C3751D020000780017DCB6@suse.com>
2017-09-21  7:53                 ` Juergen Gross
2017-09-21 11:31                   ` Jan Beulich
     [not found]                   ` <59C3BF28020000780017DE68@suse.com>
2017-09-21 11:39                     ` Juergen Gross
2017-09-21 11:48                       ` Jan Beulich
     [not found]                       ` <59C3C33E020000780017DEC3@suse.com>
2017-09-21 11:51                         ` Juergen Gross
2017-09-22  6:19                         ` Juergen Gross
2017-09-22  7:53                           ` Jan Beulich
     [not found]                           ` <59C4DD9B020000780017E575@suse.com>
2017-09-22  8:27                             ` Juergen Gross
2017-09-22  8:35                               ` Jan Beulich
     [not found]                               ` <59C4E78B020000780017E67D@suse.com>
2017-09-22  8:44                                 ` Juergen Gross
2017-09-22  8:51                                   ` Jan Beulich
2017-09-20  6:34 ` [PATCH v8 14/15] xen: make grant table limits boot parameters dom0 only Juergen Gross
2017-09-20 12:07   ` Jan Beulich
     [not found]   ` <59C27619020000780017D66F@suse.com>
2017-09-20 12:48     ` Juergen Gross
2017-09-20 15:36       ` Jan Beulich
     [not found]       ` <59C2A72D020000780017D881@suse.com>
2017-09-21  4:27         ` Juergen Gross
2017-09-21  6:16           ` Jan Beulich
2017-09-20  6:34 ` [PATCH v8 15/15] xen: add new Xen cpuid node for max address width info Juergen Gross
2017-09-20 12:18   ` Jan Beulich
     [not found]   ` <59C278A3020000780017D689@suse.com>
2017-09-20 12:58     ` Juergen Gross
2017-09-20 15:42       ` Jan Beulich
     [not found]       ` <59C2A880020000780017D8A2@suse.com>
2017-09-21  4:21         ` Juergen Gross
2017-09-20 13:00   ` Julien Grall

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=59C24F80020000780017D473@prv-mh.provo.novell.com \
    --to=jbeulich@suse.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=dgdegra@tycho.nsa.gov \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jgross@suse.com \
    --cc=julien.grall@arm.com \
    --cc=sstabellini@kernel.org \
    --cc=tim@xen.org \
    --cc=wei.liu2@citrix.com \
    --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.