|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
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
|
|
|
|
|