Hi Stefano,
On 07/07/18 00:11, Stefano Stabellini wrote:
... and remove the BUG_ON(!dom0_11_mapping) in allocate_memory.
Please rebase your work on staging. This code has changed a bit since
Xen 4.11-rc6.
A follow-up patch will make the function work with non 1:1 mapped
guests.
No functional changes.
Signed-off-by: Stefano Stabellini <stefa...@xilinx.com>
---
Changes in v2:
- new patch
---
xen/arch/arm/domain_build.c | 22 ++++++++--------------
1 file changed, 8 insertions(+), 14 deletions(-)
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 11cdf05..182e3d5 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -79,7 +79,7 @@ struct vcpu *__init alloc_dom0_vcpu0(struct domain *dom0)
return alloc_vcpu(dom0, 0, 0);
}
-static unsigned int get_11_allocation_size(paddr_t size)
+static unsigned int get_allocation_size(paddr_t size)
{
/*
* get_order_from_bytes returns the order greater than or equal to
@@ -251,21 +251,15 @@ static void allocate_memory(struct domain *d, struct
kernel_info *kinfo)
get_order_from_bytes(min_t(paddr_t, dom0_mem, MB(128)));
const unsigned int min_order = get_order_from_bytes(MB(4));
struct page_info *pg;
- unsigned int order = get_11_allocation_size(kinfo->unassigned_mem);
+ unsigned int order = get_allocation_size(kinfo->unassigned_mem);
int i;
bool lowmem = true;
unsigned int bits;
- /*
- * TODO: Implement memory bank allocation when DOM0 is not direct
- * mapped
- */
- BUG_ON(!dom0_11_mapping);
New code is using is_domain_direct_mapped(d).
-
- printk("Allocating 1:1 mappings totalling %ldMB for dom0:\n",
+ printk("Allocating 1:1 mappings totalling %ldMB for dom%d:\n",
This is not mention i nthe command message.
At the same time, please fix the typo s/totalling/totaling/
/* Don't want format this as PRIpaddr (16 digit hex) */
- (unsigned long)(kinfo->unassigned_mem >> 20));
+ (unsigned long)(kinfo->unassigned_mem >> 20), d->domain_id);
kinfo->mem.nr_banks = 0;
@@ -303,7 +297,7 @@ static void allocate_memory(struct domain *d, struct kernel_info *kinfo)
* If we failed to allocate bank0 under 4GB, continue allocating
* memory from above 4GB and fill in banks.
*/
- order = get_11_allocation_size(kinfo->unassigned_mem);
+ order = get_allocation_size(kinfo->unassigned_mem);
while ( kinfo->unassigned_mem && kinfo->mem.nr_banks < NR_MEM_BANKS )
{
pg = alloc_domheap_pages(d, order, lowmem ? MEMF_bits(32) : 0);
@@ -314,7 +308,7 @@ static void allocate_memory(struct domain *d, struct
kernel_info *kinfo)
if ( lowmem && order < min_low_order)
{
D11PRINT("Failed at min_low_order, allow high allocations\n");
- order = get_11_allocation_size(kinfo->unassigned_mem);
+ order = get_allocation_size(kinfo->unassigned_mem);
lowmem = false;
continue;
}
@@ -334,7 +328,7 @@ static void allocate_memory(struct domain *d, struct
kernel_info *kinfo)
if ( lowmem )
{
D11PRINT("Allocation below bank 0, allow high allocations\n");
- order = get_11_allocation_size(kinfo->unassigned_mem);
+ order = get_allocation_size(kinfo->unassigned_mem);
lowmem = false;
continue;
}
@@ -349,7 +343,7 @@ static void allocate_memory(struct domain *d, struct
kernel_info *kinfo)
* Success, next time around try again to get the largest order
* allocation possible.
*/
- order = get_11_allocation_size(kinfo->unassigned_mem);
+ order = get_allocation_size(kinfo->unassigned_mem);
}
if ( kinfo->unassigned_mem )
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel