css.c (b7cbebf2b9d7aa8854cfd6a45484e160244e9f48) | css.c (19f703477314a5db09ffc3c0f6be9c45645f8302) |
---|---|
1/* 2 * Channel subsystem base support. 3 * 4 * Copyright 2012 IBM Corp. 5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 6 * 7 * This work is licensed under the terms of the GNU GPL, version 2 or (at 8 * your option) any later version. See the COPYING file in the top-level --- 860 unchanged lines hidden (view full) --- 869 bool idaw_fmt2 = cds->flags & CDS_F_C64; 870 bool ccw_fmt1 = cds->flags & CDS_F_FMT; 871 872 if (idaw_fmt2) { 873 idaw_addr = cds->cda_orig + sizeof(idaw.fmt2) * cds->at_idaw; 874 if (idaw_addr & 0x07 || !cds_ccw_addrs_ok(idaw_addr, 0, ccw_fmt1)) { 875 return -EINVAL; /* channel program check */ 876 } | 1/* 2 * Channel subsystem base support. 3 * 4 * Copyright 2012 IBM Corp. 5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 6 * 7 * This work is licensed under the terms of the GNU GPL, version 2 or (at 8 * your option) any later version. See the COPYING file in the top-level --- 860 unchanged lines hidden (view full) --- 869 bool idaw_fmt2 = cds->flags & CDS_F_C64; 870 bool ccw_fmt1 = cds->flags & CDS_F_FMT; 871 872 if (idaw_fmt2) { 873 idaw_addr = cds->cda_orig + sizeof(idaw.fmt2) * cds->at_idaw; 874 if (idaw_addr & 0x07 || !cds_ccw_addrs_ok(idaw_addr, 0, ccw_fmt1)) { 875 return -EINVAL; /* channel program check */ 876 } |
877 ret = address_space_rw(&address_space_memory, idaw_addr, 878 MEMTXATTRS_UNSPECIFIED, &idaw.fmt2, 879 sizeof(idaw.fmt2), false); | 877 ret = address_space_read(&address_space_memory, idaw_addr, 878 MEMTXATTRS_UNSPECIFIED, &idaw.fmt2, 879 sizeof(idaw.fmt2)); |
880 cds->cda = be64_to_cpu(idaw.fmt2); 881 } else { 882 idaw_addr = cds->cda_orig + sizeof(idaw.fmt1) * cds->at_idaw; 883 if (idaw_addr & 0x03 || !cds_ccw_addrs_ok(idaw_addr, 0, ccw_fmt1)) { 884 return -EINVAL; /* channel program check */ 885 } | 880 cds->cda = be64_to_cpu(idaw.fmt2); 881 } else { 882 idaw_addr = cds->cda_orig + sizeof(idaw.fmt1) * cds->at_idaw; 883 if (idaw_addr & 0x03 || !cds_ccw_addrs_ok(idaw_addr, 0, ccw_fmt1)) { 884 return -EINVAL; /* channel program check */ 885 } |
886 ret = address_space_rw(&address_space_memory, idaw_addr, 887 MEMTXATTRS_UNSPECIFIED, &idaw.fmt1, 888 sizeof(idaw.fmt1), false); | 886 ret = address_space_read(&address_space_memory, idaw_addr, 887 MEMTXATTRS_UNSPECIFIED, &idaw.fmt1, 888 sizeof(idaw.fmt1)); |
889 cds->cda = be64_to_cpu(idaw.fmt1); 890 if (cds->cda & 0x80000000) { 891 return -EINVAL; /* channel program check */ 892 } 893 } 894 ++(cds->at_idaw); 895 if (ret != MEMTX_OK) { 896 /* assume inaccessible address */ --- 1695 unchanged lines hidden --- | 889 cds->cda = be64_to_cpu(idaw.fmt1); 890 if (cds->cda & 0x80000000) { 891 return -EINVAL; /* channel program check */ 892 } 893 } 894 ++(cds->at_idaw); 895 if (ret != MEMTX_OK) { 896 /* assume inaccessible address */ --- 1695 unchanged lines hidden --- |