Re: [PATCH] kvm: user: include arch specific headers from $(KERNELDIR)

Avi Kivity
2009-05-14T08:03:26Z

Arnd Bergmann wrote:
> On Wednesday 13 May 2009 08:32:21 Mark McLoughlin wrote:
>
>> Currently we only include $(KERNELDIR)/include in CFLAGS,
>> but we also have $(KERNELDIR)/arch/$(arch)/include or else
>> we'll get mis-matched headers.
>>
>>
>
> I think this is fundamentally wrong. User files should never directly
> access kernel headers, because they are postprocessed in various
> ways in order to get files that are valid in user space, e.g. __user
> annotations are removed.
>

There aren't the real kernel headers, just cheap copies carried in
qemu-kvm.git which have been appropriately postprocessed. We do this
since the kvm external module can run on a much older kernel, so there
is no natural place to find it headers.

> The three possible sources for kernel headers are:
>
> /usr/include
> - system provided headers, may be older than the running kernel
> /lib/modules/$(uname -r)/build/usr/include
> - user space headers for the currently running kernel
> $(KERNELDIR)/usr/include
> - user space headers from a configured kernel tree after 'make headers_install'

None of these are sufficiently up-to-date.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.