hw/nvme: fix missing endian conversions for doorbell buffers
The eventidx and doorbell value are not handling endianness correctly.
Fix this.
Fixes: 3f7fe8de3d49 ("hw/nvme: Implement shadow doorbell buffer support")
Cc: qemu-stable@nongnu.org
Reported-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
			
			
This commit is contained in:
		
							parent
							
								
									47cd3539e1
								
							
						
					
					
						commit
						2fda0726e5
					
				| @ -1336,8 +1336,11 @@ static inline void nvme_blk_write(BlockBackend *blk, int64_t offset, | ||||
| 
 | ||||
| static void nvme_update_cq_head(NvmeCQueue *cq) | ||||
| { | ||||
|     pci_dma_read(PCI_DEVICE(cq->ctrl), cq->db_addr, &cq->head, | ||||
|                  sizeof(cq->head)); | ||||
|     uint32_t v; | ||||
| 
 | ||||
|     pci_dma_read(PCI_DEVICE(cq->ctrl), cq->db_addr, &v, sizeof(v)); | ||||
| 
 | ||||
|     cq->head = le32_to_cpu(v); | ||||
| 
 | ||||
|     trace_pci_nvme_update_cq_head(cq->cqid, cq->head); | ||||
| } | ||||
| @ -6148,16 +6151,20 @@ static uint16_t nvme_admin_cmd(NvmeCtrl *n, NvmeRequest *req) | ||||
| 
 | ||||
| static void nvme_update_sq_eventidx(const NvmeSQueue *sq) | ||||
| { | ||||
|     uint32_t v = cpu_to_le32(sq->tail); | ||||
| 
 | ||||
|     trace_pci_nvme_update_sq_eventidx(sq->sqid, sq->tail); | ||||
| 
 | ||||
|     pci_dma_write(PCI_DEVICE(sq->ctrl), sq->ei_addr, &sq->tail, | ||||
|                   sizeof(sq->tail)); | ||||
|     pci_dma_write(PCI_DEVICE(sq->ctrl), sq->ei_addr, &v, sizeof(v)); | ||||
| } | ||||
| 
 | ||||
| static void nvme_update_sq_tail(NvmeSQueue *sq) | ||||
| { | ||||
|     pci_dma_read(PCI_DEVICE(sq->ctrl), sq->db_addr, &sq->tail, | ||||
|                  sizeof(sq->tail)); | ||||
|     uint32_t v; | ||||
| 
 | ||||
|     pci_dma_read(PCI_DEVICE(sq->ctrl), sq->db_addr, &v, sizeof(v)); | ||||
| 
 | ||||
|     sq->tail = le32_to_cpu(v); | ||||
| 
 | ||||
|     trace_pci_nvme_update_sq_tail(sq->sqid, sq->tail); | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Klaus Jensen
						Klaus Jensen