Re: [announce] [patch] KVM paravirtualization for Linux

Ingo Molnar
2007-01-05T22:33:45Z

* Zachary Amsden <zach@vmware.com> wrote:

> What you really want is more like
> EXPORT_SYMBOL_READABLE_GPL(paravirt_ops);

yep. Not a big issue - what is important is to put the paravirt ops into
the read-only section so that it's somewhat harder for rootkits to
modify. (Also, it needs to be made clear that this is fundamental,
lowlevel system functionality written by people under the GPLv2, so that
if you utilize it beyond its original purpose, using its internals, you
likely create a work derived from the kernel. Something simple as irq
disabling probably doesnt qualify, and that we exported to modules for a
long time, but lots of other details do. So the existence of
paravirt_ops isnt a free-for all.)

> But I'm not sure that is technically feasible yet.
>
> The kvm code should probably go in kvm.c instead of paravirt.c.

no. This is fundamental architecture boot code, not module code. kvm.c
should eventually go into kernel/ and arch/*/kernel, not the other way
around.

> Index: linux/drivers/serial/8250.c
> ===================================================================
> --- linux.orig/drivers/serial/8250.c
> +++ linux/drivers/serial/8250.c
> @@ -1371,7 +1371,7 @@ static irqreturn_t serial8250_interrupt(
>
> l = l->next;
>
> - if (l == i->head && pass_counter++ > PASS_LIMIT) {
> + if (!kvm_paravirt
>
> Is this a bug that might happen under other virtualizations as well,
> not just kvm? Perhaps it deserves a disable feature instead of a kvm
> specific check.

yes - this limit is easily triggered via the KVM/Qemu virtual serial
drivers. You can think of "kvm_paravirt" as "Linux paravirt", it's just
a flag.

Ingo