diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2007-07-31 20:48:02 -0400 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2007-10-13 04:18:22 -0400 |
commit | f02424785ab83bab8283ad33044284f749c08db8 (patch) | |
tree | 020d73469f801e33012702c58233e776381d3008 /drivers/kvm/kvm_main.c | |
parent | 33830b4f5bdf2bc21d0c10d38beffdce8edcded7 (diff) |
KVM: Add and use pr_unimpl for standard formatting of unimplemented features
All guest-invokable printks should be ratelimited to prevent malicious
guests from flooding logs. This is a start.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm/kvm_main.c')
-rw-r--r-- | drivers/kvm/kvm_main.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index 9de3b1aba20f..1b86ab0d42f6 100644 --- a/drivers/kvm/kvm_main.c +++ b/drivers/kvm/kvm_main.c | |||
@@ -962,8 +962,7 @@ static int emulator_write_std(unsigned long addr, | |||
962 | unsigned int bytes, | 962 | unsigned int bytes, |
963 | struct kvm_vcpu *vcpu) | 963 | struct kvm_vcpu *vcpu) |
964 | { | 964 | { |
965 | printk(KERN_ERR "emulator_write_std: addr %lx n %d\n", | 965 | pr_unimpl(vcpu, "emulator_write_std: addr %lx n %d\n", addr, bytes); |
966 | addr, bytes); | ||
967 | return X86EMUL_UNHANDLEABLE; | 966 | return X86EMUL_UNHANDLEABLE; |
968 | } | 967 | } |
969 | 968 | ||
@@ -1138,8 +1137,7 @@ int emulator_get_dr(struct x86_emulate_ctxt* ctxt, int dr, unsigned long *dest) | |||
1138 | *dest = kvm_arch_ops->get_dr(vcpu, dr); | 1137 | *dest = kvm_arch_ops->get_dr(vcpu, dr); |
1139 | return X86EMUL_CONTINUE; | 1138 | return X86EMUL_CONTINUE; |
1140 | default: | 1139 | default: |
1141 | printk(KERN_DEBUG "%s: unexpected dr %u\n", | 1140 | pr_unimpl(vcpu, "%s: unexpected dr %u\n", __FUNCTION__, dr); |
1142 | __FUNCTION__, dr); | ||
1143 | return X86EMUL_UNHANDLEABLE; | 1141 | return X86EMUL_UNHANDLEABLE; |
1144 | } | 1142 | } |
1145 | } | 1143 | } |
@@ -1488,7 +1486,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata) | |||
1488 | break; | 1486 | break; |
1489 | #endif | 1487 | #endif |
1490 | default: | 1488 | default: |
1491 | printk(KERN_ERR "kvm: unhandled rdmsr: 0x%x\n", msr); | 1489 | pr_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr); |
1492 | return 1; | 1490 | return 1; |
1493 | } | 1491 | } |
1494 | *pdata = data; | 1492 | *pdata = data; |
@@ -1543,11 +1541,11 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data) | |||
1543 | break; | 1541 | break; |
1544 | #endif | 1542 | #endif |
1545 | case MSR_IA32_MC0_STATUS: | 1543 | case MSR_IA32_MC0_STATUS: |
1546 | printk(KERN_WARNING "%s: MSR_IA32_MC0_STATUS 0x%llx, nop\n", | 1544 | pr_unimpl(vcpu, "%s: MSR_IA32_MC0_STATUS 0x%llx, nop\n", |
1547 | __FUNCTION__, data); | 1545 | __FUNCTION__, data); |
1548 | break; | 1546 | break; |
1549 | case MSR_IA32_MCG_STATUS: | 1547 | case MSR_IA32_MCG_STATUS: |
1550 | printk(KERN_WARNING "%s: MSR_IA32_MCG_STATUS 0x%llx, nop\n", | 1548 | pr_unimpl(vcpu, "%s: MSR_IA32_MCG_STATUS 0x%llx, nop\n", |
1551 | __FUNCTION__, data); | 1549 | __FUNCTION__, data); |
1552 | break; | 1550 | break; |
1553 | case MSR_IA32_UCODE_REV: | 1551 | case MSR_IA32_UCODE_REV: |
@@ -1567,7 +1565,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data) | |||
1567 | return vcpu_register_para(vcpu, data); | 1565 | return vcpu_register_para(vcpu, data); |
1568 | 1566 | ||
1569 | default: | 1567 | default: |
1570 | printk(KERN_ERR "kvm: unhandled wrmsr: 0x%x\n", msr); | 1568 | pr_unimpl(vcpu, "unhandled wrmsr: 0x%x\n", msr); |
1571 | return 1; | 1569 | return 1; |
1572 | } | 1570 | } |
1573 | return 0; | 1571 | return 0; |
@@ -1798,7 +1796,7 @@ int kvm_setup_pio(struct kvm_vcpu *vcpu, struct kvm_run *run, int in, | |||
1798 | /* | 1796 | /* |
1799 | * String I/O in reverse. Yuck. Kill the guest, fix later. | 1797 | * String I/O in reverse. Yuck. Kill the guest, fix later. |
1800 | */ | 1798 | */ |
1801 | printk(KERN_ERR "kvm: guest string pio down\n"); | 1799 | pr_unimpl(vcpu, "guest string pio down\n"); |
1802 | inject_gp(vcpu); | 1800 | inject_gp(vcpu); |
1803 | return 1; | 1801 | return 1; |
1804 | } | 1802 | } |
@@ -1829,7 +1827,7 @@ int kvm_setup_pio(struct kvm_vcpu *vcpu, struct kvm_run *run, int in, | |||
1829 | ret = 1; | 1827 | ret = 1; |
1830 | } | 1828 | } |
1831 | } else if (pio_dev) | 1829 | } else if (pio_dev) |
1832 | printk(KERN_ERR "no string pio read support yet, " | 1830 | pr_unimpl(vcpu, "no string pio read support yet, " |
1833 | "port %x size %d count %ld\n", | 1831 | "port %x size %d count %ld\n", |
1834 | port, size, count); | 1832 | port, size, count); |
1835 | 1833 | ||