Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/propolis/src/hw/nvme/admin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,7 @@ impl NvmeCtrl {
}
}

#[allow(dead_code)]
pub(super) fn acmd_doorbell_buf_cfg(
&mut self,
cmd: &cmds::DoorbellBufCfgCmd,
Expand Down
17 changes: 13 additions & 4 deletions lib/propolis/src/hw/nvme/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -844,8 +844,9 @@ impl PciNvme {
nn: 1,
// bit 0 indicates volatile write cache is present
vwc: 1,
// bit 8 indicates Doorbell Buffer support
oacs: (1 << 8),
// bit 8 indicates Doorbell Buffer support. Theoretically supported,
// but disabled for Propolis issue #1008.
oacs: (0 << 8),
..Default::default()
};

Expand Down Expand Up @@ -1339,8 +1340,16 @@ impl PciNvme {
// this can detect it and stop posting async events.
cmds::Completion::generic_err(bits::STS_INVAL_OPC).dnr()
}
AdminCmd::DoorbellBufCfg(cmd) => {
state.acmd_doorbell_buf_cfg(&cmd)
AdminCmd::DoorbellBufCfg(_cmd) => {
// XXX: issue #1008 suggests that Doorbell Buffer support
// can end up with guest disks in a state that *looks like*
// we've failed to notify after writing a completion. While
// we're debugging this, we hide Doorbell Buffer support
// from OACS. Instead, treat this the same as an
// `AdminCmd::Unknown`.

// state.acmd_doorbell_buf_cfg(&cmd)
cmds::Completion::generic_err(bits::STS_INTERNAL_ERR)
}
AdminCmd::Unknown(_) => {
cmds::Completion::generic_err(bits::STS_INTERNAL_ERR)
Expand Down
Loading