From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH 2/2] device-assignment: Allow PCI to manage the option ROM Date: Thu, 07 Oct 2010 11:34:01 -0600 Message-ID: <1286472841.3020.56.camel@x201> References: <20101004212311.11167.40425.stgit@s20.home> <20101004212630.11167.93029.stgit@s20.home> <20101007171858.GA15537@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, ddutile@redhat.com, chrisw@redhat.com To: "Michael S. Tsirkin" Return-path: Received: from mx1.redhat.com ([209.132.183.28]:6935 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750972Ab0JGReD (ORCPT ); Thu, 7 Oct 2010 13:34:03 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o97HY2JV007889 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 7 Oct 2010 13:34:02 -0400 In-Reply-To: <20101007171858.GA15537@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Thu, 2010-10-07 at 19:18 +0200, Michael S. Tsirkin wrote: > On Mon, Oct 04, 2010 at 03:26:30PM -0600, Alex Williamson wrote: > > --- a/hw/device-assignment.c > > +++ b/hw/device-assignment.c ... > > @@ -1644,58 +1621,64 @@ void add_assigned_devices(PCIBus *bus, const char **devices, int n_devices) > > */ > > static void assigned_dev_load_option_rom(AssignedDevice *dev) > > { > > - int size, len, ret; > > - void *buf; > > + char name[32], rom_file[64]; > > FILE *fp; > > - uint8_t i = 1; > > - char rom_file[64]; > > + uint8_t val; > > + struct stat st; > > + void *ptr; > > + > > + /* If loading ROM from file, pci handles it */ > > + if (dev->dev.romfile || !dev->dev.rom_bar) > > + return; > > > > snprintf(rom_file, sizeof(rom_file), > > "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/rom", > > dev->host.seg, dev->host.bus, dev->host.dev, dev->host.func); > > > > - if (access(rom_file, F_OK)) > > + if (stat(rom_file, &st)) { > > return; > > + } > > > > Just a note that stat on the ROM sysfs file returns window size, > not the ROM size. So this allocates more ram than really necessary for > ROM. Real size is returned by fread. > > Do we care? That was my intention with using stat. I thought that by default the ROM BAR should match physical hardware, so even if the contents could be rounded down to a smaller size, we maintain the size of the physical device. To use the minimum size, the contents could be extracted using pci-sysfs and passed with the romfile option, or the ROM could be disabled altogether with the rombar=0 option. Sound reasonable? Thanks, Alex