From: Scott Wood <scottwood@freescale.com>
To: Alexander Graf <agraf@suse.de>
Cc: qemu-ppc Mailing List <qemu-ppc@nongnu.org>,
qemu-devel qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 56/72] PPC: e500: Use new MPIC dt format
Date: Thu, 9 Aug 2012 16:11:42 -0500 [thread overview]
Message-ID: <5024278E.5020404@freescale.com> (raw)
In-Reply-To: <F2DCAE26-70F7-4416-8905-DFC1DA8851C9@suse.de>
On 08/09/2012 04:01 PM, Alexander Graf wrote:
>
> On 09.08.2012, at 22:58, Scott Wood wrote:
>
>> On 08/09/2012 03:52 PM, Alexander Graf wrote:
>>>
>>> On 09.08.2012, at 22:50, Scott Wood wrote:
>>>
>>>> On 08/09/2012 03:48 PM, Alexander Graf wrote:
>>>>>
>>>>> On 09.08.2012, at 00:40, Scott Wood wrote:
>>>>>
>>>>>> On 08/08/2012 04:16 PM, Alexander Graf wrote:
>>>>>>>
>>>>>>> On 24.06.2012, at 01:07, Alexander Graf wrote:
>>>>>>>
>>>>>>>> Due to popular demand, we're updating the way we generate the MPIC
>>>>>>>> node and interrupt lines based on what the current state of art is.
>>>>>>>>
>>>>>>>> Requested-by: Scott Wood <scottwood@freescale.com>
>>>>>>>> Signed-off-by: Alexander Graf <agraf@suse.de>
>>>>>>>
>>>>>>> Hey Scott,
>>>>>>>
>>>>>>> This patch breaks SMP for me. The reason for the breakage is that
>>>>>>> Linux does some things differently when it finds an fsl,mpic instead
>>>>>>> of a generic openpic. I have assembled logs between a working version
>>>>>>> (compatible openpic) and a broken version (compatible fsl,mpic) with
>>>>>>> guest and host debug turned on.
>>>>>>>
>>>>>>> Maybe you have an idea what's going wrong.
>>>>>>
>>>>>> IIRC QEMU is missing support for large vectors, which is probably
>>>>>> breaking IPIs. A recent change to Linux has it assuming it can use
>>>>>> large vectors when it sees fsl,mpic, as we're running out of vectors (on
>>>>>> p4080 MSIs collided with the arbitrarily chosen timer vector, and on
>>>>>> t4240 the normal internal interrupts alone go beyond 256).
>>>>>>
>>>>>> We need to get the enhancements from our internal KVM MPIC back into QEMU.
>>>>>
>>>>> Ok, so the quick fix for 1.2 would be to revert to the old compatible
>>>>> name. Can we leave the 4-field interrupt numbers or do we need to
>>>>> revert the whole patch?
>>>>
>>>> In theory you shouldn't have 4-cell interrupt numbers without fsl,mpic,
>>>> but I don't think it will actually break in Linux -- the extra cells
>>>> should just be ignored.
>>>
>>> So I suppose the best would be to revert the whole patch and simply
>>> go back to the old format then, to make sure we don't introduce more
>>> oddness for non-Linux guests (not that I'm aware we're capable of
>>> running any, especially any that would use the dtb).
>>>
>>> Once we have working large vectors in our MPIC emulation, we can
>>> easily put the patch into place again and generate dt's that show an
>>> fsl mpic.
>>
>> Additionally, we should consider adding extra compatibles with the major
>> QEMU version in them, so that QEMU-aware target code can work around
>> QEMU limitations even if it's been fixed in a more recent QEMU.
>>
>> I think this is what you were getting at in the e500 platform
>> discussion, when you pointed at the PC versioning, but it's not about
>> documenting semantics so much as identifying the actual implementation.
>
> Yes, -M e500-1.2 should expose chrp,open-pic while -M e500 should expose fsl,mpic.
We could do that too if the chrp,open-pic version actually makes it into
a release before we fix fsl,mpic (I don't know what the release schedule
is), but what I meant was that the device tree should have something like
compatible = "qemu,1.2-chrp-openpic", "chrp,open-pic"
or
compatible = "qemu,1.3-fsl-mpic", "fsl,mpic"
...so that we can run new kernels on old QEMUs, not just the other way
around.
> We also need to make the MPIC code capabilities conditional here, so
> that large vectors are only supported when the machine requests
> them.
Maybe, but the risk is minimal (target software would have to be setting
those bits to non-zero and expecting them to be ignored) and the
potential for making (more of) a mess of the code is high if we
conditionalize everything.
Are there any currently supported machines where real hardware doesn't
have large vectors?
-Scott
next prev parent reply other threads:[~2012-08-09 21:11 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-23 23:06 [Qemu-devel] [PULL 00/72] ppc patch queue 2012-06-24 Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 01/72] ppc: Fix coding style in op_helper.c Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 02/72] ppc: Split exception helpers Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 03/72] ppc: Avoid AREG0 for " Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 04/72] ppc: Fix coding style in helper.c Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 05/72] ppc: Move exception helpers from helper.c to excp_helper.c Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 06/72] ppc: Split FPU and SPE ops Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 07/72] ppc: Avoid AREG0 for FPU and SPE helpers Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 08/72] ppc: Split integer and vector ops Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 09/72] ppc: Avoid AREG0 for integer and vector helpers Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 10/72] ppc: Split MMU etc. helpers from op_helper.c Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 11/72] ppc: Avoid AREG0 for MMU etc. helpers Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 12/72] ppc: Avoid a warning with the next patch Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 13/72] ppc: Move MMU helpers from helper.c to mmu_helper.c Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 14/72] ppc: Cleanup MMU merge Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 15/72] ppc: Split off timebase helpers Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 16/72] ppc: Avoid AREG0 for " Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 17/72] ppc: Split off misc helpers Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 18/72] ppc: Avoid AREG0 for " Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 19/72] ppc: Move misc helpers from helper.c to misc_helper.c Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 20/72] ppc: Move load and store helpers, switch to AREG0 free mode Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 21/72] ppc: Add missing break Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 22/72] ppc: Make hbrev table const Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 23/72] PPC: mpc8544ds: Span initial TLB entry over as much RAM as we need Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 24/72] Avoid segfault in cpu_dump_state Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 25/72] booke_206_tlbwe: Discard invalid bits in MAS2 Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 26/72] ppc64: Rudimentary Support for extra page sizes on server CPUs Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 27/72] pseries: Correctly create ibm, segment-page-sizes property Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 28/72] spapr_vscsi: Error handling fixes Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 29/72] spapr: Add "memop" hypercall Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 30/72] raw-posix: Fix build without is_allocated support Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 31/72] dt: allow add_subnode to create root subnodes Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 32/72] dt: add helpers for multi-cell adds Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 33/72] dt: add helper for phandle references Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 34/72] dt: temporarily disable subtree creation failure check Alexander Graf
2012-06-23 23:06 ` [Qemu-devel] [PATCH 35/72] dt: add helper for phandle enumeration Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 36/72] dt: add helper for empty dt creation Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 37/72] dt: add helper for phandle allocation Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 38/72] dt: add helper for 64bit cell adds Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 39/72] PPC: e500: require libfdt Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 40/72] PPC: e500: dt: create memory node dynamically Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 41/72] PPC: e500: dt: create /cpus " Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 42/72] PPC: e500: dt: create /hypervisor " Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 43/72] PPC: e500: dt: create / " Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 44/72] PPC: e500: dt: create /chosen " Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 45/72] PPC: e500: dt: create /soc8544 " Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 46/72] PPC: e500: dt: create serial nodes dynamically Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 47/72] PPC: e500: dt: create mpic node dynamically Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 48/72] PPC: e500: dt: create global-utils " Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 49/72] PPC: e500: dt: create pci " Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 50/72] PPC: e500: dt: start with empty device tree Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 51/72] dt: Add -machine dumpdtb option to dump the current dtb Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 52/72] PPC: e500: dt: use 64bit cell helper Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 53/72] PPC: e500: dt: use target_phys_addr_t for ramsize Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 54/72] PPC: e500: enable manual loading of dtb blob Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 55/72] Revert "dt: temporarily disable subtree creation failure check" Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 56/72] PPC: e500: Use new MPIC dt format Alexander Graf
2012-08-08 21:16 ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2012-08-08 22:40 ` Scott Wood
2012-08-09 20:48 ` Alexander Graf
2012-08-09 20:50 ` Scott Wood
2012-08-09 20:52 ` Alexander Graf
2012-08-09 20:58 ` Scott Wood
2012-08-09 21:01 ` Alexander Graf
2012-08-09 21:11 ` Scott Wood [this message]
2012-08-09 21:19 ` Alexander Graf
2012-08-09 21:28 ` Scott Wood
2012-08-09 21:36 ` Alexander Graf
2012-08-09 21:45 ` Scott Wood
2012-08-09 21:48 ` Alexander Graf
2012-08-08 22:40 ` [Qemu-devel] " Peter Maydell
2012-08-08 22:43 ` Peter Maydell
2012-06-23 23:07 ` [Qemu-devel] [PATCH 57/72] PPC: e500: Use new SOC " Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 58/72] PPC: e500: Define addresses as always 64bit Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 59/72] PPC: e500: Extend address/size of / to 64bit Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 60/72] dt: Add global option to set phandle start offset Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 61/72] PPC: e500: Refactor serial dt generation Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 62/72] dt: make setprop argument static Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 63/72] PPC: e500: allow users to set the /compatible property via -machine Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 64/72] uImage: increase the gzip load size Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 65/72] PPC: Add some booke SPR defines Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 66/72] PPC: Add support for MSR_CM Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 67/72] PPC: BookE: Implement EPR SPR Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 68/72] PPC: BookE: Make ivpr selectable by CPU type Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 69/72] PPC: Add e5500 CPU target Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 70/72] PPC: Extract SPR dump generation into its own function Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 71/72] PPC: BookE: Support 32 and 64 bit wide MAS2 Alexander Graf
2012-06-23 23:07 ` [Qemu-devel] [PATCH 72/72] PPC: BookE206: Bump MAS2 to 64bit Alexander Graf
2012-06-24 12:27 ` [Qemu-devel] [PULL 00/72] ppc patch queue 2012-06-24 Blue Swirl
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=5024278E.5020404@freescale.com \
--to=scottwood@freescale.com \
--cc=agraf@suse.de \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).