All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: Janosch Frank <frankja@linux.ibm.com>, qemu-devel@nongnu.org
Cc: borntraeger@de.ibm.com, cohuck@redhat.com, david@redhat.com
Subject: Re: [PATCH v3 3/5] pc-bios: s390x: Use reset PSW if avaliable
Date: Wed, 2 Sep 2020 11:50:41 +0200	[thread overview]
Message-ID: <cda09743-5d4c-b2e9-7dbd-2595823610d3@redhat.com> (raw)
In-Reply-To: <93124d79-ded4-52df-3e06-af580fe9f99a@linux.ibm.com>

On 02/09/2020 10.46, Janosch Frank wrote:
> On 9/1/20 6:59 PM, Thomas Huth wrote:
>> On 31/08/2020 17.09, Janosch Frank wrote:
>>> If a blob provides a reset PSW then we should use it instead of
>>> branching to the PSW address and using our own mask.
>>>
>>> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
>>> ---
>>>  pc-bios/s390-ccw/bootmap.c  |  3 ++-
>>>  pc-bios/s390-ccw/jump2ipl.c | 22 +++++++++++++++++-----
>>>  pc-bios/s390-ccw/s390-ccw.h |  1 +
>>>  3 files changed, 20 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
>>> index 8747c4ea26..5a03b1eb8b 100644
>>> --- a/pc-bios/s390-ccw/bootmap.c
>>> +++ b/pc-bios/s390-ccw/bootmap.c
>>> @@ -515,7 +515,8 @@ static void zipl_run(ScsiBlockPtr *pte)
>>>      IPL_assert(entry->component_type == ZIPL_COMP_ENTRY_EXEC, "No EXEC entry");
>>>  
>>>      /* should not return */
>>> -    jump_to_IPL_code(entry->compdat.load_psw & PSW_MASK_SHORT_ADDR);
>>> +    write_reset_psw(entry->compdat.load_psw);
>>> +    jump_to_IPL_code(0);
>>>  }
>>>  
>>>  static void ipl_scsi(void)
>>> diff --git a/pc-bios/s390-ccw/jump2ipl.c b/pc-bios/s390-ccw/jump2ipl.c
>>> index b6aad32def..5b8352d257 100644
>>> --- a/pc-bios/s390-ccw/jump2ipl.c
>>> +++ b/pc-bios/s390-ccw/jump2ipl.c
>>> @@ -12,15 +12,21 @@
>>>  
>>>  #define KERN_IMAGE_START 0x010000UL
>>>  #define RESET_PSW_MASK (PSW_MASK_SHORTPSW | PSW_MASK_64)
>>> +#define RESET_PSW ((uint64_t)&jump_to_IPL_addr | RESET_PSW_MASK)
>>>  
>>>  static uint64_t *reset_psw = 0, save_psw, ipl_continue;
>>>  
>>> +void write_reset_psw(uint64_t psw)
>>> +{
>>> +    *reset_psw = psw;
>>> +}
>>> +
>>>  static void jump_to_IPL_addr(void)
>>>  {
>>>      __attribute__((noreturn)) void (*ipl)(void) = (void *)ipl_continue;
>>>  
>>>      /* Restore reset PSW */
>>> -    *reset_psw = save_psw;
>>> +    write_reset_psw(save_psw);
>>>  
>>>      ipl();
>>>      /* should not return */
>>> @@ -43,9 +49,10 @@ void jump_to_IPL_code(uint64_t address)
>>>       * content of non-BIOS memory after we loaded the guest, so we
>>>       * save the original content and restore it in jump_to_IPL_2.
>>>       */
>>> -    save_psw = *reset_psw;
>>> -    *reset_psw = (uint64_t) &jump_to_IPL_addr;
>>> -    *reset_psw |= RESET_PSW_MASK;
>>> +    if (address) {
>>> +        save_psw = *reset_psw;
>>> +        write_reset_psw(RESET_PSW);
>>> +    }
>>>      ipl_continue = address;
>>>      debug_print_int("set IPL addr to", ipl_continue);
>>
>> In case you respin this series, I think I'd move the "ipl_continue =
>> address" into the if-statement, too, and change the debug_print_int line
>> to use address instead of ipl_continue.
> 
> Hmm, my intention was to always have something printed.
> But I guess it would make more sense to print the reset psw addr in the
> ~address case.

I meant to only move the "ipl_continue = address" line and keep the
debug_print_int() at its current place (you just have to replace
ipl_continue there). But you're right, it would make more sense to print
the PSW at address 0 in that case instead.

 Thomas



  reply	other threads:[~2020-09-02  9:51 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-31 15:09 [PATCH v3 0/5] pc-bios: s390x: Cleanup part 2 Janosch Frank
2020-08-31 15:09 ` [PATCH v3 1/5] pc-bios: s390x: Fix bootmap.c zipl component entry data handling Janosch Frank
2020-08-31 15:09 ` [PATCH v3 2/5] pc-bios: s390x: Save PSW rework Janosch Frank
2020-08-31 15:27   ` Thomas Huth
2020-08-31 15:09 ` [PATCH v3 3/5] pc-bios: s390x: Use reset PSW if avaliable Janosch Frank
2020-09-01 16:59   ` Thomas Huth
2020-09-02  8:46     ` Janosch Frank
2020-09-02  9:50       ` Thomas Huth [this message]
2020-08-31 15:09 ` [PATCH v3 4/5] pc-bios: s390x: Save io and external new PSWs before overwriting them Janosch Frank
2020-09-01 17:22   ` Thomas Huth
2020-09-02 10:30     ` Janosch Frank
2020-09-02 16:55       ` Thomas Huth
2020-08-31 15:09 ` [PATCH v3 5/5] pc-bios: s390x: Go into disabled wait when encountering a PGM exception Janosch Frank
2020-09-01 17:24   ` Thomas Huth
2020-08-31 18:31 ` [PATCH v3 0/5] pc-bios: s390x: Cleanup part 2 no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cda09743-5d4c-b2e9-7dbd-2595823610d3@redhat.com \
    --to=thuth@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.