Re: The way of mapping BIOS into the guest's address space

2012-02-15 Thread Cyrill Gorcunov
On Tue, Feb 14, 2012 at 11:07:08PM -0500, Kevin O'Connor wrote:
...
  hardware. Maybe we could poke someone from KVM camp for a hint?
 
 SeaBIOS has two ways to be deployed - first is to copy the image to
 the top of the first 1MB (eg, 0xe-0xf) and jump to
 0xf000:0xfff0 in 16bit mode.  The second way is to use the SeaBIOS elf
 and deploy into memory (according to the elf memory map) and jump to
 SeaBIOS in 32bit mode (according to the elf entry point).
 
 SeaBIOS doesn't really need to be in the top 4G of ram.  SeaBIOS does
 expect to have normal PC hardware devices (eg, a PIC), though many
 hardware devices can be compiled out via its kconfig interface.  The
 more interesting challenge will likely be in communicating critical
 pieces of information (eg, total memory size) into SeaBIOS.
 
 The SeaBIOS mailing list (seab...@seabios.org) is probably a better
 location for technical seabios questions.
 

Hi Kevin, thanks for pointing. Yes, providing info back to seabios
to setup mttr and such (so seabios would recognize them) is
most challeging I think.

Cyrill
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: The way of mapping BIOS into the guest's address space

2012-02-14 Thread Pekka Enberg
On Tue, Feb 14, 2012 at 1:03 PM, Yang Bai hamo...@gmail.com wrote:
 Since on X86, bios is always at the end of the address space, so I
 have some thought about how to implement the seabios support for kvm
 tool.

 1. using kvm__register_mem to map the end of address space to the
 guest then copy the code of seabios to this mem region. Just emulating
 the bios chip.

 2. leave the bios code alone and don't touch the guest's address
 space. If the guest accesses the address belonging to the bios, it
 will be an IO request and we can emulate the IO access to the bios
 chip.

 Any ideas about this?

The latter solution doesn't make any sense to me. Cyrill, do we really
need to put the BIOS at the end of the address space? Don't we have
unused space below 1 MB?

 And question:  How could I set the first instruction address after we
 issue the vmlaunch instruction?

You need to set -boot_ip and fiends. See
tools/kvm/x86/kvm.c::load_bzimage() for an example.

Pekka
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: The way of mapping BIOS into the guest's address space

2012-02-14 Thread Cyrill Gorcunov
On Tue, Feb 14, 2012 at 01:10:59PM +0200, Pekka Enberg wrote:
 On Tue, Feb 14, 2012 at 1:03 PM, Yang Bai hamo...@gmail.com wrote:
  Since on X86, bios is always at the end of the address space, so I
  have some thought about how to implement the seabios support for kvm
  tool.
 
  1. using kvm__register_mem to map the end of address space to the
  guest then copy the code of seabios to this mem region. Just emulating
  the bios chip.

I think this is what should be done.

 
  2. leave the bios code alone and don't touch the guest's address
  space. If the guest accesses the address belonging to the bios, it
  will be an IO request and we can emulate the IO access to the bios
  chip.
 
  Any ideas about this?
 
 The latter solution doesn't make any sense to me. Cyrill, do we really
 need to put the BIOS at the end of the address space? Don't we have
 unused space below 1 MB?

I don't remember for sure how SeaBIOS works actually. What I rememer
is that it aquires all hw environment might have. So without real look
into seabios code I fear I can't answer. But reserving end of 4G address
space for bios copy sounds reasonable if we going to behave as real
hardware. Maybe we could poke someone from KVM camp for a hint?

Cyrill
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: The way of mapping BIOS into the guest's address space

2012-02-14 Thread Cyrill Gorcunov
On Tue, Feb 14, 2012 at 09:20:18PM +0800, Yang Bai wrote:
 And will seabios replace the present bios implement or co-exsit?

Ideally we should get rid of our minibios completely and only have
seabios here instead.

Cyrill
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: The way of mapping BIOS into the guest's address space

2012-02-14 Thread cody

On 02/14/2012 07:03 PM, Yang Bai wrote:

Hi all,

Since on X86, bios is always at the end of the address space, so I
have some thought about how to implement the seabios support for kvm
tool.

1. using kvm__register_mem to map the end of address space to the
guest then copy the code of seabios to this mem region. Just emulating
the bios chip.

2. leave the bios code alone and don't touch the guest's address
space. If the guest accesses the address belonging to the bios, it
will be an IO request and we can emulate the IO access to the bios
chip.

