[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 3/5] x86: split PV dom0 builder to pv/dom0_builder.c



On 20/03/17 14:14, Wei Liu wrote:
> Long term we want to be able to disentangle PV and HVM code. Move the PV
> domain builder to a dedicated file.
>
> This in turn requires exposing a few functions and variables via a new
> header dom0_build.h. These functions and variables are now prefixed with
> "dom0_" if they weren't already so.
>
> No functional change.
>
> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>

A few minor style fixes...

> <big snip>
> +    /* compatibility check */
> +    compatible = 0;
> +    compat32   = 0;
> +    machine = elf_uval(&elf, elf.ehdr, e_machine);
> +    printk(" Xen  kernel: 64-bit, lsb, compat32\n");
> +    if (elf_32bit(&elf) && parms.pae == XEN_PAE_BIMODAL)

Here.

> +        parms.pae = XEN_PAE_EXTCR3;
> +    if (elf_32bit(&elf) && parms.pae && machine == EM_386)

Here

> +    {
> +        compat32 = 1;
> +        compatible = 1;
> +    }
> +    if (elf_64bit(&elf) && machine == EM_X86_64)

Here.

> <snip>
> +
> +    l4tab += l4_table_offset(v_start);
> +    pfn = alloc_spfn;
> +    for ( count = 0; count < ((v_end-v_start)>>PAGE_SHIFT); count++ )

Here.

> <snip>
> +#ifndef NDEBUG
> +#define REVERSE_START ((v_end - v_start) >> PAGE_SHIFT)
> +        if ( pfn > REVERSE_START && (vinitrd_start || pfn < initrd_pfn) )
> +            mfn = alloc_epfn - (pfn - REVERSE_START);
> +#endif
> +        dom0_update_physmap(d, pfn, mfn, vphysmap_start);
> +        if (!(pfn & 0xfffff))

Here.

> +            process_pending_softirqs();
> +    }
> +    si->first_p2m_pfn = pfn;
> +    si->nr_p2m_frames = d->tot_pages - count;
> +    page_list_for_each ( page, &d->page_list )
> +    {
> +        mfn = page_to_mfn(page);
> +        BUG_ON(SHARED_M2P(get_gpfn_from_mfn(mfn)));
> +        if ( get_gpfn_from_mfn(mfn) >= count )
> +        {
> +            BUG_ON(is_pv_32bit_domain(d));
> +            if ( !paging_mode_translate(d) && !page->u.inuse.type_info &&
> +                 !get_page_and_type(page, d, PGT_writable_page) )
> +                BUG();
> +
> +            dom0_update_physmap(d, pfn, mfn, vphysmap_start);
> +            ++pfn;
> +            if (!(pfn & 0xfffff))

Here.

> +                process_pending_softirqs();
> +        }
> +    }
> +    BUG_ON(pfn != d->tot_pages);
> +#ifndef NDEBUG
> +    alloc_epfn += PFN_UP(initrd_len) + si->nr_p2m_frames;
> +#endif
> +    while ( pfn < nr_pages )
> +    {
> +        if ( (page = alloc_chunk(d, nr_pages - d->tot_pages)) == NULL )
> +            panic("Not enough RAM for DOM0 reservation");
> +        while ( pfn < d->tot_pages )
> +        {
> +            mfn = page_to_mfn(page);
> +#ifndef NDEBUG
> +#define pfn (nr_pages - 1 - (pfn - (alloc_epfn - alloc_spfn)))
> +#endif
> +            dom0_update_physmap(d, pfn, mfn, vphysmap_start);
> +#undef pfn
> +            page++; pfn++;
> +            if (!(pfn & 0xfffff))

And here.

With these fixed, Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.