I am the one who imported the xen kernel from labs and I ran 9front on xen a few months ago. It supports one cpu and iirc 512mb ram. I can recover my xen configs and post them shortly.

On February 21, 2015 10:46:12 AM PST, Giacomo Tesio <giacomo@tesio.it> wrote:
Thanks for your help cinap.  It's an interesting dive into the kernel internals.

Btw, I've tried various combinations of networks drivers (virtio-net
or rtl) and plan9.ini options but with no success.

Now I'm planning to write a plan9.ini menu with the following
configurations trying one after another looking for a working
solution.

As far as I have undestood, I should test
1) *npmp=
2) *nomsi=
3) *acpi=
and the 4 combinations of them, right?

Is there anything else that I can do to identify and fix the issue?

I assigned to the 9front guest only one cpu, to reduce the variables,
but actually, if to run on xen 9front must use a single cpu, then the
disadvantage of the pv guest will be lower, and I could give it a try
too.

Strangely, looks like I'm the first to try installing plan9 on xen in
the last few years...


Giacomo

2015-02-21 12:51 GMT+01:00 <cinap_lenrek@felloff.net>:
well, that sounds like a interrupt problem indeed. when you send
packets, all the driver does is to put packets in transmit ring
and optionally kick the card with some register that it should start
transmitting.

but receiving works by the card issuing a interrupt and then the
driver looks in the receive ring if there are new packets from the
card.

if interrupt couldnt be enabled (because if broken mp tables), then
we wont receive anything. but sending might still work because it
doesnt need an interrupt.

the relation with mp is that mp systems use the apic interrupt
controller instead of the legacy pic controller (it is mandatory
as you need to use the apic to bootstrap the other processors).

enabling interrupt on pic is easy. you read the irq register
from the pci config space (that the bios programmed for you)...
sometimes, pci interrupt router needs to be programmed.

apic is a bit more complicated than pic because there can be multiple
apic controllers (and multiple processors/lapic's) and we require
tables (from bios) to find the mapping from pci bus interrupt
lines to the apics (which can then be programmed to send interrupts
to the lapics/processors).

and then theres msi interrupts that *some* devices support that
do not require any tables. you program register in pci config
space for the device and you'r done. this also works only with
apic.

when you specify *acpi= in plan9.ini, then the kernel will use
the acpi tables instead of the mp tables.

when you use *nomp=, then we will use legacy pic interrupt controller
and only one cpu can be used (this is also what happens when we cannot
find mp table).

--
cinap