Feature #7304
closed
Allow users to reject verification objects of large sizes
Added by Evgeny Novikov over 8 years ago.
Updated over 8 years ago.
Category:
Program fragments generation
Published in build:
753dd6b
Description
We already realized that large modules are hard to prepare for verification and to verify. In particular they usually require very much resources for all non-trivial cases. Sometimes it even can prevent other modules from checking, e.g. due to hang ups and resource exhausting.
Instead of investigating some implicit ways to reject such the modules, we decided to supply a new straightforward option that will allow to reject corresponding verification objects early if their LOCs exceed the specified maximum one. Then we will have more chances to verify all modules even after some changes in tools/specifications.
To have a way to experiment with these large modules nevertheless it has sense to support the supplementary option that reject verification objects that occupies less LOCs that the minimum one.
In accordance with the table attached in
#7303 (it shows LOCs of Linux 3.14 modules) it has sense to reject by default all modules which sizes exceed 30000 LOCs. There are just 25 such modules (~0.6% of 4356 in total):
- drivers/gpu/drm/radeon/radeon.ko (148557)
- fs/btrfs/btrfs.ko (99032)
- drivers/gpu/drm/nouveau/nouveau.ko (89102)
- fs/xfs/xfs.ko (88552)
- drivers/scsi/lpfc/lpfc.ko (71479)
- drivers/gpu/drm/i915/i915.ko (69131)
- drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko (67306)
- drivers/staging/rtl8188eu/r8188eu.ko (67262)
- fs/ocfs2/ocfs2.ko (56715)
- drivers/scsi/qla2xxx/qla2xxx.ko (53188)
- drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko (52419)
- drivers/staging/rtl8821ae/rtl8821ae.ko (47027)
- drivers/scsi/bfa/bfa.ko (45485)
- drivers/infiniband/hw/qib/ib_qib.ko (44819)
- net/mac80211/mac80211.ko (44534)
- drivers/net/wireless/b43/b43.ko (44386)
- drivers/staging/lustre/lustre/ptlrpc/ptlrpc.ko (42765)
- fs/ext4/ext4.ko (40943)
- fs/cifs/cifs.ko (40610)
- drivers/isdn/hisax/hisax.ko (36218)
- net/ipv6/ipv6.ko (35632)
- drivers/staging/vt6655/vt6655_stage.ko (35295)
- net/sctp/sctp.ko (35122)
- fs/ubifs/ubifs.ko (32011)
- net/bluetooth/bluetooth.ko (30584)
For some of them it is already known that EMG needs more than 300 MB (sometimes much more, e.g. more than 4 GB for nouveau.ko). Weaver needs ~500 MB for radeon.ko even without any real instrumentation. These issues should be addressed in other feature requests and definitely they should not affect all other ~99.4% of modules.
- Status changed from New to Resolved
Resolved in branch 'modules_reject_by_loc'.
Parameter 'maximum verification object size' is located at the root of the JSON config file. Also, the parameter was added to presets.
- Status changed from Resolved to Closed
- Published in build set to 2174e29
I merged the branch to master in 2174e29. Everybody needs to update their jobs to specify the maximum verification object size.
- Status changed from Closed to Resolved
Evgeny Novikov wrote:
Everybody needs to update their jobs to specify the maximum verification object size.
Do you mean "everybody needs to update job to take benefits from the parameter" or that it became mandatory?
Alexey Khoroshilov wrote:
Evgeny Novikov wrote:
Everybody needs to update their jobs to specify the maximum verification object size.
Do you mean "everybody needs to update job to take benefits from the parameter" or that it became mandatory?
In all new preset jobs it is specified by default. So after update one will use it by default.
To experiment with large modules it is required to change jobs respectively. For instance, one should be able to reject all small modules. Unfortunately it turned out that the corresponding option wasn't implemented still although it was mentioned originally in the description.
Improved in the 'reject_by_loc_minimum' branch.
- Status changed from Resolved to Closed
- Published in build changed from 2174e29 to 753dd6b
I merged the branch into master in 753dd6b. The supplementary parameter is minimum verification object size. The default parameter rejecting large modules is specified in all preset jobs.
Also available in: Atom
PDF