mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
megasas: Rework frame queueing algorithm
Windows requires the frames to be unmapped, otherwise we run into a race condition where the updated frame data is not visible to the guest. With that we can simplify the queue algorithm and use a bitmap for tracking free frames. Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
aaf2a859b6
commit
6df5718bd3
2 changed files with 48 additions and 54 deletions
|
@ -699,9 +699,9 @@ megasas_init_queue(uint64_t queue_pa, int queue_len, uint64_t head, uint64_t tai
|
|||
megasas_initq_map_failed(int frame) "scmd %d: failed to map queue"
|
||||
megasas_initq_mapped(uint64_t pa) "queue already mapped at %" PRIx64 ""
|
||||
megasas_initq_mismatch(int queue_len, int fw_cmds) "queue size %d max fw cmds %d"
|
||||
megasas_qf_found(unsigned int index, uint64_t pa) "mapped frame %x pa %" PRIx64 ""
|
||||
megasas_qf_new(unsigned int index, void *cmd) "return new frame %x cmd %p"
|
||||
megasas_qf_failed(unsigned long pa) "all frames busy for frame %lx"
|
||||
megasas_qf_mapped(unsigned int index) "skip mapped frame %x"
|
||||
megasas_qf_new(unsigned int index, uint64_t frame) "frame %x addr %" PRIx64 ""
|
||||
megasas_qf_busy(unsigned long pa) "all frames busy for frame %lx"
|
||||
megasas_qf_enqueue(unsigned int index, unsigned int count, uint64_t context, unsigned int head, unsigned int tail, int busy) "frame %x count %d context %" PRIx64 " head %x tail %x busy %d"
|
||||
megasas_qf_update(unsigned int head, unsigned int tail, unsigned int busy) "head %x tail %x busy %d"
|
||||
megasas_qf_map_failed(int cmd, unsigned long frame) "scmd %d: frame %lu"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue