prep_segment() can sometimes fail because an image requests memory
that is already in use by gPXE. This will happen if
e.g. undionly.kpxe is used to boot memtest86; the memtest86 image is
an old-format kernel that needs to be loaded at 9000:0000, but this
area of memory may well already be in use by the underlying PXE stack.
Add a human-friendly error message, so that the cause is more
immediately visible.
{ ENOSPC, "No space left on device" },
{ ENOTSUP, "Not supported" },
{ EPERM, "Operation not permitted" },
+ { ERANGE, "Out of range" },
{ ETIMEDOUT, "Connection timed out" },
};
#include <errno.h>
#include <gpxe/uaccess.h>
#include <gpxe/memmap.h>
+#include <gpxe/errortab.h>
#include <gpxe/segment.h>
/**
start, mid, end );
return -ERANGE;
}
+
+/**
+ * Segment-specific error messages
+ *
+ * This error happens sufficiently often to merit a user-friendly
+ * description.
+ */
+struct errortab segment_errors[] __errortab = {
+ { ERANGE, "Requested memory not available" },
+};