Hi Satya,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on block/for-next]
[also build test WARNING on dm/for-next mkp-scsi/for-next scsi/for-next 
linux/master linus/master v5.12-rc4 next-20210325]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Satya-Tangirala/ensure-bios-aren-t-split-in-middle-of-crypto-data-unit/20210326-053016
base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git 
for-next
config: i386-randconfig-r016-20210325 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # 
https://github.com/0day-ci/linux/commit/9b8b677bfdba70695b8d01ee318ef552fcc0392e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Satya-Tangirala/ensure-bios-aren-t-split-in-middle-of-crypto-data-unit/20210326-053016
        git checkout 9b8b677bfdba70695b8d01ee318ef552fcc0392e
        # save the attached .config to linux build tree
        make W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All warnings (new ones prefixed by >>):

>> block/keyslot-manager.c:457:6: warning: no previous prototype for 
>> 'blk_ksm_restrict_dus_to_queue_limits' [-Wmissing-prototypes]
     457 | void blk_ksm_restrict_dus_to_queue_limits(struct blk_keyslot_manager 
*ksm,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/blk_ksm_restrict_dus_to_queue_limits +457 block/keyslot-manager.c

   452  
   453  /*
   454   * Restrict the supported data unit sizes of the ksm based on the 
request queue
   455   * limits
   456   */
 > 457  void blk_ksm_restrict_dus_to_queue_limits(struct blk_keyslot_manager 
 > *ksm,
   458                                            struct queue_limits *limits)
   459  {
   460          /* The largest possible data unit size we support is PAGE_SIZE. 
*/
   461          unsigned long largest_dus = PAGE_SIZE;
   462          unsigned int dus_allowed_mask;
   463          int i;
   464          bool dus_was_restricted = false;
   465  
   466          /*
   467           * If the queue doesn't support SG gaps, a bio might get split 
in the
   468           * middle of a data unit. So require SG gap support for inline
   469           * encryption for any data unit size larger than a single 
sector.
   470           */
   471          if (limits->virt_boundary_mask)
   472                  largest_dus = SECTOR_SIZE;
   473  
   474          /*
   475           * If the queue has chunk_sectors, the bio might be split 
within a data
   476           * unit if the data unit size is larger than a single sector. 
So only
   477           * support a single sector data unit size in this case.
   478           */
   479          if (limits->chunk_sectors)
   480                  largest_dus = SECTOR_SIZE;
   481  
   482          /*
   483           * Any bio sent to the queue must be allowed to contain at 
least a
   484           * data_unit_size worth of data. Since each segment in a bio 
contains
   485           * at least a SECTOR_SIZE worth of data, it's sufficient that
   486           * queue_max_segments(q) * SECTOR_SIZE >= data_unit_size. So 
disable
   487           * all data_unit_sizes not satisfiable.
   488           */
   489          largest_dus = min(largest_dus,
   490                          1UL << (fls(limits->max_segments) - 1 + 
SECTOR_SHIFT));
   491  
   492          /* Clear all unsupported data unit sizes. */
   493          dus_allowed_mask = (largest_dus << 1) - 1;
   494          for (i = 0; i < ARRAY_SIZE(ksm->crypto_modes_supported); i++) {
   495                  if (ksm->crypto_modes_supported[i] & 
(~dus_allowed_mask))
   496                          dus_was_restricted = true;
   497                  ksm->crypto_modes_supported[i] &= dus_allowed_mask;
   498          }
   499  
   500          if (dus_was_restricted) {
   501                  pr_warn("Disallowed use of encryption data unit sizes 
above %lu bytes with inline encryption hardware because of device request queue 
limits.\n",
   502                          largest_dus);
   503          }
   504  }
   505  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to