qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Weil <weil@mail.berlios.de>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 1/2] pci: Automatically patch PCI vendor id and device id in PCI ROM
Date: Mon, 18 Oct 2010 21:11:55 +0200	[thread overview]
Message-ID: <4CBC9BFB.9090504@mail.berlios.de> (raw)
In-Reply-To: <4CBC97BE.7070902@codemonkey.ws>

Am 18.10.2010 20:53, schrieb Anthony Liguori:
> On 10/18/2010 01:44 PM, Anthony Liguori wrote:
>> On 10/18/2010 12:55 PM, Stefan Weil wrote:
>>> PCI devices with different vendor or device ids sometimes share
>>> the same rom code. Only the ids and the checksum
>>> differs in a boot rom for such devices.
>>>
>>> The i825xx ethernet controller family is a typical example
>>> which is implemented in hw/eepro100.c. It uses at least
>>> 3 different device ids, so normally 3 boot roms would be needed.
>>>
>>> By automatically patching vendor id and device id (and the checksum)
>>> in qemu, all emulated family members can share the same boot rom.
>>>
>>> VGA bios roms are another example with different vendor and device ids.
>>>
>>> v2:
>>>
>>> * Patch also the vendor id (and remove the sanity check for vendor id).
>>>
>>> Cc: Gerd Hoffmann<kraxel@redhat.com>
>>> Cc: Markus Armbruster<armbru@redhat.com>
>>> Cc: Michael S. Tsirkin<mst@redhat.com>
>>> Signed-off-by: Stefan Weil<weil@mail.berlios.de>
>>
>> I get very nervous about patching a ROM.  Who's to say that the ROM 
>> doesn't somehow depend on the contents of its header?  Maybe it has 
>> an internal CRC built into it or something like that.
>
> As part of PMM, ROMs typically reduce their size by decompressing and 
> removing code or something of that nature and then rewrite themselves 
> in scratch RAM.  The BIOS then copies the resulting ROM (using the ROM 
> size in the base header as an indication of how much to copy) into the 
> option ROM space.
>
> So the likelihood of depending on the contents of the header seems 
> non-trivial to me.
>
> Regards,
>
> Anthony Liguori
>
[snip]

Etherboot uses compressed code and always fixes the checksum by modifying
the byte at relative address 6, so for etherboot there is no problem.
The etherboot distribution even includes a perl script which can be used
to patch vendor/device ids. I thought about using that script in QEMU's
make but then decided against this alternate solution.

VGA bios seems to work, too (practical test still is missing).

What could happen for other kinds of roms? Either there is nothing
to patch (the 99 % standard case), or they work, or they don't work.
QEMU must only make sure that patching of the supported roms
with supported devices work.

Regards,

Stefan Weil

  reply	other threads:[~2010-10-18 19:12 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-12 12:41 [Qemu-devel] Where's gpxe-eepro100-80862449.rom ? Markus Armbruster
2010-10-12 16:18 ` [Qemu-devel] " Stefan Weil
2010-10-13  7:13   ` Markus Armbruster
2010-10-15 20:51     ` [Qemu-devel] [PATCH 1/2] pci: Automatically patch PCI device id in PCI ROM Stefan Weil
2010-10-15 21:05       ` Anthony Liguori
2010-10-18 10:09         ` Gerd Hoffmann
2010-10-18 18:39           ` Anthony Liguori
2010-10-21 10:09             ` [SeaBIOS] " Avi Kivity
2010-10-21 13:14               ` Anthony Liguori
2010-10-21 15:34                 ` Avi Kivity
2010-10-18 10:04       ` Gerd Hoffmann
2010-10-18 11:16         ` Stefan Weil
2010-10-18 11:54           ` Gerd Hoffmann
2010-10-18 13:16             ` Stefan Weil
2010-10-18 13:30               ` Gerd Hoffmann
2010-10-18 15:50                 ` Gerd Hoffmann
2010-10-18 17:54                   ` Stefan Weil
2010-10-18 17:55                   ` [Qemu-devel] [PATCH 1/2] pci: Automatically patch PCI vendor id and " Stefan Weil
2010-10-18 17:58                     ` [Qemu-devel] " Michael S. Tsirkin
2010-10-18 18:42                       ` Anthony Liguori
2010-10-18 19:03                         ` Michael S. Tsirkin
2010-10-18 19:36                           ` Stefan Weil
2010-10-18 19:59                             ` Anthony Liguori
2010-10-19  6:40                             ` Gerd Hoffmann
2010-10-18 19:56                           ` Anthony Liguori
2010-10-18 18:44                     ` [Qemu-devel] " Anthony Liguori
2010-10-18 18:53                       ` Anthony Liguori
2010-10-18 19:11                         ` Stefan Weil [this message]
2010-10-19  8:37                           ` Michael S. Tsirkin
2010-10-19 21:15                             ` Stefan Weil
2010-10-19 21:22                               ` Anthony Liguori
2010-10-19 21:25                                 ` Michael S. Tsirkin
2010-10-19 21:08                         ` Stefan Weil
2010-10-20  7:19                           ` [Qemu-devel] " Gerd Hoffmann
2010-10-20 20:30                             ` Stefan Weil
2010-11-22  6:29                           ` Michael S. Tsirkin
2010-10-15 20:51     ` [Qemu-devel] [PATCH 2/2] eepro100: Use a single rom file for all i825xx devices Stefan Weil
2010-11-22  6:29       ` [Qemu-devel] " Michael S. Tsirkin
2010-10-15 21:03     ` [Qemu-devel] Re: Where's gpxe-eepro100-80862449.rom ? Stefan Weil
2010-10-25 12:11       ` Markus Armbruster
2010-10-25 16:23         ` Stefan Weil
2010-10-25 16:54           ` Michael S. Tsirkin
2010-11-15 17:06             ` Stefan Weil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4CBC9BFB.9090504@mail.berlios.de \
    --to=weil@mail.berlios.de \
    --cc=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).