Mailing List Archive

[Xen-merge] Re: Integration into mainline kernel
Here is my first take at what to do with the i386 header files. If hg
supports any notion of moving (I'm not aware of any), not all of the
suggested actions can be carried out solely by submitting patches. Also,
some cleanup on the merge tree (use of CONFIG_ARCH_XEN, CONFIG_XEN) may
be desirable first (so that it becomes consistent). Thus I still need to
know in what way carrying out the (acceptable to you part of the)
suggested changes is supposed to happen:

include/asm-xen/xen-public -> include/xen/public (or include/xen)

include/asm-xen/*.h -> include/xen/

include/asm-xen/linux-public -> include/linux/xen

include/asm-i386/mach-xen/asm/agp.h
- merge into include/asm-i386/agp.h

include/asm-i386/mach-xen/asm/bug.h
- merge into include/asm-i386/bug.h

include/asm-i386/mach-xen/asm/desc.h
- use cpu_gdt_table like mainline (plus page alignment; is having
multiple CPUs' GDTs in a single page acceptable to the hypervisor?)
- use xen_set_ldt as expansion of set_ldt_desc
- merge into include/asm-i386/desc.h
- conditionalize dangerous constructs (load_LDT_desc etc.)

include/asm-i386/mach-xen/asm/dma-mapping.h
- include/asm-i386/mach-xen/asm/dma-mapping.h ->
include/asm-x86_64/mach-xen/asm/ (copy, minor cleanup to remove
32-bit conditional)
- include/asm-i386/dma-mapping.h ->
include/asm-i386/mach-default/mach_dma.h
- include/asm-i386/mach-xen/asm/dma-mapping.h ->
include/asm-i386/mach-xen/mach_dma.h (minor cleanup to remove 64-bit
conditional)
- just reference include/asm-i386/mach-*/mach_dma.h from
include/asm-i386/dma-mapping.h
- create include/asm-i386/mach-xen/mach_dma.h

include/asm-i386/mach-xen/asm/fixmap.h
- merge into include/asm-i386/fixmap.h (Can any of the fixmaps
actually
live at machine addresses beyond 4G? If not, use standard
__set_fixmap. If yes [grant tables, shared info?], define maddr_t
generally.)
- Can't FIX_ACPI_RSDP_PAGE be replaced by use of FIX_ISAMAP + n?

include/asm-i386/mach-xen/asm/floppy.h
- reduce delta to original file
- merge into include/asm-i386/floppy.h unless delta still too large,
in which case use include/asm-i386/mach-*/mach_floppy.h approach

include/asm-i386/mach-xen/asm/highmem.h
- merge into include/asm-i386/highmem.h
- map generic kmap_atomic_pte to kmap_atomic

include/asm-i386/mach-xen/asm/hw_irq.h
- merge into include/asm-i386/hw_irq.h

include/asm-i386/mach-xen/asm/hyper*.h -> include/asm-i386/hyper*.h
- perhaps conditionalize whole contents upon CONFIG_XEN/CONFIG_X86_XEN

include/asm-i386/mach-xen/asm/io.h
- whether merging is appropriate needs to be discussed; an alternative
would be to break out the *_to_* translations (into a new
include/asm-i386/mach-*/mach_xlat.h)
- What is __UNSAFE_IO__?

include/asm-i386/mach-xen/asm/kmap_types.h
- merge into include/asm-i386/kmap_types.h, possibly even without
conditionals

include/asm-i386/mach-xen/asm/mmu.h
- merge into include/asm-i386/mmu.h

include/asm-i386/mach-xen/asm/mmu_context.h
- separate out switch_mm and lazy-TLB changes into
include/asm-i386/mach-*/mach_mmu.h
- merge into include/asm-i386/mmu_context.h

include/asm-i386/mach-xen/asm/page.h
- move mach <-> phys and mach <-> virt conversions as well as the
MAXMEM and the LOAD_OFFSET override (which really should go away) to
include/asm-i386/mach-xen/mach_xlat.h
- move arch_free_page, scrub_pages, alloc_zeroed_user_highpage,
pte/pmd/pgd handling, and MAXMEM to
include/asm-i386/mach-xen/mach_page.h
- split out alloc_zeroed_user_highpage and pte/pmd/pgd handling from
include/asm-i386/page.h to include/asm-i386/mach-default/mach_page.h

include/asm-i386/mach-xen/asm/param.h
- delete

include/asm-i386/mach-xen/asm/pci.h
- merge into include/asm-i386/pci.h

include/asm-i386/mach-xen/asm/pgalloc.h
- merge into include/asm-i386/pgalloc.h unless conditionals are
unacceptable

include/asm-i386/mach-xen/asm/pgtable.h
- generally use kmap_atomic_pte for pte_offset_map*
- split out ptep_set_access_flags and io_remap_pfn_range to
include/asm-i386/mach-*/mach_pgtable.h
- move ptep_establish and other Xen additions to
include/asm-i386/mach-xen/mach_pgtable.h

include/asm-i386/mach-xen/asm/pgtable-2level.h
- split out (originals of) customizations to
include/asm-i386/mach-*/mach_pgtab2l.h

include/asm-i386/mach-xen/asm/pgtable-3level.h
- BUG()/panic() in pfn_pmd() needs attention from whoever put it there
- split out (originals of) customizations to
include/asm-i386/mach-*/mach_pgtab3l.h

include/asm-i386/mach-xen/asm/pgtable-?level-defs.h
- merge into include/asm-i386/pgtable-?level-defs.h
- possibly replace HAVE_SHARED_KERNEL_PMD by CONFIG_XEN/CONFIG_X86_XEN

include/asm-i386/mach-xen/asm/processor.h
- break out set_in_cr4, get_debugreg, set_debugreg, and set_iopl_mask
to include/asm-i386/mach-*/mach_processor.h
- move cur_pgd to include/asm-i386/mach-xen/mach_processor.h
- define do_stack_switch in include/asm-i386/mach-*/mach_processor.h
and use it in load_esp0

include/asm-i386/mach-xen/asm/ptrace.h
- merge into include/asm-i386/mach-xen/asm/ptrace.h, perhaps defining
USER_MODE_MASK (probably in include/asm-i386/mach-*/mach_mode.h)
to use for the user_mode* macros and maybe elsewhere (assembly?).

include/asm-i386/mach-xen/asm/scatterlist.h
- merge into include/asm-i386/scatterlist.h

include/asm-i386/mach-xen/asm/segment.h
- define KERNEL_RPL in include/asm-i386/mach-*/mach_mode.h (see above)
and use it for __KERNEL_CS and __KERNEL_DS

include/asm-i386/mach-xen/asm/setup.h
- in the shape it currently is just merge into
include/asm-i386/setup.h
- creation of include/asm-i386/mach-*/mach_setup.h or conditionalizing
everything that's not valid in a para-virtualized kernel would
probably be better (safer) long-term
- What is the 'unsigned long long' override for PFN_PHYS good for (and
if for anything, why isn't standard Linux in need of this in PAE
mode)?

include/asm-i386/mach-xen/asm/smp.h
- merge into include/asm-i386/smp.h, perhaps also #define-ing
cpu_callout_map to cpu_possible_map

include/asm-i386/mach-xen/asm/spinlock.h
- merge into include/asm-i386/spinlock.h, perhaps simplifying the
cli/sti removal by defining extra string constants

include/asm-i386/mach-xen/asm/swiotlb.h -> include/asm-i386/swiotlb.h
- perhaps conditionalize all declarations upon CONFIG_SWIOTLB

include/asm-i386/mach-xen/asm/synch_bitops.h
- don't use ; to separate lock prefix (only / or blank are proper
syntax)
- replace "q" constraint on word/long/quad cmpxchg with "r" (mainline
change)
- include/asm-i386/mach-xen/asm/synch_bitops.h ->
include/asm-x86_64/mach-xen/asm/ (copy, minor cleanup to remove
32-bit conditional, maybe use 64-bit ops where useful)
- include/asm-i386/mach-xen/asm/synch_bitops.h ->
include/asm-i386/synch_bitops.h (minor cleanup to remove 64-bit
conditional)

include/asm-i386/mach-xen/asm/system.h
- use LOCK_PREFIX instead of LOCK (reverting [incomplete]
SMP_ALTERNATIVES changes) for consistency with mainline
- merge into include/asm-i386/system.h, conditionalizing dangerous
(illegal) constructs like control register writes (or, if that is
unacceptable, move all conflicts into
include/asm-i386/mach-*/mach_system.h)

include/asm-i386/mach-xen/asm/tlbflush.h
- move all conflicts into include/asm-i386/mach-*/mach_tlbflush.h

include/asm-i386/mach-xen/asm/vga.h
- generally use isa_bus_to_virt in include/asm-i386/vga.h
- delete

Jan

_______________________________________________
Xen-merge mailing list
Xen-merge@lists.xensource.com
http://lists.xensource.com/xen-merge