From: Bandan Das <bsd@redhat.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: qemu-devel@nongnu.org, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH 1/2] vfio: warn if host device rom can't be read
Date: Tue, 14 Jan 2014 22:37:11 +0530 [thread overview]
Message-ID: <jpgmwiyqyps.fsf@redhat.com> (raw)
In-Reply-To: <1389717073.3209.460.camel@bling.home> (Alex Williamson's message of "Tue, 14 Jan 2014 09:31:13 -0700")
Ccing Markus for the *_once macros
Alex Williamson <alex.williamson@redhat.com> writes:
> On Tue, 2014-01-14 at 21:45 +0530, Bandan Das wrote:
>> If the device rom can't be read, report an error to the
>> user. The guest might try to read the rom contents more than
>> once, so introduce macros that print a message only once and
>> not clutter up the console. This is to alert the user
>> that the device has a bad state that is causing rom read
>> failure or option rom loading has been disabled from the device
>> boot menu (among other reasons).
>>
>> Signed-off-by: Bandan Das <bsd@redhat.com>
>> ---
>> hw/misc/vfio.c | 7 +++++++
>> include/qemu/error-report.h | 20 ++++++++++++++++++++
>> 2 files changed, 27 insertions(+)
>>
>> diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
>> index 9aecaa8..e5b2826 100644
>> --- a/hw/misc/vfio.c
>> +++ b/hw/misc/vfio.c
>> @@ -1125,6 +1125,13 @@ static void vfio_pci_load_rom(VFIODevice *vdev)
>> vdev->rom_offset = reg_info.offset;
>>
>> if (!vdev->rom_size) {
>> + error_report_once("vfio-pci: Cannot read device rom at "
>> + "%04x:%02x:%02x.%x\n",
>> + vdev->host.domain, vdev->host.bus, vdev->host.slot,
>> + vdev->host.function);
>> + error_printf_once("Device option ROM contents are probably invalid "
>> + "(check dmesg).\nSkip option ROM probe with rombar=0, "
>> + "or load from file with romfile=\n");
>> return;
>> }
>>
>> diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h
>> index 3b098a9..7d24e4c 100644
>> --- a/include/qemu/error-report.h
>> +++ b/include/qemu/error-report.h
>> @@ -43,4 +43,24 @@ void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
>> const char *error_get_progname(void);
>> extern bool enable_timestamp_msg;
>>
>> +#define error_printf_once(fmt, ...) \
>> +({ \
>> + static bool __printf_once; \
>> + \
>> + if (!__printf_once) { \
>> + __printf_once = true; \
>> + error_printf(fmt, ##__VA_ARGS__); \
>> + } \
>> +}) \
>> +
>> +#define error_report_once(fmt, ...) \
>> +({ \
>> + static bool __report_once; \
>> + \
>> + if (!__report_once) { \
>> + __report_once = true; \
>> + error_report(fmt, ##__VA_ARGS__); \
>> + } \
>> +}) \
>> +
>> #endif
>
> Why do we need these if patch 2/2 comes along and only calls
> vfio_pci_load_rom() once? If we do need these, they should be a
> separate patch. Thanks,
I was in and out on this until I decided to include it for cases
where we vfio assign a number of functions from the same card - if rom
loading fails for one, it will most probably fail for others as
well and this will make sure to print it just once at bootup.
However, this also means that it will print once for unrelated assignments
too, I kind of half-convinced myself that that's probably ok :)
Would you rather have this get printed for each assigned device if loading
fails ?
> Alex
next prev parent reply other threads:[~2014-01-14 17:07 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-14 16:15 [Qemu-devel] [PATCH 0/2] vfio: Warn on failure to read device rom Bandan Das
2014-01-14 16:15 ` [Qemu-devel] [PATCH 1/2] vfio: warn if host device rom can't be read Bandan Das
2014-01-14 16:31 ` Alex Williamson
2014-01-14 17:07 ` Bandan Das [this message]
2014-01-14 17:18 ` Alex Williamson
2014-01-14 16:15 ` [Qemu-devel] [PATCH 2/2] vfio: Do not reattempt a failed rom read Bandan Das
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=jpgmwiyqyps.fsf@redhat.com \
--to=bsd@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=armbru@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).