Ah, sorry - I didn’t pick that up properly.
Easiest way with native tools again is to make your first cylinder, leaving a good bit outside the curved surface as well as pushpulling it in as far as you want. Then use Intersect with Faces to create the intersections with the curved surface, delete the surplus outside cylinder, delete any faces remaining inside the cylinder that are part of the curved surface, and proceed as before.
As you have Pro, you could use Solid Tools to subtract the cylinder from the cushion (provided it is a solid). or better, use either Eneroths Solid Tools plugin, or Jim Foltz’s Trim and Keep (jf_trim_keep) both of which leave existing components as components, whereas the native Solid Tools convert components to groups.
Have to go out now before shops shut but if you can upload a cushion or sofa back, I’ll try to demonstrate and record an animated GIF late tonight UK time.