compulab-yokneam / meta-bsp-imx8mm

16 stars 21 forks source link

0042-can-mcp25xxfd-update-driver can failed to build with rel_imx_5.4.24_2.1.0 #9

Closed TMesot closed 3 years ago

TMesot commented 3 years ago

The tag iot-gate-imx8_r2.2 introduce some new kernel patches, especially 0042-can-mcp25xxfd-update-driver.patch which seems not buildable with recommanded NXP release kernel (rel_imx_5.4.24_2.1.0) if CONFIG_DEBUG_FS is disabled (which is the case in most production definitions).

In file included from drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.h:11,
                 from drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.c:52:
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_debugfs.h:34:41: warning: « struct mcp25xxfd_can_priv » est déclaré à l'intérieur d'une liste de paramètres et ne sera pas visible en dehors de cette définition ou déclaration
 void mcp25xxfd_can_debugfs_setup(struct mcp25xxfd_can_priv *cpriv)
                                         ^~~~~~~~~~~~~~~~~~
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_debugfs.h:39:42: warning: « struct mcp25xxfd_can_priv » est déclaré à l'intérieur d'une liste de paramètres et ne sera pas visible en dehors de cette définition ou déclaration
 void mcp25xxfd_can_debugfs_remove(struct mcp25xxfd_can_priv *cpriv)
                                          ^~~~~~~~~~~~~~~~~~
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.c: Dans la fonction « mcp25xxfd_can_open »:
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.c:486:17: error: « struct mcp25xxfd_can_priv » n'a pas de membre nommé « stats »; vouliez-vous employer « status » ?
  memset(&cpriv->stats, 0, sizeof(cpriv->stats));
                 ^~~~~
                 status
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.c:486:41: error: « struct mcp25xxfd_can_priv » n'a pas de membre nommé « stats »; vouliez-vous employer « status » ?
  memset(&cpriv->stats, 0, sizeof(cpriv->stats));
                                         ^~~~~
                                         status
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.c: Dans la fonction « mcp25xxfd_can_setup »:
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.c:670:30: error: passage de l'argument 1 de « mcp25xxfd_can_debugfs_setup » depuis un type pointeur incompatible [-Werror=incompatible-pointer-types]
  mcp25xxfd_can_debugfs_setup(cpriv);
                              ^~~~~
In file included from drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.h:11,
                 from drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.c:52:
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_debugfs.h:34:61: note: « struct mcp25xxfd_can_priv * » attendu mais l'argument est de type « struct mcp25xxfd_can_priv * »
 void mcp25xxfd_can_debugfs_setup(struct mcp25xxfd_can_priv *cpriv)
                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
cc1 : certains avertissements sont traités comme des erreurs
scripts/Makefile.build:265 : la recette pour la cible « drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.o » a échouée
make[6]: *** [drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can.o] Erreur 1
scripts/Makefile.build:500 : la recette pour la cible « drivers/net/can/spi/mcp25xxfd » a échouée
make[5]: *** [drivers/net/can/spi/mcp25xxfd] Erreur 2
scripts/Makefile.build:500 : la recette pour la cible « drivers/net/can/spi » a échouée
make[4]: *** [drivers/net/can/spi] Erreur 2
scripts/Makefile.build:500 : la recette pour la cible « drivers/net/can » a échouée
make[3]: *** [drivers/net/can] Erreur 2
scripts/Makefile.build:500 : la recette pour la cible « drivers/net » a échouée
make[2]: *** [drivers/net] Erreur 2

Disabling 0042-can-mcp25xxfd-update-drive.patch patch, while keeping the other new patches works.

It seems the code strongly rely on the stats structure on mcp25xxfd_can_priv structure which is not enabled if CONFIG_DEBUG_FS is disable

urimashi commented 3 years ago

Hello TMesot,

Thank you for locating the problem. Patch link will be provided.

urimashi commented 3 years ago

Hi TMesot, Relevant patch: Fix mcp25xxfd driver compilation for !CONFIG_DEBUG_FS

TMesot commented 3 years ago

Hello, Thanks for your reactivity.

It now build, but there is still a warning about unused variable as the priv struct is not used if DEBUG_FS not enabled :

drivers/net/can/spi/mcp25xxfd/mcp25xxfd_cmd.c: Dans la fonction « mcp25xxfd_cmd_readn_crc »:
drivers/net/can/spi/mcp25xxfd/mcp25xxfd_cmd.c:258:25: warning: variable inutilisée « priv » [-Wunused-variable]
  struct mcp25xxfd_priv *priv = spi_get_drvdata(spi);

Do you want me to keep the issue open until the warning is cleaned ?

urimashi commented 3 years ago

Hi TMesot,

Thank you again. Patch fixed.

TMesot commented 3 years ago

Hello, Build is now fixed, thanks !