[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Xen-devel] [PATCH 2/2] xen_platform: SUSE xenlinux unp
From: |
Stefano Stabellini |
Subject: |
Re: [Qemu-devel] [Xen-devel] [PATCH 2/2] xen_platform: SUSE xenlinux unplug for emulated PCI |
Date: |
Thu, 1 Sep 2016 18:57:38 -0700 (PDT) |
User-agent: |
Alpine 2.10 (DEB 1266 2009-07-14) |
On Thu, 1 Sep 2016, Konrad Rzeszutek Wilk wrote:
> 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?
Yes, please. The file is docs/misc/hvm-emulated-unplug.markdown in the
Xen repository. Please also document the behavior with SCSI disks, which
is currently missing.
> >
> > Signed-off-by: Olaf Hering <address@hidden>
> > ---
> > 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
> > address@hidden
> > https://lists.xen.org/xen-devel
>