Page MenuHomeFreeBSD

mrsas: Add big-endian support
ClosedPublic

Authored by afscoelho_gmail.com on Sep 23 2020, 5:11 PM.

Details

Summary

Add endiannes conversions in order to support big-endian platforms. Tests were done in a AVAGO Invader SAS Controller (pci vendor=0x1000 device=0x005d). This patch was tested using a Power9 and Intel machines.

Test Plan

Compile and install kernel with changes and see if tools like 'geom disk list' and 'camcontrol inquiry' are able to fetch disk information.

Diff Detail

Repository
R10 FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

afscoelho_gmail.com created this revision.

The changes look good to me overall.

Since you have tested them on an Intel machine and most of them are calls to convert from/to LE, that are no-ops on LE machines, the chance of introducing regressions should be low.

I have just a couple of nitpicks.

sys/dev/mrsas/mrsas.c
910–912

Why was this check removed?

3105

Is there any reason to remove this trace message?

4643–4652

It would be nice to save le16toh(pd_addr->deviceId) to a temporary variable and use it instead of repeating the le16toh() calls.

sys/dev/mrsas/mrsas_fp.c
1339–1340

This comment should be removed.

afscoelho_gmail.com added inline comments.
sys/dev/mrsas/mrsas.c
910–912

This check was preventing the driver to continue execution and as it is not present on linux driver 'megaraid' that works on the same card so I removed it from here. I found no issues doing this.

This revision is now accepted and ready to land.Nov 25 2020, 7:36 PM