backend.c (c58310bf4933986513020fa90b4190c7492995ae) backend.c (da503fa60b84d5945deb3ab74efdd0bec61df4a1)
1/*
2 * AGPGART driver backend routines.
3 * Copyright (C) 2004 Silicon Graphics, Inc.
4 * Copyright (C) 2002-2003 Dave Jones.
5 * Copyright (C) 1999 Jeff Hartmann.
6 * Copyright (C) 1999 Precision Insight, Inc.
7 * Copyright (C) 1999 Xi Graphics, Inc.
8 *

--- 174 unchanged lines hidden (view full) ---

183 rc = -EINVAL;
184 goto err_out;
185 }
186
187 return 0;
188
189err_out:
190 if (bridge->driver->needs_scratch_page) {
1/*
2 * AGPGART driver backend routines.
3 * Copyright (C) 2004 Silicon Graphics, Inc.
4 * Copyright (C) 2002-2003 Dave Jones.
5 * Copyright (C) 1999 Jeff Hartmann.
6 * Copyright (C) 1999 Precision Insight, Inc.
7 * Copyright (C) 1999 Xi Graphics, Inc.
8 *

--- 174 unchanged lines hidden (view full) ---

183 rc = -EINVAL;
184 goto err_out;
185 }
186
187 return 0;
188
189err_out:
190 if (bridge->driver->needs_scratch_page) {
191 bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real),
192 AGP_PAGE_DESTROY_UNMAP);
193 bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real),
194 AGP_PAGE_DESTROY_FREE);
191 void *va = gart_to_virt(bridge->scratch_page_real);
192
193 bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
194 bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
195 }
196 if (got_gatt)
197 bridge->driver->free_gatt_table(bridge);
198 if (got_keylist) {
199 vfree(bridge->key_list);
200 bridge->key_list = NULL;
201 }
202 return rc;

--- 7 unchanged lines hidden (view full) ---

210 if (bridge->driver->free_gatt_table)
211 bridge->driver->free_gatt_table(bridge);
212
213 vfree(bridge->key_list);
214 bridge->key_list = NULL;
215
216 if (bridge->driver->agp_destroy_page &&
217 bridge->driver->needs_scratch_page) {
195 }
196 if (got_gatt)
197 bridge->driver->free_gatt_table(bridge);
198 if (got_keylist) {
199 vfree(bridge->key_list);
200 bridge->key_list = NULL;
201 }
202 return rc;

--- 7 unchanged lines hidden (view full) ---

210 if (bridge->driver->free_gatt_table)
211 bridge->driver->free_gatt_table(bridge);
212
213 vfree(bridge->key_list);
214 bridge->key_list = NULL;
215
216 if (bridge->driver->agp_destroy_page &&
217 bridge->driver->needs_scratch_page) {
218 bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real),
219 AGP_PAGE_DESTROY_UNMAP);
220 bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real),
221 AGP_PAGE_DESTROY_FREE);
218 void *va = gart_to_virt(bridge->scratch_page_real);
219
220 bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
221 bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
222 }
223}
224
225/* When we remove the global variable agp_bridge from all drivers
226 * then agp_alloc_bridge and agp_generic_find_bridge need to be updated
227 */
228
229struct agp_bridge_data *agp_alloc_bridge(void)

--- 124 unchanged lines hidden ---
222 }
223}
224
225/* When we remove the global variable agp_bridge from all drivers
226 * then agp_alloc_bridge and agp_generic_find_bridge need to be updated
227 */
228
229struct agp_bridge_data *agp_alloc_bridge(void)

--- 124 unchanged lines hidden ---