[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapabl
From: |
Alexander Graf |
Subject: |
[Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable |
Date: |
Sun, 3 Jan 2010 18:50:15 +0100 |
On 03.01.2010, at 18:44, Michael S. Tsirkin wrote:
> On Sun, Jan 03, 2010 at 06:40:52PM +0100, Alexander Graf wrote:
>>
>> On 03.01.2010, at 18:29, Michael S. Tsirkin wrote:
>>
>>> On Sun, Jan 03, 2010 at 05:09:32PM +0100, Alexander Graf wrote:
>>>>
>>>> On 03.01.2010, at 16:45, Michael S. Tsirkin wrote:
>>>>
>>>>> On Sun, Jan 03, 2010 at 02:50:45AM +0100, Alexander Graf wrote:
>>>>>> Different host buses may have different layouts for config space
>>>>>> accessors.
>>>>>>
>>>>>> The Mac U3 for example uses the following define to access Type 0
>>>>>> (directly
>>>>>> attached) devices:
>>>>>>
>>>>>> #define MACRISC_CFA0(devfn, off) \
>>>>>> ((1 << (unsigned int)PCI_SLOT(dev_fn)) \
>>>>>> | (((unsigned int)PCI_FUNC(dev_fn)) << 8) \
>>>>>> | (((unsigned int)(off)) & 0xFCUL))
>>>>>>
>>>>>> Obviously, this is different from the encoding we interpret in qemu. In
>>>>>> order to let host controllers take some influence there, we can just
>>>>>> introduce a converter function that takes whatever accessor we have and
>>>>>> makes a qemu understandable one out of it.
>>>>>>
>>>>>> This patch is the groundwork for Uninorth PCI config space fixes.
>>>>>>
>>>>>> Signed-off-by: Alexander Graf <address@hidden>
>>>>>> CC: Michael S. Tsirkin <address@hidden>
>>>>>
>>>>> Thanks!
>>>>>
>>>>> It always bothered me that the code in pci_host uses x86 encoding and
>>>>> other architectures are converted to x86. As long as we are adding
>>>>> redirection, maybe we should get rid of this, and make get_config_reg
>>>>> return register and devfn separately, so we don't need to encode/decode
>>>>> back and forth?
>>>>
>>>> Hmm, when touching code I'm not 100% sure what I'm doing I usually try to
>>>> build on stuff that is there already. That's exactly what happened here.
>>>>
>>>> I'm personally not against defining the x86 format as qemu default. That
>>>> way everyone knows what to deal with. I'm not sure if PCI defines anything
>>>> that couldn't be represented by the x86 encoding in 32 bits. I actually
>>>> doubt it. So it seems like a pretty good fit, especially given that all
>>>> the other code is already in place.
>>>>
>>>>> OTOH if we are after a quick fix, won't it be simpler to have
>>>>> unin_pci simply use its own routines instead of
>>>>> pci_host_conf_register_mmio
>>>>> etc?
>>>>
>>>> Hm, I figured this is less work :-).
>>>
>>> Let me explain the idea: we have:
>>>
>>> static void pci_host_config_writel_ioport(void *opaque,
>>> uint32_t addr, uint32_t val)
>>> {
>>> PCIHostState *s = opaque;
>>>
>>> PCI_DPRINTF("%s addr %"PRIx32 " val %"PRIx32"\n", __func__, addr,
>>> val);
>>> s->config_reg = val;
>>> }
>>>
>>> static uint32_t pci_host_config_readl_ioport(void *opaque, uint32_t
>>> addr)
>>> {
>>> PCIHostState *s = opaque;
>>> uint32_t val = s->config_reg;
>>>
>>> PCI_DPRINTF("%s addr %"PRIx32" val %"PRIx32"\n", __func__, addr,
>>> val);
>>> return val;
>>> }
>>>
>>> void pci_host_conf_register_ioport(pio_addr_t ioport, PCIHostState *s)
>>> {
>>> register_ioport_write(ioport, 4, 4, pci_host_config_writel_ioport,
>>> s);
>>> register_ioport_read(ioport, 4, 4, pci_host_config_readl_ioport, s);
>>> }
>>>
>>> If instead of a simple config_reg = val we translate to pc format
>>> here, the rest will work. No?
>>
>> Well, that'd mean I'd have to implement a config_reg read function and do
>> the conversion backwards again there. Or I could just save it off in the
>> unin state ... hmm ...
>
> Right.
>
>> Either way, let's better get this done right. I'd rather want to have a
>> proper framework in place in case someone else stumbles across something
>> similar.
>>
>> Alex
>
> There's already ugliness with swap/noswap versions in there. Anything
> that claims to be a proper framework would need to address that as well
> IMO.
Hm, so you'd rather wait for 5 years to have an all-in-one rework than
incrementally improving the existing code? I can do the hacky version then :-).
Alex
- [Qemu-devel] Re: [PATCH 2/6] Add config space conversion function for uni_north, (continued)
- [Qemu-devel] [PATCH 4/6] Include dump of lspci -nn on real G5, Alexander Graf, 2010/01/02
- [Qemu-devel] [PATCH 6/6] Enable secondary cmd64x, Alexander Graf, 2010/01/02
- [Qemu-devel] [PATCH 1/6] Make config space accessor host bus trapable, Alexander Graf, 2010/01/02
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Michael S. Tsirkin, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Alexander Graf, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Michael S. Tsirkin, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Alexander Graf, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Michael S. Tsirkin, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable,
Alexander Graf <=
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Michael S. Tsirkin, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Blue Swirl, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Blue Swirl, 2010/01/10
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Blue Swirl, 2010/01/11
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Igor Kovalenko, 2010/01/11
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Blue Swirl, 2010/01/12
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Blue Swirl, 2010/01/18
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Alexander Graf, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Benjamin Herrenschmidt, 2010/01/03
- [Qemu-devel] Re: [PATCH 1/6] Make config space accessor host bus trapable, Alexander Graf, 2010/01/03