Skip to content

Answer unknown ioctl commands quietly with -ENOTTY - #4

Merged
JohnAmadis merged 1 commit into
mainfrom
claude/sweet-tesla-mlran5
Sep 29, 2026
Merged

JohnAmadis merged 1 commit into
mainfrom
claude/sweet-tesla-mlran5

Conversation

@JohnAmadis

@JohnAmadis JohnAmadis commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Problem

dmdevfs now probes every node with the standard DMDRVI_IOCTL_BLOCK_GET_INFO (0x100) and DMDRVI_IOCTL_MONITOR_GET_POLICY (0x200) commands to classify it. dmdma treated these as errors, so the log filled with:

dmdma: [ERROR] Invalid ioctl command 512
dmdma: [ERROR] Invalid ioctl command 256

Changes

  • Unknown command → -ENOTTY, no log. This is the dmdrvi convention for commands a driver does not implement, and dmdevfs reads any non-zero result as "not this class". The default: branch of the switch changed the same way.
  • Private commands now start at DMDRVI_IOCTL_CUSTOM_BASE. They used to start at 1, which collides with the standard DMDRVI_IOCTL_NET_* range (0x01..0x05). dmdma_types.h now includes dmdrvi_ioctl.h, so dmdma_port and the three test apps also link the dmdrvi module headers.

⚠️ The numeric values of dmdma_ioctl_cmd_t change. Callers that use the enum names only need a rebuild; hard-coded numbers must be updated. Out-of-repo users of dmdma_lease.h/dmdma.h (e.g. peripheral drivers) now need the dmdrvi headers on their include path.

Testing

A syntax-only compile (gcc -fsyntax-only) against the dmdrvi/dmod headers shows no errors in the changed code. A full module build and a hardware run were not done here; CI checks the CMake changes.

🤖 Generated with Claude Code

https://claude.ai/code/session_016sVYVjrMNmMfPjWQkkGJTM

dmdevfs now probes every node with the standard DMDRVI_IOCTL_BLOCK_GET_INFO
(0x100) and DMDRVI_IOCTL_MONITOR_GET_POLICY (0x200) commands to classify it,
so dmdma logged an "invalid ioctl command" error for every probe. Unknown
commands are not an error for a driver: return -ENOTTY without logging, as
dmdrvi documents.

Also move dmdma's private commands to DMDRVI_IOCTL_CUSTOM_BASE (0x1000): they
started at 1, colliding with the standard DMDRVI_IOCTL_NET_* range (0x01..),
so a generic network probe would have been misread as a dmdma command.
Callers using the enum names only need a rebuild.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016sVYVjrMNmMfPjWQkkGJTM
@JohnAmadis
JohnAmadis merged commit 06a5813 into main Sep 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants