mirror of https://github.com/torvalds/linux.git
drm-misc-next-fixes for v6.19:
- Restrict the pointer size of flush pages to prevent a regression. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEuXvWqAysSYEJGuVH/lWMcqZwE8MFAmknGZkACgkQ/lWMcqZw E8P8MhAAuo4DAxINHLGgVKJ2ABp+qhpfney7+QC77tSQYPkIGRRIhOPzJgXOG2Bq SUWEXHOS8W4AIfvWbdjpRV5u4BFVbEwZcV6XvKo6dKxsXbESNnq1DFCl1ZTiy6bl jXnT9pf1jl5kaQnTWGJCTidRnPzItnW/zMl15Pp3eZuZBL4URJhYg73l06LIIeZd B3vnefwNjqz3VlbxCToCzPY0rsttKbj+IK944CYxTDtZyB2lexqE2GmX4ecWTqJY xgJTUHC2FPJxVBrKSWzBG9vw/pnceS75ngE0SZYlPvyiIOS+pnsnZtJFq3Eaz3CX oBykFJtwYgUtUGmAuzrdN7Jy6H+/VGF43GW+707eIBKa+dsVHXsCKy28H9LZudVO SLDibKYnMC0XCwZBGd8nNdMpaxb2jpnmt7pTdBdD9RQ3lWf/9Hhm4kMB5tlUIzQ9 o4gCQOICiwmMrbmCaiBju3PvTimbcw9ZOSjj+IJ6En6aO0H4m9LQuMsd2xybaLuj JN/xQCM6x7fkkNXFVWf11snfifeMeyB8+0HBxRzOAZYcCe+Bs5Lh6V2R+WX/onpH FozLujpuGZfvpoxB0yAaaxe7dMeB1gyUlg+D7s59aMeXGsjH2Zwm8P3Fkjxf9vpf E3o6V5ADUXMLKTZu4KiSsakRreMnuow5HSMhBoYR+TCyn/lekKw= =9d7X -----END PGP SIGNATURE----- Merge tag 'drm-misc-next-fixes-2025-11-26' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next drm-misc-next-fixes for v6.19: - Restrict the pointer size of flush pages to prevent a regression. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patch.msgid.link/0090a4fc-9cc4-4c03-bfe5-d1b1f0cc7e05@linux.intel.com
This commit is contained in:
commit
62433efe0b
|
|
@ -279,7 +279,7 @@ nvkm_fb_ctor(const struct nvkm_fb_func *func, struct nvkm_device *device,
|
|||
mutex_init(&fb->tags.mutex);
|
||||
|
||||
if (func->sysmem.flush_page_init) {
|
||||
fb->sysmem.flush_page = alloc_page(GFP_KERNEL | __GFP_ZERO);
|
||||
fb->sysmem.flush_page = alloc_page(GFP_KERNEL | GFP_DMA32 | __GFP_ZERO);
|
||||
if (!fb->sysmem.flush_page)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@ gb100_fb_sysmem_flush_page_init(struct nvkm_fb *fb)
|
|||
const u32 hshub = DRF_LO(NV_PFB_HSHUB0);
|
||||
struct nvkm_device *device = fb->subdev.device;
|
||||
|
||||
// Ensure that the address is within hardware limits
|
||||
WARN_ON(fb->sysmem.flush_page_addr > DMA_BIT_MASK(52));
|
||||
|
||||
nvkm_wr32(device, hshub + NV_PFB_HSHUB_PCIE_FLUSH_SYSMEM_ADDR_HI, addr_hi);
|
||||
nvkm_wr32(device, hshub + NV_PFB_HSHUB_PCIE_FLUSH_SYSMEM_ADDR_LO, addr_lo);
|
||||
nvkm_wr32(device, hshub + NV_PFB_HSHUB_EG_PCIE_FLUSH_SYSMEM_ADDR_HI, addr_hi);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ gb202_fb_sysmem_flush_page_init(struct nvkm_fb *fb)
|
|||
struct nvkm_device *device = fb->subdev.device;
|
||||
const u64 addr = fb->sysmem.flush_page_addr;
|
||||
|
||||
// Ensure that the address is within hardware limits
|
||||
WARN_ON(fb->sysmem.flush_page_addr > DMA_BIT_MASK(52));
|
||||
|
||||
nvkm_wr32(device, NV_PFB_FBHUB0_PCIE_FLUSH_SYSMEM_ADDR_HI, upper_32_bits(addr));
|
||||
nvkm_wr32(device, NV_PFB_FBHUB0_PCIE_FLUSH_SYSMEM_ADDR_LO, lower_32_bits(addr));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,6 +80,9 @@ gf100_fb_init_page(struct nvkm_fb *fb)
|
|||
void
|
||||
gf100_fb_sysmem_flush_page_init(struct nvkm_fb *fb)
|
||||
{
|
||||
// Ensure that the address can actually fit in the register
|
||||
WARN_ON(fb->sysmem.flush_page_addr > DMA_BIT_MASK(40));
|
||||
|
||||
nvkm_wr32(fb->subdev.device, 0x100c10, fb->sysmem.flush_page_addr >> 8);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ gh100_fb_sysmem_flush_page_init(struct nvkm_fb *fb)
|
|||
const u64 addr = fb->sysmem.flush_page_addr >> NV_PFB_NISO_FLUSH_SYSMEM_ADDR_SHIFT;
|
||||
struct nvkm_device *device = fb->subdev.device;
|
||||
|
||||
// Ensure that the address is within hardware limits
|
||||
WARN_ON(fb->sysmem.flush_page_addr > DMA_BIT_MASK(52));
|
||||
|
||||
nvkm_wr32(device, NV_PFB_FBHUB_PCIE_FLUSH_SYSMEM_ADDR_HI, upper_32_bits(addr));
|
||||
nvkm_wr32(device, NV_PFB_FBHUB_PCIE_FLUSH_SYSMEM_ADDR_LO, lower_32_bits(addr));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -214,6 +214,9 @@ nv50_fb_tags(struct nvkm_fb *base)
|
|||
static void
|
||||
nv50_fb_sysmem_flush_page_init(struct nvkm_fb *fb)
|
||||
{
|
||||
// Ensure that the address can actually fit in the register
|
||||
WARN_ON(fb->sysmem.flush_page_addr > DMA_BIT_MASK(40));
|
||||
|
||||
nvkm_wr32(fb->subdev.device, 0x100c08, fb->sysmem.flush_page_addr >> 8);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue