In Vmware try to install in IDE mode. After install, add the sata/ahci drivers manually through the "Add Hardware" wizard and then power off VM, remove the IDE controller (without removing the VHD) and create a new Sata controller using the same vhd, save settings and start VM, it should work without BSOD. Ensure that you're using the backported generic Ahci driver for this to work.
Not exactly the best way. Just install on IDE disk, and add a secondary AHCI drive. Once the AHCI controller is correctly detected, you can connect the OS drive to it and the OS will boot. That's a general method, it works moving HDDs trough different mobos, it works on any VM environment.
For VHD support with Grub4dos on XP, SVBUS is required (but it only works from memory on UEFI mode). For native VHD support to boot XP from BCD, vhdmp.sys needs to be backported from windows 7 beta versions but that might take a while.
Now there is no BSOD, but now there is another problem... Please wait... screen when going to OOBE taking forever, also note that I am updated XP with update pack from XP2ESD 1.6.2 by using nLite
SVbus or Winvblock or Firadisk. The former is the easier to use, but the mileage may vary depending the HW and the Windows Version (XP51/XP52/Vista and so on). No idea if it works in UEFI mode, for sure Grub4Dos is a MBR thing, and GrubForWin in UEFI is a whole different world, at least it was the last time I used it. I placed the Native word in quotes for a reason. Whatever no problem, here on MDL users are allergic to real novelties, and almost no one has idea of what a native vhd(x) is. No matter if quoted or not.
By native, I mean NT6 boot manager's built-in VHD/VHDx support to boot Windows OS in VHD, but in XP/Vista 0x7B BSOD will appear unless vhdmp.sys is backported.
By native I (and MS) mean an OS that can boot from vhd(x) by design, (as opposite as booting inside a VM). By "native" I mean anything that mimic this feature on OSes that don't support that feature by themself like XP/Vista and also Linux. Speaking of XP boots w/o any problem using Grub4Dos + SVbus/firadisk/Winvblock and the NT5 bootloader. It BSOD because on first boot it needs to know not just about the virtual SVbus controller but also the real HDD controller. So you can either install XP on a real partition to have the HW detected properly, then install SVbus, then copy the partition on the VHD. Or you can use directly the VHD booting with HIrens boot CD then mount the VHD using IMdisk, then fix XP using the FIX_HDD.cmd script. The above is valid using MBR both on VHD and the real HDD and is valid also for Vista and the unsupported SKUs of Win7 (only ultimate/enterprise/and thinPC have the native boot support).
On my 12900k, and ASUS Z690 Prime-A, when I try Windows XP or Server 2003 32 bit, I get through the first part fine, but after rebooting, my USB stops working, and I get a DRIVER_IRQL_NOT_LESS_OR_EQUAL bsod.