All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Alex Williamson" <alex.williamson@redhat.com>,
	"Cédric Le Goater" <clg@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Sriram Yagnaraman" <sriram.yagnaraman@est.tech>,
	"Jason Wang" <jasowang@redhat.com>,
	"Keith Busch" <kbusch@kernel.org>,
	"Klaus Jensen" <its@irrelevant.dk>,
	qemu-devel@nongnu.org, qemu-block@nongnu.org
Subject: Re: [PATCH v6 13/15] hw/pci: Determine if rombar is explicitly enabled
Date: Wed, 21 Feb 2024 09:15:06 +0100	[thread overview]
Message-ID: <871q961bed.fsf@pond.sub.org> (raw)
In-Reply-To: <20240220-reuse-v6-13-2e42a28b0cf2@daynix.com> (Akihiko Odaki's message of "Tue, 20 Feb 2024 21:24:48 +0900")

Akihiko Odaki <akihiko.odaki@daynix.com> writes:

> vfio determines if rombar is explicitly enabled by inspecting QDict.
> Inspecting QDict is not nice because QDict is untyped and depends on the
> details on the external interface. Add an infrastructure to determine if
> rombar is explicitly enabled to hw/pci.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---
>  include/hw/pci/pci_device.h | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h
> index ca151325085d..c4fdc96ef50d 100644
> --- a/include/hw/pci/pci_device.h
> +++ b/include/hw/pci/pci_device.h
> @@ -205,6 +205,11 @@ static inline uint16_t pci_get_bdf(PCIDevice *dev)
>      return PCI_BUILD_BDF(pci_bus_num(pci_get_bus(dev)), dev->devfn);
>  }
>  
> +static inline bool pci_rom_bar_explicitly_enabled(PCIDevice *dev)
> +{
> +    return dev->rom_bar && dev->rom_bar != -1;

Compares signed with unsigned: rom_bar is uint32_t, -1 is int.

If int is at most 32 bits, the comparison converts -1 to
(uint32_t)0xffffffff.

If int is wider, it converts dev->rom_bar to int without changing its
value.  In particular, it converts the default value 0xffffffff (written
as -1 in the previous patch) to (int)0xffffffff.  Oops.

Best not to mix signed and unsigned in comparisons.  Easy enough to
avoid here.

Still, we don't actually test "rom_bar has not been set".  We test
"rom_bar has the default value".  Nothing stops a user from passing
rombar=0xffffffff to -device.  See my review of the next patch.

> +}
> +
>  static inline void pci_set_power(PCIDevice *pci_dev, bool state)
>  {
>      /*



  reply	other threads:[~2024-02-21  8:16 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-20 12:24 [PATCH v6 00/15] hw/pci: SR-IOV related fixes and improvements Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 01/15] hw/nvme: Use pcie_sriov_num_vfs() Akihiko Odaki
2024-02-20 14:29   ` Kevin Wolf
2024-02-20 14:47     ` Klaus Jensen
2024-02-20 14:53     ` Kevin Wolf
2024-02-20 15:33       ` Akihiko Odaki
2024-02-20 20:40         ` Klaus Jensen
2024-02-20 12:24 ` [PATCH v6 02/15] pcie_sriov: Validate NumVFs Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 03/15] pcie_sriov: Reset SR-IOV extended capability Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 04/15] pcie_sriov: Do not reset NumVFs after disabling VFs Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 05/15] hw/pci: Always call pcie_sriov_pf_reset() Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 06/15] hw/pci: Rename has_power to enabled Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 07/15] pcie_sriov: Do not manually unrealize Akihiko Odaki
2024-03-12 19:37   ` Michael S. Tsirkin
2024-02-20 12:24 ` [PATCH v6 08/15] pcie_sriov: Reuse SR-IOV VF device instances Akihiko Odaki
2024-03-12 19:47   ` Michael S. Tsirkin
2024-02-20 12:24 ` [PATCH v6 09/15] pcie_sriov: Release VFs failed to realize Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 10/15] pcie_sriov: Remove num_vfs from PCIESriovPF Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 11/15] pcie_sriov: Register VFs after migration Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 12/15] hw/pci: Use -1 as a default value for rombar Akihiko Odaki
2024-02-21  7:59   ` Markus Armbruster
2024-02-22  6:40     ` Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 13/15] hw/pci: Determine if rombar is explicitly enabled Akihiko Odaki
2024-02-21  8:15   ` Markus Armbruster [this message]
2024-02-22  6:50     ` Akihiko Odaki
2024-02-20 12:24 ` [PATCH v6 14/15] vfio: Avoid inspecting option QDict for rombar Akihiko Odaki
2024-02-21  8:16   ` Markus Armbruster
2024-02-20 12:24 ` [PATCH v6 15/15] hw/qdev: Remove opts member Akihiko Odaki
2024-02-21  8:18   ` Markus Armbruster

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=871q961bed.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=akihiko.odaki@daynix.com \
    --cc=alex.williamson@redhat.com \
    --cc=berrange@redhat.com \
    --cc=clg@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=its@irrelevant.dk \
    --cc=jasowang@redhat.com \
    --cc=kbusch@kernel.org \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=sriram.yagnaraman@est.tech \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.