Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

libata: READ LOG DMA EXT support can be in either page 119 or 120

Support for the READ/WRITE LOG DMA EXT commands can be signaled either
in page 119 or page 120. We should check both pages.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Tejun Heo <tj@kernel.org>

authored by

Martin K. Petersen and committed by
Tejun Heo
406c057c f3030741

+11 -1
+11 -1
include/linux/ata.h
··· 704 704 705 705 static inline bool ata_id_has_read_log_dma_ext(const u16 *id) 706 706 { 707 + /* Word 86 must have bit 15 set */ 707 708 if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15))) 708 709 return false; 709 - return id[ATA_ID_COMMAND_SET_3] & (1 << 3); 710 + 711 + /* READ LOG DMA EXT support can be signaled either from word 119 712 + * or from word 120. The format is the same for both words: Bit 713 + * 15 must be cleared, bit 14 set and bit 3 set. 714 + */ 715 + if ((id[ATA_ID_COMMAND_SET_3] & 0xC008) == 0x4008 || 716 + (id[ATA_ID_COMMAND_SET_4] & 0xC008) == 0x4008) 717 + return true; 718 + 719 + return false; 710 720 } 711 721 712 722 static inline bool ata_id_has_sense_reporting(const u16 *id)