Open twilfredo opened 1 year ago
Yes, it seems that we do not handle the reset procedure correctly. Although there exist commands responsible for deleting submission and completion queues on corresponding admin commands, we can't directly use them when reset is detected.
This problem should be fixed by separating the code responsible for queue creation/deletion into dedicated functions. Which in turn should be called both on the reset and on the admin commands.
Here are the functions responsible for deleting and creating submission/completion queues:
Regarding the cc && NVME_TC_REG_CC_EN
, yes, it should use bitwise and (&)
instead of logical and (&&)
Hey guys,
Looking at the NVME 1.4 specification, it looks like when a reset is issued, the controller does not do all that it should for compliance. The following is from the spec.
So looking at the controller side https://github.com/antmicro/alkali-csd-fw/blob/bb0e116874087753572988c4c753c7595fc75a1d/rpu-app/src/tc.c#L61 we aren't doing any of these.
I've noticed this as I was testing the device through reboots, it never works if the host machine has rebooted (device will typically become unresponsive). Only works when gone through a clean power cycle. Any ideas on how best to address this?
Also this looks like it should be a
bitwise and
https://github.com/antmicro/alkali-csd-fw/blob/bb0e116874087753572988c4c753c7595fc75a1d/rpu-app/src/tc.c#L57