Port-Multiplier hotplug support: ATA_FLAG_AN
Tejun,
Apparently the newer (GenIIe) sata_mv chips *can* support asynchronous notification without problems. Some/all of the older ones cannot (errata).
So, I've done the one-liner change in sata_mv, to add ATA_FLAG_AN to the 7042 and 6042 chips, and it all seems to work rather nicely.
Am I missing something? Is there any other local code to sata_mv that should be provided before setting ATA_FLAG_AN ?
Like I said, it works, but I just want to check whether any other pieces are expected to be present?
Cheers
Mark
Quoted 5 lines · Mark Lord
Tejun,
Apparently the newer (GenIIe)
sata_mvchips *can* support asynchronous notification without problems. Some/all of the older ones cannot (errata).
Quoted 8 lines
So, I've done the one-liner change in
sata_mv, to addATA_FLAG_ANto the 7042 and 6042 chips, and it all seems to work rather nicely.Am I missing something? Is there any other local code to
sata_mvthat should be provided before settingATA_FLAG_AN?Like I said, it works, but I just want to check whether any other pieces are expected to be present?
Did you check ATAPI or just PMP AN?
Jeff
Quoted 9 lines · Jeff Garzik
Quoted 8 lines · Mark Lord
Tejun,
Apparently the newer (GenIIe)
sata_mvchips *can* support asynchronous notification without problems. Some/all of the older ones cannot (errata).So, I've done the one-liner change in
sata_mv, to addATA_FLAG_ANto the 7042 and 6042 chips, and it all seems to work rather nicely.
Quoted 7 lines
Quoted 5 lines
Am I missing something? Is there any other local code to
sata_mvthat should be provided before settingATA_FLAG_AN?Like I said, it works, but I just want to check whether any other pieces are expected to be present?
Did you check ATAPI or just PMP AN?
..
sata_mv does not (yet) support ATAPI for anything.
-ml
Quoted 5 lines · Mark Lord
Tejun,
Apparently the newer (GenIIe)
sata_mvchips *can* support asynchronous notification without problems. Some/all of the older ones cannot (errata).
Quoted 8 lines
So, I've done the one-liner change in
sata_mv, to addATA_FLAG_ANto the 7042 and 6042 chips, and it all seems to work rather nicely.Am I missing something? Is there any other local code to
sata_mvthat should be provided before settingATA_FLAG_AN?Like I said, it works, but I just want to check whether any other pieces are expected to be present?
You need to call sata_async_notification() from interrupt handler after AN FIS is received. sata_async_notification() is responsible for discerning between ATAPI and PMP ANs using SNotification and schedule appropriate actions. If SNotification is not available && PMP is attached, it just calls ata_port_schedule_eh(). That's probably why it just worked by setting ATA_FLAG_AN.
Thanks.
Signature · 1 line
tejun
Quoted 9 lines · Tejun Heo
Quoted 8 lines · Mark Lord
Tejun,
Apparently the newer (GenIIe)
sata_mvchips *can* support asynchronous notification without problems. Some/all of the older ones cannot (errata).So, I've done the one-liner change in
sata_mv, to addATA_FLAG_ANto the 7042 and 6042 chips, and it all seems to work rather nicely.
Quoted 7 lines
Quoted 5 lines
Am I missing something? Is there any other local code to
sata_mvthat should be provided before settingATA_FLAG_AN?Like I said, it works, but I just want to check whether any other pieces are expected to be present?
You need to call
sata_async_notification()from interrupt handler after AN FIS is received.sata_async_notification()is responsible for discerning between ATAPI and PMP ANs using SNotification and schedule appropriate actions. If SNotification is not available && PMP is attached, it just callsata_port_schedule_eh(). That's probably why it just worked by settingATA_FLAG_AN.
..
Okay, that's cool. So mv_err_intr() now just calls sata_async_notification(), and then bails out without further action (if no other errors coincided), and the EH then runs for just that one PM link, rather than the whole port.
(tested, working).
Cool!