* Zachary Amsden <zach@xxxxxxxxxx> 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.