Skip to content

Commit 0e7387b

Browse files
apply dmacoherent patch for arm64
1 parent 7da7685 commit 0e7387b

File tree

5 files changed

+47
-7
lines changed

5 files changed

+47
-7
lines changed

arch/arm64/configs/bcm2711_defconfig

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,11 @@ CONFIG_AUXDISPLAY=y
10641064
CONFIG_HD44780=m
10651065
CONFIG_DRM=m
10661066
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
1067+
CONFIG_DRM_AMDGPU=m
1068+
CONFIG_DRM_AMDGPU_SI=y
1069+
CONFIG_DRM_AMDGPU_CIK=y
1070+
CONFIG_DRM_NOUVEAU=m
1071+
CONFIG_DRM_XE=m
10671072
CONFIG_DRM_UDL=m
10681073
CONFIG_DRM_PANEL_LVDS=m
10691074
CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
@@ -1623,7 +1628,7 @@ CONFIG_VFAT_FS=y
16231628
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
16241629
CONFIG_EXFAT_FS=m
16251630
CONFIG_NTFS3_FS=m
1626-
CONFIG_TMPFS=y
1631+
# CONFIG_TMPFS=y
16271632
CONFIG_TMPFS_POSIX_ACL=y
16281633
CONFIG_ECRYPT_FS=m
16291634
CONFIG_HFS_FS=m

arch/arm64/configs/bcm2712_defconfig

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1066,6 +1066,11 @@ CONFIG_AUXDISPLAY=y
10661066
CONFIG_HD44780=m
10671067
CONFIG_DRM=m
10681068
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
1069+
CONFIG_DRM_AMDGPU=m
1070+
CONFIG_DRM_AMDGPU_SI=y
1071+
CONFIG_DRM_AMDGPU_CIK=y
1072+
CONFIG_DRM_NOUVEAU=m
1073+
CONFIG_DRM_XE=m
10691074
CONFIG_DRM_UDL=m
10701075
CONFIG_DRM_PANEL_LVDS=m
10711076
CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
@@ -1625,7 +1630,7 @@ CONFIG_VFAT_FS=y
16251630
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
16261631
CONFIG_EXFAT_FS=m
16271632
CONFIG_NTFS3_FS=m
1628-
CONFIG_TMPFS=y
1633+
# CONFIG_TMPFS=y
16291634
CONFIG_TMPFS_POSIX_ACL=y
16301635
CONFIG_ECRYPT_FS=m
16311636
CONFIG_HFS_FS=m

drivers/gpu/drm/ttm/ttm_bo_util.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -348,8 +348,6 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo,
348348
.no_wait_gpu = false
349349
};
350350
struct ttm_tt *ttm = bo->ttm;
351-
struct ttm_resource_manager *man =
352-
ttm_manager_type(bo->bdev, bo->resource->mem_type);
353351
pgprot_t prot;
354352
int ret;
355353

@@ -359,6 +357,9 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo,
359357
if (ret)
360358
return ret;
361359

360+
#ifndef CONFIG_ARM64
361+
struct ttm_resource_manager *man =
362+
ttm_manager_type(bo->bdev, bo->resource->mem_type);
362363
if (num_pages == 1 && ttm->caching == ttm_cached &&
363364
!(man->use_tt && (ttm->page_flags & TTM_TT_FLAG_DECRYPTED))) {
364365
/*
@@ -369,7 +370,10 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo,
369370
map->bo_kmap_type = ttm_bo_map_kmap;
370371
map->page = ttm->pages[start_page];
371372
map->virtual = kmap(map->page);
372-
} else {
373+
}
374+
else
375+
#endif
376+
{
373377
/*
374378
* We need to use vmap to get the desired page protection
375379
* or to make the buffer object look contiguous.

drivers/gpu/drm/ttm/ttm_module.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,12 @@
6262
pgprot_t ttm_prot_from_caching(enum ttm_caching caching, pgprot_t tmp)
6363
{
6464
/* Cached mappings need no adjustment */
65-
if (caching == ttm_cached)
65+
if (caching == ttm_cached) {
66+
#ifdef CONFIG_ARM64
67+
return pgprot_dmacoherent(tmp);
68+
#endif
6669
return tmp;
70+
}
6771

6872
#if defined(__i386__) || defined(__x86_64__)
6973
if (caching == ttm_write_combined)

drivers/pci/setup-bus.c

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2398,6 +2398,26 @@ void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge)
23982398
}
23992399
EXPORT_SYMBOL_GPL(pci_assign_unassigned_bridge_resources);
24002400

2401+
static void pci_release_resource_type(struct pci_dev *pdev, unsigned long type)
2402+
{
2403+
int i;
2404+
2405+
if (!device_trylock(&pdev->dev))
2406+
return;
2407+
2408+
if (pdev->dev.driver)
2409+
goto unlock;
2410+
2411+
for (i = 0; i < PCI_STD_NUM_BARS; i++) {
2412+
if (pci_resource_len(pdev, i) &&
2413+
!((pci_resource_flags(pdev, i) ^ type) & PCI_RES_TYPE_MASK))
2414+
pci_release_resource(pdev, i);
2415+
}
2416+
2417+
unlock:
2418+
device_unlock(&pdev->dev);
2419+
}
2420+
24012421
int pci_reassign_bridge_resources(struct pci_dev *bridge, unsigned long type)
24022422
{
24032423
struct pci_dev_resource *dev_res;
@@ -2432,8 +2452,10 @@ int pci_reassign_bridge_resources(struct pci_dev *bridge, unsigned long type)
24322452

24332453
pci_info(bridge, "%s %pR: releasing\n", res_name, res);
24342454

2435-
if (res->parent)
2455+
if (res->parent) {
24362456
release_resource(res);
2457+
pci_release_resource_type(bridge, type);
2458+
}
24372459
res->start = 0;
24382460
res->end = 0;
24392461
break;

0 commit comments

Comments
 (0)