|
From: | George Kennedy |
Subject: | Re: [Qemu-devel] [PATCH v2] lsi: Reselection needed to remove pending commands from queue |
Date: | Wed, 24 Oct 2018 09:06:30 -0400 |
User-agent: | Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 10/23/2018 6:31 PM, Paolo Bonzini wrote:
On 24/10/2018 00:11, George Kennedy wrote:What about "req->hba_private != s->current"? That should cause a call to lsi_queue_req, and then you can check s->want_resel in lsi_queue_req.For the extended period of time where lsi_queue_req() is not being called from lsi_transfer_data(), my debug shows "s->waiting" is not "1" and req->hba_private is equal to s->current.That would mean indeed that no reselection is needed---but that's wrong. Why didn't lsi_do_command invoke lsi_queue_command? That would set s->current to NULL (on the SCSI level, that means the bus is freed; on the QEMU level, the idea is that lsi_transfer_data would then start a reselection).
Through the extended period of time with no call to lsi_reselect(), the check of "s->command_complete" in lsi_do_command() is always "1" and therefore no call to lsi_queue_command() occurs.
"s->command_complete" is set to "1" in lsi_transfer_data().
Thanks, Paoloreq->hba_private is set to NULL in lsi_command_complete() and that's where I tried to add a call to lsi_reselect(), but the Scripts are not in the correct state to allow the call. lsi_transfer_data() or lsi_command_complete() are probably the 2 potential places where a fix could be added if the Script state would allow it.
[Prev in Thread] | Current Thread | [Next in Thread] |