diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig index 1c3bf494e14c35..0964d35612b66b 100644 --- a/arch/arm64/configs/bcm2711_defconfig +++ b/arch/arm64/configs/bcm2711_defconfig @@ -1064,6 +1064,11 @@ CONFIG_AUXDISPLAY=y CONFIG_HD44780=m CONFIG_DRM=m CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_XE=m CONFIG_DRM_UDL=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ILITEK_ILI9806E=m @@ -1623,7 +1628,7 @@ CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_IOCHARSET="ascii" CONFIG_EXFAT_FS=m CONFIG_NTFS3_FS=m -CONFIG_TMPFS=y +# CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_ECRYPT_FS=m CONFIG_HFS_FS=m diff --git a/arch/arm64/configs/bcm2712_defconfig b/arch/arm64/configs/bcm2712_defconfig index a4f589cb5759c0..43bda3f62bfd77 100644 --- a/arch/arm64/configs/bcm2712_defconfig +++ b/arch/arm64/configs/bcm2712_defconfig @@ -1066,6 +1066,11 @@ CONFIG_AUXDISPLAY=y CONFIG_HD44780=m CONFIG_DRM=m CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_XE=m CONFIG_DRM_UDL=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ILITEK_ILI9806E=m @@ -1625,7 +1630,7 @@ CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_IOCHARSET="ascii" CONFIG_EXFAT_FS=m CONFIG_NTFS3_FS=m -CONFIG_TMPFS=y +# CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_ECRYPT_FS=m CONFIG_HFS_FS=m diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c index acbbca9d5c92f0..9def134eb0456e 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -348,8 +348,6 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo, .no_wait_gpu = false }; struct ttm_tt *ttm = bo->ttm; - struct ttm_resource_manager *man = - ttm_manager_type(bo->bdev, bo->resource->mem_type); pgprot_t prot; int ret; @@ -359,6 +357,9 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo, if (ret) return ret; + #ifndef CONFIG_ARM64 + struct ttm_resource_manager *man = + ttm_manager_type(bo->bdev, bo->resource->mem_type); if (num_pages == 1 && ttm->caching == ttm_cached && !(man->use_tt && (ttm->page_flags & TTM_TT_FLAG_DECRYPTED))) { /* @@ -369,7 +370,10 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo, map->bo_kmap_type = ttm_bo_map_kmap; map->page = ttm->pages[start_page]; map->virtual = kmap(map->page); - } else { + } + else + #endif + { /* * We need to use vmap to get the desired page protection * or to make the buffer object look contiguous. diff --git a/drivers/gpu/drm/ttm/ttm_module.c b/drivers/gpu/drm/ttm/ttm_module.c index b3fffe7b5062a9..41c7058c582554 100644 --- a/drivers/gpu/drm/ttm/ttm_module.c +++ b/drivers/gpu/drm/ttm/ttm_module.c @@ -62,8 +62,12 @@ pgprot_t ttm_prot_from_caching(enum ttm_caching caching, pgprot_t tmp) { /* Cached mappings need no adjustment */ - if (caching == ttm_cached) + if (caching == ttm_cached) { +#ifdef CONFIG_ARM64 + return pgprot_dmacoherent(tmp); +#endif return tmp; + } #if defined(__i386__) || defined(__x86_64__) if (caching == ttm_write_combined) diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 77a566aeae6013..8373ef0069c966 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -2398,6 +2398,26 @@ void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge) } EXPORT_SYMBOL_GPL(pci_assign_unassigned_bridge_resources); +static void pci_release_resource_type(struct pci_dev *pdev, unsigned long type) +{ + int i; + + if (!device_trylock(&pdev->dev)) + return; + + if (pdev->dev.driver) + goto unlock; + + for (i = 0; i < PCI_STD_NUM_BARS; i++) { + if (pci_resource_len(pdev, i) && + !((pci_resource_flags(pdev, i) ^ type) & PCI_RES_TYPE_MASK)) + pci_release_resource(pdev, i); + } + +unlock: + device_unlock(&pdev->dev); +} + int pci_reassign_bridge_resources(struct pci_dev *bridge, unsigned long type) { struct pci_dev_resource *dev_res; @@ -2432,8 +2452,10 @@ int pci_reassign_bridge_resources(struct pci_dev *bridge, unsigned long type) pci_info(bridge, "%s %pR: releasing\n", res_name, res); - if (res->parent) + if (res->parent) { release_resource(res); + pci_release_resource_type(bridge, type); + } res->start = 0; res->end = 0; break;