Re: [Libguestfs] [PATCH] lib: Choose q35 machine type for x86-64
On Fri, Feb 10, 2023 at 10:57:40AM +, Richard W.M. Jones wrote: > > This is upstream in > https://github.com/libguestfs/libguestfs/commit/f0f8e6c5fe0c3f6d5d90534d263bded3a4dc7e8d This is a Fedora Rawhide build: https://koji.fedoraproject.org/koji/taskinfo?taskID=97341784 which if successful will let you mix and match libguestfs 1.51.1 (which includes this patch) with local builds of guestfs-tools, virt-v2v etc. for testing purposes. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v ___ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs
Re: [Libguestfs] [PATCH] lib: Choose q35 machine type for x86-64
This is upstream in https://github.com/libguestfs/libguestfs/commit/f0f8e6c5fe0c3f6d5d90534d263bded3a4dc7e8d -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 100 libraries supported. http://fedoraproject.org/wiki/MinGW ___ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs
Re: [Libguestfs] [PATCH] lib: Choose q35 machine type for x86-64
On Thu, Feb 09, 2023 at 03:34:26PM +0100, Laszlo Ersek wrote: > On 2/9/23 14:54, Daniel P. Berrangé wrote: > > On Thu, Feb 09, 2023 at 01:45:33PM +, Richard W.M. Jones wrote: > >> This machine type is more modern than the older 'pc' type and as most > >> qemu development is now focused there we expect it will perform and > >> behave better. In almost all respects this change should make no > >> difference. > > > > The key differences with q35 that have caused problems for > > apps in the past > > > > - CDROMs must use 'sata' bus not 'ide' > > - PCI topology is completely different, so if you're > >trying to associate between the host side view of > >the config and the guest side view, your logic may > >need adapting > > - Hotplug of devices is limited to 1 device unless you > >pre-create a bunch of pcie-root-port devices > > > > If you're already using 'virt' machine for aarch64 successfully > > though, you should have already known about the last 2 points, > > if they did indeed affect libguestfs. > > > > The first point could conceivably affect the way to detect > > devices, depending on what approach is used, but could equally > > be a non issue. > > > > I presume the libguestfs test suite would have complained if > > there was any genuine problem with the change, since it is > > pretty comphrensive. > > We still have a direct PCI address reference, after commit range > 4af6d68e2d8b..5858c2cf6c24 (RH bug 2034160). It's only supposed to be > used on a fallback (very old libvirt) path. I've not found anything > similar in the direct backend. > > I think one thing we could do is compare appliance QEMU cmdlines > before/after, and libvirt domain XMLs before/after. We might not catch > the corner cases like that, but eventually we'll have to make the switch > anyway, and I expect the corner cases will not be hard to fix once they > pop up. > > Acked-by: Laszlo Ersek I will add a link to this thread to the commit so we can reference it in case of any future problems. Rich. > Laszlo > > > > > >> > >> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2168578 > >> --- > >> lib/guestfs-internal.h | 3 +++ > >> 1 file changed, 3 insertions(+) > >> > >> diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h > >> index 07a2b9f617..4e9a103d78 100644 > >> --- a/lib/guestfs-internal.h > >> +++ b/lib/guestfs-internal.h > >> @@ -128,6 +128,9 @@ cleanup_mutex_unlock (pthread_mutex_t **ptr) > >> #define MAX_WINDOWS_EXPLORER_SIZE (4 * 1000 * 1000) > >> > >> /* Machine types. */ > >> +#if defined(__x86_64__) > >> +#define MACHINE_TYPE "q35" > >> +#endif > >> #ifdef __arm__ > >> #define MACHINE_TYPE "virt" > >> #endif > >> -- > >> 2.39.0 > >> > >> ___ > >> Libguestfs mailing list > >> Libguestfs@redhat.com > >> https://listman.redhat.com/mailman/listinfo/libguestfs > >> > > > > With regards, > > Daniel -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html ___ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs
Re: [Libguestfs] [PATCH] lib: Choose q35 machine type for x86-64
On 2/9/23 14:54, Daniel P. Berrangé wrote: > On Thu, Feb 09, 2023 at 01:45:33PM +, Richard W.M. Jones wrote: >> This machine type is more modern than the older 'pc' type and as most >> qemu development is now focused there we expect it will perform and >> behave better. In almost all respects this change should make no >> difference. > > The key differences with q35 that have caused problems for > apps in the past > > - CDROMs must use 'sata' bus not 'ide' > - PCI topology is completely different, so if you're >trying to associate between the host side view of >the config and the guest side view, your logic may >need adapting > - Hotplug of devices is limited to 1 device unless you >pre-create a bunch of pcie-root-port devices > > If you're already using 'virt' machine for aarch64 successfully > though, you should have already known about the last 2 points, > if they did indeed affect libguestfs. > > The first point could conceivably affect the way to detect > devices, depending on what approach is used, but could equally > be a non issue. > > I presume the libguestfs test suite would have complained if > there was any genuine problem with the change, since it is > pretty comphrensive. We still have a direct PCI address reference, after commit range 4af6d68e2d8b..5858c2cf6c24 (RH bug 2034160). It's only supposed to be used on a fallback (very old libvirt) path. I've not found anything similar in the direct backend. I think one thing we could do is compare appliance QEMU cmdlines before/after, and libvirt domain XMLs before/after. We might not catch the corner cases like that, but eventually we'll have to make the switch anyway, and I expect the corner cases will not be hard to fix once they pop up. Acked-by: Laszlo Ersek Laszlo > >> >> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2168578 >> --- >> lib/guestfs-internal.h | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h >> index 07a2b9f617..4e9a103d78 100644 >> --- a/lib/guestfs-internal.h >> +++ b/lib/guestfs-internal.h >> @@ -128,6 +128,9 @@ cleanup_mutex_unlock (pthread_mutex_t **ptr) >> #define MAX_WINDOWS_EXPLORER_SIZE (4 * 1000 * 1000) >> >> /* Machine types. */ >> +#if defined(__x86_64__) >> +#define MACHINE_TYPE "q35" >> +#endif >> #ifdef __arm__ >> #define MACHINE_TYPE "virt" >> #endif >> -- >> 2.39.0 >> >> ___ >> Libguestfs mailing list >> Libguestfs@redhat.com >> https://listman.redhat.com/mailman/listinfo/libguestfs >> > > With regards, > Daniel ___ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs
Re: [Libguestfs] [PATCH] lib: Choose q35 machine type for x86-64
On Thu, Feb 09, 2023 at 01:54:42PM +, Daniel P. Berrangé wrote: > On Thu, Feb 09, 2023 at 01:45:33PM +, Richard W.M. Jones wrote: > > This machine type is more modern than the older 'pc' type and as most > > qemu development is now focused there we expect it will perform and > > behave better. In almost all respects this change should make no > > difference. > > The key differences with q35 that have caused problems for > apps in the past > > - CDROMs must use 'sata' bus not 'ide' > - PCI topology is completely different, so if you're >trying to associate between the host side view of >the config and the guest side view, your logic may >need adapting > - Hotplug of devices is limited to 1 device unless you >pre-create a bunch of pcie-root-port devices > > If you're already using 'virt' machine for aarch64 successfully > though, you should have already known about the last 2 points, > if they did indeed affect libguestfs. > > The first point could conceivably affect the way to detect > devices, depending on what approach is used, but could equally > be a non issue. > > I presume the libguestfs test suite would have complained if > there was any genuine problem with the change, since it is > pretty comphrensive. I ran the full test suite and there were no complaints. In particular we do now do some complicated mapping between PCI and our internal device names[1] and at least the test of that didn't complain. I suspect we could see problems in guestfs-tools, especially things like virt-customize which are running things inside the appliance. For RHEL I have scheduled this change for early in the 9.3 cycle so there is plenty of time to test it. Rich. [1] https://github.com/libguestfs/libguestfs/blob/master/daemon/device-name-translation.c > > > > Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2168578 > > --- > > lib/guestfs-internal.h | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h > > index 07a2b9f617..4e9a103d78 100644 > > --- a/lib/guestfs-internal.h > > +++ b/lib/guestfs-internal.h > > @@ -128,6 +128,9 @@ cleanup_mutex_unlock (pthread_mutex_t **ptr) > > #define MAX_WINDOWS_EXPLORER_SIZE (4 * 1000 * 1000) > > > > /* Machine types. */ > > +#if defined(__x86_64__) > > +#define MACHINE_TYPE "q35" > > +#endif > > #ifdef __arm__ > > #define MACHINE_TYPE "virt" > > #endif > > -- > > 2.39.0 > > > > ___ > > Libguestfs mailing list > > Libguestfs@redhat.com > > https://listman.redhat.com/mailman/listinfo/libguestfs > > > > With regards, > Daniel > -- > |: https://berrange.com -o-https://www.flickr.com/photos/dberrange :| > |: https://libvirt.org -o-https://fstop138.berrange.com :| > |: https://entangle-photo.org-o-https://www.instagram.com/dberrange :| -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top ___ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs
Re: [Libguestfs] [PATCH] lib: Choose q35 machine type for x86-64
On Thu, Feb 09, 2023 at 01:45:33PM +, Richard W.M. Jones wrote: > This machine type is more modern than the older 'pc' type and as most > qemu development is now focused there we expect it will perform and > behave better. In almost all respects this change should make no > difference. The key differences with q35 that have caused problems for apps in the past - CDROMs must use 'sata' bus not 'ide' - PCI topology is completely different, so if you're trying to associate between the host side view of the config and the guest side view, your logic may need adapting - Hotplug of devices is limited to 1 device unless you pre-create a bunch of pcie-root-port devices If you're already using 'virt' machine for aarch64 successfully though, you should have already known about the last 2 points, if they did indeed affect libguestfs. The first point could conceivably affect the way to detect devices, depending on what approach is used, but could equally be a non issue. I presume the libguestfs test suite would have complained if there was any genuine problem with the change, since it is pretty comphrensive. > > Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2168578 > --- > lib/guestfs-internal.h | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h > index 07a2b9f617..4e9a103d78 100644 > --- a/lib/guestfs-internal.h > +++ b/lib/guestfs-internal.h > @@ -128,6 +128,9 @@ cleanup_mutex_unlock (pthread_mutex_t **ptr) > #define MAX_WINDOWS_EXPLORER_SIZE (4 * 1000 * 1000) > > /* Machine types. */ > +#if defined(__x86_64__) > +#define MACHINE_TYPE "q35" > +#endif > #ifdef __arm__ > #define MACHINE_TYPE "virt" > #endif > -- > 2.39.0 > > ___ > Libguestfs mailing list > Libguestfs@redhat.com > https://listman.redhat.com/mailman/listinfo/libguestfs > With regards, Daniel -- |: https://berrange.com -o-https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o-https://fstop138.berrange.com :| |: https://entangle-photo.org-o-https://www.instagram.com/dberrange :| ___ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs