mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 17:31:37 -04:00
drm/panthor: Don't use virt_to_pfn()
virt_to_pfn() isn't available on x86 (except to xen) so breaks COMPILE_TEST builds. Avoid its use completely by instead storing the struct page pointer allocated in panthor_device_init() and using page_to_pfn() instead. Signed-off-by: Steven Price <steven.price@arm.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240318145119.368582-1-steven.price@arm.com
This commit is contained in:
committed by
Boris Brezillon
parent
0cd8363ed8
commit
0b45921c2a
@@ -151,11 +151,12 @@ static bool panthor_device_is_initialized(struct panthor_device *ptdev)
|
||||
|
||||
static void panthor_device_free_page(struct drm_device *ddev, void *data)
|
||||
{
|
||||
free_page((unsigned long)data);
|
||||
__free_page(data);
|
||||
}
|
||||
|
||||
int panthor_device_init(struct panthor_device *ptdev)
|
||||
{
|
||||
u32 *dummy_page_virt;
|
||||
struct resource *res;
|
||||
struct page *p;
|
||||
int ret;
|
||||
@@ -176,7 +177,8 @@ int panthor_device_init(struct panthor_device *ptdev)
|
||||
if (!p)
|
||||
return -ENOMEM;
|
||||
|
||||
ptdev->pm.dummy_latest_flush = page_address(p);
|
||||
ptdev->pm.dummy_latest_flush = p;
|
||||
dummy_page_virt = page_address(p);
|
||||
ret = drmm_add_action_or_reset(&ptdev->base, panthor_device_free_page,
|
||||
ptdev->pm.dummy_latest_flush);
|
||||
if (ret)
|
||||
@@ -188,7 +190,7 @@ int panthor_device_init(struct panthor_device *ptdev)
|
||||
* happens while the dummy page is mapped. Zero cannot be used because
|
||||
* that means 'always flush'.
|
||||
*/
|
||||
*ptdev->pm.dummy_latest_flush = 1;
|
||||
*dummy_page_virt = 1;
|
||||
|
||||
INIT_WORK(&ptdev->reset.work, panthor_device_reset_work);
|
||||
ptdev->reset.wq = alloc_ordered_workqueue("panthor-reset-wq", 0);
|
||||
@@ -364,7 +366,7 @@ static vm_fault_t panthor_mmio_vm_fault(struct vm_fault *vmf)
|
||||
if (active)
|
||||
pfn = __phys_to_pfn(ptdev->phys_addr + CSF_GPU_LATEST_FLUSH_ID);
|
||||
else
|
||||
pfn = virt_to_pfn(ptdev->pm.dummy_latest_flush);
|
||||
pfn = page_to_pfn(ptdev->pm.dummy_latest_flush);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -160,7 +160,7 @@ struct panthor_device {
|
||||
* Used to replace the real LATEST_FLUSH page when the GPU
|
||||
* is suspended.
|
||||
*/
|
||||
u32 *dummy_latest_flush;
|
||||
struct page *dummy_latest_flush;
|
||||
} pm;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user