--- zzzz-none-000/linux-2.6.19.2/drivers/char/agp/intel-agp.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5504/linux-2.6.19.2/drivers/char/agp/intel-agp.c 2007-01-11 07:38:19.000000000 +0000 @@ -169,7 +169,7 @@ { struct page * page; - page = alloc_pages(GFP_KERNEL | GFP_DMA32, 2); + page = alloc_pages(GFP_KERNEL, 2); if (page == NULL) return NULL; @@ -387,7 +387,11 @@ /* We obtain the size of the GTT, which is also stored (for some * reason) at the top of stolen memory. Then we add 4KB to that * for the video BIOS popup, which is also stored in there. */ - size = agp_bridge->driver->fetch_size() + 4; + + if (IS_I965) + size = 512 + 4; + else + size = agp_bridge->driver->fetch_size() + 4; if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82830_HB || agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82845G_HB) { @@ -801,26 +805,6 @@ return 0; } - -/* - * The i965 supports 36-bit physical addresses, but to keep - * the format of the GTT the same, the bits that don't fit - * in a 32-bit word are shifted down to bits 4..7. - * - * Gcc is smart enough to notice that "(addr >> 28) & 0xf0" - * is always zero on 32-bit architectures, so no need to make - * this conditional. - */ -static unsigned long intel_i965_mask_memory(struct agp_bridge_data *bridge, - unsigned long addr, int type) -{ - /* Shift high bits down */ - addr |= (addr >> 28) & 0xf0; - - /* Type checking must be done elsewhere */ - return addr | bridge->driver->masks[type].mask; -} - static int intel_i965_fetch_size(void) { struct aper_size_info_fixed *values; @@ -848,8 +832,7 @@ agp_bridge->previous_size = agp_bridge->current_size = (void *)(values + offset); - /* The i965 GTT is always sized as if it had a 512kB aperture size */ - return 512; + return values[offset].size; } /* The intel i965 automatically initializes the agp aperture during POST. @@ -1601,7 +1584,7 @@ .fetch_size = intel_i965_fetch_size, .cleanup = intel_i915_cleanup, .tlb_flush = intel_i810_tlbflush, - .mask_memory = intel_i965_mask_memory, + .mask_memory = intel_i810_mask_memory, .masks = intel_i810_masks, .agp_enable = intel_i810_agp_enable, .cache_flush = global_cache_flush,