[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC v1 05/13] libxc: introduce a domain loader for HVM guest firmware
. snip.. > +static elf_negerrnoval check_elf_kernel(struct xc_dom_image *dom, bool > verbose) why don't we want the verbose to be always true? > +{ > + if ( dom->kernel_blob == NULL ) > + { > + if ( verbose ) > + xc_dom_panic(dom->xch, > + XC_INTERNAL_ERROR, "%s: no kernel image loaded", > + __FUNCTION__); > + return -EINVAL; > + } > + > + if ( !elf_is_elfbinary(dom->kernel_blob, dom->kernel_size) ) > + { > + if ( verbose ) > + xc_dom_panic(dom->xch, > + XC_INVALID_KERNEL, "%s: kernel is not an ELF image", > + __FUNCTION__); > + return -EINVAL; > + } > + return 0; > +} > + > +static elf_negerrnoval xc_dom_probe_hvm_kernel(struct xc_dom_image *dom) > +{ > + struct elf_binary elf; > + int rc; > + > + /* This loader is designed for HVM guest firmware. */ > + if ( dom->container_type != XC_DOM_HVM_CONTAINER ) > + return -EINVAL; > + > + rc = check_elf_kernel(dom, 0); > + if ( rc != 0 ) > + return rc; > + > + rc = elf_init(&elf, dom->kernel_blob, dom->kernel_size); > + if ( rc != 0 ) > + return rc; > + > + /* > + * We need to check that there are no Xen ELFNOTES, or > + * else we might be trying to load a PV kernel. > + */ > + elf_parse_binary(&elf); > + rc = elf_xen_parse(&elf, &dom->parms); > + if ( rc == 0 ) > + return -EINVAL; > + > + return 0; > +} > + > +static elf_errorstatus xc_dom_parse_hvm_kernel(struct xc_dom_image *dom) > + /* > + * This function sometimes returns -1 for error and sometimes > + * an errno value. ?!?! The definition for this error type says: include/xen/libelf.h:typedef int elf_negerrnoval; /* 0: ok; -EFOO: error */ so it should be -EXX thought that is at odd with the libxc API - which is -1 for errors and errno carries the bug. But that would require xc_dom_parse return value to be 'int', not elf_errorstatus. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |