On Sun, Jul 14, 2013 at 12:25:16PM +0300, Gleb Natapov wrote: > On Thu, Jul 04, 2013 at 08:54:32AM +0200, Paolo Bonzini wrote: > > Il 03/07/2013 18:33, Cornelia Huck ha scritto: > > > On Wed, 03 Jul 2013 17:30:40 +0200 > > > Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > > > > >> Il 03/07/2013 16:30, Cornelia Huck ha scritto: > > >>> + /* > > >>> + * Return cookie in gpr 2, but don't overwrite the register if the > > >>> + * diagnose will be handled by userspace. > > >>> + */ > > >>> + if (ret != -EOPNOTSUPP) > > >>> + vcpu->run->s.regs.gprs[2] = ret; > > >> > > >> I think this should now be "if (ret >= 0)". > > > > > > Hm, we don't want to kill gpr 2's old contents if userspace will do > > > something, which means -EOPNOTSUPP. > > > > In the end kvm_io_bus_write_cookie only returns -EOPNOTSUPP if there is > > an error, so it works. But if this were to change, the code would > > break. That's why I suggested testing "ret >= 0" rather than "ret != > > -EOPNOTSUPP". But in the end it is the same. > > > > >> > > >>> /* kvm_io_bus_write returns -EOPNOTSUPP if it found no match. */ > > >> > > >> The comment is now obsolete. > > > > > > s/kvm_io_bus_write/kvm_io_bus_write_cookie/ ? Otherwise, this is still > > > true. > > > > True but somewhat misplaced, it is basically saying the same thing as > > the "Return cookie in gpr 2" comment just above. > > > > Anyhow, these are very small details. I changed kvm_io_bus_write to > > kvm_io_bus_write_cookie in the comment and applied the patches to kvm-queue. > > > 1/2 broke x86. QEMU prints "Invalid read from memory region kvm-pic" and > guest hangs. Looks like IO is forwarded to userspace instead of in kernel device > for some reason. Un-applying for now. > OK, stupid typo. Will amend the commit instead of dropping. diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 6cde6fa..a86735d 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -2942,7 +2942,7 @@ static int __kvm_io_bus_read(struct kvm_io_bus *bus, struct kvm_io_range *range, return -EOPNOTSUPP; while (idx < bus->dev_count && - kvm_io_bus_sort_cmp(&range, &bus->range[idx]) == 0) { + kvm_io_bus_sort_cmp(range, &bus->range[idx]) == 0) { if (!kvm_iodevice_read(bus->range[idx].dev, range->addr, range->len, val)) return idx; -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html