First, let’s clarify again the terminology so we’re talking about the same thing. I’m going into some detail here because you may have a setup which complicates things (see at end of post for why).
The MBR is the first sector of the disk. The Windows fixmbr (not fdisk /mbr - that is old, and may corrupt the MBR!) command re-writes the bootstrap code (called the IPL) which resides in the MBR along with the partition table. The function of the Windows IPL is to read the table looking for the first active primary partition, and transfer control to the . . .
the first sector in that active partition; this is the boot sector. (And each partition has one.) In Windows, it is the fixboot command which restores the boot sector to a partition.
Grub can be set up to work like the Windows boot, in fact even using the Windows IPL. If grub’s stage1 is installed to the partition boot sector, the Windows IPL will call it transparently and it will appear that grub is controlling the entire boot, when in fact it was called from the MBR’s IPL. But alternatively, grub stage1 can be installed as the IPL itself with a pointer to its stage2 loader (/boot/grub/stage2) bypassing the partition boot sector altogether. Both setups will look identical to the user.
If you restore the Windows IPL using the installation CD’s Recovery Environment (the fixmbr command), that will work if (a) grub is installed to the root partition (i.e., its boot sector) and (b) the partition is a primary (not a logical) and (c) the partition’s bootable flag is set, making it “active”. If (b) is true, (a) and (c) can be done in YaST Bootloader, and you can use the Windows IPL. But note that YaST also has the option to “write generic boot code to MBR”, which is very similar code to the Windows IPL and functionally works the same. There can be situations however where the Windows fixmbr command will work while openSUSE will not be able to write its generic IPL, so it’s good to know about both methods.
If (b) is not true, then you must install grub stage1 to the MBR. You indicated that you had a problem doing this with YaST. What concerns me about this is your ref to xfs; is the first partition on the disk now formatted xfs whereas before it was not? Here is an excerpt from another thread with a similar problem:
XFS leaves no room for stage1 in the partition boot block. Therefore, do not specify an XFS partition as the location of the boot loader. This problem can be solved by creating a separate boot partition that is not formatted with XFS.
So, if you have root on an XFS formatted partition, that could be the problem if there is generic (or Windows) boot code in the MBR and it is looking for the boot sector in that partition. To avoid that, install grub to the MBR bypassing the partition boot sector. You can try that from a terminal window as root in the grub shell. If you want to try that, post back the output of the following:
fdisk -l -u
cat /boot/grub/device.map
cat /boot/grub/menu.lst
Alternatively, you could create a separate boot partition as suggested above. How do you want to proceed?