[PATCH 0/3] Make it possible to compile the x86 binaries without FDC

Thomas Huth posted 3 patches 1 week, 2 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240425184315.553329-1-thuth@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>
hw/i386/pc.c      | 13 +++++++++----
hw/i386/pc_piix.c |  6 ++++--
hw/i386/Kconfig   |  2 +-
3 files changed, 14 insertions(+), 7 deletions(-)
[PATCH 0/3] Make it possible to compile the x86 binaries without FDC
Posted by Thomas Huth 1 week, 2 days ago
For downstream versions of QEMU, we'd like to be able to compile QEMU
without the FDC code included (since it's not required for modern VMs
anymore and the FDC code has rather a bad reputation, see the VENOM CVE).

The q35 machine can already be instantiated without FDC, but for being
able to link a binary without the FDC code, the Kconfig file needs some
tweaks and there are two spots in the pc code that directly call functions
from the FDC code - those need to be disabled via #ifdefs.

The third patch changes the i440fx and isapc machine types so that
they can work without the FDC device, too, in case it has not been
compiled into the binary. It's marked as RFC since I assume that the
FDC was originally a fix compononent of these motherboards, so I'm
unsure whether we should allow the disablement there. OTOH, it seems
to work fine, and the FDC is only disabled when it is not available
in the binary, so I hope this patch is fine, too.

Thomas Huth (3):
  hw/i386/pc: Allow to compile without CONFIG_FDC_ISA
  hw/i386/Kconfig: Allow to compile Q35 without FDC_ISA
  hw/i386: Add the possibility to use i440fx and isapc without FDC

 hw/i386/pc.c      | 13 +++++++++----
 hw/i386/pc_piix.c |  6 ++++--
 hw/i386/Kconfig   |  2 +-
 3 files changed, 14 insertions(+), 7 deletions(-)

-- 
2.44.0
Re: [PATCH 0/3] Make it possible to compile the x86 binaries without FDC
Posted by Kevin Wolf 6 days, 3 hours ago
[ Cc: qemu-block ]

Am 25.04.2024 um 20:43 hat Thomas Huth geschrieben:
> For downstream versions of QEMU, we'd like to be able to compile QEMU
> without the FDC code included (since it's not required for modern VMs
> anymore and the FDC code has rather a bad reputation, see the VENOM CVE).
> 
> The q35 machine can already be instantiated without FDC, but for being
> able to link a binary without the FDC code, the Kconfig file needs some
> tweaks and there are two spots in the pc code that directly call functions
> from the FDC code - those need to be disabled via #ifdefs.
> 
> The third patch changes the i440fx and isapc machine types so that
> they can work without the FDC device, too, in case it has not been
> compiled into the binary. It's marked as RFC since I assume that the
> FDC was originally a fix compononent of these motherboards, so I'm
> unsure whether we should allow the disablement there. OTOH, it seems
> to work fine, and the FDC is only disabled when it is not available
> in the binary, so I hope this patch is fine, too.
> 
> Thomas Huth (3):
>   hw/i386/pc: Allow to compile without CONFIG_FDC_ISA
>   hw/i386/Kconfig: Allow to compile Q35 without FDC_ISA
>   hw/i386: Add the possibility to use i440fx and isapc without FDC
> 
>  hw/i386/pc.c      | 13 +++++++++----
>  hw/i386/pc_piix.c |  6 ++++--
>  hw/i386/Kconfig   |  2 +-
>  3 files changed, 14 insertions(+), 7 deletions(-)
> 
> -- 
> 2.44.0
> 
>
Re: [PATCH 0/3] Make it possible to compile the x86 binaries without FDC
Posted by Philippe Mathieu-Daudé 1 week, 2 days ago
Hi Thomas,

On 25/4/24 20:43, Thomas Huth wrote:
> For downstream versions of QEMU, we'd like to be able to compile QEMU
> without the FDC code included (since it's not required for modern VMs
> anymore and the FDC code has rather a bad reputation, see the VENOM CVE).

IIRC you still need to keep the i440fx+piix machine DS due to
migration compatibility, right?

Are you able to migrate a VM booted with FDC to a non-FDC one?

> The q35 machine can already be instantiated without FDC, but for being
> able to link a binary without the FDC code, the Kconfig file needs some
> tweaks and there are two spots in the pc code that directly call functions
> from the FDC code - those need to be disabled via #ifdefs.

Is it useful to you to have q35 without FDC but i440fx+piix with?
Or are you removing it from i440fx+piix due to shared code with q35?

> The third patch changes the i440fx and isapc machine types so that
> they can work without the FDC device, too, in case it has not been
> compiled into the binary. It's marked as RFC since I assume that the
> FDC was originally a fix compononent of these motherboards, so I'm
> unsure whether we should allow the disablement there. OTOH, it seems
> to work fine, and the FDC is only disabled when it is not available
> in the binary, so I hope this patch is fine, too.
> 
> Thomas Huth (3):
>    hw/i386/pc: Allow to compile without CONFIG_FDC_ISA
>    hw/i386/Kconfig: Allow to compile Q35 without FDC_ISA
>    hw/i386: Add the possibility to use i440fx and isapc without FDC
> 
>   hw/i386/pc.c      | 13 +++++++++----
>   hw/i386/pc_piix.c |  6 ++++--
>   hw/i386/Kconfig   |  2 +-
>   3 files changed, 14 insertions(+), 7 deletions(-)
>
Re: [PATCH 0/3] Make it possible to compile the x86 binaries without FDC
Posted by Thomas Huth 1 week, 2 days ago
On 25/04/2024 22.56, Philippe Mathieu-Daudé wrote:
> Hi Thomas,
> 
> On 25/4/24 20:43, Thomas Huth wrote:
>> For downstream versions of QEMU, we'd like to be able to compile QEMU
>> without the FDC code included (since it's not required for modern VMs
>> anymore and the FDC code has rather a bad reputation, see the VENOM CVE).
> 
> IIRC you still need to keep the i440fx+piix machine DS due to
> migration compatibility, right?
> 
> Are you able to migrate a VM booted with FDC to a non-FDC one?

Migration from a machine with FDC to one without is likely not possible. But 
that's also not the purpose of this series. It's about having the 
possibility to build a QEMU binary without FDC at all in case you don't have 
to support old machine types with FDC anymore.

>> The q35 machine can already be instantiated without FDC, but for being
>> able to link a binary without the FDC code, the Kconfig file needs some
>> tweaks and there are two spots in the pc code that directly call functions
>> from the FDC code - those need to be disabled via #ifdefs.
> 
> Is it useful to you to have q35 without FDC but i440fx+piix with?
> Or are you removing it from i440fx+piix due to shared code with q35?

I think it might get useful.

  Thomas