Actually the first one is widely used by many PCIE IO card. The similar way is 
used by SAS/FC HBA, where, there is also a similar queue pair existing in both 
driver memory space and PCIE address space, one consumer queue and one producer 
queue, in the PCIE BAR space, there is a register named "producer index", which 
is updated by host driver when the upper layer generate a new IO request and 
put into the producer queue in the driver memory space. This register update 
action will cause a interrupt to the PCIE card's IO controller and then DMA 
form host driver memory's producer queue to fetch the IO request and handle it, 
then DMA write to the driver's consumer queue a new item to inform the driver 
that this IO is done.

Hope that help.

Dong

-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Anuj Kalia
Sent: 2014年1月13日 17:04
To: [email protected]
Subject: Question about CPU-HCA interaction

Hi.

I wanted to understand the PCIe usage while issuing Infiniband verbs.
When posting a verb to a queue pair, how is the request descriptor written to 
the HCA? IMO, there are two options for this:

1. CPU prepares the descriptor in local memory. After preparing the descriptor, 
it writes the location of the descriptor to a hardwired register on the HCA 
(this process is called "ringing the doorbell"?).
The HCA then reads the descriptor via DMA.

2. The CPU writes the entire descriptor to the HCA's memory via PCIe MMIO. 
Then, it rings the doorbell to alert the HCA.

To me, the first one makes more sense, but I'm not sure. It would be great if 
someone could tell more about this.

Thanks for your help.

--Anuj
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the 
body of a message to [email protected] More majordomo info at  
http://vger.kernel.org/majordomo-info.html
N�Р骒r��y����b�X�肚�v�^�)藓{.n�+�伐�{杯���{ay������,j��f"�h���z��wア�
⒎�j:+v���w�j�m������赙zZ+�����茛j"��!�i

Reply via email to