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

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
[libata] Call flush_dcache_page after PIO data transfers in libata-sff.c
ahci: add Acer G725 to broken suspend list
libata: fix ata_id_logical_per_physical_sectors
libata-scsi passthru: fix bug which truncated LBA48 return values

+21 -3
+15
drivers/ata/ahci.c
··· 2868 2868 }, 2869 2869 .driver_data = "F.23", /* cutoff BIOS version */ 2870 2870 }, 2871 + /* 2872 + * Acer eMachines G725 has the same problem. BIOS 2873 + * V1.03 is known to be broken. V3.04 is known to 2874 + * work. Inbetween, there are V1.06, V2.06 and V3.03 2875 + * that we don't have much idea about. For now, 2876 + * blacklist anything older than V3.04. 2877 + */ 2878 + { 2879 + .ident = "G725", 2880 + .matches = { 2881 + DMI_MATCH(DMI_SYS_VENDOR, "eMachines"), 2882 + DMI_MATCH(DMI_PRODUCT_NAME, "eMachines G725"), 2883 + }, 2884 + .driver_data = "V3.04", /* cutoff BIOS version */ 2885 + }, 2871 2886 { } /* terminate list */ 2872 2887 }; 2873 2888 const struct dmi_system_id *dmi = dmi_first_match(sysids);
+1 -1
drivers/ata/libata-scsi.c
··· 2875 2875 * write indication (used for PIO/DMA setup), result TF is 2876 2876 * copied back and we don't whine too much about its failure. 2877 2877 */ 2878 - tf->flags = ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; 2878 + tf->flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; 2879 2879 if (scmd->sc_data_direction == DMA_TO_DEVICE) 2880 2880 tf->flags |= ATA_TFLAG_WRITE; 2881 2881
+3
drivers/ata/libata-sff.c
··· 893 893 do_write); 894 894 } 895 895 896 + if (!do_write) 897 + flush_dcache_page(page); 898 + 896 899 qc->curbytes += qc->sect_size; 897 900 qc->cursg_ofs += qc->sect_size; 898 901
+2 -2
include/linux/ata.h
··· 647 647 return id[ATA_ID_SECTOR_SIZE] & (1 << 13); 648 648 } 649 649 650 - static inline u8 ata_id_logical_per_physical_sectors(const u16 *id) 650 + static inline u16 ata_id_logical_per_physical_sectors(const u16 *id) 651 651 { 652 - return id[ATA_ID_SECTOR_SIZE] & 0xf; 652 + return 1 << (id[ATA_ID_SECTOR_SIZE] & 0xf); 653 653 } 654 654 655 655 static inline int ata_id_has_lba48(const u16 *id)