From: Christoph Hellwig <hch@lst.de> To: Tony Luck <tony.luck@intel.com>, Fenghua Yu <fenghua.yu@intel.com> Cc: Arnd Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 03/29] char/agp: remove the sgi-agp driver Date: Wed, 7 Aug 2019 16:30:23 +0300 [thread overview] Message-ID: <20190807133049.20893-4-hch@lst.de> (raw) In-Reply-To: <20190807133049.20893-1-hch@lst.de> The SGI SN2 support is about to be removed. Remove this driver that depends on the SN2 support. Signed-off-by: Christoph Hellwig <hch@lst.de> --- arch/ia64/configs/generic_defconfig | 1 - arch/ia64/configs/gensparse_defconfig | 1 - drivers/char/agp/Kconfig | 7 - drivers/char/agp/Makefile | 1 - drivers/char/agp/sgi-agp.c | 338 -------------------------- 5 files changed, 348 deletions(-) delete mode 100644 drivers/char/agp/sgi-agp.c diff --git a/arch/ia64/configs/generic_defconfig b/arch/ia64/configs/generic_defconfig index 1fc4d5a77e0d..79b88384c885 100644 --- a/arch/ia64/configs/generic_defconfig +++ b/arch/ia64/configs/generic_defconfig @@ -104,7 +104,6 @@ CONFIG_HPET=y CONFIG_AGP=m CONFIG_AGP_I460=m CONFIG_AGP_HP_ZX1=m -CONFIG_AGP_SGI_TIOCA=m CONFIG_DRM=m CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m diff --git a/arch/ia64/configs/gensparse_defconfig b/arch/ia64/configs/gensparse_defconfig index 289ed714ad8b..f1490580ed69 100644 --- a/arch/ia64/configs/gensparse_defconfig +++ b/arch/ia64/configs/gensparse_defconfig @@ -94,7 +94,6 @@ CONFIG_HPET=y CONFIG_AGP=m CONFIG_AGP_I460=m CONFIG_AGP_HP_ZX1=m -CONFIG_AGP_SGI_TIOCA=m CONFIG_DRM=m CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m diff --git a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig index 6231714ef3c8..be50d7a93f4c 100644 --- a/drivers/char/agp/Kconfig +++ b/drivers/char/agp/Kconfig @@ -150,13 +150,6 @@ config AGP_EFFICEON This option gives you AGP support for the Transmeta Efficeon series processors with integrated northbridges. -config AGP_SGI_TIOCA - tristate "SGI TIO chipset AGP support" - depends on AGP && (IA64_SGI_SN2 || IA64_GENERIC) - help - This option gives you AGP GART support for the SGI TIO chipset - for IA64 processors. - config INTEL_GTT tristate depends on X86 && PCI diff --git a/drivers/char/agp/Makefile b/drivers/char/agp/Makefile index 4a786ffd9dee..cb2497d157f6 100644 --- a/drivers/char/agp/Makefile +++ b/drivers/char/agp/Makefile @@ -16,7 +16,6 @@ obj-$(CONFIG_AGP_I460) += i460-agp.o obj-$(CONFIG_AGP_INTEL) += intel-agp.o obj-$(CONFIG_INTEL_GTT) += intel-gtt.o obj-$(CONFIG_AGP_NVIDIA) += nvidia-agp.o -obj-$(CONFIG_AGP_SGI_TIOCA) += sgi-agp.o obj-$(CONFIG_AGP_SIS) += sis-agp.o obj-$(CONFIG_AGP_SWORKS) += sworks-agp.o obj-$(CONFIG_AGP_UNINORTH) += uninorth-agp.o diff --git a/drivers/char/agp/sgi-agp.c b/drivers/char/agp/sgi-agp.c deleted file mode 100644 index e7d5bdc02d93..000000000000 --- a/drivers/char/agp/sgi-agp.c +++ /dev/null @@ -1,338 +0,0 @@ -/* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * Copyright (C) 2003-2005 Silicon Graphics, Inc. All Rights Reserved. - */ - -/* - * SGI TIOCA AGPGART routines. - * - */ - -#include <linux/acpi.h> -#include <linux/module.h> -#include <linux/pci.h> -#include <linux/slab.h> -#include <linux/agp_backend.h> -#include <asm/sn/addrs.h> -#include <asm/sn/io.h> -#include <asm/sn/pcidev.h> -#include <asm/sn/pcibus_provider_defs.h> -#include <asm/sn/tioca_provider.h> -#include "agp.h" - -extern int agp_memory_reserved; -extern uint32_t tioca_gart_found; -extern struct list_head tioca_list; -static struct agp_bridge_data **sgi_tioca_agp_bridges; - -/* - * The aperature size and related information is set up at TIOCA init time. - * Values for this table will be extracted and filled in at - * sgi_tioca_fetch_size() time. - */ - -static struct aper_size_info_fixed sgi_tioca_sizes[] = { - {0, 0, 0}, -}; - -static struct page *sgi_tioca_alloc_page(struct agp_bridge_data *bridge) -{ - struct page *page; - int nid; - struct tioca_kernel *info = - (struct tioca_kernel *)bridge->dev_private_data; - - nid = info->ca_closest_node; - page = alloc_pages_node(nid, GFP_KERNEL, 0); - if (!page) - return NULL; - - get_page(page); - atomic_inc(&agp_bridge->current_memory_agp); - return page; -} - -/* - * Flush GART tlb's. Cannot selectively flush based on memory so the mem - * arg is ignored. - */ - -static void sgi_tioca_tlbflush(struct agp_memory *mem) -{ - tioca_tlbflush(mem->bridge->dev_private_data); -} - -/* - * Given an address of a host physical page, turn it into a valid gart - * entry. - */ -static unsigned long -sgi_tioca_mask_memory(struct agp_bridge_data *bridge, dma_addr_t addr, - int type) -{ - return tioca_physpage_to_gart(addr); -} - -static void sgi_tioca_agp_enable(struct agp_bridge_data *bridge, u32 mode) -{ - tioca_fastwrite_enable(bridge->dev_private_data); -} - -/* - * sgi_tioca_configure() doesn't have anything to do since the base CA driver - * has alreay set up the GART. - */ - -static int sgi_tioca_configure(void) -{ - return 0; -} - -/* - * Determine gfx aperature size. This has already been determined by the - * CA driver init, so just need to set agp_bridge values accordingly. - */ - -static int sgi_tioca_fetch_size(void) -{ - struct tioca_kernel *info = - (struct tioca_kernel *)agp_bridge->dev_private_data; - - sgi_tioca_sizes[0].size = info->ca_gfxap_size / MB(1); - sgi_tioca_sizes[0].num_entries = info->ca_gfxgart_entries; - - return sgi_tioca_sizes[0].size; -} - -static int sgi_tioca_create_gatt_table(struct agp_bridge_data *bridge) -{ - struct tioca_kernel *info = - (struct tioca_kernel *)bridge->dev_private_data; - - bridge->gatt_table_real = (u32 *) info->ca_gfxgart; - bridge->gatt_table = bridge->gatt_table_real; - bridge->gatt_bus_addr = info->ca_gfxgart_base; - - return 0; -} - -static int sgi_tioca_free_gatt_table(struct agp_bridge_data *bridge) -{ - return 0; -} - -static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start, - int type) -{ - int num_entries; - size_t i; - off_t j; - void *temp; - struct agp_bridge_data *bridge; - u64 *table; - - bridge = mem->bridge; - if (!bridge) - return -EINVAL; - - table = (u64 *)bridge->gatt_table; - - temp = bridge->current_size; - - switch (bridge->driver->size_type) { - case U8_APER_SIZE: - num_entries = A_SIZE_8(temp)->num_entries; - break; - case U16_APER_SIZE: - num_entries = A_SIZE_16(temp)->num_entries; - break; - case U32_APER_SIZE: - num_entries = A_SIZE_32(temp)->num_entries; - break; - case FIXED_APER_SIZE: - num_entries = A_SIZE_FIX(temp)->num_entries; - break; - case LVL2_APER_SIZE: - return -EINVAL; - default: - num_entries = 0; - break; - } - - num_entries -= agp_memory_reserved / PAGE_SIZE; - if (num_entries < 0) - num_entries = 0; - - if (type != 0 || mem->type != 0) { - return -EINVAL; - } - - if ((pg_start + mem->page_count) > num_entries) - return -EINVAL; - - j = pg_start; - - while (j < (pg_start + mem->page_count)) { - if (table[j]) - return -EBUSY; - j++; - } - - if (!mem->is_flushed) { - bridge->driver->cache_flush(); - mem->is_flushed = true; - } - - for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { - table[j] = - bridge->driver->mask_memory(bridge, - page_to_phys(mem->pages[i]), - mem->type); - } - - bridge->driver->tlb_flush(mem); - return 0; -} - -static int sgi_tioca_remove_memory(struct agp_memory *mem, off_t pg_start, - int type) -{ - size_t i; - struct agp_bridge_data *bridge; - u64 *table; - - bridge = mem->bridge; - if (!bridge) - return -EINVAL; - - if (type != 0 || mem->type != 0) { - return -EINVAL; - } - - table = (u64 *)bridge->gatt_table; - - for (i = pg_start; i < (mem->page_count + pg_start); i++) { - table[i] = 0; - } - - bridge->driver->tlb_flush(mem); - return 0; -} - -static void sgi_tioca_cache_flush(void) -{ -} - -/* - * Cleanup. Nothing to do as the CA driver owns the GART. - */ - -static void sgi_tioca_cleanup(void) -{ -} - -static struct agp_bridge_data *sgi_tioca_find_bridge(struct pci_dev *pdev) -{ - struct agp_bridge_data *bridge; - - list_for_each_entry(bridge, &agp_bridges, list) { - if (bridge->dev->bus == pdev->bus) - break; - } - return bridge; -} - -const struct agp_bridge_driver sgi_tioca_driver = { - .owner = THIS_MODULE, - .size_type = U16_APER_SIZE, - .configure = sgi_tioca_configure, - .fetch_size = sgi_tioca_fetch_size, - .cleanup = sgi_tioca_cleanup, - .tlb_flush = sgi_tioca_tlbflush, - .mask_memory = sgi_tioca_mask_memory, - .agp_enable = sgi_tioca_agp_enable, - .cache_flush = sgi_tioca_cache_flush, - .create_gatt_table = sgi_tioca_create_gatt_table, - .free_gatt_table = sgi_tioca_free_gatt_table, - .insert_memory = sgi_tioca_insert_memory, - .remove_memory = sgi_tioca_remove_memory, - .alloc_by_type = agp_generic_alloc_by_type, - .free_by_type = agp_generic_free_by_type, - .agp_alloc_page = sgi_tioca_alloc_page, - .agp_destroy_page = agp_generic_destroy_page, - .agp_type_to_mask_type = agp_generic_type_to_mask_type, - .cant_use_aperture = true, - .needs_scratch_page = false, - .num_aperture_sizes = 1, -}; - -static int agp_sgi_init(void) -{ - unsigned int j; - struct tioca_kernel *info; - struct pci_dev *pdev = NULL; - - if (tioca_gart_found) - printk(KERN_INFO PFX "SGI TIO CA GART driver initialized.\n"); - else - return 0; - - sgi_tioca_agp_bridges = kmalloc_array(tioca_gart_found, - sizeof(struct agp_bridge_data *), - GFP_KERNEL); - if (!sgi_tioca_agp_bridges) - return -ENOMEM; - - j = 0; - list_for_each_entry(info, &tioca_list, ca_list) { - if (list_empty(info->ca_devices)) - continue; - list_for_each_entry(pdev, info->ca_devices, bus_list) { - u8 cap_ptr; - - if (pdev->class != (PCI_CLASS_DISPLAY_VGA << 8)) - continue; - cap_ptr = pci_find_capability(pdev, PCI_CAP_ID_AGP); - if (!cap_ptr) - continue; - } - sgi_tioca_agp_bridges[j] = agp_alloc_bridge(); - printk(KERN_INFO PFX "bridge %d = 0x%p\n", j, - sgi_tioca_agp_bridges[j]); - if (sgi_tioca_agp_bridges[j]) { - sgi_tioca_agp_bridges[j]->dev = pdev; - sgi_tioca_agp_bridges[j]->dev_private_data = info; - sgi_tioca_agp_bridges[j]->driver = &sgi_tioca_driver; - sgi_tioca_agp_bridges[j]->gart_bus_addr = - info->ca_gfxap_base; - sgi_tioca_agp_bridges[j]->mode = (0x7D << 24) | /* 126 requests */ - (0x1 << 9) | /* SBA supported */ - (0x1 << 5) | /* 64-bit addresses supported */ - (0x1 << 4) | /* FW supported */ - (0x1 << 3) | /* AGP 3.0 mode */ - 0x2; /* 8x transfer only */ - sgi_tioca_agp_bridges[j]->current_size = - sgi_tioca_agp_bridges[j]->previous_size = - (void *)&sgi_tioca_sizes[0]; - agp_add_bridge(sgi_tioca_agp_bridges[j]); - } - j++; - } - - agp_find_bridge = &sgi_tioca_find_bridge; - return 0; -} - -static void agp_sgi_cleanup(void) -{ - kfree(sgi_tioca_agp_bridges); - sgi_tioca_agp_bridges = NULL; -} - -module_init(agp_sgi_init); -module_exit(agp_sgi_cleanup); - -MODULE_LICENSE("GPL and additional rights"); -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de> To: Tony Luck <tony.luck@intel.com>, Fenghua Yu <fenghua.yu@intel.com> Cc: Arnd Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 03/29] char/agp: remove the sgi-agp driver Date: Wed, 07 Aug 2019 13:30:23 +0000 [thread overview] Message-ID: <20190807133049.20893-4-hch@lst.de> (raw) In-Reply-To: <20190807133049.20893-1-hch@lst.de> The SGI SN2 support is about to be removed. Remove this driver that depends on the SN2 support. Signed-off-by: Christoph Hellwig <hch@lst.de> --- arch/ia64/configs/generic_defconfig | 1 - arch/ia64/configs/gensparse_defconfig | 1 - drivers/char/agp/Kconfig | 7 - drivers/char/agp/Makefile | 1 - drivers/char/agp/sgi-agp.c | 338 -------------------------- 5 files changed, 348 deletions(-) delete mode 100644 drivers/char/agp/sgi-agp.c diff --git a/arch/ia64/configs/generic_defconfig b/arch/ia64/configs/generic_defconfig index 1fc4d5a77e0d..79b88384c885 100644 --- a/arch/ia64/configs/generic_defconfig +++ b/arch/ia64/configs/generic_defconfig @@ -104,7 +104,6 @@ CONFIG_HPET=y CONFIG_AGP=m CONFIG_AGP_I460=m CONFIG_AGP_HP_ZX1=m -CONFIG_AGP_SGI_TIOCA=m CONFIG_DRM=m CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m diff --git a/arch/ia64/configs/gensparse_defconfig b/arch/ia64/configs/gensparse_defconfig index 289ed714ad8b..f1490580ed69 100644 --- a/arch/ia64/configs/gensparse_defconfig +++ b/arch/ia64/configs/gensparse_defconfig @@ -94,7 +94,6 @@ CONFIG_HPET=y CONFIG_AGP=m CONFIG_AGP_I460=m CONFIG_AGP_HP_ZX1=m -CONFIG_AGP_SGI_TIOCA=m CONFIG_DRM=m CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m diff --git a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig index 6231714ef3c8..be50d7a93f4c 100644 --- a/drivers/char/agp/Kconfig +++ b/drivers/char/agp/Kconfig @@ -150,13 +150,6 @@ config AGP_EFFICEON This option gives you AGP support for the Transmeta Efficeon series processors with integrated northbridges. -config AGP_SGI_TIOCA - tristate "SGI TIO chipset AGP support" - depends on AGP && (IA64_SGI_SN2 || IA64_GENERIC) - help - This option gives you AGP GART support for the SGI TIO chipset - for IA64 processors. - config INTEL_GTT tristate depends on X86 && PCI diff --git a/drivers/char/agp/Makefile b/drivers/char/agp/Makefile index 4a786ffd9dee..cb2497d157f6 100644 --- a/drivers/char/agp/Makefile +++ b/drivers/char/agp/Makefile @@ -16,7 +16,6 @@ obj-$(CONFIG_AGP_I460) += i460-agp.o obj-$(CONFIG_AGP_INTEL) += intel-agp.o obj-$(CONFIG_INTEL_GTT) += intel-gtt.o obj-$(CONFIG_AGP_NVIDIA) += nvidia-agp.o -obj-$(CONFIG_AGP_SGI_TIOCA) += sgi-agp.o obj-$(CONFIG_AGP_SIS) += sis-agp.o obj-$(CONFIG_AGP_SWORKS) += sworks-agp.o obj-$(CONFIG_AGP_UNINORTH) += uninorth-agp.o diff --git a/drivers/char/agp/sgi-agp.c b/drivers/char/agp/sgi-agp.c deleted file mode 100644 index e7d5bdc02d93..000000000000 --- a/drivers/char/agp/sgi-agp.c +++ /dev/null @@ -1,338 +0,0 @@ -/* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * Copyright (C) 2003-2005 Silicon Graphics, Inc. All Rights Reserved. - */ - -/* - * SGI TIOCA AGPGART routines. - * - */ - -#include <linux/acpi.h> -#include <linux/module.h> -#include <linux/pci.h> -#include <linux/slab.h> -#include <linux/agp_backend.h> -#include <asm/sn/addrs.h> -#include <asm/sn/io.h> -#include <asm/sn/pcidev.h> -#include <asm/sn/pcibus_provider_defs.h> -#include <asm/sn/tioca_provider.h> -#include "agp.h" - -extern int agp_memory_reserved; -extern uint32_t tioca_gart_found; -extern struct list_head tioca_list; -static struct agp_bridge_data **sgi_tioca_agp_bridges; - -/* - * The aperature size and related information is set up at TIOCA init time. - * Values for this table will be extracted and filled in at - * sgi_tioca_fetch_size() time. - */ - -static struct aper_size_info_fixed sgi_tioca_sizes[] = { - {0, 0, 0}, -}; - -static struct page *sgi_tioca_alloc_page(struct agp_bridge_data *bridge) -{ - struct page *page; - int nid; - struct tioca_kernel *info - (struct tioca_kernel *)bridge->dev_private_data; - - nid = info->ca_closest_node; - page = alloc_pages_node(nid, GFP_KERNEL, 0); - if (!page) - return NULL; - - get_page(page); - atomic_inc(&agp_bridge->current_memory_agp); - return page; -} - -/* - * Flush GART tlb's. Cannot selectively flush based on memory so the mem - * arg is ignored. - */ - -static void sgi_tioca_tlbflush(struct agp_memory *mem) -{ - tioca_tlbflush(mem->bridge->dev_private_data); -} - -/* - * Given an address of a host physical page, turn it into a valid gart - * entry. - */ -static unsigned long -sgi_tioca_mask_memory(struct agp_bridge_data *bridge, dma_addr_t addr, - int type) -{ - return tioca_physpage_to_gart(addr); -} - -static void sgi_tioca_agp_enable(struct agp_bridge_data *bridge, u32 mode) -{ - tioca_fastwrite_enable(bridge->dev_private_data); -} - -/* - * sgi_tioca_configure() doesn't have anything to do since the base CA driver - * has alreay set up the GART. - */ - -static int sgi_tioca_configure(void) -{ - return 0; -} - -/* - * Determine gfx aperature size. This has already been determined by the - * CA driver init, so just need to set agp_bridge values accordingly. - */ - -static int sgi_tioca_fetch_size(void) -{ - struct tioca_kernel *info - (struct tioca_kernel *)agp_bridge->dev_private_data; - - sgi_tioca_sizes[0].size = info->ca_gfxap_size / MB(1); - sgi_tioca_sizes[0].num_entries = info->ca_gfxgart_entries; - - return sgi_tioca_sizes[0].size; -} - -static int sgi_tioca_create_gatt_table(struct agp_bridge_data *bridge) -{ - struct tioca_kernel *info - (struct tioca_kernel *)bridge->dev_private_data; - - bridge->gatt_table_real = (u32 *) info->ca_gfxgart; - bridge->gatt_table = bridge->gatt_table_real; - bridge->gatt_bus_addr = info->ca_gfxgart_base; - - return 0; -} - -static int sgi_tioca_free_gatt_table(struct agp_bridge_data *bridge) -{ - return 0; -} - -static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start, - int type) -{ - int num_entries; - size_t i; - off_t j; - void *temp; - struct agp_bridge_data *bridge; - u64 *table; - - bridge = mem->bridge; - if (!bridge) - return -EINVAL; - - table = (u64 *)bridge->gatt_table; - - temp = bridge->current_size; - - switch (bridge->driver->size_type) { - case U8_APER_SIZE: - num_entries = A_SIZE_8(temp)->num_entries; - break; - case U16_APER_SIZE: - num_entries = A_SIZE_16(temp)->num_entries; - break; - case U32_APER_SIZE: - num_entries = A_SIZE_32(temp)->num_entries; - break; - case FIXED_APER_SIZE: - num_entries = A_SIZE_FIX(temp)->num_entries; - break; - case LVL2_APER_SIZE: - return -EINVAL; - default: - num_entries = 0; - break; - } - - num_entries -= agp_memory_reserved / PAGE_SIZE; - if (num_entries < 0) - num_entries = 0; - - if (type != 0 || mem->type != 0) { - return -EINVAL; - } - - if ((pg_start + mem->page_count) > num_entries) - return -EINVAL; - - j = pg_start; - - while (j < (pg_start + mem->page_count)) { - if (table[j]) - return -EBUSY; - j++; - } - - if (!mem->is_flushed) { - bridge->driver->cache_flush(); - mem->is_flushed = true; - } - - for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { - table[j] - bridge->driver->mask_memory(bridge, - page_to_phys(mem->pages[i]), - mem->type); - } - - bridge->driver->tlb_flush(mem); - return 0; -} - -static int sgi_tioca_remove_memory(struct agp_memory *mem, off_t pg_start, - int type) -{ - size_t i; - struct agp_bridge_data *bridge; - u64 *table; - - bridge = mem->bridge; - if (!bridge) - return -EINVAL; - - if (type != 0 || mem->type != 0) { - return -EINVAL; - } - - table = (u64 *)bridge->gatt_table; - - for (i = pg_start; i < (mem->page_count + pg_start); i++) { - table[i] = 0; - } - - bridge->driver->tlb_flush(mem); - return 0; -} - -static void sgi_tioca_cache_flush(void) -{ -} - -/* - * Cleanup. Nothing to do as the CA driver owns the GART. - */ - -static void sgi_tioca_cleanup(void) -{ -} - -static struct agp_bridge_data *sgi_tioca_find_bridge(struct pci_dev *pdev) -{ - struct agp_bridge_data *bridge; - - list_for_each_entry(bridge, &agp_bridges, list) { - if (bridge->dev->bus = pdev->bus) - break; - } - return bridge; -} - -const struct agp_bridge_driver sgi_tioca_driver = { - .owner = THIS_MODULE, - .size_type = U16_APER_SIZE, - .configure = sgi_tioca_configure, - .fetch_size = sgi_tioca_fetch_size, - .cleanup = sgi_tioca_cleanup, - .tlb_flush = sgi_tioca_tlbflush, - .mask_memory = sgi_tioca_mask_memory, - .agp_enable = sgi_tioca_agp_enable, - .cache_flush = sgi_tioca_cache_flush, - .create_gatt_table = sgi_tioca_create_gatt_table, - .free_gatt_table = sgi_tioca_free_gatt_table, - .insert_memory = sgi_tioca_insert_memory, - .remove_memory = sgi_tioca_remove_memory, - .alloc_by_type = agp_generic_alloc_by_type, - .free_by_type = agp_generic_free_by_type, - .agp_alloc_page = sgi_tioca_alloc_page, - .agp_destroy_page = agp_generic_destroy_page, - .agp_type_to_mask_type = agp_generic_type_to_mask_type, - .cant_use_aperture = true, - .needs_scratch_page = false, - .num_aperture_sizes = 1, -}; - -static int agp_sgi_init(void) -{ - unsigned int j; - struct tioca_kernel *info; - struct pci_dev *pdev = NULL; - - if (tioca_gart_found) - printk(KERN_INFO PFX "SGI TIO CA GART driver initialized.\n"); - else - return 0; - - sgi_tioca_agp_bridges = kmalloc_array(tioca_gart_found, - sizeof(struct agp_bridge_data *), - GFP_KERNEL); - if (!sgi_tioca_agp_bridges) - return -ENOMEM; - - j = 0; - list_for_each_entry(info, &tioca_list, ca_list) { - if (list_empty(info->ca_devices)) - continue; - list_for_each_entry(pdev, info->ca_devices, bus_list) { - u8 cap_ptr; - - if (pdev->class != (PCI_CLASS_DISPLAY_VGA << 8)) - continue; - cap_ptr = pci_find_capability(pdev, PCI_CAP_ID_AGP); - if (!cap_ptr) - continue; - } - sgi_tioca_agp_bridges[j] = agp_alloc_bridge(); - printk(KERN_INFO PFX "bridge %d = 0x%p\n", j, - sgi_tioca_agp_bridges[j]); - if (sgi_tioca_agp_bridges[j]) { - sgi_tioca_agp_bridges[j]->dev = pdev; - sgi_tioca_agp_bridges[j]->dev_private_data = info; - sgi_tioca_agp_bridges[j]->driver = &sgi_tioca_driver; - sgi_tioca_agp_bridges[j]->gart_bus_addr - info->ca_gfxap_base; - sgi_tioca_agp_bridges[j]->mode = (0x7D << 24) | /* 126 requests */ - (0x1 << 9) | /* SBA supported */ - (0x1 << 5) | /* 64-bit addresses supported */ - (0x1 << 4) | /* FW supported */ - (0x1 << 3) | /* AGP 3.0 mode */ - 0x2; /* 8x transfer only */ - sgi_tioca_agp_bridges[j]->current_size - sgi_tioca_agp_bridges[j]->previous_size - (void *)&sgi_tioca_sizes[0]; - agp_add_bridge(sgi_tioca_agp_bridges[j]); - } - j++; - } - - agp_find_bridge = &sgi_tioca_find_bridge; - return 0; -} - -static void agp_sgi_cleanup(void) -{ - kfree(sgi_tioca_agp_bridges); - sgi_tioca_agp_bridges = NULL; -} - -module_init(agp_sgi_init); -module_exit(agp_sgi_cleanup); - -MODULE_LICENSE("GPL and additional rights"); -- 2.20.1
next prev parent reply other threads:[~2019-08-07 13:31 UTC|newest] Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-07 13:30 RFC: remove sn2, hpsim and ia64 machvecs Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 01/29] char: remove the SGI snsc driver Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 02/29] char: remove the SGI tiocx/mbcs driver Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig [this message] 2019-08-07 13:30 ` [PATCH 03/29] char/agp: remove the sgi-agp driver Christoph Hellwig 2019-08-07 13:30 ` [PATCH 04/29] ide: remove the sgiioc4 driver Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 05/29] PCI/hotplug: remove the sgi_hotplug driver Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 06/29] tty/serial: remove the sn_console driver Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 07/29] tty/serial: remove the ioc4_serial driver Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 08/29] tty/serial: remove the ioc3_serial driver Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 09/29] char/mspec: remove SGI SN2 support Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 10/29] misc/sgi-xp: " Christoph Hellwig 2019-08-07 13:30 ` [PATCH 11/29] qla1280: " Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 12/29] qla2xxx: " Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 13/29] drivers: remove the SGI SN2 IOC3 base support Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 14/29] drivers: remove the SGI SN2 IOC4 " Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 16/29] ia64: remove now unused machvec indirections Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 17/29] ia64: remove the hpsim platform Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 18/29] ia64: remove CONFIG_PCI ifdefs Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 19/29] ia64: remove CONFIG_ACPI ifdefs Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 20/29] ia64: remove the zx1 swiotlb machvec Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 21/29] ia64: remove the SGI UV simulator support Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 22/29] ia64: remove the unused sn_coherency_id symbol Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 23/29] ia64: rework iommu probing Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 24/29] ia64: move the ROOT_DEV setup to common code Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 25/29] ia64: move the screen_info " Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 26/29] ia64: remove support for machvecs Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 27/29] ia64: remove CONFIG_SWIOTLB ifdefs Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 28/29] ia64: remove CONFIG_ACPI_NUMA ifdefs Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:30 ` [PATCH 29/29] genirq: remove the is_affinity_mask_valid hook Christoph Hellwig 2019-08-07 13:30 ` Christoph Hellwig 2019-08-07 13:35 ` RFC: remove sn2, hpsim and ia64 machvecs John Paul Adrian Glaubitz 2019-08-07 13:35 ` John Paul Adrian Glaubitz 2019-08-07 13:44 ` Christoph Hellwig 2019-08-07 13:44 ` Christoph Hellwig 2019-08-07 18:15 ` Luck, Tony 2019-08-07 18:15 ` Luck, Tony 2019-08-07 20:26 ` Luck, Tony 2019-08-07 20:26 ` Luck, Tony 2019-08-07 23:07 ` Luck, Tony 2019-08-07 23:07 ` Luck, Tony 2019-08-08 6:51 ` 'Christoph Hellwig' 2019-08-08 6:51 ` 'Christoph Hellwig' 2019-08-08 18:01 ` Luck, Tony 2019-08-08 18:01 ` Luck, Tony 2019-08-09 14:45 ` 'Christoph Hellwig' 2019-08-09 14:45 ` 'Christoph Hellwig' 2019-08-13 7:24 RFC: remove sn2, hpsim and ia64 machvecs v2 Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 01/28] char: remove the SGI snsc driver Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 02/28] char: remove the SGI tiocx/mbcs driver Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 03/28] char/agp: remove the sgi-agp driver Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 04/28] ide: remove the sgiioc4 driver Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 05/28] PCI/hotplug: remove the sgi_hotplug driver Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 06/28] tty/serial: remove the sn_console driver Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 07/28] tty/serial: remove the ioc4_serial driver Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 08/28] tty/serial: remove the ioc3_serial driver Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 09/28] char/mspec: remove SGI SN2 support Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 10/28] misc/sgi-xp: " Christoph Hellwig 2019-08-13 7:24 ` [PATCH 11/28] qla1280: " Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 12/28] qla2xxx: " Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:24 ` [PATCH 13/28] drivers: remove the SGI SN2 IOC3 base support Christoph Hellwig 2019-08-13 7:24 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 14/28] drivers: remove the SGI SN2 IOC4 " Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 16/28] ia64: remove now unused machvec indirections Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 17/28] ia64: remove the hpsim platform Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 21:06 ` Vaden, Tom (HPE Server OS Architecture) 2019-08-13 7:25 ` [PATCH 18/28] ia64: remove CONFIG_PCI ifdefs Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 21:07 ` Vaden, Tom (HPE Server OS Architecture) 2019-08-13 21:07 ` Vaden, Tom (HPE Server OS Architecture) 2019-08-13 7:25 ` [PATCH 19/28] ia64: remove CONFIG_ACPI ifdefs Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 21:07 ` Vaden, Tom (HPE Server OS Architecture) 2019-08-13 21:07 ` Vaden, Tom (HPE Server OS Architecture) 2019-08-13 7:25 ` [PATCH 20/28] ia64: remove the zx1 swiotlb machvec Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 21/28] ia64: remove the SGI UV simulator support Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 22/28] ia64: remove the unused sn_coherency_id symbol Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 23/28] ia64: rework iommu probing Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 24/28] ia64: move the ROOT_DEV setup to common code Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 25/28] ia64: move the screen_info " Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 26/28] ia64: remove support for machvecs Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 27/28] ia64: remove CONFIG_SWIOTLB ifdefs Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig 2019-08-13 7:25 ` [PATCH 28/28] genirq: remove the is_affinity_mask_valid hook Christoph Hellwig 2019-08-13 7:25 ` Christoph Hellwig
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190807133049.20893-4-hch@lst.de \ --to=hch@lst.de \ --cc=arnd@arndb.de \ --cc=fenghua.yu@intel.com \ --cc=gregkh@linuxfoundation.org \ --cc=linux-ia64@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=tony.luck@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.