Any ideas about this?
   
Can I ask what's the purpose of mapping BIOS code to guest? Any usage? 
Shouldn't BIOS's behavior be emulated by hypervisor? Thanks.


-cody

And question:  How could I set the first instruction address after we
issue the vmlaunch instruction?

Thanks,
Yang
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
   


--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: The way of mapping BIOS into the guest's address space

2012-02-14 Thread Pekka Enberg
On Tue, Feb 14, 2012 at 09:20:18PM +0800, Yang Bai wrote:
 And will seabios replace the present bios implement or co-exsit?

On Tue, Feb 14, 2012 at 3:32 PM, Cyrill Gorcunov gorcu...@openvz.org wrote:
 Ideally we should get rid of our minibios completely and only have
 seabios here instead.

No, no, they should co-exist. There's absolutely no reason to force
people to use a BIOS to boot Linux.
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: The way of mapping BIOS into the guest's address space

2012-02-14 Thread Cyrill Gorcunov
On Tue, Feb 14, 2012 at 05:35:47PM +0200, Pekka Enberg wrote:
 On Tue, Feb 14, 2012 at 09:20:18PM +0800, Yang Bai wrote:
  And will seabios replace the present bios implement or co-exsit?
 
 On Tue, Feb 14, 2012 at 3:32 PM, Cyrill Gorcunov gorcu...@openvz.org wrote:
  Ideally we should get rid of our minibios completely and only have
  seabios here instead.
 
 No, no, they should co-exist. There's absolutely no reason to force
 people to use a BIOS to boot Linux.
 

I meant run-time (ie in memory). I didn't mean substitude our minibios,
but rather have an ability to either run with compiled-in bios or with
seabios instead.

Cyrill
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: The way of mapping BIOS into the guest's address space

2012-02-14 Thread Pekka Enberg
On Tue, Feb 14, 2012 at 5:38 PM, Cyrill Gorcunov gorcu...@openvz.org wrote:
  Ideally we should get rid of our minibios completely and only have
  seabios here instead.

 No, no, they should co-exist. There's absolutely no reason to force
 people to use a BIOS to boot Linux.

 I meant run-time (ie in memory). I didn't mean substitude our minibios,
 but rather have an ability to either run with compiled-in bios or with
 seabios instead.

Sure.
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: The way of mapping BIOS into the guest's address space

2012-02-14 Thread Kevin O'Connor
On Tue, Feb 14, 2012 at 04:13:42PM +0400, Cyrill Gorcunov wrote:
 On Tue, Feb 14, 2012 at 01:10:59PM +0200, Pekka Enberg wrote:
  On Tue, Feb 14, 2012 at 1:03 PM, Yang Bai hamo...@gmail.com wrote:
   Since on X86, bios is always at the end of the address space, so I
   have some thought about how to implement the seabios support for kvm
   tool.
  
   1. using kvm__register_mem to map the end of address space to the
   guest then copy the code of seabios to this mem region. Just emulating
   the bios chip.
 
 I think this is what should be done.
 
  
   2. leave the bios code alone and don't touch the guest's address
   space. If the guest accesses the address belonging to the bios, it
   will be an IO request and we can emulate the IO access to the bios
   chip.
  
   Any ideas about this?
  
  The latter solution doesn't make any sense to me. Cyrill, do we really
  need to put the BIOS at the end of the address space? Don't we have
  unused space below 1 MB?
 
 I don't remember for sure how SeaBIOS works actually. What I rememer
 is that it aquires all hw environment might have. So without real look
 into seabios code I fear I can't answer. But reserving end of 4G address
 space for bios copy sounds reasonable if we going to behave as real
 hardware. Maybe we could poke someone from KVM camp for a hint?

SeaBIOS has two ways to be deployed - first is to copy the image to
the top of the first 1MB (eg, 0xe-0xf) and jump to
0xf000:0xfff0 in 16bit mode.  The second way is to use the SeaBIOS elf
and deploy into memory (according to the elf memory map) and jump to
SeaBIOS in 32bit mode (according to the elf entry point).

SeaBIOS doesn't really need to be in the top 4G of ram.  SeaBIOS does
expect to have normal PC hardware devices (eg, a PIC), though many
hardware devices can be compiled out via its kconfig interface.  The
more interesting challenge will likely be in communicating critical
pieces of information (eg, total memory size) into SeaBIOS.

The SeaBIOS mailing list (seab...@seabios.org) is probably a better
location for technical seabios questions.

-Kevin
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html