Re: [PATCH v3 1/3] update-linux-headers: Include const.h

2021-01-07 Thread Peter Xu
On Thu, Jan 07, 2021 at 12:50:34PM -0500, Eric Farman wrote:
> 
> 
> On 1/7/21 12:05 PM, Peter Maydell wrote:
> > On Thu, 7 Jan 2021 at 16:52, Eric Farman  wrote:
> > > On 1/6/21 2:03 PM, Peter Xu wrote:
> > > > Could I ask why the const.h is installed into 
> > > > include/standard-headers/linux
> > > > rather than linux-headers/linux?  When I was working on my version I 
> > > > failed to
> > > > figure out the difference.
> > > 
> > > Considering the main difference is whether the header file is copied
> > > directly or edited with a bunch of substitutions, and const.h doesn't
> > > get modified by those substitutions, I suppose it could go in
> > > linux-headers itself.
> > 
> > No, it can't, because linux-headers/ only goes on the include
> > path when on a Linux host and on a CPU architecture with KVM support,
> > whereas include/standard-headers/ headers are available and
> > used on all host OSes/architectures.
> > 
> > Because include/standard-headers/linux/ethtool.h will end up
> > with a line
> >   #include "standard-headers/linux/const.h"
> > we need to provide a const.h in that location so that the #include
> > pulls in the file correctly.
> 
> Ah, today I learned.  Thanks, Peter.

Yeah.  Peter taught me the rules on IRC after I posted the email, and I didn't
update later.  So I guess my r-b stands. :) Thanks,

-- 
Peter Xu




Re: [PATCH v3 1/3] update-linux-headers: Include const.h

2021-01-07 Thread Eric Farman




On 1/7/21 12:05 PM, Peter Maydell wrote:

On Thu, 7 Jan 2021 at 16:52, Eric Farman  wrote:

On 1/6/21 2:03 PM, Peter Xu wrote:

Could I ask why the const.h is installed into include/standard-headers/linux
rather than linux-headers/linux?  When I was working on my version I failed to
figure out the difference.


Considering the main difference is whether the header file is copied
directly or edited with a bunch of substitutions, and const.h doesn't
get modified by those substitutions, I suppose it could go in
linux-headers itself.


No, it can't, because linux-headers/ only goes on the include
path when on a Linux host and on a CPU architecture with KVM support,
whereas include/standard-headers/ headers are available and
used on all host OSes/architectures.

Because include/standard-headers/linux/ethtool.h will end up
with a line
  #include "standard-headers/linux/const.h"
we need to provide a const.h in that location so that the #include
pulls in the file correctly.


Ah, today I learned.  Thanks, Peter.

 - Eric



thanks
-- PMM





Re: [PATCH v3 1/3] update-linux-headers: Include const.h

2021-01-07 Thread Peter Maydell
On Thu, 7 Jan 2021 at 16:52, Eric Farman  wrote:
> On 1/6/21 2:03 PM, Peter Xu wrote:
> > Could I ask why the const.h is installed into include/standard-headers/linux
> > rather than linux-headers/linux?  When I was working on my version I failed 
> > to
> > figure out the difference.
>
> Considering the main difference is whether the header file is copied
> directly or edited with a bunch of substitutions, and const.h doesn't
> get modified by those substitutions, I suppose it could go in
> linux-headers itself.

No, it can't, because linux-headers/ only goes on the include
path when on a Linux host and on a CPU architecture with KVM support,
whereas include/standard-headers/ headers are available and
used on all host OSes/architectures.

Because include/standard-headers/linux/ethtool.h will end up
with a line
 #include "standard-headers/linux/const.h"
we need to provide a const.h in that location so that the #include
pulls in the file correctly.

thanks
-- PMM



Re: [PATCH v3 1/3] update-linux-headers: Include const.h

2021-01-07 Thread Eric Farman




On 1/6/21 2:03 PM, Peter Xu wrote:

On Mon, Jan 04, 2021 at 09:20:55PM +0100, Eric Farman wrote:

