xref: /openbmc/linux/drivers/gpu/drm/nouveau/nouveau_dmem.h (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
15be73b69SJérôme Glisse /*
25be73b69SJérôme Glisse  * Copyright 2018 Red Hat Inc.
35be73b69SJérôme Glisse  *
45be73b69SJérôme Glisse  * Permission is hereby granted, free of charge, to any person obtaining a
55be73b69SJérôme Glisse  * copy of this software and associated documentation files (the "Software"),
65be73b69SJérôme Glisse  * to deal in the Software without restriction, including without limitation
75be73b69SJérôme Glisse  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
85be73b69SJérôme Glisse  * and/or sell copies of the Software, and to permit persons to whom the
95be73b69SJérôme Glisse  * Software is furnished to do so, subject to the following conditions:
105be73b69SJérôme Glisse  *
115be73b69SJérôme Glisse  * The above copyright notice and this permission notice shall be included in
125be73b69SJérôme Glisse  * all copies or substantial portions of the Software.
135be73b69SJérôme Glisse  *
145be73b69SJérôme Glisse  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
155be73b69SJérôme Glisse  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
165be73b69SJérôme Glisse  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
175be73b69SJérôme Glisse  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
185be73b69SJérôme Glisse  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
195be73b69SJérôme Glisse  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
205be73b69SJérôme Glisse  * OTHER DEALINGS IN THE SOFTWARE.
215be73b69SJérôme Glisse  */
225be73b69SJérôme Glisse #ifndef __NOUVEAU_DMEM_H__
235be73b69SJérôme Glisse #define __NOUVEAU_DMEM_H__
245be73b69SJérôme Glisse #include <nvif/os.h>
255be73b69SJérôme Glisse struct drm_device;
265be73b69SJérôme Glisse struct drm_file;
275be73b69SJérôme Glisse struct nouveau_drm;
28*e3d8b089SRalph Campbell struct nouveau_svmm;
295be73b69SJérôme Glisse struct hmm_range;
305be73b69SJérôme Glisse 
315be73b69SJérôme Glisse #if IS_ENABLED(CONFIG_DRM_NOUVEAU_SVM)
325be73b69SJérôme Glisse void nouveau_dmem_init(struct nouveau_drm *);
335be73b69SJérôme Glisse void nouveau_dmem_fini(struct nouveau_drm *);
345be73b69SJérôme Glisse void nouveau_dmem_suspend(struct nouveau_drm *);
355be73b69SJérôme Glisse void nouveau_dmem_resume(struct nouveau_drm *);
365be73b69SJérôme Glisse 
375be73b69SJérôme Glisse int nouveau_dmem_migrate_vma(struct nouveau_drm *drm,
38*e3d8b089SRalph Campbell 			     struct nouveau_svmm *svmm,
395be73b69SJérôme Glisse 			     struct vm_area_struct *vma,
405be73b69SJérôme Glisse 			     unsigned long start,
415be73b69SJérôme Glisse 			     unsigned long end);
422733ea14SJason Gunthorpe unsigned long nouveau_dmem_page_addr(struct page *page);
435be73b69SJérôme Glisse 
445be73b69SJérôme Glisse #else /* IS_ENABLED(CONFIG_DRM_NOUVEAU_SVM) */
nouveau_dmem_init(struct nouveau_drm * drm)455be73b69SJérôme Glisse static inline void nouveau_dmem_init(struct nouveau_drm *drm) {}
nouveau_dmem_fini(struct nouveau_drm * drm)465be73b69SJérôme Glisse static inline void nouveau_dmem_fini(struct nouveau_drm *drm) {}
nouveau_dmem_suspend(struct nouveau_drm * drm)475be73b69SJérôme Glisse static inline void nouveau_dmem_suspend(struct nouveau_drm *drm) {}
nouveau_dmem_resume(struct nouveau_drm * drm)485be73b69SJérôme Glisse static inline void nouveau_dmem_resume(struct nouveau_drm *drm) {}
495be73b69SJérôme Glisse #endif /* IS_ENABLED(CONFIG_DRM_NOUVEAU_SVM) */
505be73b69SJérôme Glisse #endif
51