[PATCH] 2.2.18pre2: AGP and the i810

From: Chip Salzenberg (chip@valinux.com)
Date: Sat Sep 02 2000 - 01:24:44 EDT

  • Next message: Chip Salzenberg: "[PATCH] 2.2.18pre2: fencepost error in __ioremap() [AGP]"

    First, thanks, Alan, for using the USB and AGP patches. You just
    saved me a bunch of integration work.

    I'd like to suggest the below patches for the AGP i810 driver.

    [1] I'm largely in the dark with AGP, but I know for a fact that with
    my previous AGP driver -- which was, like the one you integrated,
    based on 2.4 and PI's work -- I got kernel oopses about 10% of the
    time when exiting X. The oopses were fixed by the addition of
    CACHE_FLUSH() calls in intel_i810_remove_entries(), in imitation of
    the CACHE_FLUSH() calls already in intel_i810_insert_entries().

    Index: drivers/char/agp/agpgart_be.c
    --- drivers/char/agp/agpgart_be.c.prev
    +++ drivers/char/agp/agpgart_be.c Fri Sep 1 20:38:18 2000
    @@ -951,4 +953,5 @@ static int intel_i810_remove_entries(agp
             int i;
     
    + CACHE_FLUSH();
             for (i = pg_start; i < (mem->page_count + pg_start); i++) {
                     OUTREG32(intel_i810_private.registers,
    @@ -956,4 +959,5 @@ static int intel_i810_remove_entries(agp
                              agp_bridge.scratch_page);
             }
    + CACHE_FLUSH();
     
             agp_bridge.tlb_flush(mem);

    [2] When CONFIG_AGP_I810 is off, disable compilation of (more of the)
    i810-specific code.

    Index: drivers/char/agp/agpgart_be.c
    --- drivers/char/agp/agpgart_be.c.prev
    +++ drivers/char/agp/agpgart_be.c Fri Sep 1 20:38:18 2000
    @@ -791,4 +791,6 @@ void agp_enable(u32 mode)
     /* End - Generic Agp routines */
     
    +#ifdef CONFIG_AGP_I810
    +
     static aper_size_info_fixed intel_i810_sizes[] =
     {
    @@ -1063,4 +1067,5 @@ static int __init intel_i810_setup(struc
     }
     
    +#endif /* CONFIG_AGP_I810 */
     
     #ifdef CONFIG_AGP_INTEL
    @@ -2198,5 +2203,5 @@ static int __init agp_find_supported_dev
     
             /* Need to test for I810 here */
    -
    +#ifdef CONFIG_AGP_I810
             if (dev->vendor == PCI_VENDOR_ID_INTEL) {
                     struct pci_dev *i810_dev;
    @@ -2272,5 +2277,5 @@ static int __init agp_find_supported_dev
                     }
             }
    -
    +#endif /* CONFIG_AGP_I810 */
     
             /* find capndx */

    -- 
    Chip Salzenberg              - a.k.a. -              <chip@valinux.com>
    "I wanted to play hopscotch with the impenetrable mystery of existence,
        but he stepped in a wormhole and had to go in early."  // MST3K
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    Please read the FAQ at http://www.tux.org/lkml/
    



    This archive was generated by hypermail 2b29 : Sat Sep 02 2000 - 01:27:06 EDT