dev->bus->number,
PCI_SLOT(dev->devfn),
PCI_FUNC(dev->devfn));
- if ( !psdev || !psdev->pdev || !psdev->pdev->sh_info )
+
+ if ( !psdev || !psdev->pdev )
{
dev_err(&dev->dev,
- "pciback device is not found/in use/connected!\n");
+ "pciback device is not found/assigned\n");
goto end;
}
+
+ if ( !psdev->pdev->sh_info )
+ {
+ dev_err(&dev->dev, "pciback device is not connected or owned"
+ " by HVM, kill it\n");
+ kill_domain_by_device(psdev);
+ goto release;
+ }
+
if ( !test_bit(_XEN_PCIB_AERHANDLER,
(unsigned long *)&psdev->pdev->sh_info->flags) ) {
dev_err(&dev->dev,
dev->bus->number,
PCI_SLOT(dev->devfn),
PCI_FUNC(dev->devfn));
- if ( !psdev || !psdev->pdev || !psdev->pdev->sh_info)
+
+ if ( !psdev || !psdev->pdev )
{
dev_err(&dev->dev,
- "pciback device is not found/in use/connected!\n");
+ "pciback device is not found/assigned\n");
goto end;
}
+
+ if ( !psdev->pdev->sh_info )
+ {
+ dev_err(&dev->dev, "pciback device is not connected or owned"
+ " by HVM, kill it\n");
+ kill_domain_by_device(psdev);
+ goto release;
+ }
+
if ( !test_bit(_XEN_PCIB_AERHANDLER,
(unsigned long *)&psdev->pdev->sh_info->flags) ) {
dev_err(&dev->dev,
dev->bus->number,
PCI_SLOT(dev->devfn),
PCI_FUNC(dev->devfn));
- if ( !psdev || !psdev->pdev || !psdev->pdev->sh_info)
+
+ if ( !psdev || !psdev->pdev )
{
dev_err(&dev->dev,
- "pciback device is not found/in use/connected!\n");
+ "pciback device is not found/assigned\n");
goto end;
}
+
+ if ( !psdev->pdev->sh_info )
+ {
+ dev_err(&dev->dev, "pciback device is not connected or owned"
+ " by HVM, kill it\n");
+ kill_domain_by_device(psdev);
+ goto release;
+ }
+
/*Guest owns the device yet no aer handler regiested, kill guest*/
if ( !test_bit(_XEN_PCIB_AERHANDLER,
(unsigned long *)&psdev->pdev->sh_info->flags) ) {
dev->bus->number,
PCI_SLOT(dev->devfn),
PCI_FUNC(dev->devfn));
- if ( !psdev || !psdev->pdev || !psdev->pdev->sh_info)
+
+ if ( !psdev || !psdev->pdev )
{
dev_err(&dev->dev,
- "pciback device is not found/in use/connected!\n");
+ "pciback device is not found/assigned\n");
goto end;
}
+ if ( !psdev->pdev->sh_info )
+ {
+ dev_err(&dev->dev, "pciback device is not connected or owned"
+ " by HVM, kill it\n");
+ kill_domain_by_device(psdev);
+ goto release;
+ }
+
if ( !test_bit(_XEN_PCIB_AERHANDLER,
(unsigned long *)&psdev->pdev->sh_info->flags) ) {
dev_err(&dev->dev,