pseries: Factor out check for out-of-bounds LIOBN
PAPR defines LIOBNs (Logical IO Bus Numbers) to be 32-bit, and we check for values that aren't in the code for H_PUT_TCE. This patch factors the check into spapr_tce_find_by_liobn(), which already checks if a 32-bit LIOBN actually exists. This will become more important as future patches add other hypercalls which need to look up a LIOBN. At the same time we fix the typo in the message. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
8e515b125d
commit
d4261662b6
@ -55,6 +55,12 @@ static sPAPRTCETable *spapr_tce_find_by_liobn(uint32_t liobn)
|
||||
{
|
||||
sPAPRTCETable *tcet;
|
||||
|
||||
if (liobn & 0xFFFFFFFF00000000ULL) {
|
||||
hcall_dprintf("Request for out-of-bounds LIOBN 0x" TARGET_FMT_lx "\n",
|
||||
liobn);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
QLIST_FOREACH(tcet, &spapr_tce_tables, list) {
|
||||
if (tcet->liobn == liobn) {
|
||||
return tcet;
|
||||
@ -218,12 +224,6 @@ static target_ulong h_put_tce(PowerPCCPU *cpu, sPAPREnvironment *spapr,
|
||||
target_ulong tce = args[2];
|
||||
sPAPRTCETable *tcet = spapr_tce_find_by_liobn(liobn);
|
||||
|
||||
if (liobn & 0xFFFFFFFF00000000ULL) {
|
||||
hcall_dprintf("spapr_vio_put_tce on out-of-boundsw LIOBN "
|
||||
TARGET_FMT_lx "\n", liobn);
|
||||
return H_PARAMETER;
|
||||
}
|
||||
|
||||
ioba &= ~(SPAPR_TCE_PAGE_SIZE - 1);
|
||||
|
||||
if (tcet) {
|
||||
|
Loading…
Reference in New Issue
Block a user