18 Jul, 2007

3 commits

  • Implement a Xen back-end for hvc console.

    * * *
    Add early printk support via hvc console, enable using
    "earlyprintk=xen" on the kernel command line.

    From: Gerd Hoffmann
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Chris Wright
    Acked-by: Ingo Molnar
    Acked-by: Olof Johansson

    Jeremy Fitzhardinge
     
  • This is a fairly straightforward Xen implementation of smp_ops.

    Xen has its own IPI mechanisms, and has no dependency on any
    APIC-based IPI. The smp_ops hooks and the flush_tlb_others pv_op
    allow a Xen guest to avoid all APIC code in arch/i386 (the only apic
    operation is a single apic_read for the apic version number).

    One subtle point which needs to be addressed is unpinning pagetables
    when another cpu may have a lazy tlb reference to the pagetable. Xen
    will not allow an in-use pagetable to be unpinned, so we must find any
    other cpus with a reference to the pagetable and get them to shoot
    down their references.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Chris Wright
    Cc: Benjamin LaHaise
    Cc: Ingo Molnar
    Cc: Andi Kleen

    Jeremy Fitzhardinge
     
  • Xen implements interrupts in terms of event channels. Each guest
    domain gets 1024 event channels which can be used for a variety of
    purposes, such as Xen timer events, inter-domain events,
    inter-processor events (IPI) or for real hardware IRQs.

    Within the kernel, we map the event channels to IRQs, and implement
    the whole interrupt handling using a Xen irq_chip.

    Rather than setting NR_IRQ to 1024 under PARAVIRT in order to
    accomodate Xen, we create a dynamic mapping between event channels and
    IRQs. Ideally, Linux will eventually move towards dynamically
    allocating per-irq structures, and we can use a 1:1 mapping between
    event channels and irqs.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Chris Wright
    Cc: Ingo Molnar
    Cc: Eric W. Biederman

    Jeremy Fitzhardinge