From:
Xu, Anthony [mailto:anthony.xu@xxxxxxxxx]
Sent: Tuesday, June 21, 2005 7:57
PM
To: Magenheimer, Dan (HP Labs Fort Collins)
Cc:
xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Subject: RE: how to put kernel
module in xen/ipf
Hi,
Dan,
We
implemented VTLB infrastructure per domain on XEN/IPF, which tracked guest tlb
information. VTLB has fixed size, then when using out of it, HV will desert all
VTLB and recycle VTLB. We add a flag “lock” in VTLB entry, when HV recycle
VTLB, the VTLB entry with “lock” flag will not be deserted, but if Guest uses
instructions like “ptc” to purge tlb, the VTLB entry with “lock” flag will be
deserted.
Before
invoking hypercall,
Kernel
Module pseudo read parameter once per page size to make sure the translation
for this parameter has been inserted in VTLB infrastructure. Then kernel Module
will call another new hypercall which don’t need pointer parameter to lock
above translation in VTLB infrastructure.
Then
invoking this hypercall,
In
HV, HV will use copy_from_user() or copy_to_user() to get parameter or return
result. In these functions, HV will lookup VTLB infrastructure to get
corresponding guest physical address of the parameter, because this translation
has been locked in VTLB, HV definitely can find it, then HV can get
corresponding machine address from physical to machine address table, as we
know HV use region 7 for identity mapping, HV can get identity virtual address
for that machine address, at last, HV do normal copy operation using this
identity virtual address.
After
this hypercall,
Guest
application definitely will unmap the memory allocated for passing hypercall
parameter, and this operation definitely will purge tlb for this address, so
the “lock” VTLB entry in VTLB infrastructure can be recycled.
We
had tested this parameter passing mechanism for several hypercalls, such as
GETMEMLIST, and it works well.
Could
we check in this patch and discuss further?
From:
Magenheimer, Dan (HP Labs Fort Collins) [mailto:dan.magenheimer@xxxxxx]
Sent: 2005年6月21日
22:04
To: Xu, Anthony
Cc:
xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Subject: RE: how to put kernel
module in xen/ipf
Yes, the hypercall
parameter mechanism is still evolving for Xen/ia64. Very few
hypercalls are necessary
to run domain0, so experimentation with different hypercall
mechanisms has waited
until multi-domain work.
Can you explain more
about kernel modules? I know (roughly) how they
work for Linux, but not
how they are used on Xen/x86. Others on this
list might like to learn
too, so perhaps you could explain the design
in detail?
Thanks,
Dan
From:
Xu, Anthony [mailto:anthony.xu@xxxxxxxxx]
Sent: Monday, June 20, 2005 11:10
PM
To: Magenheimer, Dan (HP Labs Fort Collins)
Cc:
xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Subject: how to put kernel module
in xen/ipf
Hi,
Dan,
XEN/IPF kernel
module has a lot of difference from XEN/ia32, especially the mechanism of passing
hypercall parameter. Currently
we create directory “km” under xen/arch/ia64,
and put kernel module code in that directory.
Any comment?
-Anthony