On Mon, 2013-02-18 at 23:08 +0000, David Woodhouse wrote:
Laszlo has hooked up the RCR on the PIIX3 already, so something like this ought to make it reset the PAM setup *only* if reset via that...
+static void i440fx_reset(DeviceState *ds) +{
- PCIDevice *dev = DO_UPCAST(PCIDevice, qdev, ds);
- PCII440FXState *d = DO_UPCAST(PCII440FXState, dev, dev);
- uint8_t *pci_conf = d->dev.config;
- if (!d->piix3->rcr_hard_reset)
return;
... except that bit (referring to PIIX3 state directly from i440fx_reset(), having stashed a pointer to it) is horrible.
I've posted a 'cleaner' but much larger and more intrusive patch which shows how we could introduce a 'reset type' as a proper concept, which may well be useful for other platforms and situations too.
I'm not too bothered which way we go, but it would be very good to fix the PAM reset in qemu, because it's a genuine fix and it's *extremely* convenient to work around the KVM CS segment base bug.