OSDN Git Service

s390/uv: handle destroy page legacy interface
authorChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 17 Nov 2020 19:00:33 +0000 (20:00 +0100)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Wed, 18 Nov 2020 12:08:49 +0000 (13:08 +0100)
Older firmware can return rc=0x107 rrc=0xd for destroy page if the
page is already non-secure. This should be handled like a success
as already done by newer firmware.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Fixes: 1a80b54d1ce1 ("s390/uv: add destroy page call")
Reviewed-by: David Hildenbrand <david@redhat.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
arch/s390/kernel/uv.c

index 14bd9d5..883bfed 100644 (file)
@@ -129,8 +129,15 @@ int uv_destroy_page(unsigned long paddr)
                .paddr = paddr
        };
 
-       if (uv_call(0, (u64)&uvcb))
+       if (uv_call(0, (u64)&uvcb)) {
+               /*
+                * Older firmware uses 107/d as an indication of a non secure
+                * page. Let us emulate the newer variant (no-op).
+                */
+               if (uvcb.header.rc == 0x107 && uvcb.header.rrc == 0xd)
+                       return 0;
                return -EINVAL;
+       }
        return 0;
 }