Kernel commit a85cbe6159ff ("uapi: move constants from
 to ") breaks our script
because of the unrecognized include. Let's add that to
our processing.

Signed-off-by: Eric Farman 
---
  scripts/update-linux-headers.sh | 5 -
  1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
index 9efbaf2f84..fa6f2b6272 100755
--- a/scripts/update-linux-headers.sh
+++ b/scripts/update-linux-headers.sh
@@ -41,6 +41,7 @@ cp_portable() {
   -e 'pvrdma_verbs' \
   -e 'drm.h' \
   -e 'limits' \
+ -e 'linux/const' \
   -e 'linux/kernel' \
   -e 'linux/sysinfo' \
   -e 'asm-generic/kvm_para' \
@@ -190,7 +191,9 @@ for i in "$tmpdir"/include/linux/*virtio*.h \
   "$tmpdir/include/linux/input.h" \
   "$tmpdir/include/linux/input-event-codes.h" \
   "$tmpdir/include/linux/pci_regs.h" \
- "$tmpdir/include/linux/ethtool.h" "$tmpdir/include/linux/kernel.h" \
+ "$tmpdir/include/linux/ethtool.h" \
+ "$tmpdir/include/linux/const.h" \
+ "$tmpdir/include/linux/kernel.h" \
   "$tmpdir/include/linux/vhost_types.h" \
   "$tmpdir/include/linux/sysinfo.h"; do
  cp_portable "$i" "$output/include/standard-headers/linux"
--
2.17.1


So I think I came to the same change when trying to update the headers. :)

Reviewed-by: Peter Xu 


Thank you!  :)



Could I ask why the const.h is installed into include/standard-headers/linux
rather than linux-headers/linux?  When I was working on my version I failed to
figure out the difference.


Considering the main difference is whether the header file is copied 
directly or edited with a bunch of substitutions, and const.h doesn't 
get modified by those substitutions, I suppose it could go in 
linux-headers itself. But I opted to just keep it near its friends 
(ethtool.h and kernel.h both include const.h, and end up including 
if_ether.h, sysinfo.h, and types.h) in include/standard-headers.




One answer is ethtool.h is there which included const.h, but I guess that's not
the real one.

Thanks,





Re: [PATCH v3 1/3] update-linux-headers: Include const.h

2021-01-06 Thread Philippe Mathieu-Daudé
On 1/4/21 9:20 PM, Eric Farman wrote:
> Kernel commit a85cbe6159ff ("uapi: move constants from
>  to ") breaks our script
> because of the unrecognized include. Let's add that to
> our processing.
> 
> Signed-off-by: Eric Farman 
> ---
>  scripts/update-linux-headers.sh | 5 -
>  1 file changed, 4 insertions(+), 1 deletion(-)

Reviewed-by: Philippe Mathieu-Daudé 




Re: [PATCH v3 1/3] update-linux-headers: Include const.h

2021-01-06 Thread Peter Xu
On Mon, Jan 04, 2021 at 09:20:55PM +0100, Eric Farman wrote:
> Kernel commit a85cbe6159ff ("uapi: move constants from
>  to ") breaks our script
> because of the unrecognized include. Let's add that to
> our processing.
> 
> Signed-off-by: Eric Farman 
> ---
>  scripts/update-linux-headers.sh | 5 -
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
> index 9efbaf2f84..fa6f2b6272 100755
> --- a/scripts/update-linux-headers.sh
> +++ b/scripts/update-linux-headers.sh
> @@ -41,6 +41,7 @@ cp_portable() {
>   -e 'pvrdma_verbs' \
>   -e 'drm.h' \
>   -e 'limits' \
> + -e 'linux/const' \
>   -e 'linux/kernel' \
>   -e 'linux/sysinfo' \
>   -e 'asm-generic/kvm_para' \
> @@ -190,7 +191,9 @@ for i in "$tmpdir"/include/linux/*virtio*.h \
>   "$tmpdir/include/linux/input.h" \
>   "$tmpdir/include/linux/input-event-codes.h" \
>   "$tmpdir/include/linux/pci_regs.h" \
> - "$tmpdir/include/linux/ethtool.h" "$tmpdir/include/linux/kernel.h" \
> + "$tmpdir/include/linux/ethtool.h" \
> + "$tmpdir/include/linux/const.h" \
> + "$tmpdir/include/linux/kernel.h" \
>   "$tmpdir/include/linux/vhost_types.h" \
>   "$tmpdir/include/linux/sysinfo.h"; do
>  cp_portable "$i" "$output/include/standard-headers/linux"
> -- 
> 2.17.1

So I think I came to the same change when trying to update the headers. :)

Reviewed-by: Peter Xu 

Could I ask why the const.h is installed into include/standard-headers/linux
rather than linux-headers/linux?  When I was working on my version I failed to
figure out the difference.

One answer is ethtool.h is there which included const.h, but I guess that's not
the real one.

Thanks,

-- 
Peter Xu