You are not logged in.
After solving several on-the-way problems with the help of the forum membrs, i finally reached a point where i do not understand what is happening.
Decided to make a new post since the other sub-problem was actually solved, while this not.
My final goal is to fix a kernel issue with the usbhid driver. A forum member discovered the fix (credits to FxChip); to modify a line in drivers/hid/usbhid/hid-core.c and recompile the kernel.
I have downloaded the kernel sources from
git clone https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
Now the problem is the following:
(1) If i use the default kernel settings (make menuconfig), plus some others for booting the main partiton, the keyboard fix does work perfectly....but lsmod shows an empty list. I have no modules, therefore i dont even have network. I thought
that a default configuration would grab the modules i need.
These are the modules i should have:
[cristobal@orion ~]$ lsmod
Module Size Used by
fuse 74512 3
snd_hda_codec_hdmi 30496 1
iTCO_wdt 5407 0
iTCO_vendor_support 1937 1 iTCO_wdt
joydev 9671 0
uvcvideo 72836 0
videobuf2_vmalloc 3280 1 uvcvideo
videobuf2_memops 2343 1 videobuf2_vmalloc
ath3k 7565 0
videobuf2_core 28027 1 uvcvideo
btusb 18536 0
videodev 111140 2 uvcvideo,videobuf2_core
bluetooth 308892 3 ath3k,btusb
media 11751 2 uvcvideo,videodev
nls_cp437 5961 1
arc4 2008 2
mxm_wmi 1475 0
ath9k 93273 0
ath9k_common 2095 1 ath9k
ath9k_hw 393625 2 ath9k_common,ath9k
ath 15817 3 ath9k_common,ath9k,ath9k_hw
evdev 10989 18
mac80211 466106 1 ath9k
pcspkr 2035 0
cfg80211 412694 3 ath,ath9k,mac80211
snd_hda_codec_realtek 38902 1
rfkill 15651 3 cfg80211,bluetooth
lpc_ich 13120 0
i2c_i801 11277 0
r8169 58263 0
mfd_core 3129 1 lpc_ich
i915 654306 5
mii 4035 1 r8169
thermal 8532 0
fan 2761 0
snd_hda_intel 36904 5
battery 6837 0
snd_hda_codec 149569 3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel
ac 3332 0
i2c_algo_bit 5399 1 i915
intel_agp 10880 1 i915
snd_hwdep 5988 1 snd_hda_codec
intel_gtt 12664 2 i915,intel_agp
snd_pcm 77069 3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
drm_kms_helper 36286 1 i915
snd_page_alloc 7210 2 snd_pcm,snd_hda_intel
drm 238582 4 i915,drm_kms_helper
snd_timer 18694 1 snd_pcm
snd 51534 17 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_hda_codec,snd_hda_intel
wmi 8419 1 mxm_wmi
i2c_core 24164 6 drm,i915,i2c_i801,drm_kms_helper,i2c_algo_bit,videodev
mei_me 9304 0
video 11196 1 i915
soundcore 952 1 snd
processor 24839 0
button 4677 1 i915
mei 62126 1 mei_me
hid_generic 1161 0
usbhid 40321 0
hid 90166 2 hid_generic,usbhid
sd_mod 30789 5
ahci 22896 4
libahci 21401 1 ahci
libata 171040 2 ahci,libahci
ehci_pci 4000 0
xhci_hcd 146123 0
ehci_hcd 59156 1 ehci_pci
scsi_mod 129769 2 libata,sd_mod
usbcore 179012 7 ath3k,btusb,uvcvideo,ehci_hcd,ehci_pci,usbhid,xhci_hcd
usb_common 1656 1 usbcore
dm_mod 81838 0
ext4 474123 2
crc16 1367 2 ext4,bluetooth
mbcache 6082 1 ext4
jbd2 83504 1 ext4
vfat 10063 1
fat 51827 1 vfat
(2) Because of the modules problem, i decided to go and copy my configuration from my actual -ARCH build
zcat /proc/config.bz > .config
and proceed building. This time the kernel boots and all modules are loaded. However, the keyboard fix no longer works.
I also tried
make localmodconfig
With modprobed_db, but also the same result.
Does someone know what is going on or what should i do ?
In the end what i need is to have a working linux with the keyboard fix.
Thanks in advance
Edit: Using ABS with makepkg reproduces problem (2).
Last edited by labotsirc (2013-09-21 17:40:36)
Offline
Does it makes a difference (for the problem) the fact that ARCH uses USBHID as a module (M) and I use it as built-in (*)?
I also wonder what other kernel options affect USBHID behavior, apart from the ones inside HID menu, maybe changing those options could solve the whole problem and even better i could just go back to ABS mode using those options.
Last edited by labotsirc (2013-09-25 15:20:36)
Offline
Is it necessary to use linux-git? As a general rule, it's preferable to use the current stable release - 3.11.1 at the moment.
Assuming that you can use that, I would suggest the following:
- create a patch that applies your hid-core.c change
- get the current 3.11.1-1 PKGBUILD and associated files from ABS
- edit the PKGBUILD to add your patch to the source array, add a checksum for it to the checksum array, and add the required patch command for it to the prepare() function
- place your patch in the build directory with the other files
- run makepkg
This will create a kernel package identical to the Arch default kernel except for the addition of your patch.
Offline
Is it necessary to use linux-git? As a general rule, it's preferable to use the current stable release - 3.11.1 at the moment.
Assuming that you can use that, I would suggest the following:
- create a patch that applies your hid-core.c change
- get the current 3.11.1-1 PKGBUILD and associated files from ABS
- edit the PKGBUILD to add your patch to the source array, add a checksum for it to the checksum array, and add the required patch command for it to the prepare() function
- place your patch in the build directory with the other files
- run makepkgThis will create a kernel package identical to the Arch default kernel except for the addition of your patch.
Thanks tomk. I have already tried this though, and the problem is still there.
As I mentioned earlier, the experiments i have done helped me discard any PKGBUILD or patch issues and deduce that it is a problem with the modules selection that ARCH does in comparison to the default
module selection from "make defconfig", where the fix did work. The best way to prove this was that i copied the .config file from ARCH and built traditionaly without using patches or PKGBUILD, and the problem was still there.
At the moment i am testing different variations of kernels based on the ARCH .config, by removing some modules (the defconfig one is much smaller than the ARCH one) and recompiling each time. At the moment no luck, but eventually the problematic module/option will be found. Any directions on which modules to look into is welcome.
Last edited by labotsirc (2013-09-25 18:05:59)
Offline
After 16 kernel compilations, gradually adding modules each time, i came to the cause of this problem.
The problem is a conflict between usbhid and usb 3.0 support. More specifically, this option is what is causing trouble:
-> Device Drivers
-> USB support (USB_SUPPORT [=y])
-> <M> xHCI HCD (USB 3.0) support
And this is where my fix is:
-> Device Drivers
-> HID support
-> USB HID support ----> (my fix is here, edited drivers/hid/usbhid/hid-core.c)
I think hxci_hcd module is taking over the keyboard, ignoring my the modified 1000Hz frecuency i have put into the usbhid module. ARCH default config includes xhci_hcd, that is why i was having trouble importing that configuration.
As soon as i remove xhci_hcd and recompile the kernel, the keyboard fix works again. At the moment i am working without xhci_hcd, therefore i dont have USB 3.0 support. The laptop USB ports are all 3.0 and because i am not having xci_hcd, i assume they are working as 2.0, indeed there is a wasted potential.
The question i have now is:
is it still possible to include xhci_hcd module but force it to not affect the laptop keyboard?
Last edited by labotsirc (2013-09-27 18:23:07)
Offline