How does this explanation square with the following code from KSPSetUp?
if (ksp->dmActive && !ksp->setupstage) {
/* first time in so build matrix and vector data structures using DM */
if (!ksp->vec_rhs) {ierr = DMCreateGlobalVector(ksp->dm,&ksp->vec_rhs);CHKERRQ(ierr);}
if (!ksp->vec_sol) {ierr = DMCreateGlobalVector(ksp->dm,&ksp->vec_sol);CHKERRQ(ierr);}
ierr = DMCreateMatrix(ksp->dm,MATAIJ,&A);CHKERRQ(ierr);
ierr = KSPSetOperators(ksp,A,A,stflg);CHKERRQ(ierr);
ierr = PetscObjectDereference((PetscObject)A);CHKERRQ(ierr);
}