int adp_open(struct inode *inode, struct file *filp)
{
if (current->comm[0] == 'X')
return -EBUSY;
return drm_open(inode, filp);
}
but:
(a) You know what "adp" stands for? It stands for Apple Display Pipe, or the touchbar.
(b) Back when I was dailydriving asahi, I actually had to patch that to check for 's' instead of 'X', because sway dies on this exact thing too.
Not really, no. OS-level schedulers are complicated as is with only P vs E cores to worry about, let alone having to dynamically move tasks because they used a CPU feature (and then moving them back after they don't need them anymore).
> and honestly probably could have supported them completely by splitting the same way AMD does on Zen4 and Zen5 C cores.
The issue with AVX512 is not (just) that you need a very wide vector unit, but mostly that you need an incredibly large register file: you go up from 16 * 256 bit = 4096 bits (AVX2) to 32 * 512 bit = 16384 bits (AVX512), and on top of that you need to add a whole bunch of extra registers for renaming purposes.