> as far as I know PPC64 supports 4K and 64K page sizes. We have to give
> several control blocks to PHYP. This control blocks have different sizes
> and have to be on a 4K boundary.

OK.

> This means that kmalloc addresses are only on a 4K boundary if the
> size is equal to 4096.

Yes, if you think about the way the slab allocator works, there's no
way for smaller objects to have a guaranteed alignment.

> I have the following options to allocate memory for the control blocks:
>
> (1):
> kzalloc(PAGE_SIZE, GFP_KERNEL)
> kfree(addr);
>
> (2):
> __get_zeroed_page(GFP_KERNEL)
> fref_page(addr);
>
> (3):
> kzalloc(4096, GFP_KERNEL)
> kfree(addr);
>
> Personaly I would prefer (1) or (2). Sure, this means that we allocate
> 64K of memory if somebody uses large pages, but they will be 4K aligned,
> too. What is also the best option to implement?

It seems grotesquely wasteful to me to allocate 64K just to get a 4K
aligned block.  How about doing something like

#define PHYP_CB_ALIGNMENT 4096
kzalloc(PHYP_CB_ALIGNMENT, GFP_KERNEL);

That way you make it clear what you're doing and why.

 - R.
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to