On 12/12/2013 12:57 AM, Hiroshi Doyu wrote: > The device, which belongs to the same ASID, can try to enable the same > ASID as the other swgroup devices. This should be allowed but just > skip the actual register write. If the write value is different, it > will return -EINVAL. I guess this simplifies the body of the code a lot. Given this, I would revise the code I suggested in response to a previous patch, to something more like: offs = HWGRP_ASID_REG(i); val = smmu_read(smmu, offs); if (on) { if (WARN_ON(val && val != new_val)) return -ENODEV; memcpy(c->hwgrp, map, sizeof(u64)); } else { WARN_ON(val); } smmu_write(smmu, val, offs); > + if (val) { > + if (WARN_ON(val != mask)) > + return -EINVAL; > + goto skip; That means that: a) No error is returned when the ASIDs don't match. Surely you still want to return an error? b) "skip" skips setting up all HWGRP IDs for the device, whereas perhaps only 1 was shared yet the rest still need to be set up. If you really do want to ignore the error, then surely you want "continue;" here not "goto skip;"? > + } ... > +skip: > return 0; -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html