[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-xen-4.5 v3 04/16] x86: Introduce MultiBoot Data (MBD) type
>>> On 08.10.14 at 19:52, <daniel.kiper@xxxxxxxxxx> wrote: > +static mbd_t __used *__reloc(void *mbi) > +{ > + mbd_t *mbd; > > - /* Mask features we don't understand or don't relocate. */ > - mbi->flags &= (MBI_MEMLIMITS | > - MBI_BOOTDEV | > - MBI_CMDLINE | > - MBI_MODULES | > - MBI_MEMMAP | > - MBI_LOADERNAME); > + mbd = (mbd_t *)alloc_struct(sizeof(mbd_t)); > + zero_struct((u32)mbd, sizeof(mbd_t)); Here and elsewhere - please prefer sizeof(<expression>) over sizeof(<type>) where possible. Also I continue to be questioning the myriad of casts you're adding - why can't you use void *, following what the old code did? > +static multiboot_info_t __read_mostly mbi; Is this really used post-init? > +unsigned long __init __init_mbi(u32 mbd_pa) > +{ > + mbd_t *mbd = __va(mbd_pa); > + > + enable_exception_support(); > + > + if ( mbd->boot_loader_name ) { > + mbi.flags = MBI_LOADERNAME; > + mbi.boot_loader_name = mbd->boot_loader_name; > + } > + > + if ( mbd->cmdline ) { > + mbi.flags |= MBI_CMDLINE; > + mbi.cmdline = mbd->cmdline; > + } > + > + mbi.flags |= MBI_MEMLIMITS; > + mbi.mem_lower = mbd->mem_lower; > + mbi.mem_upper = mbd->mem_upper; > + > + mbi.flags |= MBI_MEMMAP; > + mbi.mmap_length = mbd->mmap_size; > + mbi.mmap_addr = mbd->mmap; > + > + mbi.flags |= MBI_MODULES; > + mbi.mods_count = mbd->mods_nr; > + mbi.mods_addr = mbd->mods; > + > + return __pa(&mbi); > +} You shouldn't be blindly setting these flags - the incoming structure has them, but you discard them in reloc.c instead of propagating them here. > @@ -546,21 +565,13 @@ void __init noreturn __start_xen(unsigned long mbi_p) > .stop_bits = 1 > }; > > - /* Critical region without IDT or TSS. Any fault is deadly! */ > - > - set_processor_id(0); > - set_current((struct vcpu *)0xfffff000); /* debug sanity. */ > - idle_vcpu[0] = current; > - > - percpu_init_areas(); > - > - init_idt_traps(); > - load_system_tables(); > - > - smp_prepare_boot_cpu(); > - sort_exception_tables(); > - > - /* Full exception support from here on in. */ > + if ( efi_enabled ) { > + enable_exception_support(); > + } > + else > + { > + /* Exception support was enabled before __start_xen() call. */ > + } Apart from the coding style issue (not just here) - what's the reason this can't also be done in the EFI case? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |