Successfully identified regression in *linux* in CI configuration 
tcwg_kernel/llvm-release-arm-next-allmodconfig.  So far, this commit has 
regressed CI configurations:
 - tcwg_kernel/llvm-release-arm-next-allmodconfig

Culprit:
<cut>
commit 3d463dd5023b5a58b3c37207d65eeb5acbac2be3
Author: Krzysztof Kozlowski <krzysztof.kozlow...@canonical.com>
Date:   Thu Jul 29 12:40:19 2021 +0200

    nfc: fdp: constify several pointers
    
    Several functions do not modify pointed data so arguments and local
    variables can be const for correctness and safety.  This allows also
    making file-scope nci_core_get_config_otp_ram_version array const.
    
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlow...@canonical.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
</cut>

Results regressed to (for first_bad == 3d463dd5023b5a58b3c37207d65eeb5acbac2be3)
# reset_artifacts:
-10
# build_abe binutils:
-9
# build_llvm:
-5
# build_abe qemu:
-2
# linux_n_obj:
21699
# First few build errors in logs:
# 00:02:22 drivers/nfc/fdp/fdp.c:116:60: error: passing 'const char *' to 
parameter of type '__u8 *' (aka 'unsigned char *') discards qualifiers 
[-Werror,-Wincompatible-pointer-types-discards-qualifiers]
# 00:02:22 make[3]: *** [drivers/nfc/fdp/fdp.o] Error 1
# 00:02:23 make[2]: *** [drivers/nfc/fdp] Error 2
# 00:02:45 make[1]: *** [drivers/nfc] Error 2
# 00:05:31 make: *** [drivers] Error 2

from (for last_good == c3e26b6dc1b4e3e8f57be4f004b1f2a410c5c468)
# reset_artifacts:
-10
# build_abe binutils:
-9
# build_llvm:
-5
# build_abe qemu:
-2
# linux_n_obj:
29761
# linux build successful:
all

Artifacts of last_good build: 
https://ci.linaro.org/job/tcwg_kernel-llvm-bisect-llvm-release-arm-next-allmodconfig/30/artifact/artifacts/build-c3e26b6dc1b4e3e8f57be4f004b1f2a410c5c468/
Artifacts of first_bad build: 
https://ci.linaro.org/job/tcwg_kernel-llvm-bisect-llvm-release-arm-next-allmodconfig/30/artifact/artifacts/build-3d463dd5023b5a58b3c37207d65eeb5acbac2be3/
Build top page/logs: 
https://ci.linaro.org/job/tcwg_kernel-llvm-bisect-llvm-release-arm-next-allmodconfig/30/

Configuration details:
rr[linux_git]="https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git#cb163627e6d32dbaca4d89b2292788cee895b06d";

Reproduce builds:
<cut>
mkdir investigate-linux-3d463dd5023b5a58b3c37207d65eeb5acbac2be3
cd investigate-linux-3d463dd5023b5a58b3c37207d65eeb5acbac2be3

git clone https://git.linaro.org/toolchain/jenkins-scripts

mkdir -p artifacts/manifests
curl -o artifacts/manifests/build-baseline.sh 
https://ci.linaro.org/job/tcwg_kernel-llvm-bisect-llvm-release-arm-next-allmodconfig/30/artifact/artifacts/manifests/build-baseline.sh
 --fail
curl -o artifacts/manifests/build-parameters.sh 
https://ci.linaro.org/job/tcwg_kernel-llvm-bisect-llvm-release-arm-next-allmodconfig/30/artifact/artifacts/manifests/build-parameters.sh
 --fail
curl -o artifacts/test.sh 
https://ci.linaro.org/job/tcwg_kernel-llvm-bisect-llvm-release-arm-next-allmodconfig/30/artifact/artifacts/test.sh
 --fail
chmod +x artifacts/test.sh

# Reproduce the baseline build (build all pre-requisites)
./jenkins-scripts/tcwg_kernel-build.sh @@ artifacts/manifests/build-baseline.sh

# Save baseline build state (which is then restored in artifacts/test.sh)
mkdir -p ./bisect
rsync -a --del --delete-excluded --exclude /bisect/ --exclude /artifacts/ 
--exclude /linux/ ./ ./bisect/baseline/

cd linux

# Reproduce first_bad build
git checkout --detach 3d463dd5023b5a58b3c37207d65eeb5acbac2be3
../artifacts/test.sh

# Reproduce last_good build
git checkout --detach c3e26b6dc1b4e3e8f57be4f004b1f2a410c5c468
../artifacts/test.sh

cd ..
</cut>

History of pending regressions and results: 
https://git.linaro.org/toolchain/ci/base-artifacts.git/log/?h=linaro-local/ci/tcwg_kernel/llvm-release-arm-next-allmodconfig

Artifacts: 
https://ci.linaro.org/job/tcwg_kernel-llvm-bisect-llvm-release-arm-next-allmodconfig/30/artifact/artifacts/
Build log: 
https://ci.linaro.org/job/tcwg_kernel-llvm-bisect-llvm-release-arm-next-allmodconfig/30/consoleText

Full commit (up to 1000 lines):
<cut>
commit 3d463dd5023b5a58b3c37207d65eeb5acbac2be3
Author: Krzysztof Kozlowski <krzysztof.kozlow...@canonical.com>
Date:   Thu Jul 29 12:40:19 2021 +0200

    nfc: fdp: constify several pointers
    
    Several functions do not modify pointed data so arguments and local
    variables can be const for correctness and safety.  This allows also
    making file-scope nci_core_get_config_otp_ram_version array const.
    
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlow...@canonical.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
---
 drivers/nfc/fdp/fdp.c | 18 +++++++++---------
 drivers/nfc/fdp/fdp.h |  2 +-
 drivers/nfc/fdp/i2c.c |  6 +++---
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/nfc/fdp/fdp.c b/drivers/nfc/fdp/fdp.c
index 3f5fba922c4d..c6b3334f24c9 100644
--- a/drivers/nfc/fdp/fdp.c
+++ b/drivers/nfc/fdp/fdp.c
@@ -52,7 +52,7 @@ struct fdp_nci_info {
        u32 limited_otp_version;
        u8 key_index;
 
-       u8 *fw_vsc_cfg;
+       const u8 *fw_vsc_cfg;
        u8 clock_type;
        u32 clock_freq;
 
@@ -65,7 +65,7 @@ struct fdp_nci_info {
        wait_queue_head_t setup_wq;
 };
 
-static u8 nci_core_get_config_otp_ram_version[5] = {
+static const u8 nci_core_get_config_otp_ram_version[5] = {
        0x04,
        NCI_PARAM_ID_FW_RAM_VERSION,
        NCI_PARAM_ID_FW_OTP_VERSION,
@@ -111,7 +111,7 @@ static inline int fdp_nci_patch_cmd(struct nci_dev *ndev, 
u8 type)
 }
 
 static inline int fdp_nci_set_production_data(struct nci_dev *ndev, u8 len,
-                                             char *data)
+                                             const char *data)
 {
        return nci_prop_cmd(ndev, NCI_OP_PROP_SET_PDATA_OID, len, data);
 }
@@ -236,7 +236,7 @@ static int fdp_nci_send_patch(struct nci_dev *ndev, u8 
conn_id, u8 type)
 
 static int fdp_nci_open(struct nci_dev *ndev)
 {
-       struct fdp_nci_info *info = nci_get_drvdata(ndev);
+       const struct fdp_nci_info *info = nci_get_drvdata(ndev);
 
        return info->phy_ops->enable(info->phy);
 }
@@ -260,7 +260,7 @@ static int fdp_nci_request_firmware(struct nci_dev *ndev)
 {
        struct fdp_nci_info *info = nci_get_drvdata(ndev);
        struct device *dev = &info->phy->i2c_dev->dev;
-       u8 *data;
+       const u8 *data;
        int r;
 
        r = request_firmware(&info->ram_patch, FDP_RAM_PATCH_NAME, dev);
@@ -269,7 +269,7 @@ static int fdp_nci_request_firmware(struct nci_dev *ndev)
                return r;
        }
 
-       data = (u8 *) info->ram_patch->data;
+       data = info->ram_patch->data;
        info->ram_patch_version =
                data[FDP_FW_HEADER_SIZE] |
                (data[FDP_FW_HEADER_SIZE + 1] << 8) |
@@ -610,9 +610,9 @@ static int fdp_nci_core_get_config_rsp_packet(struct 
nci_dev *ndev,
 {
        struct fdp_nci_info *info = nci_get_drvdata(ndev);
        struct device *dev = &info->phy->i2c_dev->dev;
-       struct nci_core_get_config_rsp *rsp = (void *) skb->data;
+       const struct nci_core_get_config_rsp *rsp = (void *) skb->data;
        unsigned int i;
-       u8 *p;
+       const u8 *p;
 
        if (rsp->status == NCI_STATUS_OK) {
 
@@ -691,7 +691,7 @@ static const struct nci_ops nci_ops = {
 int fdp_nci_probe(struct fdp_i2c_phy *phy, const struct nfc_phy_ops *phy_ops,
                        struct nci_dev **ndevp, int tx_headroom,
                        int tx_tailroom, u8 clock_type, u32 clock_freq,
-                       u8 *fw_vsc_cfg)
+                       const u8 *fw_vsc_cfg)
 {
        struct device *dev = &phy->i2c_dev->dev;
        struct fdp_nci_info *info;
diff --git a/drivers/nfc/fdp/fdp.h b/drivers/nfc/fdp/fdp.h
index dc048d4b977e..2e9161a4d7bf 100644
--- a/drivers/nfc/fdp/fdp.h
+++ b/drivers/nfc/fdp/fdp.h
@@ -23,7 +23,7 @@ struct fdp_i2c_phy {
 
 int fdp_nci_probe(struct fdp_i2c_phy *phy, const struct nfc_phy_ops *phy_ops,
                  struct nci_dev **ndev, int tx_headroom, int tx_tailroom,
-                 u8 clock_type, u32 clock_freq, u8 *fw_vsc_cfg);
+                 u8 clock_type, u32 clock_freq, const u8 *fw_vsc_cfg);
 void fdp_nci_remove(struct nci_dev *ndev);
 
 #endif /* __LOCAL_FDP_H_ */
diff --git a/drivers/nfc/fdp/i2c.c b/drivers/nfc/fdp/i2c.c
index 98e1876c9468..051c43a2a52f 100644
--- a/drivers/nfc/fdp/i2c.c
+++ b/drivers/nfc/fdp/i2c.c
@@ -36,7 +36,7 @@
        print_hex_dump(KERN_DEBUG, prefix": ", DUMP_PREFIX_OFFSET,      \
                       16, 1, (skb)->data, (skb)->len, 0)
 
-static void fdp_nci_i2c_reset(struct fdp_i2c_phy *phy)
+static void fdp_nci_i2c_reset(const struct fdp_i2c_phy *phy)
 {
        /* Reset RST/WakeUP for at least 100 micro-second */
        gpiod_set_value_cansleep(phy->power_gpio, FDP_POWER_OFF);
@@ -47,7 +47,7 @@ static void fdp_nci_i2c_reset(struct fdp_i2c_phy *phy)
 
 static int fdp_nci_i2c_enable(void *phy_id)
 {
-       struct fdp_i2c_phy *phy = phy_id;
+       const struct fdp_i2c_phy *phy = phy_id;
 
        fdp_nci_i2c_reset(phy);
 
@@ -56,7 +56,7 @@ static int fdp_nci_i2c_enable(void *phy_id)
 
 static void fdp_nci_i2c_disable(void *phy_id)
 {
-       struct fdp_i2c_phy *phy = phy_id;
+       const struct fdp_i2c_phy *phy = phy_id;
 
        fdp_nci_i2c_reset(phy);
 }
</cut>
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to