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 > > > > > >