Re: [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@xxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxxx>
>> ---
>>  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.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux