paulgazz / kmax

A collection of analysis tools for Kconfig and Kbuild constraints.
40 stars 18 forks source link

Invalid value for integer configs in the config file generated by kismet #255

Closed Yujie-Liu closed 1 month ago

Yujie-Liu commented 3 months ago
$ kismet --version
kmax 4.5.3
$ git remote add pinchartl https://git.kernel.org/pub/scm/linux/kernel/git/pinchartl/linux.git
$ git fetch pinchartl rpi/v6.8/isp/v2
$ git checkout ccf04478fd461b0517a703743a57a65ca304faf2
$ kismet -a alpha --selectees CONFIG_BCM2835_VCHIQ_MMAL --selectors CONFIG_VIDEO_ISP_BCM2835
...
INFO: Test generation was done in 7.04sec. 1 test cases were generated for 1 select constructs with unmet direct dependency alarms.
INFO: Verifying unmet direct dependency alarms using 1 test cases for 1 constructs with unmet direct dependency alarms.
INFO: 09:14:24 Verification from test cases progress:  1/1 (%100).
INFO: Verification was done in 4.60sec. 1 test cases were checked for 1 constructs. 1 of 1 alarms were verified to be true alarms (at least one related test case verified the alarm).
INFO: During verification: for 1 constructs, all test cases verified the related alarm. For 0 constructs, test cases had contradictory results. For 0 constructs, no test case verified the alarm.
INFO: Writing the aggregated summary txt to "kismet_summary_alpha.txt".
INFO: Aggregated summary txt was written.
INFO: Writing the summary csv to "kismet_summary_alpha.csv".
INFO: Summary csv was written.

$ cp kismet-test-cases/udd-alpha-CONFIG_BCM2835_VCHIQ_MMAL-CONFIG_VIDEO_ISP_BCM2835-0-0.config .config
$ make ARCH=alpha olddefconfig
.config:251:warning: symbol value 'n' invalid for SATA_MOBILE_LPM_POLICY
.config:347:warning: symbol value 'n' invalid for PSTORE_BLK_MAX_REASON
.config:361:warning: symbol value 'n' invalid for INPUT_MOUSEDEV_SCREEN_Y
.config:430:warning: symbol value 'n' invalid for KFENCE_SAMPLE_INTERVAL
.config:599:warning: symbol value 'n' invalid for AIC79XX_DEBUG_MASK
.config:617:warning: symbol value 'n' invalid for DRM_XE_JOB_TIMEOUT_MIN
.config:650:warning: symbol value 'n' invalid for CRYPTO_DEV_QCE_SW_MAX_LEN
.config:751:warning: symbol value 'n' invalid for PANEL_LCD_CHARSET
.config:794:warning: symbol value 'n' invalid for SND_AC97_POWER_SAVE_DEFAULT
.config:841:warning: symbol value 'n' invalid for MAGIC_SYSRQ_DEFAULT_ENABLE
.config:857:warning: symbol value 'n' invalid for DRM_I915_MAX_REQUEST_BUSYWAIT
.config:899:warning: symbol value 'n' invalid for DRM_XE_PREEMPT_TIMEOUT_MIN
...

Take SATA_MOBILE_LPM_POLICY as an example, it is of integer type.

$ less drivers/ata/Kconfig

config SATA_MOBILE_LPM_POLICY
        int "Default SATA Link Power Management policy for low power chipsets"
        range 0 4
        default 0
        depends on SATA_AHCI
        help
          Select the Default SATA Link Power Management (LPM) policy to use
          for chipsets / "South Bridges" supporting low-power modes. Such
          chipsets are typically found on most laptops but desktops and
          servers now also widely use chipsets supporting low power modes.

          The value set has the following meanings:
                0 => Keep firmware settings
                1 => Maximum performance
                2 => Medium power
                3 => Medium power with Device Initiated PM enabled
                4 => Minimum power

          Note "Minimum power" is known to cause issues, including disk
          corruption, with some disks and should not be used.

In the config file generated by kismet, we have:

$ grep SATA_MOBILE_LPM_POLICY kismet-test-cases/udd-alpha-CONFIG_BCM2835_VCHIQ_MMAL-CONFIG_VIDEO_ISP_BCM2835-0-0.config
# CONFIG_SATA_MOBILE_LPM_POLICY is not set

After calling "make olddefconfig" to refresh the .config, this config is removed from the .config file:

$ cp kismet-test-cases/udd-alpha-CONFIG_BCM2835_VCHIQ_MMAL-CONFIG_VIDEO_ISP_BCM2835-0-0.config .config
$ make ARCH=alpha olddefconfig
$ grep SATA_MOBILE_LPM_POLICY .config
<-- nothing
paulgazz commented 1 month ago

Fixed by #270 Duplicated by #269