Re: [PATCH 048/104] KVM: Add and use pr_unimpl for standard formatting of unimplemented features

Rusty Russell
2007-09-17T23:08:20Z

On Mon, 2007-09-17 at 09:16 -0700, Joe Perches wrote:
> On Mon, 2007-09-17 at 10:31 +0200, Avi Kivity wrote:
> > diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
> > index cfda3ab..6d25826 100644
> > --- a/drivers/kvm/kvm.h
> > +++ b/drivers/kvm/kvm.h
> > @@ -474,6 +474,14 @@ struct kvm_arch_ops {
> >
> > extern struct kvm_arch_ops *kvm_arch_ops;
> >
> > +/* The guest did something we don't support. */
> > +#define pr_unimpl(vcpu, fmt, ...) \
> > + do { \
> > + if (printk_ratelimit()) \
> > + printk(KERN_ERR "kvm: %i: cpu%i " fmt, \
> > + current->tgid, (vcpu)->vcpu_id , ## __VA_ARGS__); \
> > + } while(0)
> > +
> > #define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt)
> > #define vcpu_printf(vcpu, fmt...) kvm_printf(vcpu->kvm, fmt)
> >
>
> This converts all KERN_<level> uses to KERN_ERR.
> It seems better to add a <level> argument to kvm_printf.
> pr_unimpl is perhaps a poor name choice.
> perhaps vcpu_printk_ratelimit(vcpu, level, fmt, ...)

Possibly, but remember that printk() is an admission of failure. It's
only useful to developers, and the only reason for printk over
pr_debug() is for users to report to developers when guests crash.

pr_unimpl() means exactly what it says: the guest asked for something we
don't support. If that turns out to be the last thing in the logs
before a crash, it's a clue. The rest of the printks should probably
move to pr_debug().

Hope that helps,
Rusty.