Re: asm-generic/tlb.h and check_pgt_cache()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 31, 2008 at 08:31:01AM -0800, Jeremy Fitzhardinge wrote:
> Adrian Bunk wrote:
>> On Thu, Jan 31, 2008 at 12:54:25PM +0100, Haavard Skinnemoen wrote:
>>   
>>> Hi,
>>>
>>> Commit a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 from x86.git seems to
>>> have broken several architectures, including alpha (fixed by
>>> c18d1250c7425dddd2633ce4eaf03d5015e68a0f) and avr32 (not fixed yet).
>>>
>>> The problem seems to be that asm-generic/tlb.h references
>>> check_pgt_cache(), which is defined in asm/pgalloc.h on most
>>> architectures, so removing that include seems like the wrong thing to
>>> do. x86, however, defines it in asm/pgtable.h which is apparently
>>> included indirectly through other headers.
>>>
>>> One way to fix this would be to move the check_pgt_cache() definition
>>> over to asm/pgtable.h, but I suspect this would complicate things a lot
>>> on architectures that use quicklists since they need the QUICK_*
>>> definitions from pgalloc.h in order to implement check_pgt_cache. I
>>> have patches that make avr32 use quicklists as well, so I'm a bit
>>> hesitant to do this.
>>>
>>> Another way to fix it would be to include asm/pgalloc.h elsewhere, e.g.
>>> from asm/tlb.h right before including asm-generic/tlb.h. Or perhaps we
>>> should move check_pgt_cache() into asm/tlb.h on all architectures and
>>> include asm/pgalloc.h as needed?
>>>
>>> I don't know how many architectures are currently broken -- if it's
>>> only avr32, I can probably come up with a way to fix it on my own. But
>>> if there are others, I thought it might be a good idea to coordinate
>>> things.
>>>     
>>
>> At least blackfin and m32r suffer from the same compile breakage.
>>   
>
> Huh, interesting: avr32, sh, blackfin and m32r - all a similar class of  
> architectures.  Does this show a genealogical relationship?
>
> Anyway, sorry about the breakage.  There's a cyclic dependency between  
> asm-generic/tlb.h and asm/pgalloc.h, since __*_free_tlb (often) uses  
> tlb_remove_page().
>
> From the look of it:
> avr32 - no-op check_pgt_list
> sh - uses quicklist_*, and defines QUICK_* (unique among architectures)
> blackfin - how does this break? asm-blackfin/pgalloc.h is more or less no-op
> m32r - no-op check_pgt_list
> um - no-op check_pgt_list
>
> I'm guessing in blackfin's case, the breakage is some indirect  
> dependency on asm-blackfin/pgalloc.h via asm/tlb.h->asm-generic/tlb.h  
> rather than a specific check_pgt_list() problem.  Adrian, is that right?  
>...

blackfin is:

<--  snip  -->

...
  CC      mm/nommu.o
In file included from include2/asm/tlb.h:14,
                 from 
/home/bunk/linux/kernel-2.6/git/linux-2.6/mm/nommu.c:33:
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/tlb.h: In function 'tlb_finish_mmu':
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/tlb.h:91: error: implicit declaration of function 'check_pgt_cache'
make[2]: *** [mm/nommu.o] Error 1

<--  snip  -->

>    J

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

-
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux