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, 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).

--
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