Thanks for the insight, but I'm trying to do something different. I'm
creating a bare metal system and I'd like to use qemu to emulate a "real"
system so I can develop "drivers" (a NIC to start with) and then, most
importantly, test it on a "real" hardware.

On Fri, Dec 18, 2015 at 2:17 AM Frantisek Rysanek <frantisek.rysa...@post.cz>
wrote:

> Just a couple notes...
>
> The e1000 is a whole family of Intel Gb Ethernet chips with a pretty
> long tradition, especially if you include the preceding 100Mb line by
> Intel. The 1Gb family enjoys a great deal of software compatibility
> across the family - yet there has been some development over the
> years that brought about significant new feature additions to the
> hardware. As a result, there are nowadays three or four "Intel
> gigabit driver strains" in Linux:
> e1000 = the original i8254x series for the PCI/PCI-X (parallel PCI)
> e1000e = the basic PCI-e generation (forked from e1000 after some
> time when the early PCI-e hardware was supported by e1000)
> igb = PCI-e hardware with support for VT-d (host side)
> igbvf = PCI-e hardware's virtual function (guest side, it would
> seem).
> In some operating systems, I guess they still share a single driver
> binary... not in Windows I guess - there's a single installer,
> containing multiple flavours of the driver binary.
>
> Note that already the early PCI-based e1000 supported Message
> Signaled Interrupts. They were one of the first hardware with MSI
> shining boldly at you in Linux /proc/interrupts, deep back in the XP
> era, before PCI-e, before Microsoft started to support MSI in Vista.
>
> As for the emulation bit in Qemu: the emulated e1000 NIC hardware
> should be just about good enough for use in a virty guest
> environment, for basic undemanding use.
> Not sure how long it will be supported in OS'es considered for the
> guest environment, but I guess the driver is still present in Windows
> 10, and will likely be present in Linux for a *long* time to come.
> (I am more concerned about the old LSI SCSI controller, included in
> QEMU for disk IO. Beautiful, surprisingly efficient, but what about
> compatibility with future Windows releases. Also, the hardware was
> likely limited to LBA32.)
>
> What do you need for a proper NIC emulation? You need to emulate some
> registers, DMA (that's especially simple) and IRQ delivery. The
> hardware even supports MSI, so it doesn't have to take part in some
> "shared virtual wire emulated on virtual APIC" kind of thing :-)
> Not sure exactly how it's done, but the host probably triggers an IRQ
> in the guest's CPU core's HW LAPIC, if the guest has a whole CPU core
> dedicated to it...
>
> Yes it does get simpler and more efficient in the virtualization
> environment (host vs. guest): the way forward is called "virtio". Or
> so I hope. Couldn't get it to work in guest XP under Qemu on a first
> attempt. At the moment I don't bother to try again / read on / press
> harder.
>
> Actually the straight-most path to the hardware is VT-d, where the
> guest OS talks straight to its "virtual partition" of the NIC HW
> (needs a HW-specific driver in the guest OS = the guest OS must be
> reasonably modern).
>
> To a decent guest OS, it shouldn't matter much exactly what chipset
> is emulated. You need a LAPIC and an open IO/APIC or (better yet) MSI
> for a smooth operation of IRQ's. Why care about SATA controllers,
> SM-BUS or other functions related to houskeeping in physical
> hardware, if all you really want for your guest OS is a suitable CPU
> core (or several) with independent IRQ's, RAM allocation, block IO
> access and network connectivity, and possibly an accelerated graphics
> display... most of this doesn't need much emulation of physical
> hardware, certainly not some precise past chipset (south bridge).
> What helps is a "virty-accelerated" passthrough to the host system.
> If you're after efficiency and performace, focus on solutions
> bringing your legacy guest OS close to para-virtualization.
>
> Frank Rysanek
>
> On 17 Dec 2015 at 0:54, Wink Saville wrote:
> >
> > I'm wondering if there is a modern NIC emulated with qemu. By modern,
> > I mean a NIC that it exists on a motherboard and that I could by today
> > on Amazon or Newegg.
> >
> > This could be for an X86_64 or maybe ARM.
> >
> > Thanks,
> >
> > Wink
> >
>
>
>
>

Reply via email to