From: Gleb Natapov <gleb@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: "Kevin O'Connor" <kevin@koconnor.net>,
qemu-devel@nongnu.org, kvm@vger.kernel.org, blauwirbel@gmail.com,
armbru@redhat.com, alex.williamson@redhat.com
Subject: Re: [PATCHv4 15/15] Pass boot device list to firmware.
Date: Mon, 15 Nov 2010 10:09:10 +0200 [thread overview]
Message-ID: <20101115080910.GA31752@redhat.com> (raw)
In-Reply-To: <20101115075350.GC22248@redhat.com>
On Mon, Nov 15, 2010 at 09:53:50AM +0200, Michael S. Tsirkin wrote:
> On Mon, Nov 15, 2010 at 09:40:08AM +0200, Gleb Natapov wrote:
> > On Sun, Nov 14, 2010 at 10:40:33PM -0500, Kevin O'Connor wrote:
> > > On Sun, Nov 14, 2010 at 05:39:41PM +0200, Gleb Natapov wrote:
> > > > +/*
> > > > + * This function returns device list as an array in a below format:
> > > > + * +-----+-----+---------------+-----+---------------+--
> > > > + * | n | l1 | devpath1 | l2 | devpath2 | ...
> > > > + * +-----+-----+---------------+-----+---------------+--
> > > > + * where:
> > > > + * n - a number of devise pathes (one byte)
> > > > + * l - length of following device path string (one byte)
> > > > + * devpath - non-null terminated string of length l representing
> > > > + * one device path
> > > > + */
> > >
> > > Why not just return a newline separated list that is null terminated?
> > >
> > Doing it like this will needlessly complicate firmware side. How do you
> > know how much memory to allocate before reading device list?
>
> Do a memory scan, count newlines until you reach 0?
>
To do memory scan you need to read it into memory first. To read it into
memory you need to know how much memory to allocate to know how much
memory to allocate you meed to do memory scan... Notice pattern here :)
Of course you can scan IO space too discarding everything you read first
time, but why introduce broken interface in the first place?
> > Doing it
> > like Blue suggest (have BOOTINDEX_LEN and BOOTINDEX_STRING) solves this.
> > To create nice array from bootindex string you firmware will still have
> > to do additional pass on it though.
>
> Why is this a problem? Pass over memory is cheap, isn't it?
>
More code, each line of code potentially introduce bug. But I will go with
Blue suggestion anyway since we already use it for other things.
> > With format like above the code
> > would look like that:
> >
> > qemu_cfg_read(&n, 1);
> > arr = alloc(n);
> > for (i=0; i<n; i++) {
> > qemu_cfg_read(&l, 1);
> > arr[i] = zalloc(l+1);
> > qemu_cfg_read(arr[i], l);
> > }
> >
> >
> > --
> > Gleb.
>
>
> At this point I don't care about format.
I do.
> But I would like one without 1-byte-length limitations,
> just so we can cover whatever pci can through at us.
>
I agree. 1-byte for one device string may be to limiting. It is still
more then 15 PCI bridges on a PC and if you have your pci bus go that
deep you are doing something very wrong. But according to spec device
name can be 32 byte long and device address may be 64bit physical
address and that makes length of one device element to be 50 byte.
--
Gleb.
next prev parent reply other threads:[~2010-11-15 8:09 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-14 15:39 [PATCHv4 00/15] boot order specification Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 01/15] Introduce fw_name field to DeviceInfo structure Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 02/15] Introduce new BusInfo callback get_fw_dev_path Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 03/15] Keep track of ISA ports ISA device is using in qdev Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 04/15] Add get_fw_dev_path callback to ISA bus " Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 05/15] Store IDE bus id in IDEBus structure for easy access Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 06/15] Add get_fw_dev_path callback to IDE bus Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 07/15] Add get_dev_path callback for system bus Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 08/15] Add get_fw_dev_path callback for pci bus Gleb Natapov
2010-11-14 18:27 ` Michael S. Tsirkin
2010-11-14 18:42 ` Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 09/15] Record which USBDevice USBPort belongs too Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 10/15] Add get_dev_path callback for usb bus Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 11/15] Add bootindex parameter to net/block/fd device Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 12/15] Change fw_cfg_add_file() to get full file path as a parameter Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 13/15] Add bootindex for option roms Gleb Natapov
2010-11-14 21:33 ` Blue Swirl
2010-11-15 10:18 ` Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 14/15] Add notifier that will be called when machine is fully created Gleb Natapov
2010-11-14 15:39 ` [PATCHv4 15/15] Pass boot device list to firmware Gleb Natapov
2010-11-14 18:41 ` Michael S. Tsirkin
2010-11-14 18:52 ` Gleb Natapov
2010-11-14 20:56 ` Michael S. Tsirkin
2010-11-14 20:57 ` Michael S. Tsirkin
2010-11-14 20:49 ` Blue Swirl
2010-11-14 20:54 ` Michael S. Tsirkin
2010-11-14 21:13 ` Blue Swirl
2010-11-14 21:45 ` Michael S. Tsirkin
2010-11-14 22:50 ` Blue Swirl
2010-11-15 8:42 ` Gleb Natapov
2010-11-15 20:29 ` Blue Swirl
2010-11-16 14:11 ` Gleb Natapov
2010-11-16 18:30 ` Blue Swirl
2010-11-16 19:02 ` Gleb Natapov
2010-11-17 21:54 ` Blue Swirl
2010-11-18 10:18 ` Gleb Natapov
2010-11-18 11:38 ` Michael S. Tsirkin
2010-11-18 11:45 ` Gleb Natapov
2010-11-18 11:52 ` Michael S. Tsirkin
2010-11-18 12:16 ` Gleb Natapov
2010-11-18 12:23 ` Michael S. Tsirkin
2010-11-18 12:37 ` Gleb Natapov
2010-11-18 13:12 ` Michael S. Tsirkin
2010-11-18 13:16 ` Gleb Natapov
2010-11-15 3:40 ` Kevin O'Connor
2010-11-15 7:40 ` Gleb Natapov
2010-11-15 7:53 ` Michael S. Tsirkin
2010-11-15 8:09 ` Gleb Natapov [this message]
2010-11-15 13:26 ` Kevin O'Connor
2010-11-15 13:36 ` Gleb Natapov
2010-11-15 13:46 ` Gleb Natapov
2010-11-16 2:52 ` Kevin O'Connor
2010-11-16 7:22 ` Gleb Natapov
2010-11-16 13:49 ` Kevin O'Connor
2010-11-16 18:19 ` Blue Swirl
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=20101115080910.GA31752@redhat.com \
--to=gleb@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=armbru@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=kevin@koconnor.net \
--cc=kvm@vger.kernel.org \
--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