Message ID | 1398424967-9306-2-git-send-email-ian.campbell@citrix.com |
---|---|
State | New |
Headers | show |
Hi Ian, On 25/04/14 12:22, Ian Campbell wrote: > Due to the layout of the guest physical address space we cannot support more > than 768M of RAM before overrunning the area set aside for the grant table. Due > to the presence of the magic pages at the end of the RAM region guests are > actually limited to 767M. > > Catch this case during domain build and fail gracefully instead of obscurely > later on. > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > --- > This is the only patch in this series which I consider to be suitable for > backporting to Xen 4.4 I agree with you. Without this the guest can crash with weird error. For this patch: Acked-by: Julien Grall <julien.grall@linaro.org>
On Fri, 2014-04-25 at 12:50 +0100, Julien Grall wrote: > Hi Ian, > > On 25/04/14 12:22, Ian Campbell wrote: > > Due to the layout of the guest physical address space we cannot support more > > than 768M of RAM before overrunning the area set aside for the grant table. Due > > to the presence of the magic pages at the end of the RAM region guests are > > actually limited to 767M. > > > > Catch this case during domain build and fail gracefully instead of obscurely > > later on. > > > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > > --- > > This is the only patch in this series which I consider to be suitable for > > backporting to Xen 4.4 > > I agree with you. Without this the guest can crash with weird error. I've found that it just hangs silently, which is even more frustrating. > > For this patch: > > Acked-by: Julien Grall <julien.grall@linaro.org> Thanks.
On 25/04/14 12:51, Ian Campbell wrote: > On Fri, 2014-04-25 at 12:50 +0100, Julien Grall wrote: >> Hi Ian, >> >> On 25/04/14 12:22, Ian Campbell wrote: >>> Due to the layout of the guest physical address space we cannot support more >>> than 768M of RAM before overrunning the area set aside for the grant table. Due >>> to the presence of the magic pages at the end of the RAM region guests are >>> actually limited to 767M. >>> >>> Catch this case during domain build and fail gracefully instead of obscurely >>> later on. >>> >>> Signed-off-by: Ian Campbell <ian.campbell@citrix.com> >>> --- >>> This is the only patch in this series which I consider to be suitable for >>> backporting to Xen 4.4 >> >> I agree with you. Without this the guest can crash with weird error. > > I've found that it just hangs silently, which is even more frustrating. When I try to create a domain with 800M of RAM I get some error from libxl: libxl: notice: libxl_numa.c:494:libxl__get_numa_candidate: NUMA placement failed, performance might be affected libxl: error: libxl_device.c:934:device_backend_callback: unable to add device with path /local/domain/0/backend/vbd/5/51712 libxl: error: libxl_create.c:1062:domcreate_launch_dm: unable to add disk devices libxl: error: libxl_device.c:934:device_backend_callback: unable to remove device with path /local/domain/0/backend/vbd/5/51712 libxl: error: libxl.c:1470:devices_destroy_cb: libxl__devices_destroy failed for 5
On Fri, 2014-04-25 at 13:01 +0100, Julien Grall wrote: > > On 25/04/14 12:51, Ian Campbell wrote: > > On Fri, 2014-04-25 at 12:50 +0100, Julien Grall wrote: > >> Hi Ian, > >> > >> On 25/04/14 12:22, Ian Campbell wrote: > >>> Due to the layout of the guest physical address space we cannot support more > >>> than 768M of RAM before overrunning the area set aside for the grant table. Due > >>> to the presence of the magic pages at the end of the RAM region guests are > >>> actually limited to 767M. > >>> > >>> Catch this case during domain build and fail gracefully instead of obscurely > >>> later on. > >>> > >>> Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > >>> --- > >>> This is the only patch in this series which I consider to be suitable for > >>> backporting to Xen 4.4 > >> > >> I agree with you. Without this the guest can crash with weird error. > > > > I've found that it just hangs silently, which is even more frustrating. > > When I try to create a domain with 800M of RAM I get some error from libxl: With 768M I get a hang. > libxl: notice: libxl_numa.c:494:libxl__get_numa_candidate: NUMA placement failed, performance might be affected > libxl: error: libxl_device.c:934:device_backend_callback: unable to add device with path /local/domain/0/backend/vbd/5/51712 > libxl: error: libxl_create.c:1062:domcreate_launch_dm: unable to add disk devices > libxl: error: libxl_device.c:934:device_backend_callback: unable to remove device with path /local/domain/0/backend/vbd/5/51712 > libxl: error: libxl.c:1470:devices_destroy_cb: libxl__devices_destroy failed for 5 > >
diff --git a/tools/libxc/xc_dom_arm.c b/tools/libxc/xc_dom_arm.c index 60ac51a..46dfc36 100644 --- a/tools/libxc/xc_dom_arm.c +++ b/tools/libxc/xc_dom_arm.c @@ -272,6 +272,15 @@ int arch_setup_meminit(struct xc_dom_image *dom) return -1; } + if ( ramsize > GUEST_RAM_SIZE - NR_MAGIC_PAGES*XC_PAGE_SIZE ) + { + DOMPRINTF("%s: ram size is too large for guest address space: " + "%"PRIx64" > %"PRIx64, + __FUNCTION__, ramsize, + GUEST_RAM_SIZE - NR_MAGIC_PAGES*XC_PAGE_SIZE); + return -1; + } + rc = set_mode(dom->xch, dom->guest_domid, dom->guest_type); if ( rc ) return rc; diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h index 7496556..dd53c94 100644 --- a/xen/include/public/arch-arm.h +++ b/xen/include/public/arch-arm.h @@ -369,7 +369,8 @@ typedef uint64_t xen_callback_t; #define GUEST_GICC_BASE 0x2c002000ULL #define GUEST_GICC_SIZE 0x100ULL -#define GUEST_RAM_BASE 0x80000000ULL +#define GUEST_RAM_BASE 0x80000000ULL /* 768M @ 2GB */ +#define GUEST_RAM_SIZE 0x30000000ULL #define GUEST_GNTTAB_BASE 0xb0000000ULL #define GUEST_GNTTAB_SIZE 0x00020000ULL
Due to the layout of the guest physical address space we cannot support more than 768M of RAM before overrunning the area set aside for the grant table. Due to the presence of the magic pages at the end of the RAM region guests are actually limited to 767M. Catch this case during domain build and fail gracefully instead of obscurely later on. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> --- This is the only patch in this series which I consider to be suitable for backporting to Xen 4.4 v2: - Use GUEST_RAM_SIZE instead of GUEST_RAM_END - Refactor the ramlimit into one place. --- tools/libxc/xc_dom_arm.c | 9 +++++++++ xen/include/public/arch-arm.h | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-)