Subject: Re: linux-next: Tree for Nov 14

From: Guenter Roeck <[email-masked]>
Date: Sun, 16 Nov 2014 08:11:10 -0800

On 11/16/2014 08:01 AM, Guenter Roeck wrote:
> On 11/16/2014 12:24 AM, Jiang Liu wrote:
>> On 2014/11/16 14:56, Guenter Roeck wrote:
>>> On 11/15/2014 08:20 PM, Jiang Liu wrote:
>>>>
>>>> On 2014/11/16 11:22, Guenter Roeck wrote:
>>>>> On 11/15/2014 06:33 PM, Jiang Liu wrote:
>>>>>> Hi Guenter,
>>>>>>       Could you please help to provide the config file and
>>>>>> error messages?
>>>>>
>>>>> Config file:
>>>>>
>>>>> https://github.com/groeck/linux-build-test/blob/master/rootfs/x86/qemu_x86_pc_nosmp_defconfig
>>>>>
>>>> Hi Guenter,
>>>>      Thanks for help. According to the above configuration file:
>>>> CONFIG_PCI_MSI is enabled, but CONFIG_X86_LOCAL_APIC and
>>>> CONFIG_X86_IO_APIC are both disabled. But the Kconfig for X86_LOCAL_APIC
>>>> is defined as:
>>>> config X86_LOCAL_APIC
>>>>           def_bool y
>>>>           depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
>>>> || PCI_MSI
>>>>           select GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
>>>>
>>>> That means CONFIG_X86_LOCAL_APIC should be enabled if CONFIG_PCI_MSI is
>>>> enabled. So how did you generate the qemu_x86_pc_nosmp_defconfig? Are
>>>> you using an old configuration file?
>>>
>>> I took the configuration file I had for the SMP case (located in the same
>>> directory in the git repository), disabled SMP, and ran "make
>>> savedefconfig".
>>> "old" is relative in this context; I don't usually create new configuration
>>> files for each new kernel release, so, yes, you could say that the file
>>> I used is "old".
>>>
>>> CONFIG_X86_LOCAL_APIC is enabled. Keep in mind this is a configuration file
>>> created with "make savedefconfig", so default settings are not included.
>>> Correct, CONFIG_X86_IO_APIC is not enabled, but that is not really
>>> surprising
>>> since its dependencies are not met as far as I can see.
>>>
>>> Overall, I am not sure I understand what you are trying to say. X86_IO_APIC
>>> depends on X86_64 (not set) or SMP (not set) or X86_32_NON_STANDARD (not
>>> set)
>>> or X86_UP_IOAPIC (not set because it depends on X86_UP_APIC which
>>> depends on
>>> !PCI_MSI).
>>>
>>> Does that mean that I'll have to disable PCI_MSI to get x86 uniprocessor
>>> support to work after your patch ?
>> Hi Guenter,
>>     Previously, X86_IO_APIC will be enabled if PCI_MSI is enabled.
>> With my patch, x86_IO_APIC may be disabled even if PCI_MSI is enabled.
>> If X86_LOCAL_APIC/PCI_MSI are enabled and X86_IO_APIC is disabled, it
>> should work theoretically. I remember it works on my HP laptop.
>> Could you please help to check whether it solve the issue by manually
>> turning on X86_IO_APIC?
>
> I can not turn on X86_IO_APIC manually. I have to enable one of the
> following to do it.
>
>      def_bool X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_IOAPIC
>
> Since I want to build for 32 bit, I can not enable X86_64.
> Since I want to build a uniprocessor image, I can not enable SMP.
> X86_32_NON_STANDARD depends on SMP, so I can not enable it either.
> X86_UP_IOAPIC depends on X86_UP_APIC which I can only enable by
> disabling PCI_MSI.
>
> So I disabled PCI_MSI and enabled X86_UP_IOAPIC as well as X86_IO_APIC.
> The resulting image hangs completely with no console output whatsoever.
>

Additional data points: After reverting your patch on top of linux-next,
everything works fine. The working configuration has CONFIG_IRQ_DOMAIN,
CONFIG_X86_IO_APIC, CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS, and
CONFIG_ACPI_HOTPLUG_IOAPIC enabled. The non-working configuration
(with your patch applied) has all those disabled.

Guenter