[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 03/18] x86: adopt new boot info structures
On 7/19/22 09:19, Jan Beulich wrote: > On 06.07.2022 23:04, Daniel P. Smith wrote: >> This commit replaces the use of the multiboot v1 structures starting >> at __start_xen(). The majority of this commit is converting the fields >> being accessed for the startup calculations. While adapting the ucode >> boot module location logic, this code was refactored to reduce some >> of the unnecessary complexity. > > Things like this or ... > >> --- a/xen/arch/x86/bzimage.c >> +++ b/xen/arch/x86/bzimage.c >> @@ -69,10 +69,8 @@ static __init int bzimage_check(struct setup_header *hdr, >> unsigned long len) >> return 1; >> } >> >> -static unsigned long __initdata orig_image_len; >> - >> -unsigned long __init bzimage_headroom(void *image_start, >> - unsigned long image_length) >> +unsigned long __init bzimage_headroom( >> + void *image_start, unsigned long image_length) >> { >> struct setup_header *hdr = (struct setup_header *)image_start; >> int err; >> @@ -91,7 +89,6 @@ unsigned long __init bzimage_headroom(void *image_start, >> if ( elf_is_elfbinary(image_start, image_length) ) >> return 0; >> >> - orig_image_len = image_length; >> headroom = output_length(image_start, image_length); >> if (gzip_check(image_start, image_length)) >> { >> @@ -104,12 +101,15 @@ unsigned long __init bzimage_headroom(void >> *image_start, >> return headroom; >> } >> >> -int __init bzimage_parse(void *image_base, void **image_start, >> - unsigned long *image_len) >> +int __init bzimage_parse( >> + void *image_base, void **image_start, unsigned int headroom, >> + unsigned long *image_len) >> { >> struct setup_header *hdr = (struct setup_header *)(*image_start); >> int err = bzimage_check(hdr, *image_len); >> - unsigned long output_len; >> + unsigned long output_len, orig_image_len; >> + >> + orig_image_len = *image_len - headroom; >> >> if ( err < 0 ) >> return err; >> @@ -125,7 +125,7 @@ int __init bzimage_parse(void *image_base, void >> **image_start, >> >> BUG_ON(!(image_base < *image_start)); >> >> - output_len = output_length(*image_start, orig_image_len); >> + output_len = output_length(*image_start, *image_len); >> >> if ( (err = perform_gunzip(image_base, *image_start, orig_image_len)) > >> 0 ) >> err = decompress(*image_start, orig_image_len, image_base); > > ... whatever the deal is here want factoring out. Also you want to avoid > making formatting changes (like in the function headers here) in an > already large patch, when you don't otherwise touch the functions. I'm > not even convinced the formatting changes are desirable here, so I'd > like to ask that even on code you do touch for other reasons you do so > only if the existing layout ends up really awkward. Ack. As I mentioned, I tried dropping these based on past reviews. I will do another pass to try to catch just formatting and drop them. > I have not looked in any further detail at this patch, sorry. Together > with my comment on the earlier patch I conclude that it might be best > if you moved things to the new representation field by field (or set of > related fields), introducing the new fields in the abstraction struct > as they are being made use of. I am not sure whether it is possible to do this field by field. This is why I was asking on IRC on about dealing with this kind of situation. As soon as multiboot_info_t/module_t are replaced with struct boot_info{}/struct boot_module{} a wholesale replacement must be done. v/r, dps
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |