[Android-virt] [PATCH v2] KVM: Cleanup the kvm_print functions and introduce pr_XX wrappers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 1, 2012 at 8:04 PM, Marcelo Tosatti <mtosatti at redhat.com> wrote:
> On Fri, May 25, 2012 at 12:22:59PM -0400, Christoffer Dall wrote:
>> Introduces a couple of print functions, which are essentially wrappers
>> around standard printk functions, with a KVM: prefix.
>>
>> Functions introduced or modified are:
>> ?- kvm_err(fmt, ...)
>> ?- kvm_info(fmt, ...)
>> ?- kvm_debug(fmt, ...)
>> ?- kvm_pr_unimpl(fmt, ...)
>> ?- pr_unimpl(vcpu, fmt, ...) -> vcpu_unimpl(vcpu, fmt, ...)
>>
>> Applies to kvm-next
>>
>> Changelog[2]:
>> ?- Added PID to print functions
>> ?- Renamed vcpu_pr_unimpl to vcpu_unimpl
>>
>> ?Signed-off-by: Christoffer Dall <c.dall at virtualopensystems.com>
>> ---
>> ?arch/x86/kvm/svm.c ? ? ? | ? ?6 +++--
>> ?arch/x86/kvm/vmx.c ? ? ? | ? ?2 +-
>> ?arch/x86/kvm/x86.c ? ? ? | ? 54 +++++++++++++++++++++++-----------------------
>> ?include/linux/kvm_host.h | ? 17 +++++++++-----
>> ?4 files changed, 42 insertions(+), 37 deletions(-)
>>
>> diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
>> index f75af40..7a41878 100644
>> --- a/arch/x86/kvm/svm.c
>> +++ b/arch/x86/kvm/svm.c
>> @@ -3185,8 +3185,8 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
>> ? ? ? ? ? ? ? break;
>> ? ? ? case MSR_IA32_DEBUGCTLMSR:
>> ? ? ? ? ? ? ? if (!boot_cpu_has(X86_FEATURE_LBRV)) {
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "%s: MSR_IA32_DEBUGCTL 0x%llx, nop\n",
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? __func__, data);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "%s: MSR_IA32_DEBUGCTL 0x%llx, nop\n",
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? __func__, data);
>> ? ? ? ? ? ? ? ? ? ? ? break;
>> ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? if (data & DEBUGCTL_RESERVED_BITS)
>> @@ -3205,7 +3205,7 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
>> ? ? ? case MSR_VM_CR:
>> ? ? ? ? ? ? ? return svm_set_vm_cr(vcpu, data);
>> ? ? ? case MSR_VM_IGNNE:
>> - ? ? ? ? ? ? pr_unimpl(vcpu, "unimplemented wrmsr: 0x%x data 0x%llx\n", ecx, data);
>> + ? ? ? ? ? ? vcpu_unimpl(vcpu, "unimplemented wrmsr: 0x%x data 0x%llx\n", ecx, data);
>> ? ? ? ? ? ? ? break;
>> ? ? ? default:
>> ? ? ? ? ? ? ? return kvm_set_msr_common(vcpu, ecx, data);
>> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
>> index 32eb588..c6b2d25 100644
>> --- a/arch/x86/kvm/vmx.c
>> +++ b/arch/x86/kvm/vmx.c
>> @@ -4489,7 +4489,7 @@ static int handle_cr(struct kvm_vcpu *vcpu)
>> ? ? ? ? ? ? ? break;
>> ? ? ? }
>> ? ? ? vcpu->run->exit_reason = 0;
>> - ? ? pr_unimpl(vcpu, "unhandled control register: op %d cr %d\n",
>> + ? ? vcpu_unimpl(vcpu, "unhandled control register: op %d cr %d\n",
>> ? ? ? ? ? ? ?(int)(exit_qualification >> 4) & 3, cr);
>> ? ? ? return 0;
>> ?}
>> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
>> index b78f89d..0aac0bc 100644
>> --- a/arch/x86/kvm/x86.c
>> +++ b/arch/x86/kvm/x86.c
>> @@ -1437,8 +1437,8 @@ static int set_msr_hyperv_pw(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? ? ? ? ? break;
>> ? ? ? }
>> ? ? ? default:
>> - ? ? ? ? ? ? pr_unimpl(vcpu, "HYPER-V unimplemented wrmsr: 0x%x "
>> - ? ? ? ? ? ? ? ? ? ? ? "data 0x%llx\n", msr, data);
>> + ? ? ? ? ? ? vcpu_unimpl(vcpu, "HYPER-V unimplemented wrmsr: 0x%x "
>> + ? ? ? ? ? ? ? ? ? ? ? ? "data 0x%llx\n", msr, data);
>> ? ? ? ? ? ? ? return 1;
>> ? ? ? }
>> ? ? ? return 0;
>> @@ -1470,8 +1470,8 @@ static int set_msr_hyperv(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? case HV_X64_MSR_TPR:
>> ? ? ? ? ? ? ? return kvm_hv_vapic_msr_write(vcpu, APIC_TASKPRI, data);
>> ? ? ? default:
>> - ? ? ? ? ? ? pr_unimpl(vcpu, "HYPER-V unimplemented wrmsr: 0x%x "
>> - ? ? ? ? ? ? ? ? ? ? ? "data 0x%llx\n", msr, data);
>> + ? ? ? ? ? ? vcpu_unimpl(vcpu, "HYPER-V unimplemented wrmsr: 0x%x "
>> + ? ? ? ? ? ? ? ? ? ? ? ? "data 0x%llx\n", msr, data);
>> ? ? ? ? ? ? ? return 1;
>> ? ? ? }
>>
>> @@ -1551,15 +1551,15 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? ? ? ? ? data &= ~(u64)0x100; ? ?/* ignore ignne emulation enable */
>> ? ? ? ? ? ? ? data &= ~(u64)0x8; ? ? ?/* ignore TLB cache disable */
>> ? ? ? ? ? ? ? if (data != 0) {
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "unimplemented HWCR wrmsr: 0x%llx\n",
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? data);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "unimplemented HWCR wrmsr: 0x%llx\n",
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? data);
>> ? ? ? ? ? ? ? ? ? ? ? return 1;
>> ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? break;
>> ? ? ? case MSR_FAM10H_MMIO_CONF_BASE:
>> ? ? ? ? ? ? ? if (data != 0) {
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "unimplemented MMIO_CONF_BASE wrmsr: "
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? "0x%llx\n", data);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "unimplemented MMIO_CONF_BASE wrmsr: "
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "0x%llx\n", data);
>> ? ? ? ? ? ? ? ? ? ? ? return 1;
>> ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? break;
>> @@ -1574,8 +1574,8 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? ? ? ? ? ? ? ? ? ? ?thus reserved and should throw a #GP */
>> ? ? ? ? ? ? ? ? ? ? ? return 1;
>> ? ? ? ? ? ? ? }
>> - ? ? ? ? ? ? pr_unimpl(vcpu, "%s: MSR_IA32_DEBUGCTLMSR 0x%llx, nop\n",
>> - ? ? ? ? ? ? ? ? ? ? __func__, data);
>> + ? ? ? ? ? ? vcpu_unimpl(vcpu, "%s: MSR_IA32_DEBUGCTLMSR 0x%llx, nop\n",
>> + ? ? ? ? ? ? ? ? ? ? ? ? __func__, data);
>> ? ? ? ? ? ? ? break;
>> ? ? ? case MSR_IA32_UCODE_REV:
>> ? ? ? case MSR_IA32_UCODE_WRITE:
>> @@ -1671,8 +1671,8 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? case MSR_K7_EVNTSEL2:
>> ? ? ? case MSR_K7_EVNTSEL3:
>> ? ? ? ? ? ? ? if (data != 0)
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "unimplemented perfctr wrmsr: "
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? "0x%x data 0x%llx\n", msr, data);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "unimplemented perfctr wrmsr: "
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "0x%x data 0x%llx\n", msr, data);
>> ? ? ? ? ? ? ? break;
>> ? ? ? /* at least RHEL 4 unconditionally writes to the perfctr registers,
>> ? ? ? ?* so we ignore writes to make it happy.
>> @@ -1681,8 +1681,8 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? case MSR_K7_PERFCTR1:
>> ? ? ? case MSR_K7_PERFCTR2:
>> ? ? ? case MSR_K7_PERFCTR3:
>> - ? ? ? ? ? ? pr_unimpl(vcpu, "unimplemented perfctr wrmsr: "
>> - ? ? ? ? ? ? ? ? ? ? "0x%x data 0x%llx\n", msr, data);
>> + ? ? ? ? ? ? vcpu_unimpl(vcpu, "unimplemented perfctr wrmsr: "
>> + ? ? ? ? ? ? ? ? ? ? ? ? "0x%x data 0x%llx\n", msr, data);
>> ? ? ? ? ? ? ? break;
>> ? ? ? case MSR_P6_PERFCTR0:
>> ? ? ? case MSR_P6_PERFCTR1:
>> @@ -1693,8 +1693,8 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? ? ? ? ? ? ? ? ? return kvm_pmu_set_msr(vcpu, msr, data);
>>
>> ? ? ? ? ? ? ? if (pr || data != 0)
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "disabled perfctr wrmsr: "
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? "0x%x data 0x%llx\n", msr, data);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "disabled perfctr wrmsr: "
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "0x%x data 0x%llx\n", msr, data);
>> ? ? ? ? ? ? ? break;
>> ? ? ? case MSR_K7_CLK_CTL:
>> ? ? ? ? ? ? ? /*
>> @@ -1720,7 +1720,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? ? ? ? ? /* Drop writes to this legacy MSR -- see rdmsr
>> ? ? ? ? ? ? ? ?* counterpart for further detail.
>> ? ? ? ? ? ? ? ?*/
>> - ? ? ? ? ? ? pr_unimpl(vcpu, "ignored wrmsr: 0x%x data %llx\n", msr, data);
>> + ? ? ? ? ? ? vcpu_unimpl(vcpu, "ignored wrmsr: 0x%x data %llx\n", msr, data);
>> ? ? ? ? ? ? ? break;
>> ? ? ? case MSR_AMD64_OSVW_ID_LENGTH:
>> ? ? ? ? ? ? ? if (!guest_cpuid_has_osvw(vcpu))
>> @@ -1738,12 +1738,12 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
>> ? ? ? ? ? ? ? if (kvm_pmu_msr(vcpu, msr))
>> ? ? ? ? ? ? ? ? ? ? ? return kvm_pmu_set_msr(vcpu, msr, data);
>> ? ? ? ? ? ? ? if (!ignore_msrs) {
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "unhandled wrmsr: 0x%x data %llx\n",
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? msr, data);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "unhandled wrmsr: 0x%x data %llx\n",
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? msr, data);
>> ? ? ? ? ? ? ? ? ? ? ? return 1;
>> ? ? ? ? ? ? ? } else {
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "ignored wrmsr: 0x%x data %llx\n",
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? msr, data);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "ignored wrmsr: 0x%x data %llx\n",
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? msr, data);
>> ? ? ? ? ? ? ? ? ? ? ? break;
>> ? ? ? ? ? ? ? }
>> ? ? ? }
>> @@ -1846,7 +1846,7 @@ static int get_msr_hyperv_pw(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
>> ? ? ? ? ? ? ? data = kvm->arch.hv_hypercall;
>> ? ? ? ? ? ? ? break;
>> ? ? ? default:
>> - ? ? ? ? ? ? pr_unimpl(vcpu, "Hyper-V unhandled rdmsr: 0x%x\n", msr);
>> + ? ? ? ? ? ? vcpu_unimpl(vcpu, "Hyper-V unhandled rdmsr: 0x%x\n", msr);
>> ? ? ? ? ? ? ? return 1;
>> ? ? ? }
>>
>> @@ -1877,7 +1877,7 @@ static int get_msr_hyperv(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
>> ? ? ? ? ? ? ? data = vcpu->arch.hv_vapic;
>> ? ? ? ? ? ? ? break;
>> ? ? ? default:
>> - ? ? ? ? ? ? pr_unimpl(vcpu, "Hyper-V unhandled rdmsr: 0x%x\n", msr);
>> + ? ? ? ? ? ? vcpu_unimpl(vcpu, "Hyper-V unhandled rdmsr: 0x%x\n", msr);
>> ? ? ? ? ? ? ? return 1;
>> ? ? ? }
>> ? ? ? *pdata = data;
>> @@ -2030,10 +2030,10 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
>> ? ? ? ? ? ? ? if (kvm_pmu_msr(vcpu, msr))
>> ? ? ? ? ? ? ? ? ? ? ? return kvm_pmu_get_msr(vcpu, msr, pdata);
>> ? ? ? ? ? ? ? if (!ignore_msrs) {
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr);
>> ? ? ? ? ? ? ? ? ? ? ? return 1;
>> ? ? ? ? ? ? ? } else {
>> - ? ? ? ? ? ? ? ? ? ? pr_unimpl(vcpu, "ignored rdmsr: 0x%x\n", msr);
>> + ? ? ? ? ? ? ? ? ? ? vcpu_unimpl(vcpu, "ignored rdmsr: 0x%x\n", msr);
>> ? ? ? ? ? ? ? ? ? ? ? data = 0;
>> ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? break;
>> @@ -4116,7 +4116,7 @@ static unsigned long emulator_get_cr(struct x86_emulate_ctxt *ctxt, int cr)
>> ? ? ? ? ? ? ? value = kvm_get_cr8(vcpu);
>> ? ? ? ? ? ? ? break;
>> ? ? ? default:
>> - ? ? ? ? ? ? vcpu_printf(vcpu, "%s: unexpected cr %u\n", __func__, cr);
>> + ? ? ? ? ? ? kvm_err("%s: unexpected cr %u\n", __func__, cr);
>> ? ? ? ? ? ? ? return 0;
>> ? ? ? }
>>
>> @@ -4145,7 +4145,7 @@ static int emulator_set_cr(struct x86_emulate_ctxt *ctxt, int cr, ulong val)
>> ? ? ? ? ? ? ? res = kvm_set_cr8(vcpu, val);
>> ? ? ? ? ? ? ? break;
>> ? ? ? default:
>> - ? ? ? ? ? ? vcpu_printf(vcpu, "%s: unexpected cr %u\n", __func__, cr);
>> + ? ? ? ? ? ? kvm_err("%s: unexpected cr %u\n", __func__, cr);
>> ? ? ? ? ? ? ? res = -1;
>> ? ? ? }
>>
>> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
>> index c446435..7825f1d 100644
>> --- a/include/linux/kvm_host.h
>> +++ b/include/linux/kvm_host.h
>> @@ -314,13 +314,18 @@ struct kvm {
>> ? ? ? long tlbs_dirty;
>> ?};
>>
>> -/* The guest did something we don't support. */
>> -#define pr_unimpl(vcpu, fmt, ...) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
>> - ? ? pr_err_ratelimited("kvm: %i: cpu%i " fmt, ? ? ? ? ? ? ? ? ? ? ? \
>> - ? ? ? ? ? ? ? ? ? ? ? ?current->tgid, (vcpu)->vcpu_id , ## __VA_ARGS__)
>> +#define kvm_err(fmt, ...) \
>> + ? ? pr_err("kvm [%i]: " fmt, current->pid, ## __VA_ARGS__)
>
> Use task_pid_nr() wrapper.
>
>> +#define kvm_info(fmt, ...) \
>> + ? ? pr_info("kvm [%i]: " fmt, current->pid, ## __VA_ARGS__)
>> +#define kvm_debug(fmt, ...) \
>> + ? ? pr_debug("kvm [%i]: " fmt, current->pid, ## __VA_ARGS__)
>> +#define kvm_pr_unimpl(fmt, ...) \
>> + ? ? pr_err_ratelimited("kvm [%i]: " fmt, current->tgid, ## __VA_ARGS__)
>>
>> -#define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt)
>> -#define vcpu_printf(vcpu, fmt...) kvm_printf(vcpu->kvm, fmt)
>> +/* The guest did something we don't support. */
>> +#define vcpu_unimpl(vcpu, fmt, ...) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
>> + ? ? kvm_pr_unimpl("cpu%i " fmt, (vcpu)->vcpu_id, ## __VA_ARGS__)
>
> While at it, change "cpu" to "vcpu" (avoids confusion with pcpus).
>

thanks, new patch submitted.



[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux