Page MenuHomeFreeBSD

riscv cbo: fix cache underflushing
Needs ReviewPublic

Authored by br on Mon, Jan 5, 5:48 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Jan 13, 12:48 AM
Unknown Object (File)
Sun, Jan 11, 3:06 PM
Unknown Object (File)
Sat, Jan 10, 2:33 AM
Unknown Object (File)
Fri, Jan 9, 7:02 PM
Unknown Object (File)
Fri, Jan 9, 3:42 PM
Unknown Object (File)
Fri, Jan 9, 7:37 AM
Unknown Object (File)
Thu, Jan 8, 11:00 AM
Unknown Object (File)
Wed, Jan 7, 10:06 PM
Subscribers

Details

Reviewers
mhorne
jhb
Summary

Fix cache underflushing

Reported by: jhb

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

br requested review of this revision.Mon, Jan 5, 5:48 PM
jrtc27 added inline comments.
sys/riscv/riscv/cbo.c
63

Invalidating outside the given range is dangerous; any adjacent data risks getting corrupted. Though arm64 seems to do that in its assembly too...

Indeed. I do find however that this actually fixes my issue with if_xae when tag alignment requirement for TX/RX buffers is downgraded to lower values.

I think I need some more context to understand this diff.

In D54531#1246777, @br wrote:

Indeed. I do find however that this actually fixes my issue with if_xae when tag alignment requirement for TX/RX buffers is downgraded to lower values.

Is this not a driver bug?

sys/riscv/riscv/cbo.c
83

What is the difference between __align_down and masking to the line size?

sys/riscv/riscv/cbo.c
83

None, except that jhb@ is on a question to replace a bunch of vm_offset_t with void * or similar, and __align_down works with pointer types, but masking would require casting to vm_offset_t (or vm_pointer_t aka uintptr_t for CheriBSD).