tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 210e04ff768142b96452030c4c2627512b30ad95
commit: eb79a267c9b3e608e7762a1b221428f37ace3aa3 can: mcp251xfd: rename all remaining occurrence to mcp251xfd
date: 1 year, 8 months ago
config: arm-randconfig-c002-20220518 (https://download.01.org/0day-ci/archive/20220518/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 853fa8ee225edf2d0de94b0dcbd31bea916e825e)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb79a267c9b3e608e7762a1b221428f37ace3aa3
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout eb79a267c9b3e608e7762a1b221428f37ace3aa3
# save the config file
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
All warnings (new ones prefixed by >>):
>> drivers/net/can/spi/mcp251xfd/mcp251xfd.h:481:34: warning: field hw_tx_obj within 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:479:2)' is less aligned than 'struct mcp251xfd_hw_tx_obj_raw' and is usually due to 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:479:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
^
drivers/net/can/spi/mcp251xfd/mcp251xfd.h:485:34: warning: field hw_tx_obj within 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:483:2)' is less aligned than 'struct mcp251xfd_hw_tx_obj_raw' and is usually due to 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:483:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
^
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c:511:1: warning: unused function 'mcp251xfd_chip_set_mode_nowait' [-Wunused-function]
mcp251xfd_chip_set_mode_nowait(const struct mcp251xfd_priv *priv,
^
3 warnings generated.
--
>> drivers/net/can/spi/mcp251xfd/mcp251xfd.h:481:34: warning: field hw_tx_obj within 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:479:2)' is less aligned than 'struct mcp251xfd_hw_tx_obj_raw' and is usually due to 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:479:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
^
drivers/net/can/spi/mcp251xfd/mcp251xfd.h:485:34: warning: field hw_tx_obj within 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:483:2)' is less aligned than 'struct mcp251xfd_hw_tx_obj_raw' and is usually due to 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:483:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
^
2 warnings generated.
vim +481 drivers/net/can/spi/mcp251xfd/mcp251xfd.h
477
478 union mcp251xfd_tx_obj_load_buf {
479 struct __packed {
480 struct mcp251xfd_buf_cmd cmd;
> 481 struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
482 } nocrc;
483 struct __packed {
484 struct mcp251xfd_buf_cmd_crc cmd;
485 struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
486 __be16 crc;
487 } crc;
488 } ____cacheline_aligned;
489
--
0-DAY CI Kernel Test Service
https://01.org/lkp
On 18.05.2022 14:45:33, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 210e04ff768142b96452030c4c2627512b30ad95
> commit: eb79a267c9b3e608e7762a1b221428f37ace3aa3 can: mcp251xfd: rename all remaining occurrence to mcp251xfd
> date: 1 year, 8 months ago
> config: arm-randconfig-c002-20220518 (https://download.01.org/0day-ci/archive/20220518/[email protected]/config)
> compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 853fa8ee225edf2d0de94b0dcbd31bea916e825e)
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # install arm cross compiling tool for clang build
> # apt-get install binutils-arm-linux-gnueabi
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb79a267c9b3e608e7762a1b221428f37ace3aa3
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout eb79a267c9b3e608e7762a1b221428f37ace3aa3
> # save the config file
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <[email protected]>
>
> All warnings (new ones prefixed by >>):
>
> >> drivers/net/can/spi/mcp251xfd/mcp251xfd.h:481:34: warning: field hw_tx_obj within 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:479:2)' is less aligned than 'struct mcp251xfd_hw_tx_obj_raw' and is usually due to 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:479:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
> struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> ^
> drivers/net/can/spi/mcp251xfd/mcp251xfd.h:485:34: warning: field hw_tx_obj within 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:483:2)' is less aligned than 'struct mcp251xfd_hw_tx_obj_raw' and is usually due to 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:483:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
> struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> ^
> drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c:511:1: warning: unused function 'mcp251xfd_chip_set_mode_nowait' [-Wunused-function]
> mcp251xfd_chip_set_mode_nowait(const struct mcp251xfd_priv *priv,
> ^
> 3 warnings generated.
> --
> >> drivers/net/can/spi/mcp251xfd/mcp251xfd.h:481:34: warning: field hw_tx_obj within 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:479:2)' is less aligned than 'struct mcp251xfd_hw_tx_obj_raw' and is usually due to 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:479:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
> struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> ^
> drivers/net/can/spi/mcp251xfd/mcp251xfd.h:485:34: warning: field hw_tx_obj within 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:483:2)' is less aligned than 'struct mcp251xfd_hw_tx_obj_raw' and is usually due to 'struct mcp251xfd_tx_obj_load_buf::(unnamed at drivers/net/can/spi/mcp251xfd/mcp251xfd.h:483:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
> struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> ^
> 2 warnings generated.
>
>
> vim +481 drivers/net/can/spi/mcp251xfd/mcp251xfd.h
>
> 477
> 478 union mcp251xfd_tx_obj_load_buf {
> 479 struct __packed {
> 480 struct mcp251xfd_buf_cmd cmd;
> > 481 struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> 482 } nocrc;
> 483 struct __packed {
> 484 struct mcp251xfd_buf_cmd_crc cmd;
> 485 struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> 486 __be16 crc;
> 487 } crc;
> 488 } ____cacheline_aligned;
> 489
The structure layout is intentional as it describes the hardware
messages on the SPI bus. The functions accessing these structs use
appropriate put_unaligned_*() functions.
How to properly annotate these structs to silence the warnings?
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung West/Dortmund | Phone: +49-231-2826-924 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
clang emits a -Wunaligned-access warning on union
mcp251xfd_tx_ojb_load_buf.
The reason is that field hw_tx_obj (not declared as packed) is being
packed right after a 16 bits field inside a packed struct:
| union mcp251xfd_tx_obj_load_buf {
| struct __packed {
| struct mcp251xfd_buf_cmd cmd;
| /* ^ 16 bits fields */
| struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
| /* ^ not declared as packed */
| } nocrc;
| struct __packed {
| struct mcp251xfd_buf_cmd_crc cmd;
| struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
| __be16 crc;
| } crc;
| } ____cacheline_aligned;
Starting from LLVM 14, having an unpacked struct nested in a packed
struct triggers a warning. c.f. [1].
This is a false positive because the field is always being accessed
with the relevant put_unaligned_*() function. Adding __packed to the
structure declaration silences the warning.
[1] https://github.com/llvm/llvm-project/issues/55520
Signed-off-by: Vincent Mailhol <[email protected]>
---
Actually, I do not have llvm 14 installed so I am not able to test
(this check was introduced in v14). But as explained in [1], adding
__packed should fix the warning.
Because this is a false positive, I did not add a Fixes tag, nor a
Reported-by: kernel test robot.
---
drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
index 1d43bccc29bf..2b0309fedfac 100644
--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
+++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
@@ -441,7 +441,7 @@ struct mcp251xfd_hw_tef_obj {
/* The tx_obj_raw version is used in spi async, i.e. without
* regmap. We have to take care of endianness ourselves.
*/
-struct mcp251xfd_hw_tx_obj_raw {
+struct __packed mcp251xfd_hw_tx_obj_raw {
__le32 id;
__le32 flags;
u8 data[sizeof_field(struct canfd_frame, data)];
--
2.35.1
On 18.05.2022 20:43:57, Vincent Mailhol wrote:
> clang emits a -Wunaligned-access warning on union
> mcp251xfd_tx_ojb_load_buf.
>
> The reason is that field hw_tx_obj (not declared as packed) is being
> packed right after a 16 bits field inside a packed struct:
>
> | union mcp251xfd_tx_obj_load_buf {
> | struct __packed {
> | struct mcp251xfd_buf_cmd cmd;
> | /* ^ 16 bits fields */
> | struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> | /* ^ not declared as packed */
> | } nocrc;
> | struct __packed {
> | struct mcp251xfd_buf_cmd_crc cmd;
> | struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> | __be16 crc;
> | } crc;
> | } ____cacheline_aligned;
>
> Starting from LLVM 14, having an unpacked struct nested in a packed
> struct triggers a warning. c.f. [1].
>
> This is a false positive because the field is always being accessed
> with the relevant put_unaligned_*() function. Adding __packed to the
> structure declaration silences the warning.
>
> [1] https://github.com/llvm/llvm-project/issues/55520
>
> Signed-off-by: Vincent Mailhol <[email protected]>
Thank! Applies to linux-can-next/testing.
regards,
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung West/Dortmund | Phone: +49-231-2826-924 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
Hi Vincent,
On Wed, May 18, 2022 at 08:43:57PM +0900, Vincent Mailhol wrote:
> clang emits a -Wunaligned-access warning on union
> mcp251xfd_tx_ojb_load_buf.
>
> The reason is that field hw_tx_obj (not declared as packed) is being
> packed right after a 16 bits field inside a packed struct:
>
> | union mcp251xfd_tx_obj_load_buf {
> | struct __packed {
> | struct mcp251xfd_buf_cmd cmd;
> | /* ^ 16 bits fields */
> | struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> | /* ^ not declared as packed */
> | } nocrc;
> | struct __packed {
> | struct mcp251xfd_buf_cmd_crc cmd;
> | struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> | __be16 crc;
> | } crc;
> | } ____cacheline_aligned;
>
> Starting from LLVM 14, having an unpacked struct nested in a packed
> struct triggers a warning. c.f. [1].
>
> This is a false positive because the field is always being accessed
> with the relevant put_unaligned_*() function. Adding __packed to the
> structure declaration silences the warning.
>
> [1] https://github.com/llvm/llvm-project/issues/55520
>
> Signed-off-by: Vincent Mailhol <[email protected]>
> ---
> Actually, I do not have llvm 14 installed so I am not able to test
> (this check was introduced in v14). But as explained in [1], adding
> __packed should fix the warning.
Thanks for the patch! This does resolve the warning (verified with LLVM
15).
> Because this is a false positive, I did not add a Fixes tag, nor a
> Reported-by: kernel test robot.
I think that the Reported-by tag should always be included but I agree
that a Fixes tag is not necessary for this warning, as we currently have
it under W=1, so it should not be visible under normal circumstances.
> ---
> drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
> index 1d43bccc29bf..2b0309fedfac 100644
> --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
> +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
> @@ -441,7 +441,7 @@ struct mcp251xfd_hw_tef_obj {
> /* The tx_obj_raw version is used in spi async, i.e. without
> * regmap. We have to take care of endianness ourselves.
> */
> -struct mcp251xfd_hw_tx_obj_raw {
> +struct __packed mcp251xfd_hw_tx_obj_raw {
> __le32 id;
> __le32 flags;
> u8 data[sizeof_field(struct canfd_frame, data)];
> --
> 2.35.1
>
>
Cheers,
Nathan
On Tue. 19 May 2022 at 01:08, Nathan Chancellor <[email protected]> wrote:
> Hi Vincent,
>
> On Wed, May 18, 2022 at 08:43:57PM +0900, Vincent Mailhol wrote:
> > clang emits a -Wunaligned-access warning on union
> > mcp251xfd_tx_ojb_load_buf.
> >
> > The reason is that field hw_tx_obj (not declared as packed) is being
> > packed right after a 16 bits field inside a packed struct:
> >
> > | union mcp251xfd_tx_obj_load_buf {
> > | struct __packed {
> > | struct mcp251xfd_buf_cmd cmd;
> > | /* ^ 16 bits fields */
> > | struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> > | /* ^ not declared as packed */
> > | } nocrc;
> > | struct __packed {
> > | struct mcp251xfd_buf_cmd_crc cmd;
> > | struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> > | __be16 crc;
> > | } crc;
> > | } ____cacheline_aligned;
> >
> > Starting from LLVM 14, having an unpacked struct nested in a packed
> > struct triggers a warning. c.f. [1].
> >
> > This is a false positive because the field is always being accessed
> > with the relevant put_unaligned_*() function. Adding __packed to the
> > structure declaration silences the warning.
> >
> > [1] https://github.com/llvm/llvm-project/issues/55520
> >
> > Signed-off-by: Vincent Mailhol <[email protected]>
> > ---
> > Actually, I do not have llvm 14 installed so I am not able to test
> > (this check was introduced in v14). But as explained in [1], adding
> > __packed should fix the warning.
>
> Thanks for the patch! This does resolve the warning (verified with LLVM
> 15).
Great, thanks for the check! Does this mean we can add you Tested-by
(I assume yes, c.f. below, if not the case, please raise your voice).
> > Because this is a false positive, I did not add a Fixes tag, nor a
> > Reported-by: kernel test robot.
>
> I think that the Reported-by tag should always be included but I agree
> that a Fixes tag is not necessary for this warning, as we currently have
> it under W=1, so it should not be visible under normal circumstances.
ACK.
Marc, can you directly add below tags to the patch:
Reported-by: kernel test robot <[email protected]>
Tested-by: Nathan Chancellor <[email protected]>
Or do you want me to send a v2?
Yours sincerely,
Vincent Mailhol
On Thu, May 19, 2022 at 01:15:04AM +0900, Vincent MAILHOL wrote:
> On Tue. 19 May 2022 at 01:08, Nathan Chancellor <[email protected]> wrote:
> > Hi Vincent,
> >
> > On Wed, May 18, 2022 at 08:43:57PM +0900, Vincent Mailhol wrote:
> > > clang emits a -Wunaligned-access warning on union
> > > mcp251xfd_tx_ojb_load_buf.
> > >
> > > The reason is that field hw_tx_obj (not declared as packed) is being
> > > packed right after a 16 bits field inside a packed struct:
> > >
> > > | union mcp251xfd_tx_obj_load_buf {
> > > | struct __packed {
> > > | struct mcp251xfd_buf_cmd cmd;
> > > | /* ^ 16 bits fields */
> > > | struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> > > | /* ^ not declared as packed */
> > > | } nocrc;
> > > | struct __packed {
> > > | struct mcp251xfd_buf_cmd_crc cmd;
> > > | struct mcp251xfd_hw_tx_obj_raw hw_tx_obj;
> > > | __be16 crc;
> > > | } crc;
> > > | } ____cacheline_aligned;
> > >
> > > Starting from LLVM 14, having an unpacked struct nested in a packed
> > > struct triggers a warning. c.f. [1].
> > >
> > > This is a false positive because the field is always being accessed
> > > with the relevant put_unaligned_*() function. Adding __packed to the
> > > structure declaration silences the warning.
> > >
> > > [1] https://github.com/llvm/llvm-project/issues/55520
> > >
> > > Signed-off-by: Vincent Mailhol <[email protected]>
> > > ---
> > > Actually, I do not have llvm 14 installed so I am not able to test
> > > (this check was introduced in v14). But as explained in [1], adding
> > > __packed should fix the warning.
> >
> > Thanks for the patch! This does resolve the warning (verified with LLVM
> > 15).
>
> Great, thanks for the check! Does this mean we can add you Tested-by
> (I assume yes, c.f. below, if not the case, please raise your voice).
Sure, see below.
> > > Because this is a false positive, I did not add a Fixes tag, nor a
> > > Reported-by: kernel test robot.
> >
> > I think that the Reported-by tag should always be included but I agree
> > that a Fixes tag is not necessary for this warning, as we currently have
> > it under W=1, so it should not be visible under normal circumstances.
>
> ACK.
> Marc, can you directly add below tags to the patch:
>
> Reported-by: kernel test robot <[email protected]>
> Tested-by: Nathan Chancellor <[email protected]>
Please use:
Tested-by: Nathan Chancellor <[email protected]> # build
To make it clear that I didn't perform anything more than a build test
to see that the warning is fixed.
Cheers,
Nathan
On 18.05.2022 09:18:19, Nathan Chancellor wrote:
> > > > Because this is a false positive, I did not add a Fixes tag, nor a
> > > > Reported-by: kernel test robot.
> > >
> > > I think that the Reported-by tag should always be included but I agree
> > > that a Fixes tag is not necessary for this warning, as we currently have
> > > it under W=1, so it should not be visible under normal circumstances.
> >
> > ACK.
> > Marc, can you directly add below tags to the patch:
> >
> > Reported-by: kernel test robot <[email protected]>
> > Tested-by: Nathan Chancellor <[email protected]>
>
> Please use:
>
> Tested-by: Nathan Chancellor <[email protected]> # build
>
> To make it clear that I didn't perform anything more than a build test
> to see that the warning is fixed.
I've updated the tags!
Thanks,
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung West/Dortmund | Phone: +49-231-2826-924 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |