drm: remove usage of drm_pci_alloc/free
Remove usage of legacy dma-api abstraction in preparation for removal Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20210423020248.3427369-1-joseph.kogut@gmail.com
This commit is contained in:
parent
355b602961
commit
70556e24e1
@ -675,12 +675,17 @@ int drm_legacy_rmmap_ioctl(struct drm_device *dev, void *data,
|
|||||||
static void drm_cleanup_buf_error(struct drm_device *dev,
|
static void drm_cleanup_buf_error(struct drm_device *dev,
|
||||||
struct drm_buf_entry *entry)
|
struct drm_buf_entry *entry)
|
||||||
{
|
{
|
||||||
|
drm_dma_handle_t *dmah;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (entry->seg_count) {
|
if (entry->seg_count) {
|
||||||
for (i = 0; i < entry->seg_count; i++) {
|
for (i = 0; i < entry->seg_count; i++) {
|
||||||
if (entry->seglist[i]) {
|
if (entry->seglist[i]) {
|
||||||
drm_pci_free(dev, entry->seglist[i]);
|
dmah = entry->seglist[i];
|
||||||
|
dma_free_coherent(dev->dev,
|
||||||
|
dmah->size,
|
||||||
|
dmah->vaddr,
|
||||||
|
dmah->busaddr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
kfree(entry->seglist);
|
kfree(entry->seglist);
|
||||||
@ -979,10 +984,18 @@ int drm_legacy_addbufs_pci(struct drm_device *dev,
|
|||||||
page_count = 0;
|
page_count = 0;
|
||||||
|
|
||||||
while (entry->buf_count < count) {
|
while (entry->buf_count < count) {
|
||||||
|
dmah = kmalloc(sizeof(drm_dma_handle_t), GFP_KERNEL);
|
||||||
|
if (!dmah)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
dmah = drm_pci_alloc(dev, PAGE_SIZE << page_order, 0x1000);
|
dmah->size = total;
|
||||||
|
dmah->vaddr = dma_alloc_coherent(dev->dev,
|
||||||
|
dmah->size,
|
||||||
|
&dmah->busaddr,
|
||||||
|
GFP_KERNEL);
|
||||||
|
if (!dmah->vaddr) {
|
||||||
|
kfree(dmah);
|
||||||
|
|
||||||
if (!dmah) {
|
|
||||||
/* Set count correctly so we free the proper amount. */
|
/* Set count correctly so we free the proper amount. */
|
||||||
entry->buf_count = count;
|
entry->buf_count = count;
|
||||||
entry->seg_count = count;
|
entry->seg_count = count;
|
||||||
|
@ -81,6 +81,7 @@ int drm_legacy_dma_setup(struct drm_device *dev)
|
|||||||
void drm_legacy_dma_takedown(struct drm_device *dev)
|
void drm_legacy_dma_takedown(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
struct drm_device_dma *dma = dev->dma;
|
struct drm_device_dma *dma = dev->dma;
|
||||||
|
drm_dma_handle_t *dmah;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
|
if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
|
||||||
@ -100,7 +101,12 @@ void drm_legacy_dma_takedown(struct drm_device *dev)
|
|||||||
dma->bufs[i].seg_count);
|
dma->bufs[i].seg_count);
|
||||||
for (j = 0; j < dma->bufs[i].seg_count; j++) {
|
for (j = 0; j < dma->bufs[i].seg_count; j++) {
|
||||||
if (dma->bufs[i].seglist[j]) {
|
if (dma->bufs[i].seglist[j]) {
|
||||||
drm_pci_free(dev, dma->bufs[i].seglist[j]);
|
dmah = dma->bufs[i].seglist[j];
|
||||||
|
dma_free_coherent(dev->dev,
|
||||||
|
dmah->size,
|
||||||
|
dmah->vaddr,
|
||||||
|
dmah->busaddr);
|
||||||
|
kfree(dmah);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
kfree(dma->bufs[i].seglist);
|
kfree(dma->bufs[i].seglist);
|
||||||
|
@ -45,18 +45,32 @@
|
|||||||
static int drm_ati_alloc_pcigart_table(struct drm_device *dev,
|
static int drm_ati_alloc_pcigart_table(struct drm_device *dev,
|
||||||
struct drm_ati_pcigart_info *gart_info)
|
struct drm_ati_pcigart_info *gart_info)
|
||||||
{
|
{
|
||||||
gart_info->table_handle = drm_pci_alloc(dev, gart_info->table_size,
|
drm_dma_handle_t *dmah = kmalloc(sizeof(drm_dma_handle_t), GFP_KERNEL);
|
||||||
PAGE_SIZE);
|
|
||||||
if (gart_info->table_handle == NULL)
|
if (!dmah)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
dmah->size = gart_info->table_size;
|
||||||
|
dmah->vaddr = dma_alloc_coherent(dev->dev,
|
||||||
|
dmah->size,
|
||||||
|
&dmah->busaddr,
|
||||||
|
GFP_KERNEL);
|
||||||
|
|
||||||
|
if (!dmah->vaddr) {
|
||||||
|
kfree(dmah);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
gart_info->table_handle = dmah;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void drm_ati_free_pcigart_table(struct drm_device *dev,
|
static void drm_ati_free_pcigart_table(struct drm_device *dev,
|
||||||
struct drm_ati_pcigart_info *gart_info)
|
struct drm_ati_pcigart_info *gart_info)
|
||||||
{
|
{
|
||||||
drm_pci_free(dev, gart_info->table_handle);
|
drm_dma_handle_t *dmah = gart_info->table_handle;
|
||||||
|
|
||||||
|
dma_free_coherent(dev->dev, dmah->size, dmah->vaddr, dmah->busaddr);
|
||||||
gart_info->table_handle = NULL;
|
gart_info->table_handle = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user