WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] about __XEN_VIRT_START and 0x100000

To: Keir Fraser <keir@xxxxxxx>
Subject: Re: [Xen-devel] about __XEN_VIRT_START and 0x100000
From: Lin-Bao Zhang <2004.zhang@xxxxxxxxx>
Date: Fri, 19 Aug 2011 18:10:44 +0800
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Delivery-date: Fri, 19 Aug 2011 03:12:14 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=mOWWPwXpydSksQhsflFH7p+GURK7Ndvg4tSndjyr3Es=; b=Zbe7i9ABDOHYArN0J6Ey6r8x28TbP2rzGUcZ77XmwFV7+NjSicQ8J7BUpF3F6qHl// sUVER4GQQJ6PtBCUZhM0a6zOYkhIWxtLaNfqtz6Or8d5abu3jJT7Xa3xn4mtXGsWnOJ1 HCePOxmWHhQg1fl2BhWbwUKxS/NEc7PAHHTrc=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <CA73E982.30989%keir@xxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <CANuKePk3CKmCYF6_t1gZ=giofBuUJqjubMsOm++QRcuboEkZUQ@xxxxxxxxxxxxxx> <CA73E982.30989%keir@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
2011/8/19 Keir Fraser <keir@xxxxxxx>:
> On 19/08/2011 09:59, "Lin-Bao Zhang" <2004.zhang@xxxxxxxxx> wrote:
>
>> thanks very much!
>> another question:
>>
>> in xen-4.1.0: code about trampoline.S
>> 1, in head.S:
>> ------------------------------------------------------------------------------
>> -------
>>    /* Copy bootstrap trampoline to low memory, below 1MB. */
>>         mov     $sym_phys(trampoline_start),%esi
>>         mov     $bootsym_phys(trampoline_start),%edi
>>         mov     $trampoline_end - trampoline_start,%ecx
>>         rep     movsb
>> //bob comment, I know its function :copy beginning address(esi) 's ecx
>> bytes to edi address.
>>
>>         mov     $bootsym_phys(early_stack),%esp
>>         call    cmdline_parse_early
>>
>>         /* Jump into the relocated trampoline. */
>>         jmp     $BOOT_CS32,$bootsym_phys(trampoline_boot_cpu_entry)
>>
>> a)where defines early_stack ?
>> I just see:
>> early_stack:
>>   (the last line in file ,no content again)
>
> Stacks grow downwards/backwards in memory. The early_stack definition is
> immediately *before* the early_stack label.
>

yes , yes , I just saw symbols ,early_stack address should be same as
trampoline_end .


>> b) what is function of "   mov     $bootsym_phys(early_stack),%esp" ?
>> is this related with trampoline relocation ?
>
> The trampoline stack (early_stack) is now allocated within the trampoline
> code/data area, rather than being hard-coded at an address (e.g., 0x98000).
>

>> c)how to make sure these trampoline code can't overlap other area for
>> example EBDA(directly below 0xa0000) ?
>
> Move it lower. In 4.1 you can see we moved the trampoline down to 0x7c000.
> It fits entirely below 0x80000, so it cannot overlap within even the
> theoretically largest possible 128kB EBDA.
>
exactly , it seems that trampoline code is basicly 10K , so 0x7c000
should be lower enough ,it can't overlap to 0x80000, this will be very
rich
I finally understand why you tell me to use 0x80000. (0xa0000 - 128K
EBDA max size) .

>> d)     jmp     $BOOT_CS32,$bootsym_phys(trampoline_boot_cpu_entry)
>> as my idea , should jump to BOOT_TRAMPOLINE ,but why jump to
>> trampoline_boot_cpu_entry ?  what is relationship between
>> trampoline_boot_cpu_entry and BOOT_TRAMPOLINE ?
>
> trampoline_boot_cpu_entry is not at the start of the trampoline area, hence
> jumping at BOOT_TRAMPOLINE would not work. We instead jump at
> BOOT_TRAMPOLINE + (trampoline_boot_cpu_entry-trampoline_start). Handily that
> is exactly what bootsym_phys() macro calculates for us.
>
>  -- Keir
>
thanks Keir very very much!  , it is so nice of you. I quite
appreciate your help on this issue. I learned a lot from you! thanks
again!


--Bob Zhang

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