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

Re: [Xen-ia64-devel] [patch] alloc_page_dir() should return a virtual address



>>>>> "Isaku" == Isaku Yamahata <yamahata@xxxxxxxxxxxxx> writes:

Isaku> Hi.  As Jes explained, p?d_populate() requires virtual address
Isaku> for third argument.  So alloc_dir_page() should return virtual
Isaku> address.  On the otherhand __pa(__pa(va)) == __pa(va) because
Isaku> __pa() masks high 3bits instead of __pa(va) = va -
Isaku> PAGE_OFFSET. Thus the current alloc_dir_page() creates correct
Isaku> frame tables fortunately.  However alloc_dir_page() should be
Isaku> fixed, I think.

You are right, but somehow this made a difference for me on SN2, I
wonder if the Linux version could have gotten pulled in somehow. I
might look at the CPP output to be sure.

Isaku> About ivt.S part. You might have missed that shr is signed
Isaku> extended shift.  Probably the following is more readable.

Isaku> #ifdef CONFIG_VIRTUAL_FRAME_TABLE - shr r22=r16,56 // Test for
Isaku> the address of virtual frame_table + shr.u r22=r16,56 // Test
Isaku> for the address of virtual frame_table ;; - cmp.eq
Isaku> p8,p0=((VIRT_FRAME_TABLE_ADDR>>56)&0xff)-0x100,r22 + cmp.eq
Isaku> p8,p0=(VIRT_FRAME_TABLE_ADDR>>56),r22 (p8) br.cond.sptk
Isaku> frametable_miss ;; #endif

I tried this but hit the obvious assembly error that Kouya also
reported in the follow-up posting. I change it to the code I posted to
make sure it was explicit and there was no doubt it couldn't fail.

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®.