diff --git a/pkg/machine/qemu/config.go b/pkg/machine/qemu/config.go
index 90ebb057f4..10111b8891 100644
--- a/pkg/machine/qemu/config.go
+++ b/pkg/machine/qemu/config.go
@@ -20,6 +20,14 @@ type QEMUVirtualization struct {
 	machine.Virtualization
 }
 
+// setNewMachineCMDOpts are options needed to pass
+// into setting up the qemu command line.  long term, this need
+// should be eliminated
+// TODO Podman5
+type setNewMachineCMDOpts struct {
+	imageDir string
+}
+
 // findQEMUBinary locates and returns the QEMU binary
 func findQEMUBinary() (string, error) {
 	cfg, err := config.Default()
@@ -41,8 +49,8 @@ func (v *MachineVM) setQMPMonitorSocket() error {
 
 // setNewMachineCMD configure the CLI command that will be run to create the new
 // machine
-func (v *MachineVM) setNewMachineCMD(qemuBinary string) {
-	v.CmdLine = NewQemuBuilder(qemuBinary, v.addArchOptions())
+func (v *MachineVM) setNewMachineCMD(qemuBinary string, cmdOpts *setNewMachineCMDOpts) {
+	v.CmdLine = NewQemuBuilder(qemuBinary, v.addArchOptions(cmdOpts))
 	v.CmdLine.SetMemory(v.Memory)
 	v.CmdLine.SetCPUs(v.CPUs)
 	v.CmdLine.SetIgnitionFile(v.IgnitionFile)
@@ -63,6 +71,11 @@ func (p *QEMUVirtualization) NewMachine(opts machine.InitOptions) (machine.VM, e
 		vm.Name = opts.Name
 	}
 
+	dataDir, err := machine.GetDataDir(p.VMType())
+	if err != nil {
+		return nil, err
+	}
+
 	// set VM ignition file
 	ignitionFile, err := machine.NewMachineFile(filepath.Join(vmConfigDir, vm.Name+".ign"), nil)
 	if err != nil {
@@ -112,7 +125,8 @@ func (p *QEMUVirtualization) NewMachine(opts machine.InitOptions) (machine.VM, e
 	}
 
 	// configure command to run
-	vm.setNewMachineCMD(execPath)
+	cmdOpts := setNewMachineCMDOpts{imageDir: dataDir}
+	vm.setNewMachineCMD(execPath, &cmdOpts)
 	return vm, nil
 }
 
diff --git a/pkg/machine/qemu/options_darwin_amd64.go b/pkg/machine/qemu/options_darwin_amd64.go
index ff8d10db1c..10db185106 100644
--- a/pkg/machine/qemu/options_darwin_amd64.go
+++ b/pkg/machine/qemu/options_darwin_amd64.go
@@ -4,7 +4,7 @@ var (
 	QemuCommand = "qemu-system-x86_64"
 )
 
-func (v *MachineVM) addArchOptions() []string {
+func (v *MachineVM) addArchOptions(_ *setNewMachineCMDOpts) []string {
 	opts := []string{"-machine", "q35,accel=hvf:tcg", "-cpu", "host"}
 	return opts
 }
diff --git a/pkg/machine/qemu/options_darwin_arm64.go b/pkg/machine/qemu/options_darwin_arm64.go
index d75237938a..9d064e2b02 100644
--- a/pkg/machine/qemu/options_darwin_arm64.go
+++ b/pkg/machine/qemu/options_darwin_arm64.go
@@ -12,8 +12,8 @@ var (
 	QemuCommand = "qemu-system-aarch64"
 )
 
-func (v *MachineVM) addArchOptions() []string {
-	ovmfDir := getOvmfDir(v.ImagePath.GetPath(), v.Name)
+func (v *MachineVM) addArchOptions(cmdOpts *setNewMachineCMDOpts) []string {
+	ovmfDir := getOvmfDir(cmdOpts.imageDir, v.Name)
 	opts := []string{
 		"-accel", "hvf",
 		"-accel", "tcg",
@@ -25,18 +25,18 @@ func (v *MachineVM) addArchOptions() []string {
 }
 
 func (v *MachineVM) prepare() error {
-	ovmfDir := getOvmfDir(v.ImagePath.GetPath(), v.Name)
+	ovmfDir := getOvmfDir(filepath.Dir(v.ImagePath.GetPath()), v.Name)
 	cmd := []string{"/bin/dd", "if=/dev/zero", "conv=sync", "bs=1m", "count=64", "of=" + ovmfDir}
 	return exec.Command(cmd[0], cmd[1:]...).Run()
 }
 
 func (v *MachineVM) archRemovalFiles() []string {
-	ovmDir := getOvmfDir(v.ImagePath.GetPath(), v.Name)
+	ovmDir := getOvmfDir(filepath.Dir(v.ImagePath.GetPath()), v.Name)
 	return []string{ovmDir}
 }
 
 func getOvmfDir(imagePath, vmName string) string {
-	return filepath.Join(filepath.Dir(imagePath), vmName+"_ovmf_vars.fd")
+	return filepath.Join(imagePath, vmName+"_ovmf_vars.fd")
 }
 
 /*
diff --git a/pkg/machine/qemu/options_freebsd_amd64.go b/pkg/machine/qemu/options_freebsd_amd64.go
index ff8d10db1c..10db185106 100644
--- a/pkg/machine/qemu/options_freebsd_amd64.go
+++ b/pkg/machine/qemu/options_freebsd_amd64.go
@@ -4,7 +4,7 @@ var (
 	QemuCommand = "qemu-system-x86_64"
 )
 
-func (v *MachineVM) addArchOptions() []string {
+func (v *MachineVM) addArchOptions(_ *setNewMachineCMDOpts) []string {
 	opts := []string{"-machine", "q35,accel=hvf:tcg", "-cpu", "host"}
 	return opts
 }
diff --git a/pkg/machine/qemu/options_freebsd_arm64.go b/pkg/machine/qemu/options_freebsd_arm64.go
index 9a222190c8..e5ab376e9a 100644
--- a/pkg/machine/qemu/options_freebsd_arm64.go
+++ b/pkg/machine/qemu/options_freebsd_arm64.go
@@ -4,7 +4,7 @@ var (
 	QemuCommand = "qemu-system-aarch64"
 )
 
-func (v *MachineVM) addArchOptions() []string {
+func (v *MachineVM) addArchOptions(_ *setNewMachineCMDOpts) []string {
 	opts := []string{
 		"-machine", "virt",
 		"-accel", "tcg",
diff --git a/pkg/machine/qemu/options_linux_amd64.go b/pkg/machine/qemu/options_linux_amd64.go
index 3edd97ea1e..3dbff14dd4 100644
--- a/pkg/machine/qemu/options_linux_amd64.go
+++ b/pkg/machine/qemu/options_linux_amd64.go
@@ -4,7 +4,7 @@ var (
 	QemuCommand = "qemu-system-x86_64"
 )
 
-func (v *MachineVM) addArchOptions() []string {
+func (v *MachineVM) addArchOptions(_ *setNewMachineCMDOpts) []string {
 	opts := []string{
 		"-accel", "kvm",
 		"-cpu", "host",
diff --git a/pkg/machine/qemu/options_linux_arm64.go b/pkg/machine/qemu/options_linux_arm64.go
index 9481176531..7d0967f09d 100644
--- a/pkg/machine/qemu/options_linux_arm64.go
+++ b/pkg/machine/qemu/options_linux_arm64.go
@@ -9,7 +9,7 @@ var (
 	QemuCommand = "qemu-system-aarch64"
 )
 
-func (v *MachineVM) addArchOptions() []string {
+func (v *MachineVM) addArchOptions(_ *setNewMachineCMDOpts) []string {
 	opts := []string{
 		"-accel", "kvm",
 		"-cpu", "host",
diff --git a/pkg/machine/qemu/options_windows_amd64.go b/pkg/machine/qemu/options_windows_amd64.go
index c6ea4afb57..081ee9ccd5 100644
--- a/pkg/machine/qemu/options_windows_amd64.go
+++ b/pkg/machine/qemu/options_windows_amd64.go
@@ -4,7 +4,7 @@ var (
 	QemuCommand = "qemu-system-x86_64w"
 )
 
-func (v *MachineVM) addArchOptions() []string {
+func (v *MachineVM) addArchOptions(_ *setNewMachineCMDOpts) []string {
 	// "max" level is used, because "host" is not supported with "whpx" acceleration
 	// "vmx=off" disabled nested virtualization (not needed for podman)
 	// QEMU issue to track nested virtualization: https://gitlab.com/qemu-project/qemu/-/issues/628
diff --git a/pkg/machine/qemu/options_windows_arm64.go b/pkg/machine/qemu/options_windows_arm64.go
index 984c7e4015..c3d6596802 100644
--- a/pkg/machine/qemu/options_windows_arm64.go
+++ b/pkg/machine/qemu/options_windows_arm64.go
@@ -4,7 +4,7 @@ var (
 	QemuCommand = "qemu-system-aarch64w"
 )
 
-func (v *MachineVM) addArchOptions() []string {
+func (v *MachineVM) addArchOptions(_ *setNewMachineCMDOpts) []string {
 	// stub to fix compilation issues
 	opts := []string{}
 	return opts