On Mon, Nov 14, 2022, David Woodhouse wrote: > On Mon, 2022-11-14 at 18:16 +0000, Sean Christopherson wrote: > > Use BITS_PER_BYTE and sizeof_field() to compute the number of Xen event > > channels. The compat version at least uses sizeof_field(), but the > > regular version open codes sizeof_field(), BITS_PER_BYTE, and combines > > literals in the process, which makes it far too difficult to understand > > relatively straightforward code. > > > > No functional change intended. > > Slightly dubious about changing the regular one, since that's just > imported directly from Xen public header files. Ugh. I worried that might be the case. An alternative approach to help document things from a KVM perspective would be something like: diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 93c628d3e3a9..7769f3b98af0 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -1300,6 +1300,9 @@ int kvm_xen_hypercall(struct kvm_vcpu *vcpu) static inline int max_evtchn_port(struct kvm *kvm) { + BUILD_BUG_ON(EVTCHN_2L_NR_CHANNELS != + (sizeof_field(struct shared_info, evtchn_pending) * BITS_PER_BYTE)); + if (IS_ENABLED(CONFIG_64BIT) && kvm->arch.xen.long_mode) return EVTCHN_2L_NR_CHANNELS; else