powerpc/vas: Use helper to unpin/close window

Use a helper to have the hardware unpin and mark a window closed.

Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Sukadev Bhattiprolu 2017-11-07 18:23:45 -08:00 коммит произвёл Michael Ellerman
Родитель 4963ac3632
Коммит 36a288fe9d
1 изменённых файлов: 15 добавлений и 7 удалений

Просмотреть файл

@ -1100,6 +1100,20 @@ static void poll_window_castout(struct vas_window *window)
/* stub for now */ /* stub for now */
} }
/*
* Unpin and close a window so no new requests are accepted and the
* hardware can evict this window from cache if necessary.
*/
static void unpin_close_window(struct vas_window *window)
{
u64 val;
val = read_hvwc_reg(window, VREG(WINCTL));
val = SET_FIELD(VAS_WINCTL_PIN, val, 0);
val = SET_FIELD(VAS_WINCTL_OPEN, val, 0);
write_hvwc_reg(window, VREG(WINCTL), val);
}
/* /*
* Close a window. * Close a window.
* *
@ -1114,8 +1128,6 @@ static void poll_window_castout(struct vas_window *window)
*/ */
int vas_win_close(struct vas_window *window) int vas_win_close(struct vas_window *window)
{ {
u64 val;
if (!window) if (!window)
return 0; return 0;
@ -1131,11 +1143,7 @@ int vas_win_close(struct vas_window *window)
poll_window_busy_state(window); poll_window_busy_state(window);
/* Unpin window from cache and close it */ unpin_close_window(window);
val = read_hvwc_reg(window, VREG(WINCTL));
val = SET_FIELD(VAS_WINCTL_PIN, val, 0);
val = SET_FIELD(VAS_WINCTL_OPEN, val, 0);
write_hvwc_reg(window, VREG(WINCTL), val);
poll_window_castout(window); poll_window_castout(window);