mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 13:44:15 +08:00
habanalabs/gaudi: Set DMA5 QMAN internal
DMA5 QMAN is designated to be used for reduction process, hence it will be no longer configured as external queue. Signed-off-by: Ofir Bitton <obitton@habana.ai> Reviewed-by: Oded Gabbay <ogabbay@kernel.org> Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
This commit is contained in:
parent
5fe1c17ddf
commit
0940cabafd
@ -38,7 +38,7 @@
|
||||
*
|
||||
* MMU is always enabled.
|
||||
*
|
||||
* QMAN DMA channels 0,1,5 (PCI DMAN):
|
||||
* QMAN DMA channels 0,1 (PCI DMAN):
|
||||
* - DMA is not secured.
|
||||
* - PQ and CQ are secured.
|
||||
* - CP is secured: The driver needs to parse CB but WREG should be allowed
|
||||
@ -55,7 +55,7 @@
|
||||
* idle)
|
||||
* - MMU page tables area clear (happens on init)
|
||||
*
|
||||
* QMAN DMA 2-4,6,7, TPC, MME, NIC:
|
||||
* QMAN DMA 2-7, TPC, MME, NIC:
|
||||
* PQ is secured and is located on the Host (HBM CON TPC3 bug)
|
||||
* CQ, CP and the engine are not secured
|
||||
*
|
||||
@ -113,12 +113,12 @@ static const char gaudi_irq_name[GAUDI_MSI_ENTRIES][GAUDI_MAX_STRING_LEN] = {
|
||||
static const u8 gaudi_dma_assignment[GAUDI_DMA_MAX] = {
|
||||
[GAUDI_PCI_DMA_1] = GAUDI_ENGINE_ID_DMA_0,
|
||||
[GAUDI_PCI_DMA_2] = GAUDI_ENGINE_ID_DMA_1,
|
||||
[GAUDI_PCI_DMA_3] = GAUDI_ENGINE_ID_DMA_5,
|
||||
[GAUDI_HBM_DMA_1] = GAUDI_ENGINE_ID_DMA_2,
|
||||
[GAUDI_HBM_DMA_2] = GAUDI_ENGINE_ID_DMA_3,
|
||||
[GAUDI_HBM_DMA_3] = GAUDI_ENGINE_ID_DMA_4,
|
||||
[GAUDI_HBM_DMA_4] = GAUDI_ENGINE_ID_DMA_6,
|
||||
[GAUDI_HBM_DMA_5] = GAUDI_ENGINE_ID_DMA_7
|
||||
[GAUDI_HBM_DMA_4] = GAUDI_ENGINE_ID_DMA_5,
|
||||
[GAUDI_HBM_DMA_5] = GAUDI_ENGINE_ID_DMA_6,
|
||||
[GAUDI_HBM_DMA_6] = GAUDI_ENGINE_ID_DMA_7
|
||||
};
|
||||
|
||||
static const u8 gaudi_cq_assignment[NUMBER_OF_CMPLT_QUEUES] = {
|
||||
@ -130,10 +130,6 @@ static const u8 gaudi_cq_assignment[NUMBER_OF_CMPLT_QUEUES] = {
|
||||
[5] = GAUDI_QUEUE_ID_DMA_1_1,
|
||||
[6] = GAUDI_QUEUE_ID_DMA_1_2,
|
||||
[7] = GAUDI_QUEUE_ID_DMA_1_3,
|
||||
[8] = GAUDI_QUEUE_ID_DMA_5_0,
|
||||
[9] = GAUDI_QUEUE_ID_DMA_5_1,
|
||||
[10] = GAUDI_QUEUE_ID_DMA_5_2,
|
||||
[11] = GAUDI_QUEUE_ID_DMA_5_3
|
||||
};
|
||||
|
||||
static const u16 gaudi_packet_sizes[MAX_PACKET_ID] = {
|
||||
@ -249,10 +245,10 @@ static enum hl_queue_type gaudi_queue_type[GAUDI_QUEUE_ID_SIZE] = {
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_4_1 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_4_2 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_4_3 */
|
||||
QUEUE_TYPE_EXT, /* GAUDI_QUEUE_ID_DMA_5_0 */
|
||||
QUEUE_TYPE_EXT, /* GAUDI_QUEUE_ID_DMA_5_1 */
|
||||
QUEUE_TYPE_EXT, /* GAUDI_QUEUE_ID_DMA_5_2 */
|
||||
QUEUE_TYPE_EXT, /* GAUDI_QUEUE_ID_DMA_5_3 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_5_0 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_5_1 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_5_2 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_5_3 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_6_0 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_6_1 */
|
||||
QUEUE_TYPE_INT, /* GAUDI_QUEUE_ID_DMA_6_2 */
|
||||
@ -978,8 +974,7 @@ static int gaudi_alloc_internal_qmans_pq_mem(struct hl_device *hdev)
|
||||
q = &gaudi->internal_qmans[i];
|
||||
|
||||
switch (i) {
|
||||
case GAUDI_QUEUE_ID_DMA_2_0 ... GAUDI_QUEUE_ID_DMA_4_3:
|
||||
case GAUDI_QUEUE_ID_DMA_6_0 ... GAUDI_QUEUE_ID_DMA_7_3:
|
||||
case GAUDI_QUEUE_ID_DMA_2_0 ... GAUDI_QUEUE_ID_DMA_7_3:
|
||||
q->pq_size = HBM_DMA_QMAN_SIZE_IN_BYTES;
|
||||
break;
|
||||
case GAUDI_QUEUE_ID_MME_0_0 ... GAUDI_QUEUE_ID_MME_1_3:
|
||||
@ -3424,26 +3419,26 @@ static void gaudi_ring_doorbell(struct hl_device *hdev, u32 hw_queue_id, u32 pi)
|
||||
break;
|
||||
|
||||
case GAUDI_QUEUE_ID_DMA_5_0...GAUDI_QUEUE_ID_DMA_5_3:
|
||||
dma_id = gaudi_dma_assignment[GAUDI_PCI_DMA_3];
|
||||
dma_qm_offset = dma_id * DMA_QMAN_OFFSET;
|
||||
q_off = dma_qm_offset + ((hw_queue_id - 1) & 0x3) * 4;
|
||||
db_reg_offset = mmDMA0_QM_PQ_PI_0 + q_off;
|
||||
break;
|
||||
|
||||
case GAUDI_QUEUE_ID_DMA_6_0...GAUDI_QUEUE_ID_DMA_6_3:
|
||||
dma_id = gaudi_dma_assignment[GAUDI_HBM_DMA_4];
|
||||
dma_qm_offset = dma_id * DMA_QMAN_OFFSET;
|
||||
q_off = dma_qm_offset + ((hw_queue_id - 1) & 0x3) * 4;
|
||||
db_reg_offset = mmDMA0_QM_PQ_PI_0 + q_off;
|
||||
break;
|
||||
|
||||
case GAUDI_QUEUE_ID_DMA_7_0...GAUDI_QUEUE_ID_DMA_7_3:
|
||||
case GAUDI_QUEUE_ID_DMA_6_0...GAUDI_QUEUE_ID_DMA_6_3:
|
||||
dma_id = gaudi_dma_assignment[GAUDI_HBM_DMA_5];
|
||||
dma_qm_offset = dma_id * DMA_QMAN_OFFSET;
|
||||
q_off = dma_qm_offset + ((hw_queue_id - 1) & 0x3) * 4;
|
||||
db_reg_offset = mmDMA0_QM_PQ_PI_0 + q_off;
|
||||
break;
|
||||
|
||||
case GAUDI_QUEUE_ID_DMA_7_0...GAUDI_QUEUE_ID_DMA_7_3:
|
||||
dma_id = gaudi_dma_assignment[GAUDI_HBM_DMA_6];
|
||||
dma_qm_offset = dma_id * DMA_QMAN_OFFSET;
|
||||
q_off = dma_qm_offset + ((hw_queue_id - 1) & 0x3) * 4;
|
||||
db_reg_offset = mmDMA0_QM_PQ_PI_0 + q_off;
|
||||
break;
|
||||
|
||||
case GAUDI_QUEUE_ID_CPU_PQ:
|
||||
if (gaudi->hw_cap_initialized & HW_CAP_CPU_Q)
|
||||
db_reg_offset = mmCPU_IF_PF_PQ_PI;
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "../include/gaudi/gaudi.h"
|
||||
#include "../include/gaudi/gaudi_async_events.h"
|
||||
|
||||
#define NUMBER_OF_EXT_HW_QUEUES 12
|
||||
#define NUMBER_OF_EXT_HW_QUEUES 8
|
||||
#define NUMBER_OF_CMPLT_QUEUES NUMBER_OF_EXT_HW_QUEUES
|
||||
#define NUMBER_OF_CPU_HW_QUEUES 1
|
||||
#define NUMBER_OF_INT_HW_QUEUES 100
|
||||
@ -62,8 +62,8 @@
|
||||
#error "GAUDI_MAX_PENDING_CS must be power of 2 and greater than 1"
|
||||
#endif
|
||||
|
||||
#define PCI_DMA_NUMBER_OF_CHNLS 3
|
||||
#define HBM_DMA_NUMBER_OF_CHNLS 5
|
||||
#define PCI_DMA_NUMBER_OF_CHNLS 2
|
||||
#define HBM_DMA_NUMBER_OF_CHNLS 6
|
||||
#define DMA_NUMBER_OF_CHNLS (PCI_DMA_NUMBER_OF_CHNLS + \
|
||||
HBM_DMA_NUMBER_OF_CHNLS)
|
||||
|
||||
@ -205,12 +205,12 @@
|
||||
enum gaudi_dma_channels {
|
||||
GAUDI_PCI_DMA_1,
|
||||
GAUDI_PCI_DMA_2,
|
||||
GAUDI_PCI_DMA_3,
|
||||
GAUDI_HBM_DMA_1,
|
||||
GAUDI_HBM_DMA_2,
|
||||
GAUDI_HBM_DMA_3,
|
||||
GAUDI_HBM_DMA_4,
|
||||
GAUDI_HBM_DMA_5,
|
||||
GAUDI_HBM_DMA_6,
|
||||
GAUDI_DMA_MAX
|
||||
};
|
||||
|
||||
|
@ -18,8 +18,8 @@
|
||||
#define GOYA_KMD_SRAM_RESERVED_SIZE_FROM_START 0x8000 /* 32KB */
|
||||
#define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80 /* 128 bytes */
|
||||
|
||||
#define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 48
|
||||
#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 24
|
||||
#define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 32
|
||||
#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 16
|
||||
/*
|
||||
* Goya queue Numbering
|
||||
*
|
||||
@ -76,10 +76,10 @@ enum gaudi_queue_id {
|
||||
GAUDI_QUEUE_ID_DMA_4_1 = 18, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_4_2 = 19, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_4_3 = 20, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_5_0 = 21, /* external */
|
||||
GAUDI_QUEUE_ID_DMA_5_1 = 22, /* external */
|
||||
GAUDI_QUEUE_ID_DMA_5_2 = 23, /* external */
|
||||
GAUDI_QUEUE_ID_DMA_5_3 = 24, /* external */
|
||||
GAUDI_QUEUE_ID_DMA_5_0 = 21, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_5_1 = 22, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_5_2 = 23, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_5_3 = 24, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_6_0 = 25, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_6_1 = 26, /* internal */
|
||||
GAUDI_QUEUE_ID_DMA_6_2 = 27, /* internal */
|
||||
|
Loading…
Reference in New Issue
Block a user