Ian Campbell
2012-Mar-15 12:01 UTC
[PATCH] arm: allocate top level p2m page for all non-idle VCPUs
Not just dom0. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> --- xen/arch/arm/domain.c | 3 +++ xen/arch/arm/domain_build.c | 3 --- xen/arch/arm/p2m.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c index 5702399..4b38790 100644 --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -201,6 +201,9 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags) clear_page(d->shared_info); share_xen_page_with_guest( virt_to_page(d->shared_info), d, XENSHARE_writable); + + if ( (rc = p2m_alloc_table(d)) != 0 ) + goto fail; } d->max_vcpus = 8; diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 15632f7..6687e50 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -93,9 +93,6 @@ int construct_dom0(struct domain *d) d->max_pages = ~0U; - if ( (rc = p2m_alloc_table(d)) != 0 ) - return rc; - printk("Populate P2M %#llx->%#llx\n", kinfo.ram_start, kinfo.ram_end); p2m_populate_ram(d, kinfo.ram_start, kinfo.ram_end); diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index 051a0e8..4f624d8 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -203,7 +203,7 @@ int p2m_alloc_table(struct domain *d) void *p; /* First level P2M is 2 consecutive pages */ - page = alloc_domheap_pages(d, 1, 0); + page = alloc_domheap_pages(NULL, 1, 0); if ( page == NULL ) return -ENOMEM; -- 1.7.2.5
Ian Campbell
2012-Mar-15 12:02 UTC
Re: [PATCH] arm: allocate top level p2m page for all non-idle VCPUs
BTW this depends on Stefano''s "arm: shared_info page allocation and mapping". I''m happy to hold on to it until then but thought I''d send for review now... On Thu, 2012-03-15 at 12:01 +0000, Ian Campbell wrote:> Not just dom0. > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > --- > xen/arch/arm/domain.c | 3 +++ > xen/arch/arm/domain_build.c | 3 --- > xen/arch/arm/p2m.c | 2 +- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > index 5702399..4b38790 100644 > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -201,6 +201,9 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags) > clear_page(d->shared_info); > share_xen_page_with_guest( > virt_to_page(d->shared_info), d, XENSHARE_writable); > + > + if ( (rc = p2m_alloc_table(d)) != 0 ) > + goto fail; > } > > d->max_vcpus = 8; > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c > index 15632f7..6687e50 100644 > --- a/xen/arch/arm/domain_build.c > +++ b/xen/arch/arm/domain_build.c > @@ -93,9 +93,6 @@ int construct_dom0(struct domain *d) > > d->max_pages = ~0U; > > - if ( (rc = p2m_alloc_table(d)) != 0 ) > - return rc; > - > printk("Populate P2M %#llx->%#llx\n", kinfo.ram_start, kinfo.ram_end); > p2m_populate_ram(d, kinfo.ram_start, kinfo.ram_end); > > diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c > index 051a0e8..4f624d8 100644 > --- a/xen/arch/arm/p2m.c > +++ b/xen/arch/arm/p2m.c > @@ -203,7 +203,7 @@ int p2m_alloc_table(struct domain *d) > void *p; > > /* First level P2M is 2 consecutive pages */ > - page = alloc_domheap_pages(d, 1, 0); > + page = alloc_domheap_pages(NULL, 1, 0); > if ( page == NULL ) > return -ENOMEM; >
Tim Deegan
2012-Mar-15 12:09 UTC
Re: [PATCH] arm: allocate top level p2m page for all non-idle VCPUs
At 12:01 +0000 on 15 Mar (1331812887), Ian Campbell wrote:> > arm: allocate top level p2m page for all non-idle VCPUsITYM non-idle domains. Otherwise, ack. Tim.> Not just dom0. > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > --- > xen/arch/arm/domain.c | 3 +++ > xen/arch/arm/domain_build.c | 3 --- > xen/arch/arm/p2m.c | 2 +- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > index 5702399..4b38790 100644 > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -201,6 +201,9 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags) > clear_page(d->shared_info); > share_xen_page_with_guest( > virt_to_page(d->shared_info), d, XENSHARE_writable); > + > + if ( (rc = p2m_alloc_table(d)) != 0 ) > + goto fail; > } > > d->max_vcpus = 8; > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c > index 15632f7..6687e50 100644 > --- a/xen/arch/arm/domain_build.c > +++ b/xen/arch/arm/domain_build.c > @@ -93,9 +93,6 @@ int construct_dom0(struct domain *d) > > d->max_pages = ~0U; > > - if ( (rc = p2m_alloc_table(d)) != 0 ) > - return rc; > - > printk("Populate P2M %#llx->%#llx\n", kinfo.ram_start, kinfo.ram_end); > p2m_populate_ram(d, kinfo.ram_start, kinfo.ram_end); > > diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c > index 051a0e8..4f624d8 100644 > --- a/xen/arch/arm/p2m.c > +++ b/xen/arch/arm/p2m.c > @@ -203,7 +203,7 @@ int p2m_alloc_table(struct domain *d) > void *p; > > /* First level P2M is 2 consecutive pages */ > - page = alloc_domheap_pages(d, 1, 0); > + page = alloc_domheap_pages(NULL, 1, 0); > if ( page == NULL ) > return -ENOMEM; > > -- > 1.7.2.5 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
Ian Campbell
2012-Mar-15 12:13 UTC
Re: [PATCH] arm: allocate top level p2m page for all non-idle VCPUs
On Thu, 2012-03-15 at 12:09 +0000, Tim Deegan wrote:> At 12:01 +0000 on 15 Mar (1331812887), Ian Campbell wrote: > > > > arm: allocate top level p2m page for all non-idle VCPUs > > ITYM non-idle domains.Oh yes.> Otherwise, ack.Thanks.> > Tim. > > > Not just dom0. > > > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > > --- > > xen/arch/arm/domain.c | 3 +++ > > xen/arch/arm/domain_build.c | 3 --- > > xen/arch/arm/p2m.c | 2 +- > > 3 files changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > > index 5702399..4b38790 100644 > > --- a/xen/arch/arm/domain.c > > +++ b/xen/arch/arm/domain.c > > @@ -201,6 +201,9 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags) > > clear_page(d->shared_info); > > share_xen_page_with_guest( > > virt_to_page(d->shared_info), d, XENSHARE_writable); > > + > > + if ( (rc = p2m_alloc_table(d)) != 0 ) > > + goto fail; > > } > > > > d->max_vcpus = 8; > > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c > > index 15632f7..6687e50 100644 > > --- a/xen/arch/arm/domain_build.c > > +++ b/xen/arch/arm/domain_build.c > > @@ -93,9 +93,6 @@ int construct_dom0(struct domain *d) > > > > d->max_pages = ~0U; > > > > - if ( (rc = p2m_alloc_table(d)) != 0 ) > > - return rc; > > - > > printk("Populate P2M %#llx->%#llx\n", kinfo.ram_start, kinfo.ram_end); > > p2m_populate_ram(d, kinfo.ram_start, kinfo.ram_end); > > > > diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c > > index 051a0e8..4f624d8 100644 > > --- a/xen/arch/arm/p2m.c > > +++ b/xen/arch/arm/p2m.c > > @@ -203,7 +203,7 @@ int p2m_alloc_table(struct domain *d) > > void *p; > > > > /* First level P2M is 2 consecutive pages */ > > - page = alloc_domheap_pages(d, 1, 0); > > + page = alloc_domheap_pages(NULL, 1, 0); > > if ( page == NULL ) > > return -ENOMEM; > > > > -- > > 1.7.2.5 > > > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xen.org > > http://lists.xen.org/xen-devel
Maybe Matching Threads
- [PATCHv2 00/11] arm: pass a device tree to dom0
- [PATCH v6 00/16] xen: arm: 64-bit guest support and domU FDT autogeneration
- [PATCH v2 00/14] xen: arm: 64-bit guest support and domU FDT autogeneration
- [PATCH 00/12] Bunch of patches for cross-compilatio + RP4
- Not enough RAM for domain 0 allocation.