How to handle clean operation in Data Cache

Hi,

I have a question.

when a processor sends a clean request to data cache, how data cache should behave?

1. does it need to evict all cache lines present in cache (including clean lines) or does it evict only Dirty lines.

2. if dirty lines to write back to upper level only, then does these dirty lines can we retain by changing its state to clean in cache itself?

My other question is if in cache coherency, one processor sends flush request then cache lines present inside victim cache will be written back to upper level but how to inform snoop filter that cache has invalidated all cache lines present in it??

do we need to raise any transaction for flush request from processor??