tree dce33a865ec932ce8593c227ae669897dcdd6748
parent 9cd42be825fa15609bf0616d70032d90e844282e
parent 9cec467d0502b24660f413a0e8fc782903b46d5b
author Linus Torvalds <torvalds@linux-foundation.org> 1708707956 -0800
committer Linus Torvalds <torvalds@linux-foundation.org> 1708707956 -0800
mergetag object 9cec467d0502b24660f413a0e8fc782903b46d5b
 type commit
 tag ata-6.8-rc6
 tagger Niklas Cassel <cassel@kernel.org> 1708703964 +0100
 
 ata changes for 6.8-rc6
 
  - Do not try to set a sleeping device to standby. Sleep is a deeper
    sleep state than standby, and needs a reset to wake up the drive.
    A system resume will reset the port. Sending a command other than
    reset to a sleeping device is not wise, as the command will timeout.
    (Damien Le Moal)
 
  - Do not try to put a device to standby twice during system shutdown.
    ata_dev_power_set_standby() is currently called twice during
    shutdown, once after the scsi device is removed, and another when
    ata_pci_shutdown_one() executes. Modify ata_dev_power_set_standby()
    to do nothing if the device is already in standby. (Damien Le Moal)
 
  - Add a quirk for ASM1064 to fixup the number of implemented ports.
    We probe all ports that the hardware reports to be implemented.
    Probing ports that are not implemented causes significantly increased
    boot time. (Andrey Jr. Melnikov)
 
  - Fix error handling for the ahci_ceva driver.
    Ensure that the ahci_ceva driver does a proper cleanup of its
    resources in the error path. (Radhey Shyam Pandey)
 -----BEGIN PGP SIGNATURE-----
 
 iIgEABYKADAWIQRN+ES/c4tHlMch3DzJZDGjmcZNcgUCZdjJthIcY2Fzc2VsQGtl
 cm5lbC5vcmcACgkQyWQxo5nGTXKjKQEAw4J68mFTAjJuM0JxerDG1MMNBRWTtfS3
 sWtjpbkC6H8A/0PBFhgedSTy9w2eewspDlUR44SMTaKykNyPwBEF6Q0C
 =gpJt
 -----END PGP SIGNATURE-----

Merge tag 'ata-6.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux

Pull ata fixes from Niklas Cassel:

 - Do not try to set a sleeping device to standby. Sleep is a deeper
   sleep state than standby, and needs a reset to wake up the drive. A
   system resume will reset the port. Sending a command other than reset
   to a sleeping device is not wise, as the command will timeout (Damien
   Le Moal)

 - Do not try to put a device to standby twice during system shutdown.
   ata_dev_power_set_standby() is currently called twice during
   shutdown, once after the scsi device is removed, and another when
   ata_pci_shutdown_one() executes. Modify ata_dev_power_set_standby()
   to do nothing if the device is already in standby (Damien Le Moal)

 - Add a quirk for ASM1064 to fixup the number of implemented ports. We
   probe all ports that the hardware reports to be implemented. Probing
   ports that are not implemented causes significantly increased boot
   time (Andrey Jr. Melnikov)

 - Fix error handling for the ahci_ceva driver. Ensure that the
   ahci_ceva driver does a proper cleanup of its resources in the error
   path (Radhey Shyam Pandey)

* tag 'ata-6.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux:
  ata: libata-core: Do not call ata_dev_power_set_standby() twice
  ata: ahci_ceva: fix error handling for Xilinx GT PHY support
  ahci: asm1064: correct count of reported ports
  ata: libata-core: Do not try to set sleeping devices to standby
