drm/radeon: remove range check from *_gart_set_page
We never check the return value anyway and if the index isn't valid would crash way before calling the functions. Signed-off-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
0986c1a55c
commit
7f90fc9650
@ -682,15 +682,11 @@ void r100_pci_gart_disable(struct radeon_device *rdev)
|
|||||||
WREG32(RADEON_AIC_HI_ADDR, 0);
|
WREG32(RADEON_AIC_HI_ADDR, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int r100_pci_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
|
void r100_pci_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||||
|
uint64_t addr)
|
||||||
{
|
{
|
||||||
u32 *gtt = rdev->gart.ptr;
|
u32 *gtt = rdev->gart.ptr;
|
||||||
|
|
||||||
if (i < 0 || i > rdev->gart.num_gpu_pages) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
gtt[i] = cpu_to_le32(lower_32_bits(addr));
|
gtt[i] = cpu_to_le32(lower_32_bits(addr));
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void r100_pci_gart_fini(struct radeon_device *rdev)
|
void r100_pci_gart_fini(struct radeon_device *rdev)
|
||||||
|
@ -72,13 +72,11 @@ void rv370_pcie_gart_tlb_flush(struct radeon_device *rdev)
|
|||||||
#define R300_PTE_WRITEABLE (1 << 2)
|
#define R300_PTE_WRITEABLE (1 << 2)
|
||||||
#define R300_PTE_READABLE (1 << 3)
|
#define R300_PTE_READABLE (1 << 3)
|
||||||
|
|
||||||
int rv370_pcie_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
|
void rv370_pcie_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||||
|
uint64_t addr)
|
||||||
{
|
{
|
||||||
void __iomem *ptr = rdev->gart.ptr;
|
void __iomem *ptr = rdev->gart.ptr;
|
||||||
|
|
||||||
if (i < 0 || i > rdev->gart.num_gpu_pages) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
addr = (lower_32_bits(addr) >> 8) |
|
addr = (lower_32_bits(addr) >> 8) |
|
||||||
((upper_32_bits(addr) & 0xff) << 24) |
|
((upper_32_bits(addr) & 0xff) << 24) |
|
||||||
R300_PTE_WRITEABLE | R300_PTE_READABLE;
|
R300_PTE_WRITEABLE | R300_PTE_READABLE;
|
||||||
@ -86,7 +84,6 @@ int rv370_pcie_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
|
|||||||
* on powerpc without HW swappers, it'll get swapped on way
|
* on powerpc without HW swappers, it'll get swapped on way
|
||||||
* into VRAM - so no need for cpu_to_le32 on VRAM tables */
|
* into VRAM - so no need for cpu_to_le32 on VRAM tables */
|
||||||
writel(addr, ((void __iomem *)ptr) + (i * 4));
|
writel(addr, ((void __iomem *)ptr) + (i * 4));
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int rv370_pcie_gart_init(struct radeon_device *rdev)
|
int rv370_pcie_gart_init(struct radeon_device *rdev)
|
||||||
|
@ -1782,7 +1782,8 @@ struct radeon_asic {
|
|||||||
/* gart */
|
/* gart */
|
||||||
struct {
|
struct {
|
||||||
void (*tlb_flush)(struct radeon_device *rdev);
|
void (*tlb_flush)(struct radeon_device *rdev);
|
||||||
int (*set_page)(struct radeon_device *rdev, int i, uint64_t addr);
|
void (*set_page)(struct radeon_device *rdev, unsigned i,
|
||||||
|
uint64_t addr);
|
||||||
} gart;
|
} gart;
|
||||||
struct {
|
struct {
|
||||||
int (*init)(struct radeon_device *rdev);
|
int (*init)(struct radeon_device *rdev);
|
||||||
|
@ -67,7 +67,8 @@ bool r100_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp);
|
|||||||
int r100_asic_reset(struct radeon_device *rdev);
|
int r100_asic_reset(struct radeon_device *rdev);
|
||||||
u32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc);
|
u32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc);
|
||||||
void r100_pci_gart_tlb_flush(struct radeon_device *rdev);
|
void r100_pci_gart_tlb_flush(struct radeon_device *rdev);
|
||||||
int r100_pci_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
|
void r100_pci_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||||
|
uint64_t addr);
|
||||||
void r100_ring_start(struct radeon_device *rdev, struct radeon_ring *ring);
|
void r100_ring_start(struct radeon_device *rdev, struct radeon_ring *ring);
|
||||||
int r100_irq_set(struct radeon_device *rdev);
|
int r100_irq_set(struct radeon_device *rdev);
|
||||||
int r100_irq_process(struct radeon_device *rdev);
|
int r100_irq_process(struct radeon_device *rdev);
|
||||||
@ -171,7 +172,8 @@ extern void r300_fence_ring_emit(struct radeon_device *rdev,
|
|||||||
struct radeon_fence *fence);
|
struct radeon_fence *fence);
|
||||||
extern int r300_cs_parse(struct radeon_cs_parser *p);
|
extern int r300_cs_parse(struct radeon_cs_parser *p);
|
||||||
extern void rv370_pcie_gart_tlb_flush(struct radeon_device *rdev);
|
extern void rv370_pcie_gart_tlb_flush(struct radeon_device *rdev);
|
||||||
extern int rv370_pcie_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
|
extern void rv370_pcie_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||||
|
uint64_t addr);
|
||||||
extern void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes);
|
extern void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes);
|
||||||
extern int rv370_get_pcie_lanes(struct radeon_device *rdev);
|
extern int rv370_get_pcie_lanes(struct radeon_device *rdev);
|
||||||
extern void r300_set_reg_safe(struct radeon_device *rdev);
|
extern void r300_set_reg_safe(struct radeon_device *rdev);
|
||||||
@ -206,7 +208,8 @@ extern void rs400_fini(struct radeon_device *rdev);
|
|||||||
extern int rs400_suspend(struct radeon_device *rdev);
|
extern int rs400_suspend(struct radeon_device *rdev);
|
||||||
extern int rs400_resume(struct radeon_device *rdev);
|
extern int rs400_resume(struct radeon_device *rdev);
|
||||||
void rs400_gart_tlb_flush(struct radeon_device *rdev);
|
void rs400_gart_tlb_flush(struct radeon_device *rdev);
|
||||||
int rs400_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
|
void rs400_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||||
|
uint64_t addr);
|
||||||
uint32_t rs400_mc_rreg(struct radeon_device *rdev, uint32_t reg);
|
uint32_t rs400_mc_rreg(struct radeon_device *rdev, uint32_t reg);
|
||||||
void rs400_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
|
void rs400_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
|
||||||
int rs400_gart_init(struct radeon_device *rdev);
|
int rs400_gart_init(struct radeon_device *rdev);
|
||||||
@ -229,7 +232,8 @@ int rs600_irq_process(struct radeon_device *rdev);
|
|||||||
void rs600_irq_disable(struct radeon_device *rdev);
|
void rs600_irq_disable(struct radeon_device *rdev);
|
||||||
u32 rs600_get_vblank_counter(struct radeon_device *rdev, int crtc);
|
u32 rs600_get_vblank_counter(struct radeon_device *rdev, int crtc);
|
||||||
void rs600_gart_tlb_flush(struct radeon_device *rdev);
|
void rs600_gart_tlb_flush(struct radeon_device *rdev);
|
||||||
int rs600_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
|
void rs600_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||||
|
uint64_t addr);
|
||||||
uint32_t rs600_mc_rreg(struct radeon_device *rdev, uint32_t reg);
|
uint32_t rs600_mc_rreg(struct radeon_device *rdev, uint32_t reg);
|
||||||
void rs600_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
|
void rs600_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
|
||||||
void rs600_bandwidth_update(struct radeon_device *rdev);
|
void rs600_bandwidth_update(struct radeon_device *rdev);
|
||||||
|
@ -212,21 +212,16 @@ void rs400_gart_fini(struct radeon_device *rdev)
|
|||||||
#define RS400_PTE_WRITEABLE (1 << 2)
|
#define RS400_PTE_WRITEABLE (1 << 2)
|
||||||
#define RS400_PTE_READABLE (1 << 3)
|
#define RS400_PTE_READABLE (1 << 3)
|
||||||
|
|
||||||
int rs400_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
|
void rs400_gart_set_page(struct radeon_device *rdev, unsigned i, uint64_t addr)
|
||||||
{
|
{
|
||||||
uint32_t entry;
|
uint32_t entry;
|
||||||
u32 *gtt = rdev->gart.ptr;
|
u32 *gtt = rdev->gart.ptr;
|
||||||
|
|
||||||
if (i < 0 || i > rdev->gart.num_gpu_pages) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
entry = (lower_32_bits(addr) & PAGE_MASK) |
|
entry = (lower_32_bits(addr) & PAGE_MASK) |
|
||||||
((upper_32_bits(addr) & 0xff) << 4) |
|
((upper_32_bits(addr) & 0xff) << 4) |
|
||||||
RS400_PTE_WRITEABLE | RS400_PTE_READABLE;
|
RS400_PTE_WRITEABLE | RS400_PTE_READABLE;
|
||||||
entry = cpu_to_le32(entry);
|
entry = cpu_to_le32(entry);
|
||||||
gtt[i] = entry;
|
gtt[i] = entry;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int rs400_mc_wait_for_idle(struct radeon_device *rdev)
|
int rs400_mc_wait_for_idle(struct radeon_device *rdev)
|
||||||
|
@ -626,20 +626,16 @@ static void rs600_gart_fini(struct radeon_device *rdev)
|
|||||||
radeon_gart_table_vram_free(rdev);
|
radeon_gart_table_vram_free(rdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
int rs600_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
|
void rs600_gart_set_page(struct radeon_device *rdev, unsigned i, uint64_t addr)
|
||||||
{
|
{
|
||||||
void __iomem *ptr = (void *)rdev->gart.ptr;
|
void __iomem *ptr = (void *)rdev->gart.ptr;
|
||||||
|
|
||||||
if (i < 0 || i > rdev->gart.num_gpu_pages) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
addr = addr & 0xFFFFFFFFFFFFF000ULL;
|
addr = addr & 0xFFFFFFFFFFFFF000ULL;
|
||||||
if (addr == rdev->dummy_page.addr)
|
if (addr == rdev->dummy_page.addr)
|
||||||
addr |= R600_PTE_SYSTEM | R600_PTE_SNOOPED;
|
addr |= R600_PTE_SYSTEM | R600_PTE_SNOOPED;
|
||||||
else
|
else
|
||||||
addr |= R600_PTE_GART;
|
addr |= R600_PTE_GART;
|
||||||
writeq(addr, ptr + (i * 8));
|
writeq(addr, ptr + (i * 8));
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int rs600_irq_set(struct radeon_device *rdev)
|
int rs600_irq_set(struct radeon_device *rdev)
|
||||||
|
Loading…
Reference in New Issue
Block a user