We have a number of device model names containing '.'. They're unusable with -global. That's because "-global A.B.C=foo" gets parsed as
driver = "A" property = "B.C" value = "foo". Wrong when the device model name is really A.B and the property is C, e.g. "-global cfi.pflash01.name". Related problem: QemuOpts ID may contain '.'. Such IDs are in fact common practice. Unfortunately, they're unusable with -set. For instance, -set A.B.C.D=foo gets parsed as group = "A" id = "B" arg = "C.D" value = "foo" Wrong when the id is really B.C and the arg is D, e.g. "-device isa-serial,id=s.0 -set device.s.0.chardev=c0". This issue isn't limited to devices. Related historical problem: commit b560a9a. Possible solutions: * Outlaw '.' in QemuOpts parameter names (and thus device model names and property names, because QemuOpts is a major way for users to specify them). * Resolve the syntactic ambiguity semantically (ugh) * Extend the syntax of -global and -set to let users avoid the issue, or replace them outright * Use the old ostrich algorithm Andreas, what restrictions does QOM place on QOM path component names? No '/', obviously. Anything else?