[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |