Announcement

Collapse
No announcement yet.

AMD 8.40.4 Driver -- One Bug A Day Keeps AIGLX Away

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • AMD 8.40.4 Driver -- One Bug A Day Keeps AIGLX Away

    AMD 8.40.4 Driver Released -- One Bug A Day Keeps AIGLX Away

    First off, congratulations to Yoshi with the extremely creative Phoronix codename for this release. The fglrx 8.40 driver (a.k.a. "One Bug A Day Keeps AIGLX Away") has been released but with not much changes. There is now a 64-bit AMDCCCLE, some TV-out options, and a couple of bug fixes. But there isn't much more beyond that.

    I guess the good news coming out of this is that you now have a better idea when the new driver will come now that another month has passed... 8.41, 8.42, 8.43, or 8.44.

    As always, the Phoronix review: http://www.phoronix.com/vr.php?view=10789

    Originally posted by Phoronix
    Last month marked the introduction of Fedora 7 support with the fglrx 8.39.4 ATI/AMD driver but not much more than that was to be found aside from an undocumented XML file. This driver did also present watermark problems that led to the driver being recalled and a corrected driver being pushed out. Today the fglrx 8.40.4 driver has been released and while many had speculated the 8.40 series would mark the introduction of the new Linux driver code-base, that's not the case for 8.40.4 driver. What changes does the 8.40.4 driver hold in store for Linux users? We'll tell you today but there isn't much.
    Michael Larabel
    http://www.michaellarabel.com/

  • #2
    The title really is the best I have read, great work

    Let's wait for the same shit release called 8.41. If you ask me, you should open another new thread once it gets nearer in September and I want all people to write bad names for the upcoming driver so AMD that seems to do nothing can see what we think about them.

    # edit:

    And now to the driver: for some reason I was able to install the 64bit build on my 32bit system and it works hehe and another thing is that you can start the Xserver with Composite and AIGLX etc. options enabled that's no problem now but it still doesn't support AIGLX.
    Last edited by d2kx; 08-13-2007, 01:39 PM.

    Comment


    • #3
      Order parts for my new system last week (still waiting for them)...was seriously considering getting a ati based GFX because of all the expectations that were on this driver....thank god I stuck with nvidia, phew!

      Comment


      • #4
        Originally posted by conholster View Post
        Order parts for my new system last week (still waiting for them)...was seriously considering getting a ati based GFX because of all the expectations that were on this driver....thank god I stuck with nvidia, phew!
        The new driver isn't out yet till later this year.
        Michael Larabel
        http://www.michaellarabel.com/

        Comment


        • #5
          Originally posted by Michael View Post
          The new driver isn't out yet till later this year.
          I dont like waiting

          Comment


          • #6
            am I the only one who doesn't appear to be able to dowload this one? i don't see it on amd.com.

            anyhow, not that the api chasing would be worth it on my .23-rc3 but hey.

            old codebase/new codebase I wonder if my apathy is justified.

            Comment


            • #7
              The site is still being updated.

              The download location is mentioned @ http://phoronix.com/forums/showthread.php?t=4691
              Michael Larabel
              http://www.michaellarabel.com/

              Comment


              • #8
                Here's a bandaid patch to get the module to compile against 2.6.23-rc3. Works here so far (i386 non PAE)

                The CCC still won't run on my XCB-enabled system

                Code:
                --- firegl_public.c.orig	2007-08-10 23:59:21.000000000 +0200
                +++ firegl_public.c	2007-08-13 20:00:26.000000000 +0200
                @@ -214,6 +214,56 @@
                 #define preempt_enable()
                 #endif
                 
                +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22)
                +#if defined(__i386__)
                +#define ptep_test_and_clear_dirty(vma, addr, ptep) ({                  \
                +       int __ret = 0;                                                  \
                +       if (pte_dirty(*(ptep)))                                         \
                +               __ret = test_and_clear_bit(_PAGE_BIT_DIRTY,             \
                +                                               &(ptep)->pte_low);      \
                +       if (__ret)                                                      \
                +               pte_update((vma)->vm_mm, addr, ptep);                   \
                +       __ret;                                                          \
                +})
                +
                +static inline int pte_read(pte_t pte)	{ return (pte).pte_low & _PAGE_USER; }
                +static inline int pte_user(pte_t pte)	{ return (pte).pte_low & _PAGE_USER; }
                +#ifdef CONFIG_X86_PAE
                +/*
                + * Is the pte executable?
                + */
                +static inline int pte_x(pte_t pte)
                +{
                +        return !(pte_val(pte) & _PAGE_NX);
                +}
                + 
                +/*
                + * All present user-pages with !NX bit are user-executable:
                + */
                +static inline int pte_exec(pte_t pte)
                +{
                +        return pte_user(pte) && pte_x(pte);
                +}
                +#else
                +static inline int pte_exec(pte_t pte)
                +{
                +        return pte_user(pte);
                +}
                +#endif	/* PAE */
                +
                +#elif defined(__x86_64__)
                +static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma,
                +					unsigned long addr, pte_t *ptep)
                +{
                +	if (!pte_dirty(*ptep))
                +		return 0;
                +	return test_and_clear_bit(_PAGE_BIT_DIRTY, &ptep->pte);
                +}
                +static inline int pte_read(pte_t pte)	{ return pte_val(pte) & _PAGE_USER; }
                +static inline int pte_exec(pte_t pte)	{ return !(pte_val(pte) & _PAGE_NX); }
                +#endif
                +#endif
                +
                 // ============================================================
                 /* globals */
                 
                @@ -2356,7 +2406,7 @@ void ATI_API_CALL __ke_put_vm_page_table
                 #ifndef ptep_clear_flush_dirty
                 #define ptep_clear_flush_dirty(__vma, __address, __ptep) \
                 ({							 \
                -    int __dirty = ptep_test_and_clear_dirty(__ptep);	 \
                +    int __dirty = ptep_test_and_clear_dirty(__vma, __address, __ptep);	 \
                     if (__dirty)					 \
                         flush_tlb_page(__vma, __address);		 \
                     __dirty;						 \
                @@ -5303,7 +5353,7 @@ unsigned int ATI_API_CALL KAS_Spinlock_R
                 /** \brief Type definition of the structure describing Slab Cache object */
                 typedef struct tag_kasSlabCache_t
                 {
                -    kmem_cache_t* cache;        /* OS slab cache object */
                +    struct kmem_cache *cache;	/* OS slab cache object */
                     spinlock_t lock;            /* OS spinlock object protecting the cache */
                     unsigned int routine_type;  /* Type of routine the cache might be accessed from */
                     char name[14];              /* Cache object name (kernel 2.4 restricts its length to 19 chars) */
                @@ -5349,7 +5399,7 @@ unsigned int ATI_API_CALL KAS_SlabCache_
                     DBG_TRACE("creating slab object '%s'", slabcache_obj->name);
                 
                     if ((slabcache_obj->cache =
                -            kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL)))
                +            kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL)))
                     {
                         ret = 1;
                     }
                Last edited by mlau; 08-13-2007, 02:28 PM.

                Comment


                • #9
                  fglrx 8.40.4 releae notes are still not uploaded at the AMD.com server and the driver itself is not avaible there... hehe.

                  Comment


                  • #10
                    Xv? Or am i hoping for to much?

                    Comment

                    Working...
                    X