Claude review: accel/amdxdna: Create shared functions for AIE2 and AIE4

Claude Code Review Bot
2026-03-31T07:05:08Z

Patch Review

This is the refactoring foundation. Moves mailbox management channel, protocol checking, and feature mask into a new `struct aie_device` embedded in `amdxdna_dev_hdl`.

**Issue 1 — Status check semantic change:**
```c
// Old (aie2_message.c):
#define DECLARE_AIE2_MSG(name, op) \
DECLARE_XDNA_MSG_COMMON(name, op, MAX_AIE2_STATUS_CODE)
...
if (!ret && *hdl->status != AIE2_STATUS_SUCCESS) {

// New (aie.h / aie.c):
#define DECLARE_AIE_MSG(name, op) \
DECLARE_XDNA_MSG_COMMON(name, op, -1)
...
if (!ret && *hdl->status) {
```
The old code checked against `AIE2_STATUS_SUCCESS` (0) explicitly with a `MAX_AIE2_STATUS_CODE` sentinel for the notify callback. The new code uses `-1` as sentinel and checks `*hdl->status` (truthy = nonzero = error). This happens to be functionally equivalent if `AIE2_STATUS_SUCCESS == 0`, but merging the AIE2 path into a generic check that uses `-1` is a subtle behavioral change that should be called out in the commit message.

**Issue 2 — `fw_feature_tbl` moved to `amdxdna_dev_info`:**
Moving `fw_feature_tbl` from `amdxdna_dev_priv` to `amdxdna_dev_info` is a layering change. The code in `aie_check_protocol()` accesses it via `aie->xdna->dev_info->fw_feature_tbl`. This is fine but the commit message doesn't mention this relocation.

**Issue 3 — Extra blank line removal:**
```c
-
op = amdxdna_cmd_get_op(cmd_abo);
```
Unrelated whitespace cleanup snuck into this patch (line ~891 area). Should be in a separate patch or at least noted.

**Minor: `drm_WARN_ON` in `aie_destroy_chann`** takes a `**chann` double pointer, which is a reasonable pattern for NULL-out-on-destroy but differs from the original which operated directly on `ndev->mgmt_chann`.

---
Generated by Claude Code Patch Reviewer