If decompression does clobber the data, then we *also* need to figure out why that is. There are basically three possibilities:
1. If physical KASLR is NOT used:
a. The boot loader doesn't honor the kernel safe area properly;
b. Somewhere in the process a bug in the calculation of the
kernel safe area has crept in.
2. If physical KASLR IS used:
The decompressor doesn't correctly keep track of nor relocate
all the keep-out zones before picking a target address.
Seems setup_data is not included in those mem_avoid regions.
One is a bootloader bug, two is a kernel bugs. My guess is (2) is the culprit, but (1b) should be checked, too.