diff mbox

[ipxe] build: Enable IPv6 for qemu

Message ID 59b02541da838ce9a0246178deb3c377109589bb.1447780013.git.crobinso@redhat.com
State New
Headers show

Commit Message

Cole Robinson Nov. 17, 2015, 5:25 p.m. UTC
---
I assume it's fine to enable...

A fedora user requested it here:
https://bugzilla.redhat.com/show_bug.cgi?id=1280318

 src/config/qemu/general.h | 3 +++
 1 file changed, 3 insertions(+)

-- 
2.5.0

Comments

Cole Robinson Jan. 12, 2016, 10:18 p.m. UTC | #1
On 11/17/2015 12:25 PM, Cole Robinson wrote:
> ---

> I assume it's fine to enable...

> 

> A fedora user requested it here:

> https://bugzilla.redhat.com/show_bug.cgi?id=1280318

> 

>  src/config/qemu/general.h | 3 +++

>  1 file changed, 3 insertions(+)

> 

> diff --git a/src/config/qemu/general.h b/src/config/qemu/general.h

> index 30f60d3..61d0ad4 100644

> --- a/src/config/qemu/general.h

> +++ b/src/config/qemu/general.h

> @@ -8,3 +8,6 @@

>  

>  /* Work around missing EFI_PXE_BASE_CODE_PROTOCOL */

>  #define EFI_DOWNGRADE_UX

> +

> +/* Enable IPv6 */

> +#define NET_PROTO_IPV6

> 


ping, is there any reason IPv6 shouldn't be enabled for qemu?

Thanks,
Cole
Laszlo Ersek Jan. 28, 2016, 5:49 p.m. UTC | #2
On 01/28/16 11:19, Gerd Hoffmann wrote:
>   Hi,

> 

>> How common is it to build EFI roms, compared to building ipxe.efi or

>> snponly.efi?

> 

> No idea.  qemu is a very specific case, ipxe has drivers for the qemu

> nics (both virtual such as virtio-net and emulated such as rtl8139), and

> right now we actually build ipxe tree times (bios, efi-ia32,

> efi-x86_64), then combine them into a single image, using EfiRom

> (shipped with edk2).  That image is populated to the guest via pci rom

> bar.  That way both seabios and ovmf (edk2 firmware for qemu) have

> drivers available.

> 

> How much bios vs. efi is used -- I don't know.  seabios is the default

> and has been for years, so it is pretty clear that seabios takes the

> lead.  But whenever uefi share is at 1% or 10% -- no idea.

> 

> Probably we'll go add efi-aarch64 roms to the mix once ipxe support is

> there, or maybe drop efi-ia32 in favor of efi-aarch64.

> 

>> On IRC, roms is quite rare topic compared to non rom builds, but maybe

>> that's because those that build roms don't have that many questions.

> 

> I suspect it is because it rarely happens.  For onboard nics there

> simply is no rom you can easily populate.  Instead the nic rom is stored

> in the firmware flash, together with bios/uefi.  Chainloading ipxe.efi

> is *alot* simpler than hacking your firmware flash.

> 

> Add-on cards are a different story of course, but I suspect >90% of the

> use cases are with onboard nics.

> 

> The only case where I personally had a ipxe rom running on physical

> hardware was when I flashed a T60 Thinkpad (hardware broke meanwhile)

> with coreboot.

> 

> qemu has a defined set of hardware and prebuilt roms are shipped with

> both qemu and distros.  So people rarely have to build qemu roms

> themself -> no irc questions either ;)


I think that enabling IPv6 for the CONFIG=qemu build of iPXE will have
no effect for OVMF guests.

With CONFIG=qemu we only request SNP interfaces (low level NIC drivers)
from iPXE. Internet protocols are at a higher level, and with
CONFIG=qemu, the edk2 network stack is used on top of iPXE's SNP
interface. The iPXE feature test macro NET_PROTO_IPV6 will have no effect.

OVMF can pull in the IPv6 parts of edk2, but it needs

  -D NETWORK_IP6_ENABLE

for that (<https://github.com/tianocore/edk2/commit/36c6413f76e5>).

Thanks
Laszlo
Laszlo Ersek Jan. 28, 2016, 5:50 p.m. UTC | #3
Sorry, Cole disappeared from the address list, and I forgot to re-add
him. Resending.

On 01/28/16 11:19, Gerd Hoffmann wrote:
>   Hi,

> 

>> How common is it to build EFI roms, compared to building ipxe.efi or

>> snponly.efi?

> 

> No idea.  qemu is a very specific case, ipxe has drivers for the qemu

> nics (both virtual such as virtio-net and emulated such as rtl8139), and

> right now we actually build ipxe tree times (bios, efi-ia32,

> efi-x86_64), then combine them into a single image, using EfiRom

> (shipped with edk2).  That image is populated to the guest via pci rom

> bar.  That way both seabios and ovmf (edk2 firmware for qemu) have

> drivers available.

> 

> How much bios vs. efi is used -- I don't know.  seabios is the default

> and has been for years, so it is pretty clear that seabios takes the

> lead.  But whenever uefi share is at 1% or 10% -- no idea.

> 

> Probably we'll go add efi-aarch64 roms to the mix once ipxe support is

> there, or maybe drop efi-ia32 in favor of efi-aarch64.

> 

>> On IRC, roms is quite rare topic compared to non rom builds, but maybe

>> that's because those that build roms don't have that many questions.

> 

> I suspect it is because it rarely happens.  For onboard nics there

> simply is no rom you can easily populate.  Instead the nic rom is stored

> in the firmware flash, together with bios/uefi.  Chainloading ipxe.efi

> is *alot* simpler than hacking your firmware flash.

> 

> Add-on cards are a different story of course, but I suspect >90% of the

> use cases are with onboard nics.

> 

> The only case where I personally had a ipxe rom running on physical

> hardware was when I flashed a T60 Thinkpad (hardware broke meanwhile)

> with coreboot.

> 

> qemu has a defined set of hardware and prebuilt roms are shipped with

> both qemu and distros.  So people rarely have to build qemu roms

> themself -> no irc questions either ;)


I think that enabling IPv6 for the CONFIG=qemu build of iPXE will have
no effect for OVMF guests.

With CONFIG=qemu we only request SNP interfaces (low level NIC drivers)
from iPXE. Internet protocols are at a higher level, and with
CONFIG=qemu, the edk2 network stack is used on top of iPXE's SNP
interface. The iPXE feature test macro NET_PROTO_IPV6 will have no effect.

OVMF can pull in the IPv6 parts of edk2, but it needs

  -D NETWORK_IP6_ENABLE

for that (<https://github.com/tianocore/edk2/commit/36c6413f76e5>).

Thanks
Laszlo
diff mbox

Patch

diff --git a/src/config/qemu/general.h b/src/config/qemu/general.h
index 30f60d3..61d0ad4 100644
--- a/src/config/qemu/general.h
+++ b/src/config/qemu/general.h
@@ -8,3 +8,6 @@ 
 
 /* Work around missing EFI_PXE_BASE_CODE_PROTOCOL */
 #define EFI_DOWNGRADE_UX
+
+/* Enable IPv6 */
+#define NET_PROTO_IPV6