|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 06/13] vpci/header: implement guest BAR register handlers
On 04.02.2022 07:34, Oleksandr Andrushchenko wrote:
> +static uint32_t guest_bar_ignore_read(const struct pci_dev *pdev,
> + unsigned int reg, void *data)
> +{
> + return 0;
> +}
> +
> +static int bar_ignore_access(const struct pci_dev *pdev, unsigned int reg,
> + struct vpci_bar *bar)
> +{
> + if ( is_hardware_domain(pdev->domain) )
> + return 0;
> +
> + return vpci_add_register(pdev->vpci, guest_bar_ignore_read, NULL,
> + reg, 4, bar);
> +}
For these two functions: I'm not sure "ignore" is an appropriate
term here. unused_bar_read() and unused_bar() maybe? Or,
considering we already have VPCI_BAR_EMPTY, s/unused/empty/ ? I'm
also not sure we really need the is_hardware_domain() check here:
Returning 0 for Dom0 is going to be fine as well; there's no need
to fetch the value from actual hardware. The one exception might
be for devices with buggy BAR behavior ...
> @@ -516,6 +594,11 @@ static int init_bars(struct pci_dev *pdev)
> if ( (val & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO )
> {
> bars[i].type = VPCI_BAR_IO;
> +
> + rc = bar_ignore_access(pdev, reg, &bars[i]);
> + if ( rc )
> + return rc;
Elsewhere the command register is restored on error paths.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |