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

Re: [Xen-ia64-devel] pickled code



Isaku Yamahata wrote:
Hi Jes.

It tries to keep struct page_info compact layout by avoiding
padding before _domain member.
Please notice u32 count_info member in front of _domain.

struct domain is allocated from xen heap,
i.e. the range [PAGE_OFFSET, PAGE_OFFSET + 64MB).
It means that struct domain* can be expressed as
PAGE_OFFSET + 32bit offset(=machine phsyiacal address).
>
pickle          PAGE_OFFSET + 32bit offset => 32 bit offset
                i.e. discarding most significant 32bit.
                It can be don by casting u64 to u32 because
                Xen assumes little endian.

Hi Isaku

The problem is that the theory that one can discard the top 32 bit
from the physical address is flawed. Some machines, like SN2 have a
memory layout which makes this impossible to do. Ie. our physical
memory starts at 0x3003000000 (think I got the zeros right), there is
no memory at all below 4GB.

I am not sure how to solve this correctly, and I understand that my
patch broke the kernel for Masaki too, but the existing code is broken
by design, so we need to try and come up with something else - maybe we
can do a pickle function based on a dynamic mask, ie. not use
PAGE_OFFSET, but rather xen_heap_base or something like that?

Best regards,
Jes

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.