X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=rpikern;a=blobdiff_plain;f=doc%2Fnotes.md;fp=doc%2Fnotes.md;h=30dc0508af3dabef009080300bdef84f3ce53dbc;hp=5a372d8dc344fc148c63871e1c4fa8e1df4b2211;hb=574147e84aafb61db3cf8b595d2a12ce5ba160de;hpb=99bdc8838f189f79ba77bfbbf41d7f1b4839ce0f diff --git a/doc/notes.md b/doc/notes.md index 5a372d8..30dc050 100644 --- a/doc/notes.md +++ b/doc/notes.md @@ -1,5 +1,8 @@ Raspberry Pi2 notes =================== + +Memory access ordering +---------------------- Accessing different peripherals migh return results out of order. See bcm2835 spec section 1.3. Use memory barriers as follows: - place write barrier before the first write to a peripheral @@ -10,6 +13,12 @@ Multiple accesses to the same peripheral in a row do not require barriers. Interrupt handlers should have a read barrier before their first read, and end with a write barrier. +Cache coherency +--------------- +Two types of cache management: + - cache cleaning (write-back caches) + - cache invalidation (all caches) + Cache clean and invalidate operations are also needed before the GPU can see our command buffers... see: https://github.com/rsta2/uspi/blob/38eaff4f715643a9/lib/synchronize.c