Re: [RFC PATCH -next V3 6/6] arm64: add cow to machine check safe

From: Robin Murphy
Date: Tue Apr 12 2022 - 12:39:24 EST


On 12/04/2022 8:25 am, Tong Tiangen wrote:
[...]
+100: ldp x2, x3, [x1]
+101: ldp x4, x5, [x1, #16]
+102: ldp x6, x7, [x1, #32]
+103: ldp x8, x9, [x1, #48]
+104: ldp x10, x11, [x1, #64]
+105: ldp x12, x13, [x1, #80]
+106: ldp x14, x15, [x1, #96]
+107: ldp x16, x17, [x1, #112]
+
+ add x0, x0, #256
+ add x1, x1, #128
+1:
+ tst x0, #(PAGE_SIZE - 1)
+
+alternative_if ARM64_HAS_NO_HW_PREFETCH
+ prfm pldl1strm, [x1, #384]
+alternative_else_nop_endif
+
+ stnp x2, x3, [x0, #-256]
+200: ldp x2, x3, [x1]
+ stnp x4, x5, [x0, #16 - 256]
+201: ldp x4, x5, [x1, #16]
+ stnp x6, x7, [x0, #32 - 256]
+202: ldp x6, x7, [x1, #32]
+ stnp x8, x9, [x0, #48 - 256]
+203: ldp x8, x9, [x1, #48]
+ stnp x10, x11, [x0, #64 - 256]
+204: ldp x10, x11, [x1, #64]
+ stnp x12, x13, [x0, #80 - 256]
+205: ldp x12, x13, [x1, #80]
+ stnp x14, x15, [x0, #96 - 256]
+206: ldp x14, x15, [x1, #96]
+ stnp x16, x17, [x0, #112 - 256]
+207: ldp x16, x17, [x1, #112]
+
+ add x0, x0, #128
+ add x1, x1, #128
+
+ b.ne 1b
+
+ stnp x2, x3, [x0, #-256]
+ stnp x4, x5, [x0, #16 - 256]
+ stnp x6, x7, [x0, #32 - 256]
+ stnp x8, x9, [x0, #48 - 256]
+ stnp x10, x11, [x0, #64 - 256]
+ stnp x12, x13, [x0, #80 - 256]
+ stnp x14, x15, [x0, #96 - 256]
+ stnp x16, x17, [x0, #112 - 256]
+
+300: ret
+
+_asm_extable_copy_page_mc 100b, 300b
+_asm_extable_copy_page_mc 101b, 300b
+_asm_extable_copy_page_mc 102b, 300b
+_asm_extable_copy_page_mc 103b, 300b
+_asm_extable_copy_page_mc 104b, 300b
+_asm_extable_copy_page_mc 105b, 300b
+_asm_extable_copy_page_mc 106b, 300b
+_asm_extable_copy_page_mc 107b, 300b
+_asm_extable_copy_page_mc 200b, 300b
+_asm_extable_copy_page_mc 201b, 300b
+_asm_extable_copy_page_mc 202b, 300b
+_asm_extable_copy_page_mc 203b, 300b
+_asm_extable_copy_page_mc 204b, 300b
+_asm_extable_copy_page_mc 205b, 300b
+_asm_extable_copy_page_mc 206b, 300b
+_asm_extable_copy_page_mc 207b, 300b


Please add a USER_MC() macro to parallel the existing USER() one (we can worry about names and eventually consolidating things later), then use that to save all the label mess here.

Thanks,
Robin.