Merge tag 'char-misc-5.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Pull char/misc driver fixes Greg KH:
"Here are some small char/misc driver fixes for 5.3-rc4.

Two of these are for the habanalabs driver for issues found when
running on a big-endian system (are they still alive?) The others are
tiny fixes reported by people, and a MAINTAINERS update about the
location of the fpga development tree.

All of these have been in linux-next for a while with no reported
issues"

* tag 'char-misc-5.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
coresight: Fix DEBUG_LOCKS_WARN_ON for uninitialized attribute
MAINTAINERS: Move linux-fpga tree to new location
nvmem: Use the same permissions for eeprom as for nvmem
habanalabs: fix host memory polling in BE architecture
habanalabs: fix F/W download in BE architecture

+35 -28
+1 -1
MAINTAINERS
··· 6344 M: Moritz Fischer <mdf@kernel.org> 6345 L: linux-fpga@vger.kernel.org 6346 S: Maintained 6347 - T: git git://git.kernel.org/pub/scm/linux/kernel/git/atull/linux-fpga.git 6348 Q: http://patchwork.kernel.org/project/linux-fpga/list/ 6349 F: Documentation/fpga/ 6350 F: Documentation/driver-api/fpga/
··· 6344 M: Moritz Fischer <mdf@kernel.org> 6345 L: linux-fpga@vger.kernel.org 6346 S: Maintained 6347 + T: git git://git.kernel.org/pub/scm/linux/kernel/git/mdf/linux-fpga.git 6348 Q: http://patchwork.kernel.org/project/linux-fpga/list/ 6349 F: Documentation/fpga/ 6350 F: Documentation/driver-api/fpga/
+1
drivers/hwtracing/coresight/coresight-etm-perf.c
··· 544 /* See function coresight_get_sink_by_id() to know where this is used */ 545 hash = hashlen_hash(hashlen_string(NULL, name)); 546 547 ea->attr.attr.name = devm_kstrdup(dev, name, GFP_KERNEL); 548 if (!ea->attr.attr.name) 549 return -ENOMEM;
··· 544 /* See function coresight_get_sink_by_id() to know where this is used */ 545 hash = hashlen_hash(hashlen_string(NULL, name)); 546 547 + sysfs_attr_init(&ea->attr.attr); 548 ea->attr.attr.name = devm_kstrdup(dev, name, GFP_KERNEL); 549 if (!ea->attr.attr.name) 550 return -ENOMEM;
+1 -1
drivers/misc/habanalabs/command_submission.c
··· 683 684 rc = hl_poll_timeout_memory(hdev, 685 &ctx->thread_ctx_switch_wait_token, tmp, (tmp == 1), 686 - 100, jiffies_to_usecs(hdev->timeout_jiffies)); 687 688 if (rc == -ETIMEDOUT) { 689 dev_err(hdev->dev,
··· 683 684 rc = hl_poll_timeout_memory(hdev, 685 &ctx->thread_ctx_switch_wait_token, tmp, (tmp == 1), 686 + 100, jiffies_to_usecs(hdev->timeout_jiffies), false); 687 688 if (rc == -ETIMEDOUT) { 689 dev_err(hdev->dev,
+4 -18
drivers/misc/habanalabs/firmware_if.c
··· 24 { 25 const struct firmware *fw; 26 const u64 *fw_data; 27 - size_t fw_size, i; 28 int rc; 29 30 rc = request_firmware(&fw, fw_name, hdev->dev); ··· 45 46 fw_data = (const u64 *) fw->data; 47 48 - if ((fw->size % 8) != 0) 49 - fw_size -= 8; 50 - 51 - for (i = 0 ; i < fw_size ; i += 8, fw_data++, dst += 8) { 52 - if (!(i & (0x80000 - 1))) { 53 - dev_dbg(hdev->dev, 54 - "copied so far %zu out of %zu for %s firmware", 55 - i, fw_size, fw_name); 56 - usleep_range(20, 100); 57 - } 58 - 59 - writeq(*fw_data, dst); 60 - } 61 - 62 - if ((fw->size % 8) != 0) 63 - writel(*(const u32 *) fw_data, dst); 64 65 out: 66 release_firmware(fw); ··· 97 } 98 99 rc = hl_poll_timeout_memory(hdev, &pkt->fence, tmp, 100 - (tmp == ARMCP_PACKET_FENCE_VAL), 1000, timeout); 101 102 hl_hw_queue_inc_ci_kernel(hdev, hw_queue_id); 103
··· 24 { 25 const struct firmware *fw; 26 const u64 *fw_data; 27 + size_t fw_size; 28 int rc; 29 30 rc = request_firmware(&fw, fw_name, hdev->dev); ··· 45 46 fw_data = (const u64 *) fw->data; 47 48 + memcpy_toio(dst, fw_data, fw_size); 49 50 out: 51 release_firmware(fw); ··· 112 } 113 114 rc = hl_poll_timeout_memory(hdev, &pkt->fence, tmp, 115 + (tmp == ARMCP_PACKET_FENCE_VAL), 1000, 116 + timeout, true); 117 118 hl_hw_queue_inc_ci_kernel(hdev, hw_queue_id); 119
+3 -2
drivers/misc/habanalabs/goya/goya.c
··· 2864 } 2865 2866 rc = hl_poll_timeout_memory(hdev, fence_ptr, tmp, 2867 - (tmp == GOYA_QMAN0_FENCE_VAL), 1000, timeout); 2868 2869 hl_hw_queue_inc_ci_kernel(hdev, GOYA_QUEUE_ID_DMA_0); 2870 ··· 2946 } 2947 2948 rc = hl_poll_timeout_memory(hdev, fence_ptr, tmp, (tmp == fence_val), 2949 - 1000, GOYA_TEST_QUEUE_WAIT_USEC); 2950 2951 hl_hw_queue_inc_ci_kernel(hdev, hw_queue_id); 2952
··· 2864 } 2865 2866 rc = hl_poll_timeout_memory(hdev, fence_ptr, tmp, 2867 + (tmp == GOYA_QMAN0_FENCE_VAL), 1000, 2868 + timeout, true); 2869 2870 hl_hw_queue_inc_ci_kernel(hdev, GOYA_QUEUE_ID_DMA_0); 2871 ··· 2945 } 2946 2947 rc = hl_poll_timeout_memory(hdev, fence_ptr, tmp, (tmp == fence_val), 2948 + 1000, GOYA_TEST_QUEUE_WAIT_USEC, true); 2949 2950 hl_hw_queue_inc_ci_kernel(hdev, hw_queue_id); 2951
+14 -2
drivers/misc/habanalabs/habanalabs.h
··· 1062 /* 1063 * address in this macro points always to a memory location in the 1064 * host's (server's) memory. That location is updated asynchronously 1065 - * either by the direct access of the device or by another core 1066 */ 1067 - #define hl_poll_timeout_memory(hdev, addr, val, cond, sleep_us, timeout_us) \ 1068 ({ \ 1069 ktime_t __timeout; \ 1070 /* timeout should be longer when working with simulator */ \ ··· 1085 /* Verify we read updates done by other cores or by device */ \ 1086 mb(); \ 1087 (val) = *((u32 *) (uintptr_t) (addr)); \ 1088 if (cond) \ 1089 break; \ 1090 if (timeout_us && ktime_compare(ktime_get(), __timeout) > 0) { \ 1091 (val) = *((u32 *) (uintptr_t) (addr)); \ 1092 break; \ 1093 } \ 1094 if (sleep_us) \
··· 1062 /* 1063 * address in this macro points always to a memory location in the 1064 * host's (server's) memory. That location is updated asynchronously 1065 + * either by the direct access of the device or by another core. 1066 + * 1067 + * To work both in LE and BE architectures, we need to distinguish between the 1068 + * two states (device or another core updates the memory location). Therefore, 1069 + * if mem_written_by_device is true, the host memory being polled will be 1070 + * updated directly by the device. If false, the host memory being polled will 1071 + * be updated by host CPU. Required so host knows whether or not the memory 1072 + * might need to be byte-swapped before returning value to caller. 1073 */ 1074 + #define hl_poll_timeout_memory(hdev, addr, val, cond, sleep_us, timeout_us, \ 1075 + mem_written_by_device) \ 1076 ({ \ 1077 ktime_t __timeout; \ 1078 /* timeout should be longer when working with simulator */ \ ··· 1077 /* Verify we read updates done by other cores or by device */ \ 1078 mb(); \ 1079 (val) = *((u32 *) (uintptr_t) (addr)); \ 1080 + if (mem_written_by_device) \ 1081 + (val) = le32_to_cpu(val); \ 1082 if (cond) \ 1083 break; \ 1084 if (timeout_us && ktime_compare(ktime_get(), __timeout) > 0) { \ 1085 (val) = *((u32 *) (uintptr_t) (addr)); \ 1086 + if (mem_written_by_device) \ 1087 + (val) = le32_to_cpu(val); \ 1088 break; \ 1089 } \ 1090 if (sleep_us) \
+11 -4
drivers/nvmem/nvmem-sysfs.c
··· 224 if (!config->base_dev) 225 return -EINVAL; 226 227 - if (nvmem->read_only) 228 - nvmem->eeprom = bin_attr_ro_root_nvmem; 229 - else 230 - nvmem->eeprom = bin_attr_rw_root_nvmem; 231 nvmem->eeprom.attr.name = "eeprom"; 232 nvmem->eeprom.size = nvmem->size; 233 #ifdef CONFIG_DEBUG_LOCK_ALLOC
··· 224 if (!config->base_dev) 225 return -EINVAL; 226 227 + if (nvmem->read_only) { 228 + if (config->root_only) 229 + nvmem->eeprom = bin_attr_ro_root_nvmem; 230 + else 231 + nvmem->eeprom = bin_attr_ro_nvmem; 232 + } else { 233 + if (config->root_only) 234 + nvmem->eeprom = bin_attr_rw_root_nvmem; 235 + else 236 + nvmem->eeprom = bin_attr_rw_nvmem; 237 + } 238 nvmem->eeprom.attr.name = "eeprom"; 239 nvmem->eeprom.size = nvmem->size; 240 #ifdef CONFIG_DEBUG_LOCK_ALLOC