On Tue, Nov 28, 2023 at 08:57:15PM -0400, Jason Gunthorpe wrote: > On Tue, Nov 28, 2023 at 04:51:21PM -0800, Nicolin Chen wrote: > > > > I also thought about making this out_driver_error_code per HW. > > > > Yet, an error can be either per array or per entry/quest. The > > > > array-related error should be reported in the array structure > > > > that is a core uAPI, v.s. the per-HW entry structure. Though > > > > we could still report an array error in the entry structure > > > > at the first entry (or indexed by "array->entry_num")? > > > > > > > > > > why would there be an array error? array is just a software > > > entity containing actual HW invalidation cmds. If there is > > > any error with the array itself it should be reported via > > > ioctl errno. > > > > User array reading is a software operation, but kernel array > > reading is a hardware operation that can raise an error when > > the memory location to the array is incorrect or so. > > Well, we shouldn't get into a situation like that.. By the time the HW > got the address it should be valid. Oh, that's true. I was trying to say that out_driver_error_code was to mimic such a queue validation for user space if an error happens to the array. > > With that being said, I think errno (-EIO) could do the job, > > as you suggested too. > > Do we have any idea what HW failures can be generated by the commands > this will execture? IIRC I don't remember seeing any smmu specific > codes related to invalid invalidation? Everything is a valid input? "7.1 Command queue errors" has the info. Thanks Nic