|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/2] xen_platform: SUSE xenlinux unplug for emulated PCI
On Thu, Sep 01, 2016 at 02:11:31PM +0200, Olaf Hering wrote:
> Implement SUSE specific unplug protocol for emulated PCI devices
> in PVonHVM guests. Its a simple 'outl(1, (ioaddr + 4));'.
> This protocol was implemented and used since Xen 3.0.4.
> It is used in all SUSE/SLES/openSUSE releases up to SLES11SP3 and
> openSUSE 12.3.
Should this be documented in the protocol?
>
> Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
> ---
> hw/i386/xen/xen_platform.c | 31 ++++++++++++++++++++++++++++++-
> 1 file changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
> index d94b53c..8802482 100644
> --- a/hw/i386/xen/xen_platform.c
> +++ b/hw/i386/xen/xen_platform.c
> @@ -314,13 +314,42 @@ static void xen_platform_ioport_writeb(void *opaque,
> hwaddr addr,
> uint64_t val, unsigned int size)
> {
> PCIXenPlatformState *s = opaque;
> + PCIDevice *pci_dev = PCI_DEVICE(s);
>
> switch (addr) {
> case 0: /* Platform flags */
> platform_fixed_ioport_writeb(opaque, 0, (uint32_t)val);
> break;
> + case 4:
> + if (val == 1) {
> + /*
> + * SUSE unplug for Xenlinux
> + * xen-kmp used this since xen-3.0.4, instead the official
> protocol from xen-3.3+
> + * It did an unconditional "outl(1, (ioaddr + 4));"
> + * Pre VMDP 1.7 made use of 4 and 8 depending on how VMDP was
> configured.
> + * If VMDP was to control both disk and LAN it would use 4.
> + * If it controlled just disk or just LAN, it would use 8 below.
> + */
> + blk_drain_all();
> + blk_flush_all();
> + pci_unplug_disks(pci_dev->bus);
> + pci_unplug_nics(pci_dev->bus);
> + }
> + break;
> case 8:
> - log_writeb(s, (uint32_t)val);
> + switch (val) {
> + case 1:
> + blk_drain_all();
> + blk_flush_all();
> + pci_unplug_disks(pci_dev->bus);
> + break;
> + case 2:
> + pci_unplug_nics(pci_dev->bus);
> + break;
> + default:
> + log_writeb(s, (uint32_t)val);
> + break;
> + }
> break;
> default:
> break;
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> https://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |