> экран смерти/ring timeout с последующим reset'ом/и.т.д.) Скорее всего в прошивки происходит
> page fault и его MMU выдает bus-адрес куда-то куда не следует У ARM вроде не настолько продвинутые GPU чтоб свой MMU еще был, это вам не амдшка.
> пользователю. Потому что GPU работает в своей ОС — прошивка, которая
> работает на микрухе (можешь поизучать atombios,
1) Atombios выполняется интерпретером на стороне драйвера, внезапно. GPU рассказывает как с ним работать таким странным способом.
2) У ARM ничего подобного вроде бы нет. Там достаточно тупенькие считалки.
> нужно исправлять все возможное неправильное поведение команд из user-space в kernel-space,
> так как дальше идет черный ящик, который имеет доступ к многим
> вещам и никак это особо не поправишь.
Но вот то что GPU особенно в больших системах могут DMA вкатить - таки могут, и единственное что их на этом пути может застопорить это IOMMU так то. Да, в принципе может быть 3 разные MMU:
1) CPU-side, это тот который права доступа CPU <-> RAM энфорсит.
2) GPU-side, то же самое но со стороны GPU. ARM вроде не настолько крутые пока, а вот у амдшек есть.
3) IOMMU, этот арбитрирует доступ железок <-> RAM. Так что отфонарный DMA pcie устройства какого в левый RAM будет зарублен с треском.
> вот, главный смысл графического ускорителя, чтобы никакой "потери перфы" не было,
> как и то, чтобы у тебя рука не расплавилась держа смартфон.
Основная фича ускорителя в основном куча SIMD-образных крушилок. Если системный проц так сделать, он будет печален на задачах общего назначения. Приходится в отдельный специализированный выносить.