Hi Jonas, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on next-20180309] [cannot apply to linus/master v4.16-rc4 v4.16-rc3 v4.16-rc2 v4.16-rc5] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Jonas-Rabenstein/block-sed-opal-support-write-to-shadow-mbr/20180314-184749 reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) block/sed-opal.c:381:20: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [unsigned] [usertype] align @@ got ed long long [unsigned] [usertype] align @@ block/sed-opal.c:381:20: expected unsigned long long [unsigned] [usertype] align block/sed-opal.c:381:20: got restricted __be64 const [usertype] alignment_granularity block/sed-opal.c:382:25: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [unsigned] [usertype] lowest_lba @@ got ed long long [unsigned] [usertype] lowest_lba @@ block/sed-opal.c:382:25: expected unsigned long long [unsigned] [usertype] lowest_lba block/sed-opal.c:382:25: got restricted __be64 const [usertype] lowest_aligned_lba >> block/sed-opal.c:1526:58: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] <asn:1>*from @@ got unsvoid const [noderef] <asn:1>*from @@ block/sed-opal.c:1526:58: expected void const [noderef] <asn:1>*from block/sed-opal.c:1526:58: got unsigned char const [usertype] * >> block/sed-opal.c:2100:14: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] <asn:1>*<noident> @@ got onst volatile [noderef] <asn:1>*<noident> @@ block/sed-opal.c:2100:14: expected void const volatile [noderef] <asn:1>*<noident> block/sed-opal.c:2100:14: got unsigned char const [usertype] *data vim +1526 block/sed-opal.c 1493 1494 static int write_shadow_mbr(struct opal_dev *dev, void *data) 1495 { 1496 struct opal_shadow_mbr *shadow = data; 1497 size_t off; 1498 u64 len; 1499 int err = 0; 1500 u8 *payload; 1501 1502 /* FIXME: this is the maximum we can use for IO_BUFFER_LENGTH=2048. 1503 * Instead of having constant, it would be nice to compute the 1504 * actual value depending on IO_BUFFER_LENGTH 1505 */ 1506 len = 1950; 1507 1508 /* do the actual transmission(s) */ 1509 for (off = 0 ; off < shadow->size; off += len) { 1510 len = min(len, shadow->size - off); 1511 1512 pr_debug("MBR: write bytes %zu+%llu/%llu\n", 1513 off, len, shadow->size); 1514 err = start_opal_cmd(dev, opaluid[OPAL_MBR], 1515 opalmethod[OPAL_SET]); 1516 add_token_u8(&err, dev, OPAL_STARTNAME); 1517 add_token_u8(&err, dev, OPAL_WHERE); 1518 add_token_u64(&err, dev, shadow->offset + off); 1519 add_token_u8(&err, dev, OPAL_ENDNAME); 1520 1521 add_token_u8(&err, dev, OPAL_STARTNAME); 1522 add_token_u8(&err, dev, OPAL_VALUES); 1523 payload = add_bytestring_header(&err, dev, len); 1524 if (!payload) 1525 break; > 1526 if (copy_from_user(payload, shadow->data + off, len)) 1527 err = -EFAULT; 1528 1529 add_token_u8(&err, dev, OPAL_ENDNAME); 1530 if (err) 1531 break; 1532 1533 err = finalize_and_send(dev, parse_and_check_status); 1534 if (err) 1535 break; 1536 } 1537 return err; 1538 } 1539 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation