Re: linux-next: Tree for Feb 9

Mark Rutland
2016-02-09T16:01:50Z

On Tue, Feb 09, 2016 at 04:08:03PM +0100, Arnd Bergmann wrote:
> On Tuesday 09 February 2016 14:35:54 Mark Rutland wrote:
> > diff --git a/include/asm-generic/fixmap.h b/include/asm-generic/fixmap.h
> > index f9c27b6..e5255ff 100644
> > --- a/include/asm-generic/fixmap.h
> > +++ b/include/asm-generic/fixmap.h
> > @@ -69,6 +69,8 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr)
> > __set_fixmap(idx, 0, FIXMAP_PAGE_CLEAR)
> > #endif
> >
> > +void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot);
> > +
> > /* Return a pointer with offset calculated */
> > static inline unsigned long __set_fixmap_offset(enum fixed_addresses idx,
> > phys_addr_t phys,
> >
>
>
> I think there is a conflicting declaration in arch/x86/include/asm/paravirt.h:
>
> static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
> phys_addr_t phys, pgprot_t flags)
> {
> pv_mmu_ops.set_fixmap(idx, phys, flags);
> }
>
> Can you test on x86 with CONFIG_PARAVIRT set?

That builds fine for me atop of for-next/pgtable, both 64-bit and
32-bit.

GCC seems to treat enum fixed_addresses the same as unsigned. Only if I
change the type of idx in fixmap.h (e.g. to char) do I get a conflict
against paravirt.h

Mark.