Report real max_target = 15. SIM doesn't need to know that target 15 is PMP.
It is XPT business.
This commit is contained in:
Alexander Motin 2009-10-21 13:00:01 +00:00
parent e06db1922d
commit 8e7cccb3bd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=198322
3 changed files with 4 additions and 3 deletions

View File

@ -1212,7 +1212,8 @@ ata_scan_bus(struct cam_periph *periph, union ccb *request_ccb)
take_next:
/* Take next device. Wrap from 15 (PM) to 0. */
scan_info->counter = (scan_info->counter + 1 ) & 0x0f;
if (scan_info->counter >= scan_info->cpi->max_target+1) {
if (scan_info->counter > scan_info->cpi->max_target -
((scan_info->cpi->hba_inquiry & PI_SATAPM) ? 1 : 0)) {
xpt_free_ccb(work_ccb);
xpt_free_ccb((union ccb *)scan_info->cpi);
request_ccb = scan_info->request_ccb;

View File

@ -1967,7 +1967,7 @@ ahciaction(struct cam_sim *sim, union ccb *ccb)
cpi->hba_misc = PIM_SEQSCAN;
cpi->hba_eng_cnt = 0;
if (ch->caps & AHCI_CAP_SPM)
cpi->max_target = 14;
cpi->max_target = 15;
else
cpi->max_target = 0;
cpi->max_lun = 0;

View File

@ -1584,7 +1584,7 @@ siisaction(struct cam_sim *sim, union ccb *ccb)
cpi->target_sprt = 0;
cpi->hba_misc = PIM_SEQSCAN;
cpi->hba_eng_cnt = 0;
cpi->max_target = 14;
cpi->max_target = 15;
cpi->max_lun = 0;
cpi->initiator_id = 0;
cpi->bus_id = cam_sim_bus(sim);