diff --git a/drivers/misc/sdma-dae/Kconfig b/drivers/misc/sdma-dae/Kconfig index 5c694b108b408eba07bdde3f823b69ff4c50b412..65c0381b54f5df2ca5faef1cb5585819453d3fd0 100644 --- a/drivers/misc/sdma-dae/Kconfig +++ b/drivers/misc/sdma-dae/Kconfig @@ -1,9 +1,9 @@ config SDMA_DAE - tristate "DAE SDMA core support" - depends on ARM64 - default m + tristate "SDMA-DAE driver for SDMA hardware" + depends on ARM64 && NUMA + default n help - Core support for DAE SDMA. + Kernel driver of SDMA hardware. The driver depands on ARM64. To compile SDMA driver as module, choose m here. module will be called sdma_dae. diff --git a/drivers/misc/sdma-dae/sdma_main.c b/drivers/misc/sdma-dae/sdma_main.c index 4f7e057fb6f8c18513954c9f9e96d54607caf663..1b2c4ac491cad237107757ce3453a8447f8df02a 100644 --- a/drivers/misc/sdma-dae/sdma_main.c +++ b/drivers/misc/sdma-dae/sdma_main.c @@ -342,15 +342,23 @@ static int sdma_device_probe(struct platform_device *pdev) { struct hisi_sdma_device *psdma_dev; u32 device_num; + int node_id; int ret; device_num = hisi_sdma_core_device.sdma_device_num; - psdma_dev = kzalloc_node(sizeof(*psdma_dev), GFP_KERNEL, pdev->dev.numa_node); + if (!node_online(pdev->dev.numa_node)) { + pr_info("numa_node %d not online, register sdma%d failed\n", pdev->dev.numa_node, + device_num); + node_id = 0; + } else + node_id = pdev->dev.numa_node; + + psdma_dev = kzalloc_node(sizeof(*psdma_dev), GFP_KERNEL, node_id); if (!psdma_dev) return -ENOMEM; psdma_dev->idx = device_num; - psdma_dev->node_idx = pdev->dev.numa_node; + psdma_dev->node_idx = node_id; ret = parse_sdma(psdma_dev, pdev); if (ret < 0) goto free_dev;