Sunday, 20 May 2012

Xen: Failed while collecting E820 with: -3 (errno:0)

# xl create /etc/xen/ace2x1
Parsing config file /etc/xen/ace2x1

libxl: error: libxl_create.c:700:do_domain_create: Failed while collecting E820 with: -3 (errno:0)
: Success

I had to add some extra logging into libxl_pci.c to work this one out. It turns out it was choking in e820_sanitize on this test:

    if (!src || !map_limitkb || !balloon_kb || !nr_entries)
        return ERROR_INVAL;

As you can see, if balloon_kb is 0 (which comes from libxl_domain_config), it will fail. That's what was happening in my case.

libxl: error: libxl_pci.c:1182:e820_sanitize: ============== delta_kb: 0 start: 0 start_kb: 0 last: 0 map_limitkb: 200000 balloon_kb: 0 nr_entries: 18 

Hence, this issue can be worked around quite easily by adding a maxmem assignment to the guest config.

memory = '2047'
maxmem = '2048'