On 3/17/2023 8:15 PM, Jonathan Derrick wrote: > > > On 3/15/23 3:51 PM, Patel, Nirmal wrote: >> On 2/24/2023 1:28 PM, Nirmal Patel wrote: >>> VMD driver can disable or enable MSI remapping by changing >>> VMCONFIG_MSI_REMAP register. This register needs to be set to the >>> default value during soft reboots. Drives failed to enumerate >>> when Windows boots after performing a soft reboot from Linux. >>> Windows doesn't support MSI remapping disable feature and stale >>> register value hinders Windows VMD driver initialization process. >>> Adding vmd_shutdown function to make sure to set the VMCONFIG >>> register to the default value. >>> >>> Signed-off-by: Nirmal Patel <nirmal.patel@xxxxxxxxxxxxxxx> >>> Fixes: ee81ee84f873 ("PCI: vmd: Disable MSI-X remapping when possible") >>> --- >>> drivers/pci/controller/vmd.c | 8 ++++++++ >>> 1 file changed, 8 insertions(+) >>> >>> diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c >>> index 769eedeb8802..50a187a29a1d 100644 >>> --- a/drivers/pci/controller/vmd.c >>> +++ b/drivers/pci/controller/vmd.c >>> @@ -979,6 +979,13 @@ static void vmd_remove(struct pci_dev *dev) >>> ida_simple_remove(&vmd_instance_ida, vmd->instance); >>> } >>> +static void vmd_shutdown(struct pci_dev *dev) >>> +{ >>> + struct vmd_dev *vmd = pci_get_drvdata(dev); >>> + >>> + vmd_remove_irq_domain(vmd); >>> +} >>> + >>> #ifdef CONFIG_PM_SLEEP >>> static int vmd_suspend(struct device *dev) >>> { >>> @@ -1056,6 +1063,7 @@ static struct pci_driver vmd_drv = { >>> .id_table = vmd_ids, >>> .probe = vmd_probe, >>> .remove = vmd_remove, >>> + .shutdown = vmd_shutdown, >>> .driver = { >>> .pm = &vmd_dev_pm_ops, >>> }, >> >> Gentle ping. >> >> Thanks >> > > LGTM > Reviewed-by: Jon Derrick <jonathan.derrick@xxxxxxxxx> Gentle ping. Thanks