Thank you for the replies. I will note that I suspected SeaBIOS as well. However, testing 6.2.0 with SeaBIOS 14 (which is the version that shipped with 6.1.1) did not change the behavior, so I concluded it was a change in Qemu, despite the fact that SeaBIOS is setting up the tables.
I was about to write a note that this information is hard to find, but I feel I need to apologize. When I go to the user manual [1] it explains the change in behavior: "Historically preference was given to the coarsest topology parameters when computing missing values (ie sockets preferred over cores, which were preferred over threads), however, this behaviour is considered liable to change. Prior to 6.2 the preference was sockets over cores over threads. Since 6.2 the preference is cores over sockets over threads. For example, the following option defines a machine board with 2 sockets of 1 core before 6.2 and 1 socket of 2 cores after 6.2: -smp 2" I should have checked first. [1] https://www.qemu.org/docs/master/system/invocation.html